Releases: nrzz/claude-code-handover
Release list
Claude Code handover v1.4.1
- The guard's limit is now 35% of
HANDOVER_CONTEXT_WINDOW(still 350,000 tokens with the default 1,000,000), so the window setting moves the limit instead of only the percentage shown.HANDOVER_CONTEXT_LIMITstill wins when it is set. A window that is not a positive number counts as unset. - The installed
/recallskill finds the script and the transcripts from its own folder,${CLAUDE_SKILL_DIR}, which Claude Code fills in before the model reads the skill. It used to name~/.claude, so withCLAUDE_CONFIG_DIRset it missed the copyinitinstalls; now it follows it, and the command keeps nothing for the shell to expand, soBash(node:*)covers it as before. scripts/selftest.mjs --replayfollowsCLAUDE_CONFIG_DIR,HANDOVER_PROJECTS_DIRandHANDOVER_DATA_DIRlike recall does, instead of always reading~/.claude.initkeeps aclaude-token-rules.mdyou edited asclaude-token-rules.md.bak-YYYYMMDDbefore it replaces the card, and reports the backup; a card it wrote for another model list is replaced without one.scripts/usage-report.mjsandscripts/cache-report.mjsread the transcripts of$CLAUDE_CONFIG_DIRwhen it is set, as recall does (--rootstill wins), and the cache report names its 55-minute threshold in its headings. The threshold is unchanged.- Documentation matched to the code. The guard asks once, at the end of a turn above the limit, when HANDOVER.md is older than 30 minutes; it does not hold the turn open until the handover is written, and 35% is a share of the window. Also corrected: SECURITY.md (what reaches Claude, what
uninstallkeeps), the setup prompt (backup name, a longercleanupPeriodDays, rules card rows,git pullon a plain copy), the README (recall index, saved effort levels,--no-hooks, model ids, next-day sessions, the stress test, model combinations, CI on Node 18) and CONTRIBUTING (a throwaway config folder that stays set, the prompt route, "every job"). - Tests for each of these, and for all 15 combinations of the four models.
See the README to set it up, and CHANGELOG.md for every version.
Claude Code handover v1.4.0
- One-command setup:
npx -y github:nrzz/claude-code-handover initdoes what the setup prompt tells Claude to do, with the same file contents and the same never-destroy rules, using no model and asking nothing. Options:--models,--streams,--dir,--dry-run,--no-hooks. Running it twice changes nothing the second time and says so. uninstallremoves only whatinitadded at user level (our three hooks, the/handoverand/recallskills, the copy of the scripts) after a backup ofsettings.json, and leaves project files and effort settings alone;--purgealso removes a git checkout of the scripts that an older setup made.statusshows what is installed where.- The guard and recall scripts are copied into
~/.claude/claude-code-handover/instead of cloned, so the hooks depend on neither git nor npx's cache. An older clone there is updated withgit pull --ff-only, and copied over when git cannot do it. npm testnow also runs the installer'snode:testsuites, which check every code block ofsetup-prompt.txtagainst its template.- Recall (
scripts/recall.mjs,scripts/memory-index.mjs) followsCLAUDE_CONFIG_DIR: it reads transcripts from<config folder>/projectsand keeps its index in<config folder>/claude-code-handover-data. With the variable unset nothing changes. The index no longer rewrites its state file when no transcript has anything new. package.jsonlists the files to ship, sonpxno longer prints npm'sgitignore-fallbackwarning.- Fixed three templates that differed from the setup prompt: the first stream in
DECISIONS.md, the model id placeholder insettings-single-model.jsonand the layout ofhooks-settings.json. The prompt is authoritative.
See the README to set it up, and CHANGELOG.md for every version.
v1.3.1
Automatic recall, stress tested. New scripts/selftest.mjs plants facts in synthetic histories of up to 94,472 remarks and asks about them from another session inside long messages: 156 of 156 found, 2 false injections in 360 unrelated prompts, 265 ms per prompt at the largest size. Matching now rests on evidence (rare shared words close together, a repeated phrase, or a ticket id), a recalled line is given to a session once, and only the newest 12 MB of history is searched per prompt. On 345 real prompts recall adds about 105 tokens per prompt on average. Update an existing install with git pull in ~/.claude/claude-code-handover.
v1.3.0
Automatic recall. Nobody has to type /recall: on every prompt the hook places the few lines from earlier sessions that match the question in front of Claude, and adds nothing when nothing matches. A session start shows the newest decisions. Built on a local index of everything said in the project; lines a compaction dropped come back too. Verified live: a fresh session, tools forbidden, answered a detail that existed only in a two-week-old chat and named the recall block as its source. Existing installs get it with git pull in ~/.claude/claude-code-handover plus the SessionStart hook from templates/hooks-settings.json.
v1.2.0
Nothing gets lost across handovers. Four layers: DECISIONS.md written as things happen, a handover that carries the decisions still in force, a context guard hook that warns at 35 percent and holds a turn open above it until the handover is written, and /recall to search every past session. Guard verified live in real sessions and by nine unit cases; setup prompt verified by nine end-to-end runs.
v1.1.0
Zero-edit setup: paste the prompt as is (defaults Opus + Sonnet, one stream). First-timer guidance on permissions, invalid settings files left alone, README rewritten as three steps plus the daily loop. Eight end-to-end runs of the prompt verified against the templates.