mirror of https://github.com/garrytan/gstack.git
chore: re-slot release as v1.62.1.0 (PATCH per user)
Main claimed 1.62.0.0 while the wave was in flight; the user chose the PATCH slot over queue-advancing MINOR. Renumbers the identity-pin migration notice (now version-free flag name so a re-slot never orphans an already-set flag), the CLAUDE.md /health note, the CHANGELOG heading, and the TODOS section titles. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
ac6d2c5920
commit
92a107db13
|
|
@ -1,6 +1,6 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [1.63.0.0] - 2026-08-12
|
## [1.62.1.0] - 2026-08-12
|
||||||
|
|
||||||
**Everything gstack sends off your machine now leaves a receipt you can read.**
|
**Everything gstack sends off your machine now leaves a receipt you can read.**
|
||||||
**And the eval harness stopped grading itself a passing grade.**
|
**And the eval harness stopped grading itself a passing grade.**
|
||||||
|
|
|
||||||
|
|
@ -282,7 +282,7 @@ PTY via `window.gstackInjectToTerminal(text)`, exposed by
|
||||||
`sidepanel-terminal.js`. No `/sidebar-command` POST — the live REPL is
|
`sidepanel-terminal.js`. No `/sidebar-command` POST — the live REPL is
|
||||||
the only execution surface in the sidebar now.
|
the only execution surface in the sidebar now.
|
||||||
|
|
||||||
**`/health` MUST NOT surface any token — and it no longer does** (v1.63+).
|
**`/health` MUST NOT surface any token — and it no longer does** (v1.62.1+).
|
||||||
The historical headed-mode leak of `AUTH_TOKEN` is fixed: `GET /health` is
|
The historical headed-mode leak of `AUTH_TOKEN` is fixed: `GET /health` is
|
||||||
liveness/status only in every mode. Token bootstrap is `POST /extension-token`,
|
liveness/status only in every mode. Token bootstrap is `POST /extension-token`,
|
||||||
which validates the caller's Origin against the pinned extension identity
|
which validates the caller's Origin against the pinned extension identity
|
||||||
|
|
|
||||||
6
TODOS.md
6
TODOS.md
|
|
@ -2723,9 +2723,9 @@ log already streams per-shard results).
|
||||||
|
|
||||||
**Effort:** S (human ~2h, CC ~15min). **Depends on:** v1.62 port wave landed.
|
**Effort:** S (human ~2h, CC ~15min). **Depends on:** v1.62 port wave landed.
|
||||||
|
|
||||||
## v1.63 port-wave review follow-ups (deferred from /ship review army — non-blocking polish)
|
## v1.62.1 port-wave review follow-ups (deferred from /ship review army — non-blocking polish)
|
||||||
|
|
||||||
Genuine review findings deferred from the v1.63 ship because they are
|
Genuine review findings deferred from the v1.62.1 ship because they are
|
||||||
informational/polish, not correctness-blocking, and several want their own
|
informational/polish, not correctness-blocking, and several want their own
|
||||||
tests. Filed so they are tracked, not dropped.
|
tests. Filed so they are tracked, not dropped.
|
||||||
|
|
||||||
|
|
@ -2756,7 +2756,7 @@ tests. Filed so they are tracked, not dropped.
|
||||||
## P2: harden or re-tier skill-e2e-plan-design-with-ui PTY detection
|
## P2: harden or re-tier skill-e2e-plan-design-with-ui PTY detection
|
||||||
|
|
||||||
**What:** The gate-tier `test/skill-e2e-plan-design-with-ui.test.ts` began executing
|
**What:** The gate-tier `test/skill-e2e-plan-design-with-ui.test.ts` began executing
|
||||||
for the first time once v1.63's `seedSkills` registered skills in hermetic PTY
|
for the first time once v1.62.1's `seedSkills` registered skills in hermetic PTY
|
||||||
children (the fork had deleted this file; it measured nothing before). It now
|
children (the fork had deleted this file; it measured nothing before). It now
|
||||||
reliably TIMES OUT even though the skill runs correctly: the transcript shows
|
reliably TIMES OUT even though the skill runs correctly: the transcript shows
|
||||||
`/plan-design-review` reaching its scope-gate AskUserQuestion (5 options, the
|
`/plan-design-review` reaching its scope-gate AskUserQuestion (5 options, the
|
||||||
|
|
|
||||||
|
|
@ -588,24 +588,25 @@ chrome.tabs.onUpdated.addListener((_id, changeInfo) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ─── v1.63 identity-pin migration notice ────────────────────────
|
// ─── identity-pin migration notice (v1.62.1) ────────────────────
|
||||||
//
|
//
|
||||||
// The manifest "key" added in v1.63 pins the extension ID, which changes
|
// The manifest "key" added in v1.62.1 pins the extension ID, which changes
|
||||||
// the ID for existing installs — chrome.storage.local is keyed by
|
// the ID for existing installs — chrome.storage.local is keyed by
|
||||||
// extension ID, so panel-local state (saved port, snoozes) resets once.
|
// extension ID, so panel-local state (saved port, snoozes) resets once.
|
||||||
// Explain that in-product, one time.
|
// Explain that in-product, one time. The flag name is version-free so a
|
||||||
|
// release re-slot never orphans an already-set flag.
|
||||||
async function announceIdentityPinOnce() {
|
async function announceIdentityPinOnce() {
|
||||||
try {
|
try {
|
||||||
const data = await chrome.storage.local.get('gstack_id_migrated_v163');
|
const data = await chrome.storage.local.get('gstack_id_pin_migrated');
|
||||||
if (data.gstack_id_migrated_v163) return;
|
if (data.gstack_id_pin_migrated) return;
|
||||||
console.log('[gstack] gstack sidebar: extension identity pinned in v1.63 — panel state reset once.');
|
console.log('[gstack] gstack sidebar: extension identity pinned in v1.62.1 — panel state reset once.');
|
||||||
chrome.runtime.sendMessage({
|
chrome.runtime.sendMessage({
|
||||||
type: 'gstack-migration-notice',
|
type: 'gstack-migration-notice',
|
||||||
message: 'gstack sidebar: extension identity pinned in v1.63 — panel state reset once.',
|
message: 'gstack sidebar: extension identity pinned in v1.62.1 — panel state reset once.',
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
// Expected: panel not open. The console line above still lands.
|
// Expected: panel not open. The console line above still lands.
|
||||||
});
|
});
|
||||||
await chrome.storage.local.set({ gstack_id_migrated_v163: true });
|
await chrome.storage.local.set({ gstack_id_pin_migrated: true });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.debug('[gstack] identity-pin notice failed (non-fatal):', err.message);
|
console.debug('[gstack] identity-pin notice failed (non-fatal):', err.message);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "gstack",
|
"name": "gstack",
|
||||||
"version": "1.63.0.0",
|
"version": "1.62.1.0",
|
||||||
"description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.",
|
"description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue