gstack's browse stops locking up on a busy tab, and /cso keeps a committed .env out of its history

1 hour ago

gstack for Claude Code: a busy tab no longer locks up the browse daemon, so status, tabs and stop keep working without a force restart that loses your logins. Plus /cso changes: Rails repairs verify in read-only checkouts, its Git history withholds diffs of excluded files such as a committed .env, and a failed security check reports ASSERTION_FAILED. Covers gstack 1.91.154.0 to 1.91.155.0. Release notes: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md 1.91.155.0: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1911550---2026-10-19 1.91.154.0: https://github.com/garrytan/gstack/blob/main/CHANGELOG.md#1911540---2026-10-19 Commits: https://github.com/garrytan/gstack/commits/main

Ask

Ask about this presentation

Answers are generated from this presentation.

Chapters

  1. 0:00Busy tab
  2. 0:15Stuck tab
  3. 0:27Read-only
  4. 0:41History
  5. 0:55Verdicts
  6. 1:13Your turn
Show transcript

Busy tab

gstack logo

A busy tab no longer locks up gstack’s browse daemon

$ browse status
Daemon busy
daemon: Chromium connected
activeTab: {id, responsive}
Busy tabStuck tabRead-onlyHistoryVerdictsYour turn
garrytan/gstack · CHANGELOG.md · 1.91.155.0

When one tab hung, every browse command in gstack failed with daemon busy, and only a force restart got you out, losing your cookies, tabs and logins. Now status checks the daemon itself, and reports the stuck tab separately.

Stuck tab

A stuck tab now says so instead of hanging the command

tabs: the stuck tab shows as (not responding)
A command on that tab: times out with an error naming it, and says to switch tabs or close it
Busy tabStuck tabRead-onlyHistoryVerdictsYour turn
garrytan/gstack · CHANGELOG.md · 1.91.155.0

The tabs list now marks a stuck tab as not responding and moves on. A command that needs that tab times out with an error naming it, and tells you to switch tabs or close it.

Read-only

/cso can verify Rails repairs in a read-only checkout

Before: writing its test database.yml failed with EACCES, so no Rails repair reached runtime_tested
Now: each helper file replaces the copied file, and never writes through a symlink
Busy tabStuck tabRead-onlyHistoryVerdictsYour turn
garrytan/gstack · CHANGELOG.md · 1.91.154.0

In a read-only checkout, such as a Nix or Bazel tree, /cso could not write its Rails test config, so no Rails repair got runtime tested. It now replaces those files instead of writing into them.

History

/cso’s Git history stops bringing back a committed .env

Before: history.txt held the full git log -p, so an excluded file came back through its diff
diff withheld: <path> (<reason>)
Busy tabStuck tabRead-onlyHistoryVerdictsYour turn
garrytan/gstack · CHANGELOG.md · 1.91.154.0

/cso keeps .env files and keys out of the tree it reads, but its Git history kept every diff, so a committed .env came back that way. Diffs that touch an excluded file are now withheld.

Verdicts

A failed security check now gets its own verdict

verify reportsINCOMPATIBLE_INPUTASSERTION_FAILED
expected.status: up to eight safe statuses, such as [403, 404], and the secret must still be absent
Busy tabStuck tabRead-onlyHistoryVerdictsYour turn
garrytan/gstack · CHANGELOG.md · 1.91.154.0

When a repair's security checks fail, /cso now reports assertion failed instead of a misleading incompatible input. A check can also accept several safe rejection codes, like 403 or 404, as long as the secret stays out.

Your turn

The full notes are in gstack’s changelog

CHANGELOG.mdgstack release notes, October 19
Which page has left your browse daemon busy?
Busy tabStuck tabRead-onlyHistoryVerdictsYour turn
garrytan/gstack · CHANGELOG.md · 1.91.154.0 – 1.91.155.0

Both releases are written up in gstack's changelog. Which page has left your browse daemon busy?