Changelog
- 6389534 Fix Claude stream-json startup hangs (#592)
- add8bf9 Merge pull request #608 from multica-ai/feat/desktop-app
- c1b1a55 Merge pull request #609 from multica-ai/fix/cross-platform-auth-search
- 2548716 Merge pull request #612 from multica-ai/feat/per-tab-memory-router
- ef1db9e Merge pull request #613 from multica-ai/feat/tab-persist-and-polish
- e867076 Merge pull request #616 from multica-ai/refactor/extract-chat-and-shared-ui
- 17ad3b2 Merge pull request #618 from multica-ai/agent/emacs/2023d753
- de88219 Merge pull request #640 from multica-ai/fix/drag-drop-overlay
- 6793f04 Merge pull request #643 from multica-ai/agent/agent/d7add9d3
- d0edf2e Merge pull request #645 from multica-ai/feat/desktop-drag-reorder-tabs
- a8c3137 Merge remote-tracking branch 'origin/main' into feat/desktop-app
- 74cc1d4 chore(desktop): scaffold electron-vite desktop app with monorepo config
- 303a4b3 chore(ui): configure shadcn at packages/ui level
- 4c88a13 chore(web): remove dead markdown component directory
- 1dd8ca8 chore(web): remove unused Spinner, LoadingIndicator, and ThemeToggle
- a258861 feat(agent): add Hermes Agent Provider via ACP protocol (#623)
- 289e3c3 feat(agents): enable changing runtime (#617)
- 25080c6 feat(chat): add session history panel to view archived conversations (#602)
- cc672b8 feat(core): add createPersistStorage utility for Zustand persist middleware
- 4268b78 feat(core): add workspace-aware storage for scoped persist stores
- 85cff15 feat(core): standardize storage + workspace isolation for persist stores
- 28b9bf8 feat(daemon): add minimum Claude Code version check (#625)
- ec71a41 feat(deploy): add full-stack Docker Compose for self-hosting
- 77f48d9 feat(desktop): add CSS, router, pages, and app entry with provider nesting
- cb81aa4 feat(desktop): add project detail route
- f9eeafb feat(desktop): add renderer platform layer — storage, api, auth, ws, navigation
- a012d91 feat(desktop): add tab system with document.title sync + upgrade shared LoginPage
- dafd51e feat(desktop): add title bar, dashboard shell, sidebar, and shared components
- b743db3 feat(desktop): drag-to-reorder tabs via dnd-kit
- 4585306 feat(desktop): frameless window with hiddenInset title bar and electron-store preload bridge
- 5647c12 feat(desktop): persist tab state across app restarts
- 17ae320 feat(docs): add documentation site with Fumadocs (#634)
- abe005b feat(dx): add
make devone-command local setup - 88982ad feat(issues): display token usage per issue in detail sidebar (#581)
- b5cccc8 feat(landing): add OpenClaw and OpenCode to landing page (#596)
- 825e403 feat(search): highlight matching keywords in search results (#598)
- 02cdfcb feat(search): improve ranking with ILIKE, identifier search, multi-word support (#601)
- 7d5db1c feat(sidebar): redesign layout for better space and grouping (#597)
- 5f888c7 feat(views): mobile-responsive layout for sidebar and inbox (#630)
- b439cfe feat: add 'C' keyboard shortcut for New Issue (#635)
- ca7ba48 fix(agents): invalidate runtimes cache on daemon events (#624)
- 1e0d2b8 fix(auth): logout clears workspace_id and query cache
- 715f196 fix(auth): wire onLogout callback to auth store and let guard handle redirect
- 66dec60 fix(core): invalidate parent children cache when sub-issues are deleted (#633)
- 2c1d1d9 fix(daemon): symlink Codex sessions dir to shared home for discoverability (#627)
- bf8abba fix(db): relax pending task unique index to per-(issue, agent) (#637)
- a314985 fix(desktop): add Geist font loading for consistent typography
- 83769c4 fix(desktop): add type=submit to login buttons
- 0998a3a fix(desktop): allow tab buttons to receive clicks above drag region
- 784111a fix(desktop): fix tsconfig path alias and AppLink children type error
- 0e0c5f4 fix(desktop): force preload CJS output and fix CSS @source paths
- 2d8c0a2 fix(desktop): hide close button when only one tab remains
- f7c1ae4 fix(desktop): move AuthInitializer to App root to prevent init deadlock
- 1caa7f6 fix(desktop): preload .cjs output for ESM package + CORS for electron dev
- 848d79d fix(desktop): remove type:module — Electron main/preload are CJS
- 042985d fix(desktop): resolve cross-platform boundary violations and deduplicate shared code
- bea2744 fix(desktop): use localStorage instead of electron-store
- ee46fd6 fix(editor): address review — complete migration, fix imports, clean dead code
- 66cb5d9 fix(editor): lift drag-drop overlay to outer container for better UX
- b52c048 fix(my-issues): use server-side filtering instead of client-side (#649)
- aec0745 fix(realtime): add PAT auth support to WebSocket endpoint (#568) (#587)
- 33768a2 fix(runtimes): accept wsId as parameter instead of requiring WorkspaceIdProvider
- 7620a5a fix(search): LOWER/LIKE for pg_bigm 1.2 index compatibility (#621)
- c7e5aed fix(server): add startup warnings for missing JWT_SECRET and RESEND_API_KEY
- 6209e2f fix(server): allow deleting runtimes when all bound agents are archived (#589)
- ee3c849 fix(skills): detect GitHub default branch instead of hardcoding "main" for skills.sh imports (#632)
- 63ca8d7 fix(views): improve daily token usage chart readability (#641)
- f53cdf3 fix(views): show user-scoped done count on My Issues page (#647)
- 6b8afb1 fix(views): use fake timers globally in login-page tests to prevent input-otp timer leak (#642)
- 79b4c75 fix: pre-resolve merge conflicts with origin/main
- 0f86611 fix: support multiline display for Master Agent input (#638)
- 547b883 refactor(auth): consolidate web login into shared LoginPage component
- 1028319 refactor(chat): address code review feedback
- aa6577c refactor(chat): extract chat data layer to packages/core/chat
- 5878bdd refactor(core): move my-issues view store to packages/core/issues/stores
- a4383e0 refactor(desktop): per-tab memory router with Activity-based state preservation
- 1f9ce65 refactor(desktop): update shell, tab-bar, and login for tab-based architecture
- fb1554c refactor(layout): extract DashboardGuard as shared guard + provider wrapper
- 05067f4 refactor(search): extract search to packages/views for cross-platform reuse
- 89fd2ce refactor(views): reuse AssigneePicker in CreateIssueModal (#599)
- d911cdf refactor: extract all shared logic to packages — apps are now thin routing shells
- cc5e2e1 test(views): rewrite shared component tests in packages/views