Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.4] - 2026-06-18

### Fixed

- **A late first transcript flush under MCP/tool load no longer surfaces a
delivered turn as lost.** When MCP servers and tool schemas load under
contention, claude defers a fresh session's first `<id>.jsonl` write by 3–9 s —
past the fixed anchor window. `send()` then returned the `DELIVERY_UNCONFIRMED`
sentinel, and a reader that saw `wait()→completed` still read an empty
`messagesSince("0")` / `turnComplete === false`, even though the turn had
landed. claudemux now tolerates the late flush at both seams against one shared
budget: the write-side cursor anchor keeps polling while the transcript file is
addressable-but-absent, and a read-side settle waits the first records out
once. A present / fast-flush session is untouched (the anchor keeps its exact
window; the settle returns on the first poll). The settle is bounded on both
success and exhaustion, so a never-flushing session (a crashed/slow resume) is
never re-stalled. Verified live (claude 2.1.181): 1/20 → 0/20 sentinels under
20 concurrent heavy tool-MCP sessions. See
[ADR 0009](docs/decisions/0009-tolerate-late-first-transcript-flush.md).

## [0.2.3] - 2026-06-09

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@wastedcode/claudemux",
"version": "0.2.3",
"version": "0.2.4",
"publishConfig": {
"access": "public"
},
Expand Down
Loading