e1ac84ae44
- V4 cache-hit input prices cut to 1/10th per DeepSeek pricing update: Pro promo 0.03625→0.003625, Pro base 0.145→0.0145, Flash 0.028→0.0028 - Remove the 'light' theme variant (Variant::Light, Theme::light(), test) - Remove the theme setting entirely — hardcode UI_THEME to whale/dark, drop the theme field from Settings, ConfigView, and config command - Bump workspace version 0.6.0 → 0.6.1 (Cargo.toml, npm pkg, CHANGELOG) - De-cringe the README: drop emojis, marketing fluff, unverified claims
39 KiB
39 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Sub-agents surface in the footer status strip. When N > 0 sub-agents are in flight, the footer grows a "1 agent" / "N agents" chip in DeepSeek-sky color matching the model badge. Hides entirely at zero. (
footer_agents_chipinwidgets/footer.rs) @-mention popup is fully wired in the composer. Previously only the App state fields existed (mention_menu_selected,mention_menu_hidden). The popup now renders below the input mirror-style with the slash menu, with@-prefixed entries; Up/Down navigates, Enter / Tab apply the selection, Esc hides until the next input edit. Mention takes precedence over slash because the positional check is stricter. (visible_mention_menu_entries+apply_mention_menu_selectioninfile_mention.rs)
Fixed
- Tool-call cells no longer flash
<command>/<file>placeholders. The engine used to emitToolCallStartedfromContentBlockStartwithinput: {}— before anyInputJsonDeltahad streamed in — which baked the placeholder into the cell at creation time. The emission is now deferred toContentBlockStopand routed throughfinal_tool_input, so the cell is created with the parsed args already in hand. (engine.rsfinal_tool_input; engine/tests.rsfinal_tool_input_*) parse_invocation_countflake. Twomarkdown_rendertests both read the global PARSE_INVOCATIONS atomic and raced when other tests calledparse()in parallel. Switched the counter tothread_local!<Cell<u64>>, so each test thread sees only its own invocations. Tested 8 sequential full-suite runs: 8/8 green (was ~40% green).
Changed
- System prompts redesigned with decomposition-first philosophy. All four prompt tiers (base, agent, plan, yolo) now teach the model to decompose tasks before acting —
todo_writefirst for granular task tracking,update_planfor high-level strategy, and sub-agents for parallelizable work. Inspired by the "mismanaged geniuses hypothesis" (Zhang et al., 2026): frontier LMs are already capable enough; the bottleneck is how we scaffold their self-management. The prompts now make work visible through the sidebar (Plan / Todos / Tasks / Agents) instead of letting the model work invisibly. - Tool labels use progressive verbs. "Read foo.rs" → "Reading foo.rs", "List X" → "Listing X", "Search pattern" → "Searching for
pattern", "List files" → "Listing files". Past-tense labels read wrong while a tool is still in flight; the new forms match what the user actually sees. - Long-running tools grow an elapsed badge. From 3 s onward the
runningstatus segment becomesrunning (3s),running (4s), … so the user can tell a tool isn't stuck. The status-animation tick (360 ms) drives the redraw; below 3 s the badge stays hidden so quick reads/greps don't churn. (history.rsrunning_status_label_with_elapsed) - Spinner pulse is twice as fast —
TOOL_STATUS_SYMBOL_MS1800 ms → 720 ms per glyph (full 4-glyph heartbeat in ~2.88 s instead of ~7.2 s). tools/subagent.rsis now a folder module. Tests live intools/subagent/tests.rs; runtime + manager + tool implementations stay intools/subagent/mod.rs. Public API unchanged. The runtime / tool-impl split was deferred —SubAgentTask,run_subagent_task,build_allowed_tools, the agent prompt constants, andnormalize_role_aliasare referenced from both layers and need a small API design pass before they cleanly separate.
Test hygiene
- 5 regression tests pin auto-scroll churn contract.
mark_history_updateddoes not scroll; tool-cell handlers onlymark_history_updated;add_messageandflush_active_cellgate onuser_scrolled_during_stream; the per-stream lock clears at TurnComplete and when the user returns to the live tail. (P2.4)
0.6.1 - 2026-04-26
Changed
- V4 cache-hit input prices cut to 1/10th per DeepSeek's pricing update. Pro promo 0.03625→0.003625, Pro base 0.145→0.0145, Flash 0.028→0.0028 per 1M tokens. Cache-miss and output rates unchanged.
- Removed the "light" theme option. It was never tested, looked bad, and the dark/whale palettes are the supported targets. Theme validation now accepts only
default,dark, andwhale. - System prompts redesigned with decomposition-first philosophy. All five prompt tiers teach the model to
todo_writebefore acting,update_planfor strategy, and sub-agents for parallel work. Inspired by the mismanaged-geniuses hypothesis (Zhang et al., 2026).
0.6.0 - 2026-04-25
Added
rlm_querytool — recursive language models as a first-class structured tool. Inspired by Alex Zhang's RLM work and Sakana AI's published novelty-search research, but trimmed to what an agent loop actually needs. The model callsrlm_querywith one prompt or up to 16 concurrent prompts; children run ondeepseek-v4-flashby default and can be promoted to Pro per-call. Children dispatch concurrently viatokio::join_allagainst the existing DeepSeek client — no external runtime, no fenced-block DSL, no Python sandbox. Returns plain text for one prompt, indexed[0] ...\n\n---\n\n[1] ...blocks for many. Available in Plan / Agent / YOLO. Cost is folded into the session's running total automatically.
Changed
- Scroll position survives content rewrites (#56).
TranscriptScroll::resolve_topandscrolled_byno longer teleport to bottom when the anchor cell vanishes. Three-level fallback chain: same line → same cell, line 0 → nearest surviving cell at-or-before. Previously, any rewrite of the assistant message (e.g. tool-result replacement) silently dropped the user back to the live tail mid-scroll. - Looser command-safety chains (#57).
cargo build && cargo test,git fetch && git rebase, and similar chains of known-safe commands now escalate toRequiresApprovalinstead of being hard-blocked asDangerous. Chains containing unknown commands still block. GettingCrowdedno longer surfaces a footer chip. The context-percent header already covers conversation pressure; the chip now only fires for active engine interventions (refreshing context,verifying,resetting plan).
[0.5.2] - 2026-04-25
Added
/modelopens a Pro/Flash + thinking-effort picker (#39). Typing/modelwith no argument now pops a two-pane modal: model on the left (deepseek-v4-proflagship,deepseek-v4-flashfast/cheap, plus a "current (custom)" row when the active id isn't one of the listed defaults), and thinking effort on the right. Tab/←/→ swaps panes, ↑/↓ moves within the focused pane, Enter applies both selections, Esc cancels. The effort pane intentionally exposes only Off / High / Max because DeepSeek's Thinking Mode docs statelow/mediumare mapped tohighserver-side andxhighis mapped tomax— the legacy variants stay valid in~/.deepseek/settings.tomlfor back-compat, the picker just doesn't surface them. Apply path persistsdefault_modelandreasoning_effortto settings, forwardsOp::SetModel+Op::SetCompactionto the running engine so the next turn picks up the change without a restart, and resets the per-turn token gauges (cache, replay) so the footer numbers reflect the new model./model <id>keeps working unchanged for power users.
[0.5.1] - 2026-04-25
Added
fetch_urltool for direct HTTP GET on a known URL — complementsweb_searchfor cases where the link is already known. Supportsformat(markdown/text/raw),max_bytes(default 1 MB, hard cap 10 MB),timeout_ms(default 15 s, max 60 s), redirect following, and structured{url, status, content_type, content, truncated}responses. 4xx/5xx bodies are returned (withsuccess: false) so the caller can read JSON error envelopes. (#33)- PDF support in
read_file. PDFs are auto-detected by extension or%PDF-magic bytes and extracted viapdftotext -layout(poppler) when available. New optionalpagesarg ("5"or"1-10") reads page slices. Withoutpdftotext, returns a structured{type: "binary_unavailable", kind: "pdf", reason, hint}with install commands for macOS/Debian. (#34) - Reasoning-content replay telemetry, end-to-end (#30). The chat-completions sanitizer now estimates replayed
reasoning_contenttokens (~4 chars/token), threads the value through the streamingUsagepayload, stores it on the App, and renders anrsn N.Nkchip in the footer next to the cache hit-rate. The chip turns warning-coloured when replay tokens exceed 50% of the input budget, so users on long thinking-mode loops can see at a glance how much of their context window is going to V4's "Interleaved Thinking" replay (paper §5.1.1). Logged atRUST_LOG=deepseek_tui=infofor tail-friendly diagnosis. @fileTab-completion (#28). Typing@<partial>and pressing Tab now resolves the mention against the workspace using the existingignore::WalkBuilder. A unique match is spliced into the input; multiple matches with a longer common prefix extend the partial; remaining ambiguity is surfaced via the status line. The mention-expansion path that ships file contents to the model is unchanged — this is purely a discovery aid for typing the path. Inline-contents and a fuzzy popup picker are queued for v0.5.2.- Per-workspace external trust list (#29).
~/.deepseek/workspace-trust.jsonnow records, for each workspace, the absolute paths the user has opted into reading/writing from outside that workspace. The new/trustslash command supportsadd <path>,remove <path>,list,on,off, and a status read with no args; the engine consults the list when constructing everyToolContextso changes apply on the next tool call without restart./diagnosticssurfaces the list. The interactive "Allow once / Always allow / Deny" approval prompt is deferred — for now grant access ahead of the turn with/trust add <path>.
Fixed
- TUI sidebar gutter bleed regression test (#36). Snapshot tests now lock in that long single-line tool results — including a
todo_writeecho of a multi-kilobyte JSON payload — never write any cells outsidechat_areaat the widths reported in the bug (80, 120, 165, 200 cols). A second test verifies the scrollbar coexists with content along the right edge instead of overdrawing the penultimate column. - Version drift caught in CI. New
versionsjob in.github/workflows/ci.ymlrunsscripts/release/check-versions.shon every push/PR, verifying every per-crateCargo.tomlinherits the workspace version, the npm wrapper matches the workspace version, andCargo.lockis in sync. The release runbook now listscheck-versions.shas the first preflight step. (#31) - Per-mode soft context budget for V4 compaction trigger (#27).
- Phantom
web.runreferences stripped from prompts and theweb_searchtool surface (#25). - Unused import +
cargo fmtdrift that landed withfeat(#27)and broke Build / Test / npm wrapper smoke under-Dwarnings.
[0.5.0] - 2026-04-25
Fixed
- Multi-turn tool calls on thinking-mode models no longer return HTTP 400. Every assistant message in the conversation now carries
reasoning_contentwhen thinking is enabled — not just tool-call rounds — matching DeepSeek's actual API validation, which rejects any assistant message missing the field even though the docs describe non-tool-call reasoning as "ignored". - Added a final-pass wire-payload sanitizer in the chat-completions client that forces a non-empty
reasoning_contentplaceholder onto any assistant message still missing one at request time. This is the last line of defense after engine-side and build-side substitution, so sessions restored from older checkpoints, sub-agents that append messages directly, and cached prefix mismatches all produce a valid request. - On a
reasoning_content-related 400, the client now logs the offending message indices to make future regressions diagnosable. - Stripped phantom
web.runreferences from prompts and theweb_searchtool surface (#25).
Changed
- Header/UI widget refactor in the TUI (
crates/tui/src/tui/ui.rs,widgets/header.rs) — internal cleanup, no user-visible behavior change.
0.4.9 - 2026-04-27
Fixed
- DeepSeek thinking-mode tool-call rounds now always replay
reasoning_contentin all subsequent requests (including across new user turns), matching DeepSeek's documented API contract that assistant messages with tool calls must retain their reasoning content forever. - Missing
reasoning_contenton a tool-call assistant message now substitutes a safe placeholder ("(reasoning omitted)") instead of dropping the tool calls and their matching tool results, preventing orphaned conversation chains and API 400 errors. - Session checkpoint now persists a Thinking-block placeholder for tool-call turns that produced no streamed reasoning text, keeping on-disk sessions structurally correct so subsequent requests avoid HTTP 400 rejections.
- Token estimation for compaction now counts thinking tokens across all tool-call rounds (not just the current user turn), aligning with the updated reasoning_content replay rule.
0.4.8 - 2026-04-25
Fixed
- DeepSeek V4 Pro cost estimates now use DeepSeek's current limited-time 75% discount until 2026-05-05 15:59 UTC, then automatically fall back to the base Pro rates.
[0.4.5] - 2026-04-24
Fixed
- Alternate-screen TUI sessions now capture mouse input by default so wheel scrolling moves the transcript instead of exposing terminal scrollback from before the TUI started. Use
--no-mouse-captureortui.mouse_capture = falsewhen terminal-native drag selection is preferred.
[0.4.2] - 2026-04-24
Fixed
- DeepSeek V4 thinking-mode tool turns now checkpoint the engine's authoritative API transcript, including assistant
reasoning_contenton reasoning-to-tool-call turns with no visible assistant text. - Chat Completions request building now drops stale V4 tool-call rounds that are missing required
reasoning_content, preventing old corrupted checkpoints from triggering DeepSeek HTTP 400 replay errors. - Web search now falls back to Bing HTML results when DuckDuckGo returns a bot challenge or otherwise yields no parseable results.
[0.4.1] - 2026-04-24
Fixed
- DeepSeek V4 tool-result context now preserves large file reads and command outputs instead of compacting noisy tools to a 900-character snippet after 2k characters.
- Capacity guardrail refresh no longer performs destructive summary compaction unless the normal model-aware compaction thresholds are actually crossed.
- V4 compaction summaries retain larger tool-result excerpts and summary input when compaction is genuinely needed.
- The transcript now follows the bottom again when sending a new message, shows an in-app scrollbar when internally scrolled, and leaves mouse capture off in
--no-alt-screenmode so terminal-native scrolling can work.
[0.4.0] - 2026-04-23
Added
- DeepSeek V4 support:
deepseek-v4-pro(flagship) anddeepseek-v4-flash(fast/cheap) are now first-class model IDs with 1M context windows. - Reasoning-effort tier: new
reasoning_effortconfig field (off | low | medium | high | max) mapped to DeepSeek'sreasoning_effort+thinkingrequest fields. Defaults tomax. - Shift+Tab cycles reasoning-effort through the three behaviorally distinct tiers (
off → high → max). The current tier is shown as a ⚡ chip in the header. - Per-model pricing table:
deepseek-v4-propriced at $0.145/$1.74/$3.48 per 1M tokens (cache-hit/miss/output);deepseek-v4-flashand legacy aliases at $0.028/$0.14/$0.28.
Changed
- Default model flipped to
deepseek-v4-pro(fromdeepseek-reasoner). deepseek-chat/deepseek-reasonerremain as silent aliases ofdeepseek-v4-flashfor API compatibility; priced identically.- Context compaction: 1M-context V4 models now compact at 800k input tokens or 2,000 messages, so short/tool-heavy sessions do not compact as if they were 128k-context runs.
- Cycling modes is now Tab-only; Shift+Tab is repurposed for reasoning-effort (reverse-mode cycle was low-value with only three modes).
- Updated help/hint strings, validator error messages, and the model picker to reference V4 IDs.
Fixed
requires_reasoning_contentnow recognizesdeepseek-v4*so thinking streams render correctly on V4 models.- DeepSeek V4 thinking-mode tool calls now preserve prior assistant
reasoning_contentwhenever a tool call is replayed, matching DeepSeek's multi-turn contract and avoiding HTTP 400 rejections on later turns. - Raw Chat Completions requests now send DeepSeek's top-level
thinkingparameter instead of the OpenAI SDK-onlyextra_bodywrapper. - Config, env, and UI model selection now normalize legacy DeepSeek aliases to
deepseek-v4-flashinstead of preserving old model labels. - npm wrapper first-run downloads now use process-unique temp files so concurrent
deepseek/deepseek-tuiinvocations do not race on*.downloadfiles.
0.3.33 - 2026-04-11
Changed
- Footer polish: simplified footer rendering, removed footer clock label, updated status line layout
- Palette cleanup: removed
FOOTER_HINTcolor constant
Removed
FOOTER_HINTcolor constant from palette (useTEXT_MUTEDorTEXT_HINTinstead)
Fixed
- Test updates to align with simplified footer logic
- Empty state placeholder text removed for cleaner UI
0.3.32 - 2026-04-11
Added
- Finance tool: Yahoo Finance v8 quote endpoint with chart fallback, supporting stocks, ETFs, indices, forex, and crypto lookups.
- Header widget redesign: proportional truncation, context-usage bar with gradient fill, streaming indicator, and graceful narrow-terminal degradation.
- Expanded test coverage: 680+ tests including footer state, context spans, plan prompt lifecycle, workspace context refresh, header rendering, and finance tool integration tests with wiremock.
- Workspace context refresh with configurable TTL and deferred initial fetch.
- Config command additions for runtime settings management.
Changed
- Redesigned footer status strip with mode/model/status layout, context bar, and narrow-terminal fallback.
- Plan prompt now uses numeric selection (1-4) instead of keyword input; old aliases are sent as regular messages.
- Archived outdated docs (
workspace_migration_status.md->docs/archive/). - Trimmed AGENTS.md boilerplate and updated task counts.
- Clarified release-surface documentation: crates.io publication may lag the workspace/npm wrapper.
Fixed
- Header
metadata_spansnow usessaturating_subto prevent underflow on narrow terminals. - Finance tool reuses a single HTTP client instead of rebuilding per request.
- Finance tool tests no longer leak temp directories.
0.3.31 - 2026-03-08
Added
- Replaced the finance tool backend with Yahoo Finance v8 + CoinGecko fallback for reliable real-time market data (stocks, ETFs, indices, forex, crypto).
- Added compaction UX: status strip shows animated COMPACTING indicator during context summarization, footer reflects compaction state, and CompactionCompleted events now include message count statistics.
- Added send flash: brief tinted background highlight on the last user message after sending.
- Added braille typing indicator with smooth 10-frame animation cycle.
Changed
- Redesigned the footer status strip with mode/model/token/cost layout, quadrant separators, and a context-usage bar.
- Added Unicode prefix indicators (▸ You, ◆ Answer, ● System) to chat history cells for visual distinction.
- Improved thinking token delineation with labeled delimiters in transcript rendering.
- Refactored source code into workspace crates for better modularity and dependency management.
Fixed
- Fixed Plan mode ESC key dismissing the prompt without clearing
plan_prompt_pending, which prevented the prompt from reappearing on subsequent plan completions. - Fixed clippy lint (collapsible_if) in web browsing session management.
[0.3.30] - 2026-03-06
Added
- Added a release-ready local npm smoke path that builds binaries, serves release assets locally, packs the wrapper, installs the tarball, and checks both entrypoints before publish.
- Added an opt-in full-matrix local release-asset fixture so
npm run release:checkcan be exercised before GitHub release assets exist.
Changed
- Bumped the Rust workspace crates and npm wrapper to
0.3.30. - Pointed the npm wrapper's default
deepseekBinaryVersionat0.3.30for the next coordinated Rust + npm release. - Updated the crates dry-run helper to work from a dirty workspace and to preflight dependent workspace crates without requiring unpublished versions to already exist on crates.io.
[0.3.29] - 2026-03-03
Added
- Added npm publish-time release asset verification for the
deepseek-tuipackage to fail fast when expected GitHub binaries are missing. - Added checksum manifests to GitHub release assets and checksum verification in the npm installer.
- Added
npm packinstall-and-smoke CI coverage for thedeepseek-tuiwrapper package. - Added an end-to-end release runbook covering crates.io, GitHub Releases, and npm publication.
Changed
- Updated npm package documentation for clearer install modes, environment overrides, and release integrity behavior.
- Improved installer support-matrix error messaging for unsupported platform/architecture combinations.
- Decoupled npm package version from default binary artifact version via
deepseekBinaryVersion, enabling packaging-only npm releases. - Moved the
deepseek-tuibinary target insidecrates/tuisocargo publish --dry-run -p deepseek-tuiworks from the workspace package layout. - Replaced the root-level crates publish workflow with an ordered workspace publish flow.
- Reworked first-run onboarding and README copy around primary workflows instead of shortcut memorization.
- Relaxed onboarding API-key format heuristics so unusual keys warn instead of blocking setup.
0.3.28 - 2026-03-02
Added
- Converted the project to a modular Cargo workspace using a
crates/layout. - Added new crate boundaries mirroring a deepseek architecture (
agent,config,core,execpolicy,hooks,mcp,protocol,state,tools,tui-core,tui, andapp-server).
Changed
- Added parity CI coverage with protocol/state/snapshot checks.
- Updated release workflow to build both
deepseekanddeepseek-tuibinaries.
[0.3.26] - 2026-03-02
Fixed
- Resolved SSE stream corruption caused by byte/string position mismatch in streaming parse flow.
- Hardened base URL validation to reject non-HTTP/HTTPS schemes.
- Prevented multi-byte UTF-8 truncation panics in common-prefix and runtime thread summary paths.
- Corrected context usage alert thresholds by separating warning and critical trigger levels.
Changed
- Removed non-code utility tools from the runtime tool registry (
calculator,weather,sports,finance,time) and related wiring. - Consolidated duplicate URL encoding helpers by delegating to shared
crate::utils::url_encode. - Replaced broad crate-level lint suppressions with targeted
#[allow(...)]annotations where justified. - Cleaned up dead APIs, unused struct fields, unused builder helpers, and non-integrated modules.
- Addressed clippy findings across the codebase (collapsible conditionals, defaults, indexing helpers, and API signature cleanup).
[0.3.24] - 2026-02-25
Fixed
- Preserve reasoning-only assistant turns for DeepSeek reasoning models (
deepseek-reasoner, R-series markers) when rebuilding chat history. - Align SSE tool streaming indices so each tool block start/delta/stop uses the same block index.
- Prevent transcript auto-scroll-to-bottom when a non-empty transcript selection is active.
- Allow session picker search mode to accept the current selection with a single
Enterpress. - Preserve tool output whitespace/indentation while still wrapping long unbroken tokens.
- Make transcript selection copy/highlighting display-width aware (wide chars and tabs).
- Gate execpolicy behavior on the
exec_policyfeature flag across CLI/tool execution paths. - Run doctor API connectivity checks using the effective loaded config/profile (instead of reloading defaults).
- Parse DeepSeek model context-window suffix hints such as
-32kand-256k. - Update README config docs with key environment overrides and a direct link to full configuration docs.
0.3.23 - 2026-02-24
Changed
- Updated project copy to describe the app as a terminal-native TUI/CLI for DeepSeek models (not pinned to a specific model generation).
Fixed
- Model selection and config validation now accept any valid
deepseek-*model ID (including future releases), while still normalizing common aliases likedeepseek-v3.2anddeepseek-r1. - Tool-call recovery now auto-loads deferred tools when the model requests them directly, instead of failing with manual
tool_search_*instructions. - YOLO mode now preloads tools by default (including deferred MCP tools), so model tool calls can run immediately without discovery indirection.
- Unknown tool-call failures now include discovery guidance and nearest tool-name suggestions instead of generic availability errors.
- Slash-command errors now suggest the closest known command (for example
/modle->/model) instead of only returning a generic unknown-command message.
0.3.22 - 2026-02-19
Added
- Interactive
/configediting modal for runtime settings updates.
Changed
- Retired user-facing
/setcommand path (no longer reachable/discoverable). - Replaced
/deepseekcommand behavior with/links(aliases:dashboard,api).
Fixed
- Legacy
/setand/deepseekinputs now return migration guidance instead of generic unknown-command errors.
0.3.21 - 2026-02-19
Added
- Parallel tool execution in
multi_tool_use.parallelfor independent task workflows. - Session resume-thread coverage in tests.
Changed
- Desktop and web parity polish across the TUI and runtime surfaces.
- Onboarding and approval UX refinement from prior phase 3 iteration.
Fixed
- Runtime pre-release startup issues and config-path edge cases.
- Clippy lint regressions introduced by the last parity pass.
Security/Hardening
- General pre-release hardening for runtime app behavior.
0.3.17 - 2026-02-16
Fixed
- Config loading now expands
~inDEEPSEEK_CONFIG_PATHand--configpaths. - When
DEEPSEEK_CONFIG_PATHpoints to a missing file, config loading now falls back to~/.deepseek/config.tomlif it exists.
Changed
- Removed committed transient runtime artifacts (
session_*.json,.deepseek/trusted) and added ignore rules to prevent re-commit.
0.3.16 - 2026-02-15
Added
deepseek modelsCLI command to fetch and list models from the configured/v1/modelsendpoint (with--jsonoutput mode)./modelsslash command to fetch and display live model IDs in the TUI.- Slash-command autocomplete hints in the composer plus
Tabcompletion for/commands. - Command palette modal (
Ctrl+K) for quick insertion of slash commands and skills. - Persistent right sidebar in wide terminals showing live plan/todo/sub-agent state.
- Expandable tool payload views (
vin transcript,vin approval modal) for full params/output inspection. - Runtime HTTP/SSE API (
deepseek serve --http) with durable thread/turn/item lifecycle, interrupt/steer, and replayable event timeline. - Background task queue (
/task add|list|show|cancelandPOST /v1/tasks) with persistent storage, bounded worker pool, and timeline/artifact tracking.
Changed
- Centralized the default text model (
DEFAULT_TEXT_MODEL) and shared common model list to reduce drift across runtime/config paths. /modelnow clarifies that any valid DeepSeek model ID is accepted (including future releases), while still showing common model IDs.
Fixed
- Expanded reasoning-model detection for chat history reconstruction (supports R-series and reasoner-style naming without hardcoding single versions).
- Aligned docs/config examples with the then-current runtime default model.
0.3.14 - 2026-02-05
Added
web.runnow supportsimage_query(DuckDuckGo image search)multi_tool_use.parallelnow supports safe MCP meta tools (list_mcp_resources,mcp_read_resource, etc.)
Fixed
- Encode tool-call function names when rebuilding Chat Completions history (keeps dotted tool names API-safe)
Changed
- Prompts: stronger
web.runcitation placement and quote-limit guidance
0.3.13 - 2026-02-04
Fixed
- Restore an in-app scrollbar for the transcript view
0.3.12 - 2026-02-04
Fixed
- Map dotted tool names to API-safe identifiers for DeepSeek tool calls
- Encode any invalid tool names for API tool lists while preserving internal names
0.3.11 - 2026-02-04
Fixed
- Fix tool name mapping for DeepSeek API
0.3.10 - 2026-02-04
Fixed
- Always enable mouse wheel scrolling in the TUI (even without alt screen)
[0.3.9] - 2026-02-04
Removed
- RLM mode, tools, and documentation pending a faithful implementation of the MIT RLM design
- Duo mode tools and prompts pending a citable research spec
Fixed
- Footer context usage bar remains visible while status toasts are shown
Changed
- Updated prompts and docs to reflect the simplified mode/tool surface
[0.3.8] - 2026-02-03
Fixed
- Resolve clippy warnings (CI
-D warnings) in new tool implementations
[0.3.7] - 2026-02-03
Added
- Tooling parity updates:
weather,finance,sports,time,calculator,request_user_input,multi_tool_use.parallel,web.run - Shell streaming helpers:
exec_shell_waitandexec_shell_interact - Sub-agent controls:
send_inputandwait(with aliases) - MCP resource helpers:
list_mcp_resources,list_mcp_resource_templates, andread_mcp_resourcealias
Changed
- Skills directory selection now prefers workspace
.agents/skills, then./skills, then global - Docs and prompts updated to reflect new tool surface and parity notes
0.3.6 - 2026-02-02
Added
- New welcome banner on startup showing "Welcome to DeepSeek TUI!" with directory, session ID, and model info
- Visual context progress bar in footer showing usage with block characters [████░░░░░░] and percentage
Changed
- Removed custom block-character scrollbar from chat area - now uses terminal's native scroll
- Simplified header bar: removed context percentage indicator (moved to footer as progress bar)
0.3.5 - 2026-01-30
Added
- Intelligent context offloading: large tool results (>15k chars) are automatically moved to RLM memory to preserve the context window
- Persistent history context: compacted messages are offloaded to RLM
historyvariable for recall - Full MCP protocol support: SSE transport, Resources (
resources/list,resources/read), and Prompts (prompts/list,prompts/get) mcp_read_resourceandmcp_get_promptvirtual tools exposed to the model- Dialectical Duo mode with specialized TUI rendering (
Player/Coachhistory cells) - Dynamic system prompt refreshing at each turn for up-to-date RLM/Duo/working-set context
project_maptool for automatic codebase structure discoverydelegate_to_agentalias for streamlined sub-agent delegation
Changed
- Default theme changed to 'Whale' with updated color palette
with_agent_toolsnow includesproject_map,test_runner, and conditionally RLM tools for all agent modes- MCP
McpServerConfig.commandis nowOption<String>to support URL-only (SSE) servers
Fixed
- MCP test compilation errors for updated
McpServerConfigstruct shape
0.3.4 - 2026-01-29
Changed
- Updated Cargo.lock dependencies
Fixed
- Compaction tool-call pairing: enforce bidirectional tool-call/tool-result integrity with fixpoint convergence
- Safety net scanning to drop orphan tool results in the request builder
- Double-dispatch race in parallel tool execution
0.3.3 - 2026-01-28
Added
- TUI polish: Kimi-style footer with mode/model/token display
- Streaming thinking blocks with dedicated rendering
- Loading animation improvements
0.3.2 - 2026-01-28
Fixed
- Preserve tool-call + tool-result pairing during compaction to avoid invalid tool message sequences
- Drop orphan tool results in request builder as a safety net to prevent API 400s
0.3.1 - 2026-01-27
Added
deepseek setupto bootstrap MCP config and skills directoriesdeepseek mcp initto generate a templatemcp.jsonat the configured path
Changed
deepseek doctornow follows the resolved config path and config-derived MCP/skills locations
Fixed
- Doctor no longer reports missing MCP/skills when paths are overridden via config or env
0.3.0 - 2026-01-27
Added
- Repo-aware working set tracking with prompt injection for active paths
- Working set signals now pin relevant messages during auto-compaction
- Offline eval harness (
deepseek eval) with CI coverage in the test job - Shell tool now emits stdout/stderr summaries and truncation metadata
- Dependency-aware
agent_swarmtool for orchestrating multiple sub-agents - Expanded sub-agent tool access (apply_patch, web_search, file_search)
Changed
- Auto-compaction now accounts for pinned budget and preserves working-set context
- Apply patch tool validates patch shape, reports per-file summaries, and improves hunk mismatch diagnostics
- Eval harness shell step now uses a Windows-safe default command
- Increased
max_subagentsclamp to1..=20
0.2.2 - 2026-01-22
Fixed
- Session save no longer panics on serialization errors
- Web search regex patterns are now cached for better performance
- Improved panic messages for regex compilation failures
[0.2.1] - 2026-01-22
Fixed
- Resolve clippy warnings for Rust 1.92
0.2.0 - 2026-01-20
Changed
- Removed npm package distribution; now Cargo-only
- Clean up for public release
Fixed
- Disabled automatic RLM mode switching; use /rlm or /aleph to enter RLM mode
- Fixed cargo fmt formatting issues
0.0.2 - 2026-01-20
Fixed
- Disabled automatic RLM mode switching; use /rlm or /aleph to enter RLM mode.
0.0.1 - 2026-01-19
Added
- DeepSeek Responses API client with chat-completions fallback
- CLI parity commands: login/logout, exec, review, apply, mcp, sandbox
- Resume/fork session workflows with picker fallback
- DeepSeek blue branding refresh + whale indicator
- Responses API proxy subcommand for key-isolated forwarding
- Execpolicy check tooling and feature flag CLI
- Agentic exec mode (
deepseek exec --auto) with auto-approvals
Changed
- Removed multimedia tooling and aligned prompts/docs for text-only DeepSeek API
0.1.9 - 2026-01-17
Added
- API connectivity test in
deepseek doctorcommand - Helpful error diagnostics for common API failures (invalid key, timeout, network issues)
0.1.8 - 2026-01-16
Added
- Renderable widget abstraction and modal view stack for TUI composition
- Parallel tool execution with lock-aware scheduling
- Interactive shell mode with terminal pause/resume handling
Changed
- Tool approval requirements moved into tool specs
- Tool results are recorded in original request order
0.1.7 - 2026-01-15
Added
- Duo mode (player-coach autocoding workflow)
- Character-level transcript selection
Fixed
- Approval flow tool use ID routing
- Cursor position sync for transcript selection
0.1.6 - 2026-01-14
Added
- Auto-RLM for large pasted blocks with context auto-load
chunk_autoandrlm_queryauto_chunksfor quick document sweeps- RLM usage badge with budget warnings in the footer
Changed
- Auto-RLM now honors explicit RLM file requests even for smaller files
0.1.5 - 2026-01-14
Added
- RLM prompt with external-context guidance and REPL tooling
- RLM tools for context loading, execution, status, and sub-queries (rlm_load, rlm_exec, rlm_status, rlm_query)
- RLM query usage tracking and variable buffers
- Workspace-relative
@pathsupport for RLM loads - Auto-switch to RLM when users request large file analysis (or the largest file)
Changed
- Removed Edit mode; RLM chat is default with /repl toggle
0.1.0 - 2026-01-12
Added
- Initial alpha release of DeepSeek TUI
- Interactive TUI chat interface
- DeepSeek API integration (OpenAI-compatible Responses API)
- Tool execution (shell, file ops)
- MCP (Model Context Protocol) support
- Session management with history
- Skills/plugin system
- Cost tracking and estimation
- Hooks system and config profiles
- Example skills and launch assets