aboutsummaryrefslogtreecommitdiffstats
path: root/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md27
1 files changed, 27 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6e9a831..34314f8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -34,10 +34,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
`model`. Token counts come from the stream's final usage chunk and power the
cost readout; the model column records which model actually replied, so a
switched conversation prices each turn correctly.
+- Three more columns on `messages`: `provider`, `usage_json` and
+ `reported_cost_usd`. The provider name is recorded when a reply finishes so
+ history stays self-describing even if a provider is later renamed or
+ removed; `usage_json` keeps every round's raw usage block from the stream
+ as a JSON array (a searched turn makes one API call per search round, and
+ all of them are billed, so all of them survive) for external consumers
+ such as the cost dashboard's ingester; and `reported_cost_usd` stores the
+ GUI's hand-entered-price estimate for the reply, summed across rounds, as
+ a sanity check only, staying NULL for an unpriced model rather than
+ claiming it cost nothing.
- Per-provider `thinking_budget` option, for endpoints (currently SiliconFlow)
that cap chain-of-thought tokens separately from the final answer. Unset
providers skip the key entirely so other endpoints do not receive an unknown
parameter.
+- Per-provider `replay_reasoning` option. When set and web search is enabled,
+ each prior assistant turn's `reasoning_content` is replayed on the next
+ request, which interleaved-thinking providers (DeepSeek, SiliconFlow's
+ GLM-4.7+) require when a `tools` key is present. Off by default so other
+ providers do not pay context and input tokens for thinking they ignore.
+- On-demand diagnostic log. Setting `LLAMACHAT_DEBUG_LOG` to a path appends
+ timestamped provider-error records (status, request body, full response) to
+ that file; unset, it writes nothing, so a normal launch never grows a log.
### Fixed
@@ -48,6 +66,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
which could be too small for a reasoning model. Non-local providers now send
`max_tokens = 32768`, leaving room for both chain-of-thought reasoning and
the answer.
+- A streamed tool call is now detected even when the provider puts
+ `finish_reason: "tool_calls"` on the same SSE line as the usage block (the
+ `include_usage` final chunk). The parser previously returned that line as
+ `usage` and dropped the finish signal, so a DeepSeek web search never
+ triggered and the turn ended at the thinking.
+- A searched turn now replays the model's `reasoning_content` verbatim on the
+ assistant tool-call message. Interleaved-thinking models (DeepSeek V3.2+/V4,
+ GLM-4.7+ on SiliconFlow) require this and stop answering — ending the turn at
+ the thinking — when it is dropped.
Tool calling and reasoning output vary between providers. Web search on a
cloud model may not work as reliably as it does with a local router.