Changelog
- b5ab685 fix(styles): update sidebar styles for improved layout and consistency (#3002)
- c32ec3c fix(tooltip): enhance keyboard accessibility and pointer interactions (#3000)
- bee0b48 fix(desktop): remove accidental project tabs rollout (clean revert) (#3011)
- 5de4a1a fix(desktop): isolate user config dir in tests; SearchFileRefs non-nil (#3009)
- faa1d20 fix(desktop): keep the live controller when a model switch fails (#3003)
- 2b1ddce fix(cli): restore mid-turn interject feedback (#3001)
- df921a1 fix(cli): measure approval-banner subject by display width, not rune count (#2996)
- 72a4804 fix(checkpoint): create the .ckpt dir lazily, not on every New (#2995)
- 0b6a635 fix(codegraph): mark read tools read-only (#2991)
- ed88428 fix: improve macOS window chrome layout and drag area (#2997)
- 9d3a7e7 fix(desktop): sidebar toggle button hidden after collapse (#2987)
- 92d6898 fix(cli): show fractional K in compact token counts (#2966)
- a9ee763 fix(cli): refresh statusline after model switch (#2937)
- e04b179 refactor(cli): split skill picker view, strip restating comments (#2990)
- b8c407f fix(memory): scope import-cycle detection to the current path (#2975)
- 4123025 fix(control): stop bare @ref resolution dropping files on duplicate names (#2977)
- 2dc6246 fix: preserve checkpoint restore file encoding (#2967)
- 9250fba fix(agent): allow plan-mode todos in final readiness (#2933)
- 9619220 feat(desktop): update Skill page and CLI /skills picker (#2928)
- e63c6ce feat(site): serve the v0.53 desktop downloads from R2, not GitHub (#2971)
- a478e50 feat(site): dual-track landing — stable v0.53 default, v1.0.0 in preview (#2962)
- 61a9666 chore(npm): publish the v2 (1.x) line under
next, keep 0.x as latest (#2951) - 9a4353f chore(deps): bump desktop module dependencies to latest (#2950)
- ddefd1c docs(desktop): document the WebKitGTK 4.1 build tag for Fedora et al. (#2944)
- 7605ace chore(deps): bump dependencies to latest, toolchain go1.26.4 (#2941)
- 67e5603 ci: enforce golangci-lint, add govulncheck + coverage jobs (#2932)
- 37042b2 feat(serve): runtime effort switching via /effort (#2926)
- 606f7c5 fix(desktop): pad macOS app icon into the standard icon grid (#2924)
- 2dc3457 fix(sessions): back-fill v0.x sessions even after v1 has been used (#2923)
- eafdd01 fix(agent): gate final answers on incomplete todos (#2920)
- f9f68e2 fix(openai): clamp effort=max to high for non-DeepSeek backends (#2921)
- 5d0a2ec refactor(complete): memoize @token basename search, drop dead skip entry (#2919)
- d78c412 fix(cli): only re-run setup on a true first run when the default model can't resolve (#2908)
- 8be65f6 fix: add bounded filename search for @ file references (#2910)
- 2108ab4 fix(tools): match CRLF line endings in edit_file/multi_edit (#2918)
- 7a7386e fix(tools): root glob's recursive fallback at workDir; don't swallow walk errors (#2916)
- 3c42ea9 fix(plugin): reap detached stdio-server descendants via a Windows Job Object
- 923f50f fix: recursive file search in glob/ls + @-ref resolution (#2915)
- f015e9c feat(config): read v0.x ~/.reasonix/config.json mcpServers (#2912)
- 7264bb7 feat: make codegraph MCP configurable (#2902)
- da01d3c fix(cli): don't re-trigger setup when a global config loads (#2906)
- e25fcff fix(config): backfill deepseek-pro for flash-only configs from the old wizard (#2905)
- e3b8a41 fix(setup): keep each family model in its own entry to preserve pricing (#2904)
- 65ca37c fix(setup): collect the API key before probing /models so Pro isn't hidden (#2901)
- 963a4c0 feat(cli): show git status in default status line (#2892)
- 576ae9c Add skill enable/disable controls (#2898)
- 0b76198 style(permission): gofmt the ParseRule test table
- 9e3fee6 fix(permission): persist remembered approvals as exact-match rules, not globs
- 5130c93 refactor(boot): drop unreachable nil-check in the persist-rule callback
- 972ce49 fix(build): append GOEXE so make build names the Windows binary .exe (#2896)
- ba39ff6 feat: persistent approval option (#2885)
- bd86caf test(agent): de-flake batch-parallelism guard with a larger delay, not a looser bound
- c9c443a fix(read): decode BOM-less UTF-16 instead of rejecting it as binary (#2891)
- d7f1ded Fix desktop MCP failure cards showing connection mode (#2888)
- 53221ab fix(desktop): downgrade mdast-util-gfm-autolink-literal to 2.0.0 for Safari 15 (#2886)
- 3f87bd0 fix(config): store API keys in a global credentials file, never a project .env
- 7f8aa5f refactor(cli): split mcp_manager.go under the 800-line ceiling (#2889)
- 2eaf36d Improve MCP management UX (#2879)
- 0edb738 fix(permission): treat plain cd as read-only bash (#2880)
- f76129f fix(desktop): strip crossorigin from built assets so macOS 12 webview loads (#2883)
- 8c54ec4 style(desktop): add builtin badge variant on skill source rows (#2878)
- 18c363f feat(desktop): update the skill page source management UI (#2874)
- 9203288 fix(codegraph): make install + init robust on Windows (Access-denied, hung init) (#2863)
- 7306f53 style(desktop): trim dotEnvPath comment to the terse one-liner the repo wants (#2857)
- 385b36a fix(desktop): use absolute path for .env to prevent key loss on workspace switch (#2853)
- d255a51 fix(plugin): tree-kill stdio servers on close so a wedged handshake can't hang boot
- bd39f19 refactor(desktop): drop dead codegraph-disabled loop in Capabilities (#2847)
- e1e9b98 fix(desktop): stop console windows flashing on Windows during tasks (#2852)
- 0fda79f refactor(desktop): apply composer gating via one atomic SetMode (#2848)
- b04e189 fix: auto-allow pending approvals in YOLO mode (#2840)
- 1ab14a9 feat(desktop): tier-based MCP startup with lazy/background/eager modes (#2834)
- fe9e53b fix(sandbox): don't pick the WSL bash launcher on Windows (#2843)
- c08cbbb feat(desktop): attach files dropped onto the composer (#2841)
- b07150d fix(agent): echo the tool schema when a tool call's args are invalid JSON
- 9a198e2 feat(agent): skip the planner pass for non-work turns in two-model mode
- 04f1097 feat(cli): add a --dir flag to run and chat (#2827)
- 1b7b407 fix(desktop): refresh slash commands once the controller is ready
- 6b420fa fix(desktop): list the whole directory level in the @ file menu (#2823)
- 5bf8dec refactor(net): make proxy-direct hosts data-driven instead of hardcoding MiMo
- 6624812 fix(net): route built-in CN providers direct in auto/env proxy modes
- 758e767 chore(desktop): drop committed screenshot, fix dev-mock stack reference
- 8132d85 Unify Ask and Approval Prompt Shelves (#2812)
- 324c3bb feat(site): rebuild the landing page in Astro, deploy via Actions (#2818)
- 3738d75 fix(session): keep carried conversations in one file across rebuilds (#2817)
- 0191045 fix(desktop): restore the session-cost readout and unblock settings/new-session mid-run
- 3e3856d fix(desktop): blend the Windows title bar with the dark shell
- 0705c31 feat(cli): accept legacy "code" as an alias for "chat"
- f63b3e7 feat(config): import a v0.x ~/.reasonix install on first v2 boot
- f920da1 fix(error): surface the provider's reason on 400/422
- 5711efc feat(site): minimal v2 landing page for GitHub Pages (#2797)