Upgrading
Resume and retry work again
retry-task ran the engine in the foreground with no detach, so a closed
pipe (SIGPIPE) killed the run and orphaned its agent children. The invocation
is now detached (#1481).
- An approved detached run with a null
workflowHashcan resume again (#1489). up --resume RUN_IDno longer demands a workflow path, matching its help text: the run’s stored workflow is relaunched (#1475).
Fallback chains recover instead of failing the run
A session-loss error from a provider (including Kimi’s “session is broken” banner) defeated the agent fallback chain: it silently skipped its Codex leads instead of retrying or falling through. A mixed-reason chain failure hard-failed the run instead of parking it.- Session-loss errors are now classified, so the chain retries or falls through to the next seat (#1480).
- A mixed agent-chain failure parks the run as
waiting-quotawith preflight context attached, resuming when capacity returns (#1482). - Codex preflight accepts valid ChatGPT auth even when
auth.jsonalso contains anOPENAI_API_KEY(#1447). - Both behaviors are pinned by new quota-chain-failover and session-loss-chain-failover e2e suites.
The Gateway finds your UI, and stays responsive while it does
bunx smthrs ui could fail three ways. The Gateway never registered workflows
launched by explicit path outside .smithers
(#1474). Registration
rendered every workflow synchronously, pegging the event loop so /health
went unreachable for minutes (GATEWAY_UNREACHABLE). And a custom-path
<UI path="/custom"> could 404 until background discovery reached it.
All three are fixed: explicit-path workflows register, <UI>/<TUI>
discovery is queued and drains one render per macrotask so /health answers
throughout, and an unmatched UI request drains pending discovery once before
resolving the mount.

The Monitor overview starts at All clear, a release-canary run is launched live, its running status pill appears in the sidebar, and the run detail shows the Healthy banner while the execution tree ticks through preflight, build, tests, and report to end on Completed with 4/4 tasks done.

Touring the finished run: the Completed banner, per-node durations, the node inspector with transcript and output, the Timeline, Debug, Frames, and XML views with a frame scrubber, and the Notable, All, and Activity event tabs.
ctx.outputs stops returning a plausible empty array
The callable formctx.outputs(outputs.probe) silently returned [] because
it indexed the snapshot with the raw argument. It now resolves through the
same table-ref resolution as every other accessor, and an argument that
resolves to no declared output table throws
(#1486).
- Regression tests pin the callable form to the same rows as the string name.
upgrade-dependents: open rename PRs downstream
The 0.33.0 rename left dependent repos importing a package that will never see another release. The newupgrade-dependents pack workflow discovers
open-source dependents (awesome-smithers, GitHub code search, and any
extraRepos you pass), then runs one lane per repo: an agent clones,
upgrades to smthrs, and must prove git grep returns zero hits before an
independent reviewer re-checks the diff and a draft PR is opened.
Other improvements
bunx smthrs bug --run RUN_IDattaches the run’s lifecycle events instead of a ~25 second window of TaskHeartbeat noise, and generates a correct report title (#1484).- Panel moderators inside a Ralph loop no longer deadlock over Ralph’s iteration-suffixed dependency names (#1487).
Upgrade notes
- No breaking changes. All 0.33.0 rename guidance still applies.
- A mixed agent-chain failure now parks the run as
waiting-quotainstead of failing it. Checkbunx smthrs psfor parked runs before concluding a run died. bunx smthrs up --resume RUN_IDwithout a workflow path is now valid; the stored workflow is relaunched.
The full changelog
20 commits touching 55 files: 2,186 insertions, 188 deletions. The complete commit-level list is in CHANGELOG.md. Hit a bug?bunx smthrs bug files a report in seconds, and --run RUN_ID
attaches the run’s events for you.