Changelog
- 83f1e04 feat(desktop): settings toggle for opt-in agent metrics (#4034)
- 6b9d367 feat(desktop): opt-in aggregate agent-metrics aggregator + flush (#4033)
- 449b7a6 refactor(ui): keep running read-only tools out of the warm-turn batch (#4032)
- 2656669 fix(ui): batch completed read-only tools into ReadOnlyBatch in compact/minimal mode (#4031)
- 653ab07 feat(crash-worker): add /v1/metrics ingest for opt-in agent metrics (#4030)
- cd4a2bd fix(ui): restrict inverted user bubble style to graphite theme only (#4023)
- 6db97a0 Merge pull request #3983 from whale-fall-ouo/fix/palette-polish
- c85b4a4 fix(desktop): show session-scoped file changes in workspace panel (#4026)
- 2c6092e refactor(evidence): reuse stepTextContains for todo overlap, hoist bounds guard (#4027)
- 0869750 fix(evidence): allow rephrased todos to pass complete_step verification (#4013)
- 6f338e2 fix(chat): clear accumulated shell output on !command re-run (+ regression test) (#4025)
- 83f87c0 fix(desktop): apply pnpm purge guard so post-sync wails dev stops aborting (#4024)
- 0263ee9 fix(openai): round-trip reasoning_content on DeepSeek tool_calls turns (#4022)
- 44541fc fix(desktop): polish palette session metadata
- 3505bd6 feat(bot): IM bot connection workflow (Feishu/WeChat) + desktop UI (#3892)
- 6dee96c fix(agent): close complete_step cross-turn evidence + loop gaps (#4014)
- 4924d9f fix(chat): render correct line count under each parallel bash marker (#4010)
- 5a487a5 fix(config): honor default_model in ResolveModelWithFallback (#3994)
- 0250cbc fix(evidence): tolerate citation drift when matching complete_step to todos (#4006)
- 40b1f94 fix: Improve desktop context status metrics (#3996)
- c0fa845 fix(desktop): 命令面板命令区域改为横向网格布局
- f528630 fix(desktop): compact-mode step fold follow-ups (centering, empty folds, 0s label, thinking flicker) (#4000)
- 6bc71a8 feat(workers): restyle /stats to the site visual language + crash group detail pages (#3997)
- 3583c9a site: footer link to the stats page (#3993)
- 5debb08 Merge pull request #3976 from SivanCola/fix/active-key-prompts
- 6fcb37e feat(ui): unify process/tool/reasoning card style with shimmer sweep animation (#3991)
- c58bcc3 feat(desktop): anonymous launch ping, crash device info, /stats page (#3985)
- d3fbcb6 fix(evidence): stop rejecting real complete_step verifications over command-string drift (#3982)
- f78fa48 fix(desktop): 优化命令面板样式与信息展示
- 8feccbf feat(desktop): user-initiated crash reporting via crash.reasonix.io (#3978)
- b249410 fix(cli): respect auto-plan classifier gate
- 8a8627e fix(cli): prompt only for active model keys
- c5c3093 fix(chat): repaint late-collapsed tool slots immediately (#3973)
- 83fa9fc fix(chat): keep each tool marker under its own card in back-to-back dispatches (#3951)
- 89befd2 fix(desktop): restore palette focus outline and platform-correct search kbd (#3964)
- 3025f5a feat(agent): deterministic tool-result pruning + cache-TTL-aware cold-resume maintenance (#3968)
- 810807a fix(desktop): restore command palette session row layout (#3962)
- 01774d8 fix(desktop): make the macOS tab-strip empty space drag the window (#3963)
- 5bfb10e fix(desktop): stop pinning management modals to a compositor layer (#3961)
- 7fe7167 fix(config): read the pre-mcpServers
mcpstring list from v0.x config.json (#3960) - 734d336 fix(agent): derive previews and auto-titles from the original task in dual-model sessions (#3958)
- adde2d3 fix(provider): stop committing half-streamed tool-call args (#3953) (#3957)
- 5cc7b98 test(desktop): wire attachment-display test into the frontend suite (#3954)
- 6cef84c feat: improve attachment preview cards (#3786)
- cc1023c feat: toggle Developer Tools (Cmd+I) (#3928)
- c2ff2c7 docs: use canonical repo in README badges (#3925)
- 6b37bd5 fix(desktop): preserve selected message copy (#3942)
- 4fbebb3 fix: Ctrl+C in running state copies selection instead of cancelling turn (#3947)
- 31c4207 fix(tui): wrap status line instead of truncating when too long (#3054)
- 2a7d83f fix(codegraph): run the indexer daemon below normal priority (#3948)
- 80fc50d fix(control,cli): survive SSH drops with mid-turn autosave and SIGHUP save (#3943)
- 4e5aabe fix(desktop): surface an error when session actions race controller startup (#3946)
- dc6a1e3 fix(cli): only prompt for API keys the active config references (#3945)
- 2f45fb2 fix(migrate): route legacy v0.x sessions into their workspace session dirs (#3944)
- 316c921 fix(control,desktop): keep steer messages out of the turn count (#3936)
- d4ef0b6 fix(desktop): use DesktopLanguage for i18n slash command descriptions (#3876)
- 74d7b64 fix(desktop): wait for the forked tab before loading its history (#3934)
- 3370467 fix(control): never render compaction fold summaries as user bubbles (#3932)
- f73f04f fix(desktop): stop git.exe console flashes from workspace probes (#3930)
- ef9eae8 fix(desktop): close stuck thinking window after stream interruption (#3746) (#3927)
- 470252b release: move updater + codegraph downloads to dl.reasonix.io (#3926)
- 842aff8 site: serve downloads from dl.reasonix.io, bake contributor avatars into the build (#3923)
- 9cc1d58 feat(desktop): context overview navigation and status bar metrics (#3922)
- 406fd03 fix(fileref): restore fuzzy @file search for nested paths (#3846)
- 98a365d fix: add explicit serial workflow instructions to executor handoff and plan-approved message (#3912)
- c8f2a3b feat(agent): mid-turn steer injection with tab-scoped routing (#3360)
- 559b22c feat(cli): add fuzzy matching to the slash-command completion menu (#3833)
- 206b4c3 feat(desktop): add expand_thinking config toggle (#3303) (#3919)
- 654b621 feat: add session PDF and image export (#3917)
- f7769e4 fix(desktop): surface send failures on the user bubble (#3916)
- 9539c35 fix(desktop): widen model switcher popover for long model names (#3915)
- 9df1e96 site: redesign landing + docs on the new visual language, fix install channel (#3918)
- 4ec533f fix(message): render markdown while streaming assistant output (#3337)
- 6ae1b57 fix(permission): prefer bash command prefix for approval grants (#3815)
- 53eb72c fix: custom provider model list overflow and add /provider command (#3766)
- cd37d14 fix(desktop): extend diff row background on horizontal scroll (#3637)
- 34c7603 fix(desktop): cap model switcher list height to prevent viewport overflow (#3644)
- 8f91f82 fix(katex): convert aligned→align when \tag is present (#3847)
- 040126d Unify mode shortcuts across desktop and CLI (#3885)
- b2189ab fix(desktop): keep composer usable beside workspace / 保持工作区旁输入区可用 (#3886)
- c55dec6 Merge pull request #3888 from esengine/codex/update-check-controls
- 413b583 fix(control): treat slash paths as prompts (#3887)
- 3648d74 Merge pull request #3891 from SivanCola/fix/macos-top-drag-rail
- 1c53b47 fix: ContextPanel token breakdown uses mismatched units (snapshot vs cumulative) (#3854)
- c9198c3 Merge pull request #3894 from SivanCola/fix/anchored-popover-resize-position
- 5d69e27 Fix anchored popover repositioning on resize
- c6ac6ec Fix macOS top drag rail
- 0adba93 Add desktop update check controls
- 5dac1df Merge pull request #3878 from lifu963/pr/issue-3863-workspace-overflow
- f1ac264 Add workspace dock layout regression test
- 0f27608 fix(site): serve from custom domain reasonix.io (#3880)
- ab468d2 chore(desktop): clarify workspace dock behavior
- 717adf6 fix(desktop): keep workspace resize range valid
- 94c31fc fix(desktop): keep workspace dock within viewport
- 924c691 fix(desktop): keep the tray responsive when the webview is wedged (#3862)
- 761e966 fix(desktop): replay pending approval/ask prompts on (re)connect (#3857)
- b318985 Merge pull request #3830 from SivanCola/codex/windows-webview2-blank-window
- a3a6e80 docs: split usage guide out of README, link from a docs index (#3839)
- e63d738 Merge pull request #3784 from SuMuxi66/fix/at-ref-cross-workspace
- 99e1164 fix(desktop): harden windows webview startup
- c23663a fix(agent): tighten workspace-scoped references
- 9424cf2 fix(agent): scope @-references to workspace root instead of process CWD