Files
codewhale/CHANGELOG.md
T
2026-04-25 10:48:00 -05:00

26 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

[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-capture or tui.mouse_capture = false when 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_content on 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-screen mode so terminal-native scrolling can work.

[0.4.0] - 2026-04-23

Added

  • DeepSeek V4 support: deepseek-v4-pro (flagship) and deepseek-v4-flash (fast/cheap) are now first-class model IDs with 1M context windows.
  • Reasoning-effort tier: new reasoning_effort config field (off | low | medium | high | max) mapped to DeepSeek's reasoning_effort + thinking request fields. Defaults to max.
  • 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-pro priced at $0.145/$1.74/$3.48 per 1M tokens (cache-hit/miss/output); deepseek-v4-flash and legacy aliases at $0.028/$0.14/$0.28.

Changed

  • Default model flipped to deepseek-v4-pro (from deepseek-reasoner).
  • deepseek-chat / deepseek-reasoner remain as silent aliases of deepseek-v4-flash for 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_content now recognizes deepseek-v4* so thinking streams render correctly on V4 models.
  • DeepSeek V4 thinking-mode tool calls now preserve prior assistant reasoning_content whenever 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 thinking parameter instead of the OpenAI SDK-only extra_body wrapper.
  • Config, env, and UI model selection now normalize legacy DeepSeek aliases to deepseek-v4-flash instead of preserving old model labels.
  • npm wrapper first-run downloads now use process-unique temp files so concurrent deepseek / deepseek-tui invocations do not race on *.download files.

0.3.33 - 2026-04-11

Changed

  • Footer polish: simplified footer rendering, removed footer clock label, updated status line layout
  • Palette cleanup: removed FOOTER_HINT color constant

Removed

  • FOOTER_HINT color constant from palette (use TEXT_MUTED or TEXT_HINT instead)

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_spans now uses saturating_sub to 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:check can 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 deepseekBinaryVersion at 0.3.30 for 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-tui package 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 pack install-and-smoke CI coverage for the deepseek-tui wrapper 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-tui binary target inside crates/tui so cargo publish --dry-run -p deepseek-tui works 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, and app-server).

Changed

  • Added parity CI coverage with protocol/state/snapshot checks.
  • Updated release workflow to build both deepseek and deepseek-tui binaries.

[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 Enter press.
  • 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_policy feature 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 -32k and -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 like deepseek-v3.2 and deepseek-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 /config editing modal for runtime settings updates.

Changed

  • Retired user-facing /set command path (no longer reachable/discoverable).
  • Replaced /deepseek command behavior with /links (aliases: dashboard, api).

Fixed

  • Legacy /set and /deepseek inputs now return migration guidance instead of generic unknown-command errors.

0.3.21 - 2026-02-19

Added

  • Parallel tool execution in multi_tool_use.parallel for 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 ~ in DEEPSEEK_CONFIG_PATH and --config paths.
  • When DEEPSEEK_CONFIG_PATH points to a missing file, config loading now falls back to ~/.deepseek/config.toml if 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 models CLI command to fetch and list models from the configured /v1/models endpoint (with --json output mode).
  • /models slash command to fetch and display live model IDs in the TUI.
  • Slash-command autocomplete hints in the composer plus Tab completion 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 (v in transcript, v in 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|cancel and POST /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.
  • /model now 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.run now supports image_query (DuckDuckGo image search)
  • multi_tool_use.parallel now 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.run citation 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_wait and exec_shell_interact
  • Sub-agent controls: send_input and wait (with aliases)
  • MCP resource helpers: list_mcp_resources, list_mcp_resource_templates, and read_mcp_resource alias

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 history variable for recall
  • Full MCP protocol support: SSE transport, Resources (resources/list, resources/read), and Prompts (prompts/list, prompts/get)
  • mcp_read_resource and mcp_get_prompt virtual tools exposed to the model
  • Dialectical Duo mode with specialized TUI rendering (Player / Coach history cells)
  • Dynamic system prompt refreshing at each turn for up-to-date RLM/Duo/working-set context
  • project_map tool for automatic codebase structure discovery
  • delegate_to_agent alias for streamlined sub-agent delegation

Changed

  • Default theme changed to 'Whale' with updated color palette
  • with_agent_tools now includes project_map, test_runner, and conditionally RLM tools for all agent modes
  • MCP McpServerConfig.command is now Option<String> to support URL-only (SSE) servers

Fixed

  • MCP test compilation errors for updated McpServerConfig struct 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 setup to bootstrap MCP config and skills directories
  • deepseek mcp init to generate a template mcp.json at the configured path

Changed

  • deepseek doctor now 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_swarm tool 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_subagents clamp to 1..=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 doctor command
  • 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_auto and rlm_query auto_chunks for 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 @path support 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