Changelog
- 2ea7938 Add Docker support for Gateway and SDK documentation
- dcca933 Add Hub Console with agent management and message routing
- b36769f Add README with project overview
- 6deac2f Add gateway URL configuration to Hub Console
- 84fe9d9 Add monorepo setup with Turborepo and Web client
- 81e64e9 Add workspace management and isolated worktree environments
- 7d94b40 Implement WebSocket Gateway with NestJS and client SDK
- 6b34ddc Initial project setup with multi-component architecture
- 9d6468a Merge branch 'Bohan-J/rm-comm-style' into main
- 3c303df Merge branch 'main' into exec-approvals
- bb223d8 Merge branch 'main' into feat/connection-code
- d699300 Merge branch 'main' of https://github.com/multica-ai/super-multica
- ff06941 Merge branch 'main' of https://github.com/multica-ai/super-multica
- 279d94b Merge pull request #1 from multica-ai/ldnvnbl/ts-gateway-research
- 46a6cb3 Merge pull request #10 from multica-ai/feat/exec-process-tools
- 91aa433 Merge pull request #100 from multica-ai/Bohan-J/cron-job-tool
- 94d6e15 Merge pull request #101 from multica-ai/fix/credentials-reload
- 0edc981 Merge pull request #102 from multica-ai/sessions-spawn-parent-trigger
- dacf889 Merge pull request #103 from multica-ai/feat/heartbeat-mechanism
- f31439e Merge pull request #104 from multica-ai/explore-approval-config
- f6ad045 Merge pull request #106 from multica-ai/feat/telegram-channel
- b7085b2 Merge pull request #107 from multica-ai/fix/new-user-onboarding
- 5c26f92 Merge pull request #108 from multica-ai/Bohan-J/add-time-awareness
- a12907d Merge pull request #109 from multica-ai/Bohan-J/fix-chat-error-catch
- be312cd Merge pull request #110 from multica-ai/Bohan-J/dual-track-user-display-content-20260209
- 4a3a910 Merge pull request #111 from multica-ai/Bohan-J/dual-track-user-display-content-20260209
- f7ddcec Merge pull request #112 from multica-ai/NevilleQingNY/telegram-msg-issue
- b9300f3 Merge pull request #113 from multica-ai/Bohan-J/dual-track-user-display-content-20260209
- 7d49fa8 Merge pull request #114 from multica-ai/forrestchang/list-agent-tools
- 86bd01b Merge pull request #115 from multica-ai/forrestchang/agent-design-review
- bfa96d8 Merge pull request #116 from multica-ai/fix/remove-accidental-config
- 187199d Merge pull request #117 from multica-ai/fix/gateway-pino-deadlock
- cdff06d Merge pull request #118 from multica-ai/fix/gateway-pino-deadlock
- 9d719c6 Merge pull request #119 from multica-ai/refactor/monorepo-restructure
- dc1fba6 Merge pull request #12 from multica-ai/forrestchang/agent-arch-review
- 98b8126 Merge pull request #120 from multica-ai/feat/subagent-concurrency-queue
- 2cb5d4f Merge pull request #121 from multica-ai/Bohan-J/sync-main-updates
- 22d0aca Merge pull request #122 from multica-ai/fix/ui-hmr-watch
- c58a836 Merge pull request #123 from multica-ai/forrestchang/desktop-onboarding
- 7562009 Merge pull request #124 from multica-ai/fix/desktop-branding-cleanup
- cd07896 Merge pull request #125 from multica-ai/Bohan-J/desktop-auto-update
- 16cd5d0 Merge pull request #126 from multica-ai/feat/subagent-announce-delivery
- a7c194c Merge pull request #127 from multica-ai/forrestchang/finance-domain
- b5ce496 Merge pull request #128 from multica-ai/feat/onboarding-check
- b22ad5a Merge pull request #129 from multica-ai/fix/desktop-heartbeat-ack-filter
- 3024e89 Merge pull request #13 from multica-ai/forrestchang/interactive-cli
- b5f63f7 Merge pull request #130 from multica-ai/forrestchang/finance-pr
- 14e9913 Merge pull request #131 from multica-ai/forrestchang/latex-render
- ee8e0a6 Merge pull request #132 from multica-ai/refactor/desktop-page-container
- 5c3fd3e Merge pull request #133 from multica-ai/fix/gateway-dockerfile
- 7b91c15 Merge pull request #134 from multica-ai/feat/chat-abort-support
- 8bc36a9 Merge pull request #136 from multica-ai/fix/agent-compaction
- c251d94 Merge pull request #137 from multica-ai/codex/remove-finance-api-key-requirement
- bad4d05 Merge pull request #138 from multica-ai/refactor/desktop-page-restructure
- b0f3e1e Merge pull request #139 from multica-ai/feat/subagent-group-next
- 143d779 Merge pull request #140 from multica-ai/forrestchang/earnings-analysis-skill
- 28c83af Merge pull request #141 from multica-ai/fix/writeinternal-retry
- 7bb0438 Merge pull request #142 from multica-ai/forrestchang/office-skills
- ade5e5a Merge pull request #143 from multica-ai/Bohan-J/subagent-timeout
- 0f4d579 Merge pull request #144 from multica-ai/feat/agent-workspace
- e901bec Merge pull request #145 from multica-ai/NevilleQingNY/fix-core-dist-missing
- 71433fc Merge pull request #146 from multica-ai/feat/message-source-tracking
- 9a22ed1 Merge pull request #147 from multica-ai/docs/desktop-env-example
- a986456 Merge pull request #148 from multica-ai/refactor/workspace-documents
- d385915 Merge pull request #149 from multica-ai/feat/default-agent-name-multica
- ad26eec Merge pull request #151 from multica-ai/forrestchang/telegram-file-send
- c728a80 Merge pull request #152 from multica-ai/fix/markdown-strikethrough-parsing
- 0ae17d6 Merge pull request #153 from multica-ai/docs/monorepo-dev-workflow
- 065b686 Merge pull request #154 from multica-ai/fix/desktop-ci-publish
- 7acf4cc Merge pull request #155 from multica-ai/fix/codex-oauth-expiry
- 736df03 Merge pull request #156 from multica-ai/feat/desktop-auth
- 882dc85 Merge pull request #157 from multica-ai/feat/improve-compaction
- b2e4f08 Merge pull request #158 from multica-ai/feat/subagent-dashboard
- 7578946 Merge pull request #159 from multica-ai/refactor/login-ui-consistency
- ae3fee9 Merge pull request #160 from multica-ai/fix/codex-provider-api
- c79e87e Merge pull request #161 from multica-ai/feat/desktop-device-id
- adfff83 Merge pull request #162 from multica-ai/feat/desktop-device-id
- 052c7ac Merge pull request #163 from multica-ai/feat/desktop-device-id
- 911ed5a Merge pull request #164 from multica-ai/NevilleQingNY/persist-chat-tabs
- fe6fdd4 Merge pull request #165 from multica-ai/forrestchang/analyze-run-logs
- 0c748f5 Merge pull request #166 from multica-ai/NevilleQingNY/login-drag-region
- 9877a4f Merge pull request #167 from multica-ai/feat/desktop-device-id
- 9e3169e Merge pull request #168 from multica-ai/docs/desktop-build-guide
- 4b6f42c Merge pull request #169 from multica-ai/fix/google-oauth-client-id
- 77aff99 Merge pull request #170 from multica-ai/feat/desktop-api-client
- 13e5492 Merge pull request #171 from multica-ai/forrestchang/markdown-accept
- d6a1eda Merge pull request #172 from multica-ai/forrestchang/agent-test-logging
- 597f24a Merge pull request #173 from multica-ai/chore/api-host-multica
- c2a2c75 Merge pull request #174 from multica-ai/forrestchang/arch-analysis
- 9189883 Merge pull request #175 from multica-ai/forrestchang/telegram-arch
- badcaa4 Merge pull request #176 from multica-ai/forrestchang/dev-local-run-log
- 87c03c1 Merge pull request #177 from multica-ai/forrestchang/telegram-table-fmt
- 733798f Merge pull request #178 from multica-ai/fix/api-url-env-bridge
- b1d6a6e Merge pull request #179 from multica-ai/forrestchang/desktop-menubar
- e08a1e8 Merge pull request #181 from multica-ai/forrestchang/dev-config-isolation
- 606bcd3 Merge pull request #182 from multica-ai/forrestchang/speed-up-ci-build
- 418282d Merge pull request #183 from multica-ai/forrestchang/optimize-office-skills
- ab2f411 Merge pull request #184 from multica-ai/dependabot/github_actions/actions/checkout-6
- 828c32f Merge pull request #185 from multica-ai/dependabot/github_actions/actions/setup-node-6
- 8c5ff8c Merge pull request #186 from multica-ai/dependabot/github_actions/actions/cache-5
- 0fba476 Merge pull request #194 from multica-ai/forrestchang/telegram-bot-menu
- 339b586 Merge pull request #195 from multica-ai/forrestchang/unify-multica-api-url
- 59f8802 Merge pull request #196 from multica-ai/fix/chat-input-multiline
- 358fcb3 Merge pull request #197 from multica-ai/forrestchang/create-pr
- 51741d5 Merge pull request #198 from multica-ai/forrestchang/rm-cmd-b-shortcut
- dba0c32 Merge pull request #199 from multica-ai/forrestchang/skill-env-storage
- 4b3592b Merge pull request #2 from multica-ai/ldnvnbl/gateway-docker
- 313f826 Merge pull request #200 from multica-ai/forrestchang/fix-telegram-conflict
- 47f8e62 Merge pull request #201 from multica-ai/forrestchang/debug-agent-logs
- 9cb6ee3 Merge pull request #202 from multica-ai/forrestchang/swe-bench-runner
- 74c0ca0 Merge pull request #203 from multica-ai/forrestchang/finance-benchmark
- 08b8c71 Merge pull request #204 from multica-ai/forrestchang/fix-onboarding-drag
- b31a49c Merge pull request #205 from multica-ai/forrestchang/fix-orphan-tool-call
- 9e40bd5 Merge pull request #206 from multica-ai/forrestchang/tg-reply-optimize
- fa04040 Merge pull request #207 from multica-ai/fix/onboarding-header-centering
- 94ae88e Merge pull request #208 from multica-ai/forrestchang/compaction-audit
- faa54fc Merge pull request #209 from multica-ai/forrestchang/subagent-redesign
- 47606ab Merge pull request #210 from multica-ai/forrestchang/serial-rerun
- 292e2b9 Merge pull request #211 from multica-ai/codex/telegram-agent-welcome
- a1bb77c Merge pull request #212 from multica-ai/codex/telegram-reply-context-queue-fix
- db63369 Merge pull request #213 from multica-ai/codex/remove-legacy-subagent-registry
- fc8a813 Merge pull request #214 from multica-ai/codex/chat-context-window-indicator
- 6e71598 Merge pull request #215 from multica-ai/codex/docs-prune-and-regenerate-core-docs
- e28ecb9 Merge pull request #216 from multica-ai/codex/meta-skill-installer-e2e-skills-benchmark
- eebbf93 Merge pull request #217 from multica-ai/codex/queued-message-ux
- 39fde8e Merge pull request #218 from multica-ai/codex/web-fetch-evidence-coverage
- 62feefb Merge pull request #219 from multica-ai/codex/web-policy-hybrid-roadmap
- f4bd5b7 Merge pull request #220 from multica-ai/codex/delegate-progress-timer
- 700e643 Merge pull request #222 from multica-ai/codex/conversation-fasttrack-1-rebased
- 47e9c3f Merge pull request #223 from multica-ai/codex/remove-legacy-memory
- 7387216 Merge pull request #224 from multica-ai/codex/fix-multi-session-chat-sync
- 61bbf8f Merge pull request #225 from multica-ai/fix/format-error-recovery
- 5d39958 Merge pull request #226 from multica-ai/fix/auto-update-repo-url
- e9e8b9c Merge pull request #227 from multica-ai/fix/remove-api-proxy
- c10ad35 Merge pull request #228 from multica-ai/fix/tool-empty-div-flicker
- 1eb8fda Merge pull request #229 from multica-ai/fix/macos-fullscreen-close-black-screen
- ef13d07 Merge pull request #230 from multica-ai/fix/strip-aborted-toolcalls-from-repair
- 3f589d8 Merge pull request #231 from multica-ai/fix/remove-broken-finance-actions
- d757460 Merge pull request #233 from multica-ai/forrestchang/linear-sidebar-ui
- 317e87f Merge pull request #234 from multica-ai/forrestchang/impl-plan
- c6e34c5 Merge pull request #235 from multica-ai/forrestchang/fix-kanban-width
- 4a273bc Merge pull request #236 from multica-ai/forrestchang/analyze-next-steps
- e9555b8 Merge pull request #237 from multica-ai/forrestchang/remove-fe-mocks
- 88ca784 Merge pull request #238 from multica-ai/codex/workspace-user-and-worktree-isolation
- fff7753 Merge pull request #239 from multica-ai/forrestchang/jakarta
- 1bf2b47 Merge pull request #24 from multica-ai/ldnvnbl/hub-gateway-config
- 5d99353 Merge pull request #240 from multica-ai/feature/issue-ui-ux
- 1a1f18c Merge pull request #241 from multica-ai/codex/disable-setup-seeding
- 94c9b07 Merge pull request #242 from multica-ai/codex/local-codex-runtime-pairing
- e3ea7bd Merge pull request #243 from multica-ai/feature/multi-agent-backend
- 7d38614 Merge pull request #244 from multica-ai/codex/claude-verification-opt-in
- 4bab6f7 Merge pull request #245 from multica-ai/feature/issues-ui-ux-optimization
- 2e5e24f Merge pull request #246 from multica-ai/codex/shared-postgres-local-dev
- 768a555 Merge pull request #247 from multica-ai/codex/default-workspace-daemon-pairing-fixes
- 0b09a8a Merge pull request #248 from multica-ai/refactor/web-features-restructure
- 9522cb0 Merge pull request #249 from multica-ai/forrestchang/remove-issue-git-repo
- 438b1bd Merge pull request #25 from multica-ai/feat/extract-packages-ui
- 5785093 Merge pull request #250 from multica-ai/feature/design-system-alignment
- 63df5dc Merge pull request #251 from multica-ai/forrestchang/agent-arch-analysis
- daaee73 Merge pull request #252 from multica-ai/forrestchang/skills-gap-analysis
- f150b39 Merge pull request #253 from multica-ai/NevilleQingNY/review-fixes-acceptance
- 04997b4 Merge pull request #254 from multica-ai/feat/homebrew-release
- ade1139 Merge pull request #255 from multica-ai/NevilleQingNY/ui-ux-fixes
- 6f8c9ef Merge pull request #26 from multica-ai/view-recent-commits
- 0bc5380 Merge pull request #29 from multica-ai/agent-api-key-baseurl
- 4a7d0fa Merge pull request #3 from multica-ai/ldnvnbl/hub-agent-mgmt
- 75fba04 Merge pull request #30 from multica-ai/forrestchang/add-unit-tests
- 4f50b3b Merge pull request #31 from multica-ai/copy-env-file
- a3e9fb6 Merge pull request #32 from multica-ai/forrestchang/cli-build-bin
- b66bbdd Merge pull request #33 from multica-ai/fix/openrouter-provider
- 916223d Merge pull request #34 from multica-ai/copy-env-local
- 20b45c0 Merge pull request #36 from multica-ai/feat/skills-system
- fd46d7b Merge pull request #37 from multica-ai/feat/web-v1
- 83ab7ee Merge pull request #38 from multica-ai/fix/chat-assistant-message-width
- 96c93cf Merge pull request #39 from multica-ai/feat/tools-system
- f7d03aa Merge pull request #4 from multica-ai/naiyuan/monorepo-setup
- a5f979f Merge pull request #40 from multica-ai/forrestchang/fix-cli-multiline-flash
- ace1a2f Merge pull request #41 from multica-ai/forrestchang/exec-blocking
- b7e1063 Merge pull request #42 from multica-ai/forrestchang/find-skills-location
- 6dd7961 Merge pull request #44 from multica-ai/forrestchang/skill-api-auth
- a2fc300 Merge pull request #45 from multica-ai/forrestchang/cli-tool-details
- 7695a3e Merge pull request #46 from multica-ai/docs/add-agents-md
- 2d86d8a Merge pull request #47 from multica-ai/forrestchang/optimize-agent-templates
- 144dc94 Merge pull request #48 from multica-ai/chore/update-pnpm-version
- 9f48dca Merge pull request #49 from multica-ai/jiayuan/better-cli-commands
- c0e3dab Merge pull request #5 from multica-ai/feat/agent-cli
- 806279a Merge pull request #50 from multica-ai/jiayuan/agent-setup
- 46b7906 Merge pull request #51 from multica-ai/jiayuan/fix-web-search
- f4500ad Merge pull request #52 from multica-ai/naiyuan/refactor-frontend-logic
- d5c4295 Merge pull request #53 from multica-ai/naiyuan/unify-gateway-sdk
- 4d4da4e Merge pull request #54 from multica-ai/fetch-agent-history
- 64878d9 Merge pull request #55 from multica-ai/feature/skills-profile-and-autocomplete-fix
- 10f9aa3 Merge pull request #56 from multica-ai/feature/skills-progressive-loading
- ebcab24 Merge pull request #57 from multica-ai/feature/ws-migration
- a87aee9 Merge pull request #58 from multica-ai/feat/provider-switch
- dd0fd2f Merge pull request #6 from multica-ai/refactor/agent-structure
- 6b03404 Merge pull request #60 from multica-ai/fix/sdk-source-exports
- 7122b12 Merge pull request #61 from multica-ai/feat/text-stream
- 03347d9 Merge pull request #62 from multica-ai/forrestchang/agent-error-handling
- 57097df Merge pull request #63 from multica-ai/feat/electron-init
- 09f7e93 Merge pull request #64 from multica-ai/agent-intermediate-steps
- d6f79d2 Merge pull request #65 from multica-ai/feat/pwa-support
- e0c16cd Merge pull request #66 from multica-ai/feat/mobile-init
- 0332c90 Merge pull request #67 from multica-ai/subagent-orchestration
- de68602 Merge pull request #68 from multica-ai/session-writelock-repair
- 0595d3a Merge pull request #69 from multica-ai/fix/streaming-protocol-sync
- c189eb7 Merge pull request #7 from multica-ai/feat/session-persistence
- ba555ba Merge pull request #71 from multica-ai/subagent-orchestration
- dbe57f0 Merge pull request #72 from multica-ai/auth-profile-rotation
- a995169 Merge pull request #73 from multica-ai/feat/admin-app
- 91044de Merge pull request #74 from multica-ai/feat/connection-code
- f3261d3 Merge pull request #75 from multica-ai/chore/pnpm-allow-build-scripts
- 32c406a Merge pull request #76 from multica-ai/forrestchang/desktop-qr-refresh
- e9ed53b Merge pull request #77 from multica-ai/feat/clean-web-store
- cfe2b8f Merge pull request #78 from multica-ai/ws-auth-handshake
- 5760b86 Merge pull request #79 from multica-ai/feat/agent-style-setting
- 096b284 Merge pull request #80 from multica-ai/feat/web-qr-scanner
- b85a186 Merge pull request #81 from multica-ai/system-prompt-engine
- bef2e90 Merge pull request #83 from multica-ai/feat/issue-82-render-tool-call-styles
- c70dd33 Merge pull request #84 from multica-ai/reasoning-mode-support
- 1db8b21 Merge pull request #85 from multica-ai/feat/local-chat-ipc
- c2b5ada Merge pull request #86 from multica-ai/exec-approvals
- bd17784 Merge pull request #87 from multica-ai/Bohan-J/athens
- a985009 Merge pull request #89 from multica-ai/Bohan-J/profile-progressive-load
- 307e7fa Merge pull request #9 from multica-ai/refactor/agent-structure
- 963bb6c Merge pull request #90 from multica-ai/feat/mobile-pwa-optimization
- f1dff1e Merge pull request #91 from multica-ai/feat/mobile-pwa-optimization-2
- 6e8f0a3 Merge pull request #92 from multica-ai/fix-session-mkdir-enoent
- be35dd4 Merge pull request #93 from multica-ai/NevilleQingNY/fix-web-pwa-icons
- 6ebd610 Merge pull request #94 from multica-ai/compaction-feedback
- 363c65b Merge pull request #95 from multica-ai/Bohan-J/tool-result-pruning
- 039a625 Merge pull request #96 from multica-ai/feat/message-return
- f795006 Merge pull request #97 from multica-ai/cleanup/remove-old-chat-files
- 2420479 Merge pull request #98 from multica-ai/copilothub-web-search
- 3b09d8d Merge pull request #99 from multica-ai/message-aggregation
- e9efb66 Merge remote-tracking branch 'origin/main' into Bohan-J/desktop-auto-update
- e5feb96 Merge remote-tracking branch 'origin/main' into agent-api-key-baseurl
- 4b10420 Merge remote-tracking branch 'origin/main' into auth-profile-rotation
- ec6dbff Merge remote-tracking branch 'origin/main' into copilothub-web-search
- b85138d Merge remote-tracking branch 'origin/main' into exec-approvals
- 9bcb099 Merge remote-tracking branch 'origin/main' into exec-approvals
- fd098c0 Merge remote-tracking branch 'origin/main' into feat/dashboard
- 5ee08e9 Merge remote-tracking branch 'origin/main' into feat/desktop-api-client
- 9026c27 Merge remote-tracking branch 'origin/main' into feat/desktop-api-client
- 23905da Merge remote-tracking branch 'origin/main' into feat/telegram-channel
- 0895d42 Merge remote-tracking branch 'origin/main' into feat/telegram-channel
- fc035c4 Merge remote-tracking branch 'origin/main' into feature/issues-ui-ux-optimization
- 0b7de54 Merge remote-tracking branch 'origin/main' into feature/multi-agent-backend
- 1e71341 Merge remote-tracking branch 'origin/main' into message-aggregation
- f133434 Merge remote-tracking branch 'origin/main' into session-writelock-repair
- a7db286 Merge remote-tracking branch 'origin/main' into sessions-spawn-parent-trigger
- 0212b02 Merge remote-tracking branch 'origin/main' into view-recent-commits
- 4c6eb81 Provision default workspaces and harden daemon pairing
- a131f3b Remove Multica App tab from Clients page (#190)
- 00c80b5 Revert "feat(telegram): handle voice and audio messages with media:audio placeholder"
- db25f8f chore(agent): add debug hook to inject invalid tool call id
- 3e7fa97 chore(agent): drop bash tool alias
- 98f3f7e chore(agent): remove --env-file from agent:cli script
- d78f848 chore(agent): remove debug invalid tool-call injection
- f605511 chore(agent): remove old sessions_spawn/sessions_list tools and update references
- 63e7541 chore(benchmark): remove hardcoded output directories from case prompts
- 486b090 chore(benchmark): translate finance e2e case prompts to English
- 3c91180 chore(channels): remove unused Desktop Telegram channel plugin
- 02f3534 chore(chat): set DEFAULT_MESSAGES_LIMIT to 200 for production
- a86774e chore(ci): add GitHub Actions workflow (#28)
- a8ef406 chore(ci): remove dependabot configuration (#189)
- c6960d3 chore(claude): default to replacing stale flows
- c35ffb1 chore(cli): update package.json and build script for unified CLI
- 7a16df7 chore(compaction): add E2E compaction benchmark script
- a9bf229 chore(daemon): add debug logging for task lifecycle troubleshooting
- 40be100 chore(deps): Bump actions/cache from 4 to 5
- 7224925 chore(deps): Bump actions/checkout from 4 to 6
- 2a7cbfa chore(deps): Bump actions/setup-node from 4 to 6
- 00b31e2 chore(deps): add croner for cron expression parsing
- 5380b14 chore(deps): upgrade pi-ai and pi-agent-core to 0.52.9
- e3c24fc chore(desktop): add deep link protocol and build scripts
- 70cee08 chore(desktop): add dependencies for routing and QR code
- eb07f12 chore(desktop): add env files for dev/production and update dev scripts
- 6cc3a37 chore(desktop): clean up build artifacts and unused code
- faecc32 chore(desktop): fix electron-builder config for releases
- fc6c3e3 chore(desktop): remove coming soon label from remote agent button
- ecb0cd3 chore(docs): remove non-e2e documentation
- e35aa95 chore(gateway): rename client from Geneva to Multica
- 1ddde84 chore(gateway): use provided PNG icon for PWA
- 995be9d chore(pnpm): allow electron and esbuild build scripts
- 368012b chore(providers): remove Mistral from provider registry
- 28a14a4 chore(providers): update model registry with latest valid models
- c97ee8e chore(release): bump version to 0.1.2
- ac73332 chore(release): bump version to 0.1.3
- 9c02ac7 chore(scripts): enable run log in dev:local script
- b280d6f chore(skills): bump finance skill versions to 1.1.1
- 3f15666 chore(skills): export new diagnostics and serialize modules
- 8a69eb1 chore(skills): remove commit and code-review skills
- 4b7567f chore(skills): remove finance API key requirement
- 9b8aebd chore(skills): remove redundant provider skill
- 1fe27a5 chore(store): remove unused Zustand stores and slim down package
- e9d934a chore(telegram): add webhook setup script
- 630f06e chore(tools): update web_search descriptions to Devv Search
- 4e61155 chore(turbo): add src as global dependency for cache invalidation
- 4caa038 chore(turbo): remove ^lint dependency for parallel lint execution
- 1b252c1 chore(ui): switch primary color to shadcn default
- 332a9b6 chore(web): add @dnd-kit for drag-and-drop support
- 22c957e chore(web): enable experimental HTTPS and fix scanner active states
- 39f2683 chore(web): gitignore self-signed HTTPS certificates
- 986b08b chore(web): replace old icons with company logo
- 4375a66 chore(web): set dev port to 3001 to avoid gateway conflict
- 21efbf9 chore(web): update PWA logo assets
- 8c51cf9 ci: add test step to CI pipeline
- 2727ecd ci: parallelize jobs and add turbo cache persistence
- 276e306 docs(agent): add web tools policy optimization roadmap
- 4b71e3c docs(agent): add web tools to profile templates (#22)
- 028c3a2 docs(agent): update tools template with complete tool documentation (#19)
- 6e3ba38 docs(auth): clarify storage location for SID and user data
- ee95102 docs(channel): add OpenClaw channel system source code research
- be71614 docs(channels): add message paths documentation
- 49623b4 docs(channels): add system overview and update media handling docs
- c27f4e6 docs(channels): update README with route queue pattern and ack lifecycle
- 52e9bf9 docs(claude): add code style rule for English comments
- 5c5ac76 docs(desktop): add build commands and configuration guide to .env.example
- 82ab988 docs(desktop): add comprehensive design document and TODO list
- fbe55ab docs(desktop): add data flow architecture for Local/Remote modes
- 82f0ccb docs(desktop): clean up README
- 816c883 docs(desktop): improve .env.example with accurate configuration guide
- e4ce334 docs(desktop): update TODO list in README
- cea3336 docs(desktop): update TODO list with core improvements
- 88582fe docs(development): restore dev-local workflow docs
- 812710c docs(hub): add RPC protocol documentation
- 37aafe6 docs(profile): add README with config.json documentation
- 59ae49e docs(readme): add time awareness flow section
- 5562fbe docs(skill-creator): add progressive disclosure section
- b2d281c docs(skill-creator): emphasize correct skill directory path
- dc2c369 docs(skill-creator): explicitly state no .skill packaging needed
- 69cad35 docs(skill-creator): support profile-specific skill creation
- 6bb8f2d docs(skill-creator): update precedence to reflect simplified sources
- 578c8a6 docs(skills): add README for skills system
- a07e3ae docs(skills): add documentation for diagnostics and serialization
- 8974f52 docs(skills): add plugin system docs and Chinese translation
- 58eb249 docs(skills): add profile-specific installation documentation
- 40b6802 docs(skills): add skill invocation documentation
- 9919378 docs(skills): update CLI commands and add profile skills documentation
- 7b88567 docs(skills): update whisper skill with correct transcription priority
- d01fcff docs(subagent): add architecture flowchart and README
- cd0888d docs(tools): add Agent Profile integration section
- 11e2564 docs(tools): add comprehensive README with architecture diagram
- 1a98446 docs(tools): document memory tools
- 22d60f8 docs(tools): simplify roadmap and add Chinese translation
- 3548c91 docs(web): add development guidelines README
- 4a503ec feat(agent): add AgentErrorEvent for error propagation via subscribe
- 6e82219 feat(agent): add SyncAgent and AsyncAgent wrapper classes
- b4303f9 feat(agent): add agent management UI, skills/tools/triggers, and issue assignment
- d89b409 feat(agent): add auth profile rotation and cooldown module
- 5931e8f feat(agent): add auto-backgrounding and process management (#17)
- 4df3944 feat(agent): add communication style setting to profile
- 0ebd9d6 feat(agent): add connected channels section to system prompt
- 67cd46a feat(agent): add context window management with token-aware compaction (#14)
- ca0b462 feat(agent): add default workspace directory per profile
- e67682c feat(agent): add exec approval type definitions and safety evaluation engine
- 1097ef5 feat(agent): add exec/process tools
- 95e6ae4 feat(agent): add glob tool for file pattern matching (#18)
- 14d2264 feat(agent): add interactive CLI for agent interaction
- 4c4f898 feat(agent): add internal finance evidence decisioner
- f8ca4ca feat(agent): add isContextOverflowError utility
- 8c2b656 feat(agent): add pi-agent core integration and test CLI
- 53bd52b feat(agent): add process list action for activity monitoring
- a80c858 feat(agent): add profile name and user content management
- 200b2ce feat(agent): add profile system and improve tools
- d7eb0da feat(agent): add provider switching and OAuth credential support
- 14bcebe feat(agent): add real-time streaming updates to exec tool
- 77d5702 feat(agent): add reasoning mode types and thinking extraction
- b8fb671 feat(agent): add reply context and responsiveness guidance to channel system prompt
- ade7f2b feat(agent): add search-then-fetch guidance to web tools system prompt (#150)
- a29366d feat(agent): add send_file tool for channel file sending
- 49122e2 feat(agent): add session persistence and compaction
- 83b557a feat(agent): add sessions_spawn tool for subagent orchestration
- 50ae997 feat(agent): add skills system with profile integration (#21)
- fa03ae6 feat(agent): add soul.md support for agent identity
- d04bed8 feat(agent): add streaming support for AI message generation
- b6db23c feat(agent): add structured run logging for debugging
- 85f71e0 feat(agent): add subagent orchestration core
- 4086fa6 feat(agent): add subscribe method for multiple event consumers
- 5a06bed feat(agent): add system prompt engineering module
- 6f6a4f8 feat(agent): add tools and skills management methods
- 9b3ffd1 feat(agent): add web_fetch and web_search tools (#20)
- 994242d feat(agent): auto-create init issue on agent creation with workspace context
- 70f3755 feat(agent): emit compaction lifecycle events
- a254daf feat(agent): enable parallel tool execution via pi-agent-core patch
- b1d80f2 feat(agent): enhance interactive CLI with colors, spinner, and status bar (#43)
- 299c947 feat(agent): expose isRunning and lastRunError on Agent and AsyncAgent
- 953a296 feat(agent): implement reasoning mode in engine and CLI
- dcc336f feat(agent): integrate auth profile rotation into runner and resolver
- 3d2e539 feat(agent): integrate skills config into AgentOptions
- 321b48a feat(agent): register cron tool in agent toolset
- d3ef8ec feat(agent): replace sessions_spawn with synchronous delegate tool
- 273e49f feat(agent): stream raw AgentEvent from engine to Hub via Gateway
- 236863a feat(agent): support AGENT_PROVIDER and AGENT_MODEL env vars
- 9858576 feat(agent): support custom API key and base URL configuration
- 89089ef feat(agent): wire exec approval callback into tool execution pipeline
- f13509e feat(auth): pass encrypted Device ID from Web to Desktop
- edc5539 feat(benchmark): add finance e2e case suite
- c38a576 feat(benchmark): parallelize finance e2e runs
- 971d68b feat(channels): add ChannelManager and Telegram plugin
- 5d63727 feat(channels): add channel plugin system with types, registry, and config
- 0542c82 feat(channels): add credential write and per-account lifecycle control
- 0500dc1 feat(channels): add inbound debouncer, ACK reactions, and sequentialize
- 020d132 feat(channels): add media attachment types and cache directory
- 01b89ed feat(channels): add message source prefix, sendFile, and channel info
- 6e96fd1 feat(channels): add outbound media types and sendMedia to channel adapter
- ceb960c feat(channels): add typing indicators and Telegram HTML formatting
- 23da5a3 feat(channels): route media messages through agent
- ec8b62c feat(chat): add context window usage indicator
- 65c2fea feat(chat): add message history pagination with scroll-up loading
- a2c1379 feat(cli): add --run-log flag and session dir output for agent-driven E2E testing
- c55bb5a feat(cli): add /model command for switching models within provider
- 9504eea feat(cli): add /provider command to show and switch providers
- 7f25378 feat(cli): add binary build support for interactive CLI
- 5520fec feat(cli): add detailed tool info display for glob, web_search, web_fetch
- f15a28e feat(cli): add multica cron commands
- 84f5c69 feat(cli): add real-time autocomplete dropdown for commands
- ac6f8fb feat(cli): add tab completion for skill commands
- 67d5430 feat(cli): add tools configuration options
- aaf0522 feat(cli): display real-time tool execution updates
- ac7c124 feat(cli): enhance status command with rich diagnostics
- 051e56d feat(cli): improve /provider command display with ID column
- b007ddf feat(cli): initialize Hub in run mode for full agent capabilities
- e39f9a5 feat(cli): wait for sub-agents and output findings in run mode
- ba44de8 feat(compaction): add metadata extraction and multi-level summary fallback
- 5aa8a52 feat(compaction): make pruning and summary artifact-aware
- 9e7907a feat(compaction): switch default to summary mode with split-turn and adaptive chunking
- 037908c feat(connection): add device verification status feedback for collaborators
- 30a1fd0 feat(console): enable CORS for cross-origin web app requests
- f3ec056 feat(console): redesign Hub Console UI for desktop
- 3dd7ff5 feat(context): add tool result pruning for smarter context management
- ec413ef feat(core): add auth-store module to read local auth data
- 8199dde feat(core): add message source tracking and persistence
- 43198d9 feat(core): add rpc to generate channel welcome messages
- f763125 feat(core): add shared api-client module for auth headers
- d7ccbf0 feat(core): add testProvider method to AsyncAgent
- d47594d feat(core): add unified data tool with finance domain support
- 0513802 feat(credentials): add CLI credentials reader for OAuth providers
- 3ee8946 feat(credentials): add JSON5 credential system
- de355ca feat(cron): add cron job scheduling module
- 678266e feat(daemon): add per-task isolated execution environments
- bb45f17 feat(daemon): unified agent SDK supporting Claude Code and Codex
- 4961604 feat(desktop): add --reset flag to clear user data for testing
- 4de9947 feat(desktop): add 4-step onboarding flow
- 309c27b feat(desktop): add API client with auth headers
- c99675b feat(desktop): add Channels configuration page with Telegram support
- ed681a9 feat(desktop): add Configure button in chat error banner
- a8dd9f2 feat(desktop): add Cron Jobs management page
- 2a4fcde feat(desktop): add IPC handlers for Hub, Tools, and Skills management
- 150fde8 feat(desktop): add React hooks for Hub, Tools, and Skills state
- d189b14 feat(desktop): add StepDots component and minor onboarding tweaks
- b39a0dd feat(desktop): add Telegram QR code to Clients page and Onboarding
- 03bcd85 feat(desktop): add UI components for Tools and Skills management
- bdc2006 feat(desktop): add agent settings dialog
- 2577475 feat(desktop): add authentication flow with Web login
- 0459769 feat(desktop): add auto-update functionality
- a33df19 feat(desktop): add chat abort support with partial content preservation
- 37a68fc feat(desktop): add collapsible queued message panel
- 16753d7 feat(desktop): add conversation switcher and new-session flow
- ea7a2c8 feat(desktop): add cron tool to Tools page UI
- 07c05b1 feat(desktop): add dev reset scripts for fresh install testing
- ff827f0 feat(desktop): add device confirmation dialog and token registration IPC
- 26df747 feat(desktop): add dual-mode chat page (Local/Remote)
- 5ae86fe feat(desktop): add global channels store with zustand
- 4a986b1 feat(desktop): add local chat IPC handlers
- 3d25aa9 feat(desktop): add minimum window size constraints
- 7691f81 feat(desktop): add model name input for OpenRouter configuration
- 2349868 feat(desktop): add model switching to provider dropdown
- 391bf32 feat(desktop): add pages for Home, Tools, and Skills with routing
- 57cb99d feat(desktop): add persistent Device ID with encryption
- a157c65 feat(desktop): add profile IPC handlers
- 48245be feat(desktop): add provider IPC handlers
- a143187 feat(desktop): add provider connection test to API key dialog
- 197b77e feat(desktop): add provider selection UI
- 07b8a01 feat(desktop): add resolvedTheme to theme provider
- 9290fd1 feat(desktop): add searchable model dropdown for OpenRouter
- 5d102c0 feat(desktop): add style selector to agent settings dialog
- 499c573 feat(desktop): add subagent dashboard with real-time status tracking
- d2e22a6 feat(desktop): add system tray for background agent status
- fcbe966 feat(desktop): add verified device list and rich confirm dialog
- 9bfef71 feat(desktop): add version, gateway, and update check to tray menu
- 22db618 feat(desktop): add welcome page to onboarding flow
- 0135951 feat(desktop): allow reconfiguration of already-configured providers
- b7477cb feat(desktop): bridge MAIN_VITE_API_URL to process.env for packaged builds
- c95b74f feat(desktop): default dev gateway URL and support GATEWAY_URL env override
- 0e383f5 feat(desktop): display agent errors in Chat UI instead of hanging
- 9663079 feat(desktop): expose heartbeat controls and status card
- 7259832 feat(desktop): handle agent_error events and clearLastRoute in IPC
- 16fe40b feat(desktop): hide native title bar with macOS hiddenInset style
- 607adeb feat(desktop): implement local chat with direct IPC and mode switching
- 2a6e104 feat(desktop): improve login page and add auth toasts
- a4f8cbd feat(desktop): improve profile IPC and error handling
- 437dc05 feat(desktop): improve setup step with radio indicators
- a814373 feat(desktop): initialize electron app with routing and cleanup
- 141af9e feat(desktop): integrate @multica/ui shared components
- ff80cf0 feat(desktop): integrate Chat component into desktop app
- 7e2f55b feat(desktop): integrate UpdateNotification into new sidebar layout
- eb4e1f5 feat(desktop): persist onboarding state to file system
- 04d227c feat(desktop): persist onboarding state with --force-onboarding flag
- bfe0c82 feat(desktop): queue user messages while agent is busy
- eb80778 feat(desktop): redesign connect step with single column layout
- 272cabf feat(desktop): redesign home page with capabilities dashboard
- 54bc00c feat(desktop): redesign privacy step with single column layout
- ff026b1 feat(desktop): scaffold Electron app with Vite
- d456052 feat(desktop): show delegate sub-task progress and timers
- 3e04422 feat(desktop): use interactive sample prompts in Try It step
- bc24b58 feat(desktop): wire Try It step to real agent chat
- d367e77 feat(device): add clientName to DeviceMeta for multi-client display
- 2074aac feat(e2e): add clawhub skills benchmark suite
- a36cbac feat(exec-approval): default to full/off security and support no-timeout
- 77953a6 feat(finance): replace API key auth with auth headers
- 566f14f feat(gateway): add PWA mobile client
- d75a247 feat(gateway): add Telegram QR deep link connection flow
- 3622f82 feat(gateway): add auto-connect, hub discovery via list-devices
- 5010d87 feat(gateway): add long-polling fallback for local Telegram development
- f201437 feat(gateway): add typing indicator for Telegram bot responses
- f5ac4b8 feat(gateway): handle send_file action in Telegram service
- 25d447a feat(gateway): polish PWA client UI for mobile
- 9646b08 feat(gateway): port Desktop Telegram channel features to Gateway webhook bot
- 4a2ef83 feat(gateway): send agent-generated welcome after telegram connect
- 708116a feat(gateway): support telegram active conversation sessions
- ffa5355 feat(heartbeat): add heartbeat core runner and profile integration
- 1e7d5f6 feat(hub): add RPC dispatcher with structured error handling
- b2c0711 feat(hub): add device verification with token + whitelist + user confirmation
- 874de76 feat(hub): add local exec approval routing for desktop IPC chat
- 1859e32 feat(hub): add message aggregation module for block-level reply chunking
- 5b6a1c6 feat(hub): add singleton pattern and subagent spawning
- 203d760 feat(hub): filter forwarded events to 5 types useful for frontend
- 9922355 feat(hub): integrate ChannelManager into Hub lifecycle
- b82409c feat(hub): integrate cron service lifecycle
- d742e66 feat(hub): integrate exec approval manager with Hub and Gateway
- c03a607 feat(hub): integrate message aggregator into Hub event pipeline
- c6d0476 feat(hub): persist agent list to disk for restart recovery
- 1316d32 feat(hub): propagate compaction events to all frontend transports
- 1f22c3e feat(hub): register RPC handlers for hub, agent, and gateway operations
- c581183 feat(hub): store device metadata in whitelist and pass to confirm handler
- 864d916 feat(hub): support profileId in createAgent
- 8c87c50 feat(hub): wire heartbeat controls into hub and cron wake mode
- c646165 feat(hub): wire send_file callback with dual-path routing
- 3f71957 feat(inbox): notification triggers, unread badge, archive UI, View Issue link
- db214b2 feat(media): add image/video description and local whisper priority
- 4e57806 feat(media): transcribe audio via Whisper API before reaching agent
- 8484ba6 feat(memory): add persistent key-value storage for agents
- 01c82b2 feat(mobile): 移动端初始化
- f0f6055 feat(platform): align conversation semantics across surfaces
- 9467ac9 feat(profile): add config.json support for profile configuration
- a990a1c feat(profile): add interactive setup command for agent profiles
- f0aa1e1 feat(profile): add profile directory path to system prompt
- 02b480d feat(profile): default new agent name to "Multica" instead of "Assistant"
- cdc64f9 feat(profile): enforce file-based memory with stronger guidance
- 9661226 feat(profile): enhance templates with user.md and workspace.md
- a490c73 feat(providers): add gpt-5.3-codex and update OpenAI model lists
- 2f54665 feat(release): add GoReleaser config and Homebrew tap support
- a7c1b42 feat(report): add code stats report generator
- 755ed5e feat(run-log): add result metadata to tool_end events
- b9ce4da feat(runner): support OAuth providers (claude-code, openai-codex)
- 35b13f9 feat(runner): validate provider credentials on startup
- cdfa63a feat(runtime): add local codex daemon pairing
- 90d374f feat(scripts): add SWE-bench runner for Multica agent evaluation
- af7deb5 feat(scripts): add dev:local:archive to snapshot dev data for debugging
- ca8c8e5 feat(scripts): isolate dev:local data and workspace directories
- 2541745 feat(sdk): add RPC request method and types to GatewayClient
- 0eac2b2 feat(sdk): add auto-verify handshake after gateway registration
- d930040 feat(sdk): add exec approval action types for client integration
- 0340358 feat(sdk): add thinking content extraction for stream events
- dd701a2 feat(sdk): collect device metadata during verify handshake
- cc22814 feat(server): add comment CRUD endpoints and issue filter/update enhancements
- 5a3a72c feat(server): add task service layer and daemon REST protocol
- 1e61c19 feat(server): implement full REST API with JWT auth and real-time WebSocket
- 3f9a304 feat(session): add artifact storage and pre-emptive tool result truncation
- 37e5b2c feat(session): add write lock, file repair, and transcript repair modules
- 2783344 feat(session): externalize base64 images from session JSONL
- 0c549f7 feat(session): integrate write lock and auto-repair into session flow
- f74ac43 feat(shared): add error handling infrastructure (#27)
- 8004403 feat(skill-creator): add activation flow and API key onboarding instructions
- f19e51d feat(skill-creator): add init_skill.py script for reliable skill creation
- 351afb1 feat(skills): add --profile option for installing to specific profile
- ecaada1 feat(skills): add CLI commands for add/remove skills
- 1105a7a feat(skills): add CLI for skills management
- 28957ba feat(skills): add Excel spreadsheet (xlsx) skill
- 7999d8f feat(skills): add PDF processing skill
- 1c51932 feat(skills): add PowerPoint presentation (pptx) skill
- 2774c0f feat(skills): add Word document (docx) skill
- 3bd85b6 feat(skills): add async serialization for concurrent operations
- 0c1856b feat(skills): add clawhub meta skill with security gate
- deb9649 feat(skills): add detailed eligibility diagnostics with hints
- bef8692 feat(skills): add earnings analysis skill for financial statement assessment
- 8eba6c0 feat(skills): add file watcher for hot reload
- bbda13d feat(skills): add finance evidence sufficiency gate
- 6e28513 feat(skills): add finance research and DCF valuation skills
- 5853c91 feat(skills): add install mechanism for skill dependencies
- 8fbd72c feat(skills): add invocation types and parser support
- 42e2943 feat(skills): add invoke module for skill commands
- aee807e feat(skills): add module for GitHub skill installation
- 8c2f8ad feat(skills): add plugin system for npm package discovery
- 307b381 feat(skills): add provider skill for LLM provider management
- c1cbdac feat(skills): add skill-creator meta-skill for self-extension
- f021063 feat(skills): add web search integration to earnings analysis
- 922a3b2 feat(skills): add whisper audio transcription skill
- 8228643 feat(skills): auto-sync bundled skills based on version comparison
- c165783 feat(skills): clean up removed bundled skills on update
- 00915d7 feat(skills): enhance metadata and config system for OpenClaw compatibility
- 6f67bb7 feat(skills): expose ineligible skills in system prompt for auto-discovery
- 4e10ee7 feat(skills): extend SkillManager with invocation methods
- 6f0be4a feat(skills): implement progressive loading for reduced token usage
- 91709dd feat(skills): integrate watcher into SkillManager
- 9f98ccc feat(skills): store API keys in per-skill .env files
- f2adddc feat(skills): upgrade finance analysis workflows
- d7d2861 feat(store): add shared Zustand store package with counter example
- 4d6d571 feat(store): load agent message history via RPC
- 3d13c28 feat(store): pass hubId and token to GatewayClient for verification
- 583242b feat(store,ui): add tool execution lifecycle and ContentBlock rendering
- e4f1d51 feat(store,ui): handle Hub error messages and display error banner
- 12fb12b feat(subagent): add SubagentGroup type and registry support
- d7a0218 feat(subagent): add announce:"silent" mode for deferred coalesced announcements
- 716e69a feat(subagent): add anti-polling guards to sessions_list
- 48185c3 feat(subagent): add groupId/next params to spawn and group display to list
- 240fdd1 feat(subagent): add lane-based command queue with concurrency control
- 9cc89cf feat(subagent): add sessions_list tool for viewing spawned sub-tasks
- 45db13c feat(subagent): add two-tier announce delivery with debounced queue
- 6786af4 feat(subagent): coalesce announcements into single parent notification
- 2e6d419 feat(subagent): deferred record cleanup and error propagation
- 58ec562 feat(subagent): improve system prompts for error reporting and timeout
- 5b0cbd4 feat(subagent): increase default timeout from 10 min to 30 min
- 683dfa7 feat(subagent): integrate command queue and configurable timeout
- 9b16001 feat(subagent): pass tools to subagent system prompt
- d392238 feat(subagent): tag internal orchestration messages and filter from user-facing history
- f46c00e feat(subagent): update announce flow for group continuation
- c343387 feat(system-prompt): add bootstrap budget control for workspace and skills
- a1ac250 feat(system-prompt): enhance report with truncation tracking and token estimates
- e9d54e9 feat(telegram): add inline keyboard onboarding and menu button
- 87a83fb feat(telegram): add reply context parsing and send new messages for tool narration
- 8270762 feat(telegram): convert Markdown tables to vertical list format
- 78738e8 feat(telegram): detect and download media messages
- 48f8302 feat(telegram): handle voice and audio messages with media:audio placeholder
- dc60cb7 feat(telegram): replace Hub URL binding with connection link verification
- dde8cc5 feat(telegram): show editable status message during tool execution
- 3817e2d feat(tools): add HMAC-SHA256 request signing to web search
- 9d0cc6f feat(tools): add cron tool for agent job management
- 7ac90a2 feat(tools): add image resize wrapper for read tool
- 6bfe836 feat(tools): add keyword-based memory_search tool
- 57f31b2 feat(tools): add tool policy system with 4-layer filtering
- ae6d516 feat(tools): add tools:cli for inspecting tool configuration
- 3c0f132 feat(tools): integrate Profile tools config with runner
- d9cd79f feat(tools): register memory tools and add group:memory
- 8ea2f2a feat(tools): replace web search with CopilotHub API
- 35ab158 feat(types): add AuthUser type for auth integration
- 6535efd feat(ui): UI/UX polish — layout, sidebar, button, theme improvements
- 953041e feat(ui): add LaTeX math rendering support to chat markdown
- 9b87cd7 feat(ui): add Markdown rendering components
- 2f5dbcd feat(ui): add QR code scanner to ConnectPrompt
- f348d91 feat(ui): add Spinner component from multica
- a1c28b3 feat(ui): add auto-scroll to bottom for chat messages
- cdcce47 feat(ui): add brand icon and artistic font to sidebar header
- d1d3cd0 feat(ui): add collapsible component
- 44fef52 feat(ui): add container utility and loading spinner component
- 5a3dc6c feat(ui): add data tool display config in chat UI
- 7fdbf24 feat(ui): add exec approval card and refine tool/thinking expand style
- ffaed12 feat(ui): add global scrollbar styling with light/dark support
- 88d2e93 feat(ui): add light/dark theme toggle in sidebar
- 4ff2276 feat(ui): add onSubmit/disabled props to ChatInput, convert AppSidebar to children slot
- cff9c00 feat(ui): add paste mode success/error feedback with state-based rendering
- ca1c260 feat(ui): add size prop to MulticaIcon bordered variant
- 54ee2f3 feat(ui): add streaming indicator to StreamingMarkdown
- 94f3270 feat(ui): auto-activate newly created agent
- e144372 feat(ui): create @multica/ui package skeleton
- d0681ef feat(ui): extend QR scanner hook with lifecycle control and flash API
- c1129ff feat(ui): extract components, utils, and styles from apps/web
- b825c6b feat(ui): improve MulticaIcon animation behavior
- 544425a feat(ui): improve mobile onboarding copy and chat input sizing
- 703c468 feat(ui): improve tool-call-item with status dots, smart subtitles, and accessibility
- 845e503 feat(ui): redesign QR scanner with state machine and mobile sheet
- 8e8a0d5 feat(ui): redesign connect prompt with scan/paste tabs and fullscreen QR
- 86d00bb feat(ui): render AI messages with streaming markdown
- 54b3ebe feat(ui): render error messages with Markdown
- 0a6e930 feat(ui): render thinking content blocks in message list
- b74a5ea feat(ui): replace ChatInput textarea with Tiptap editor
- 8f4e894 feat(ui): show in-chat system message when context compaction occurs
- 4e5c99a feat(ui): show task context for sessions_spawn in chat UI
- 1e6da20 feat(ui): spin MulticaIcon on hover
- 54d84ab feat(ui): unify font loading and add design system documentation
- e8012a5 feat(ui): use default font size for messages and larger send button
- 40fb94e feat(utils): add SMC_DATA_DIR env var to override root data directory
- 242be23 feat(utils): unify encrypted Device ID across all platforms
- 9bd1c14 feat(web): Linear-inspired sidebar with floating panel layout
- 3ef7d53 feat(web): add @multica/sdk dependency and URL config module
- 27c3ba5 feat(web): add Accept: text/markdown header for Cloudflare Markdown for Agents
- 1ec6221 feat(web): add Chat page component placeholder
- 7cb9788 feat(web): add ChatPage with DevicePairing and ChatView
- a3b82fb feat(web): add Knowledge Base page placeholder
- ba1a90c feat(web): add PWA support for installability and offline fallback
- 2a1e5f0 feat(web): add SidebarTrigger to Chat header
- ae86bba feat(web): add client-side auth with session storage and route protection
- f0c9c43 feat(web): add desktop callback API route
- f5c5208 feat(web): add drag-and-drop to kanban board
- c5bf562 feat(web): add gateway, hub, active-agent hooks and real message state
- 108cf7f feat(web): add login page for desktop auth callback
- 1e18a80 feat(web): add mock data for Knowledge Base documents
- cbb1712 feat(web): add multi-workspace switching and creation UI
- 7d32669 feat(web): add scroll fade hint effect to chat message list
- 3f522bc feat(web): add shared mock data for issues
- 4036463 feat(web): add sidebar layout
- 178d715 feat(web): add useGatewayConnection and useChat hooks
- 0afff49 feat(web): enhance issue detail page with comment editing, deletion, and real-time updates
- da7a45e feat(web): implement Issue detail page with properties and activity
- e4ea4ab feat(web): implement Issues page with board and list views
- 9b1e753 feat(web): implement Knowledge Base two-column UI
- c0348fd feat(web): implement two-column Agents page with mock data
- 57b399b feat(web): implement two-column Inbox UI with mock data
- 78f4d88 feat(web): integrate frontend with live API and add auth context
- db9d7ab feat(web): replace default Next.js branding with Multica icon
- e7521b4 feat(web): replace sidebar with connection code flow
- d04952d feat(web): restore agent ID copy button in chat header
- cdd146e feat(web): restore device ID display and copy button in chat header
- 0975510 feat(web): show full deviceId with copy button and toast feedback
- 5319991 feat(web): wire Hub sidebar, real chat messaging, and layout integration
- 92a1374 feat(web-search): replace HMAC signing with auth headers
- 680668f feat(workspace): add context field for AI agent background info
- 9127e54 feat: add event bus, WS workspace isolation, and global store migration
- 21312ab feat: chat input padding
- d4f5c5b feat: pivot to AI-native task management platform (#232)
- 02df338 feat: structured skills system with meta skill runtime injection
- 9c52dc0 fix(agent): 3-layer defense against context window overflow
- de928cf fix(agent): add NO_REPLY detection utility for filtering silent replies
- b820129 fix(agent): add OpenRouter provider support and guard against unknown models
- a098a78 fix(agent): add getMessages method and fix TypeScript errors
- 1cd778b fix(agent): add task minLength validation, remove unused parentSessionId
- 0d9b687 fix(agent): address code review feedback
- 8f9dcbf fix(agent): address compaction feedback review findings
- 30f2345 fix(agent): align subagent lifecycle with openclaw
- f649792 fix(agent): allow output reinit
- 9fe6b92 fix(agent): always provide getApiKey callback and emit error events
- bfab8d9 fix(agent): auto-recover from persistent 400 format errors by reloading session
- aada291 fix(agent): clear timeout timer in delegate tool to prevent unhandled rejection
- f0a359b fix(agent): emit compaction events only when compacted
- 7eb18f4 fix(agent): enforce capability-gap skill recovery guidance
- b5b65c6 fix(agent): enforce cross-turn web fetch evidence
- 64d8427 fix(agent): enforce data-web evidence fusion
- 850d553 fix(agent): enforce sufficient search-fetch evidence
- ce6291e fix(agent): enforce web_fetch after successful web_search
- 8d6a803 fix(agent): filter heartbeat ACK messages from desktop event stream
- 96cfdc2 fix(agent): fix data races, add tests, and fix raw protocol detection
- f733f0b fix(agent): fix system prompt reload and tool casing issues
- 4b7f0af fix(agent): guard workaround and local skill mutation commands
- 9ed4cdf fix(agent): handle auth profile failures and provider mismatch
- 667f3e5 fix(agent): improve time awareness with timestamped turns
- b13d40c fix(agent): increase token estimation safety margins
- e1eaa73 fix(agent): infer run-log tool errors from payload
- f585882 fix(agent): keep skills prompt without profile
- e8815db fix(agent): loop-based rotation, timeout rotatable, error classification tests
- 7294e76 fix(agent): only emit agent_error for auth issues, not runtime 400 errors
- d162ba9 fix(agent): pass sessionId to tools for sub-agent session tracking
- 15f6604 fix(agent): persist provider selection across restarts
- 71f95d0 fix(agent): prevent double-save of assistant message on abort
- f7267f6 fix(agent): prevent internal run leaks in async streams
- 99473af fix(agent): prevent memory leak and buffer overflow in process tool
- e13bc30 fix(agent): propagate session write errors
- 99167b9 fix(agent): re-validate tool pairing after preflight compaction
- 24df8b0 fix(agent): reload credentials dynamically
- 47cbf60 fix(agent): reload tools after setProvider to fix stale closure
- 239dc5a fix(agent): report accurate compaction metrics and add run-log observability
- 4112d45 fix(agent): resolve TypeScript errors with exactOptionalPropertyTypes
- 5716932 fix(agent): resolve merge conflict in runner.ts for credentials reload
- 8fe2b5f fix(agent): resolve reasoningMode from profile config and session meta
- 918b5d2 fix(agent): resolve stream race condition and add lifecycle tests
- d627fb4 fix(agent): retry writeInternal once on transient LLM errors
- cbb13b2 fix(agent): return collected output when exec auto-backgrounds
- e2d4803 fix(agent): sanitize invalid tool call ids in context
- 2fa8c38 fix(agent): save original provider ID instead of alias in session meta
- a8e7a80 fix(agent): separate display content from agent user turns
- 32dd627 fix(agent): soften tool errors
- 033ff87 fix(agent): strip toolCalls from aborted/error assistant messages in transcript repair
- 6fd4819 fix(agent): surface installed skill ids in prompt
- d509044 fix(agent): use user message content type for displayContent
- 8d32a06 fix(agent): validate API key before calling PiAgentCore.prompt()
- 75fac3a fix(auth): fallback to dev auth.json for E2E tests
- a8c5042 fix(auth-profiles): add file locking, type priority sort, credential filtering
- a065d5f fix(auth-profiles): add jittered cooldowns
- 2a96fc9 fix(autocomplete): Tab completes selected suggestion to input
- 452ba8b fix(autocomplete): improve terminal compatibility and CJK support
- b897719 fix(benchmark): support long-horizon timeout control
- 614d2cf fix(channels): address code review issues
- 43d11a6 fix(channels): address code review issues
- 287e6d5 fix(channels): catch telegram bot polling errors gracefully
- f9d1e5c fix(channels): correct reply routing and ack lifecycle for rapid-fire messages
- 96f83c0 fix(channels): suppress heartbeat ack in outbound replies
- 06c5792 fix(chat): stabilize multi-session sync and tool flow
- 30e9041 fix(chunker): add table awareness and increase Telegram chunk limit
- 6b6e8ac fix(ci): provision postgres for backend tests
- 642b674 fix(ci): resolve runner parse break and desktop lint warning
- 1a85cc1 fix(ci): use pnpm --filter for lint instead of turbo
- 3293607 fix(cli): address code review findings
- 7eb36a4 fix(cli): filter pnpm standalone -- arg and simplify dev scripts
- 3435864 fix(cli): handle terminal line wrapping in autocomplete input
- 8b660e5 fix(cli): use @multica/core imports instead of relative paths
- fbb0b11 fix(compaction): fix system prompt token estimation and reduce safety margin
- 0bce493 fix(compaction): handle pi-agent-core toolResult format in truncation and pruning
- 58f02a2 fix(compaction): match artifact refs from both soft trim and truncation markers
- d7e85d0 fix(compaction): prevent double-counting in split-turn detection
- 40a2e8a fix(context-window): prioritize config over model for context window resolution
- ef8b388 fix(core): check for "toolCall" type in hasToolUse() to match pi-ai types
- c24ac8a fix(core): fix OpenRouter model resolution and add fallback for custom models
- 882e34c fix(core): preserve context-specific auth error messages
- d80e976 fix(core): read data tool API key from credentials.json5
- afe51d3 fix(core): rebuild system prompt after provider switch
- 1c24dd2 fix(credentials): add fallback to ~/.super-multica for custom data dirs
- b5eca45 fix(cron): clarify agent-turn can use all tools in description
- ab85a01 fix(cron): improve action parameter description for better model understanding
- 2129fea fix(cron): replace require("fs") with ESM renameSync import
- 828b75c fix(daemon): resolve codex app-server deadlock after turn completion
- 357bf32 fix(data): propagate errors so is_error is set correctly in run-log
- a939495 fix(data): remove broken finance actions (get_price_snapshot, get_prices, get_financial_metrics_snapshot)
- 0b83a7c fix(desktop): add 'registered' to ConnectionState type
- 0421efb fix(desktop): add compaction event types to LocalChatEvent
- 4983deb fix(desktop): add cron API type to ElectronAPI interface
- 2b3baa2 fix(desktop): add missing handleRefresh dependency to useEffect
- a61e294 fix(desktop): add overflow-y scroll to provider dropdown
- c0db46e fix(desktop): add required metadata for Linux deb build
- 71cc8ae fix(desktop): add sessions_spawn to tool groups
- c604085 fix(desktop): address review issues in device verification flow
- fedb8fb fix(desktop): align onboarding step labels with content
- e9c91cc fix(desktop): allow selecting configured providers in setup step
- 7af2a0d fix(desktop): auto-approve Telegram connection during onboarding
- 1e51745 fix(desktop): center onboarding step indicator using absolute positioning
- 7af64a1 fix(desktop): clear forceOnboarding flag on onboarding completion
- 8dfd4bc fix(desktop): enable window dragging on login page
- 5c7d913 fix(desktop): externalize grammy in Vite Electron build
- 5c5bf46 fix(desktop): fix Try It step UI overflow and missing chat input
- 2cf1351 fix(desktop): fix lint errors and relax unused-vars rule
- 9240e31 fix(desktop): improve Try It right panel visual separation
- fe50519 fix(desktop): keep queued message bar hook order stable
- 3c1fa3f fix(desktop): keep queued messages blocked during toolUse phases
- 9f95566 fix(desktop): make login and onboarding windows draggable on macOS
- e081201 fix(desktop): only show active provider when actually available
- 54e2ac4 fix(desktop): open external links in system browser
- 298299d fix(desktop): persist chat state across tab navigation
- aa3ebeb fix(desktop): point auto-update to correct repository
- 229a709 fix(desktop): prevent black screen when closing fullscreen window on macOS
- 0d11318 fix(desktop): prevent duplicate welcome toast on login
- d641c1a fix(desktop): prevent electron-builder auto-publish in CI
- 0b50400 fix(desktop): read error body instead of statusText for gateway errors
- c50bdd0 fix(desktop): reduce tray icon size to match menu bar conventions
- eee6cf1 fix(desktop): refresh qr every 30s
- e99600c fix(desktop): register ChatPage element in router
- 02838bb fix(desktop): remove heartbeat section from home page
- db69e0d fix(desktop): remove unsupported asChild prop from AlertDialogDescription
- ff73959 fix(desktop): remove unused availableProviders destructuring
- 2746517 fix(desktop): remove unused saving state in profile page
- 240f25b fix(desktop): remove unused setupDeviceConfirmation import
- 0c4f879 fix(desktop): require active provider before Continue in setup step
- 60e71ce fix(desktop): require successful Telegram connection before Continue
- f5a0d98 fix(desktop): resolve TypeScript build errors
- 669cbc7 fix(desktop): resolve eslint exhaustive-deps warnings in useLocalChat
- eb274d5 fix(desktop): resolve lint warnings for react-refresh and unused import
- a5901b7 fix(desktop): restore remove action in collapsed queue
- 2269677 fix(desktop): restructure to standard electron-vite layout for HMR
- 68e2628 fix(desktop): store encrypted Device ID directly (40 hex chars)
- e93e095 fix(desktop): suppress react-refresh lint warning for useTheme hook
- 2c9d193 fix(desktop): update branding and fix code signing for development
- c412e44 fix(desktop): update use-local-chat to use ContentBlock[] instead of string
- ef32078 fix(desktop): use RENDERER_VITE_API_URL for renderer API host
- 5e03b4d fix(desktop): use asterisk tray icon and show-only menu
- f9b193d fix(desktop): use default import for electron-updater CJS module
- 304c6a9 fix(desktop): wait for channel status to settle before returning
- c928503 fix(e2e): use .first() for create issue assertion to avoid strict mode violation
- 6ecdbc5 fix(exec-approval): treat expiresAtMs=-1 as non-expiring
- 4a7a980 fix(frontend): apply code review fixes across store and UI
- 25629f9 fix(gateway): add build stage for workspace packages in Dockerfile
- 24b70e6 fix(gateway): add in-memory fallback for TelegramUserStore when no database
- fe7c772 fix(gateway): add process-level error handlers and graceful shutdown
- a7629db fix(gateway): enable CORS for HTTP endpoints
- d9ba793 fix(gateway): extract content from payload in received messages
- 5f2cc06 fix(gateway): fix Dockerfile build and copy static assets
- 483f4a2 fix(gateway): graceful degradation when MySQL is unavailable
- 01f64ff fix(gateway): include workspace packages in Docker build
- 0887503 fix(gateway): persist Telegram users to JSON file when no database
- 4d339ab fix(gateway): preserve telegram reply context ordering
- cf94bc3 fix(gateway): relax rpc param generic for typed sdk payloads
- d6393c6 fix(gateway): remove cleanupPendingRequests that rejects all concurrent users
- 899a3d1 fix(gateway): rewrite Dockerfile to match current source layout
- 604d74d fix(gateway): route messages to virtual devices in handleSend()
- 0f8db70 fix(gateway): serve PWA client under /client subpath
- 7775ba5 fix(gateway): stack target fields vertically for mobile
- 31f38bb fix(gateway): update Dockerfile pnpm version and add pnpm-workspace.yaml
- 5ba8c87 fix(gateway): use esbuild to bundle workspace packages in Docker
- 19fed71 fix(heartbeat): bypass empty-file check for cron-triggered wakes
- b9d9ae9 fix(heartbeat): keep manual trigger runs out of chat stream
- c49ab1f fix(heartbeat): use internal run to hide heartbeat from chat history
- 56ebe61 fix(hooks): handle agent_error events in useGatewayChat
- 5ccf7bd fix(hooks): persist verified main conversation identity
- efb1495 fix(hub): fence close must reject info strings per CommonMark spec
- abc48e5 fix(hub): honor exec approval timeout fallback
- f6fab68 fix(hub): include message_end text in aggregator
- 6bd068a fix(hub): init subagent registry on startup and cleanup on shutdown
- 0c6cdb0 fix(hub): initialize channelManager before restoreAgents
- ef9b5af fix(hub): send error response to unverified device instead of silent drop
- 1a9e915 fix(hub): skip text processing after MessageAggregator reset
- 9f2a1c2 fix(hub): suppress heartbeat ack messages in streamed chat
- 8406a1f fix(hub): use sessionId instead of profileId for exec approval routing
- 2c02aa3 fix(issues): board polish — blocked column, drag fix, comment perms, task cleanup
- 1bd25c5 fix(media): don't cache whisper binary detection failure
- 424a330 fix(memory): fix TypeScript discriminated union narrowing
- 22536fd fix(memory): handle exactOptionalPropertyTypes for optional fields
- 16c325c fix(oauth): don't expire OAuth credentials that have refresh_token
- a7f1c56 fix(profile): resolve exactOptionalPropertyTypes type error in updateStyle
- eeabe0d fix(profile-setup): add agent identity questions to setup wizard
- 13fbeaf fix(providers): use dedicated openai-codex provider instead of aliasing to openai
- 22f1005 fix(release): add test step, fix checkout version, improve brew formula
- 872d2d1 fix(release): match Go version to go.mod (1.26)
- 2d53afe fix(release): remove before hook that fails in CI
- 4c4f6c4 fix(release): use brews instead of homebrew_casks for CLI formula
- 1819f41 fix(sdk): add AgentErrorEvent to StreamPayload type
- 441c205 fix(sdk): point exports to source and remove .js import suffixes
- d5b31ee fix(sdk,store): align frontend streaming protocol with new AgentEvent format
- de0a983 fix(server): remove debug logging and add error handling from review
- e23462d fix(session): add error logging and remove TOCTOU in ensureSessionDir
- 71e44be fix(session): add explicit return type to maybeCompact method
- d2827ae fix(session): add pruning to SessionEntry reason type
- fa2616c fix(session): drop duplicate assistant messages in transcript repair
- 2ec25cb fix(session): flush session writes before subagent result delivery
- 3039e3b fix(session): handle transient ENOENT in session directory creation
- f2ca86a fix(session): harden write lock and repair
- d90edea fix(skills): call initializeManagedSkills in loadAllSkills
- 845bcea fix(skills): enforce mandatory web search in earnings analysis
- a4b7dea fix(skills): preserve all user files during bundled skill upgrades
- 6c90fbf fix(skills): restore bundled skill documentation
- da3bb25 fix(skills): support nested skill directories and managed skills
- b394b0c fix(skills): use python3 and inject skill directory path into prompt
- b6d7626 fix(store): use string prefix + URLSearchParams for connection URL parsing
- 37ec8ff fix(streaming): use per-message stream ids and oauth resolver
- 12075b9 fix(subagent): capture latest non-empty findings from child runs
- a3f5a21 fix(subagent): clear run records immediately after successful announcement
- 9687e7f fix(subagent): forward announce replies from internal runs
- af3a42a fix(subagent): forward announcement summary to UI stream
- 4d6017e fix(subagent): forward assistant stream events for internal announce
- 121b644 fix(subagent): inherit parent provider in spawned subagents
- a3acd73 fix(subagent): persist LLM summary after internal announce to parent context
- 7726079 fix(subagent): recover delete cleanup after crash
- a50239a fix(subagent): require coalesced announce to include all findings
- 6284ffd fix(telegram): drop and recreate telegram_users table for schema change
- d157069 fix(telegram): fix tool narration detection and typing indicator during tool execution
- 5741402 fix(telegram): handle 409 polling conflict and add global error boundary
- 81998e6 fix(telegram): skip tool narration messages, only send final answer
- 4c1365f fix(telegram): strip existing bold markers in table conversion to prevent overlapping HTML tags
- a94b6e8 fix(telegram): use DeviceMeta interface for verify RPC meta parameter
- 0a5dd06 fix(test): add sleep after WS connect for Hub register timing
- a5a5feb fix(test): events.NewBus → events.New (correct function name)
- a5aedf5 fix(test): gracefully skip DB tests when database is unreachable
- 9c8be30 fix(test): increase timeout for summary fallback artifact extraction test
- ae6abc2 fix(test): pass JWT token and workspace_id in WS integration test
- 97fa091 fix(test): register event bus listeners in integration test setup
- fb709ff fix(test): remove skills column from integration test fixtures
- cd3f4ec fix(test): update issues page tests for global store architecture
- fc3dc39 fix(test): update tests for event bus + room-based Hub signatures
- 77141cf fix(test): use correct var name testToken (not testAuthToken)
- 691e33e fix(tools): auto-create group when custom groupId is provided
- c24fafa fix(tools): prevent AbortSignal listener leak in exec and process tools
- 7d04253 fix(tools): replace replaceAll with replace for ES2020 compatibility
- e44861b fix(tools): resolve exactOptionalPropertyTypes errors
- c012bff fix(tools): show findings and full runId in sessions_list list view
- 02ed09b fix(tools): use boolean error flag in web_fetch and web_search error responses
- 1592e0c fix(types): add undefined to optional properties for exactOptionalPropertyTypes
- ea7f537 fix(ui): add missing tw-animate-css and shadcn dependencies
- 8018290 fix(ui): add semantic colors to sonner toast icons
- 6a02fd2 fix(ui): adjust chat input padding, icon, and button size
- 24c3af1 fix(ui): handle possibly undefined values in strict mode
- b718b95 fix(ui): improve chat input scroll behavior
- bcaf144 fix(ui): improve disabled state cursor and no-agent empty state
- 0c5de3c fix(ui): preserve newlines in chat input multiline text
- 7e5bc7b fix(ui): prevent chat submit during IME composition
- d96bdb0 fix(ui): prevent empty div flicker between tool transitions
- 348b12b fix(ui): prevent long unbreakable strings from overflowing markdown
- 57805cd fix(ui): remove Cmd+B sidebar toggle shortcut
- 905e8c8 fix(ui): remove Shiki span background-color causing unwanted highlights
- 374ce68 fix(ui): remove math plugins and disable single-tilde strikethrough
- 1f7951d fix(ui): render tool calls immediately from assistant toolCall blocks
- 5e174b8 fix(ui): responsive horizontal padding on message list
- 058af56 fix(ui): show generating indicator while agent is processing (#191)
- 3190be6 fix(ui): soften HubSidebar styling and improve UX
- ec67dd6 fix(ui): strip channel metadata prefixes from user messages in display
- 573d803 fix(ui): update component styles for Tailwind v4 compatibility
- 3b1bc5a fix(ui): use data-active: syntax and add text color for active agent item
- da5565a fix(ui): wrap agent ID in span for CSS truncate ellipsis
- 8fcc14c fix(web): add API_URL to turbo.json globalEnv
- 0629eb9 fix(web): add missing linkify-it dependency and types
- bf7ea14 fix(web): add missing markdown dependencies (react-markdown, rehype-raw, remark-gfm, shiki)
- 618be9c fix(web): add overflow-hidden to SidebarInset for rounded corners
- c4a7cf9 fix(web): allow clearing workspace description and context fields
- 0956277 fix(web): avoid setState in useEffect in AuthGuard
- fd3694c fix(web): center issue content and make width responsive
- 276e9a5 fix(web): defer MULTICA_API_URL check to runtime in next.config
- 683182e fix(web): fix login page prerender error
- 1ba0fb0 fix(web): fix stale state bugs, add real-time updates, and build verification pipeline
- 9af889a fix(web): import toast from @multica/ui instead of bare sonner
- 78543d7 fix(web): remove API proxy, use direct backend requests
- 003bde4 fix(web): remove auth guard from home page
- 86a8c91 fix(web): remove max-width constraint on assistant messages
- f5c6f05 fix(web): replace PWA icons with full-bleed versions to fix iOS white border
- 5f367fb fix(web): replace Zustand device store with local useDeviceId hook
- 18cd938 fix(web): resolve TypeScript errors in test mocks and knowledge-base page
- 2d83c91 fix(web): split maskable icon into separate entries for type safety
- 047de2b fix(web): suppress deviceId hydration mismatch warning
- 7b581b4 fix(web): update Google OAuth Client ID
- 616f026 fix(web): update pair/local test mocks for new store imports
- 20f5022 fix(web): wrap search params pages in suspense
- 52a8b5a fix(web-search): use correct model name based on Perplexity API key type
- 0ea9c38 fix(workspace): permission enforcement, invite auto-create, switch clears stores
- 4502570 fix: add missing comma in package.json
- 42aef6e fix: address review issues in skills system
- 1a1c3ec fix: auto-load .env via --env-file flag in all tsx scripts
- 8704e37 fix: clarify dev gateway is hardcoded in root package.json
- 0c52b89 fix: code review — WS sync bug, Hub race condition, error feedback
- 6becd79 fix: remove accidentally committed ~/.super-multica config
- c0b248e fix: remove hardcoded URLs, reference config files instead
- ad06679 fix: simplify - just say pnpm dev works directly
- 428c6b5 fix: typecheck depends on build for type declarations
- b310b57 merge: integrate origin/main into feat/onboarding-check
- e0f80b0 merge: resolve conflict with main (keep both auth and subagents handlers)
- ece00ca merge: resolve conflict with main (lucide-react migration)
- 6a21a51 merge: resolve conflict with main branch
- 7faf421 merge: resolve conflict with main branch (build scripts)
- 06122df merge: resolve conflicts with main (skills feature)
- dafbf85 merge: resolve conflicts with main branch
- 83e1210 merge: resolve conflicts with main, keep pi-ai types + add extractThinkingFromEvent
- c3ded8d merge: resolve conflicts with origin/main
- 5c583cc polish(ui): inline editing, skeleton loading, toast feedback, empty states
- 8333615 refactor(agent): integrate system prompt builder into profile, runner, and subagent
- 5cccb06 refactor(agent): keep finance tool decisions internal
- c5db9bf refactor(agent): make finance web usage dynamic
- cb2dfd2 refactor(agent): move workspace to ~/Documents/Multica
- 24435cd refactor(agent): remove hasWebTools conditional in data section
- 0330b8b refactor(agent): remove keyword-based finance decisioner
- 0f5bd5f refactor(agent): remove legacy memory subsystem
- 0d1f48c refactor(agent): rename env vars to LLM_PROVIDER and provider-specific MODEL
- da80ba1 refactor(agent): simplify AsyncAgent to use result.text instead of stream interception
- 5fdae53 refactor(agent): split runner, tools, output, types
- 218e6da refactor(apps): adopt conversation-first IPC and API surfaces
- 972c887 refactor(apps): simplify layout components to pure navigation shells
- 617ddfb refactor(auth-profiles): replace proper-lockfile with custom file lock
- dee70ea refactor(channels): bind route keys to isolated conversations
- 3123506 refactor(channels): persist route bindings across restarts
- 112ae6c refactor(channels): read config from credentials.json5 instead of separate file
- 9bb1fd6 refactor(channels): rewrite ChannelManager with lastRoute pattern
- 716bbce refactor(chat, hooks): simplify handleSend and update useDeviceId to use useSyncExternalStore
- a3e639f refactor(cli): make desktop app the default dev target
- 5285092 refactor(cli): unify CLI with multica command and subcommands
- 707b5ac refactor(cli): unify daemon into multica-cli binary with cobra subcommands
- 8e245e7 refactor(clients): adopt conversation rpc with legacy fallback
- b412ca9 refactor(compaction): remove dead code and legacy count mode
- 92cf312 refactor(compaction): remove pre-flight tool result pruning
- 37e5502 refactor(core): add baseDir DI and test helpers for mock-free testing
- b8aa5ad refactor(core): convert MULTICA_API_URL constant to getApiBaseUrl() function
- 909efb5 refactor(core): remove legacy subagent registry subsystem
- 5af7aa7 refactor(core-hub): remove legacy agent RPC and fallback routing
- e622b8c refactor(core-sdk): enforce conversation-only client protocol
- bd0b380 refactor(credentials): remove skills.env.json5 support
- 9bd1847 refactor(cron): align tool schema with OpenClaw patterns
- f2228e4 refactor(daemon): rename DefaultWorkdir to ReposRoot for clarity
- b5313b6 refactor(desktop): add container wrapper to page layouts
- 3fd6e10 refactor(desktop): add silent option to provider store and improve devices
- db0f8b3 refactor(desktop): drop legacy subagent dashboard wiring
- 4cb8b93 refactor(desktop): hide manual Telegram bot creation, use official Gateway bot only
- 8efc4ae refactor(desktop): improve clients page and QR code component architecture
- fc77cb8 refactor(desktop): migrate provider state to zustand store
- 6ea6c9f refactor(desktop): migrate to zustand stores and remove hook layer
- bbf91a9 refactor(desktop): redesign layout with sidebar navigation
- 1dc7539 refactor(desktop): remove Profile ID display from home page
- ab65f4c refactor(desktop): replace OpenRouter model dropdown with text input
- bc9b7d6 refactor(desktop): restructure pages and consolidate UI components
- 22bd392 refactor(desktop): reuse shared ChatView, DevicePairing, and hooks in chat page
- f3c5068 refactor(desktop): simplify onboarding routing structure
- 2c28c4c refactor(dev): share postgres across main and worktrees
- eef26d8 refactor(frontend): complete migration of all hooks and components to packages
- 63861d0 refactor(frontend): extract shared stores and components into packages
- 150c87a refactor(frontend): replace HTTP API with pure WebSocket RPC
- 0e54c41 refactor(gateway): isolate telegram session routing by chat thread
- 38181ab refactor(gateway): remove group chat support from Telegram bot
- 7a21686 refactor(hooks,ui): extract useGatewayChat hook and update shared components
- 3c85691 refactor(hub): add conversation-first rpc aliases
- b7b3d32 refactor(hub): decouple agent and conversation runtime model
- a0bb88e refactor(hub): enforce conversation-scoped device authorization
- f63a67e refactor(hub): improve device whitelist persistence format
- fc0c178 refactor(hub): remove Hub-level aggregation integration
- eb4ce85 refactor(hub): rename Device ID to Hub ID in console layer
- 49540e6 refactor(hub): replace mock Agent with AsyncAgent
- da11e65 refactor(oauth): rename credentials/ to oauth/ for clarity
- 5cdc697 refactor(profile): implement progressive disclosure for profile loading
- 22e225c refactor(profile): remove Communication Style UI and programmatic API
- e571bd5 refactor(profile): remove tools.md template
- e7f8475 refactor(profile): simplify profile structure by removing identity and bootstrap
- 34bfc81 refactor(profile-setup): simplify setup to focus on agent identity and user info
- 7547e56 refactor(prompt): simplify profile and memory sections
- 79e1dc0 refactor(prompt): update profile and memory sections
- 754e604 refactor(protocol): add conversationId compatibility across hub/client
- 6969790 refactor(protocol): deprecate legacy agentId conversation fallback
- 9d1ac00 refactor(protocol): standardize sessionId alias across conversation flows
- 6723aa8 refactor(providers): extract provider management to dedicated module
- 932ecb5 refactor(providers): move oauth/ to providers/oauth/ and simplify model names
- 3b3d2c4 refactor(release): rename multica-cli to multica
- 3d7b135 refactor(sdk): unify gateway-sdk into @multica/sdk package
- ef4e57f refactor(sdk): unify message types with pi-ai source of truth
- cfd46ee refactor(sdk,store): clean up SDK exports and scope tool interruption
- 759dd74 refactor(server): extract inbox creation to bus listeners, add agent visibility filtering
- 4de8994 refactor(session): add agent/conversation hierarchical storage
- 36e9acb refactor(shared): extract DATA_DIR constant to shared/paths.ts
- 66cb3e5 refactor(skill-creator): use direct bash commands instead of Python script
- 7ddf4f7 refactor(skills): add serialization to add/remove/install operations
- 6234ba6 refactor(skills): deduplicate office/ module across docx, xlsx, pptx
- 695d001 refactor(skills): hide technical finance decision block
- 1140f09 refactor(skills): merge check_fillable_fields into extract_form_field_info
- 8848f09 refactor(skills): remove hardcoded API key hints, use dynamic web search
- 7a92f71 refactor(skills): remove unused SkillConfig.apiKey/env/primaryEnv (#192)
- dafe108 refactor(skills): simplify loading to managed + profile sources
- 162a86d refactor(store): consolidate 3 stores into ConnectionStore + MessagesStore
- 5275bc5 refactor(store): migrate device-id hook to @multica/store
- 97fce5b refactor(store): migrate messages hook to Zustand store
- e491949 refactor(store): remove @multica/fetch dependency
- 6b9e5d5 refactor(subagent): improve system prompt with anti-hallucination and group guidance
- 1547da3 refactor(telegram): remove auto table creation, add SQL script for ops
- 51ba86a refactor(tools): clean up web search naming and remove dead code
- 12a4677 refactor(tools): integrate policy filtering into resolveTools
- 1e1fa41 refactor(tools): remove KV memory tools in favor of file-based memory
- 087d1a8 refactor(tools): remove tool profile layer from policy system
- 53cffe9 refactor(tools): use shared api-client for auth headers
- 056b9ab refactor(ui): deduplicate device-pairing with StatusWrapper and PairingHeader
- 01790a5 refactor(ui): extract AppSidebar into shared UI component
- 430f2c1 refactor(ui): move LoadingIndicator into MessageList
- a088875 refactor(ui): move theme toggle from Chat to web app layout
- dacbfa9 refactor(ui): purify Chat component and move header to app layouts
- 6add5fc refactor(ui): remove sidebar, integrate connection flow into Chat
- eb5c388 refactor(ui): reorganize components into ui/ subdirectory and share layout
- f1244f4 refactor(ui): replace absolute-positioned delete with flex layout in HubSidebar
- b896ac4 refactor(ui): self-contain Loading/Spinner styles and clarify usage semantics
- 62267aa refactor(ui): split Chat into focused components with skeleton loading
- 78e34a1 refactor(ui): unify agent item hover to full row
- c6ca5f3 refactor(ui): unify container layout and adjust spacing
- deb747a refactor(ui): unify loading indicator component
- a2cabb5 refactor(ui): unify login page styling across web and desktop
- 53c350e refactor(ui,hooks): extract shared ChatView and DevicePairing to packages
- bece8f0 refactor(web): adapt chat page for extracted shared hooks
- 6185b75 refactor(web): extract shared components, add tab system, and restructure issues page
- e364351 refactor(web): move sidebar layout shell to layout.tsx
- 44c3cec refactor(web): polish Issue detail page to match Linear design
- 8fd1492 refactor(web): polish Issues page UI to match Linear design
- ce95f73 refactor(web): redesign Activity section and comment input
- b1140e9 refactor(web): redesign Issue detail page to closely match Linear
- cb28fbe refactor(web): remove agent ID copy button from chat header
- ada5687 refactor(web): remove frontend mock data, extract issue config
- 31c8b1b refactor(web): replace devd proxy with Next.js rewrites
- a8e18cc refactor(web): replace raw HTML with shadcn components on login page
- a2d7501 refactor(web): restructure to feature-based architecture with zustand stores
- 66e9913 refactor(web): self-contained shadcn UI with base-nova style and design tokens
- 8f4680c refactor(web): unify design system with shadcn components and semantic tokens
- 403c44f refactor(web): unify hub + agent state into single Zustand store
- 5c240ab refactor(web): update imports to use @multica/ui package
- 931ca53 refactor(web): update issue config to use icon-based status and bar-based priority
- 6037be2 refactor: migrate from Hugeicons to Lucide icons
- 66b1def refactor: migrate stores to features/, remove dead packages, add modals + workspace sync
- e867688 refactor: remove repository field from issues
- 6ef58a0 refactor: restructure to monorepo architecture
- 4dba1cf refactor: unify API URL env var to MULTICA_API_URL
- 0846578 revert(agent): remove parallel tool execution patch, keep serial
- cedb8f9 revert: undo unintended .gitignore change
- cf3ad1d style(desktop): update capabilities summary wording
- bbf2a16 style(ui): soften dark mode background color
- 18ab2da test(agent): add workspace resolution and initialization tests
- 0385b0e test(agent): convert tool policy test
- 98a447b test(cli): add comprehensive tests for output formatting functions
- b15e1ee test(compaction): harden E2E integration tests for artifact pipeline
- 0f8d032 test(context): add unit tests for context window guard
- 9345128 test(context): add unit tests for token estimation and compaction
- f6b6c29 test(core): migrate 5 tests from internal mocks to real implementations
- 8a2b3e1 test(e2e): add natural Notion gap-discovery benchmark case
- 5040791 test(e2e): add spotify capability-gap ux benchmark case
- 6a778e3 test(hub): cover conversation rpc handlers
- 4a9220b test(memory): add storage layer tests
- 4201095 test(profile): add unit tests for profile storage
- 0fee16f test(session): reset lock mock
- de8ff73 test(skills): add unit tests for parser and eligibility checker
- 5353161 test(skills): add unit tests for skills loader
- 6d0ee87 test(skills): update eligibility tests for new context-based API
- f6360c3 test(ssrf): expand SSRF test coverage
- 7f9a018 test(subagent): add coalescing announcement tests
- ab7c077 test(tools): add policy system unit tests
- 44d0cef test(tools): add unit tests for...