Gas Town v0.5.0
Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), and Windows.
Installation
Homebrew (macOS/Linux):
brew install steveyegge/gastown/gtnpm (Node.js):
npm install -g @gastown/gtManual Install:
Download the appropriate binary for your platform below, extract it, and place it in your PATH.
Changelog
Features
- cd347df feat(bead): add 'read' as alias for 'show' subcommand
- f6fab3a feat(cmd): add --comment as alias for --reason in gt close
- e12aa45 feat(config): add Env field to RuntimeConfig and AgentPresetInfo (#860)
- f00b025 feat(config): add OpenCode as built-in agent preset (#861)
- 7a2090b feat(config): add ShellQuote helper for safe env var escaping (#830)
- d0a1e16 feat(convoy): add redundant observers to Witness and Refinery
- aef9975 feat(convoy): add specific convoy ID check and dry-run flag
- 9b41270 feat(convoy): default owner to creator when not specified
- 0db2bda feat(deacon): add zombie-scan command for tmux-verified process cleanup
- 5791cd7 feat(doctor): add auto-fix capability to SessionHookCheck (#857)
- 6c5c671 feat(doctor): add routing-mode check to detect .beads-planning routing bug (#810)
- afc1ff0 feat(formula): add verification legs and presets to code-review (#841)
- 37f465b feat(hooks): add gt block-pr-workflow command for PreToolUse hook
- d0e49a2 feat(hooks): add hook registry and install command (bd-qj9nc)
- 1dc3102 feat(mail): accept multiple message IDs in delete command
- d610d44 feat(mail): add --all flag to 'gt mail inbox' command
- 3d7b109 feat(mail): add --body as alias for --message/-m in gt mail send
- 785d9ad feat(mail): add gt mail hook as alias for gt hook attach
- b612df0 feat(mail): add numeric index support to 'gt mail read'
- 6616a47 feat(mail): support positional message arg in reply command
- 44d5b4f feat(orphans): add --aggressive flag for tmux-verified orphan detection
- 6e2169d feat(orphans): add gt orphans kill command
- d67aa02 feat(refinery): use squash merge to eliminate redundant merge commits (#856)
- 544cacf feat(roles): add config-based role definition system (Phase 1)
- a610283 feat(roles): switch daemon to config-based roles, remove role beads (Phase 2+3)
- 9f06eb9 feat(seance): support cross-account session access
- 7c2f968 feat(wisp): add misclassified wisp detection and defense-in-depth filtering (#833)
- 0239025 feat: Add configurable polecat branch naming (#825)
- dff6c3f feat: add aliases and deacon status line display
- fd61259 feat: add initial prompt for autonomous patrol startup (deacon & witness) (#769)
Bug Fixes
- fa1f812 fix(beads): multi-repo routing for custom types and role slots
- a8be623 fix(cmd): extract orphan cleanup to platform-specific files (#835)
- 55a3b98 fix(config): correct Claude prompt prefix from > to ❯ (#765)
- 35abe21 fix(convoy): pass specific convoy ID in ConvoyWatcher check
- a8bedd2 fix(costs): add event to BeadsCustomTypes constant (#731)
- 45951c0 fix(costs): skip test affected by bd CLI 0.47.2 commit bug
- fb4c415 fix(crew): auto-recover from stale tmux pane references
- e57297c fix(crew): don't kill pane processes when creating new session
- 183a0d7 fix(crew): use directory name as source of truth in loadState (#785)
- 0cdcd0a fix(daemon): spawn Deacon immediately after killing stuck session (#729)
- 3931d10 fix(dashboard): use registered rigs for merge queue instead of hardcoded repos (#863)
- e59955a fix(docs): link for go install (#792)
- 2119841 fix(doctor): check patrol formulas instead of placeholder beads (#715)
- 7712628 fix(done): allow completion when work pushed directly to main
- 9a91a1b fix(done): restrict gt done to polecats only
- 2fe23b7 fix(done): terminate polecat session for all exit types (#800)
- 1a0f2d6 fix(formula): clarify WITNESS_PING routing in witness patrol (#854)
- 987502e fix(formula): sync source formula with embedded changes (#845)
- e591f2a fix(formulas): replace hardcoded ~/gt/ paths with $GT_ROOT (#758)
- 08cee41 fix(handoff): normalize identity in sendHandoffMail (#780)
- 48ace2c fix(handoff): preserve GT_AGENT across session restarts (#788)
- 39b1c11 fix(handoff): use env var fallback when town root detection fails
- c42b5db fix(hook): normalize agent ID trailing slash in agentIDToBeadID (gt-az3jjb)
- 77ac332 fix(hooks): add PreToolUse pr-workflow guard to settings templates
- 7016b33 fix(hooks): allow feature branches in contributor workflow (#850)
- 40cc4c9 fix(identity): copy all agent fields during polecat identity rename
- b333bf8 fix(install): Makefile uses go install to match docs (#851)
- 4dd11d4 fix(mq): use label instead of issue_type for merge-request filtering (#831)
- 7564cd5 fix(patrol): use gt formula list instead of bd mol catalog (#827)
- 3afd1a1 fix(polecat): exclude reserved infrastructure agent names from allocator (#837)
- b14835b fix(refinery): pass convoy ID to convoy check command
- b9f5797 fix(refinery): use role-specific runtime config for startup (#756) (#847)
- aba0a50 fix(seance): add tests and fix race condition in session index (#864)
- 08bc632 fix(session): add instructions for attach topic in startup nudge
- 65c1fad fix(shutdown): Improve gastown shutdown reliability
- f4072e5 fix(shutdown): fix session counter bug and add --cleanup-orphans flag (#759)
- d2f7dbd fix(shutdown): use KillSessionWithProcesses to prevent orphans
- 195ecf7 fix(sling): allow auto-attach mol-polecat-work on open polecat beads
- 0dfb0be fix(sling): auto-apply mol-polecat-work (#288) and fix wisp orphan lifecycle bug (#842) (#859)
- 126ec84 fix(sling): check hooked status and send LIFECYCLE:Shutdown on --force (#828)
- 53fd6ba fix(sling): don't show closed convoy tracking
- 82079f9 fix(sling): handle agent bead not found gracefully
- b8eb936 fix(sling): prevent agent self-interruption during tests
- f58a516 fix(test): remove stale TestInstallTownRoleSlots test (#819)
- 405d40e fix(tmux): KillPaneProcesses must kill pane process itself, not just descendants
- 94c2d71 fix(tmux): kill pane processes before all RespawnPane calls to prevent orphans
- f82477d fix(tmux): prevent gt done from killing itself during session cleanup (#821)
- 63a30ce fix(tmux): resolve claude path for alias installations (#703) (#748)
- 9caf530 fix(tmux): use KillSessionWithProcesses to prevent zombie bash processes
- 3c44e22 fix(witness): run convoy check regardless of cleanup status
- 560431d fix: ExpectedPaneCommands returns both node and claude for Claude Code (#740)
- 8b393b7 fix: cherry-pick lint and formula sync fixes from upstream
- 61e9a36 fix: create boot directory on install and make fixable
- e2bd5ef fix: create daemon.json on install, make templates check informational
- b28c25b fix: create plugins/ directory during install
- 2aadb01 fix: ensure gitignore patterns on role creation
- 2333b38 fix: explicitly set issue_prefix config during install
- 035b777 fix: handle error return from os.RemoveAll in defer
- 7421d15 fix: include queue in custom types during install
- 6f9bfec fix: install pre-checkout hook in gt git-init
- b73ee91 fix: isolate git clone operations from parent repos
- 4eb3915 fix: kill orphaned bd daemons before beads init
- 05ea767 fix: orphan-processes check only detects Gas Town processes
- 4fbe00e fix: respect GT_TOWN_ROOT in quick-add command (#840)
- 78001d2 fix: update patrol_check tests and add cross-filesystem clone support
- 3588dbc fix: use exec env for startup command to fix WaitForCommand detection (#844)
- 8c200d4 fix: use gt prime --hook in session hooks
- b71188d fix: use ps for cross-platform daemon detection
- b41a5ef fix: verify .beads directory exists after bd init
Others
- 5c45b44 Add Windows stub for orphan cleanup (#808)
- 7e5c3dd Add comprehensive tests for internal/dog package (#737)
- 477c28c Create initial commit before gh repo create --push
- 6966eb4 Escape backticks and dollar signs in quoteForShell (#777)
- 2514507 Fix GT_ROOT export for beads formula search compatibility (#718)
- 6bfe61f Fix daemon shutdown detection bug
- 1b036aa Fix deacon patrol process leak by killing pane processes before respawn (#745)
- 1e97d1e Fix go-19z: updateAgentHookBead uses wrong directory for rig-level beads (#733)
- 9de8859 Fix orphan detection to recognize hq-* sessions (#744)
- e4ebd07 Fix settings templates to use 'gt prime --hook' for session ID tracking (#719)
- 371074c Fix tmux error handling for "no current target" (#755)
- 3d5a66f Fixing unit tests on windows (#813)
- b2b9cbc Merge upstream/main into fix/fresh-install-fixes
- 748fa73 chore(formula): trim verbose witness-patrol description
- 5cc2995 chore(release): v0.5.0
- 5a14053 docs(templates): add explicit bead filing guidance to role templates
- 6a22b47 fix(await-signal): update agent last_activity on signal received (#774)
- 78ca8bd fix(witness,refinery): remove ZFC-violating state types
- 0a6b0b8 fix(witness,rig): code review cleanup
- a5bbe24 perf: parallelize mail inbox queries for ~6x speedup
- dcf7b81 refactor(hooks): rename to gt tap guard pr-workflow
- 5218102 refactor(witness,refinery): ZFC-compliant state management