What's New
New Features
- Mode selector UX improvements — Semantic filtering, icons and colors for modes (plan, readonly, auto, default), mode descriptions in dropdown/tooltip, and global Shift+Tab shortcut to cycle modes (#110)
- Agent state sync & default mode configuration — Centralized agent store, auto-refresh on focus, validate installation before switching, per-agent default mode in Settings (#119)
- Local build script — Convenience script for building unsigned macOS .app for local development
Bug Fixes
- AI response not rendering after long idle/sleep — Disable Chromium background throttling, add system wake recovery via powerMonitor, re-sync session updates on focus (#129)
- Duplicate user message after focus sync — Fix missing
_internal: falseon optimistic user_message update causing deduplication failure - Spaces in session rename input — Custom KeyboardSensor to prevent @dnd-kit from intercepting Space key in input fields
- Default mode fallback — Use agent's semantic default mode when user hasn't explicitly set one
- npm install partial installs — Add
--forceflag to handle EEXIST errors when codex binary already exists (MUL-76)
Improvements
- Major codebase refactor — Split monolithic useApp.ts (953 lines) into focused hooks: useProjects, useSessions, useAgentStatus, useAppSubscriptions; extract messageGrouping and sessionUpdates utilities (#121 Phase 2)
- Deprecate SessionStore.ts — Mark legacy file-based storage as deprecated in favor of DatabaseStore (#121 Phase 1)
- Comprehensive test coverage — Added tests for AgentProcess, AcpClientFactory, mode-semantic, agentStore, sessionUpdates; coverage increased from 49.3% to 53.15%
- React patterns improvements — Move state reset to event handlers, use Promise.allSettled for version checks, fix React Compiler warnings