From a55a05137d59422bfd3286d7085c8593d8e09d0e Mon Sep 17 00:00:00 2001 From: omartelo Date: Sun, 8 Nov 2026 21:11:48 -0300 Subject: [PATCH] chore: release v0.21.0 --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- CHANGELOG.md | 5 ++++- hooks/mod-compacting.js | 2 +- hooks/mod-control.js | 2 +- hooks/mod-status.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 +- hooks/worker-answer.js | 2 +- omp/lich.js | 2 +- opencode/lich.js | 2 +- 15 files changed, 18 insertions(+), 15 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index ba22df5..1e14fa3 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.20.9", + "version": "0.21.0", "author": { "name": "omartelo" } diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 1157025..3f0fab5 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "lich", - "version": "0.20.9", + "version": "0.21.0", "description": "Codex CLI plugin for the lich harness", "author": { "name": "omartelo" diff --git a/CHANGELOG.md b/CHANGELOG.md index b81fa50..6e3e6d1 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.21.0] - 2026-11-08 + ### Security - **The session token no longer shows in a command line.** Every hook script @@ -868,7 +870,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/lichdotdev/lich-plugin/compare/v0.20.9...HEAD +[Unreleased]: https://github.com/lichdotdev/lich-plugin/compare/v0.21.0...HEAD +[0.21.0]: https://github.com/lichdotdev/lich-plugin/compare/v0.20.9...v0.21.0 [0.20.9]: https://github.com/lichdotdev/lich-plugin/compare/v0.20.8...v0.20.9 [0.20.8]: https://github.com/lichdotdev/lich-plugin/compare/v0.20.7...v0.20.8 [0.20.7]: https://github.com/lichdotdev/lich-plugin/compare/v0.20.6...v0.20.7 diff --git a/hooks/mod-compacting.js b/hooks/mod-compacting.js index 97a1547..0ebec20 100644 --- a/hooks/mod-compacting.js +++ b/hooks/mod-compacting.js @@ -20,7 +20,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.20.9" +const PLUGIN_VERSION = "0.21.0" /** * @typedef {import('claude-code').EngineInterface} Engine diff --git a/hooks/mod-control.js b/hooks/mod-control.js index c691705..d470b16 100644 --- a/hooks/mod-control.js +++ b/hooks/mod-control.js @@ -15,7 +15,7 @@ import { promptLang, say } from "./prompt-text.js" // Sent as X-Lich-Plugin on every request; bumped at release (CLAUDE.md, Release). -const PLUGIN_VERSION = "0.20.9" +const PLUGIN_VERSION = "0.21.0" const SETTLE_WHEN_IDLE = new Set(["prompt", "command"]) diff --git a/hooks/mod-status.js b/hooks/mod-status.js index 689c9f9..7906245 100644 --- a/hooks/mod-status.js +++ b/hooks/mod-status.js @@ -12,7 +12,7 @@ import { setStatusPart } from "./status-line.js" // Sent as X-Lich-Plugin on every request; bumped at release (CLAUDE.md, Release). -const PLUGIN_VERSION = "0.20.9" +const PLUGIN_VERSION = "0.21.0" // The contract asks for a read at most every few seconds; the worker count in // agent-cards.js polls lich on the same period. diff --git a/hooks/mod-usage.js b/hooks/mod-usage.js index 664cea7..ac0b88e 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.20.9" +const PLUGIN_VERSION = "0.21.0" /** * @typedef {import('claude-code').EngineInterface} Engine diff --git a/hooks/report-session-start.sh b/hooks/report-session-start.sh index 2d80bac..7a057c6 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.20.9 +plugin_version=0.21.0 provider=${1:-claude} # A file-shipped install that lacks conversation-id.sh says so and still diff --git a/hooks/report-state.sh b/hooks/report-state.sh index 07e6467..3eaeeea 100755 --- a/hooks/report-state.sh +++ b/hooks/report-state.sh @@ -8,7 +8,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.20.9 +plugin_version=0.21.0 # A file-shipped install that lacks conversation-id.sh says so and still # runs: sourcing a missing file would end the script. `${0%/*}` rather than diff --git a/hooks/report-title.sh b/hooks/report-title.sh index 7ac9a97..f777a2b 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.20.9 +plugin_version=0.21.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 fe1c62a..e4d6ea1 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.20.9 +plugin_version=0.21.0 here=$(dirname "$0") diff --git a/hooks/report-touched.sh b/hooks/report-touched.sh index ba24099..10a9541 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.20.9 +plugin_version=0.21.0 # The token rides a header fed through stdin (printf is a builtin): a query # string or -H would put it in curl's command line, which every user on the diff --git a/hooks/worker-answer.js b/hooks/worker-answer.js index aaa5d72..894b745 100644 --- a/hooks/worker-answer.js +++ b/hooks/worker-answer.js @@ -45,7 +45,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.20.9" +const PLUGIN_VERSION = "0.21.0" // The value a lich older than LICH_SUBAGENT_DEPTH spawns every `--subagent` // session with. diff --git a/omp/lich.js b/omp/lich.js index 9f25fd3..44aae59 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.20.9" +const PLUGIN_VERSION = "0.21.0" function report(path, body) { const port = process.env.LICH_PORT diff --git a/opencode/lich.js b/opencode/lich.js index 2f983d8..0a0a947 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.20.9" +const PLUGIN_VERSION = "0.21.0" function report(path, body) { const port = process.env.LICH_PORT