From 8de959fea3784c0b124f03fd7a9d5760e9defe7d Mon Sep 17 00:00:00 2001 From: davidrobertson Date: Wed, 5 Aug 2026 09:22:18 -0400 Subject: [PATCH] build: prepare v0.2.9 release --- README.md | 35 +++++++++++---------- docs/releases/v0.2.9.md | 33 +++++++++++++++++++ plugins/codex-lcm/.codex-plugin/plugin.json | 2 +- plugins/codex-lcm/.npmignore | 1 + plugins/codex-lcm/package.json | 2 +- plugins/codex-lcm/src/cli.ts | 2 +- plugins/codex-lcm/src/mcp.ts | 2 +- 7 files changed, 56 insertions(+), 21 deletions(-) create mode 100644 docs/releases/v0.2.9.md create mode 100644 plugins/codex-lcm/.npmignore diff --git a/README.md b/README.md index cf370a0..f77e53f 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ operation. Install the latest tagged release from GitHub with Codex's native plugin flow: ```sh -codex plugin marketplace add Team-Volt/codex-lcm --ref v0.2.8 +codex plugin marketplace add Team-Volt/codex-lcm --ref v0.2.9 codex plugin add codex-lcm@codex-lcm ``` @@ -123,20 +123,20 @@ The native plugin manifest wires the MCP server, lifecycle hooks, and The first TUI session after install asks you to review and trust the lifecycle hooks. That is expected. Hooks capture the session data that LCM indexes. -Upgrade an existing GitHub marketplace install to `v0.2.8`: +Upgrade an existing GitHub marketplace install to `v0.2.9`: ```sh codex plugin marketplace remove codex-lcm -codex plugin marketplace add Team-Volt/codex-lcm --ref v0.2.8 +codex plugin marketplace add Team-Volt/codex-lcm --ref v0.2.9 codex plugin add codex-lcm@codex-lcm ``` -Upgrade a local checkout install to `v0.2.8` by checking out the release tag, +Upgrade a local checkout install to `v0.2.9` by checking out the release tag, then asking Codex to refresh the installed plugin cache: ```sh git -C /path/to/codex-lcm fetch --tags origin -git -C /path/to/codex-lcm checkout v0.2.8 +git -C /path/to/codex-lcm checkout v0.2.9 codex plugin add codex-lcm@codex-lcm ``` @@ -165,7 +165,7 @@ codex plugin remove codex-lcm@codex-lcm ## Release Status -Current release: `v0.2.8`. +Current release: `v0.2.9`. Codex LCM is a local-first Codex memory plugin with native plugin installation, hook ingestion, sanitized raw event storage, SQLite FTS, DAG-backed retrieval, @@ -175,19 +175,20 @@ tools. The `lcm-recall` skill gives Codex a repeatable retrieval workflow for resumes, compaction recovery, long-running work, and questions about prior sessions. -### v0.2.8 notes +### v0.2.9 notes -This release makes truncated payloads recoverable through search and description -tools, adds a repeatable retrieval-quality benchmark, and fixes two data-shape -issues in stored and packed results. +This release hardens raw event durability, fixes post-compaction recovery so it +packs context once without exposing internal recovery work, expands secret +redaction, and improves paraphrase recall guidance and measurement. -- Preserves sanitized overflow payloads, lets `lcm_grep` search them, and pages - verified content through `lcm_describe`. -- Adds `codex-lcm benchmark retrieval-quality` with Recall@1, Recall@5, mean - reciprocal rank, category scores, and per-query ranks. -- Keeps boolean `private` package metadata instead of redacting it as a secret. -- Returns packed recovery Markdown in MCP structured content so Codex Desktop - can restore context from structured tool results. +- Keeps raw events durable and recoverable across concurrent writers, lock + failures, SQLite failures, and interrupted indexing. +- Requires one successful `lcm_pack_context` result after compaction, then + resumes the task without announcing the recovery step. +- Redacts credential URI passwords and secret assignments nested inside JSON or + shell strings while preserving benign token metrics. +- Expands the retrieval benchmark to 39 sessions and 38 queries, with separate + development and holdout results for paraphrase recall. Use the [Installation](#installation) section for install and upgrade commands. diff --git a/docs/releases/v0.2.9.md b/docs/releases/v0.2.9.md new file mode 100644 index 0000000..9921b23 --- /dev/null +++ b/docs/releases/v0.2.9.md @@ -0,0 +1,33 @@ +`v0.2.9` hardens raw event durability, fixes post-compaction recovery so it +packs context once without exposing internal recovery work, expands secret +redaction, and improves paraphrase recall guidance and measurement. + +## Changes + +- ([#53](https://github.com/Team-Volt/codex-lcm/pull/53)) Retry empty `lcm_grep` results with up to two same-scope query reformulations, and expand the retrieval benchmark to 39 sessions and 38 queries with separate development and holdout metrics. +- ([#54](https://github.com/Team-Volt/codex-lcm/pull/54)) Keep post-compaction recovery pending until context packing succeeds, redact credential URI passwords, enforce private storage permissions, make fresh-store cleanup a no-op, and search each verified overflow payload through its 8 MiB safety bound. +- ([#55](https://github.com/Team-Volt/codex-lcm/pull/55)) Split storage and MCP responsibilities without changing their public contracts, and redact secret assignments nested inside JSON and shell strings while preserving benign token metrics. +- ([#56](https://github.com/Team-Volt/codex-lcm/pull/56)) Keep post-compaction recovery silent unless the user asks about it. +- ([#57](https://github.com/Team-Volt/codex-lcm/pull/57)) Make raw JSONL writes safer under concurrency and lock failures, keep durable events recoverable after SQLite failures, and split storage responsibilities into focused modules without changing the public API. +- ([#58](https://github.com/Team-Volt/codex-lcm/pull/58)) Pack context once after compaction, consume Markdown from that result, and keep recovery pending for failed, malformed, inherited, or unrelated tool results. + +## Upgrade to v0.2.9 + +Restart Codex Desktop or open a fresh Codex CLI/TUI session after upgrading so +the refreshed plugin cache, MCP server, hooks, and skill are loaded. + +For an existing GitHub marketplace install: + +```sh +codex plugin marketplace remove codex-lcm +codex plugin marketplace add Team-Volt/codex-lcm --ref v0.2.9 +codex plugin add codex-lcm@codex-lcm +``` + +For a local checkout install: + +```sh +git -C /path/to/codex-lcm fetch --tags origin +git -C /path/to/codex-lcm checkout v0.2.9 +codex plugin add codex-lcm@codex-lcm +``` diff --git a/plugins/codex-lcm/.codex-plugin/plugin.json b/plugins/codex-lcm/.codex-plugin/plugin.json index 6635a4c..fcf485b 100644 --- a/plugins/codex-lcm/.codex-plugin/plugin.json +++ b/plugins/codex-lcm/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "codex-lcm", - "version": "0.2.8", + "version": "0.2.9", "description": "Codex-native session-first lossless context memory with hook ingestion and MCP retrieval.", "author": { "name": "Team Volt" diff --git a/plugins/codex-lcm/.npmignore b/plugins/codex-lcm/.npmignore new file mode 100644 index 0000000..8959cec --- /dev/null +++ b/plugins/codex-lcm/.npmignore @@ -0,0 +1 @@ +.omo/ diff --git a/plugins/codex-lcm/package.json b/plugins/codex-lcm/package.json index 4508fde..cf30b2d 100644 --- a/plugins/codex-lcm/package.json +++ b/plugins/codex-lcm/package.json @@ -1,6 +1,6 @@ { "name": "codex-lcm", - "version": "0.2.8", + "version": "0.2.9", "description": "Codex-native session-first lossless context memory plugin.", "license": "MIT", "author": "Team Volt", diff --git a/plugins/codex-lcm/src/cli.ts b/plugins/codex-lcm/src/cli.ts index d91cd43..a33f21d 100644 --- a/plugins/codex-lcm/src/cli.ts +++ b/plugins/codex-lcm/src/cli.ts @@ -10,7 +10,7 @@ import { createStorage } from "./storage.ts"; export async function main(argv: string[]): Promise { const [command, ...rest] = argv; if (command === "--version" || command === "-v") { - process.stdout.write("0.2.8\n"); + process.stdout.write("0.2.9\n"); return; } if (command === "--help" || command === "-h" || command === undefined) { diff --git a/plugins/codex-lcm/src/mcp.ts b/plugins/codex-lcm/src/mcp.ts index f62d914..bcc782a 100644 --- a/plugins/codex-lcm/src/mcp.ts +++ b/plugins/codex-lcm/src/mcp.ts @@ -10,7 +10,7 @@ type JsonRpcRequest = { }; const SERVER_NAME = "codex-lcm"; -const SERVER_VERSION = "0.2.8"; +const SERVER_VERSION = "0.2.9"; const SUPPORTED_PROTOCOL_VERSION = "2025-11-25"; const HEADER_SEPARATOR = Buffer.from("\r\n\r\n", "utf8"); const MAX_MESSAGE_BYTES = DEFAULT_LIMITS.maxInputBytes;