Commit Graph

59 Commits

  • fix(chat): move toolbar to Header and add New Session button
    - Move ChatToolbar (session selector, refresh, thinking toggle) from
      the Chat page body into the Header component, so controls appear
      at the same level as the "Chat" title
    - Add New Session button (+) to create a fresh conversation
    - Add newSession action to chat store
    - Header conditionally renders ChatToolbar only on /chat route
    - Chat page fills full content area without duplicate toolbar
  • feat(providers): implement real API key validation with OpenRouter support
    - Replace mock API key validation with actual API calls to verify keys
    - Add validateApiKeyWithProvider() with provider-specific implementations
    - Support Anthropic, OpenAI, Google, and OpenRouter validation
    - Add OpenRouter as a new provider option in setup wizard and settings
    - Fix setup page to call real validation instead of mock length check
    - Allow validation during setup before provider is saved
    - Return user-friendly error messages instead of raw API errors
  • feat(skills): enhance skills browser with bundles and categories
    - Add skill bundles with batch enable/disable functionality
    - Create SkillDetailDialog for viewing skill metadata
    - Add Tabs component for All Skills / Bundles navigation
    - Implement category filtering with skill counts
    - Add search functionality for skills
    - Show Gateway connection status awareness
    - Add configuration and dependency badges
    - Include recommended bundle highlighting
  • feat(chat): enhance chat interface with markdown support
    - Add markdown rendering with react-markdown and remark-gfm
    - Create ChatMessage component with code copy functionality
    - Add typing indicator animation during AI response
    - Create welcome screen for new users
    - Add Textarea component for multi-line input
    - Improve message styling with avatars and hover actions
    - Add Gateway connection status awareness
    - Add prose styling for markdown content
  • feat(update): implement auto-update functionality with electron-updater
    - Add AppUpdater module with update lifecycle management
    - Create UpdateSettings UI component with progress display
    - Add Progress UI component based on Radix UI
    - Create update Zustand store for state management
    - Register update IPC handlers in main process
    - Auto-check for updates on production startup
    - Add commit documentation for commits 2-6
  • feat(providers): implement secure API key storage and provider management
    Add complete provider configuration system with the following features:
    
    - Secure API key storage using Electron's safeStorage encryption
    - Provider CRUD operations with IPC handlers
    - Lazy-loaded electron-store for ESM compatibility
    - Provider settings UI component with add/edit/delete functionality
    - API key masking for display (shows first/last 4 chars)
    - Basic API key format validation per provider type
    - Default provider selection
    - Provider enable/disable toggle
    
    New files:
    - electron/utils/secure-storage.ts: Encrypted key storage and provider config
    - src/stores/providers.ts: Zustand store for provider state
    - src/components/settings/ProvidersSettings.tsx: Provider management UI
  • feat(gateway): enhance gateway process management with auto-reconnection
    Improve Gateway lifecycle management with the following features:
    
    - Add exponential backoff reconnection (1s-30s delay, max 10 attempts)
    - Add health check monitoring every 30 seconds
    - Add proper restart method with graceful shutdown
    - Handle server-initiated notifications (channel status, chat messages)
    - Add 'reconnecting' state for better UI feedback
    - Enhance IPC handlers with isConnected and health check endpoints
    - Update preload script with new event channels
    - Improve type safety and error handling throughout
    
    Also fixes several TypeScript errors and unused variable warnings.
  • feat(core): initialize project skeleton with Electron + React + TypeScript
    Set up the complete project foundation for ClawX, a graphical AI assistant:
    
    - Electron main process with IPC handlers, menu, tray, and gateway management
    - React renderer with routing, layout components, and page scaffolding
    - Zustand state management for gateway, settings, channels, skills, chat, and cron
    - shadcn/ui components with Tailwind CSS and CSS variable theming
    - Build tooling with Vite, electron-builder, and TypeScript configuration
    - Testing setup with Vitest and Playwright
    - Development configurations (ESLint, Prettier, gitignore, env example)