gstack/gstack-upgrade
Charlie f2286b7c6a fix: gstack-upgrade uses ff-only merge before the hard reset
The upgrade flow uses `git reset --hard origin/main` to advance HEAD.
This trips destructive-command blockers (Claude Code PreToolUse hooks,
pre-commit wrappers, /careful, /guard) and can abort auto-upgrades
mid-flow.

Switch to `git merge --ff-only origin/main` as the primary path. Falls
back to the old behavior if fast-forward fails (divergent history,
local commits). Clean global installs never hit the destructive flag.

Also switches `git stash` to `git stash push --include-untracked -m
"pre-upgrade-<date>"` so untracked build artifacts (.bak/, compiled
binaries) don't block the merge, and the stash is self-describing.

Tested on Windows 11 with a Claude Code PreToolUse guard that blocks
destructive git operations. Upgraded from v0.16.2.0 to v0.18.1.0
cleanly via the ff-only path, setup regenerated customizations as
expected.
2026-04-17 10:18:07 +10:00
..
migrations feat: relationship closing — office-hours adapts to repeat users (v0.16.2.0) (#937) 2026-04-08 22:21:28 -10:00
SKILL.md fix: avoid tilde-in-assignment to silence Claude Code permission prompts (#993) 2026-04-16 14:49:56 -07:00
SKILL.md.tmpl fix: gstack-upgrade uses ff-only merge before the hard reset 2026-04-17 10:18:07 +10:00