Main shipped the v1 prompts rewrite (simpler writing style + real LOC
receipts + /plan-tune observational substrate). Resolved conflicts:
- VERSION / package.json: bumped 0.18.5.0 → 1.0.1.0 (main is 1.0.0.0,
this branch lands next).
- CHANGELOG: moved the /context-save + /context-restore entry to the
top as v1.0.1.0, above main's v1.0.0.0. Also removed the em-dash
variants in the new entry (ship voice rule).
- TODOS: kept both sections — Context skills (lane feature TODO) first,
main's PACING_UPDATES_V0 + Plan Tune v2 deferrals below.
- Migration: renamed gstack-upgrade/migrations/v0.18.5.0.sh →
v1.0.1.0.sh (matches new version). Test path updated.
preamble.ts auto-merged cleanly: main's question-tuning, explain_level,
and writing-style sections composed with my context-save/context-restore
routing rule.
All SKILL.md files regenerated via `bun run gen:skill-docs --host all`
per CLAUDE.md's "never resolve generated files by accepting either
side" rule. Golden fixtures (claude/codex/factory ship) also regenerated.
bun test: 0 failures.
scripts/resolvers/preamble.ts:238 is the source of truth for the routing
rules that gstack writes into users' CLAUDE.md on first skill run, AND
gets baked into every generated SKILL.md. A single 'invoke checkpoint'
line points at a skill that no longer exists.
Replace with two lines:
- Save progress, save state, save my work → invoke context-save
- Resume, where was I, pick up where I left off → invoke context-restore
Tier comment at :750 also updated.
All SKILL.md files regenerated via bun run gen:skill-docs.
Claude Code ships /checkpoint as a native alias for /rewind (Esc+Esc),
which was shadowing the gstack skill. Training-data bleed meant agents
saw /checkpoint and sometimes described it as a built-in instead of
invoking the Skill tool, so nothing got saved.
Fix: rename the skill and split save from restore so each skill has one
job. Restore now loads the most recent saved context across ALL branches
by default (the previous flow was ambiguous between mode="restore" and
mode="list" and agents applied list-flow filtering to restore).
New commands:
- /context-save → save current state
- /context-save list → list saved contexts (current branch default)
- /context-restore → load newest saved context across all branches
- /context-restore X → load specific saved context by title fragment
Storage directory unchanged at ~/.gstack/projects/$SLUG/checkpoints/ so
existing saved files remain loadable.
Canonical ordering is now the filename YYYYMMDD-HHMMSS prefix, not
filesystem mtime — filenames are stable across copies/rsync, mtime is
not.
Empty-set handling in both restore and list flows uses find+sort instead
of ls -1t, which on macOS falls back to listing cwd when the input is
empty.
Sources for the collision:
- https://code.claude.com/docs/en/checkpointing
- https://claudelog.com/mechanics/rewind/