Releases: esengine/DeepSeek-Reasonix
Reasonix CLI v1.1.0
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...
Reasonix Desktop v1.1.0
What's Changed
- feat(site): minimal v2 landing page by @esengine in #2797
- feat: migrate v0.x ~/.reasonix install on upgrade (config, key, MCP, sessions) + legacy
codealias by @esengine in #2809 - fix(desktop): unblock settings/new-session mid-run, restore cost readout, blend Windows title bar by @esengine in #2816
- fix(session): keep carried conversations in one file across rebuilds by @esengine in #2817
- feat(site): rebuild landing page in Astro, deploy via Actions by @esengine in #2818
- Unify Ask and Approval Prompt Shelves by @SivanCola in #2812
- chore(desktop): prompt-shelf follow-up — drop screenshot, fix dev-mock stack ref by @esengine in #2820
- fix(net): route built-in CN providers direct in auto/env proxy modes (#2803) by @esengine in #2821
- refactor(net): data-driven proxy-direct hosts (supersede MiMo hardcode) by @esengine in #2824
- fix(desktop): list the whole directory level in the @ file menu by @esengine in #2823
- fix(desktop): show skills/custom/MCP in the slash picker (#2815) by @esengine in #2826
- feat(cli): add a --dir flag to run and chat by @esengine in #2827
- feat(agent): skip the planner pass for non-work turns in two-model mode by @esengine in #2833
- fix(agent): echo tool schema on invalid-JSON tool args by @esengine in #2839
- feat(desktop): attach files dropped onto the composer by @esengine in #2841
- fix(sandbox): don't pick the WSL bash launcher on Windows by @esengine in #2843
- Improve desktop MCP startup behavior and settings UX by @SivanCola in #2834
- fix: auto-allow pending approvals in YOLO mode by @SivanCola in #2840
- refactor(desktop): apply composer gating via one atomic SetMode by @esengine in #2848
- fix(desktop): stop console windows flashing on Windows during tasks by @esengine in #2852
- refactor(desktop): drop dead codegraph-disabled loop in Capabilities by @esengine in #2847
- fix(desktop): use absolute path for .env to prevent key loss on workspace switch by @Bernardxu123 in #2853
- style(desktop): trim dotEnvPath comment to one line by @esengine in #2857
- fix(codegraph): make install + init robust on Windows (Access-denied, hung init) by @esengine in #2863
- feat(desktop): update the skill page source management UI by @SivanCola in #2874
- style(desktop): add builtin badge variant on skill source rows by @esengine in #2878
- fix(desktop): strip crossorigin from built assets so macOS 12 webview loads by @esengine in #2883
- fix(permission): stop prompting for plain cd commands by @GTC2080 in #2880
- Improve MCP management UX by @SivanCola in #2879
- refactor(cli): split mcp_manager.go under the 800-line ceiling by @esengine in #2889
- fix(desktop): downgrade mdast-util-gfm-autolink-literal to fix Safari… by @kekexunxun in #2886
- Fix desktop MCP failure cards showing connection mode by @SivanCola in #2888
- fix(read): decode BOM-less UTF-16 instead of rejecting it as binary by @esengine in #2891
- feat: add persistent approval option to the approval process by @YoungDan-hero in #2885
- fix(build): append GOEXE so make build names the Windows binary .exe by @esengine in #2896
- Add skill enable/disable controls by @esengine in #2898
- fix(setup): collect the API key before probing /models so Pro isn't hidden by @esengine in #2901
- fix(setup): keep each family model in its own entry to preserve pricing by @esengine in #2904
- fix(config): backfill deepseek-pro for flash-only configs from the old wizard by @esengine in #2905
- fix(cli): prevent welcome() from re-triggering setup when a global config exists by @esengine in #2906
- feat(config): read v0.x ~/.reasonix/config.json mcpServers by @esengine in #2912
- fix: recursive file search in glob/ls + @-ref resolution by @esengine in #2915
- fix(tools): root glob recursive fallback at workDir; stop swallowing walk errors by @esengine in #2916
- fix(tools): match CRLF line endings in edit_file/multi_edit by @esengine in #2918
- fix: add bounded filename search for @ file references by @YoungDan-hero in #2910
- fix(cli): stop config overwrite when the default model can't resolve by @esengine in #2908
- refactor(complete): memoize @token file search, drop dead skip entry by @esengine in #2919
- fix(openai): clamp effort=max to high for non-DeepSeek backends (MiMo 400) by @esengine in #2921
- fix(agent): block final answers with incomplete todos by @GTC2080 in #2920
- fix(sessions): back-fill v0.x sessions even after v1 has been used by @esengine in #2923
- fix(desktop): pad macOS app icon into the standard icon grid by @esengine in #2924
- feat(serve): runtime effort switching via /effort by @esengine in #2926
- ci: enforce golangci-lint, add govulncheck + coverage by @esengine in #2932
- chore(deps): bump dependencies to latest, toolchain go1.26.4 by @esengine in #2941
- docs(desktop): document the WebKitGTK 4.1 build tag (Fedora compile fix) by @esengine in #2944
- chore(deps): bump desktop module dependencies to latest by @esengine in #2950
- chore(npm): publish v2 (1.x) under
next, keep 0.x as latest by @esengine in #2951 - feat(site): dual-track landing — stable v0.53 default, v1.0.0 preview by @esengine in #2962
- feat(site): serve v0.53 desktop downloads from R2 by @esengine in #2971
- feat(desktop): update Skill page and CLI /skills picker by @SivanCola in #2928
- fix(agent): allow plan-mode todos in final readiness by @lizhengwu in #2933
- Preserve file encoding during checkpoint restore by @GTC2080 in #2967
- fix(control): bare @ref resolution drops files when a name exists in multiple dirs by @Tatlatat in #2977
- fix(memory): scope import-cycle detection to the current path (diamonds aren't cycles) by @Tatlatat in #2975
- refactor(cli): split skill picker view, strip restating comments by @esengine in #2990
- fix(cli): refresh statusline after model switch by @lizhengwu in #2937
- fix(cli): show fractional K in compact token counts by @Tatlatat in #2966
- fix(desktop): sidebar toggle button hidden after collapse by @YoungDan-hero in #2987
- fix: improve macOS window chrome layout and drag area by @YoungDan-hero in #2997
- fix(codegraph): mark read tools read-only (rebase of #2983) by @esengine in #2991
- fix(checkpoint): create the .ckpt dir lazily, not on every New (rebase of #2972) by @esengine in #2995
- fix(cli): measure approval-banner subject by display width, not rune count (rebase of #2968) by @esengine in https://g...
Reasonix CLI v1.0.0
Changelog
- 3483681 docs(changelog): mark 1.0.0 released (#2789)
- 6dd32af fix(desktop): build a universal macOS app, drop the Intel runner (#2787)
- 96881ce fix(release): distinguish CLI vs desktop releases; shield the updater from prereleases (#2784)
- 59d74a8 fix(desktop): bump CI pnpm to 10 for the frontend build (#2783)
- 424a563 fix(release): don't push the Homebrew cask for prereleases (#2782)
- 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...
Reasonix Desktop v1.0.0
What's Changed
- fix: skip saving empty conversations to history when switching workspace/model by @AtmoOmen in #2401
- [v2] Stabilize tool schema ordering for prompt cache reuse by @SivanCola in #2402
- [v2] Canonicalize MCP JSON schemas for stable cache prefixes by @SivanCola in #2403
- fix(gitignore): update v2 build ignores by @PorunC in #2415
- test(event): add comprehensive unit tests for event package by @HUQIANTAO in #2417
- docs: add CONTRIBUTING.md and update .gitignore by @HUQIANTAO in #2427
- feat(glob): add ** recursive pattern support by @HUQIANTAO in #2423
- fix(serve): gate CORS behind explicit origin, wire RunGraceful with signal handling by @HUQIANTAO in #2459
- fix(openai): drain error response body for HTTP connection reuse by @HUQIANTAO in #2450
- feat(desktop): add release pipeline and self-updater by @esengine in #2466
- fix(plugin): log prompt/resource listing failures in Host.Add by @HUQIANTAO in #2448
- fix(subagent): tighten inherited tool boundaries by @paradoxSCH in #2434
- feat(desktop): use a fresh signing key; add genkey/verify by @esengine in #2467
- fix: replace silent error discards with structured logging by @HUQIANTAO in #2421
- test(hook): add comprehensive runner, format, and payload tests by @HUQIANTAO in #2430
- test(memory): add tests for splitFrontmatter, slug, oneLine, render, and store edge cases by @HUQIANTAO in #2437
- test(diff): add edge case tests for splitLines, isBinary, CRLF, large files, and helpers by @HUQIANTAO in #2438
- test(billing): add edge case tests for symbol, Display, and Fetch error paths by @HUQIANTAO in #2439
- test(permission): add edge case tests for ParseDecision, matchGlob, Subject, and rememberRule by @HUQIANTAO in #2440
- test(jobs): add timeout, edge case, and helper tests by @HUQIANTAO in #2441
- test(command): add edge case tests for splitFrontmatter, Render, and Load by @HUQIANTAO in #2442
- test(desktop): add wire.go and sessions.go tests by @HUQIANTAO in #2452
- test(serve): add endpoint tests for cancel, approve, new, compact, index, malformed input by @HUQIANTAO in #2453
- test(agent): add comprehensive session, save, load, and preview tests by @HUQIANTAO in #2454
- test(builtin): add dedicated tests for read_file, ls, glob, and grep tools by @HUQIANTAO in #2432
- test(builtin): add dedicated tests for write_file, edit_file, multi_edit, and confine by @HUQIANTAO in #2433
- feat(provider): add Anthropic Messages API provider by @esengine in #2469
- feat(provider): support Anthropic extended thinking round-trip by @esengine in #2471
- test(provider): add comprehensive unit tests for provider package by @HUQIANTAO in #2418
- test(skill): add edge case tests for IsValidName, splitFrontmatter, parseAllowedTools, parseRunAs, and helpers by @HUQIANTAO in #2443
- test(acp): add tests for newSessionID, mcpSpecs, transcriptPath, and acpSession by @HUQIANTAO in #2445
- test(cli): add tests for visibleWidth, padRight, and boxed helpers by @HUQIANTAO in #2455
- test(desktop): add workspace.go and settings_app.go helper tests by @HUQIANTAO in #2458
- fix(ci): update golangci-lint v2 config, move sandbox tests to platform-specific files by @HUQIANTAO in #2444
- feat(sandbox): add bubblewrap support for Linux with enforce-mode warning by @HUQIANTAO in #2447
- refactor: extract shared frontmatter parser into internal/frontmatter by @HUQIANTAO in #2446
- refactor: deduplicate compactArgs between agent and cli by @HUQIANTAO in #2449
- fix(agent): break the same-tool, same-error retry loop by @esengine in #2474
- style: gofmt storm_test.go to unblock CI by @esengine in #2475
- fix(tui): add shift+enter to InsertNewline key binding, with test by @JimmyDaddy in #2425
- feat(compaction): surface context compaction as a card across CLI, desktop, headless by @esengine in #2477
- fix(ask): reject blank option labels by @XTLine in #2426
- feat(subagent): configure skill model overrides by @GTC2080 in #2451
- fix(cli): /model switch breaks terminal + garbles streaming output by @HUQIANTAO in #2472
- feat(hooks): add lifecycle hook events + compaction focus & headroom by @esengine in #2478
- docs: drop external-agent references from two comments by @esengine in #2480
- feat(outputstyle): selectable persona/tone output styles by @esengine in #2482
- Clarify CLI Tool Approval Prompts by @SivanCola in #2484
- feat(tool): add notebook_edit for Jupyter .ipynb cells by @esengine in #2491
- Add release cache-hit guard by @SivanCola in #2470
- fix(tool): repair notebook_edit test compile error by @esengine in #2492
- Conversation Branch Tree for Chat Sessions / 对话分支树管理 by @SivanCola in #2460
- fix(cli): /model switch breaks terminal + garbles streaming output by @HUQIANTAO in #2486
- Fix desktop transcript streaming autoscroll by @SivanCola in #2487
- feat(tool): add slash_command for model-invoked slash commands by @esengine in #2494
- [v2] Skip approval for known read-only bash commands by @SivanCola in #2411
- [v2] Add range and Go symbol deletion tools by @SivanCola in #2410
- test(builtin): make resolveIn absolute-path test cross-platform by @esengine in #2500
- [v2] Add DeepSeek thinking effort controls by @SivanCola in #2408
- build: add Go-native git hooks (make hooks) by @esengine in #2505
- test: make path and codegraph tests Windows-portable by @esengine in #2507
- feat(desktop): render LaTeX math in markdown via KaTeX by @esengine in #2509
- fix(desktop): render LaTeX with ( ) and [ ] math delimiters by @esengine in #2510
- fix(desktop): pin vite dev server to 127.0.0.1 (fix Windows blank window) by @esengine in #2511
- fix(desktop): protect [ spacing and swap | for \vert in math (#2017 parity) by @esengine in #2514
- fix(desktop): save provider/config to global user config, surviving workspace switch by @esengine in #2516
- Support image paste attachments in CLI by @SivanCola in #2508
- Add secure desktop image attachments by @SivanCola in #2504
- feat(cli): read clipboard images on Windows and Linux by @esengine in #2525
- TUI: alt-screen transcript viewport with scrollbar, selection, and copy by @esengine in #2524
- fix(model): skip providers without an API key in all model pickers by @AtmoOmen in #2519
- feat(cli): in-chat /resume to switch saved sessions live by @esengine in #2531
- fix(tool): make the shell tool work on Windows without bash by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/...
Reasonix desktop-v0.53.0
Highlights
Force-summary respects the active model (#1979) — context-guard and stuck-state recovery no longer hard-code deepseek-v4-flash. Sessions on third-party DeepSeek-compatible endpoints (mimo, self-hosted, Azure forks) that don't expose flash now recover cleanly instead of crashing the summary turn.
Brave Search backend for web_search (#1916) — alternative to the existing Bing / Tavily / Ollama-cloud paths.
Desktop — workspace switcher (#1908) — multiple project roots in the sidebar, no relaunch required.
Desktop fixes — per-tab hook firing (#1984), pending-assistant clears on error so the spinner stops (#1985), /skill and /skills slash commands wired (#1978), context token meter refreshes per turn (#1964), preserve context across abort (#1938), \[ \] / \( \) math delimiters render in markdown (#1923), Windows path separator normalization (#1914), settings allow clearing base URL / editor (#1905), 余额显示支持多币种 (#1930).
Networking — web_fetch falls back to DNS-over-HTTPS when system DNS returns RFC1918 / link-local addresses (#1944); doctor accepts a custom /models endpoint (#1972).
Truncation / encoding — slice boundaries align to UTF-16 codepoints (#1976, includes #1970); truncated-result-saver falls back to ~/.reasonix when rootDir is the FS root (#1974); lone surrogates sanitized in chat payloads (#1939).
Other — /qq defaults to markdown replies (#1941); CardStream measure→render→measure loop broken (#1958); structured errorDetail propagation through loop / transcript / ACP (#1965); ink runtime fully in-tree as a workspace package (#1947); config saveApiKey overrides stale env (#1982); dashboard session refresh (#1917); New Chat label on one line (#1924).
Full changelog: CHANGELOG.md
Reasonix desktop-v0.52.0
fix(desktop): bump app bundle version to 0.52.0
Reasonix desktop-v0.51.0
desktop-v0.51.0
Reasonix desktop-v0.50.0
desktop-v0.50.0
Reasonix desktop-v0.49.0
reasonix desktop v0.49.0
Reasonix desktop-v0.48.1
Reasonix Desktop 0.48.1 — see CHANGELOG.md for the full notes.