Releases: UnlikeOtherAI/steroids-cli
v0.10.51 - Fix orphaned workstream blocking runner restart
Changes
- fix: Mark orphaned workstreams as
failedincloseStaleParallelSessionsso stale parallel sessions auto-close when runners are stopped
Problem
When runners were stopped (SIGTERM or runners stop --all), workstream status stayed running. This caused hasActiveParallelSessionForProject to always return true, making wakeup skip every project indefinitely — even with no live runners.
Fix
closeStaleParallelSessions now runs a preflight step: any workstream whose session has no alive runners is marked failed. The existing session-close logic then auto-closes the session in the same call.
v0.10.50 - Fix coordinator guidance persistence in death spirals
Fixes
- Coordinator guidance now survives process restarts:
guide_coderdecisions are persisted to the audit table withcategory='must_implement', so fresh coder sessions can load them viagetLatestMustImplementGuidance— previously guidance was lost in the in-memory cache on every runner restart - Fixed scope violation git instructions: The
[OUT_OF_SCOPE]prompt previously told the coder to usegit diff HEAD(shows only unstaged changes). Fixed to usegit log --oneline+git diff --name-only <first-commit>^..HEAD(cumulative committed diff, what the reviewer actually sees). Also fixed revert commands:git rm <file>for task-introduced files,git restore --source=for modified baseline files — no moregit rm --cachedwhich left files re-committable
These two bugs together caused a 7-rejection death spiral where the coder could never see coordinator guidance and was looking at the wrong git output to find scope violations.
v0.10.49
Fix: Stale task lock recovery via PID liveness detection
Fixes tasks getting permanently stuck when a runner dies mid-execution. Previously, recovery took 30-60 minutes or hung indefinitely.
Changes
- Fix ISO/SQLite datetime format mismatch —
toISOString()produces2026-02-27T10:00:00.000Zbutdatetime('now')produces2026-02-27 10:00:00. Since'T' > ' 'in ASCII, ALL lock expiry SQL comparisons were silently broken on same-day locks. Fixed by usingstrftime('%Y-%m-%dT%H:%M:%fZ', 'now'). - Close three-way detection gap — Tasks with running invocations from deleted/dead runners now detected via dead-owner invocation sweep with PID liveness check
- Filter expired locks from
listTaskLocks— TTL safety net now actually works for task selection - Conditional lock cleanup in sanitiser — Locks deleted atomically only when task state transition succeeds
- Narrow parallel context guard — Per-invocation PID liveness check instead of blanket skip during parallel sessions
Result
Recovery now completes within one wakeup cycle (~60 seconds) instead of 30-60 minutes.
Full Changelog: v0.10.48...v0.10.49
v0.10.48 - Sort runners alphabetically
Changes
- feat: Runners are now sorted alphabetically in all list views (flat table, tree view, JSON output)
- Primary sort: project name
- Secondary sort: current task title
Compare: v0.10.47...v0.10.48
v0.10.47
Changes
- fix: Show actual project path for parallel session runners in UI — parallel session runners were displaying their workstream path instead of the real project name/path
v0.10.46 — Branch Targeting + Auto-PR + Web UI
What's new
Branch targeting (Phases 1–4)
- Per-section git branches —
steroids sections add "Auth" --branch feature/authtargets all tasks in the section to a specific branch - Branch auto-created — if the section branch doesn't exist on the remote, the pool runner creates it from the repo's base branch (
main/master) - Auto-PR on section completion —
--auto-prflag creates a GitHub PR (viaghCLI) when all tasks in the section reach a terminal state steroids sections update <id> --branch <branch> --auto-pr— update branch/PR settings on existing sectionssteroids sections reset-pr <id>— clear a recorded PR number to re-trigger auto-PRsteroids init— now auto-detects the repo's default git branch and writes it to project config
Web UI
- Section list now shows branch badge (⎇ feature/auth) and PR link (PR #N) when set
- Auto-PR pending indicator when auto-PR is enabled but PR not yet created
- Sections sorted by priority order (server sort respected; client alpha-sort override removed)
- Dependencies shown inline under each section: "Depends on: X, Y"
Bug fixes
findExistingPr: fixed jq.[0].number // emptyto avoidparseInt("null")→ NaN blocking PR creationcreatePr: switched from URL regex to--json number+JSON.parsefor deterministic output--no-auto-pr: fixedparseArgsnot handling hyphenated boolean negation- Non-pool path: auto-PR now gated on
pushResult.success setSectionBranch: clearspr_numberwhen branch changes (prevents stale PR guard)- Auto-PR decoupled from
--no-hooksflag
Compare: v0.10.43...v0.10.46
v0.10.45
Changes
- feat: Delete button added for custom skills — click the skill, hit Delete, confirm, done. Pre-installed skills remain read-only.
v0.10.44
Changes
- fix: AI section now hidden in the global settings page — consistent with project settings; use the "Reconfigure AI" button for AI configuration
v0.10.43
Changes
- fix: WebUI build error resolved — unused
cmdparameter renamed to_cmdinTaskLiveTimelineComponents.tsx, unblockingsteroids webfrom building the WebUI successfully
v0.10.42
Changes
- fix:
steroids webnow force-resets~/.steroids/webuibefore every git checkout/pull — local changes (e.g. stalepackage-lock.json) no longer block version updates - feat: GitHub icon added to the footer of each web UI page, linking to the repo