From 0a9b1bc8c4a60ef750dd77227dcba018247d27ce Mon Sep 17 00:00:00 2001 From: omartelo Date: Wed, 7 Oct 2026 17:37:58 -0300 Subject: [PATCH] chore: release v0.18.0 --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- CHANGELOG.md | 5 ++++- 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 +- tests/lich-ref | 2 +- tests/refresh-fixtures.sh | 9 +-------- 16 files changed, 19 insertions(+), 23 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index a263bcc..6e10c61 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.17.0", + "version": "0.18.0", "author": { "name": "omartelo" } diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 652afaa..520723c 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "lich", - "version": "0.17.0", + "version": "0.18.0", "description": "Codex CLI plugin for the lich harness", "author": { "name": "omartelo" diff --git a/CHANGELOG.md b/CHANGELOG.md index 68f2a13..46cd05b 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.18.0] - 2026-10-07 + ### Added - **The prompt footer shows the session's errands.** Who it owes an answer, the @@ -598,7 +600,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.17.0...HEAD +[Unreleased]: https://github.com/omartelo/lich-plugin/compare/v0.18.0...HEAD +[0.18.0]: https://github.com/omartelo/lich-plugin/compare/v0.17.0...v0.18.0 [0.17.0]: https://github.com/omartelo/lich-plugin/compare/v0.16.0...v0.17.0 [0.16.0]: https://github.com/omartelo/lich-plugin/compare/v0.15.1...v0.16.0 [0.15.1]: https://github.com/omartelo/lich-plugin/compare/v0.15.0...v0.15.1 diff --git a/hooks/mod-control.js b/hooks/mod-control.js index fa45649..622c3fe 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.17.0" +const PLUGIN_VERSION = "0.18.0" const SETTLE_WHEN_IDLE = new Set(["prompt", "command"]) diff --git a/hooks/mod-status.js b/hooks/mod-status.js index d195be5..ce0fda0 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.17.0" +const PLUGIN_VERSION = "0.18.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 40b1910..91301f1 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.17.0" +const PLUGIN_VERSION = "0.18.0" /** * @typedef {import('claude-code').EngineInterface} Engine diff --git a/hooks/report-session-start.sh b/hooks/report-session-start.sh index 18dc1ca..175602f 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.17.0 +plugin_version=0.18.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 c7dcaf5..c15d98c 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.17.0 +plugin_version=0.18.0 state=$1 body="{\"session_id\":\"${LICH_SESSION_ID}\",\"state\":\"${state}\"}" diff --git a/hooks/report-title.sh b/hooks/report-title.sh index 8fcc5b9..58a9541 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.17.0 +plugin_version=0.18.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 bd38d0d..c7f3a9d 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.17.0 +plugin_version=0.18.0 here=$(dirname "$0") payload=$(cat) diff --git a/hooks/report-touched.sh b/hooks/report-touched.sh index 4d424e0..83ddfee 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.17.0 +plugin_version=0.18.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/hooks/worker-answer.js b/hooks/worker-answer.js index 23bc838..e7d1aaa 100644 --- a/hooks/worker-answer.js +++ b/hooks/worker-answer.js @@ -22,7 +22,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.17.0" +const PLUGIN_VERSION = "0.18.0" // The value lich spawns a `--subagent` session with. const CARDS_OFF = "off" diff --git a/omp/lich.js b/omp/lich.js index eb1526f..ab97005 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.17.0" +const PLUGIN_VERSION = "0.18.0" function report(path, body) { const port = process.env.LICH_PORT diff --git a/opencode/lich.js b/opencode/lich.js index 9c53f76..fdee98d 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.17.0" +const PLUGIN_VERSION = "0.18.0" function report(path, body) { const port = process.env.LICH_PORT diff --git a/tests/lich-ref b/tests/lich-ref index 4eb38d1..9b50604 100644 --- a/tests/lich-ref +++ b/tests/lich-ref @@ -1 +1 @@ -v0.60.0 +v0.61.0 diff --git a/tests/refresh-fixtures.sh b/tests/refresh-fixtures.sh index 8b38088..3210005 100755 --- a/tests/refresh-fixtures.sh +++ b/tests/refresh-fixtures.sh @@ -19,15 +19,8 @@ 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 mod-usage.jsonl mod-control.jsonl mod-commands.json \ - mod-answer.jsonl; do + mod-answer.jsonl mod-status.json; do curl -fsSL "$base/$file" -o "$here/fixtures/$file" echo "refreshed $file at $ref" done -# The mod-status contract is in no lich release yet: its fixture is read at the -# commit of lich's feat/mod-status branch that adds it, and folds into the list -# above once a release ships it. -status=6c207ba176a36ae2149977dfc5f9568d7410fb9b -curl -fsSL "https://raw.githubusercontent.com/omartelo/lich/$status/docs/hooks/fixtures/mod-status.json" \ - -o "$here/fixtures/mod-status.json" -echo "refreshed mod-status.json at $status (unreleased)"