Changelog
- 71a6645 fix(desktop): use a numeric version for the installer/versioninfo (#2781)
- 053f2b9 fix(desktop): keep the NSIS installer script ASCII (#2780)
- 4755e22 fix(desktop): stamp the release version into the build (#2779)
- 2ad62ff fix(plugin): drain detached MCP stats writers in Host.Close (#2777)
- e438908 feat(desktop): commit explicit Windows installer icon.ico (#2776)
- 45927ce feat(release): npm + Homebrew distribution for the CLI (#2775)
- 01b720d fix(test): make Windows statusline and symlink tests portable (#2772)
- 6b6bdfc fix(desktop): restore full-path hover on workspace tree rows (#2773)
- 5b8d54f feat(agent): gate final-answer readiness (with mutation-driven test coverage) (#2771)
- d4abfa1 fix(desktop): remove redundant tooltips (#2769)
- 7839cdd fix memory quick-add hash prompt handling (#2767)
- b543649 feat(net): exponential-backoff retry with clear error UX (#2765)
- 3277b06 style(config): trim SetLanguage doc comment to one line (#2763)
- fd64aa3 feat(desktop): workspace Add to Chat context + Changed view (#2762)
- c9c16e6 feat(cli): add /language command to switch UI language (#2760)
- 21ac7c0 fix(serve): sidebar resume/compact/model-switch with a race-safe controller swap (#2758)
- 6807b89 refactor(desktop): trim onboarding comments, fix stale timeout note (#2759)
- 686f050 feat(agent): enforce project instruction receipts (#2753)
- 5cdfbe9 feat(desktop): first-run onboarding overlay for default provider API key (#2752)
- 5ba50cc refactor(desktop): drop duplicate session-path validation on delete (#2756)
- da84e11 feat(cli): render LaTeX math as Unicode in chat output (#2757)
- 3c95429 Manage Recent Sessions from the Desktop Sidebar (#2746)
- 9ee4fed fix(serve): cache session titles and match current session on Windows (#2745)
- e98f14d feat(serve): overhaul HTTP SSE sidebar and add session titles (#2742)
- 3141c3a fix(cli): chain into argument menu right after accepting a command (#2744)
- e2f9f66 fix(cli): setup always offers the built-in provider catalog (#2743)
- af1f6a7 fix(desktop): complete the live-stream state so the frontend builds (#2741)
- b343da5 fix(cli): don't OSC-probe the terminal on a runtime /theme auto
- 08e76c3 feat(theme): wire mode and accent themes (#2734)
- 2f6461b fix(cli): setup wizard — fetch /models, dedupe key prompts, stable entry names (#2739)
- 04ee7b5 perf(desktop): stop re-rendering the whole transcript on every streamed token
- 2639389 feat(desktop): autosave the session after each turn
- bc520ac fix(boot): surface why a model is empty instead of failing silently
- 6b35939 fix(windows): stop subprocesses flashing a console window
- 26d348d fix(cli): let Esc cancel a running turn even with the completion menu open (#2733)
- eb6f60b feat(cli): show a live "working · Ns" line under a running tool (#2729)
- 2e16a97 fix(control): don't draft or gate on a plan in bypass/YOLO mode
- 3a8d79c feat(cli): interactive /resume picker with keyboard navigation (#2726)
- b02f353 feat(cli): add theme switching (#2727)
- f92ea80 fix(control): cancel the per-turn context on normal turn completion
- 482d9d4 perf(tools): cache each tool's canonical schema at registration
- 229f3bc perf(tools): stop read_file scanning the whole file for a windowed read
- c9c6ef2 test(bash): widen cancel/kill timing margins to stop load flakes (#2724)
- 33c76cd fix(tools): skip macOS TCC-protected dirs in recursive glob/grep walks (#2723)
- 2c7f7e1 feat: reasoning effort controls (/effort) (#2722)
- 3a9aeca fix(desktop): allow read-only history preview while running (#2711)
- 271dd84 fix(cli): copy via OSC 52 when the platform clipboard tool fails (tmux/SSH) (#2719)
- 3a3f861 fix(jobs): mark a killed job Killed synchronously (#2715)
- c2cbb97 feat(tui): clear composer on single Ctrl+C when input is non-empty (#2712)
- 4903fd2 feat(plugin): tier-based MCP loading with cache-aware lazy placeholders (#2713)
- 23f4220 test: goroutine-leak guard (goleak) + fix the leaks it found (#2709)
- ae49ba8 fix(doctor): surface warnings at the top of the report (#2710)
- c7da554 fix(doctor): report effective sandbox availability, not just mode (#2708)
- 418f1ca fix(desktop): restore reasoning in resumed history (#2705)
- e7bd279 ci: add a -race job and run the prompt-cache prefix guard (#2707)
- a2e0a3e chore: clear staticcheck findings across internal packages (#2706)
- 46ee765 Define a cohesive desktop light and dark theme system (#2636)
- 462e340 Polished Slash Command Views (#2521)
- 50b9907 feat(plugin): persist handshake schema & startup latency to user cache (#2703)
- ae0d890 fix(skill): make relevant inline skills mandatory, keep subagent judgment-based (#2704)
- ac0ec00 feat(proxy): auto-detect the Windows system proxy (IE/PAC/WPAD) (#2702)
- 2160fa6 fix(cli): recall submitted input with arrow keys (#2700)
- 963fe55 feat(plugin): defer prompts/resources to a background phase (#2701)
- 1bc5181 refactor(desktop): share sessionActivityTime helper (#2699)
- 3cd755c fix(desktop): keep session list stable on resume (#2697)
- 757c4aa feat: add configurable network proxy settings (#2690)
- e6833d5 feat(plugin): unify StartAll/StartAvailable with timeout & concurrency cap (#2675)
- 0768c9b refactor(config): share skill-path canonicalization, fold case on Windows (#2698)
- 25ea517 feat(desktop): manage agent skill sources
- c7b119e fix(io): fall back to copy when an atomic-write rename hits a cross-device link (#2696)
- 684e17e style(memory): drop redundant docSeen.add comment (#2695)
- 0806779 fix(memory): deduplicate symlinked memory docs (#2688)
- 062c568 fix(desktop): wire up tool_progress so live bash output doesn't blank the app (#2693)
- 7e2e4ce feat(desktop): surface crashes instead of blanking to a white screen (#2691)
- 862803a fix(bash): suppress the console window for shell commands on Windows (#2686)
- d73df5d perf(tools): stream read_file instead of slurping the whole file
- fa7d154 fix(config): merge [[plugins]] across config files instead of replacing (#2684)
- cfb91d0 refactor(desktop): share the transcript re-pin logic across resize sources (#2676)
- d3a2b86 ci: run the root test matrix on windows-latest (#2674)
- b7bc55e fix(tools): make native grep/glob walks interruptible
- 3d73243 fix(desktop): keep transcript pinned when approval shelf appears (#2670)
- 781916f fix: resolve stdio MCP commands with effective PATH (#2665)
- 42c7c7f fix(cli): expand tabs and fix header detection in diff/stream rows
- 6f0a631 chore(desktop): drop approval i18n keys orphaned by the shelf refactor (#2669)
- 1a5d6a4 fix(desktop): repair module build and add CI coverage (#2668)
- d35199f fix(desktop): compact approval shelf (#2663)
- f1f4406 perf(cli): coalesce buffered agent events into one re-render
- 4e9b893 fix(doctor): redact the home directory from report paths
- 52249d9 feat(cli): add doctor diagnostics command (#2631)
- b1a7c04 perf(cli): bound live reasoning to a trailing view
- 4e6d8fc feat(grep): complete .gitignore parity — nested negation + core.excludesFile
- 71b5b4c test(bash): regression test that cancel interrupts a running command
- 100cd82 perf(cli): bound bash live-output to a tail, not the whole stream
- 3bf6a61 feat(deepseek): support thinking effort controlsFeat/deepseek thinking effort (#2648)
- 27b0d4f feat(grep): match ripgrep — nested .gitignore + skip hidden files
- e91cfd6 fix(desktop): tighten IME confirm-Enter grace to 100ms
- c01ce22 fix(desktop): don't submit on IME confirm Enter (#2632)
- 44e84ec feat(grep): native search honors .gitignore
- e41e1b4 test(builtin): make GBK round-trip test self-contained (#2655)
- 650bec6 feat: restore GBK/GB18030 file encoding support (#2637) (#2645)
- a4ce28c feat(bash): interruptible runs with live streamed output
- 496c03d feat(cli): tie streamed thinking to a ⎿ connector
- 30ce0b7 feat(grep): optional ripgrep engine for the search tool
- 0dfcc7d feat(bash): richer PowerShell guidance, steer to native tools
- f744c55 feat(cli): Claude-style tool cards, diff view, and live reasoning
- dde7b9c feat(attach): drag/paste files as @refs, inline deletable image tokens
- 543717d chore(desktop): tighten jumpTo comment to the load-bearing why (#2641)
- 9741597 feat(desktop): refine memory drawer management (#2635)
- 0a0231d chore(desktop): drop dead PastedBlock.lines field and demo gif (#2638)
- 7698782 chore(desktop): drop committed workspace layout demo gif (#2639)
- 46060e4 chore(desktop): drop dead MCP group-title strings and CSS (#2640)
- 350f49e fix(desktop): improve pasted text composer preview (#2633)
- aff4a45 Refine desktop workspace panel layout (#2629)
- 8366eda feat(desktop): improve MCP drawer details and skill metadata badges (#2634)
- fd18a96 fix(evidence): bind complete_step receipts to the signed todo identity (#2604)
- b7e7f11 fix(control): harden interface boundaries against typed-nil panics (#2607)
- 2a0d6da fix(agent): load sessions with a >4MiB message instead of failing to resume
- cdd078a feat(desktop): dock regular tool approvals above the composer (#2627)
- 3308924 feat(desktop): refine MCP & skills drawer hierarchy (#2621)
- a1cd061 fix(agent): guard tailStart against a session with no message after the head
- 437a0ac chore(desktop): drop orphaned composer.noProject locale string (#2626)
- a4e4814 fix: remove no-project workspace option (#2624)
- aba2e9f fix(sandbox): bound the bash probe with a timeout (#2625)
- e4c0b9f fix(cli): prefer numeric choices in tool approval prompts (#2601)
- ddfdfe7 fix: bash tool WSL launcher probe fallback to Git Bash (#2620)
- 4c2b6a2 fix(boot): detach codegraph background install from the Build context (#2612)
- 27764d1 fix(tool): block CGNAT 100.64.0.0/10 in web_fetch SSRF guard
- f7363e1 fix(tool): drop outputs/execution_count when notebook_edit retypes a cell to markdown
- 351d772 fix(tool): read_file decodes BOM-marked UTF-16 and UTF-8 instead of rejecting it
- 97683f1 fix(control): surface errors from /branch and /switch slash commands (#2610)
- 211ede8 chore(desktop): tidy plan-approval dock follow-ups (#2619)
- 01f6047 fix(desktop): dock plan approval controls (#2616)
- 379b6e8 fix(config): correct MiMo Token Plan base_url, model, pricing; render models[] (#2613)
- 4e6b8b4 fix(tool): normalize forward-slash glob patterns to the OS separator
- e71b837 fix(tool): delete a multi-line var/const's whole value, not just its name line
- 639be6f feat(memory): forget tool, fallible recall, richer index, UI surface + same-session apply (#2599)
- 256a2f5 feat(desktop): Claude-style workspace layout, file preview, capabilities drawer (#2561)
- ccece7e perf(tool): skip vendor/VCS dirs in grep and glob walks
- 75aa034 fix(agent): serialize the session pointer against concurrent frontend access
- 0344cec fix(agent): make the plan-mode flag atomic
- ee2117c fix(agent): make per-turn usage/cache telemetry atomic
- 6e40153 fix(agent): guard Session.Messages so a frontend read can't race a turn's append
- 3567f28 feat(ci): mutation testing for the diff bot — behavioral signal for additive PRs (#2600)
- 7318757 fix(diff): cap Myers edit distance so a large rewrite can't OOM the preview
- 1441a4a fix(plugin): guard Host's mutable state with a mutex against hot-add races
- da59857 feat(ci): harden e2e diff bot — coverage, regression, retries, safety (#2593)
- eaa95e9 feat(ci): surface generated tests + per-test differential in diff report (#2592)
- 0c68cab fix(frontmatter): parse YAML list values so imported skills keep tool scoping
- 3ddc5ee feat(agent): guard todo completion transitions (#2576)
- 3e3b9c5 feat(ci): tune diff test-gen — higher step cap, clearer report (#2587)
- 622ab03 fix(codegraph): reject extraction symlinks that escape the cache dir
- 0ee09d7 fix(serve): require application/json on command POSTs to block CSRF
- b90b587 fix(lsp): cap the LSP frame size to stop an OOM on a corrupt Content-Length
- 5843535 fix(ci): build the e2e harness from the default branch, not the PR head (#2584)
- f38ea2c feat(ci): e2e benchmark bot triggered by a PR comment (#2574)
- 3688b21 feat(tui): add /quit slash command for session exit (#2577)
- fc8af2e fix(tool): block web_fetch from reaching internal addresses (SSRF)
- 50c2c32 fix(agent): keep signed reasoning original when PostLLMCall transforms it
- 8e00ae5 test(jobs): fix a race in TestWaitAllRunning
- 49e99d7 fix(tool): delete a symbol's doc comment along with it
- 6b30efd fix(tool): reject delete_range with identical anchors instead of duplicating a line
- 6fd8c39 fix(plugin): unblock a cancelled stdio MCP call when the server hangs
- 25b148d fix(jobs): surface a finished task job's answer via bash_output
- 4ed3d71 feat(desktop): async startup — non-blocking boot.Build + parallel plugin init (#2563)
- b20a410 feat: add PostLLMCall hook for post-model-turn reasoning transform (#2568)
- 22d5f00 feat(agent): verify completed steps against todos (#2569)
- be584c8 fix(agent): stop auto-compaction re-firing every turn (#2571)
- b05e7cb Auto Plan Gate for Complex Tasks / 复杂任务自动计划门 (#2457)
- 21e28da feat(agent): verify step evidence receipts (#2540)
- 81623ea feat(tui): stream answer to scrollback by completed paragraph
- 82bfea0 fix(cli): drop duplicate bubbletea import in chat_tui_test
- 7f67c06 fix(provider): repair dangling tool_call pairing before send
- d411fe1 fix(tui): echo user message instantly on send
- b301730 feat(tui): require double Ctrl+C to quit when idle, preventing accidental exits (#2501)
- ffd3357 [v2] Add reusable mock provider for agent tests (#2412)
- 55308f0 fix: @目录引用递归列出子目录 + glob简单模式自动递归回退 (#2506)
- 682f66f feat(agent): segment read-only tool batch execution (#2541)
- 19bf187 fix(openai): surface MiniMax-M3 inline as reasoning
- 6f70d12 feat(desktop): add MCP & Skills drawer with connector management
- acd8dc5 feat(control): add DisconnectMCPServer for session-only MCP toggling
- 61deefe fix(tui): restore Ctrl+C to interrupt/quit, copy via right-click
- ba47567 feat(lsp): add Language Server Protocol code-intelligence tools
- 57359d5 feat(cli): collapse thinking with a live marker + duration summary (#2562)
- 2021a52 feat(composer): fold long pasted text in CLI and desktop (#2517)
- 5bc6790 fix(desktop): shorten Windows cwd in the status breadcrumb (#2547)
- cfb6955 fix(cli): render CJK bold (**) hugging full-width punctuation (#2476)
- 2df002e test(desktop): make sessionTitlesPath test platform-agnostic (#2546)
- 5c0da4f test(boot): disable codegraph in the MCP-failure test (#2545)
- f4beb8d feat(desktop): indent layered-plan sub-steps in the todo panel (#2544)
- 6da057d fix(plan): parse numbered-heading phases so layering survives real plans (#2543)
- 5904043 feat(mcp): support manual connect for configured servers (#2503)
- b885bed feat(plan): layered two-level plans (phases → sub-steps) (#2539)
- 3d27db6 feat(mcp): keep startup resilient to server failures (#2502)
- 0f914c1 fix(sandbox): make shell-resolution tests host-independent (#2536)
- 60a9803 test(cli): exercise /resume through the slash dispatcher end-to-end (#2534)
- e8fb992 test(sandbox): cover the no-bash → PowerShell fallback deterministically (#2533)
- a704fa7 fix(tool): make the shell tool work on Windows without bash (#2532)
- 384714e feat(cli): add in-chat /resume to switch saved sessions live (#2531)
- ff9221f fix(model): skip providers without an API key in all model pickers (#2519)
- 0048df6 TUI: alt-screen transcript viewport with scrollbar, selection, and copy (#2524)
- 9891a32 feat(cli): read clipboard images on Windows and Linux (#2525)
- 9e78bac feat(desktop): image attachments via paste and drag-drop (#2504)
- 8d71037 feat(cli): image attachments via paste and dragged file paths (#2508)
- 4cb0690 fix(desktop): save provider/config to global user config, surviving workspace switch (#2516)
- 8e0db65 fix(desktop): protect [ spacing and swap | for \vert in math (#2514)
- c8c15ce fix(desktop): pin vite dev server to 127.0.0.1 (fix Windows blank window) (#2511)
- a76345a fix(desktop): render LaTeX with ( ) and [ ] math delimiters (#2510)
- 1021c17 feat(desktop): render LaTeX math in markdown via KaTeX (#2509)
- 1d5703a test: make path and codegraph tests Windows-portable (#2507)
- 9dc00c1 build: add Go-native git hooks (make hooks) (#2505)
- 09a941c feat(provider): forward reasoning_effort from the openai-compatible provider (#2408)
- 5b1a88a test(builtin): make resolveIn absolute-path test cross-platform (#2500)
- bdbb81c feat(tool): add delete_range and delete_symbol editing tools (#2410)
- 6104602 feat(permission): auto-skip approval for known read-only bash commands (#2411)
- 0886375 feat(tool): add slash_command for model-invoked slash commands (#2494)
- ceae6df Fix desktop transcript streaming autoscroll (#2487)
- 7d62fbb fix(cli): /model switch breaks terminal + garbles streaming output (#2486)
- e045307 Conversation Branch Tree for Chat Sessions / 对话分支树管理 (#2460)
- fb5ee94 fix(tool): repair notebook_edit test compile error (#2492)
- df5764a ci: add release cache hit guard (#2470)
- 1a2c53b feat(tool): add notebook_edit for Jupyter .ipynb cells (#2491)
- 606f9df Clarify CLI Tool Approval Prompts (#2484)
- 9ccc3f5 feat(cli): custom status line via a user command
- 605aa1f feat(outputstyle): selectable persona/tone output styles (#2482)
- 4b80e83 docs: drop external-agent references from two comments (#2480)
- 801645b feat(hooks): add lifecycle hook events + compaction focus & headroom (#2478)
- 021df86 fix(cli): /model switch no longer corrupts the terminal (#2472)
- 4660ec2 feat(subagent): configurable model overrides for subagent skills (#2451)
- 9cf7939 fix(ask): reject blank and duplicate option labels (#2426)
- c81bffe feat(compaction): surface context compaction as a card across CLI, desktop, headless (#2477)
- f3f7835 fix(tui): add shift+enter to InsertNewline key binding (#2425)
- c15e114 style: gofmt storm_test.go to unblock CI (#2475)
- 451777f fix(agent): break the same-tool, same-error retry loop (#2474)
- bf4f3f8 refactor: deduplicate compactArgs between agent and cli (#2449)
- 20b9f31 refactor: extract shared frontmatter parser into internal/frontmatter (#2446)
- 7141612 feat(sandbox): add Linux bubblewrap support (#2447)
- 66888b2 test(sandbox): platform-split tests + golangci-lint v2 config (#2444)
- c616572 test(desktop): add workspace.go and settings_app.go helper tests (#2458)
- 4b0640b test(cli): add tests for visibleWidth, padRight, and boxed helpers (#2455)
- 3dac4d2 test(acp): add tests for newSessionID, mcpSpecs, transcriptPath, and acpSession (#2445)
- bff6027 test(skill): add edge case tests for IsValidName, splitFrontmatter, parseAllowedTools, parseRunAs, and helpers (#2443)
- d3dfd28 test(provider): add comprehensive unit tests for provider package (#2418)
- f81035b feat(provider): support Anthropic extended thinking round-trip (#2471)
- ef65698 feat(provider): add Anthropic Messages API provider (#2469)
- 7ae5ca1 test(builtin): add dedicated tests for write_file, edit_file, multi_edit, and confine (#2433)
- f80615f test(builtin): add dedicated tests for read_file, ls, glob, and grep tools (#2432)
- dbfa74d test(agent): add comprehensive session, save, load, and preview tests (#2454)
- 8a66ef9 test(serve): add endpoint tests for cancel, approve, new, compact, index, malformed input (#2453)
- d9f06bd test(desktop): add wire.go and sessions.go tests (#2452)
- c905bf2 test(command): add edge case tests for splitFrontmatter, Render, and Load (#2442)
- e45e8e2 test(jobs): add timeout, edge case, and helper tests (#2441)
- 8637b79 test(permission): add edge case tests for ParseDecision, matchGlob, Subject, and rememberRule (#2440)
- 5ef8c43 test(billing): add edge case tests for symbol, Display, and Fetch error paths (#2439)
- a644085 test(diff): add edge case tests for splitLines, isBinary, CRLF, large files, and helpers (#2438)
- 134caab test(memory): add tests for splitFrontmatter, slug, oneLine, render, and store edge cases (#2437)
- f431da9 test(hook): add comprehensive runner, format, and payload tests (#2430)
- 2987bc8 fix: replace silent error discards with structured logging (#2421)
- 55d408d feat(desktop): use a fresh signing key; add genkey/verify (#2467)
- f56d655 fix(subagent): tighten inherited tool boundaries (#2434)
- 1775743 fix(plugin): log prompt/resource listing failures in Host.Add (#2448)
- 93ab240 feat(desktop): add release pipeline and self-updater (#2466)
- d84fbab fix(openai): drain error response body for HTTP connection reuse (#2450)
- 5a1ac12 feat(serve): graceful shutdown, request logging, CORS opt-in (#2459)
- fa0a75f feat(glob): add ** recursive pattern support (#2423)
- 0c2db1e docs: add CONTRIBUTING.md (#2427)
- 2c267aa feat(checkpoint): persist turn boundaries so rewind/fork survive resume
- c8d1bc5 test(event): add unit tests for the event package (#2417)
- ca5c6a2 fix(gitignore): update ignores for the Go v2 layout (#2415)
- 3710ca5 fix(checkpoint): surface rewind/fork/summarize failures as a notice
- f3282e5 fix(desktop): rewind menu — one open at a time + click-outside to close
- c338437 fix(desktop): rewind ⟲ opens a vertical dropdown (fork/summarize were clipped)
- df8eccf Canonicalize MCP JSON schemas for stable cache prefixes (#2403)
- 35c20e2 fix(desktop): make the per-message rewind ⟲ always visible (dim), not hover-only
- ee44f47 feat(checkpoint): summarize-from/up-to-here, completing the Claude Code menu (Phase 2)
- 9b2adaf feat(checkpoint): fork-from-here (Phase 2)
- d931bc7 Stabilize tool schema ordering for prompt cache reuse (#2402)
- 2be0d9e feat(checkpoint): desktop hover-rewind (Phase 2)
- 492dcad feat(checkpoint): list /rewind in slash completion and help
- 813d937 ci: auto-label issues/PRs with v1/v2 version line
- df3d477 feat(checkpoint): CLI rewind picker — Esc-Esc / /rewind (Phase 1 complete)
- 490f1ce feat(checkpoint): snapshot store + capture seam + Controller.Rewind (Phase 1 core)
- 539d1d1 docs: design for checkpoints & rewind (snapshot-based, Claude Code-aligned)
- f60cb56 fix: skip saving empty conversations to history when switching workspace/model (#2401)
- cd66da6 refactor(codegraph): fetch on first use into a cache instead of bundling
- 4630f94 docs: npm stays the install channel for the Go build (wraps the native binary)
- 2c8f8bd docs: announce the Go rewrite (v2) — README banners, migration guide, changelog
- c626efa style: gofmt cachehit_e2e_test.go (unblock CI gofmt gate)
- fd0dfff ci: add CI and release workflows
- 68cc0be feat(plan): add complete_step tool for evidence-backed step sign-off
- 1e68e2e feat(codegraph): integrate CodeGraph as a built-in MCP server
- cff33da refactor(cli): use x/ansi for width/truncate/wrap, drop hand-rolled helpers
- 364c74d feat(cli): two-row status line so context/cache info isn't truncated
- 6b01b39 fix(cli): auto-repaint after resize to clear inline-mode border ghosts
- 18bc7ad fix(cli): drop the resize ClearScreen that doubled the frame
- 37d64ed fix(cli): clear the screen on terminal resize so the TUI drops border ghosts
- fa1e969 fix(cli): clamp the chat status line to terminal width so it never wraps
- a79f2a5 fix(config): read ~/.env as a fallback so CLI and desktop share one key
- 9d30eb8 fix(desktop): keyboard nav scrolls the active item into view in / @ and arg menus
- 540d654 feat(status): show single-turn AND session-aggregate cache-hit rates
- f03884b feat(agent): reply in the user's own language, per message
- 49be067 test(cache): prefix-stability regression + live DeepSeek cache probes
- b5d07bf perf(provider): stop re-uploading reasoning_content in requests
- 9a6567d fix(desktop): saving a key failed with read-only fs — GUI launch starts in "/"
- b5df761 i18n: localize the slash management listings (/skill /hooks /mcp /memory /model)
- 3f0cd7d i18n: localize the slash menu (commands + sub-command hints), CLI & desktop
- 911b386 fix(desktop): /skill list menu lingered — empty Go slice serialized to JSON null
- 231a217 fix(desktop): also drop no-op slash-arg suggestions in the composer
- d19ca8d fix: slash-arg menu lingered on a fully-typed subcommand (/skill list)
- 1014232 feat: shared slash-arg completion + readable desktop notice listings
- 5530273 fix(desktop): /skill and other notice-only commands read seconds forever
- eea749c fix(desktop): Enter never submitted — slash-menu guard tested the wrong var
- ec1d47b feat: in-session /model + parity slash commands (CLI & desktop)
- 08196ca test: prove /init (and skills) surface in the slash menu
- d4df4cf feat: skills, hooks, in-session /init, and cross-tool asset conventions
- 9b7f3e0 feat: YOLO/bypass permission mode with a Shift+Tab mode cycle
- 28e1b5d feat: background jobs (run_in_background, bash_output, kill_shell, wait)
- 4173660 feat: optional per-provider wallet balance + cache-hit rate in the status bar
- 6479624 feat(desktop): localize the UI (en/zh) and fix settings provider editor
- b897121 feat(desktop): session history, project folder picker, and a settings panel
- ba92bfd feat(cli,desktop): un-send on early cancel, live MCP management, slash arg completion
- 1e59c69 test(boot): cover memory-into-prompt wiring
- 806f584 docs(readme): port the homepage README to v2 (badges, support, contributors)
- d06c8a0 feat: ask tool, unified plan approval, and richer desktop/CLI tool UX
- 7da1e4e fix(desktop): return non-nil slices from App.Memory
- c3c338d merge(v2): fold in the persistent memory feature (feat/memory-v2)
- 9cb7561 feat(desktop): bottom model switcher
- 7038101 feat(config): a provider can expose multiple models
- 1c1ab5b feat(memory): desktop memory panel (drawer) on v2's Wails frontend
- 0b88afe feat(memory): wire # quick-add and /memory into the chat TUI
- edd4156 feat(memory): wire persistent memory into kernel + CLI on v2
- e6710b0 feat(desktop): welcome screen, copy buttons, app icon, and fixes
- 5fe7b09 feat(desktop): composer autocomplete for / commands and @ files
- 507103a feat(desktop): Wails + React desktop shell
- 6c7ae70 refactor(cli): extract controller assembly into internal/boot
- c1c22b2 feat(acp): support session/load to resume saved sessions
- da1de32 feat(acp): persist transcripts and add end-to-end tests
- e87b9cb feat(acp): drive the control.Controller and wire the reasonix acp command
- 5d40158 feat(acp): add stdio JSON-RPC adapter layer (phase A)
- 4dad578 feat(serve): expose the controller over HTTP+SSE
- 8991bf1 refactor(control): fold slash-command and @-reference resolution into the controller
- cdeb4de fix(provider/openai): always serialize message content so DeepSeek accepts tool-call turns
- 982e832 feat(control): transport-agnostic session controller (events + commands)
- 32d7218 merge(v2): desktop-harness foundations (diff preview, introspection, config writes, per-agent workdir)
- 1fb0f9f refactor(cli): chat TUI consumes the typed event stream directly
- fc60496 feat(core): desktop-harness foundations — diff preview, introspection, config writes, per-agent workdir
- cb5f5f1 refactor(agent): emit a typed event stream instead of writing ANSI
- ba04db8 fix(tui): keep scrollback commits screen-bounded so the inline renderer can't drift
- 7de6a24 feat: import Go implementation as v2 kernel (renamed duo → reasonix)
- 32a4c02 chore: initialize v2 — ground-up rewrite