diff --git a/CHANGELOG.md b/CHANGELOG.md index e3463eb4cb..e7df4086e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,12 @@ All notable changes to lean-ctx are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/). -## [Unreleased] +## [3.10.1] — 2026-08-29 -Merged after the `v3.10.0` tag (`5b69202`), so **none of this is in the 3.10.0 -artifacts** — a user on 3.10.0 still hits every defect below. +Patch release: the nine defect fixes below merged after the `v3.10.0` tag +(`5b69202`) and are therefore **absent from the 3.10.0 artifacts**. 3.10.1 +carries them, plus a CI-only test fix. No new features, no behavior change +beyond the fixes themselves. ### Fixed @@ -53,6 +55,18 @@ artifacts** — a user on 3.10.0 still hits every defect below. dashboard`, `lean-ctx cep`, `lean-ctx index watch`). - **Dependency** — `chacha20` 0.10.1 → 0.10.2 (0.10.1 was yanked upstream). +### Internal + +- **Deterministic auto-detach test (#1611)** — the `auto_detached_result` + harness helper raced its own premise (a 10 ms soft cap against a `sleep 0.1` + child) and turned `main` red on macOS after a green PR run. The child now + blocks on a barrier file until the detach has been observed, so the path + under test is exercised by construction. Test-only; no shipped code involved. +- **Post-release records (#1612)** — the `v3.10.0` artifacts were verified + against `SHA256SUMS` and `release-manifest.json`, and a clean-environment + install passed `lean-ctx doctor`; the changelog now states which fixes a + given tag does and does not carry. + ## [3.10.0] — 2026-08-29 ### Added — context-budget transparency (`tools health`) diff --git a/packages/lean-ctx-bin/package.json b/packages/lean-ctx-bin/package.json index 81df3b567f..9e1464e7c7 100644 --- a/packages/lean-ctx-bin/package.json +++ b/packages/lean-ctx-bin/package.json @@ -1,6 +1,6 @@ { "name": "lean-ctx-bin", - "version": "3.10.0", + "version": "3.10.1", "description": "LeanCTX \u2014 a local Context SDK for AI agents. Select, shape, reuse, recover, and measure context before inference. No Rust required.", "keywords": [ "lean-ctx", diff --git a/packages/pi-lean-ctx/package-lock.json b/packages/pi-lean-ctx/package-lock.json index c3d584693f..5b0c7c65ea 100644 --- a/packages/pi-lean-ctx/package-lock.json +++ b/packages/pi-lean-ctx/package-lock.json @@ -1,12 +1,12 @@ { "name": "pi-lean-ctx", - "version": "3.9.20", + "version": "3.10.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-lean-ctx", - "version": "3.9.20", + "version": "3.10.1", "license": "Apache-2.0", "devDependencies": { "@earendil-works/pi-coding-agent": "^0.84.3", diff --git a/packages/pi-lean-ctx/package.json b/packages/pi-lean-ctx/package.json index f9aa88ab33..7b288208b5 100644 --- a/packages/pi-lean-ctx/package.json +++ b/packages/pi-lean-ctx/package.json @@ -1,6 +1,6 @@ { "name": "pi-lean-ctx", - "version": "3.10.0", + "version": "3.10.1", "description": "Pi Coding Agent extension — routes bash/read/grep/find/ls through lean-ctx for strong token savings. The embedded MCP bridge (on by default) adds a persistent session cache so unchanged re-reads cost ~13 tokens.", "keywords": [ "pi-package", diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 70750152fc..29dd664e82 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -2041,7 +2041,7 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lean-ctx" -version = "3.10.0" +version = "3.10.1" dependencies = [ "anyhow", "argon2", diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 5ce974c819..abd965ec24 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -21,7 +21,7 @@ default-members = ["."] [package] name = "lean-ctx" -version = "3.10.0" +version = "3.10.1" edition = "2024" autobins = false description = "Local context engine, CLI, MCP server, and proxy for AI agents." diff --git a/tests/delivery/test_check_release_tag.py b/tests/delivery/test_check_release_tag.py index a937f64dab..1762428b99 100644 --- a/tests/delivery/test_check_release_tag.py +++ b/tests/delivery/test_check_release_tag.py @@ -37,7 +37,7 @@ def assert_tag_rejected(self, tag): GATE.verify_tag(tag, root) def test_current_repository_tag_matches_all_release_versions(self): - self.assertEqual(GATE.verify_tag("v3.10.0", ROOT), "3.10.0") + self.assertEqual(GATE.verify_tag("v3.10.1", ROOT), "3.10.1") def test_accepts_strict_prerelease_when_every_manifest_matches(self): temporary, root = self.fixture_root("3.9.11-rc.1")