gstack 1.67.0.0

1.67.0.0
Added 1
  • CDP Emulation.setEmulatedMedia added to the allowlist
Changed 3
  • Playwright pinned to 1.62.1
  • Terminal-agent port range now ends at 49151
  • Setup includes upgrade-time quarantine-clear and reinstall for already-poisoned caches
Fixed 11
  • Browse no longer dies on macOS XProtect kill at Chromium launch, with automatic quarantine flag clearing and pinned browser revision reinstallation from the correct install root
  • Fresh installs now link every runtime asset a skill references so review and related commands work on a clean machine
  • Brain-sync queue is drained with classified disposition, retaining privacy-held records and preventing data loss on failed pushes
  • Failed brain-sync push keeps its commit and re-delivers it on the next run, only publishing commits authored by gstack itself
  • A healthy daemon is never killed by browse start, with health probe answering in approximately 8 seconds and explicit --force-restart required to kill an alive process
  • Browse stop on a dead daemon short-circuits to success
Removed 1
  • The dead security-shield surface was removed end to end

This release mines the full issue tracker and community PR queue. Browse now classifies a macOS XProtect kill at Chromium launch and heals itself. It clears the quarantine flag, reinstalls the pinned browser revision from the right install root, and retries, all bounded and logged. Fresh installs link every runtime asset a skill references, so /review and friends work on a clean machine the first time. Brain-sync's queue is drained with a classified disposition. Privacy-held records are retained and labeled, a failed push keeps its commit and re-delivers it on the next run, and the retry only ever publishes commits it authored itself. Twenty-five community PRs landed with credit, and roughly thirty-five issues close on merge. Browse dead on macOS (#2554). Playwright pinned to 1.62.1 (split from dependabot #2582), plus an XProtect kill-signature classifier with positive AND negative fixtures, a one-shot quarantine-clear + bounded (~120s, process-group-killed) reinstall from the gstack install root that pins the matching Chromium revision, structured heal logging, and an upgrade-time quarantine-clear + reinstall in setup for already-poisoned caches. The heal resolves the install root via os.homedir() and keeps its manual-remediation guidance even when the post-heal retry fails. Fresh installs missing runtime assets (#2317, #2454). setup links every runtime asset with an explicit exclusion list (node_modules, dist, *.tmpl, test, hidden), pinned by a two-class referenced-paths test: alias-relative references must exist under the installed alias, repo-anchored ones in the tree modulo a reasoned dist/ allowlist. Brain-sync data loss (#2549). Queue records are classified at drain time: skip-filtered and nonexistent drop WITH counts (full paths in a 0600 sidecar), privacy-held records are retained and labeled instead of being wiped as "no allowlisted changes", unparseable lines are preserved, and the rewrite subtracts the staged set from a LIVE re-read so concurrent enqueues survive. A failed push keeps its commit; a run-start detector re-delivers it — receipted, locked, throttled to one attempt per 10 minutes, bounded by git's low-speed limits (portable to stock macOS), and gated to fire only when EVERY unpushed commit is its own, so an interleaved manual commit in ~/.gstack is never auto-published. The sync lock releases on every exit path, including interrupts mid-push. A healthy daemon is never killed by browse start (the #2219 iron rule): a total-budget health probe answers in ~8s, busy daemons get "retry or --force-restart" plus a nonzero exit, and only an explicit --force-restart ever kills an alive pid — pinned by a regression test. browse stop on a dead daemon short-circuits to success (#2254); /gstack-upgrade defers to a busy daemon and prints the escape hatch (#2551). Chromium no longer dies with the terminal: signal handling moved off Playwright's defaults at all three launch sites with a SIGHUP handler routing through the real shutdown path, and a tripwire pinning the count. The terminal-agent allocates from the same fixed port range as the daemon (#2314) — and that range now ends at 49151, actually below the macOS ephemeral pool it exists to avoid; boot retries a raced bind instead of dying. Windows terminal-agent leaks fixed via process.kill(pid, 0) liveness (#1952) and the error-handling helpers. Contributed by @SYKhayyat (#2414). Daemon crash logs persist without tokens or unsanitized page content (needle-tested). Contributed by @phuttimatebenchanakatkul (#2461). The dead security-shield surface was removed end to end (−272 net lines) while the live L4 sidecar path keeps its status endpoint — docs updated in the same commit. Contributed by @frederik-kaster-noygear (#2557, with the pipe-capture core from #2559). CDP Emulation.setEmulatedMedia joins the allowlist — contributed by @meshailabs (#2419). Windows gbrain probe timeout — contributed by @vaston-viji (#2450). browse/dist mkdir — contributed by @guyua9 (#2542). F

View original

Upgraded? How did it go?

Discussion