diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 94c8d9a..a26f3fc 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "catchup", - "version": "0.2.0", + "version": "0.2.1", "description": "Summarize the agent messages you have not read, in plain ASD-STE100-style English. Run /catchup, type \"brief me\", or press the Catch up button.", "license": "MIT", "author": { diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a443f9..a85fb4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ All notable changes to this project are written here. The format follows ## [Unreleased] +## [0.2.1] - 2026-10-10 + +### Changed +- The README lists the hook that clears the summary after `/clear`, `/resume` and `/branch`. +- The release gate no longer writes the capability names out in one pattern, so a text scan does not read them as calls. + ## [0.2.0] - 2026-10-10 ### Changed diff --git a/README.md b/README.md index c6bf2b8..e4edf33 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,7 @@ DONE 1 ยท DECIDED 1 - `session.start`: registers the `/catchup` command. - `command.run`: opens the pane for `/catchup [N]`. - `prompt.submit`: when the whole prompt is a phrase such as `brief me`, it opens the pane and does not send the prompt to the agent. Any other prompt passes through unchanged. +- `classic.SessionStart`: after `/clear`, `/resume` or `/branch` (not after a compaction), it forgets the summary and the handled list. It changes nothing else. - `session.append`: counts new agent messages for the button. It changes nothing. - `ui.render`: draws the button and the pane, and reports which rows are on screen. diff --git a/scripts/release-check.sh b/scripts/release-check.sh index 340c265..0044137 100755 --- a/scripts/release-check.sh +++ b/scripts/release-check.sh @@ -11,12 +11,21 @@ printf '%s\n' "$report" # The README says the mod keeps the summary in memory only. The validator lists every capability the code # calls, so this ties that claim to a check: no state, no store, no file, no network, no process. printf '\n== memory only\n' +hit='' +for name in state store fs http process env; do + if printf '%s\n' "$report" | grep -F 'calls:' | grep -qF "\$.$name."; then + hit="$hit$name " + fi +done + if ! printf '%s\n' "$report" | grep -q 'calls:'; then echo "FAIL: the validate report has no 'calls:' line, so the check cannot run" failed=1 -elif printf '%s\n' "$report" | grep -E 'state (reads|writes)|declares state|calls:.*\$\.(state|store|fs|http|process|env)\.' >/dev/null; then - echo "FAIL: the mod uses state, the store, files, the network or a process. Update the README privacy text or remove it." - printf '%s\n' "$report" | grep -E 'state (reads|writes)|declares state|calls:' +elif printf '%s\n' "$report" | grep -qE 'state (reads|writes)|declares state'; then + echo "FAIL: the mod uses state. Update the README privacy text or remove it." + failed=1 +elif [ -n "$hit" ]; then + echo "FAIL: the mod calls these capabilities: $hit. Update the README privacy text or remove them." failed=1 else echo "ok: no state, store, file, network or process calls"