github gastownhall/gastown v0.6.0

latest releases: v1.1.0, v1.0.1, v1.0.0...
3 months ago

Gas Town v0.6.0

Pre-compiled binaries for Linux, macOS (Intel & Apple Silicon), and Windows.

Installation

Homebrew (macOS/Linux):

brew install gastown

npm (Node.js):

npm install -g @gastown/gt

Manual Install:
Download the appropriate binary for your platform below, extract it, and place it in your PATH.

Changelog

Features

  • cf3055c Merge PR #1195: feat(dashboard): show convoy titles alongside IDs
  • 346ddaa feat(compact): add compaction reporting with daily digest and weekly rollup
  • 847d0b9 feat(config): add LintCommand/BuildCommand fields and parameterize formulas
  • 0792a09 feat(convoy): add --merge flag to gt convoy create and gt sling
  • b5a1ed7 feat(convoy): add --owned flag to gt convoy create and gt sling
  • 955da9c feat(convoy): push completion notifications to active Mayor session
  • ab3995d feat(daemon): add Mayor to daemon supervision
  • 67194fa feat(daemon): add exponential backoff for agent restarts (#687)
  • cad33ca feat(daemon): add launchd/systemd supervision support (#681)
  • 8b6b6be feat(dashboard): add interactive command palette, mail compose, and API performance (#1018)
  • 3382a94 feat(dashboard): comprehensive UX overhaul with crew notifications
  • bb562b0 feat(dashboard): show convoy titles alongside IDs
  • 8dcd12b feat(deacon): add feed-stranded-convoys step to patrol (#1092)
  • fd3342f feat(deacon): auto re-dispatch recovered beads from dead polecats
  • 8f88e30 feat(doctor): add --slow flag to highlight slow checks
  • feab016 feat(doctor): add beads-sync worktree health check (#796)
  • ff2c5fe feat(doctor): add beads-sync worktree health check (gt-mihct)
  • 72d20e2 feat(doctor): add database-prefix check for rig config mismatch (#1030)
  • 9a721e8 feat(doctor): add migration readiness checks for SQLite to Dolt migration
  • bf3296e feat(doctor): add rig-name-mismatch check (#1137)
  • 6a5261e feat(doctor): add stale-agent-beads check for removed crew (#1036)
  • 5c7e6c4 feat(doctor): add stale-beads-redirect check
  • eec8b91 feat(doctor): add streaming output for real-time check progress
  • 4500f19 feat(doctor): add timing display for slow checks (#995)
  • 931b27e feat(doctor): distinguish fixed vs unfixed in --fix output
  • 0e2ba67 feat(doctor): extend stale-beads-redirect to verify redirect topology
  • f78ea7f feat(dog): add 'gt dog done' command for dogs to return to idle
  • a682569 feat(dog): add dog template and update convoy-feed formula
  • ebb8e42 feat(dog): add gt dog done command for returning to idle (#1001)
  • 0da8dad feat(dog): add session management and delayed dispatch (#1015)
  • 2ee5e1c feat(dolt): add gt dolt command for server management
  • a5b61ad feat(dolt): add gt dolt sync command for DoltHub remote push (#1324)
  • 912ba2f feat(dolt): add max-connections and admission control to prevent connection storms (gt-1obzke)
  • 580e195 feat(dolt): auto-create DoltHub repos and configure remotes (#1416)
  • 12ecab3 feat(formula): add Go text/template rendering for convoy prompts
  • 92bff20 feat(formula): add Go text/template rendering for convoy prompts (#962)
  • c1b106c feat(formula): add mol-migration formula for agent-managed upgrades (gt-a7fq)
  • 72fc070 feat(formula): add mol-migration formula for v0.5.0 → v0.6.0 upgrade (gt-abomd)
  • 581ab8b feat(formula): add mol-migration formula for v0.5.0 → v0.6.0 upgrade (gt-abomd, gt-a7fq)
  • 1346116 feat(formulas): add wisp_type=patrol to patrol formulas (gt-7mqd.3)
  • 7f3cf26 feat(handoff): add --auto flag for PreCompact auto-handoff
  • c241e01 feat(hook): add 'gt hook clear' as alias for 'gt unhook' (gt-fu8t)
  • c62d4da feat(hooks): add centralized hook management skeleton and data model (gt-ja40n)
  • 5b41eab feat(hooks): add sync command and centralized hook management (gt-pga9m, gt-ja40n.2)
  • 15429af feat(hooks): implement sync, diff, list, and merge logic (gt-ja40n)
  • 76db656 feat(hooks): integrate hooks with rig add, doctor, and add init command (gt-9pwyj)
  • 27ad03a feat(install): fold Dolt identity, HQ database, and server start into gt install (#1447)
  • c493c92 feat(krc): add Key Record Chronicle for TTL-based ephemeral data lifecycle
  • 37feff8 feat(krc): add forensic value decay model and auto-prune scheduling (gt-krc)
  • 07ebc1a feat(make): check repo is up-to-date before install
  • 7eb364f feat(molecule): add DAG visualization command (gt mol dag)
  • 4493eba feat(molecule): add DAG visualization command (gt mol dag) (#980)
  • 4435655 feat(nudge): add --if-fresh flag to suppress compaction nudges
  • 2b18544 feat(opencode): add compaction and session lifecycle handlers
  • a543ee5 feat(patrol): implement fan-out/gather pattern for parallel steps
  • 835a4bb feat(patrol): implement fan-out/gather pattern for parallel steps (#979)
  • 9dcddaf feat(polecat): add explicit lint/test step to decommission checklist (#934)
  • 12ade34 feat(prime): add compact/resume detection for lighter post-compaction prime
  • e644076 feat(prime): add role-aware command quick-reference to gt prime output (gt-up10)
  • 87d7347 feat(release): add newsletter generator to gastown-release formula
  • 5f7c165 feat(rig): add --adopt flag to register existing directories
  • 2eb11ce feat(rig): copy overlay files to refinery during rig creation
  • 7d5b145 feat(rig): copy overlay files to refinery during rig creation (#1069)
  • a660924 feat(session): add GIT_CEILING_DIRECTORIES to prevent umbrella commits (#1114)
  • 212b6af feat(signal): add gt signal stop — Stop hook handler for turn-boundary messaging
  • 92ccacf feat(sling): add --no-merge flag to skip merge queue (#939)
  • db02dd8 feat(startup): add nudge fallback for non-hook agents (#978) (#1029)
  • baf9311 feat(theme): add dark mode CLI theme support (#911)
  • 2ce42ea feat(tmux): add C-b g keybinding for agent switcher menu (#1111)
  • 429f8e9 feat(tmux): enable clipboard integration in mayor sessions
  • aca7532 feat(web): comprehensive dashboard control panel with 13 data panels (#931)
  • 5a61fd5 feat(wisp): add promotion criteria helpers for compaction (gt-7mqd.10)
  • c260bde feat(witness): implement MERGE_READY protocol for event-driven refinery processing
  • 4fe389c feat(witness): reset abandoned beads when dead polecat detected
  • 84d455d feat: Add GT_COMMAND env var for configurable CLI name
  • 096c968 feat: Allow repo-specific .claude files (#550)
  • bfd2f2d feat: add --dry-run to gt dolt migrate (gt-kscdo)
  • 014b22e feat: add --stdin flag to gt escalate, warrant file, mq reject
  • 3f63d24 feat: add --stdin flag to gt handoff --message for shell-quoting-safe message bodies
  • 7a0b9e1 feat: add --stdin flag to gt mail send for shell-quoting-safe message bodies
  • be02310 feat: add --stdin flag to gt nudge --message for shell-quoting-safe message bodies
  • ceb084c feat: add --stdin flag to gt sling --message and --args
  • 6b263ae feat: add CONTEXT.md auto-injection to gt prime
  • 6a2dd9a feat: add Dolt server resource monitoring to daemon health check (gt-wsfzka)
  • c803285 feat: add Dolt-only guardrails to prevent SQLite from sneaking back
  • b2d64b3 feat: add PID tracking for spawned agents (gt-430oy)
  • a816236 feat: add RigState type with constants and validation (gt-4p791p.10)
  • 1c64afe feat: add ZFC-compliant queue health visibility for Witness patrols
  • cd467de feat: add agent ID validation and simplify patrol/convoy formulas
  • 119c38f feat: add complete CRUD API for rig beads to match Group pattern (gt-4p791p.8)
  • ceb2fb5 feat: add dolt_remotes patrol for periodic push to git remotes
  • faa148c feat: add file locking to crew/ package to prevent race conditions (gt-m1aj1)
  • a558f2f feat: add gt dog clear and gt warrant commands (#1127)
  • 6a9bb02 feat: add gt dolt rollback command for migration backup restoration
  • d7678aa feat: add gt prime as step 1 in startup protocol, add Landing the Plane session end protocol
  • 9d54eac feat: add gt run-migration command for orchestrated SQLite-to-Dolt migration (gt-wo1py)
  • d7533f6 feat: add interactive convoy management to dashboard #1288 (#1340)
  • 870ef30 feat: add interactive hook management to dashboard Hooks panel (#1341)
  • 201df81 feat: add issue management actions to Work panel detail view #gt-spw (#1342)
  • 3120578 feat: add migration hardening agent team setup
  • 7cf6e82 feat: add migration test harness scripts (gt-lx5b)
  • 4291fae feat: add mol-wisp-compact formula and deacon patrol integration (gt-7mqd.7, gt-7mqd.8)
  • 2bbf872 feat: add proactive Dolt server health alerting to daemon (gt-br4zdu)
  • 2c78f6f feat: add role bead TTL override support for wisp compaction (gt-7mqd.5)
  • 91ef875 feat: add safety checks to gt convoy close with --force override
  • 2944c3e feat: add sling buttons to dashboard work panel and issue rows (#gt-kb1) (#1339)
  • 3541933 feat: add wisp_type='gc_report' to mol-session-gc formula (gt-hp5p)
  • cf09e85 feat: agent beads as persistent identity, not lifecycle artifacts (gt-fkgda)
  • 47871fd feat: agent-agnostic command provisioning (#1099)
  • c78c4af feat: branch-per-polecat for Dolt write isolation (gt-twqgs)
  • 6af0f8d feat: centralize hardcoded timeouts and thresholds into TownSettings config
  • de1ca7e feat: detect and clean up orphaned databases in .dolt-data/
  • 535db34 feat: enhanced command palette with autocomplete, recent history, and contextual suggestions (gt-ggl) (#1365)
  • 42c6573 feat: enrich gt convoy list --json with tracked issues and completion counts
  • 7705a4b feat: implement gt compact command for TTL-based wisp compaction (gt-7mqd.6)
  • d6b08ae feat: implement gt rig settings command
  • 5ee9abc feat: make integration branches end-to-end across the pipeline
  • 9a8ae05 feat: priority-based mail notification framing to prevent agent derailment (#1256)
  • e868037 feat: replace 10s polling with SSE for real-time dashboard updates (gt-tjy) (#1352)
  • 853531e feat: replace Mayor "does NOT edit code" with balanced sling-vs-fix guidance
  • 07e3011 feat: update liftoff test timestamp in manager.go (gt-iva20)
  • adf41b4 feat: update to use core tap for gastown installation (#872)

Bug Fixes

  • 2636de6 Merge PR #1110: fix(ci): use make build for integration tests
  • 24f8687 Merge PR #1172: fix(done): retry molecule close with exponential backoff
  • 5fb1a2b Merge PR #1193: fix(boot): skip IDLE_CHECK when Deacon is in await-signal backoff
  • 9742a58 Merge PR #1196: fix(web): remove os.Executable() to prevent test fork bomb
  • 227a664 Merge PR #1198: fix(witness): add await-signal backoff to prevent tight loop when idle
  • 1796c0d Merge PR #1204: fix: parameterize target branch in refinery patrol formula
  • 83d3982 Merge PR #1205: fix(role): remove incorrect /rig suffix from crew/polecat paths
  • 37e1cb4 Merge PR #1225: fix(skill): Update handoff skill to always collect state
  • b7c5811 Merge PR #1236: fix: doctor env-vars false positive for boot session
  • df128b0 Merge PR #1238: fix: prevent duplicate patrol wisps by checking hooked status
  • df40bea Merge PR #1241: fix: preserve --agent override across handoff
  • a7c3a9b Merge PR #1251: fix: remove .beads/ from gitignore required patterns
  • 4e6544f Merge PR #1259: fix(crew): sync remotes from mayor/rig when creating crew clones
  • 423cd78 Merge PR #1280: fix: prevent feed curator OOM and unbounded file growth (#1233)
  • fc426ef Revert "Revert "fix(tui): add timeout to CombinedSource fan-in goroutines to …" (#1435)
  • f759ed0 Revert "fix(tui): add timeout to CombinedSource fan-in goroutines to prevent …" (#1434)
  • ca42177 fix(activity): relax dashboard thresholds (green <5m, yellow 5-10m)
  • 4590e98 fix(api): add input validation and tests for issue creation
  • 28023db fix(beads): add flock-based locking to AttachMolecule/DetachMolecule (gt-5xhzs)
  • e781f2c fix(beads): fix findTownRoot and absolute path handling in rig scanning
  • 5e2d54c fix(beads): prefer named-role over rig-level-role in right-scan parse
  • e2116bb fix(beads): redirect to mayor/rig/.beads when rig root has no database
  • 8283f98 fix(beads): reject flag-like titles to prevent garbage bead creation (gt-e0kx5)
  • 05f7d82 fix(beads): try reopen on any create failure instead of parsing errors
  • edb948e fix(boot): add idle detection to triage for alive-but-not-patrolling Deacon (#1125)
  • dcc5825 fix(boot): detect stale molecule progress for idle Deacon
  • c8663d2 fix(boot): ensure Boot is ephemeral (fresh each tick) (#1126)
  • a59a60d fix(boot): move backoff check above hook-empty check in degraded triage
  • 1c98bc8 fix(boot): skip IDLE_CHECK when Deacon is in await-signal backoff
  • 3f1aa5f fix(boot): skip IDLE_CHECK when Deacon is in await-signal backoff
  • 9f64d4c fix(boot): use flock instead of session check in AcquireLock (#1123)
  • a7a23b1 fix(boot): wire Boot into GUPP startup pipeline (#1370)
  • b1e8b11 fix(build): error on raw go build, require make build
  • e937717 fix(build): make install now properly builds, signs, and installs to ~/.local/bin
  • 2f0f076 fix(build): use GT_ROOT for build error path hint
  • e88981d fix(ci): add MSYS2 mingw64 to PATH for Windows test step
  • bcf8bf1 fix(ci): copy built binary to GOPATH/bin for PATH discovery
  • c19f186 fix(ci): install ICU and GCC for Windows dolt CGo build (#1309)
  • 93272c8 fix(ci): install ICU headers for Windows dolt CGo build
  • efe31e0 fix(ci): install mingw64 gcc toolchain alongside ICU
  • 4aadf65 fix(ci): resolve lint errors and sync embedded formulas
  • 59d8a9a fix(ci): use make build for integration tests
  • d9f1fe9 fix(cmd): add more commands to beads version exempt list
  • c4d8e26 fix(cmd): exempt most commands from beads version check
  • d80dd53 fix(cmd): handle --help for commands with DisableFlagParsing
  • 75ec5b1 fix(cmd): handle --help for commands with DisableFlagParsing (#1003)
  • 1b24651 fix(cmd): improve checkHelpFlag to avoid false positives
  • 1ee3018 fix(cmd): replace os.Exit() calls with SilentExitError to allow deferred cleanup
  • 8e86d0b fix(cmd): update stale os.Exit comment in done.go
  • fa1c2d2 fix(config): Respect --agent override when town root not found
  • 6f4031b fix(config): auto-fill Hooks and Env defaults in fillRuntimeDefaults
  • c911fd8 fix(config): inject --settings flag for roles with mismatched session directories
  • 065d428 fix(config): preserve all RuntimeConfig fields in fillRuntimeDefaults (#971)
  • 73d2f83 fix(config): replace all LoadRuntimeConfig usages with ResolveRoleAgentConfig
  • 52588f2 fix(config): separate heartbeat/mayor thresholds from worker stale threshold
  • 307d6f7 fix(config): skip --settings flag injection for non-Claude agents (#1369)
  • ea511f9 fix(config): use --prompt flag for opencode in BuildCommandWithPrompt
  • f7082cb fix(config): use GT_ROOT from envVars before cwd detection in startup commands (#1391)
  • 8247c9e fix(convoy): auto-close empty 0/0 convoys and require tracked issues on create
  • 73019a8 fix(convoy): auto-convoy tracking link broken for cross-rig beads
  • ecf0d7a fix(convoy): detect orphaned molecules as stranded (#1118)
  • 73d577e fix(convoy): ensure custom types registered before creating convoy
  • 5e757d5 fix(convoy): replace sqlite3 CLI calls with bd commands for dolt compatibility (G4)
  • 9fb8d25 fix(convoy): use issue-level blocked state for stranded detection (#1358)
  • a86c7d9 fix(costs): read token usage from Claude Code transcripts instead of tmux (#941)
  • 7fde15a fix(crew): sync remotes from mayor/rig when creating crew clones
  • 082aaaa fix(daemon): PATCH-005 heartbeat age check + PATCH-006 PATH resolution
  • 1e5c9be fix(daemon): check flock status instead of file existence in isShutdownInProgress (#1117)
  • e256fa4 fix(daemon): clean up errant .beads in town-level service directories (#1113)
  • 45ffac6 fix(daemon): cross-platform build for Dolt server management
  • 1549560 fix(daemon): faster Deacon recovery via reduced thresholds (PATCH-002)
  • 6acd75c fix(daemon): kill stale agent sessions when patrols are disabled (hq-2mstj)
  • baec5b6 fix(daemon): respect rig bead docked status in isRigOperational
  • 46ff998 fix(daemon): respect rigs filter in patrol config
  • aa7656e fix(dashboard): distinguish crew from polecats in Workers panel
  • 232fc79 fix(dashboard): filter polecats by registered rigs
  • 85c2933 fix(dashboard): use townRoot for bd commands in cross-rig routing (#1161)
  • 9fc3690 fix(deacon): PATCH-010 add global respawn hook for reliability
  • 8e73936 fix(deacon): PATCH-010 auto-respawn on crash
  • 07af026 fix(deacon): improve session stability with startup consistency (#1156)
  • 349cee1 fix(deacon): prevent session-started nudges from resetting await-signal backoff
  • c4f0305 fix(deacon): remove session-started nudge from static config templates
  • 21e464d fix(deacon): update heartbeat on every startup, including resume (#1119)
  • be0a064 fix(doctor): add bare-repo-exists check to detect broken worktree references (gt-fmnml)
  • fc60966 fix(doctor): add verbose logging for unexpected errors in redirect topology check
  • 8959554 fix(doctor): add worktree-gitdir-valid check for broken .repo.git references
  • 37c2db9 fix(doctor): address PR review feedback for stale-beads-redirect check
  • e2c0d31 fix(doctor): allow identity anchor CLAUDE.md at town root
  • d9d239a fix(doctor): continue on error in agent/rig bead fix methods (#1318)
  • d001e74 fix(doctor): correct shell integration install hint
  • 3bd6da6 fix(doctor): detect and fix suboptimal routes that rely on beads redirect (#1441)
  • 4c3a17d fix(doctor): exclude closed beads from stale-agent-beads detection
  • 0cd8bc8 fix(doctor): exclude closed beads from stale-agent-beads detection
  • d7d84ca fix(doctor): extend rig layout detection to PrefixMismatchCheck, add safety
  • 9db9fc2 fix(doctor): implement Fix for misclassified-wisps check (#878)
  • 7e6b88e fix(doctor): make claude-settings check respect gitignored files
  • 74654ce fix(doctor): run bd from rig directory in DatabasePrefixCheck
  • b5e6eef fix(doctor): show wrench icon for fixed items in streaming output
  • 00a4e40 fix(dog): add name validation to prevent path traversal and empty-name deletion (gt-6cft8)
  • fe44fd2 fix(dog): migrate from claude.EnsureSettingsForRole to runtime.EnsureSettingsForRole
  • 3ccc609 fix(dog): use IsAgentAlive for agent-agnostic zombie detection
  • d9af5a5 fix(dog): use correct method name IsAgentRunning instead of IsClaudeRunning
  • 6a7a660 fix(dolt): harden database verification for correctness and resilience
  • a9b6431 fix(dolt): prevent read-only mode under concurrent load (gt-lfc0d)
  • 203daad fix(dolt): verify databases are served after migration and start (#1319)
  • 9ed9d3a fix(doltserver): follow .beads/redirect in FindMigratableDatabases (#1040)
  • e54a255 fix(doltserver): validate empty rigName and townRoot in FindRigBeadsDir
  • 8cde4a3 fix(done): bare-repo push fallback and post-push verification (#1349)
  • b4976c2 fix(done): close issue on no-op completion, prevent formula change discard (G15+G16)
  • 92b9915 fix(done): force-close issue on no-op completion to bypass molecule deps
  • e23bc50 fix(done): prevent zombie polecats with done-intent labels, deferred kill, and soft errors
  • ce0e958 fix(done): retry molecule close with exponential backoff
  • 74ed5e2 fix(done): use explicit refspec to push polecat branch, not to main
  • c8ef15d fix(e2e): adapt containerized tests for current codebase
  • 6268e31 fix(formula): add missing skipped_count variable declaration
  • 9515aec fix(formula): add missing variable declarations to formulas (#1133) (#1134)
  • 35b759a fix(formula): declare computed template variables and fix TOML parse errors
  • 8034a08 fix(formula): remove idle polecat references from mol-convoy-feed
  • 7544537 fix(formula): restore deacon patrol changes overwritten by go generate (#1386)
  • 3b1d7c3 fix(formulas): add bd sync calls to ensure status updates are persisted
  • a9a1cf1 fix(git): add periodic cleanup of stale local polecat tracking branches (gt-gsakye)
  • 489053d fix(git): preserve symlinks when moving directories across filesystems
  • 859a2c3 fix(git): preserve symlinks when moving directories across filesystems (#1057)
  • 9d88259 fix(git): remove duplicate ls-remote call in BranchPushedToRemote
  • 7338319 fix(git): use RemoteDefaultBranch() instead of hardcoded 'main' in BranchCreatedDate
  • 1dc660c fix(git): use post-checkout for branch protection (git has no pre-checkout)
  • 0c791a4 fix(handoff): don't KillPaneProcesses on self-handoff
  • 36c7222 fix(handoff): preserve tmux session by setting remain-on-exit before kill
  • 7926d7b fix(handoff): prevent self-kill during gt handoff (#881) (#882)
  • 177094a fix(handoff): remove KillPaneProcessesExcluding race condition
  • f635555 fix(hook): complete convoy hooking implementation (#897)
  • 809b0eb fix(hook): fall back to GT_ROLE when cwd detection fails
  • d043e01 fix(hook): persist hook_bead on agent bead when hooking work
  • 653583b fix(hook): persist hook_bead on agent bead when hooking work
  • e3d2b95 fix(hooks): add PreToolUse guards to match EnsureSettingsAt templates
  • e89fedb fix(hooks): add deacon nudge to DefaultBase SessionStart hook
  • b158ff2 fix(hooks): allow tag pushes in pre-push hook
  • 493507a fix(hooks): discover crew-level and polecats-level settings
  • bfc8285 fix(hooks): per-matcher merge logic, error handling, rename runHooksList
  • 45371dd fix(hooks): unify type systems, fix list alignment, add tests (gt-ja40n.3, gt-ja40n.4)
  • 4133d48 fix(hooks): use MarshalSettings in tests instead of json.Marshal
  • 1acf754 fix(hooks): use approve instead of allow for Stop hook decision
  • d820a7e fix(install): refuse to create HQ inside existing workspace
  • 543d119 fix(krc): resolve conflict markers from PR #1112
  • 4d1d385 fix(lint): address errcheck, gosec, and unparam warnings
  • 4b62556 fix(lint): address errcheck, gosec, and unparam warnings
  • c37ab81 fix(lint): address errcheck, gosec, and unparam warnings
  • 2c57df3 fix(lint): remove unused issueID param from parseIssueShowJSON
  • 71077e9 fix(mail): filter by read status in ListUnread for beads mode (#936)
  • db60489 fix(mail): handle crew/polecat ambiguity in notification session lookup (#914)
  • 3822400 fix(mail): handle hq- prefix in agentBeadIDToAddress
  • 82904fa fix(mail): handle hq- prefix in agentBeadIDToAddress (#1009)
  • 75739cb fix(mail): handle hq- prefixed agent IDs in recipient validation
  • f41de0d fix(mail): mark messages as read when viewed via gt mail read
  • 0e0547b fix(mail): prevent message type failures (#960)
  • 47cd7aa fix(mail): remove unused error return from isRecipientMuted (gt-ow2gb)
  • 8a9738e fix(mail): resolve cross-rig agent addresses when description is missing (#1385)
  • 7946b14 fix(mail): resolve sender identity from .gt-agent metadata (#1208)
  • 16bff91 fix(mail): search rig-level beads when resolving agent addresses
  • c6a8d44 fix(mail): soften inject wording so agents process mail before going idle (gt-9xfn) (#1414)
  • af18b40 fix(mail): use -- separator before subject in bd create calls
  • 4e4824a fix(mail): validate recipient exists before sending (#886)
  • fb4e292 fix(mail): validate rig-level agent recipients (#1013)
  • 3aafa0e fix(mayor): run session from mayorDir instead of townRoot
  • 3da0d5a fix(molecule): use Dependencies from bd show instead of empty DependsOn (#901)
  • 63d60f1 fix(namepool): display correct theme from config.json (#890)
  • 6d32c62 fix(npm): use NPM_TOKEN for npm publish authentication
  • b4399bb fix(nudge): correct backoff cap, reduce retry timeout, improve tests
  • ea765f9 fix(nudge): resolve short addresses by trying crew then polecat
  • 3eca275 fix(nudge): retry on transient "not in a mode" errors during startup
  • 3442471 fix(orphan): protect all tmux sessions, not just Gas Town ones (#924)
  • 82d84b2 fix(orphan): skip IDE extension processes (VS Code, Cursor) in cleanup
  • e35d64a fix(orphan): skip interactive terminal sessions in zombie cleanup
  • 3c14ef6 fix(patrol): hook new wisp after squash in witness and refinery formulas (#1372)
  • 7a67dc0 fix(patrol): use gt convoy commands instead of bd list for town-aware convoy detection (#1106)
  • 8753219 fix(polecat): clean up orphan state during name pool reconciliation
  • 936fd41 fix(polecat): clean up orphan state during name pool reconciliation (#1073)
  • acc720e fix(polecat): clean up polecatDir when worktree creation fails (#1144)
  • 464c912 fix(polecat): close open MRs before nuking to prevent orphaned queue entries
  • 212f08a fix(polecat): detect when shell is cd'd into worktree before nuke (#969)
  • ef42507 fix(polecat): emphasize bd ready and molecule steps in template
  • bebf425 fix(polecat): kill orphaned Claude processes when nuking polecats
  • e6cdb2d fix(polecat): prevent orphaned hooked work during concurrent sling (#1122)
  • afbcefb fix(polecat): resolve cross-rig beads in session manager (#1056) (#1130)
  • ccd0700 fix(polecat): transition issue from hooked to in_progress on polecat start (#1149)
  • 30e61fb fix(polecat): use ResolveRoleAgentConfig for proper role_agents resolution
  • c72c117 fix(polecat): verify and force removal of worktree directories during nuke
  • 71c8655 fix(polecat): verify and force removal of worktree directories during nuke (#1074)
  • b4212f1 fix(polecat): verify worktree creation in SpawnPolecatForSling
  • 943a886 fix(polecat): verify worktree creation in SpawnPolecatForSling (#1072)
  • f276b9d fix(prime): show molecule instructions BEFORE bare bead instructions (#920)
  • c80eb4e fix(priming): add town root CLAUDE.md to gt install and gt doctor
  • b050acf fix(ready): filter identity beads from bd ready output, simplify formulas
  • b7f84fb fix(refinery): add await-signal to patrol loop to prevent stall on idle MQ (gt-0hzeo)
  • 279b5c9 fix(refinery): auto-sync crew workspaces after merge (#1147)
  • 5ce42b1 fix(refinery): implement stale claim timeout to prevent stuck MRs
  • 26541af fix(refinery): nudge refinery when MR is created, not at sling time (#1168)
  • 13a0c7c fix(refinery): reopen source issue on rejection
  • 583ecfa fix(refinery): serialize main pushes with merge slot
  • d7a6d52 fix(rig): bootstrap Dolt, fix tracked beads, enhance rig list (#1433)
  • cbd9ad3 fix(rig): check parked/docked status before starting agents
  • 83ddef4 fix(rig): dock/undock require main branch to prevent silent failures
  • 621bbd3 fix(rig): gt rig dock now stops polecat sessions
  • fc6aea5 fix(rig): map rig/polecats assignees to tmux sessions
  • 77514a3 fix(rig): normalize trailing dash in beads prefix at intake (#1136)
  • 2fb787c fix(rig): remove route from routes.jsonl on rig remove (#910)
  • 4b3afc7 fix(rig): scaffold .claude/ in polecats/ during gt rig add (gt-ke4mj)
  • 2de9fe3 fix(rig): validate git URL in gt rig add to reject local paths (#1138)
  • b90a338 fix(role): remove incorrect /rig suffix from crew/polecat paths
  • a5554b8 fix(session): remove redundant gt prime instruction from start/restart beacons
  • 1468b03 fix(session): use hq- prefix for town-level dog and boot sessions
  • 6c86616 fix(settings): set editorMode to normal for Claude sessions (#929)
  • cf544aa fix(shell): use detected shell RC path in activation message
  • 8013ec0 fix(skill): /handoff now always collects state
  • b74fef1 fix(sling): add cross-rig guard to prevent slinging beads to wrong rig (gt-myecw)
  • f19b410 fix(sling): add rollback on partial failure to prevent zombie artifacts (gt-jn40ft)
  • 1f293e5 fix(sling): defer polecat session start to prevent race condition
  • 05148e9 fix(sling): pass GT_ROOT to bd cook for formula path resolution
  • 8167085 fix(sling): retry hook with verification on Dolt concurrency errors (#1012)
  • b7e8c1e fix(sling): rollback spawned polecat when wisp creation fails (#1390)
  • e4a40fa fix(sling): route standalone formula wisps to target rig beads (#1155)
  • 5abaeba fix(sling): skip nudge when self-slinging
  • c897b6f fix(sling): trim trailing slashes from target arguments
  • 67e148e fix(sling): trim trailing slashes from target arguments (#1068)
  • 90a6787 fix(sling): wait for young sessions in ensureAgentReady (hq-t7gm)
  • e7514bc fix(spawn): clear NODE_OPTIONS to prevent polecat debugger crashes (#1375)
  • 889c586 fix(stale): enable stale binary warning and fix source detection
  • b229fde fix(startup): add minimum readiness delay for zero-delay presets
  • ce49e68 fix(startup): handle unknown agent presets with minimal fallback config
  • 232e3d9 fix(startup): normalize empty agentName to claude for default sessions
  • 31bd120 fix(startup): unify agent startup with beacon + instructions in CLI prompt (#977)
  • abc93a0 fix(style): replace incomplete stripAnsi with regex, remove dead code (gt-qecxc, gt-eedlh)
  • f886dab fix(templates): add directory discipline, fix gt mail hook command
  • fd25b51 fix(templates): directory discipline, bd create clarification, command fixes (#953)
  • 319e0f7 fix(test): add --adopt flag to integration tests using local paths
  • 5c21e11 fix(test): add opencode stub binary for agent config tests
  • 96a2423 fix(test): fix sling test command pattern matching
  • 41045f2 fix(test): handle bd warnings in JSON output parsing (gt-ow2gb)
  • 8bb8e48 fix(test): log commands in Windows fake bd for TestInitBeadsSetsIssuePrefix
  • ca3276a fix(test): migrate integration tests from SQLite to Dolt backend (#1304)
  • f768c55 fix(test): resolve macOS /var symlinks in integration tests (gt-ow2gb)
  • fdbf04e fix(test): set BuiltProperly ldflags in test helper
  • bc65fa4 fix(test): skip Windows retry test due to 8.3 short path issue (gt-ow2gb)
  • e751e68 fix(test): update tests to expect compound GT_ROLE format
  • 57f062a fix(tmux): add -- to kill commands to prevent procps-ng argument parsing bug (#928)
  • e0a4e5a fix(tmux): add defer cleanup to kill tests to prevent session leaks
  • 2cb7dd6 fix(tmux): detect Claude when pane command is version string
  • fccac5e fix(tmux): eliminate TOCTOU race in EnsureSessionFresh (gt-1nfip)
  • b5ba951 fix(tmux): handle deleted working directory on respawn
  • be96bb0 fix(tmux): kill process group to prevent orphaned processes
  • 3519f58 fix(tmux): require explicit opt-in for cleanup session tests
  • bd9e233 fix(tmux): target pane 0 explicitly in health checks to prevent false zombie detection
  • 70faa3f fix(tmux): tolerate 'server exited unexpectedly' error (#1440)
  • 0605db9 fix(tmux): use syscall.Kill() for process group termination
  • cc326d4 fix(tmux): use unix timestamp for session creation time parsing
  • fe09e59 fix(tmux): wake Claude in detached sessions by triggering SIGWINCH (#976)
  • aae35e2 fix(tui): add timeout to CombinedSource fan-in goroutines to prevent leaks (#689)
  • 67cce7e fix(unsling): clean up stale hooked beads when agent hook_bead is null
  • cf72219 fix(unsling): update bead status to open after clearing hook
  • f372837 fix(version): change stale binary advice from 'gt install' to 'make install'
  • 4eab8ba fix(version): improve bd version check resilience during multi-agent startup (#984)
  • cdcde82 fix(version): use --no-daemon to avoid bd version check contention
  • 717478d fix(web): buffer template output to prevent superfluous WriteHeader
  • 1122267 fix(web): remove os.Executable() to prevent fork bomb in tests
  • e0a0368 fix(witness): add await-signal backoff to prevent tight loop when idle
  • 69cfab8 fix(witness): add grace period before auto-nuking idle polecats (#1182)
  • eb017c7 fix(witness): fire CheckConvoysForIssue from zombie detection paths (gt-nsteq7)
  • 72c0528 fix(witness): fix ParseSwarmStart docstring, double TrimPrefix, and missing BeadIDs parsing
  • c971808 fix(witness): prevent crash loop when rig is idle
  • 97a7bb0 fix: Add missing deacon/dogs/ pattern to .gitignore template
  • 95ae2dd fix: Allow .mcp.json in worktree sparse checkout
  • f868250 fix: Allow .mcp.json in worktree sparse checkout (#1067)
  • e65e911 fix: Change 'Gastown' to 'Gas Town' in all ASCII art and titles
  • 75b7e3b fix: MarshalSettings no longer mutates input and can clear editorMode
  • 2c3d6ba fix: PATCH-003 push verification + PATCH-004 tmux UTF-8
  • 8925ac6 fix: Phase A lifecycle fixes (G11, G15 retry, G20, A4)
  • 0d86358 fix: Prevent startup race condition and isolate polecat settings
  • f43de72 fix: Prevent startup race condition and isolate polecat settings (#1077)
  • 014480e fix: Skip Windows-incompatible tests when binaries unavailable
  • 4c6ba82 fix: TestEnsureRunning_UnhealthyTriggersRestart race condition (gt-1wwbk)
  • 8941e7b fix: Updated setup brew command to use correct formula (#903)
  • 7e299ee fix: ValidateTemplateVariables now scans Prompts, Inputs, and Output fields
  • 58022ba fix: abbreviate rig names to beads prefix in tmux status line
  • 3da410f fix: accept all bead prefixes in gt cat and clean up on move failure (gt-2q24f)
  • 13c1394 fix: add --force flag to hooks install for disabled hooks (gt-qzwds)
  • e724ad0 fix: add --limit 0 to queue listing for correct FIFO ordering (gt-mo4xj)
  • db21231 fix: add --no-boot flag to gt sling to avoid witness/refinery lock contention (gt-xu9g)
  • 8493430 fix: add 10s timeout to GetActiveConnectionCount to prevent hanging (gt-20heet)
  • 57ec9f5 fix: add 30s timeout to bd commands in plugin recording
  • a643e95 fix: add 30s timeout to bd subprocess calls in polecat session_manager
  • 4e5d269 fix: add 4-hour session age circuit breaker for refineries
  • 2499d26 fix: add Ephemeral field to Issue struct and fix misclassified wisp check
  • be4f332 fix: add GroupBeadIDWithPrefix for consistent ID helper signatures (gt-4p791p.11)
  • e12aac8 fix: add TOCTOU re-verification before destructive cleanup actions (gt-23rl1)
  • 08589e2 fix: add auto-respawn hook to mayor session for tmux detach survival
  • 61ef681 fix: add bounds checks for string indexing panic points (issue #1228)
  • 9e10fb3 fix: add concurrency protection to polecat Manager and dog Manager (gt-0wugq)
  • 743b606 fix: add configurable timeout to migration step commands
  • b4ad5ea fix: add context timeout to bd subprocess execution to prevent hangs (gt-ferja)
  • 5425645 fix: add crew and polecats to reserved polecat names to prevent session name collisions
  • 9f70511 fix: add cross-rig routing to ResetAgentBeadForReuse and CloseAndClearAgentBead (gt-2iqk5)
  • 201b450 fix: add daemon running check to gt dolt migrate to prevent race conditions
  • e82dc0c fix: add dedicated Dolt health check ticker (30s) separate from 3min heartbeat
  • 725227c fix: add dependency cycle detection for expansion formulas
  • 0cd135c fix: add error logging in done.go and file locking in curator.go (gt-i8yi8, gt-s6xvl)
  • 75e8911 fix: add exponential backoff and max-restart cap to Dolt server restarts (gt-s2rdt7)
  • 33439e9 fix: add extractIssueID unwrap to TUI convoy consumers and simplify test (gt-yp2pxc)
  • dac9123 fix: add file locking to EnsureMetadata to prevent read-modify-write race
  • f9cf612 fix: add flock locking, atomic archive, write error checks, and corruption detection to legacy JSONL mailbox (gt-uglmm)
  • 55f5eb1 fix: add flock-based coordination to prevent TOCTOU race in lock.Acquire (gt-o6t54)
  • 5d273ac fix: add gt dolt init to detect/repair workspace pointing at nonexistent database (gt-3k2h5)
  • 66ae73d fix: add input validation for group names in CreateGroupBead (gt-4p791p.12)
  • c86fce1 fix: add input validation for path traversal and argument injection (fixes #1229)
  • 315a0bd fix: add input validation for web dashboard handlers (#1328)
  • 6241834 fix: add missing [vars] declarations to 9 formula TOML files (gt-54tbh)
  • 045c3fb fix: add missing [vars] declarations to 9 formula files (gt-tfr3en)
  • 184af2b fix: add mutex protection to NotificationManager for thread safety (gt-vae5f)
  • 703f83d fix: add per-bead file locking to prevent read-modify-write races (gt-joazs)
  • c8918a7 fix: add post-claim verification to prevent TOCTOU double-processing (gt-l29bi)
  • 602ee8a fix: add proactive zombie detection to witness patrol (gt-kj71zk)
  • e928f97 fix: add proper error handling to mail commands that silently swallowed failures (gt-mhaiq)
  • 38b6678 fix: add reactive convoy continuation feeding to observer (gt-mlfjm)
  • 41a1e30 fix: add regex nil checks in callbacks, remove unsling globals
  • 0d9997c fix: add reserved rig names, metadata tests, and recovery hint (#1346)
  • f73a764 fix: add retry logic to SetAgentState and CreateOrReopenAgentBead (gt-94llt7)
  • b6ce2a2 fix: add retry loop and error checking to run-hardener.sh nudge delivery (gt-cxvei)
  • 4f5d426 fix: add retry with backoff for merge slot acquisition and fix Windows CI
  • c086d0f fix: add session name validation to tmux creation and shell-interpolation methods (gt-zmxbj)
  • af5100c fix: add timeout to NudgeSession/NudgePane per-session locks (gt-z4drj)
  • 2360837 fix: add warning logging for silent routing fallbacks in ResolveRoutingTarget and LoadRoutes (gt-s66sh)
  • 331ee74 fix: add warning logs for silently swallowed errors (fixes #1231) (#1281)
  • 44d0342 fix: add working-dog guard and atomic per-rig refresh to dog Refresh (gt-94mvj)
  • a66d960 fix: address CodeRabbit review feedback on PR #25
  • cc9a17a fix: address code review findings for input validation PR #1283
  • fa09fcc fix: address review feedback for stale claim timeout
  • 66245f6 fix: address review findings for Mayor daemon supervision
  • 4e7de88 fix: agent bead read-modify-write race, audit log path, and redirect safety (gt-fcqj7)
  • 2c264b9 fix: agent registry cache invalidation and setup hook timeout
  • d2bb84e fix: align CreateRigBead and CreateGroupBead signatures (gt-4p791p.9)
  • c94a230 fix: align assigneeID format with hooked issue format (#946)
  • 57f8b06 fix: align gt shutdown kill order with gt down (gt-cqytb)
  • dc957bc fix: align molecule dep type filter with beads AffectsReadyWork semantics
  • f38e5bf fix: allow polecat to delete its own worktree on gt done (#1023)
  • 0ff092a fix: allow vars with formula-on-bead slings (#966)
  • 072c464 fix: always send handoff mail (#973)
  • 49cb8ed fix: always set jsonl_export to canonical value, detect stale values in doctor (gt-m781w)
  • 7682173 fix: apply ZFC formula changes to canonical source
  • 064b9d0 fix: apply d11560d ZFC changes to canonical formula source
  • 657eed9 fix: atomic label removal in queue release to prevent orphaned claims (gt-qpkwh)
  • 6862cc3 fix: atomic lock writes and checked Close() in file copy
  • 2e41baa fix: auto-create dogs on pool dispatch when no idle dogs available (gt-jxoym)
  • c34a42f fix: auto-force re-sling when hooked agent session is dead (gt-pqf9x)
  • 29d4b7d fix: avoid close/reopen cycle for agent beads on Dolt backend (gt-14b8o)
  • 896d77d fix: batch sling starts polecat sessions and cleans up on failure (gt-vd6lg)
  • f90fd3b fix: boot starts Deacon directly when detected missing (gt-mlmys)
  • 206aa10 fix: call extractSimpleRole in BuildStartupCommandWithAgentOverride
  • 149e298 fix: capture ctx.Err() before cancel() to prevent timeout detection race (gt-olvcx)
  • 0db30ee fix: change BuiltProperly check from error to warning
  • 1de1fe7 fix: check DND/muted state before sending nudges in mail, broadcast, and channel paths (gt-3fk1m)
  • 611f3b8 fix: check beads.db presence in verify_zero_artifacts and remove dead code (gt-bzu9f)
  • 2684662 fix: check convoy tracked deps to prevent duplicate auto-convoy creation (gt-9qcum)
  • fa48770 fix: check positional arg before flag validation in mail reply (gt-m7z0x)
  • ee52218 fix: clean up orphaned tmux sessions at gt start time
  • 35238c5 fix: clean up polecatDir on agent bead retry failure in RepairWorktreeWithOptions (gt-ye70dz)
  • ce2dbbb fix: clean up stale SQLite references and tech debt in beads package (gt-76oep)
  • 80d4258 fix: clear message ID on fan-out copies to prevent shared IDs across recipients
  • 8a39052 fix: close TOCTOU race in Dolt server startup (gt-ppksl)
  • 5b72e84 fix: close TOCTOU race in FindOrCreateRigBeadsDir
  • 7702785 fix: collect errors on fan-out delivery instead of silently losing messages (gt-sog56)
  • 25775fb fix: complete type-to-label migration for mail queries #1288
  • dd8632a fix: complete type-to-label migration for mail queries (221ff02 missed read side)
  • 8d493ea fix: consolidate Merge to use applyOverride/mergeEntries from merge.go
  • dc8a2ce fix: copy RuntimeConfig in normalizeRuntimeConfig to avoid mutating input
  • 223cb66 fix: correct 'ephemeral' framing — sessions are ephemeral, not polecats (gt-ww9bf)
  • befd1e5 fix: correct bd list/create flag syntax in witness patrol formula (#493)
  • 350c2f0 fix: create new worktree before removing old one in RepairWorktree
  • 29bdb18 fix: crew shell inherits parent GT_ROLE instead of session-level env (#1292)
  • 3f00c6f fix: cross-rig routing in Beads.Show() and dolt prefix detection on adopt
  • d483a31 fix: deacon resolves idle polecats instead of escalating to mayor
  • 62a5bbb fix: derive rig name from cwd in runDone instead of calling findCurrentRig
  • 76499ce fix: detect and auto-recover from Dolt read-only state (gt-yfk8s)
  • 8fa1ef2 fix: detect and auto-recover from Dolt read-only state in gt commands (gt-chx92)
  • f7640a9 fix: detect polecat with closed bead still running in witness patrol (gt-h1l6i)
  • d2d781b fix: detect running agents when argv[0] is version number
  • 799efae fix: detect tmux-alive-but-agent-dead zombies in DetectZombiePolecats (gt-kj6r6)
  • 98067e2 fix: detect zombie tmux sessions in gt polecat list
  • f8ee412 fix: detectBeadsPrefixFromConfig misparses multi-hyphen issue IDs (gt-mawit)
  • ac5e3b9 fix: dolt_remotes patrol correctly disabled when config is nil
  • 77f8c57 fix: don't TrimSpace git status --porcelain lines in isBeadsOnlyChanges (gt-7j2zb)
  • 7f80913 fix: eliminate FindRigBeadsDir TOCTOU race with atomic FindOrCreateRigBeadsDir (gt-k10wf)
  • 5c2863e fix: eliminate deadlock in TestRestartWithBackoff_SkipsIfStartedDuringSleep (gt-m5ju2)
  • 75c1898 fix: eliminate sling description read-modify-write race and add --no-daemon (gt-kphi9)
  • b3cb8d8 fix: ensure dog lock directory exists before flock (gt-f2h87)
  • 7241fc3 fix: ensure metadata.json has dolt server config in all worktrees (gt--srg)
  • 8795f9a fix: eradicate Beads Classic sqlite references from gastown codebase
  • daf2d27 fix: extract isCloseEvent method and rewrite test to call it (gt-7xh0y)
  • da48891 fix: extract issueToMRInfo helper, replace joinFlags with strings.Join
  • 23b35b5 fix: fail fast on config errors in Dolt retry loops (gt-2ra)
  • f482a27 fix: filter dot-prefixed directories from crew scan in rig manager
  • 8cc1431 fix: findCommonHooks intersection and RequiredUnless validation (gt-zt8df, gt-b8wh1)
  • 2aa1e08 fix: five code-review bugs — nil deref, orphan processes, path safety, error loss, throttle
  • 7abd14a fix: generate message ID at creation time in gt mail send (gt-rud3p)
  • 920740a fix: generate message ID before Validate in sendToSingle (gt-8vw)
  • 24b4756 fix: give rigRebootCmd its own flag variables instead of sharing with rigShutdownCmd
  • f9f60c8 fix: gt dolt init-rig runs CREATE DATABASE on live server (gt-0pa6z)
  • 61e0367 fix: gt rig add now updates daemon.json patrol config
  • d414e6d fix: gt status checks agent liveness, not just tmux session existence
  • 8abde53 fix: guard minAggregateCount against zero value from partial config
  • 85dba4a fix: handle ErrSessionNotFound when cleaning stale sessions in gt crew at
  • e8dfddc fix: handle dirty working tree in daemon syncWorkspace (gt-jtia8)
  • 5655543 fix: handle gt-boot in ParseSessionName and add crew/polecats to reserved names
  • fc78764 fix: handle legacy session format and fix test failures
  • d610b06 fix: handle overseer address in notification routing (gt-afthf)
  • 2598a87 fix: harden pane-0 targeting and extend to remaining callsites
  • b63786a fix: improve error handling across polecat/dog/session cleanup paths (gt-v9bb0)
  • bbc9c7d fix: improve error messages for gt orphans and gt peek from non-rig directories (gt-7ios)
  • 0cb0d3e fix: increase Dolt retry to 10 attempts with exponential backoff + jitter (gt-nv8bk)
  • 0ae4521 fix: increase MRID hash from 6 to 10 hex characters to avoid collisions (gt-0a9vy)
  • ff56f5f fix: increase graceful shutdown grace period from 100ms to 3s with polling (gt-wyayy)
  • 0fb3e8d fix: inherit environment in daemon subprocess calls (#876)
  • 457c600 fix: integration branch bugs from test plan run 3
  • 4f10c1f fix: kill process group on migration timeout to prevent orphaned children (gt-yqlb3)
  • 88666ec fix: limit concurrent bd processes to prevent dolt lock contention (G1)
  • 04727ef fix: log transient tmux errors in DetectZombiePolecats instead of silently skipping (gt-4len6)
  • bb99f39 fix: log warning on convoy completion notification failure (gt-p3pdv)
  • 13763e5 fix: log warning on invalid override files, return ReadDir errors (gt-dhp3u)
  • 173538e fix: make ParseLabels idempotent - clear state before re-parsing (gt-nzrvk)
  • 637581b fix: make beads version check non-blocking with 2s timeout (#1140)
  • 0a6af56 fix: make catalog SaveToFile and routes WriteRoutes atomic
  • 2079efb fix: make group CRUD methods consistently return (*Issue, error)
  • c5e7365 fix: make gt shutdown always clean up orphaned Claude processes (gt-wd3ce)
  • 9f57a35 fix: migrate doctor checks to label-based bead verification (gt-x9bdy)
  • 221ff02 fix: migrate mail/daemon/TUI from type-based to label-based bead queries (gt-uxwyw)
  • d2665ab fix: migrate settings to settings.local.json and remove redundant bootstrap files (#1082)
  • 15be674 fix: molecule step ordering - treat unknown dep types as blocking + sort by sequence
  • e3113ff fix: move process group kill to platform-specific files for Windows compat
  • 1e4ea5e fix: multiple P1 bug fixes — race condition, mutex timeouts, dry-run flag, dot-dir filter, test fixes
  • 3652096 fix: new rigs share HQ dolt_database for cross-db bead visibility (gt-42zaq)
  • 462ea4f fix: normalize NBSP in prompt matching for Claude Code readiness detection (#1442)
  • 2dde809 fix: nuke stale go-install binaries + embedded removal docs + refinery hardcode main
  • aa36339 fix: only update lastHealthyTime on initial detection and after reset (gt-ju8wja)
  • 7695b0c fix: parameterize target branch in refinery patrol formula
  • c20fbce fix: parse bd show --json as array consistently (gt-4jahjt)
  • c4889b7 fix: parseValue type inference falls back to string on unmarshal failure (gt-b9iky)
  • 77db5b7 fix: pass --backend dolt --server to all bd init calls (gt-enott)
  • 04e2b85 fix: pass r.Path instead of townRoot to NewWithBeadsDir in getBeadLabel (gt-brmfz)
  • 9f30b80 fix: polecat nuke, shell-alias cwd, dolt PID staleness (#1408)
  • de2fa6c fix: polecat with no work on hook now terminates instead of escalating (gt-jen3b)
  • 96d2bc2 fix: populate GT_BRANCH/GT_POLECAT_PATH and arm cleanup on branch detection failure
  • 4dfc59b fix: preserve --agent override across handoff via tmux session env
  • de048ee fix: preserve RoleThemes and Custom when saving rig theme (gt-vri31)
  • e6fd8d6 fix: preserve existing CLAUDE.md files during install and rig add
  • 3c6d694 fix: prevent dog Refresh from leaving inconsistent state on partial failure
  • 813811d fix: prevent duplicate auto-convoy creation on sling
  • bf73271 fix: prevent duplicate patrol wisps by checking hooked status
  • 03259ea fix: prevent feed curator OOM and unbounded file growth (fixes #1233)
  • 7824dd1 fix: prevent polecat respawn from destroying unmerged MR work (#1008)
  • 802353b fix: prevent polecat respawn from destroying unmerged MR work (ne-rn24b)
  • 367fb67 fix: prevent refinery from re-implementing polecat work instead of merging
  • b894d92 fix: prevent split-brain risk when bd used before dolt server starts (gt-ceq7b)
  • 5aecbc0 fix: prevent zombie detection race, spawning invisibility, and escalation loops (gt-3ltnm)
  • 72201b0 fix: prevent zombie polecat on RepairWorktree creation failure (gt-9zzuh)
  • 82e4e7b fix: propagate errors from ShowMultiple and add missing flags to slot commands
  • 83a0871 fix: reconcile polecat display state with tmux liveness in gt rig status (gt-1qyne)
  • 4e290ce fix: reconcile polecat display state with tmux session liveness
  • 314477a fix: refresh cross-rig issue status in convoy tracking (gt-b14z6)
  • cccfc27 fix: remove --no-daemon from convoy/observer.go (missed by PR #1279)
  • c08d099 fix: remove --no-daemon from sling paths lost during rebase
  • 881dd7e fix: remove .beads/ from gitignore required patterns (regression from #966)
  • e429812 fix: remove bd daemon references from gt down help text
  • c6832e4 fix: remove bd sync references, Gas Town is Dolt-native
  • 5aea5fa fix: remove broken dolt CLI flags from daemon health checks
  • 70ca511 fix: remove conflicting required+default in mol-session-gc formula (#919)
  • e1d1393 fix: remove deacon health monitoring from witness patrol
  • 6940763 fix: remove dead GetUndefinedVariables, add backoff to dolt recovery (gt-oz5qe, gt-qgin3)
  • b30cc9d fix: remove dead code in molecule and cmd/up (gt-7nogk, gt-6khuy)
  • 941dad1 fix: remove dead mail functions from statusline, deduplicate crew session parsing
  • 06a6186 fix: remove deprecated --no-daemon flag and BEADS_NO_DAEMON env var (#1301)
  • 4cd8a77 fix: remove deprecated --no-daemon flag from all bd command invocations
  • 003f162 fix: remove deprecated DeleteDogAgentBead that hard-deleted dog identity (gt-c89tv)
  • 304f2c3 fix: remove hardcoded repo names from role templates (#1107)
  • 7e28985 fix: remove push-to-main from polecat work formula quick-fix path
  • 136f841 fix: remove sqlite3 doctor check from gastown
  • d41b3c3 fix: remove unnecessary fmt.Sprintf in patrol_helpers.go
  • a326f7a fix: remove unused themeApplyFlag variable in theme.go
  • 91c9e14 fix: rename 'Active Polecats' to 'Polecats' in polecat list output (gt-b396c)
  • cd3523e fix: rename misleading variable in TOCTOU guard (gt-23rl1)
  • fc77e86 fix: replace WITNESS_PING mail with passive Deacon health check (gt-bwism)
  • 979ebf3 fix: replace blind PGID kill with verified group member enumeration (gt-2dp2i)
  • 04d0130 fix: replace exec.Command(test -d) with os.Stat in IsRigDocked
  • 3a424c3 fix: replace flock with sync.Mutex for EnsureMetadata goroutine sync (gt-o9lsz)
  • e32b16d fix: replace fragile string parsing with json.Unmarshal in findCleanupWisp (gt-kke3r0)
  • 84f244d fix: replace hand-rolled TOML parser in formula.go with formula.ParseFile
  • d11560d fix: replace hardcoded session cycling thresholds with agent judgment (ZFC)
  • b88dce6 fix: require space or end-of-string after protocol message type prefix (gt-3kezl)
  • cdd533f fix: resolve 2 Windows CI feed test failures
  • 82ac242 fix: resolve 4 Windows CI test failures
  • ad7deec fix: resolve CI lint and test failures on main (#1436)
  • 7a3974d fix: resolve circular redirect warning in rig add
  • 73e0565 fix: resolve polecat Dolt branch isolation gaps (sling + done)
  • 17d02c0 fix: resolve pre-existing build errors (missing strconv import, extractSimpleRole rename)
  • f5232ce fix: resolve rig-level beads in gt sling via rigs.json prefix fallback
  • 1928335 fix: return (true, ErrNoHandler) for recognized-but-unhandled protocol messages (gt-ts0jp)
  • d7ead92 fix: return ErrNotFound instead of nil,nil,nil in group bead lookups (gt-4p791p.3)
  • 6885119 fix: return cleanup errors from HandleMerged instead of swallowing them (gt-twy74)
  • 78fb4ef fix: return error from DefaultAccountsConfigDir on UserHomeDir failure (gt-7v3rx)
  • 1c0e9ed fix: return error from KillStaleSession instead of silently swallowing it (gt-4s25eb)
  • 841c306 fix: return error when role override TOML parse fails (gt-e4e4l)
  • 9d8bbd9 fix: return errors from getTrackedIssues instead of nil (gt-uryn7)
  • d044184 fix: return errors from json.Unmarshal in UnmarshalSettings instead of swallowing them
  • fec5264 fix: return errors from protocol parse functions for invalid input (gt-zk07q)
  • 7ac676b fix: route cross-rig agent bead operations to correct database (gt-mh3tb)
  • fd4bd31 fix: route routine ops mail to witness/deacon instead of mayor (gt-dxkuwy)
  • 2179611 fix: route slot operations through Beads wrapper for proper BEADS_DIR (gt-wrnwq)
  • 7d74b79 fix: sanitize branch names in Dolt SQL operations to prevent injection (gt-5qxuk)
  • baddb40 fix: scan for dolt databases instead of hardcoding 'beads' subdir (#1297)
  • 8b72b48 fix: scope process cleanup to Gas Town processes instead of all node processes
  • 13adf5b fix: security hardening for test command execution and error handling (#1245)
  • ccd7757 fix: selfNukePolecat verifies remote push + RemoveWithOptions checks open MRs
  • a7534d5 fix: separate empty cleanup_status from clean in DetectZombiePolecats
  • 233c74c fix: session name parsing for hyphenated rigs; splitLines trailing empty; restart race (gt-f0rog)
  • 6fac2d7 fix: set BD_DOLT_AUTO_COMMIT=off for polecat environments (gt-5cc2p)
  • 5e455a3 fix: set BD_DOLT_AUTO_COMMIT=off for sling bd commands (gt-u6n6a)
  • adcbbb1 fix: set issue_prefix in Dolt config during gt rig add (gt-aic) (#1337)
  • 464c82f fix: set sync.mode in DB during dolt migrate/fix-metadata (gt-dookzl)
  • 27c2ced fix: set type=agent when reopening agent beads in CreateOrReopenAgentBead (gt-dr02sy)
  • 64fcda2 fix: six code-review bugs — misleading log, fragile parsing, ordering, cleanup
  • 2f43360 fix: sling env var and flag mutations are now scoped locally
  • 95e122b fix: sort keys in checkDependencyCycles for deterministic cycle detection (gt-e99a4)
  • 5eb4f5b fix: stale --cleanup now performs full nuke sequence (gt-pnygi)
  • d188fcb fix: stop overwriting qualified GT_ROLE and fix Windows touch cmd (gt-ow2gb)
  • 4184029 fix: stop removing flock files to preserve concurrent lock protection (gt-vm7g2)
  • 67e97f1 fix: surface os.Stat errors in ProvisionFormulas and add Error counter to HealthReport (gt-2dtpx)
  • 052dc8e fix: surface partial work warnings in stale hook scanner output (gt-ajx6l)
  • 55c51df fix: surface source errors in gt ready, remove dead stopCh (gt-y3bfi, gt-btpbz)
  • 8642779 fix: sync dog persistent state in session Start/Stop, clean up orphaned sessions (gt-h0jiu)
  • 51f6f3d fix: sync source formulas with patched embedded versions
  • b05be88 fix: thread visited map through all resolution paths to prevent cycle bypass (gt-64wh5)
  • fcfea69 fix: three P1 bugs — wrong db target, case-sensitive parse, slot leak
  • 90bc27e fix: track per-command progress in migration steps for safe retry (gt-1e907)
  • d9eb63a fix: unify dolt server PID file path to dolt.pid (gt-qi1oz)
  • 103121b fix: unsling falls back to status query when agent bead missing or hook_bead empty (gt-dzbyd)
  • ff4f1a2 fix: unsling uses ResolveHookDir for correct beads path in crew workspaces
  • de78fd8 fix: unwrap external:prefix:id format in convoy getTrackedIssues() (gt-qg6s06)
  • bf417af fix: update run-hardener.sh to use gt nudge for reliable prompt delivery
  • 14435ca fix: update test assertions and set BEADS_DIR in EnsureCustomTypes (#853)
  • f85355d fix: update web activity color tests to match 5/10min thresholds (gt-xa5sf)
  • fe6007a fix: use *int for MaxReescalations to distinguish explicit 0 from unset (gt-p8dq0)
  • 47d1214 fix: use AddressToIdentity normalization in isSelfMail (gt-epgmw)
  • f00ce81 fix: use IsAgentAlive in mayor attach to check descendant processes #1315
  • c015226 fix: use IsAgentAlive in mayor attach to check descendant processes (gt-7zl)
  • abe14bb fix: use ParseSessionName for session parsing to support hyphenated rig names
  • d27fd3e fix: use ResolveBeadsDir to detect rig layout instead of hardcoding
  • 4fa2298 fix: use agent bead hook_bead as authoritative source for polecat issue in list (gt-ckk12)
  • 0619d09 fix: use cross-filesystem safe move in MigrateRigFromBeads (gt-cpqxa)
  • 3f08908 fix: use dolt auto-detect instead of broken CLI flags for server queries
  • 4823dab fix: use flock for cross-process locking on events/feed JSONL writes (gt-p14p4)
  • 6d18e0a fix: use gt handoff flags for mail (#957)
  • 7689534 fix: use prefix-based routing in unsling and mol status for agent bead lookup
  • 6b3a903 fix: use strings.TrimSpace for git branch output in rig_dock.go to prevent panic on empty output
  • a8192fa fix: use t.Error instead of t.Log for test failure conditions
  • 67a20d3 fix: use tmux session state to prevent false 'done' status for running polecats (gt-o01h4l)
  • 1938c12 fix: use unique temp files in AtomicWriteFile to prevent concurrent corruption (gt-dcq7v)
  • e3a4b02 fix: validate From, Subject, and ID in Message.Validate() (gt-bo4nv)
  • 3e99a16 fix: validate dog name in Remove/Add to prevent kennel deletion and path traversal
  • cc199c9 fix: validate newName in crew Rename() to reject invalid names (gt-gt3zv)
  • 6e9d8bf fix: validate rig settings key path to prevent false success
  • a2c5ee8 fix: verify bead worktree state before unhooking stale hooks (gt-ajx6l)
  • fb8541b fix: warn when --reply-to thread lookup fails instead of silent fallthrough (gt-n3yh9)
  • 95173ac fix: warn when workspace lookup fails during sling rollback bead unhook (gt-eikjsv)
  • eb71f9b fix: wire cross-rig routing into Beads.Show() and add dolt prefix detection to rig adopt (#1308)
  • 03f1a85 fix: zero struct before unmarshal in unsetNestedValue to properly remove keys (gt-1oub9)

Others

  • 22bcf17 Add gt doctor check for stale JSONL-sync hooks with Dolt backend (#1293)
  • 8b621ec Agent-agnostic zombie detection (gt-pf96) (#1026)
  • 533caf8 Detect and clean stale POLECAT_DONE messages (#913)
  • f147b6d Fix Kimi polecats not inheriting GT_RIG env var (ga-6s284)
  • e885ace Fix SessionManager treating witness/refinery as polecats
  • 377b487 Fix convoy check to query external rig databases for cross-rig tracking (#916)
  • 3dc935a Fix crew --agent override not provisioning correct hooks/plugin
  • d90bfa8 Fix doctor env-vars check false positive for gt-boot session
  • 8a8603e Fix gt ready using wrong beads path for rigs (#963)
  • 0096abd Fix race condition in agent startup by replacing sleep with polling
  • b51b3f8 Fix witness LIFECYCLE:Shutdown to parse polecat name from message
  • 24acc02 Fix witness LIFECYCLE:Shutdown to parse polecat name from message (#1075)
  • c5e82ad Implement gt rig settings command with comprehensive tests (#1005)
  • a8500ec Improve dashboard performance and UX
  • 6026d99 Merge PR #1176: Fix: Add missing deacon/dogs/ pattern to .gitignore template
  • 79db747 Merge PR #1199: docs: add PR branch naming guidance to CONTRIBUTING.md
  • b0e731f Merge PR #1224: docs: Document formula invocation patterns
  • 9d50aa7 Merge PR #1321: web: stop swallowing bd show failures in convoy fetcher
  • 439189f Merge commit 'refs/mr/gt-32rbw' into HEAD
  • c83cf53 Merge commit 'refs/mr/gt-4jz5x' into HEAD
  • 0ee725a Merge commit 'refs/mr/gt-7xw1y' into HEAD
  • 14882f8 Merge commit 'refs/mr/gt-9y0aj' into HEAD
  • 0033206 Merge commit 'refs/mr/gt-bwt9j' into HEAD
  • 9361746 Merge commit 'refs/mr/gt-dgkah' into HEAD
  • ca61edb Merge commit 'refs/mr/gt-ghwg5' into HEAD
  • 4dc8507 Merge commit 'refs/mr/gt-iastj' into HEAD
  • 3279ba6 Merge commit 'refs/mr/gt-if4wl' into HEAD
  • 1e13556 Merge commit 'refs/mr/gt-k0xft' into HEAD
  • 3c3a02f Merge commit 'refs/mr/gt-quggy' into HEAD
  • b953cf8 Merge commit 'refs/mr/gt-r52sl' into HEAD
  • 1f03a99 Merge commit 'refs/mr/gt-rgk7b' into HEAD
  • 0d35c68 Merge commit 'refs/mr/gt-t34oz' into HEAD
  • 9d3f962 Merge commit 'refs/mr/gt-tyci8' into HEAD
  • 758b51d Merge commit 'refs/mr/gt-ve0uh' into HEAD
  • 93e3fcc Merge commit 'refs/mr/gt-w7ww5' into HEAD
  • eda2567 Merge commit 'refs/mr/gt-wd3c6' into HEAD
  • b664382 Merge commit 'refs/mr/gt-wfnte' into HEAD
  • 5c89d2b Merge commit 'refs/mr/gt-x38i9' into HEAD
  • e4024a2 Merge commit 'refs/mr/gt-z2yug' into HEAD
  • 246cbf1 Merge polecat/dementus/gt-xoxt9 (resolve dolt.go conflict: keep both migrate dry-run and rollback flags)
  • e2339a0 Merge remote-tracking branch 'origin/main' into HEAD
  • 18890ad Merge remote-tracking branch 'origin/main' into HEAD
  • 7cafcc1 Merge remote-tracking branch 'origin/main' into HEAD
  • 1233e19 Merge remote-tracking branch 'origin/main' into HEAD
  • 7bf6479 Merge remote-tracking branch 'origin/main' into HEAD
  • d6d6fe7 Merge remote-tracking branch 'origin/main' into HEAD
  • 81ae775 Merge remote-tracking branch 'origin/main' into HEAD
  • 8082630 Merge remote-tracking branch 'origin/main' into HEAD
  • d2e81b9 Optimize --fast mode from ~5s to ~2s (#1065)
  • 0e26df4 Remove dead code in web, refinery, and types (fixes #1232)
  • 5dd072f Revert "release: bump version to v0.6.0 with CHANGELOG"
  • 5bb74b1 Revert erroneous addition of .beads to agent .gitignore template (#891)
  • a88b859 Test/tests failing on windows (#1164)
  • 44fbd6e Update .gitignore (#922)
  • bd0f372 Update styles in README for better visibility
  • 7268e5e [DOCS] Add some setup steps (#1148)
  • 525fa50 add gosec G104 exclusion for internal/
  • 42d0d6a chore(brew): add tmux as recommended dependency in Homebrew formula (#1313)
  • c88d163 chore(ci): pin beads (bd) to v0.50.2 (#1443)
  • b316239 chore(gastown): scorched-earth SQLite removal from codebase
  • 1112c90 ci: auto-close needs-info/needs-repro issues after 14 days (#1401)
  • 0f20278 ci: auto-label new issues and PRs with status/needs-triage (#1398)
  • 7693977 ci: bump beads from pinned v0.47.1 to @latest
  • 1a5f880 cleanup: remove G1 BdSemaphore and G11 --no-boot flag (gt-fzgct)
  • 42f4e5f cleanup: remove G1 BdSemaphore and G11 --no-boot flag (gt-fzgct)
  • 860ab8a cleanup: remove mail check cache test (gt-xutcm)
  • b92082d cleanup: remove migration formula, simplify patrol formulas
  • 1157fd3 cleanup: remove unnecessary dedup map from listFromDir
  • b988865 createAutoConvoy: fail loudly when tracking dep fails
  • 479f958 design(hooks): registry and management system analysis (gt-gow8b)
  • 8878974 design: ledger export triggers for Level 1 -> Level 2/3 transitions (gt-ayk)
  • 01059db docs(cli): add Long descriptions to 9 remaining commands
  • 46f6609 docs(cli): add missing --help text for commands with sparse descriptions
  • e651704 docs(dolt): distinguish Gas Town server-only from standalone Beads embedded default
  • b49f08f docs(federation): add Dolt remotes configuration guide
  • 9aff946 docs(mayor): add PR instruction to use origin remote (#1050)
  • 1d260d3 docs(priming): remove bd sync references for Dolt backend
  • 9238635 docs(templates): clarify bd create is not a gt command
  • f2e9982 feat(claude-md): add command quick-reference to role CLAUDE.md templates (gt-5e6k)
  • 56e19ca fix all CI failures: lint, integration tests, formula sync, and Windows compatibility
  • d8408e3 fix all Windows CI test failures across 5 packages
  • 4e24e9a fix missing strconv import in tmux.go
  • ee605b5 fix nudge to target agent pane in multi-pane tmux sessions
  • 4075362 fix prefix detection from issues.jsonl and clean up stale WAL files
  • 107bc68 fix remaining 3 Windows CI test failures
  • cdd7e0c fix(await-signal): handle empty stdout when querying agent bead (#1201)
  • 1e90801 fix(git-init): update beads fingerprint after git initialization
  • 52da3db fix(gt done): prevent incorrect main/master detection when cwd is unavailable
  • 353b015 fix(patch-010): Re-enable remain-on-exit after respawn-pane
  • a25437f fix(patch-010): Use per-session hooks only (global hooks unreliable)
  • 7262593 fix(rig add): include dolt_mode and dolt_database in .beads/metadata.json
  • 990f450 fix(rig add): include dolt_mode and dolt_database in .beads/metadata.json (gt-ex8p)
  • 70cd7bb formula improvements that claude forgot to commit
  • c7661cb perf(doctor): bypass bd daemon for town-root subprocess calls (#1043)
  • daa7689 perf(mail): batch hook mail queries into single bd list call
  • a3eca2a perf(status): optimize --fast mode from ~5s to ~2s
  • 317b0df refactor(config): remove deprecated LoadRuntimeConfig function
  • 30e65b5 refactor(convoy): replace SQLite queries with bd dep list commands
  • dc3fd47 refactor(costs): decouple cost recording from Dolt database
  • 2a04201 refactor(costs): rename wisp references to entries
  • 6f71b5a refactor(env): set GT_ROLE in compound format for bd hooks
  • eb233b2 refactor(session): unify session lifecycle into StartSession API (gt-0j3jo)
  • a3cc214 refactor: break up god functions in prime.go and consolidate files
  • ccbeea6 refactor: consolidate duplicate atomic write and slice utilities
  • d15a3d8 refactor: consolidate findRigBeadsDir into single exported function
  • 0d159ce refactor: extract resolveTarget and hookBeadWithRetry to eliminate sling dispatch duplication (gt-8gvrz)
  • a850c40 refactor: extract shared cmd helpers from crew_helpers.go into helpers.go
  • dfec070 refactor: migrate from claude.EnsureSettingsForRole to runtime.EnsureSettingsForRole (#1020)
  • 97fab23 refactor: move Claude settings from customer repos to parent dirs via --settings (#1418)
  • b178d05 refactor: remove bd daemon code from gastown
  • 2db1f7d refactor: remove deprecated gt-prefix role bead ID functions (gt-4p791p.7)
  • 4535838 refactor: rename GetGroupBead to GetGroupByName for consistent API naming (gt-4p791p.4)
  • a8e0685 refactor: unify duplicate isSessionStale/isSessionProcessDead functions (gt-qgzj1h)
  • 7755a45 refinery: detect stale claims and orphaned MR branches
  • eb3d81c refinery: detect stale claims and orphaned MR branches (#1285)
  • 5240a00 refinery: exclude closed merge requests from queue output (#1284)
  • 2b09e0e release: bump version to v0.6.0 with CHANGELOG
  • 09f9311 remove --no-daemon from docs and migration script
  • af0ea37 remove BeadsNoDaemon env var (daemon mode no longer exists)
  • 3f1e940 style: apply gofmt formatting to molecule_step files
  • 016fe2d style: run gofmt on all files touched by PR
  • cefbba6 sync embedded formulas after rebase
  • 0e6c917 test(beads): add tests for catalog and handoff packages (gt-klm1q)
  • c4748c0 test(beads): add tests for escalation, rig, and synthesis field parsing (gt-klm1q)
  • d4126bb test(config): add hook configuration validation tests
  • e8b04d4 test(config): update tests for LoadRuntimeConfig -> ResolveRoleAgentConfig migration
  • ee04e2b test(dog): add tests for gt dog done command
  • e6c83fe test(dolt): add tests for VerifyDatabases and extract testable helpers
  • db6cddf test(e2e): add containerized install and daemon tests
  • ffcd5fc test(escalate): add unit tests for escalation command logic (gt-o9l1h)
  • b88ed95 trail: implement real hook activity from events log (#1282)
  • 3a79af3 tweak mayor template
  • c1ccb9a update architecture and dolt-storage docs to reflect current ground truth
  • 4fc8c6d update beads fingerprint after git initialization (#1064)
  • e24947e web: report bd show failures instead of swallowing errors
  • d8ae4c2 web: report bd show failures instead of swallowing errors
  • 91cc46e wip(convoy): add ConvoyConfig with NotifyOnComplete to TownSettings

Don't miss a new gastown release

NewReleases is sending notifications on new releases.