diff --git a/CLAUDE.md b/CLAUDE.md index 4a91dad20..f67ec33e3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,18 +10,37 @@ Follow (Folo) is a modern RSS aggregator and content management platform with mu ### Applications (`apps/`) -- **`apps/desktop/`** - Electron desktop application with main and renderer processes +- **`apps/desktop/`** - Electron desktop application + - `layer/main/` - Electron main process + - `layer/renderer/` - Vite + React renderer (primary web app) - **`apps/mobile/`** - React Native mobile app for iOS and Android -- **`apps/ssr/`** - Server-side rendered web application -- **`apps/mobile/web-app/`** - HTML renderer for mobile web views + - `src/` - React Native source code + - `native/` - Native module implementations + - `web-app/` - HTML renderer for mobile web views + - `android/` - Android-specific configuration + - `ios/` - iOS-specific configuration +- **`apps/ssr/`** - Server-side rendered web application (minimal, for external sharing) ### Packages (`packages/`) -- **`packages/internal/`** - Internal shared packages (components, database, hooks, store, etc.) -- **`packages/configs/`** - Shared configuration files (Tailwind, TypeScript) -- **`packages/utils/`** - Utility functions and helpers -- **`packages/readability/`** - Content readability parsing -- **`packages/vite-plugin-route-builder/`** - Custom Vite plugin for route generation +- **`packages/internal/`** - Core shared packages + - `atoms/` - Jotai atomic state definitions + - `components/` - Shared UI components + - `constants/` - Application constants + - `database/` - Drizzle ORM database layer + - `hooks/` - Shared React hooks + - `models/` - Data models and schemas + - `shared/` - Cross-platform shared utilities + - `store/` - Zustand stores + - `types/` - TypeScript type definitions + - `utils/` - Utility functions and helpers + - `tracker/` - Analytics and tracking + - `logger/` - Logging utilities + - `legal/` - Legal and compliance utilities +- **`packages/configs/`** - Shared configuration files + - `tailwindcss/` - Tailwind CSS configurations + - TypeScript and build configurations +- **`packages/readability/`** - Content readability parsing and extraction ## Essential Commands @@ -69,19 +88,6 @@ pnpm run typecheck pnpm run test ``` -### Package Management - -```bash -# Build shared packages -pnpm run build:packages - -# Generate i18n templates -pnpm run generator:i18n-template - -# Sync icons from SVG to React Native -pnpm run icons:sync -``` - ## Architecture Guidelines ### Multi-Platform Architecture diff --git a/apps/desktop/layer/renderer/src/modules/ai-chat/components/displays/AIDisplayFlowPart.tsx b/apps/desktop/layer/renderer/src/modules/ai-chat/components/displays/AIDisplayFlowPart.tsx index b731e0f69..b55435f09 100644 --- a/apps/desktop/layer/renderer/src/modules/ai-chat/components/displays/AIDisplayFlowPart.tsx +++ b/apps/desktop/layer/renderer/src/modules/ai-chat/components/displays/AIDisplayFlowPart.tsx @@ -1,11 +1,46 @@ import "@xyflow/react/dist/style.css" import { useIsDark } from "@follow/hooks" -import { Background, ReactFlow } from "@xyflow/react" +import { cn } from "@follow/utils/utils" +import { Background, Controls, ReactFlow } from "@xyflow/react" +import { useCallback } from "react" + +import { useModalStack } from "~/components/ui/modal/stacked/hooks" import type { AIDisplayFlowTool } from "../../store/types" import { toolMemo } from "./share" +const FlowPreviewModal = ({ + nodes, + edges, + colorMode, +}: { + nodes: any[] + edges: any[] + colorMode: "light" | "dark" +}) => { + return ( +