- Integrate Shiki for VS Code-quality syntax highlighting
- Add dark mode support with MutationObserver
- Implement LRU cache (200 entries) for performance
- Add streaming optimization with block-level memoization
- Auto-detect and linkify URLs and file paths
- Update CSP to allow WebAssembly for Shiki
Closes#98
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add SQLite storage using sql.js for Project and Session data
- Implement Project -> Session hierarchical structure in sidebar
- Add drag-and-drop reordering for projects
- Reduce sidebar padding for better space utilization
- Show session title in top bar, remove folder name/path/status
- Add delete confirmation modals for projects and sessions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add draftStore to manage input drafts per session
- Save/restore drafts when switching between sessions
- Auto-save drafts with debounce (300ms)
- Clear drafts when session is deleted
- Add unit tests for draftStore and MessageInput draft behavior
- Update vitest config to include .tsx test files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add electron-log for production logging (writes to ~/Library/Logs/Multica/)
- Development mode logs to console only, no file writes
- Improve parseAcpError() with more specific error handling:
- Connection errors (ECONNREFUSED, ECONNRESET)
- Timeout errors (ETIMEDOUT, timeout)
- Process exit errors
- Authentication errors (401, API key)
- Rate limit errors (429)
- Fallback now shows actual error message (truncated to 150 chars)
instead of generic "Agent encountered an error"
- Add comprehensive tests for new error types
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update build:mac script to build both arm64 and x64 architectures
- Update release skill to include all build artifacts:
- DMG files with blockmaps
- ZIP files with blockmaps
- latest-mac.yml for auto-updater
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed default font from Geist Sans to Inter for better rendering of full-width Chinese punctuation. Added Chinese font fallbacks (PingFang SC, Microsoft YaHei, Noto Sans SC) to properly display Chinese characters and punctuation marks.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
GUI apps on macOS don't inherit PATH from shell dotfiles (.zshrc, .bashrc, etc.).
This causes agent commands to fail when launched from Finder/Dock.
- Add fix-path dependency to correct PATH on app start
- Configure electron-vite to bundle ESM-only dependencies (fix-path, shell-path, strip-ansi)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add electron-updater for automatic updates from GitHub releases
- Configure electron-builder to publish to GitHub
- Create AutoUpdater module in main process
- Add UpdateNotification component in bottom-right corner
- Support check, download, and install update flow
- Only check for updates in production mode
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add .env to .gitignore
- Enable macOS notarization in electron-builder
- Update dmg artifact naming to include arch
- Add zod dependency for schema validation
- Reorganize devDependencies in package.json
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implemented three-layer defense mechanism to prevent AI-generated code from breaking the codebase:
- Layer 1: AGENTS.md with universal AI agent instructions
- Layer 2: Husky pre-commit hooks with test file checking
- Layer 3: GitHub Actions CI with TypeScript, ESLint, tests, and coverage
Includes design document, test infrastructure, and coverage thresholds.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Add Geist Mono font with multiple weights for consistent design
- Set user message background to #f9f7f5 for better visual distinction
- Improve markdown rendering with professional typographic spacing:
- Increase paragraph margins and line height
- Add proper heading hierarchy with asymmetric spacing
- Fix code block styling to eliminate extra padding
- Improve list and blockquote styling
- Expand chat view padding (px-6→px-8, py-4→py-6) and message spacing (space-y-4→space-y-5) for better breathing room
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Rename product and update branding across electron-builder.yml and package.json
- Rewrite README with comprehensive project vision and problem statement
- Add translated README files in Simplified Chinese, Traditional Chinese, Japanese, and Korean
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Add unit and integration tests covering core business logic:
- SessionStore: 18 tests for session persistence and management
- Conductor: 13 tests for session orchestration and agent lifecycle
- IPC Handlers: 19 tests for main-renderer communication
- Agent check: 10 tests for agent detection utilities
Tests achieve 31.74% overall coverage with focus on critical paths. Includes Vitest configuration, mock setup, and test utilities.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Fix command injection vulnerability by using spawn with argument arrays instead of shell string interpolation
- Fix stale closure in FileTree.loadChildren by checking cache inside state setter
- Remove unused next-themes dependency
- Add path validation to prevent directory traversal attacks
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Implements a file tree browser in the right panel that displays the
current session's working directory with:
- Lazy-loaded directory tree with expand/collapse
- File-type-specific icons (TypeScript, JavaScript, JSON, YAML, etc.)
- Right-click context menu with auto-detected apps (Finder, VS Code,
Cursor, terminals, etc.)
- Copy path functionality
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add @fontsource/geist-sans package and set it as the primary font
with system-ui and sans-serif as fallbacks.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add zustand for global modal state management
- Create modalStore with settings/newSession/deleteSession modals
- Create Modals.tsx component for centralized modal rendering
- Move Settings button to sidebar footer
- Clean up old --color-* CSS variables, use shadcn standard variables
- Delete unused base.css and main.css files
- Update components to use Tailwind classes (bg-background, text-foreground, etc.)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add trafficLightPosition for inline macOS traffic lights
- Replace SessionList with AppSidebar using shadcn sidebar
- Add Linear-style hover/active states for session items
- Show delete button and tooltip on hover per item
- Add delete confirmation dialog
- Handle traffic lights padding for collapsed/mobile states
- Add New task button with primary icon color
- Add Recent label for session list
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Redesign Settings as minimalist agent setup with bordered cards
- Add react-markdown for rendering assistant messages
- Expand thinking blocks with collapsible UI
- Adjust theme colors for dark mode (primary #292929)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Set up Electron + React + TypeScript + Tailwind CSS v4
- Implement Conductor for ACP agent communication
- Add AgentProcess for subprocess lifecycle management
- Create CLI test command (pnpm test:acp) with --cwd and --log options
- Support multiple agents: opencode, codex, gemini
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>