From 5030d99f7d3c5409652356ddd1eb28dfa1847000 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Mon, 31 Aug 2026 21:07:28 +0000 Subject: [PATCH] chore(upgrade): migrate feature-discovery markers to GSTACK_HOME Follow-through on the #2748 absorption: existing installs answered the continuous-checkpoint and model-overlay prompts with markers beside the install; v1.78 reads them from GSTACK_HOME. Copy them once so nobody gets re-prompted. Idempotent, non-fatal. Co-Authored-By: Claude Fable 5 --- gstack-upgrade/migrations/v1.78.0.0.sh | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100755 gstack-upgrade/migrations/v1.78.0.0.sh diff --git a/gstack-upgrade/migrations/v1.78.0.0.sh b/gstack-upgrade/migrations/v1.78.0.0.sh new file mode 100755 index 000000000..ee2ed3db3 --- /dev/null +++ b/gstack-upgrade/migrations/v1.78.0.0.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# Migration: v1.78.0.0 — carry feature-discovery acknowledgements to GSTACK_HOME +# (#2728 absorption follow-through). +# +# Why a migration: pre-v1.78, `gstack-skill-start` gated the one-time feature +# prompts (.feature-prompted-continuous-checkpoint, .feature-prompted-model- +# overlay) on marker files BESIDE THE INSTALL — which, for project-local +# symlink installs, resolved into the project repo and left machine-state +# droppings in checkouts (#2728). v1.78 reads them from GSTACK_HOME. Without +# this copy, every existing install that already answered those prompts gets +# re-prompted once per feature. +# +# Idempotent: existing destination markers are left untouched. Non-fatal +# throughout — a failed copy just means one benign re-prompt. +set -u + +INSTALL_DIR="${GSTACK_INSTALL_DIR:-$HOME/.claude/skills/gstack}" +GH="${GSTACK_HOME:-$HOME/.gstack}" + +mkdir -p "$GH" 2>/dev/null || exit 0 + +for m in .feature-prompted-continuous-checkpoint .feature-prompted-model-overlay; do + if [ -f "$INSTALL_DIR/$m" ] && [ ! -f "$GH/$m" ]; then + touch "$GH/$m" 2>/dev/null && echo "migrated: $m → $GH" + fi +done + +exit 0