From 1c0a86f556a57fe79a991c537c966b8fd79e92bb Mon Sep 17 00:00:00 2001 From: nesquena-hermes Date: Fri, 26 Jun 2026 02:32:48 +0000 Subject: [PATCH] Release XZ (v0.51.670): chronological tool-call rows before final answer incl equal-ts (#4893) --- CHANGELOG.md | 6 ++++++ tests/test_merge_key_tool_calls.py | 1 - 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac34f52c..d709d5af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ ## [Unreleased] +## [v0.51.670] — 2026-06-26 — Release XZ (settled tool-call rows stay before the final answer) + +### Fixed + +- **A complete final answer no longer looks unfinished when an earlier tool call shares its timestamp.** On a paginated load, older `state.db` assistant rows carrying distinct tool calls were appended after the settled final answer instead of inserted in order, so the renderer treated the real final answer as a non-final segment until a refresh. The merge now inserts those tool-call rows chronologically — including the equal-timestamp case (a fast tool call and the final answer landing in the same second), where the final answer now correctly stays last. The existing dedupe, tool-call→result block integrity, and watermark reconciliation are unchanged. Thanks @franksong2702. (#4893) + ## [v0.51.669] — 2026-06-26 — Release XY (set OpenAI priority service tier from the model picker) ### Added diff --git a/tests/test_merge_key_tool_calls.py b/tests/test_merge_key_tool_calls.py index 0f44b00f..9cbcbaaf 100644 --- a/tests/test_merge_key_tool_calls.py +++ b/tests/test_merge_key_tool_calls.py @@ -211,7 +211,6 @@ class TestMergeToolCallsEndToEnd: ) # The tool result must stay immediately after its assistant(tool_calls). - idxs = {id(m): i for i, m in enumerate(result)} asst_idx = next(i for i, m in enumerate(result) if m.get("tool_calls") and m["tool_calls"][0]["id"] == "call_1") res_idx = next(i for i, m in enumerate(result)