From 60425a5649381abaa86d0d482f34743a4dbf1615 Mon Sep 17 00:00:00 2001 From: omartelo Date: Mon, 5 Oct 2026 12:34:29 -0300 Subject: [PATCH] chore: release v0.15.0 --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- CHANGELOG.md | 6 ++++-- hooks/mod-control.js | 2 +- hooks/mod-usage.js | 2 +- hooks/report-session-start.sh | 2 +- hooks/report-state.sh | 2 +- hooks/report-title.sh | 2 +- hooks/report-tool.sh | 2 +- hooks/report-touched.sh | 2 +- omp/lich.js | 2 +- opencode/lich.js | 2 +- tests/lich-ref | 2 +- tests/refresh-fixtures.sh | 22 +--------------------- 14 files changed, 17 insertions(+), 35 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 825d027..fe39275 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "lich", "description": "Claude Code plugin for the lich harness", - "version": "0.14.0", + "version": "0.15.0", "author": { "name": "omartelo" } diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 91e195b..1eb1fa1 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "lich", - "version": "0.14.0", + "version": "0.15.0", "description": "Codex CLI plugin for the lich harness", "author": { "name": "omartelo" diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d729b5..9d44b5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.15.0] - 2026-10-05 + ### Added - **Claude Code's status line counts the lich workers a session waits on.** @@ -17,7 +19,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 background agent, Esc leaves it running and the model's TaskStop ends it: a worker in the asking session's checkout is closed, and one on a worktree of its own has its turn stopped and keeps its card and worktree. - - **lich can run a Claude Code session's slash commands.** The mod takes a `command` naming one (`/compact`, `/clear`, …) and its arguments, runs it once the session is idle, and acks it with Claude Code's own error when the name is @@ -538,7 +539,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 plugin is safe to install globally. Requests time out after ~1s and errors are swallowed — the hook never blocks or fails the turn. -[Unreleased]: https://github.com/omartelo/lich-plugin/compare/v0.14.0...HEAD +[Unreleased]: https://github.com/omartelo/lich-plugin/compare/v0.15.0...HEAD +[0.15.0]: https://github.com/omartelo/lich-plugin/compare/v0.14.0...v0.15.0 [0.14.0]: https://github.com/omartelo/lich-plugin/compare/v0.13.2...v0.14.0 [0.13.2]: https://github.com/omartelo/lich-plugin/compare/v0.13.1...v0.13.2 [0.13.1]: https://github.com/omartelo/lich-plugin/compare/v0.13.0...v0.13.1 diff --git a/hooks/mod-control.js b/hooks/mod-control.js index 5ec254d..fefd541 100644 --- a/hooks/mod-control.js +++ b/hooks/mod-control.js @@ -13,7 +13,7 @@ // a module that hands `$` to a nested function. // Sent as X-Lich-Plugin on every request; bumped at release (CLAUDE.md, Release). -const PLUGIN_VERSION = "0.14.0" +const PLUGIN_VERSION = "0.15.0" const SETTLE_WHEN_IDLE = new Set(["prompt", "command"]) diff --git a/hooks/mod-usage.js b/hooks/mod-usage.js index e53ef55..b609ed8 100644 --- a/hooks/mod-usage.js +++ b/hooks/mod-usage.js @@ -12,7 +12,7 @@ // refuses a module that hands `$` to a nested function. // Sent as X-Lich-Plugin on every request; bumped at release (CLAUDE.md, Release). -const PLUGIN_VERSION = "0.14.0" +const PLUGIN_VERSION = "0.15.0" /** * @typedef {import('claude-code').EngineInterface} Engine diff --git a/hooks/report-session-start.sh b/hooks/report-session-start.sh index 66b3620..7f72780 100755 --- a/hooks/report-session-start.sh +++ b/hooks/report-session-start.sh @@ -7,7 +7,7 @@ [ -n "$LICH_PORT" ] && [ -n "$LICH_TOKEN" ] && [ -n "$LICH_SESSION_ID" ] || exit 0 # Sent as X-Lich-Plugin on every report; bumped at release (CLAUDE.md, Release). -plugin_version=0.14.0 +plugin_version=0.15.0 provider=${1:-claude} # Parse session_id from the stdin payload. Prefer jq; fall back to sed so the # hook works on Windows, where jq is usually absent but sed (Git Bash) is not. diff --git a/hooks/report-state.sh b/hooks/report-state.sh index cc0939f..aeec443 100755 --- a/hooks/report-state.sh +++ b/hooks/report-state.sh @@ -7,7 +7,7 @@ [ -n "$LICH_PORT" ] && [ -n "$LICH_TOKEN" ] && [ -n "$LICH_SESSION_ID" ] || exit 0 # Sent as X-Lich-Plugin on every report; bumped at release (CLAUDE.md, Release). -plugin_version=0.14.0 +plugin_version=0.15.0 state=$1 body="{\"session_id\":\"${LICH_SESSION_ID}\",\"state\":\"${state}\"}" diff --git a/hooks/report-title.sh b/hooks/report-title.sh index d50e1b8..b084fad 100755 --- a/hooks/report-title.sh +++ b/hooks/report-title.sh @@ -11,7 +11,7 @@ [ -n "$LICH_PORT" ] && [ -n "$LICH_TOKEN" ] && [ -n "$LICH_SESSION_ID" ] || exit 0 # Sent as X-Lich-Plugin on every report; bumped at release (CLAUDE.md, Release). -plugin_version=0.14.0 +plugin_version=0.15.0 command -v jq >/dev/null 2>&1 || exit 0 # Checked before stdin is read, because it is the whole point: finding a title diff --git a/hooks/report-tool.sh b/hooks/report-tool.sh index f29a4a4..b3402b9 100755 --- a/hooks/report-tool.sh +++ b/hooks/report-tool.sh @@ -11,7 +11,7 @@ [ -n "$LICH_PORT" ] && [ -n "$LICH_TOKEN" ] && [ -n "$LICH_SESSION_ID" ] || exit 0 # Sent as X-Lich-Plugin on every report; bumped at release (CLAUDE.md, Release). -plugin_version=0.14.0 +plugin_version=0.15.0 here=$(dirname "$0") payload=$(cat) diff --git a/hooks/report-touched.sh b/hooks/report-touched.sh index 8f1870c..acc3655 100755 --- a/hooks/report-touched.sh +++ b/hooks/report-touched.sh @@ -6,7 +6,7 @@ [ -n "$LICH_PORT" ] && [ -n "$LICH_TOKEN" ] && [ -n "$LICH_SESSION_ID" ] || exit 0 # Sent as X-Lich-Plugin on every report; bumped at release (CLAUDE.md, Release). -plugin_version=0.14.0 +plugin_version=0.15.0 curl -s -o /dev/null --max-time 1 \ -X POST "http://127.0.0.1:${LICH_PORT}/session-touched?token=${LICH_TOKEN}" \ diff --git a/omp/lich.js b/omp/lich.js index 1ab3647..91bd800 100644 --- a/omp/lich.js +++ b/omp/lich.js @@ -24,7 +24,7 @@ // environment is read per report rather than at import, so a module loaded // outside lich stays a no-op instead of a cached decision. // Sent as X-Lich-Plugin on every report; bumped at release (CLAUDE.md, Release). -const PLUGIN_VERSION = "0.14.0" +const PLUGIN_VERSION = "0.15.0" function report(path, body) { const port = process.env.LICH_PORT diff --git a/opencode/lich.js b/opencode/lich.js index abdfae2..c5b0a18 100644 --- a/opencode/lich.js +++ b/opencode/lich.js @@ -11,7 +11,7 @@ // environment is read per report rather than at import, so a module loaded // outside lich stays a no-op instead of a cached decision. // Sent as X-Lich-Plugin on every report; bumped at release (CLAUDE.md, Release). -const PLUGIN_VERSION = "0.14.0" +const PLUGIN_VERSION = "0.15.0" function report(path, body) { const port = process.env.LICH_PORT diff --git a/tests/lich-ref b/tests/lich-ref index 7e16869..0bf6617 100644 --- a/tests/lich-ref +++ b/tests/lich-ref @@ -1 +1 @@ -v0.57.0 +v0.58.0 diff --git a/tests/refresh-fixtures.sh b/tests/refresh-fixtures.sh index db1f6ab..f90ad55 100755 --- a/tests/refresh-fixtures.sh +++ b/tests/refresh-fixtures.sh @@ -18,27 +18,7 @@ ref=$(tr -d '[:space:]' <"$here/lich-ref") base=https://raw.githubusercontent.com/omartelo/lich/$ref/docs/hooks/fixtures for file in session-state.jsonl session-start.jsonl session-title.jsonl \ - session-touched.jsonl; do + session-touched.jsonl mod-usage.jsonl mod-control.jsonl mod-commands.json; do curl -fsSL "$base/$file" -o "$here/fixtures/$file" echo "refreshed $file at $ref" done - -# The mod-usage contract is in no lich release yet either: its fixture is read -# at a lich main commit that carries it, on the same terms as -# the block below, and folds into the first list once a release ships it. -usage=6476d2d27ebdb5716fd369647d383dbd13a00936 -curl -fsSL "https://raw.githubusercontent.com/omartelo/lich/$usage/docs/hooks/fixtures/mod-usage.jsonl" \ - -o "$here/fixtures/mod-usage.jsonl" -echo "refreshed mod-usage.jsonl at $usage (unreleased)" - -# The mod-control `command` and `ask` kinds are in no lich release yet: these two files are -# read at a lich main commit that carries them, so the -# module is held to the contract lich is about to ship rather than to the one -# it replaces. Once a release ships it, move tests/lich-ref there, fold these -# files back into the list above and delete this block. -pending=6476d2d27ebdb5716fd369647d383dbd13a00936 -for file in mod-control.jsonl mod-commands.json; do - curl -fsSL "https://raw.githubusercontent.com/omartelo/lich/$pending/docs/hooks/fixtures/$file" \ - -o "$here/fixtures/$file" - echo "refreshed $file at $pending (unreleased)" -done