# Commit 1: Project Skeleton ## Summary Initialize the ClawX project with Electron + React + TypeScript architecture, including all foundational components for v0.1.0 Alpha. ## Changes ### Project Configuration - `package.json` - Project dependencies and scripts - `tsconfig.json` / `tsconfig.node.json` - TypeScript configuration - `vite.config.ts` - Vite bundler configuration with Electron plugins - `tailwind.config.js` / `postcss.config.js` - Tailwind CSS setup - `electron-builder.yml` - Multi-platform packaging configuration - `.eslintrc.cjs` / `.prettierrc` - Code style configuration - `vitest.config.ts` - Test framework configuration - `.gitignore` / `.env.example` - Git and environment setup ### Electron Main Process (`electron/`) - `main/index.ts` - Main process entry point - `main/window.ts` - Window state management - `main/tray.ts` - System tray functionality - `main/menu.ts` - Application menu - `main/ipc-handlers.ts` - IPC communication handlers - `gateway/manager.ts` - Gateway process lifecycle management - `gateway/client.ts` - Typed Gateway RPC client - `gateway/protocol.ts` - JSON-RPC protocol definitions - `preload/index.ts` - Context bridge for renderer - `utils/config.ts` - Configuration constants - `utils/logger.ts` - Logging utility - `utils/paths.ts` - Path resolution helpers - `utils/store.ts` - Persistent storage ### React Renderer (`src/`) - `main.tsx` / `App.tsx` - Application entry and root component - `styles/globals.css` - Global styles with CSS variables #### Components - `components/ui/` - shadcn/ui base components (Button, Card, Input, Badge, etc.) - `components/layout/MainLayout.tsx` - Main application layout - `components/layout/Sidebar.tsx` - Navigation sidebar - `components/layout/Header.tsx` - Top header bar - `components/common/` - Common components (LoadingSpinner, StatusBadge, ErrorBoundary) #### Pages - `pages/Dashboard/index.tsx` - Overview dashboard - `pages/Chat/index.tsx` - Chat interface - `pages/Channels/index.tsx` - Channel management - `pages/Skills/index.tsx` - Skill browser - `pages/Cron/index.tsx` - Scheduled tasks - `pages/Settings/index.tsx` - Application settings - `pages/Setup/index.tsx` - First-run setup wizard #### State Management - `stores/gateway.ts` - Gateway connection state - `stores/settings.ts` - Application settings - `stores/channels.ts` - Channel data - `stores/skills.ts` - Skills data - `stores/chat.ts` - Chat messages - `stores/cron.ts` - Cron jobs #### Types - `types/electron.d.ts` - Electron API types - `types/gateway.ts` - Gateway types - `types/channel.ts` - Channel types - `types/skill.ts` - Skill types - `types/cron.ts` - Cron job types ### Resources - `resources/icons/.gitkeep` - Placeholder for app icons - `resources/skills/bundles.json` - Predefined skill bundles ### Tests - `tests/setup.ts` - Test environment setup - `tests/unit/utils.test.ts` - Utility function tests - `tests/unit/stores.test.ts` - Store tests ## Technical Details ### Architecture Decisions 1. **Vite + Electron**: Using vite-plugin-electron for fast HMR during development 2. **Context Isolation**: All IPC communication through preload script with strict channel validation 3. **Zustand Stores**: Lightweight state management with persistence support 4. **shadcn/ui**: Customizable, accessible UI components based on Radix primitives 5. **Dual-port Architecture**: Separate ports for GUI (23333) and Gateway (18789) ### Key Features Implemented - ✅ Electron main process with window management - ✅ System tray integration - ✅ Gateway process lifecycle management - ✅ WebSocket communication layer - ✅ JSON-RPC protocol support - ✅ React router with all main pages - ✅ Zustand state management - ✅ Dark/Light theme support - ✅ Responsive sidebar navigation - ✅ Setup wizard flow - ✅ Unit test setup with Vitest ## Version v0.1.0-alpha ## Dependencies - Electron 33.3.0 - React 19.0.0 - TypeScript 5.7.2 - Vite 6.0.6 - Zustand 5.0.2 - Tailwind CSS 3.4.17