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". - Final-pass wire-payload sanitizer in the chat-completions client 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 (internal cleanup, no user-visible behavior change).
Install
npm install -g deepseek-tuiOr from source:
git clone https://github.com/Hmbown/DeepSeek-TUI.git
cd DeepSeek-TUI
cargo install --path crates/tui --locked # requires Rust 1.85+Full changelog: https://github.com/Hmbown/DeepSeek-TUI/blob/main/CHANGELOG.md