Repository navigation
4.0.0
✨ The 4.0.0 tour
Your agents. One workspace. One fleet. CodeAlta 4.0 brings your other computers - and your team - into the workspace you already know. It also brings independent model reviews, more capable automations, a better phone companion, and small comforts shaped by your contributions. Here is the tour of what is new since 3.4.1.
🌐 Meet CodeAlta Fleet
Run the iOS tests on your Mac, hand a task to the build box, and read and steer their sessions beside your local ones. Pair two CodeAlta Desktops with a link and six words, or put CodeAlta Node (altanode) on a machine that stays on without a window. Run on chooses where a session starts; Move to machine… takes its conversation, unpushed commits and uncommitted changes along. Agents can delegate work across your machines too, when you allow it.
Start in Settings > Fleet > Machines. There is no account or server to set up for direct pairing. When you want reach from anywhere or shared team machines, add CodeAlta Server (altaserver), on a computer you control. One computer still works just as before: Fleet is entirely optional. Discover Fleet → (#284, #292)
🔐 A fleet that stays yours
Invite your team, share machines and automations, set budgets, and see your fleet's statistics together. Your devices sign who may do what; every machine checks. Conversations travel encrypted end to end, secrets are sealed for their machines, and the server runs no agent and reads no conversation. Policies, an audit log and a kill switch keep you in control. More → · Security →
🧠 One model works, another reviews
Adaptive now pairs the model doing the work with read-only critics, including models from another provider. After a turn changes code, the critics inspect the diff, read the code and run tests; the session checks their findings and fixes the real problems. You see the reviews as child sessions, not a hidden verdict.
Set up Low, Medium, High and Max in Settings > Models > Adaptive, then choose a level from the Agent chip. Use the recommended setup for your accounts or pick your own models and critics. A level without critics rechecks its own work instead. Used Adaptive before? Set up its levels again: they replace the earlier tier-escalation setup. More → (#273)
⚡ Automations, with boundaries you choose
Let a Jira query, a Slack mention, an incident or a webhook start the work - not just a clock or a git event. An automation can run on another machine while your computer is closed, and optionally write its answer back where the event came from.
Turn on Autonomy in its editor to choose which tools it may call by itself, cap their calls and decide how long approvals wait. Try it (dry run) records those calls without making them; Take over makes a waiting run yours. Team runs can ask the person on call. More →
📱 Away from the desk, not from the work
Your installed phone app can send push notifications when a turn finishes or needs you. Open linked text and Markdown files without leaving the conversation, inspect tool calls, take back a queued prompt, or take over a waiting automation. Dev Tunnels adds another way to reach your desktop when Tailscale is not your choice. More → (#316, #338, #352, #353)
🎁 And also
- Find and explore.
Ctrl+Fsearches a session; click a Mermaid diagram to expand, zoom and copy it. (#341, #342) - From answer to terminal. Paste in terminal puts a shell block in the terminal for you to inspect and run - it never executes it for you. (#340)
- Worktrees within reach. Open changed files in the editor and switch the Files pane to another worktree; work started from an issue can get its own branch, named from your scheme. (#348, #349, #319, #321)
- Your model list, trimmed. Hide models with rules and keep exceptions visible. Claude Code's
.claude/agentssubagents are available as agent prompts. (#332, #325) - Secrets, not tokens in files. Keep credentials in Settings > Secrets and reference them in configuration. More →
- Know when to come back. Desktop notifications tell you when a background session finishes or waits for you. (#314)
- The little snags. Proposals dock to Notes and stay collapsed. Fixes cover Linux file attachments, OpenAI tool schemas, MCP connections, labels across spaces, prompt shortcuts and a browser's extra blank window. (#335, #326, #331, #324, #328, #322, #351)
🙏 Thank you
To @windischb for the Fleet idea, issue branches, docked proposals and browser fix; @sailro for Dev Tunnels; @kzu for phone push notifications and project filtering; @xen2 for the phone's file viewer and tool details, session search and link improvements; @jgazoni for the worktree editors; and @tomflenner for the label and OpenAI schema fixes.
And to @BenjaBobs, @plemaire-dg, @RasKrog, @Devin-HMA and @emmanuelbretonbelz for the reports and requests behind notifications, Claude Code subagents, Linux attachments, attribution controls and Paste in terminal.
All changes
Changes
✨ New Features
- Add notifications for sessions done or waiting in the background (#314) (86c8448)
- Add Claude Code subagents of .claude/agents as agent prompts (#325) (4170ed2)
- Add automation.run grants machines verify in the signed access document (8681020)
- Add approving the link of a way to sign in on another device (548a68d)
- Add reading a granted session's conversation through its machine (11b4dc7)
- Add approving a link with the recovery key on the only computer (0894b38)
- Add settings for the co-author line and external attribution (#333) (4edaed4)
- Add a context menu to the links of Markdown (#337) (8f8d3eb) by @xen2
- Add pairing of two CodeAlta Desktops, without CodeAlta Node (f7ca6fd)
- Add CodeAlta Desktop as a machine reached through its server (252380a)
- Add find in a session with Ctrl+F (#341) (206a89e) by @xen2
- Add Paste in terminal on the shell blocks of messages (#340) (486379b)
- Add rules that hide the models of a provider (#332) (77da087)
- Add a window to expand, zoom and copy a diagram (#342) (109b6b1)
- Add the end of the claude.ai sign-in of Claude Code to the prompt bar (451e48c)
- Add a Harbor adapter for multi-model patterns (#273) (ae9edcf)
- Add Adaptive levels with critics of another model (#273) (72d1aad)
- Add a mode of the Fusion adapter that runs CodeAlta's Adaptive (#273) (f8582da)
- Add Adaptive levels and cross-model critics (#273) (2e6c3f4)
🐛 Bug Fixes
- Fix mobile new-session project filtering (PR #344) by @kzu
- Fix the browser opening a blank window beside the session's (#350) (PR #351) by @windischb
- Fix tool pins claiming to pin the implementation of a tool (edc3acf)
- Fix the hourly circuit breaker of allowed tools resetting on restart (2673727)
- Fix personal machine transfers that left node authority to the former owner (364fea8)
- Fix approvals of a run told and routed once per run, at its start (865a9cd)
- Fix the desktop saying a run was taken over before its machine took it (de70a35)
- Fix Slack events lost when automations share one app (52cefea)
- Fix a node dropping an access change that arrives during a read (058fcf7)
- Fix script cards on the phone not folding with their activity (#323) (7d7bd31)
- Fix fork and archive keys of a session row unreachable after a click (#322) (bc51a02)
- Fix OpenAI requests refused for an allOf in a tool schema (#324) (5fd4942)
- Fix scope providers whose ids read alike sharing one key secret (c67b1e2)
- Fix a guarded session handing work to a session outside its run (cfdfe54)
- Fix budgets, values, hooks and keys of a machine given to another person (f4d3c4e)
- Fix budgets, values, hooks and keys of a machine of a team (54cce2e)
- Fix budgets, values, hooks and keys of a machine of the organization (7e88c72)
- Fix first policy read taking versions of a signer removed since (ed7995a)
- Fix the first held prompt of a session asking another hold after a restart (2453074)
- Fix the 513th held send evicting one the node already said waits (cd0a265)
- Fix removed controller giving a new version of a provider (7d067a4)
- Fix held sends keeping their prompt and title in clear (544d39b)
- Fix providers of two servers replacing each other on a machine (6aa482f)
- Fix a held send being lost when the node stops before its run starts (5dc5fa6)
- Fix held sends resuming before the budgets and policies are wired (0c227cb)
- Fix live watches going on after their grant expired or was taken away (565617d)
- Fix grantees unable to end the live reads they started (e30d7f5)
- Fix space and project budgets skipped on shared machines (0bad5f4)
- Fix an answer naming one environment twice defeating the checkpoint (c4bbbfa)
- Fix guarded sessions starting or moving sessions on other machines (1543dbc)
- Fix values and environments taken when the checkpoint is full (83de166)
- Fix people named before organizations were kept rebinding to another (2ecf333)
- Fix a deleted or withdrawn value coming back when the server replays it (95f4c57)
- Fix one grant of a withdrawn session breaking every grant listing (aebd403)
- Fix budgets ending when the device that signed them is removed (d75d058)
- Fix a rotation giving a withdrawn machine the next value (289ccb1)
- Fix a grant to run an automation missing for an admin (04ab0ca)
- Fix an obsolete Continue anyway starting a run a newer budget holds (a7b62d6)
- Fix a grant to see an automation not reaching its runs (cc4c856)
- Fix environments of one name sharing their values and admissions (0b0e6e1)
- Fix guards and credential rules lost beyond 32 levels of lineage (c721dc5)
- Fix tools a policy turns off coming back after a restart (d3e6f18)
- Fix unattended runs of a shared machine resolving the owner's secrets (bb2eff2)
- Fix an unreadable kept access document restoring the former owner (3ac095b)
- Fix approvals reviewed under the environment name the server lists (d78d260)
- Fix another person's environment not approvable from Desktop (f1dadf0)
- Fix the server's word deciding whose session a grant copy is (795db72)
- Fix the mask of a retired value disappearing while a run may hold it (6dc574e)
- Fix a stolen controller key admitting another controller or recovery key (75943ac)
- Fix later turns of a run losing the supervision of their approvals (7760233)
- Fix a link approval signing the link the server says, not the one shown (3adcdd2)
- Fix the hourly limit of a run allowing calls it could not record (09ee9a3)
- Fix approvals of on-call automations going to an earlier person on call (6753dac)
- Fix a Microsoft confirmation counted fresh without auth_time (e778af4)
- Fix hook events starving behind a thousand retried ones (8dabad7)
- Fix grants to edit automations given though no machine honors them (d3ff527)
- Fix a stale company account counted as an owner's last way in (9e5b2be)
- Fix a Slack app shared by machines losing the events of their triggers (91ac9f6)
- Fix a server set up behind a proxy serving its passkey page over http (111d109)
- Fix sub-sessions of a non-owner session counting as the owner's work (a4b41db)
- Fix a recovery-key link approval callable without the chosen method (cd9bfb4)
- Fix a kept access pin that reads but holds no anchor counting as none (65dd7fa)
- Fix held sends of the earlier file format being dropped in clear (0d26a79)
- Fix a company sign-in judged by old settings counting under new ones (f53a0e2)
- Fix tools a policy turns off lost below 32 levels of fleet work (8b20709)
- Fix a held run starting past a budget learned while it waited (b0e0a74)
- Fix a removed controller changing an installed provider at its version (f5c6d71)
- Fix a Slack refresh keeping a connection beside another of its app (a3cfab4)
- Fix a legacy person bound to an organization the file did not keep (d466575)
- Fix a held prompt sent again when its run is far back in the journal (f1b4f2e)
- Fix a secret given to a session unmasked once the store forgets it (017a28f)
- Fix the work of people and runs becoming the owner's when not recorded (de2fd08)
- Fix a rotation giving a withdrawn machine the value from a replayed record (b9a1e42)
- Fix the approval of a run naming its machine by the server's name alone (7585b3d)
- Fix held sends taken again before the budgets of the node are known (0c26d89)
- Fix held sends this machine cannot open now dropping out of the queue (fe56ec7)
- Fix secrets given to providers and MCP servers unmasked once forgotten (cf4f147)
- Fix the count of unopened held sends opening them unseen by the retry (5386967)
- Fix sends of an earlier file not counted while they cannot be protected (3251b28)
- Fix whose work a session is forgotten when the session is only not found (e70c837)
- Fix held sends and runs admitted when the server links do not read (c7eaadc)
- Fix fleet work in the default space losing its off tools once moved (607f9a7)
- Fix a run of a linked space admitted before the key of its space is read (123766b)
- Fix providers installed before their pin removed once their signer left (db820c3)
- Fix the spaces linked to a server unknown until its connector publishes (06c1b03)
- Fix requests of the controller writing over each other's secret checkpoint (1842418)
- Fix revoked machines still listed on the canvas, Machines and Move (4e7179e)
- Fix the machine chosen in Move to machine snapping back to the first (93fb57d)
- Fix the end of a relay shown raw in the audit log (70dd3fd)
- Fix the secret checkpoint of the controller trusting what the server answers (71fda39)
- Fix a person invited listed in People and access only after Reload (ffb2785)
- Fix a machine reached through its server said paired by a pairing link (5aea304)
- Fix the provider key told to the masking from a reading of its own (18d1ab6)
- Fix the 1025th secret told before the host attaches dropped unmasked (9626850)
- Fix the page of a machine reached through the server naming a command that fails (fe08ad6)
- Fix a renamed node listed by its join name in the devices of the server (2431246)
- Fix the facts of one run split over three models in My fleet (65d020e)
- Fix a removed budget of spaces making a run wait for the key of its space (c1fb618)
- Fix a link whose spaces did not read counted as loaded on the next reload (a3d1c4d)
- Fix server links that do not read taken for no budgets between reloads (db06f66)
- Fix the sessions of a machine without titles or projects until linking its space (5e7d4e4)
- Fix a run that waits for its space key reading the shared keyring alone (cc4e5b6)
- Fix unattended work of a shared machine waiting for a space key it never takes (23c9a0c)
- Fix a run that waited for a key or devices skipping the links it passed (95afd92)
- Fix a held send another reader opens during recovery never taken again (6eff3f3)
- Fix the keys not moving in the Markdown preview of the code editor (#336) (67ed8c7) by @xen2
- Fix sessions not following a project dragged to another space (#334) (4493599)
- Fix sessions not gathered by a second drag or the space page (#334) (e42ae2c)
- Fix a model a request reported relabelled by a later alias in My fleet (bb89a47)
- Fix an older inventory naming a renamed node after a newer one (c19634b)
- Fix a revoked machine listed again by an update sent after its removal (5eadef1)
- Fix a session of a revoked machine kept by who sees it but not the machine (447d1a0)
- Fix file drops and silent dialogs of the prompt on Linux (#326) (3098935)
- Fix Copy path of a missing file: address moving into the session (#337) (e83f430)
- Fix the keyboard of Text after the preview (#336) (df5e590)
- Fix the side of the proposals chosen in one pane only (#335) (7ddc830)
- Fix a revoke whose request is cancelled telling no watcher (d3aa5d0)
- Fix late facts of a revoked machine bringing a session back to its viewers (7c6afcf)
- Fix the time of a run relabelled by another run of its quarter hour (4f06faf)
- Fix tool schemas with a choice at their root refused by providers (12a2f47)
- Fix a dropped file that grows being attached as a prefix (#326) (c466439)
- Fix host drops reading more files than a prompt takes (#326) (928ad58)
- Fix a compaction settling the model of the run it ran in (57aad9d)
- Fix a corrected alias row left at zero hiding the model of tool calls (9a0d1e3)
- Fix a long run before its first request split over two models (721547e)
- Fix merged tool schemas refusing what an open branch takes (a877dda)
- Fix merged tool schemas losing the siblings of a $ref (69cc535)
- Fix host drops refusing images that fit once converted (#326) (fe59217)
- Fix the questions of a script asked out of order (a0e0a10)
- Fix the Fleet canvas pushed out of view by a computer with many sessions (e82cfa0)
- Fix the port of a desktop that runs CodeAlta Server beside it (f81fb8e)
- Fix the replace of a fleet file that Windows briefly denies (643df1f)
- Fix a session listing cut short when the catalog changes while it loads (ff57c41)
- Fix links and pictures reaching other computers (#339) (9dd0996) by @xen2
- Fix replacing a file a reader holds, in the update and secret stores (ed6849f)
- Fix a session stuck on thinking its endpoint refuses to verify (74d741e)
- Fix a burst of telemetry plans starving the thread pool of a fleet host (94175f1)
- Fix the sandbox escape test failing on Linux without slirp4netns (621bf98)
- Fix the browser tests of the desktop failing on Linux (67c8087)
- Fix Adaptive reviews of sessions without sub-sessions (#273) (2773f4e)
- Fix the file search invalidation tests timing out in a full validation (1b9dbbb)
🚀 Enhancements
- Add an own branch, named by a scheme, for the work on an issue (#319) (PR #321) by @windischb
- Mobile access with Dev Tunnels (PR #316) by @sailro
- Enhance the diff of a worktree to open its files in the editors (PR #348) by @jgazoni
- Add a worktree button to the code editor files to open it in its own tab (PR #349) by @jgazoni
- Text and markdown viewer on the phone (PR #352) by @xen2
- Add push notifications for installed mobile apps (PR #353) by @kzu
- Enhance the guard checks of alta commands to cost nothing unguarded (3e1b065)
- Enhance MCP tools to send the schema of their server as it is (2ee89c4)
- Enhance the phone with taking back prompts and reading tool calls (#338) (97e0a90) by @xen2
- Enhance the fleet secrets page to point to Settings > Secrets (1a20d06)
- Enhance the start of Firefox to start it again when its session stalls (afb123b)
- Enhance the attribution texts of Settings to be tweaked in place (e808603)
- Enhance the placeholder of an empty prompt with the keys it takes (90191db)
- Enhance Settings to say why CodeAlta signs the work of its agents (1cf9f8e)
- Enhance the start of Firefox to try five times, twenty seconds each (467a2e7)
🧰 Maintenance
- Fix ci: verify all Server packages during releases (04421c9)
🏭 Tests
- Fix test: a budget hold of a node names no title (42c1210)
- Fix test: a second way in confirms with the passkey before it links (d6a7ab7)
- Fix test: the region churn tests measure once the page settled (e81255d)
- Fix test: the statistics menu gets its Escape once it has the focus (37b5998)
- Fix test: Kestrel settings of the environment never bind beyond the loopback (0bb248c)
- Fix test: the plain-HTTP guard test never hands a wide address to a server (121ef98)
- Fix test: the shipped user guide has a Fleet folder (711c25b)
- Add test of the session an agent of a member's machine starts on a node (89178c2)
- Improve test: the first fact of an on-call approval names who is on call (e62aa86)
- Fix test of a content grant reading before the prompt was in the history (8300182)
- Fix test of an unkept legacy binding relying on a read-only file (0db6846)
- Fix test of issue branch schemes on a CRLF checkout (c13cdb5)
- Fix test: a thread of the window that the pool cannot reuse (8bad451)
- Fix test: guide moves, popups and a shortcut on a loaded machine (faac0cb)
- Fix test of the worktree button pressing Escape before the list has focus (7f474fd)
- Fix tests that failed under the load of a full validation (c2dfe30)
- Fix test: refresh attribution settings browser coverage (748a256)
- Fix test: check node updates on stable and prerelease builds (5b40fc3)
📚 Documentation
- Update doc on machine-signed approval requests (bb422b7)
- Improve doc: Fleet as a section that explains it top down (73d6f5f)
- Update doc of fleet secrets and held sends after the review fixes (6821966)
- Update doc of fleet secrets and held sends after round 3 of the review (9c4eaa2)
- Improve doc: pictures of the Fleet pages (0fe3327)
- Add docking of proposals to Notes and keep both collapsed (#329) (#335) (6047ab4) by @windischb
- Improve doc: front page and readme for CodeAlta Fleet (5450e04)
- Improve doc: tests never listen beyond the loopback (749111e)
- Improve doc: banner with One fleet (1d7d672)
- Improve doc: picture of Move to machine (fbdcf61)
- Improve doc: pictures of the Fleet canvas and My fleet statistics (6f84186)
- Improve doc: readme line on reusing the agent files of a project (f1f42c7)
- Improve doc: readme with the fleet in install, agents and documentation (a4776a1)
- Update doc: pictures of the Sessions settings and of the prompt keys (18465a2)
- Update doc: crop the Fleet canvas to its content (59b3849)
📦 Dependencies
- Bump NeoAstra to 1.12.0 and badge sessions on Windows and Linux (#314) (c9c40fd)
- Update Dependencies: build only against the Anthropic NuGet package (eecde76)
- Update Dependencies to their latest releases, except SkiaSharp (57c9a32)
- Bump Claude Code CLI to 2.1.318 (b9e553b)
🧰 Misc
- Merge alta/jaunty-easel-v4rm into feature/fleet (2fff957)
- Merge feature/fleet (2fff957) into alta/tender-savanna-pct9 (055f990)
- Merge alta/jaunty-easel-v4rm into feature/fleet (0e65944)
- Merge alta/lucid-deneb-cmzq into feature/fleet (bf9eff1)
- Merge alta/tender-savanna-pct9 into feature/fleet (21dbf82)
- Merge alta/spicy-anvil-6b2b into feature/fleet (19effdc)
- Merge feature/fleet (21dbf82) into alta/tender-savanna-pct9 (6dbad9d)
- Merge feature/fleet into alta/lucid-deneb-cmzq (454a057)
- Merge alta/tender-savanna-pct9 into feature/fleet (197a95a)
- Merge alta/lucid-deneb-cmzq into feature/fleet (1858cdc)
- Merge branch 'feature/fleet' into alta/tender-savanna-pct9 (62275b3)
- Merge alta/tender-savanna-pct9 into feature/fleet (3377030)
- Merge branch 'feature/fleet' into alta/wandering-glen-fcnc (5735738)
- Merge alta/wandering-glen-fcnc into feature/fleet (a4ba293)
- Merge feature/fleet into alta/calm-cadence-pv84 (f026c2c)
- Merge feature/fleet into alta/calm-cadence-pv84 (0481db6)
- Merge alta/joyful-mosel-ksqb into feature/fleet (c5dd7d5)
- Merge feature/fleet into alta/jovial-hood-qc3z (62c2fe6)
- Merge alta/jovial-hood-qc3z into feature/fleet (3e81b6d)
- Merge alta/calm-cadence-pv84 into feature/fleet (bb7ca68)
- Merge alta/wandering-glen-fcnc into feature/fleet (e265c92)
- Merge alta/wandering-glen-fcnc into feature/fleet (8b2f3ef)
- Merge branch 'feature/fleet' into alta/wandering-glen-fcnc (b074ad6)
- Merge alta/wandering-glen-fcnc into feature/fleet (93ccced)
- Merge feature/fleet into alta/jovial-hood-qc3z (94f7648)
- Merge alta/jovial-hood-qc3z into feature/fleet (0da0a93)
- Merge feature/fleet into alta/calm-cadence-pv84 (15e61dd)
- Merge alta/calm-cadence-pv84 into feature/fleet (2826d95)
- Merge alta/wandering-glen-fcnc into feature/fleet (0b1dffc)
- Merge alta/calm-cadence-pv84 into feature/fleet (6af12ef)
- Merge alta/zippy-lemon-hx9d into feature/fleet (c5297c1)
- Merge alta/calm-cadence-pv84 into feature/fleet (7fb96f0)
- Merge alta/zippy-lemon-hx9d into feature/fleet (5bd8a1d)
- Merge alta/zippy-lemon-hx9d into feature/fleet (round 7) (7c421d6)
- Merge alta/zippy-lemon-hx9d into feature/fleet (round 8) (de7bbea)
- Merge main into feature/fleet (54b192e)
- Improve the Adaptive settings with an aligned table of levels (#273) (427ea21)
Full Changelog: 3.4.1...4.0.0
Published with dotnet-releaser
This release tour was written by CodeAlta.


