Releases: esengine/DeepSeek-Reasonix
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.
Reasonix desktop-v0.48.0
chore(release): 0.48.0 — NO_PROXY, code intelligence, lifecycle round…
Reasonix desktop-v0.47.1
Reasonix desktop v0.47.1
Reasonix v0.47.0
Desktop matures. The Tauri app picks up the polish it was missing —
About modal with one-click update check, KaTeX math rendering in chat,
window/tab/session/scroll restore across relaunch, /compact /retry /btw
/feedback slash commands, per-message copy + file-export actions, QQ
settings entry, platform-aware keyboard shortcut hints. The auto-updater
now reads latest.json from the R2 mirror so an npm-only v* release
can no longer brick the in-app update banner; the banner also surfaces
download progress while the bundle pulls. Universal Node is bundled on
macOS so Intel Macs stop blank-screening at launch.
TUI — composer round two. Composer keys and visuals re-align with
Claude Code: rounded border, status row at the bottom, input-box
background fill, left stripe on user card. ctrl+r toggles verbose
(reasoning + raw tool I/O); esc-esc opens a rewind picker over the
last 5s; u undo is now gated to the same 5s window so stale taps
can't revert. SGR mouse wheel is on by default again, IME cursor stays
glued to ▌, WelcomeBanner centers vertically on empty chats.
Search hardening. Regex now runs in a worker thread so a ReDoS
pattern can be terminated cleanly; worker deadline 5s → 60s and walk
deadline 15s → 120s for legitimately large repos. Tavily added as a
web_search backend — escape hatch when Mojeek 403s. search_content
gets a walk-level deadline and ESC preempts queued tool calls.
Claude-ecosystem compat. Reasonix now reads .mcp.json and
.claude/skills/ from the repo so existing Claude Code setups work
without a second copy; common skill fields (type/context/agent)
are aliased.
Other:
feat(embedding)batch OpenAI-compat embedding requests to respect
provider batch limitsfeat(memory)inject ancestorAGENTS.mdintolist_directory,
not onlyread_fileperf(session)skip cross-workspace jsonls + byte-scan line count
— sidebar list ~10× fasterfeat(config)support pricing overrides and per-model rpm limitsfeat(dashboard)new / switch / delete sessions in-place, no CLI
bouncefix(mcp)runtime schema validation for MCP server responses; ESC
aborts hung handshakes during startup; surface the real bridge-
failure reason in the dashboardfix(cli)preserve flash-preset auto-escalate semanticscisplit desktop + npm releases into separate tag namespaces:
v*→ npm,desktop-v*→ Tauri bundles
Reasonix v0.45.1
fix(chat): rust TUI input — setup capture, paste burst, Ctrl+V (#1129) * fix(chat): rust TUI input — setup capture, paste burst, Ctrl+V - Setup: rust now owns the keystroke buffer while setup_pending is Some. Previously every event was dropped via `continue`, so Ink's MaskedInput (which receives a null keystroke reader in integrated mode) sat on a screen that ate every keypress — Windows users (and any Mac user after the rc.2 eager-spawn change) couldn't enter their API key. Buffer is forwarded to Setup.handleSubmit via a new `setup-submit` event and a submitRef on the Setup component. - Composer paste: track last_key_at and treat an Enter that arrives within 15ms of the previous key as paste-as-keystrokes, inserting '\n' literally instead of submitting. Bracketed paste is the happy path, but Apple Terminal (macOS default) and cmd.exe pre-ConPTY don't speak it, so multi-line pastes used to submit on the first '\n'. The same guard short-circuits Enter inside prompt_input (single-line, can't accept '\n') so paste bursts don't submit half-pasted answers. - Ctrl+V: explicit clipboard paste via arboard::get_text in both composer and prompt_input. The only working paste path when bracketed paste is unavailable. * fix(test): normalize tmp cwd via realpath on macOS mkdtemp in /var/folders/... but process.cwd() after chdir resolves to /private/var/folders/...; the spy compared the unresolved tmp path against the resolved one and bare-routing tests failed on every Mac. Resolve at setup so the assertion sees one path. * chore(release): 0.45.1 * chore: rustfmt + sync package-lock.json to 0.45.1 - rustfmt: one-line match arm in integrated.rs (CI fmt --check fixed it) - package-lock.json: regenerate so optional-deps resolve to 0.45.1 instead of the stale 0.44.2-rc.4 lock that was blocking `npm ci` on main --------- Co-authored-by: yhh <yhh@yhhdeMac-mini.local> Co-authored-by: reasonix <reasonix@deepseek.com>