Releases: Iron-Ham/claudio
Orchestration 2.0: Production-Ready Multi-Team Pipeline Execution
This release delivers the full Orchestration 2.0 stack as the default execution engine for both UltraPlan and TripleShot workflows. What began as a set of independently-built coordination primitives — task queues, mailboxes, approval gates, scaling monitors — now operates as a unified, production-ready pipeline that decomposes plans into teams, executes tasks in parallel with dependency ordering, and dynamically scales concurrency based on workload and budget.
Highlights
Orchestration 2.0 Goes Default
UltraPlan now uses the multi-phase pipeline by default (UsePipeline: true), and TripleShot switches to the team-based TeamCoordinator with callback-driven execution. The legacy file-polling path remains available via tripleshot.use_legacy for adversarial mode. This is the culmination of 10+ packages working together: task queues, coordination hubs, bridges, teams, pipelines, adaptive leads, and scaling monitors.
Multi-Phase Pipeline with Team Execution
Plans are decomposed into teams grouped by file affinity, then orchestrated through sequential phases (planning → execution → review → consolidation). Each phase runs its own team.Manager with scoped event subscriptions and budget tracking. The bridge layer connects abstract team queues to real Claude Code instances via worktree + tmux, with sentinel file monitoring for completion detection.
Dynamic Scaling & Concurrency Control
Bridges now adjust instance concurrency in real-time based on queue depth and budget. A sync.Cond-based dynamic semaphore replaces fixed channel-based limiting, enabling runtime resizing. Per-team scaling bounds flow from plan decomposition through the full stack, with budget-aware vetoing to prevent overspend.
Claude Code Advanced CLI Integration
Full support for modern Claude Code flags: granular permission modes (default, plan, auto-accept, bypass), per-tool allow/disallow lists, max_turns, model selection, --append-system-prompt, --no-user-prompt, and --output-format stream-json. Per-role overrides let different pipeline phases use different configurations (e.g., plan mode for reviewers, bypass for implementers).
Stream-JSON Subprocess Infrastructure
New internal/streamjson/ package provides typed NDJSON event parsing for Claude Code's stream-json output format — the foundation for replacing tmux-based screen scraping with direct process control.
Other Improvements
- Native Worktree Flag — Support for Claude Code's built-in
--worktreeflag - System Prompt Separation — Orchestration instructions injected via
--append-system-prompt-fileinstead of inline - TUI Pipeline Status — Real-time phase indicator and per-team task progress in the header
- Inter-Instance Communication — File-based mailbox, context propagation, and peer debate protocol wired into production
- File Conflict Prevention — Advisory file locking prevents concurrent edits across instances
- Self-Improving AGENTS.md — Living documentation protocol with directory-scoped guidelines
Bug Fixes
- Fixed triple-shot event channel sharing across concurrent sessions
- Fixed implementer auto-collapse and judge nesting in Orch 2.0 tripleshot
- Fixed judge evaluation parse failures for non-flat string arrays
- Prevented Agent Teams from starting in tmux mode inside Claudio
- Fixed false stale timeouts for idle instances waiting at the prompt
- Fixed race condition causing judge to misreport failed attempts
- Fixed duplicate instance creation from default retry behavior
- Fixed TUI freeze when starting triple-shot in teamwire mode
- Fixed channel safety issues (panic on close, goroutine leaks)
- Fixed failed-dependency cascade leaving teams permanently blocked
- Fixed
Manager.Stop()deadlock from mutex held throughwg.Wait() - Fixed data race in
startJudge()session snapshot - Fixed
mailbox.Watch()race on initial message snapshot
Full changelog: CHANGELOG.md
Reliable process cleanup and TUI stability fixes
This patch release addresses several stability issues around process lifecycle management and TUI rendering, particularly in adversarial tripleshot workflows.
Highlights
Reliable Process Cleanup on Exit
Closing Claudio now reliably terminates all Claude backend processes across every exit path, including PR workflows. Previously, tmux kill-session could leave orphaned Claude CLI processes if they ignored SIGHUP. The shutdown now captures the full process tree before stopping, polls for graceful exit, kills the per-instance tmux server, and force-kills any survivors via SIGKILL — all consolidated into a shared tmux.GracefulShutdown() helper.
Async Group Dismiss
Killing a group via gq no longer freezes the TUI or corrupts the display. The dismiss operation now runs asynchronously, and warning messages no longer write directly to stderr (which conflicts with Bubble Tea's rendering).
Bug Fixes
- Tripleshot Adversarial UI Nesting - Tripleshot attempts in adversarial mode are now immediately nested under their "Attempt N" sub-groups when using the async startup path, rather than appearing flat during the "preparing" phase.
- Tripleshot Adversarial Round Disambiguation - Fixed duplicate reviewer spawning when an implementer completed after a rejection. The code now skips processing if already under review, preserves the current review round, and validates review file round numbers to ignore stale files.
Full changelog: CHANGELOG.md
Codex CLI Backend Support & Mixed-Backend Adversarial Mode
This release introduces support for the Codex CLI as an alternative AI backend, enabling users to switch between Claude and Codex or use them together in adversarial sessions for cross-model code review.
Highlights
Codex CLI Backend Support
Claudio now supports the Codex CLI alongside Claude as a configurable AI backend. You can select your preferred backend globally, and Claudio automatically adapts its state detection and workflow handling for the selected backend. The Codex backend defaults to full-auto approval mode for seamless operation.
Mixed-Backend Adversarial Sessions
A new adversarial.reviewer_backend configuration option lets you specify a different AI backend for the reviewer role in adversarial sessions. This enables powerful workflows like "Claude as implementer + Codex as reviewer" for cross-model code review perspectives.
Bug Fixes
- Exit Panic Fix - Fixed a panic when exiting Claudio caused by the conflict detector being stopped multiple times
- Session Backend Initialization - Fixed undefined backend build errors when using
NewWithSession - Codex Detector Thread Safety - Fixed a potential race condition in Codex backend detector initialization
- TUI Config AI Settings - Added
ai.claude.commandandai.codex.commandsettings to the config editor - Adversarial Round Disambiguation - Fixed stale sentinel files causing new rounds to start early
Performance
- TUI Output Rendering Cache - Improved typing responsiveness in command/search modes by caching filtered output state (~20ns cache hits, 0 allocations)
Full changelog: CHANGELOG.md
Tripleshot Adversarial Grouping & Session Stability Fixes
This release enhances the tripleshot adversarial workflow with better organization and fixes critical session stability issues that could cause frozen displays.
Highlights
Tripleshot Adversarial Mode Grouping
When running tripleshot with adversarial mode, instances are now organized hierarchically by attempt. Each of the three attempts gets its own "Attempt N" sub-group in the sidebar, making it easy to track which implementer/reviewer pair belongs to which attempt and round.
Frozen Session Recovery
Fixed a critical bug where individual Claude sessions could become permanently frozen while other sessions continued working. Sessions that become unresponsive are now automatically detected and recovered after 30 seconds of sustained failure.
Process Cleanup on Exit
Claude processes are now properly terminated when Claudio exits. Previously, :quit or Ctrl+C would leave tmux sessions running indefinitely. The new shutdown behavior stops all instances cleanly while preserving session state for potential resume.
Performance
- Adversarial Mode Polling - Fixed UI hitching when starting adversarial tasks in large repositories by caching file locations and rate-limiting directory traversals
Other Changes
- Documentation refreshed for v0.13.0-v0.14.0 features
Full changelog: CHANGELOG.md
Interactive Config and Adversarial Mode Fixes
This patch release fixes three bugs affecting the interactive configuration UI, release skill, and adversarial mode sidebar display.
Bug Fixes
Interactive Config Text Input
Fixed an issue where lowercase 'k' and 'j' characters couldn't be typed when editing text fields in the interactive config UI (:config). The vim-style navigation keys were being intercepted even during text editing. Navigation with these keys still works for dropdowns and normal navigation mode.
Release Skill Changelog Link
The /release skill now generates stable changelog links that point to the release tag (e.g., blob/v0.14.0/CHANGELOG.md) instead of main, ensuring references don't drift as the changelog evolves.
Duplicate Previous Rounds in Adversarial Mode
Fixed a bug where "Round N" entries would appear duplicated in the "Previous Rounds" sidebar section. This occurred when both the implementer and reviewer phases triggered the same group reorganization. An idempotency guard now prevents duplicate moves.
Full changelog: CHANGELOG.md
Enhanced Keyboard Navigation and Adversarial Mode UI
This release improves keyboard navigation with macOS-style shortcuts and refines the adversarial mode UI for better clarity. It also includes significant stability fixes across tripleshot and adversarial workflows.
Highlights
Enhanced Keyboard Navigation
macOS-style keyboard shortcuts now work in input mode and the task prompt writer.
Opt+Left/Rightfor word navigationOpt+Backspacefor word deletionCmd+Left/Right/Backspacefor line operations (where supported)
Adversarial Mode UI Improvements
The sidebar display for adversarial mode has been significantly refined:
- Current round appears inline in the group header (e.g., "Refactor auth (Round 3)")
- Tripleshot with adversarial shows clear implementer/reviewer pairs with phase indicators
- Simplified group headers remove redundant progress counters
Breaking Changes
claudio tripleshot CLI command removed - TripleShot is now accessed exclusively through the TUI. Run claudio start then use :tripleshot (or :triple, :3shot) in command mode.
Performance
- Fixed INPUT mode typing lag with filtered output caching
Bug Fixes
- Fixed tripleshot-adversarial feedback loop (implementers now iterate on rejection)
- Fixed Alt/Option arrow keys being interpreted as Escape
- Fixed tripleshot UI stalling during worktree creation
- Fixed TUI tripleshot config settings being ignored
- Fixed false positive stale/stuck detection in multiple scenarios
- Fixed sidebar auto-scroll when navigating off-screen
- Fixed adversarial sentinel file search in unexpected locations
- Fixed hash and tilde characters not being sent correctly
- Improved working state detection with full spinner word pool
Full changelog: CHANGELOG.md
Adversarial Review Mode & Color Themes
This release introduces Adversarial Review Mode and Color Themes - two major features that enhance workflow quality and user experience.
Highlights
Adversarial Review Mode
Each tripleshot implementer can now be paired with a critical reviewer that must approve the work (score >= 8/10) before completion. This creates a feedback loop that significantly improves code quality through iterative refinement.
- Enable with
--adversarialflag ontripleshotcommand - Reviewers provide structured feedback with improvement requirements
- Automatic retry with
:adversarial-retryif an instance gets stuck - Smart sidebar organization with Previous Rounds container
Color Themes
Personalize your Claudio experience with 14 built-in themes plus custom theme support:
- Built-in themes: default, monokai, dracula, nord, claude-code, solarized-dark, solarized-light, one-dark, github-dark, gruvbox, tokyo-night, catppuccin, synthwave, ayu
- Custom themes: Create YAML files in
~/.config/claudio/themes/ - Live preview: Theme changes apply immediately via
:config
Other Improvements
- Background Cleanup Jobs -
claudio cleanupnow runs in the background by default - Auto-Start on Add - Instances added via
:anow auto-start (configurable) - Enhanced Sidebar - Status lines show elapsed time, cost, and files modified
- Async Task Addition - Adding tasks is now significantly faster with two-phase approach
- Sidebar Scroll-Only Navigation - New
J/Kkeys to scroll without changing selection
Bug Fixes
- Fixed stale RUNNING status after tmux server death
- Fixed input mode not exiting when plan editor opens
- Fixed ultraplan task instances not auto-writing completion files
- Fixed plan files being written to wrong location in worktrees
- Fixed theme persistence across restarts
See the full changelog for all changes.
v0.12.7: Fix frozen output from transient tmux errors
Fixed
Frozen Output from Transient Tmux Errors
Fixed a critical bug where tmux sessions would appear frozen (no output updates, input not showing) due to transient tmux errors being misinterpreted as "session doesn't exist".
The Problem
Previously, any non-timeout error from tmux display-message or has-session commands would cause the capture loop to think the session had ended, setting running = false and stopping all output updates. This meant that transient errors like broken pipes, signal interruptions, or other temporary tmux communication issues would permanently freeze the session.
The Fix
Now, only definitive "session gone" errors cause the capture loop to exit:
error connecting to- socket doesn't existcan't find session:- session not foundno server running- tmux server not runningexecutable file not found- tmux not installed
All other errors (broken pipe, signal killed, generic exit status) are assumed to be transient, and the capture loop continues retrying on the next tick.
Also fixed checkSessionExists to properly capture stderr using CombinedOutput() for accurate error message detection.
Full Changelog: v0.12.6...v0.12.7
v0.12.6: Multi-Pass Planning Session Resume Fix
Fixed
- Multi-Pass Planning Session Resume - Fixed a critical bug where resuming an ultraplan session in multi-pass mode (
:ultraplan --multi-pass) would fail to trigger the plan evaluator. The fix adds proper multi-pass handling in session resume: it now correctly checks for existing planners inPlanCoordinatorIDs, collects any completed plans from worktrees, and triggers the evaluator when all planners have finished.
Changed
- Instance Manager Callbacks Required at Construction - Callbacks are now passed via
ManagerCallbacksstruct inManagerOptionsat construction time, preventing the "leaky abstraction" bug whereStart()/Reconnect()could be called without callbacks configured. - Runtime Guards on Instance Lifecycle Methods -
Start(),StartWithResume(), andReconnect()now returnErrManagerNotConfiguredif the Manager was not properly constructed. - Improved Error Handling - The
Reconnect()method now logs a warning if enabling monitor-bell fails.
Removed
- Dead Code Cleanup - Removed unused
RecoverSession()method andconfigureInstanceCallbacks()method.
v0.12.5
Fixed
- Session Attachment Output Capture - Fixed a critical bug where attaching to an existing session would not configure instance callbacks, causing all instances to appear frozen with no output updates. The previous fix (#564) created instance managers but the reconnection code called
mgr.Reconnect()directly instead oforch.ReconnectInstance(), which skipped the callback configuration (state changes, metrics, timeouts, bells). Now uses the proper high-level reconnection method that configures all necessary callbacks.