1.22.0 - 2026-11-05
Bug Fixes
- web: Show a Read card's output media inside its collapsible body in #4764 by @cwrau (
2002258) - web: Keep structured diffs on tool cards and diff memory edits in #4791 by @cwrau (
8a4519f) - acp: Name the configured agent PATH when its adapter is missing in #4801 by @klubrake (
5261f36) - server: Drop the release-only unused Instance import in #4809 by @njbrake (
2998e2d) - acp: Keep the session running while a background task is open in #4618 by @cwrau (
168055a) - session: Carry a fork parent's transcript onto the child's Claude store in #4774 by @Seluj78 (
a1ae33d) - session: Require the Claude config root for set-session-id --store in #4768 by @Seluj78 (
3185798) - deps: Patch ctutils constant-time operations in #4889 by @jerome-benoit (
34036c3) - acp: Bump claude-agent-acp to 0.94.0 so structured fork can prompt in #4800 by @Seluj78 (
8338efc) - pi: Resume a row with an id but no recorded path from its transcript in #4835 by @Seluj78 (
d76b664) - containers: Name the configured runtime in image pull errors in #4826 by @Seluj78 (
d38a2c5) - bench: Record quit wait timeouts as failed runs in #4819 by @Seluj78 (
7d44c84) - worktree: Make a relative .git pointer absolute before git worktree move in #4769 by @Seluj78 (
0400f17) - tui: Say what a web dashboard restart does to signed-in devices in #4656 by @klubrake (
f94c89c) - deps: Bump p256 to 0.14 for RUSTSEC-2026-0387 in #4901 by @Seluj78 (
668ab34) - tui: Move serve dialog daemon probes off the UI thread in #4773 by @Seluj78 (
9acc1cf) - sandbox: Adopt the live container workdir over a stale pin in #4833 by @Seluj78 (
79a1e93) - update: Give Nix installs a command that updates them in #4931 by @Seluj78 (
2135d3a) - daemon: Stop trusting group-writable ancestors of the socket dir in #4929 by @Seluj78 (
7ee49af) - serve: Retry transient lifecycle snapshot read failures with a bounded budget in #4938 by @Seluj78 (
0105455) - session: Release the create spawn reservation when a stop cancels it in #4940 by @Seluj78 (
5f4bcc3) - serve: Quiesce structured worker on profile-only session move in #4939 by @Seluj78 (
815ebf8) - plugin: Send worktree_path in sessions.list workspace_repos in #4946 by @Seluj78 (
2fe6446) - acp: Keep agent message boundaries so back-to-back messages don't run together in #4765 by @klubrake (
895ec13) - web: Swallow only the drag's own click after a sidebar reorder in #4771 by @klubrake (
76d74db) - server: Refuse a structured session whose ACP adapter isn't installed in #4802 by @klubrake (
6793a51) - serve: Preserve passphrase on local restart in #4900 by @jerome-benoit (
7dc467f) - acp: Surface storage failures on agent switch and selector picks in #4775 by @Seluj78 (
bdd87ee) - acp: Refuse a crash respawn for an archived or trashed session in #4829 by @Seluj78 (
9da4c3f) - web: Settings residuals for plugin cache, refresh warning and theme outcome in #4767 by @Seluj78 (
dc42f17) - web: Linkify URLs on the logical line before wrapping in #4820 by @Seluj78 (
43c920a) - web: Keep keyboard focus inside the About dialog in #4927 by @Seluj78 (
67df2a3) - web: Clear previous session diff state while the next one loads in #4926 by @Seluj78 (
5c2ac7a) - web: Keep the startup error screen's secondary text readable in light themes in #4932 by @Seluj78 (
02e46f5) - web: Use brand tint for selected items so Latte clears 4.5:1 in #4928 by @Seluj78 (
6e6f9f5) - session: Report Busy consistently across CLI, TUI and HTTP delete paths in #4925 by @Seluj78 (
886b11b) - worktree: Report a degraded outcome when relocation leaves git broken in #4824 by @Seluj78 (
f239451) - acp: Don't report install_allowed for a stopped sandbox container in #4923 by @Seluj78 (
7563c85) - serve: Retry worker resume when launch prep races in #4951 by @Seluj78 (
cb7afe3) - storage: Validate handoffs without null rewrites in #4884 by @jerome-benoit (
4eb5065) - web: Name the agent's own login step in the startup auth banner in #4963 by @Seluj78 (
446fa2e) - acp: Run the switched agent's tool when moving to terminal view in #4966 by @Seluj78 (
5551227) - acp: Keep elicitation suppression when the transcript fold starts mid-question in #4965 by @Seluj78 (
20e0af2) - server: Refuse a missing relative ACP adapter in an existing project in #4971 by @Seluj78 (
60f0031) - web: Keep top banners' dismiss "×" and push-health text readable in #4973 by @Seluj78 (
ef9f72f) - acp: Name the missing aoe binary when the runner cannot spawn in #4974 by @Seluj78 (
b327e0b) - acp: Do not park a turn that extra usage covers in #4985 by @Seluj78 (
48f2c2c) - Bind scope absence to canonical runtime in #4897 by @jerome-benoit (
e210020) - cli: Require daemon-backed runtime reads in #4886 by @jerome-benoit (
81d4672) - web: Serve one display name per Agent from the server in #4984 by @Seluj78 (
f177cf0) - web: Defer first layout persistence until repository status is known in #4986 by @Seluj78 (
5470078) - acp: Persist observed store so a dormant session switches to terminal in #4989 by @Seluj78 (
c3217e7) - server: Carry elevation_required code on auth 403s and share one credential selector in #4987 by @Seluj78 (
9786e94) - server: Restore mutation policy boundaries in #4882 by @jerome-benoit (
00e2db8) - session: Keep a shared worktree in place when trashing a session in #4983 by @Seluj78 (
16cfdfd) - acp: Keep the idle reaper off starting workers and restore acp logs in #4993 by @Seluj78 (
ae2940c) - tui: Restart keeps launch policy, defers passphrase save, honest link copy in #5009 by @Seluj78 (
05cefe2) - Make startup recovery wake opt-in in #4921 by @jerome-benoit (
1495eae) - Accept wss X-Forwarded-Proto and reword the live-updates-down notice in #5020 by @Seluj78 (
84c800c) - deps: Bump pulldown-cmark to 0.13.5 for RUSTSEC-2026-0414 in #5033 by @klubrake (
d1f5775) - acp: Export agent_config_dir for new host structured workers in #4980 by @Seluj78 (
8513715) - web: Let a project's new session fall back to the profile default agent in #5026 by @Seluj78 (
249a5ec) - process: Stop double-signalling the macOS runner root in #5037 by @njbrake (
31bca32) - worktree: Treat a bare repo named .git as its parent's project root in #5024 by @Seluj78 (
60fe925) - deps: Pin unicode-width to 0.2.2 so halfwidth dakuten are not counted twice in #5035 by @njbrake (
e50d704) - web: Say the Daemon holds queued messages in the strip's tooltip in #5015 by @klubrake (
4d4b9c1) - web: Don't flash the startup line for an older Session while it loads in #4957 by @klubrake (
07a88a8) - web: Make the sidebar Projects section consistent with the headers above it in #5006 by @klubrake (
d904abd) - web: Finish the sidebar keyboard model's loose ends in #5032 by @klubrake (
c0c0fb3) - session: Never preclean a sandbox without a managed worktree in #5029 by @Seluj78 (
e83da88) - runtime: Create safe application ancestors in #4883 by @jerome-benoit (
90a6381) - session: Remove a purged worktree outside the store locks in #4496 by @Eric162 (
ce52748) - web: Preserve chat text selection during drawer swipes in #5060 by @ness001 (
863dd0b) - plugin: Require runtime worker capability in #5010 by @jerome-benoit (
489fe44) - deps: Bump libz-sys to 1.1.31 for RUSTSEC-2026-0418 in #5071 by @Seluj78 (
c42110d) - deps: Bump libz-sys to 1.1.31 for RUSTSEC-2026-0418 in #5070 by @klubrake (
796d9df) - sandbox: Refresh stored container ID when reusing a live container in #5068 by @Seluj78 (
6455254) - web: Skip startup copy for a running worker on cold connect in #5078 by @Seluj78 (
b7cfb33) - worktree: Quote the destination in git worktree repair hints in #5081 by @Seluj78 (
f89f953) - sandbox: Harden the sandbox image registry check in #5073 by @Seluj78 (
7b7710d) - tmux: Stop OpenCode prose containing "approved" reading as Waiting in #5075 by @Seluj78 (
d130332) - daemon: Pin the app dir by fd before tightening its permissions in #5079 by @Seluj78 (
e287758) - acp: Raise the claude-agent-acp floor to 0.99.1 and classify sessionNotFound as stale in #5090 by @Seluj78 (
df2aad6) - serve: Bound a Tunnel start in the Daemon and surface a hidden failure in #4866 by @klubrake (
4f6167f) - omp: Preserve status during prompt history in #5019 by @jerome-benoit (
9861cae) - session: Refuse unattested managed resumes in #4942 by @jerome-benoit (
ef58696) - process: Handle disappearing cgroups and musl statfs types in #5005 by @jerome-benoit (
34ad986) - e2e: Isolate TUI panes from inherited daemon endpoint and token in #5080 by @Seluj78 (
75094c7) - sandbox: Stop the container when a structured session stops in #5072 by @Seluj78 (
996a3a7) - serve: Turn off the Funnel a failed Tailscale start switched on in #5043 by @klubrake (
3b7b4b7) - web: Stop masking a finished sandbox image pull when Update now never answers in #5097 by @klubrake (
ff25509) - logging: Make debug.log diagnosable, nothing dropped and every lifecycle event and failure logged in #5093 by @Seluj78 (
687771d) - acp: Cancel stuck starts during restart in #4842 by @mikemikimike (
ee916d9) - serve: Retry an idle workerless session whose queue is stranded in #5203 by @Seluj78 (
9daf6d5) - deps: Bump pulldown-cmark to 0.13.6 for RUSTSEC-2026-0433 in #5210 by @Seluj78 (
2066de6) - mcp: Honor Claude's per-project disabledMcpServers when forwarding in #5204 by @Seluj78 (
dd1b019) - test: Wait for a usable control connection when starting ACP runners in #5213 by @klubrake (
b8cc649) - serve: Give a wedged Tailscale the --no-tailscale advice in the CLI pre-check too in #5138 by @klubrake (
2523d82) - daemon: Gate recovery commands on trusted ancestry in #5140 by @jerome-benoit (
00f0216) - acp: End a background task when TaskStop kills it in #5217 by @Seluj78 (
2d1ee32) - web: Point the startup error banner at the dashboard's image update banner in #5139 by @klubrake (
7ff57c7) - web,server: Say Check again starts a stopped container before a manual step in #5215 by @klubrake (
e7987db) - deps: Group vitest updates across majors in #5229 by @jerome-benoit (
94f9817) - session: Clarify pi and omp transcript refusals in #5199 by @jerome-benoit (
6b406fe) - web: Tell the user when another client owns the pane pipe in #4823 by @Seluj78 (
44c1336) - serve: Say daemon startup is unconfirmed, with PID and log path in #5260 by @Seluj78 (
b30df9b) - acp: Align native Codex MCP discovery with the launch directory in #5247 by @Seluj78 (
5e6721a) - process: Capture the legacy scope boundary once per resolution in #5234 by @Seluj78 (
3e8c941) - serve: Let the Daemon stop before the launcher kills it on a readiness timeout in #5259 by @Seluj78 (
e083098) - worktree: Revalidate cleanup candidates after the confirmation prompt in #5263 by @Seluj78 (
ebd5a77) - daemon: Name the highest unsafe runtime ancestor in #5255 by @jerome-benoit (
8ffb41a) - web: Clear seeded model and effort when the wizard agent changes in #5265 by @Seluj78 (
7935c8d) - acp: Drop live user_message_chunk echoes in structured view in #5267 by @Seluj78 (
3ee804f) - web: Focus the paired terminal the reveal picked, not the other dock's in #5246 by @klubrake (
1c33f57) - server: Report a create-ready flag that counts the served profile's preparation hooks in #5120 by @klubrake (
7843a5e)
Features
- cli: Auto-start a local daemon from the CLI and TUI in #4778 by @Seluj78 (
cf7cd22) - web: Keep recent structured views mounted behind a setting in #4777 by @Seluj78 (
f24534e) - plugin: Push session.lifecycle.changed to workers in #4603 by @cwrau (
298fc2d) - cli: Add aoe session wait to block on agent activity status in #4766 by @Seluj78 (
4f72cb0) - tui: Drive session lifecycle from the daemon runtime in #4009 by @jerome-benoit (
94995c3) - server: Report the install method and update command in update-status in #4822 by @klubrake (
c84d8e9) - web: Add install and switch-view actions to the structured startup banner in #4803 by @klubrake (
2338c20) - cli: Add aoe daemon verbs and document OS service units in #4831 by @Seluj78 (
09fc081) - cli: Route group create and delete through the daemon in #4832 by @Seluj78 (
3b6903d) - cli: Add aoe session move to transfer sessions between profiles in #4908 by @Seluj78 (
3bf2649) - daemon: Tag group-not-empty rejection with an error code in #4937 by @Seluj78 (
cd48327) - tui: Resize the stacked session list by dragging in #4859 by @a81x (
548c58b) - acp: Show AskUserQuestion option previews in the web card in #4918 by @Seluj78 (
227d023) - web: Count up and name the Agent while a Structured view Session starts in #4863 by @klubrake (
2a5db1a) - web,server: Themed group combobox in the new-session wizard in #4864 by @klubrake (
61cf598) - web: Say how to update in the update banner, per install method in #4836 by @klubrake (
10c7b20) - web: Replace the tour's Settings steps with first-visit Settings intros in #4860 by @klubrake (
19d1471) - serve: Push session status changes to the dashboard over a websocket in #4776 by @Seluj78 (
57445ff) - daemon: Align native transport security and safe API errors in #4743 by @Seluj78 (
b264770) - web: Deep-link to a single setting from the Settings URL in #4934 by @Seluj78 (
f418f40) - session: Offer restart to apply an updated agent binary in #4750 by @Seluj78 (
a4de0d2) - cli: Route aoe send through the daemon in #4827 by @Seluj78 (
0af94d9) - sound: Finer controls per target (events, browser scope, volume) in #4924 by @Seluj78 (
70cf42a) - server: Expose sandbox image update status and pull to the dashboard in #4868 by @klubrake (
b85aed5) - session: Add per-session host-hook-only env via aoe add --hook-env in #4830 by @Seluj78 (
7527a84) - config: Collapse structured-view settings into acp.structured_view in #4828 by @Seluj78 (
9c8990a) - mcp: Add aoe mcp config and the MCP control guide in #4772 by @WeAreResilience (
4745abc) - tui: Open Connections from R and show one runtime state in the footer in #4972 by @klubrake (
912fd8f) - web: Keyboard model for sidebar group headers and rows in #4958 by @klubrake (
9448968) - daemon: Converge the CLI read onto api.sock with a typed Principal in #4994 by @Seluj78 (
a5ac502) - session: Set host-hook-only env from the web create flow in #5025 by @Seluj78 (
24ea563) - web: Add scrollbar beside full-screen mouse apps in #5018 by @Seluj78 (
a02ef83) - web: Add copy buttons across the structured view in #4751 by @cwrau (
a64a37e) - sandbox: Place Docker and Podman containers in the session's systemd slice in #4780 by @cwrau (
7d8ac80) - worktree: Expand env vars and ~ in path templates in #4659 by @cwrau (
1321b18) - server,web: Recreate a sandboxed session's container from the web dashboard in #5014 by @klubrake (
8f413e3) - daemon: Add bulk session empty-trash endpoint and route the CLI through it in #5027 by @Seluj78 (
2c7e407) - web: Offer sandbox image updates in a dashboard banner in #4949 by @klubrake (
a24aaa5) - web: Lead the usage-limit notice with the Agent, reset countdown and installed alternatives in #4865 by @klubrake (
d533d7c) - tui: Set host-hook-only env from the new-session dialog in #5077 by @Seluj78 (
e40ad5c) - web: Explain sidebar marks with a legend and accessible tooltips in #5003 by @klubrake (
bf9aa0a) - web: Show the adapter compatibility error as steps that follow its state in #4950 by @klubrake (
a4cabf5) - cli: Offer to restart the daemon when a new binary needs a migration in #5067 by @Seluj78 (
13daba5) - web: Say why the queued strip is waiting and offer the action that ends it in #5045 by @klubrake (
b600a4a) - tui: Show plugin-provided row status in #4789 by @athal7 (
2a2e1a4) - acp: Show every Claude Workflow agent in the Sub agents pane in #5092 by @Seluj78 (
6969757) - web: Read the ExitPlanMode plan in a modal from the approval card in #5094 by @Seluj78 (
ec7bd0f) - web: Group the Session menu by how often and how risky each action is in #5126 by @klubrake (
8bd7207) - web: Choose Structured view or Terminal view in the wizard's View row in #4840 by @klubrake (
9ffbbf2) - web: Focus mode in #5064 by @mathias-kende (
bc3c5b4) - plugin: Add agent launch and discovery in #4782 by @athal7 (
655ab73) - cli: Route config commands through the Daemon in #4834 by @Seluj78 (
09f81cd) - server: Forward typed, credential-free create failure codes in #4976 by @klubrake (
4d4f126) - acp: Show Claude 5 summarized thinking in structured view in #5242 by @Seluj78 (
15868f9) - plugin: Add native status and explicit replies in #4783 by @athal7 (
b1e7d28) - web: Open the Agent's sign-in steps from the Not logged in label in #5099 by @klubrake (
18c75b2) - web: Show a failed create in the wizard with one way forward in #5000 by @klubrake (
4dc23e0)
New Contributors
- @mathias-kende made their first contribution in #5064
- @ness001 made their first contribution in #5060
- @Ken-Jee made their first contribution in #4872
Full Changelog: v1.21.0...v1.22.0