diff --git a/CHANGELOG.md b/CHANGELOG.md index c64357e3..83c98509 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,33 @@ ### Fixed +- **A failed chat launch no longer leaves the session stuck "running".** If the worker thread + couldn't start, its stream ownership and the session's pending-stream fields were never cleared, + so the session could look permanently active and the registries grew. Launch failure now clears + exactly that stream's records, after releasing the chat-start lock, and never evicts a successor + stream. (#6869, #6937 by @jbdrak) +- **A compressed conversation no longer shows up twice in the sidebar.** When context + compression started the continuation a few milliseconds before the parent was marked ended, the + continuation wasn't recognised. The sidebar then showed a duplicate same-title row plus a + spurious child-session entry, and opening the conversation didn't stitch the transcript. Both the + sidebar and the transcript stitcher now accept a bounded (2 s) early start when every other + lineage signal agrees: same source, direct parent link, a compression (or `cli_close`) end reason and not a fork. + (#6931, #7021 by @webtecnica) +- **The profile switcher no longer 500s in a two-container Docker setup.** With the agent + source not mounted (`HERMES_WEBUI_CHAT_BACKEND=gateway`), `GET /api/profiles` fell through to + a skills-stats fallback that imported `agent.skill_utils` unguarded, so the missing module + surfaced as an error on every profile-list load. The import is now guarded and the skill + stats report as unknown in that case, so the picker stays usable (the skills line is simply + omitted). Thanks @webtecnica. (#7305, #7312) + +- **A title that mixes Chinese, Japanese or Korean with English terms is no longer rejected.** + The cross-script guard that stops a generated title from drifting into the wrong language + treated the borrowed Latin words in a CJK title as drift, so a valid title like + `WeChat Pay 回调失败排查` or `Python 代码修复` was thrown away and the session kept its + fallback title. Latin terms are now accepted when the title also contains CJK text, while + an all-Latin title for a CJK conversation is still rejected. Thanks @MuhammadUsamaMX. + (#7693, #7727) + - **A late-arriving prompt no longer renders below the reply it asked for.** When a message reached the transcript from `state.db` after the sidecar had already been merged⟪HERMES-CONTEXT-COMPRESSION: 809 of 1,009 chars omitted here by Hermes's context compressor. This is NOT part of the original tool call and must never be reproduced in new output — always write full, untruncated content.⟫- **A rejected request no longer poisons the next one on the same connection.** `server.py` is a raw HTTP/1.1 handler where `rfile` is the socket itself, so answering a request