⚡ Performance Improvements
- Reduce test and development feedback overhead (#556)
- Avoid rendering unchanged windows during layout updates
🎉 Features
- Integrated terminal — runtime-owned shells for people and agents (#490)
- Live steer and truthful stop for sessions (#555)
- Manageable session queue, truthful live view, and legible transcripts (#557)
🐛 Bug Fixes
- Restore beta 22 release notes and changelog
- Package site search catalogs
- Zoom windows without covering others and keep the layout stream alive (#525)
- Honor route skips within a planning pass (#529)
- Scope lifecycle loop actions (#531)
- Preserve profile scope in loop implementers (#527)
- Stabilize base CI integration (#536)
- Fence terminal generation outputs and stabilize e2e contracts (#547)
- Preserve ACP options in loop-managed session profiles (#542)
- Preserve unresolved review findings (#543)
- Mark skipped terminal loop nodes as not taken (#544)
- Sanitize runtime settings when changing providers (#546)
- Ship the AppImage with the static runtime (#548)
- Preserve provider failures before output validation (#545)
- Terminal operating system (#552)
- Stabilize loop recovery and simplify run inspection (#554)
- Keep pending activity visible and repair CI synchronization
- Prevent stale terminal catalog reads from replacing live state
🧪 Testing
- Stabilize Windows PTY read readiness
- Drain Windows PTY startup output
Release Notes
Features
Keep sessions alive while observable work is still running
Session supervision now considers agent progress, running tools, active children, Loop runs, task leases, and scheduled waits. A quiet transcript alone no longer means the session is idle. If a work-signal source cannot answer, supervision reports attention and suspends automatic stopping.
Observed silence warns after 30 minutes by default and enters the normal stop ladder after another 10 minutes; fresh work cancels the pending stop. Network Live participation has no aggregate wall-time limit by default, while explicitly configured and other budgets remain effective.
Capacity starvation now escalates visibly. Blocked automation fires defer durably and resume after restart, and scheduler counters distinguish skipped wakes from successful work.
PR: #557.
Manage follow-ups without losing them when a turn is interrupted
Queued follow-ups survive interruption of the active turn, including agent- and Goal-owned entries. Edit, remove, steer, or explicitly clear the queue from the session controls. Clearing writes durable actor-attributed records and is also available through compozy session input clear and the corresponding HTTP/UDS and native-tool surfaces.
Send identities make retries idempotent: retrying the same message returns its recorded outcome, while reusing the identity with different content is rejected. When an acknowledgment is lost, the client shows Not confirmed and retries the original identity. Daemon-generated follow-ups now use the same durable queue.
PR: #557.
Reconnect and read long sessions with a truthful live view
Session streams recover from their last delivered position, including an empty catch-up acknowledgment when already current. Brief interruptions stay quiet; repeated failures show Reconnecting, then Disconnected with Try again. Sending while disconnected keeps the draft. Compaction and retention recovery preserve a consistent active turn and replace expired history windows explicitly.
Completed tool work and settled turns fold into readable summaries, interrupted work stays open, and Thinking is explicit. Reading older history or expanding work no longer competes with live scrolling. Large payloads have Show all and Download controls; stop and steering provenance remain visible on the relevant messages.
Bounded agent event ingestion and durable-history recovery prevent a slow watcher from wedging the producer or silently losing accepted output. Streaming redaction was optimized while preserving its output.
PR: #557.
Search the full conversation and jump between your messages
Find matches in older, unloaded conversation history and jump directly to the containing message or tool result, opening the necessary folds. Search covers text, tool names, filenames, errors, inputs, and outputs. An operator-message outline and a compact message trail make long sessions easier to navigate without losing your place as output streams.
The same reads are available through compozy session search, compozy session outline, HTTP/UDS, and the corresponding native tools. Search results carry location hints so clients can open the exact matching work row.
PR: #557.
Steer a working session and see when Stop has actually finished
Follow-ups now default to steering. Runtimes that advertise live steering receive the guidance inside the active turn; other runtimes report an explicit interrupt-and-replace fallback. The composer shows what happened, restores refused drafts, and Settings lets you choose queueing instead. CLI and native-tool responses expose the send outcome and steering capability.
Stop uses cooperative cancellation, forced stop, and process-group termination with process identity checks. The UI stays at Stopping until the runtime can verify the outcome; an unverifiable stop remains visible with attention. Canceling a turn keeps the session promptable, including when escalation needs to replace its process. Restart reconciliation identifies crashed agents and stale decisions instead of leaving phantom activity.
PR: #555.
Terminals stay with the workspace and welcome people and agents
Open real terminals inside CompozyOS, watch an agent's deliberate command run live, and reconnect after closing a window or reloading the app while the daemon keeps the process running. Visible agent terminals appear without taking focus. The same terminals are available through the Web and Desktop apps, CLI, HTTP/UDS, and native tools.
Authorized people and agents in the same workspace and profile can type, resize, answer input, signal, and close concurrently. Each submitted write stays whole and actor-attributed; there is no control handoff. Explicit read-only attachments remain available. Agent execution uses the approval policy, and hidden input is redacted from retained terminal surfaces.
A command journal records who ran what, approval, outcome, and boundary-detection confidence. Recording is opt-in with retention limits. Local macOS, Linux, and Windows support interactive terminals; remote sandboxes support command execution and journaling without interactive attachment.
Fixes
Carry the selected Profile through Loop compilation and worker sessions
Profile-scoped Agents, Skills, Loops, and Session references now resolve consistently through validation, persisted responses, and execution. Orchestrated implementers and nested daemon-issued Session commands retain the validated caller Profile while preserving workspace and identity checks.
Lifecycle extension tools are authorable only in the workspace and Profile where they are enabled. Compilation sees the same tool schema and placement as execution, with normal validation and permission policy still enforced.
Loop-managed sessions also inherit configured ACP options and speed, with explicit runtime options taking precedence. This prevents session creation-profile mismatches before the provider starts.
Keep skipped Loop branches and unresolved review findings honest
Exclusive routing no longer executes a dominated branch later in the same planning pass. Skipped downstream and fan-out steps settle as Not taken instead of appearing permanently pending after the run ends; work that ran in earlier rounds keeps its history.
Review-and-fix findings that are valid but blocked or unresolved remain pending and retain their status. Invalid findings remain invalid. Finalization no longer counts those findings as resolved simply because the review round finished.
Keep terminal output and session activity visible through lifecycle races
A short-lived terminal that exits while the browser is attaching now keeps its exited state when an older catalog response arrives late. The exit bar and retained output remain discoverable. Terminal selection controls no longer resize the process and clear the selection, hidden panes no longer publish invalid dimensions, and a completed CLI detach no longer causes an unintended reconnect.
Session stream closure drains the persisted stop marker. The pending-reply indicator also appears when a delayed React effect has already consumed its initial guard interval, instead of staying hidden indefinitely. Delayed Settings navigation and runtime-selector closing focus no longer override a newer operator action.
PRs: #547, #557. CI follow-ups: 862e138, 52d2c4a.
Recover Loop runs without losing results or reporting an old failure as current
Carried external results with identical descriptors are deduplicated, fixing task-result reads and daemon startup during recovery while retaining corruption checks for conflicting content. Current-generation activity and blockers no longer inherit an earlier generation's failure or quarantine.
Reruns respect immutable generation lineage and allocate fresh Goal binding epochs. Completed generation outputs reject stale nonterminal overwrites, and new rounds emit one generation-start event. Built-in command judges use the daemon-matched executable and environment.
The run page leads with outcomes and action results. It previews a few outputs, keeps Details available, folds quiet control and skipped steps, and shows terminal retry guidance only when the existing planner accepts that recovery.
Report provider failures clearly and clear stale settings when switching providers
Loop actions preserve quota, authentication, transport, timeout, and refusal failures before validating the model's output. An expired login or usage limit is no longer disguised as an invalid JSON result; genuine malformed model output still fails schema validation.
Changing an Agent's provider with compozy agent update clears the previous provider's model, command, reasoning effort, and ACP options unless you explicitly supply replacements. Providers that do not support reasoning configuration reject it during resolution instead of failing later at session startup.
Run the Linux AppImage without installing libfuse2
Linux AppImages now embed the static runtime, allowing distributions with FUSE 3 to launch the app without installing libfuse2. Release, local, and update-test packaging share the same runtime selection. The extraction fallback remains available for environments without kernel FUSE support.
PR: #548.
Zoom a window without covering its tiled neighbors
Zoom now moves a window or its entire tab frame to a separate regular desktop when needed, preserving the other windows. Unzoom returns the unit through its saved layout anchors and removes an empty desktop created for zoom. Tiling another window ends zoom and gives the new neighbor its own space.
Persisted version 3 layouts migrate losslessly to the current layout shape, preserving tab order and the active tab. Layout streams now use heartbeats, stalled-stream recovery, and authoritative reconnect fences so the browser catches up after a disconnect.
Moving one window no longer forces unchanged windows to render again, reducing work during layout updates from another browser or the CLI. The existing 12-window drag, restore, and peer-convergence performance limits remain enforced.
PR: #525.
Highlights
Spend less time repeating development and verification work
Repeated development startup and verification reuse successful evidence when source, generated artifacts, toolchain, and build settings still match. Development entry points avoid unchanged generation, and Air avoids relinking an unchanged daemon while preserving atomic publication and failed-build recovery. Explicit generation and drift checks remain available.
Web tests use the existing worker bound with a threads pool; migration fixtures reuse an empty historical prefix while still exercising real upgrades. Active lint-plugin tests are included in normal verification. The full-checkptr audit now installs its Bun dependencies and uses the existing eight-way Go partitioner without reducing instrumentation or timeouts.
Marketplace MCP configuration no longer waits for unrelated model-catalog discovery. Provider and catalog changes still reconcile normally.
Upgrade defaults and compatibility for session control
Persisted database state and layouts upgrade through their owning migrations. Review these session defaults when upgrading:
session.busy_input.default_modeis nowsteer; choosequeueto defer follow-ups. Live injection depends on runtime capability, and unsupported runtimes report the interrupt fallback.- New supervision settings are
session.supervision.quiet_after(30m) andstop_grace(10m). Existinginactivity_warning_afterandinactivity_timeoutsettings retain their legacy timer behavior during the v0.4 compatibility window. For ordinary positive thresholds, migrate the warning threshold toquiet_afterand the difference between stop and warning thresholds tostop_grace; check the documented zero semantics before changing disabled timers. network.live.max_total_wall_timedefaults to0, disabling that aggregate wall budget. Set an explicit duration if you need a limit.- Prefer
--expected-turnover the deprecated--expected-turn-id. The old flag and the historicalinterruptdefault remain accepted with warnings until their planned removal in v0.5.0; explicit per-send interruption remains supported. compozy__session_promptdefaults towait: false. Requestwait: trueexplicitly when you need a synchronous native-tool call.
- #556perf: reduce test and development feedback overhead
- #490feat: integrated terminal — runtime-owned shells for people and agents
- #555feat: live steer and truthful stop for sessions
- #557feat: manageable session queue, truthful live view, and legible transcripts
- #525fix: zoom windows without covering others and keep the layout stream alive
- #529fix: honor route skips within a planning pass
- #531fix: scope lifecycle loop actions
- #527fix: preserve profile scope in loop implementers
- #536fix: stabilize base CI integration
- #547fix: fence terminal generation outputs and stabilize e2e contracts
- #542fix: preserve ACP options in loop-managed session profiles
- #543fix: preserve unresolved review findings
- #544fix: mark skipped terminal loop nodes as not taken
- #546fix: sanitize runtime settings when changing providers
- #548fix: ship the AppImage with the static runtime
- #545fix: preserve provider failures before output validation
- #552fix: terminal operating system
- #554fix: stabilize loop recovery and simplify run inspection
30 files published by the GitHub release workflow.
Browse downloads
- checksums.txt2.7 KB · 42 downloads
- checksums.txt.sigstore.json9.9 KB · 37 downloads
- compat.json70 B · 22 downloads
- compozy-0.3.0-beta.23.tar.gz181 MB · 1 downloads
- compozy-0.3.0-beta.23.tar.gz.sbom.json826 KB · 1 downloads
- compozy-0.3.0.beta.23-1.aarch64.rpm52 MB · 1 downloads
- compozy-0.3.0.beta.23-1.aarch64.rpm.sbom.json2.9 KB · 1 downloads
- compozy-0.3.0.beta.23-1.x86_64.rpm56 MB · 1 downloads
- compozy-0.3.0.beta.23-1.x86_64.rpm.sbom.json2.8 KB · 1 downloads
- CompozyOS-0.3.0-beta.23-linux-x64.AppImage206 MB · 3 downloads
- CompozyOS-0.3.0-beta.23-linux-x64.deb180 MB · 3 downloads
- CompozyOS-0.3.0-beta.23-mac-arm64.dmg211 MB · 6 downloads
- CompozyOS-0.3.0-beta.23-mac-arm64.zip210 MB · 5 downloads
- CompozyOS-0.3.0-beta.23-mac-x64.dmg220 MB · 2 downloads
- CompozyOS-0.3.0-beta.23-mac-x64.zip220 MB · 1 downloads
- compozy_0.3.0.beta.23_amd64.deb56 MB · 2 downloads
- compozy_0.3.0.beta.23_amd64.deb.sbom.json2.6 KB · 1 downloads
- compozy_0.3.0.beta.23_arm64.deb52 MB · 1 downloads
- compozy_0.3.0.beta.23_arm64.deb.sbom.json2.6 KB · 1 downloads
- compozy_darwin_arm64.tar.gz54 MB · 16 downloads
- compozy_darwin_arm64.tar.gz.sbom.json329 KB · 1 downloads
- compozy_darwin_x86_64.tar.gz57 MB · 3 downloads
- compozy_darwin_x86_64.tar.gz.sbom.json329 KB · 1 downloads
- compozy_linux_arm64.tar.gz52 MB · 4 downloads
- compozy_linux_arm64.tar.gz.sbom.json333 KB · 1 downloads
- compozy_linux_x86_64.tar.gz56 MB · 55 downloads
- compozy_linux_x86_64.tar.gz.sbom.json333 KB · 1 downloads
- compozy_windows_x86_64.zip57 MB · 2 downloads
- compozy_windows_x86_64.zip.sbom.json339 KB · 1 downloads
- install.sh8.0 KB · 2 downloads
- Source code (tar.gz)
- Source code (zip)