From 26ed893bea583fc914e8cd384268cd763273e7a3 Mon Sep 17 00:00:00 2001 From: Inder Singh Date: Thu, 18 Jun 2026 23:02:16 +0000 Subject: [PATCH] chore(release): 0.2.4 Patch release for the late-first-transcript-flush fix (#13): a delivered turn no longer surfaces as DELIVERY_UNCONFIRMED / empty messagesSince when claude defers its first .jsonl write under MCP/tool load. Backward-compatible bug fix; see ADR 0009 and the CHANGELOG. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01UgUf4t5AZkFKtgGWu8qxWL --- CHANGELOG.md | 20 ++++++++++++++++++++ package.json | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7086bd2..9a27431 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 `.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 diff --git a/package.json b/package.json index 08b5bca..3f683b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@wastedcode/claudemux", - "version": "0.2.3", + "version": "0.2.4", "publishConfig": { "access": "public" },