Releases: UnlikeOtherAI/steroids-cli
v0.12.24
Enhanced First Responder Agent
- Removed circuit breaker — agent no longer disables projects after failed remediations, keeps trying with increasingly sophisticated approaches
- New
query_dbaction — read-only SQL queries against project databases for deep debugging - New
update_taskaction — surgical task field updates with safety whitelist (status, failure/rejection counts, blocked_reason, description) - New
add_dependencyaction — fix section ordering by adding dependencies (with circular dependency check) - New
add_task_feedbackaction — leave guidance notes for future coder/reviewer runs - Extracted prompt to
investigator-prompt.tsfor maintainability - Expandable action cards in run detail UI — click to see query results, dependency info, error details
Full Changelog: v0.12.23...v0.12.24
v0.12.22
What's New
Auth Error Auto-Recovery
- Provider 401/auth errors now trigger a 24-hour backoff instead of burning invocations
- Running tasks finish their current phase gracefully (no kill), but no new phases start
- Wakeup probes auth-backed-off providers with a quick "say ok" test each cycle
- When auth recovers, backoff clears automatically and runners resume
First Responder Presets & Fix Buttons
- Monitor run detail page: "Dispatch First Responder" (default preset) + "Investigate & Fix" (
fix_and_monitorpreset) - After investigation completes: "Try to Fix" and "Stop All Runners" re-dispatch buttons
- API and CLI accept
--presetoverride for first responder dispatch
Investigator → First Responder Rename
- Full rename across DB (V22 migration), API, CLI, and WebUI
- Severity reclassification: info=doesn't block, warning=suboptimal, critical=blocks progress
- Remediation attempt tracking: auto-disables projects after 3 failed fix attempts
- New
disable_projectandreset_projectfirst responder actions
Project Detail — All Task States
- 6 stat cards now show all 10 task states with grouping:
Pending | In Progress/Review | Completed | Failed/Disputed | Skipped/Partial | Blocked
Cookie Persistence
- Projects page "Show disabled" toggle persisted in cookie
- Monitor config collapse state persisted in cookie
Full Changelog: v0.12.21...v0.12.22
v0.12.16 — Monitor Agent
Monitor Agent
New autonomous health monitoring system that watches all registered projects for anomalies and can dispatch an AI investigator to diagnose and fix issues.
Features
- Deterministic Scanner: Reuses
detectStuckTasks()+ new checks (failed/skipped tasks, high invocations, repeated failures, idle projects) - Rules Engine: Severity-threshold escalation (info/warning/critical) — no LLM for detection
- Investigator Agent: Structured action interface with provider fallback chain. Returns JSON actions (
reset_task,kill_runner,stop_all_runners,trigger_wakeup,report_only) — no shell access - WebUI Page:
/monitorwith enable/disable toggle, config section (interval, severity threshold, response presets, investigator agent fallback chain using AISetupRoleSelector), and run history table with expandable rows - API Routes: Config CRUD, run history, manual scan/run triggers with idempotency guard
- CLI Commands:
steroids monitor status|enable|disable|scan|run|investigate - Wakeup Integration:
monitorCheck()runs after runner spawns (<5s, no LLM) - Detached Investigation: Spawns
steroids monitor investigateas detached process when escalation triggers
Architecture
- Scanner + rules run inside wakeup cycle (fast, deterministic)
- LLM investigation spawned as detached child process (no wakeup timeout)
- Investigation pause: loop skips while investigation is in progress (with stale timeout)
- Global DB V21 migration:
monitor_config(singleton) +monitor_runstables
Full Changelog: v0.12.15...v0.12.16
v0.12.15
Bug Fix
- fix(reset): Clear invocation history when resetting tasks via
steroids tasks reset. The invocation cap (introduced in v0.12.14) counts all-time invocations, so tasks that were stuck in a pre-fix runaway loop would immediately trip the cap after being reset. Nowtasks resetalso deletes invocation records, giving the task a clean slate.
Full Changelog: v0.12.14...v0.12.15
v0.12.14 — Fix runaway invocation loops
Bug Fix
Prevents runaway invocation loops from burning API quota — Tasks in workspace pool mode could loop 642-2178 times without transitioning, consuming entire weekly Codex quota.
Root Cause
clearTaskFailureCount() in the coder phase reset the push-failure counter before it could accumulate. The push in the orchestrator loop's finally block would increment to 1, but the next coder iteration would clear it back to 0. The escalation threshold of 3 was never reached.
Fixes
- Root cause fix:
clearTaskFailureCountnow deferred in pool mode until after a successful push - Safety net: New
health.maxInvocationsPerTasksetting (default 150) — absolute cap on total invocations per task - Lock leak fix: Task locks now properly released when invocation cap triggers a skip
- Batch mode: Uses configurable
maxRecoveryAttemptsinstead of hardcoded3
Other
- Extracted batch mode to
orchestrator-batch.ts—orchestrator-loop.tsreduced from 723 to 484 lines execSync→execFileSyncfor safety- Updated test mocks
Full Changelog: v0.12.13...v0.12.14
v0.12.13
Fixes
- Purge abandoned idle runner rows during wakeup so dead idle runners no longer linger in the registry.
- Include stale idle runners in abandoned-runner detection.
Compare
v0.12.12
Fixes
- Fix project detail pages failing to load in older Safari/WebKit browsers by transpiling the lazy-loaded dashboard bundles to an older JavaScript target.
Compare
v0.12.11
Fixes
- Fix the Project Instructions panel on project detail pages so local dashboard requests no longer crash on
require is not defined. - Document that
~/.steroids/webuiis a pulled runtime artifact and repo changes must be committed here before release.
Compare
v0.12.10 — Pool Commit Durability
Pool commit durability fixes for parallel workspace handoff.
Changes:
- push task branches before review handoff so reviewer slot changes do not strand commits
- recover submission history from sibling pool slots as well as workstreams
- purge abandoned runner rows on wakeup
- delete remote steroids/task-* branches only after proving their commits are reachable from the target branch
Compare:
v0.12.9 — Task Dependencies, Description, Project Reset
What's New
Task-Level Dependencies
steroids tasks depends-on <A> <B>— task A waits for task B to completesteroids tasks no-depends-on <A> <B>— remove dependency--depends-on <id>flag ontasks add- Task selector respects both section and task dependencies
- Circular dependency detection
Task Description Field
--description/-dflag ontasks addandtasks update(max 4000 chars)- Shown in
tasks auditoutput - Content hashing best practices in LLM docs
Project Reset
steroids reset-project -y— reset all tasks to pending, clear execution history- Preserves task/section/dependency structure
- Stops runners, cleans parallel sessions
WebUI Improvements
blocked_error/blocked_conflictstatus display with reason banner- Sidebar reordered: Dashboard, Projects, Runners first
- Wakeup modal sorted by action priority
Git Lifecycle Guard
- Tasks blocked with
blocked_errorwhen.steroids/is tracked in git - Symlink re-established after
git reset --hardin workspace pool slots
Other
- LLM reference updated with task authoring best practices
- Codex review timeout increased to 30 minutes
- Shared terminal status constants (SECTION_DEP_TERMINAL / TASK_DEP_TERMINAL)
Full Changelog: v0.12.8...v0.12.9