Skip to content

Releases

v1.1.3

Choose a tag to compare

@github-actions github-actions released this 04 Nov 12:04
Immutable release. Only release title and notes can be modified.
0fc1adb

1.1.3 (2026-11-04)

Bug Fixes

  • app: Start the update's quit from the main run loop (c4e8c41)
  • app: Warn about unsaved edits before an update restarts the app (1412ea0)
  • app: Keep the sleep daemon's XPC handlers off the main actor (036f8bd)

Code Refactoring

  • app: Keep the sleep daemon connection in Core and cover it (e2cd4f0)

v1.1.2

Choose a tag to compare

@github-actions github-actions released this 03 Nov 14:43
Immutable release. Only release title and notes can be modified.
6b5b9be

1.1.2 (2026-11-03)

Bug Fixes

  • agent: Judge an orchestrator's commands against a closed read list (8aad2f4)
  • agent: Ask before every MCP tool in an orchestrator (1662968)
  • agent: Offer Run in an orchestrator only for a listed read (b34f5ab)
  • agent: Tell a resumed Grok orchestrator its role (cffef33)
  • agent: Close what the branch review found in the read list (9214ac1)
  • agent: Answer a listed read before raising a question (8be5b6c)
  • agent: Read a longer number before > as zsh does (c891b17)
  • archive: Measure a branch again before forcing its deletion (dc24c28)
  • archive: Say so when a branch outlives its deletion (1d9f44b)
  • archive: Hold a real wait for the command a merge is waiting on (98f1ca6)
  • archive: Accept only the loss the confirmation showed (d975f4b)
  • archive: Recheck only the waits a command is holding (278e9e5)
  • archive: Close the gaps left in the merge wait and the shown tip (5973bb6)
  • workspace: Leave nothing behind when a start is refused after the cut (f734565)
  • transcript: Mark a command's output as untrusted in its report (8a6a610)
  • transcript: Keep forged markers inside a command's report (530257a)
  • archive: Keep agent plans and stop review files holding an archive (6b5b9be)

Code Refactoring

  • agent: Decide which calls a hook refused in Core (13ddb89)

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 03 Nov 05:45
Immutable release. Only release title and notes can be modified.
e40a7f8

1.1.1 (2026-11-03)

Bug Fixes

  • release: Publish a release only after its files are attached (a4ae472)

v1.1.0 was published without its files, so this release is the first to ship its changes. They are listed below.

1.1.0 (2026-11-02)

Bug Fixes

  • preview: Keep --background-capture, and name the window being waited for (a56988f)
  • preview: Forget seeded agent settings before every launch (3eab902)
  • github: Find the pull request of a branch pushed to a fork without an upstream (3009829)
  • github: Keep a failed fork pull request view out of the cache (c6f9a28)
  • preview: Forget seeded agent settings before every launch (28be3a0)
  • transcript: Open a linked file the project checkout holds (9d14d86)
  • transcript: Keep a deleted file on its diff and resolve every entry point (377a8dd)
  • transcript: Open from the checkout only what its git does not track (9990f72)
  • review: Drop a checkout answer that a newer open has overtaken (7f9ad67)
  • review: Let every file the review shows supersede a pending answer (1c23461)
  • sidebar: Record the sea mark before the workspace is adopted (c3ff6e4)
  • transcript: Keep a question card on the question it was walked to (5f2649b)
  • transcript: Move a question card on by its own rule, not by recounting (a2e121f)
  • transcript: Hold issue references to the GitHub name rules (4cdd4a1)
  • transcript: Keep a link label from linking a second time (8e1680d)
  • transcript: Keep the links inside a label whose own target opens nothing (4f02f34)
  • settings: Save merge method picks in order and watch before the first read (664b838)
  • usage: Keep a quota figure when the reset differs by a fraction of a second (3a92bf6)
  • workspace: Start new workspaces from the remote's default branch (da898de)
  • git: Ask the remote the base comes from, and only for a branch it has (b9fdef9)
  • notices: Keep a refused branch rename inside its workspace (009f01f)
  • notices: Title a kept branch truthfully and forget it on archive (d383f78)
  • transcript: Keep the selection bar clickable and its quote faithful (01df515)
  • transcript: Give the selection bar room around its divider (7a791fb)
  • transcript: Queue quotes while a side chat opens and drop stale bars (550d449)
  • transcript: Show the bar again when the same text is reselected (5da76c4)
  • transcript: Read the overlay space name from any isolation (1ea7878)
  • suggestions: Let a suggestion aimed at GitHub start once its clone is added (203a8a2)
  • suggestions: Find the clone a GitHub suggestion means when it is made (475ae3e)
  • github: Name the base the pull request targets (43f42b8)
  • github: Confirm a merge against the pull request's own base (65e2f71)
  • archive: Tear down only the workspaces the store deleted (a59e6d5)
  • transcript: Send again after the owner stops a turn (1d53dd0)
  • review: Classify a refused merge by state and keep its fixes safe (5620ad1)
  • review: Stop a merge round from dropping commits on the server (9711f49)
  • review: Bound the wait and pin the lease to our own push (4a639d3)
  • review: Wait for every check before merging a resolution (1104972)
  • review: Read checks from the pushed head and stop on a moved branch (91322d4)
  • archive: Excuse only the commits a merged pull request carried (9e2a0db)
  • archive: Prune stale remote-tracking refs before counting copies (ce16bc7)
  • workspace: Measure a default-branch workspace against its upstream (5591c93)
  • workspace: Keep a default-branch workspace's base a branch name (0b5ebf1)
  • archive: Fetch a merged pull request's head before measuring it (6e53f63)
  • archive: Never prune a remote that fetches into local branches (9eefc59)
  • archive: Stop calling work merged when commits follow the merge (f1f1fe8)
  • archive: Still prune a remote that excludes some branches (2b30a1d)
  • canvas: Tighten which files a canvas may show (9295e37)
  • canvas: Keep the canvas out of the tab list older builds read (e688ceb)
  • preview: Stop asking to leave the page once the owner declines (c7b7d25)
  • archive: Keep the branch when archive anyway beats the report (8793f5a)
  • archive: Measure again before forcing a branch deletion (5d259b0)
  • archive: Say a check that cannot fini...
Read more

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 21:39
Immutable release. Only release title and notes can be modified.
55605c3

This release has no files attached. Download v1.1.1, which carries these changes.

1.1.0 (2026-11-02)

Bug Fixes

  • preview: Keep --background-capture, and name the window being waited for (a56988f)
  • preview: Forget seeded agent settings before every launch (3eab902)
  • github: Find the pull request of a branch pushed to a fork without an upstream (3009829)
  • github: Keep a failed fork pull request view out of the cache (c6f9a28)
  • preview: Forget seeded agent settings before every launch (28be3a0)
  • transcript: Open a linked file the project checkout holds (9d14d86)
  • transcript: Keep a deleted file on its diff and resolve every entry point (377a8dd)
  • transcript: Open from the checkout only what its git does not track (9990f72)
  • review: Drop a checkout answer that a newer open has overtaken (7f9ad67)
  • review: Let every file the review shows supersede a pending answer (1c23461)
  • sidebar: Record the sea mark before the workspace is adopted (c3ff6e4)
  • transcript: Keep a question card on the question it was walked to (5f2649b)
  • transcript: Move a question card on by its own rule, not by recounting (a2e121f)
  • transcript: Hold issue references to the GitHub name rules (4cdd4a1)
  • transcript: Keep a link label from linking a second time (8e1680d)
  • transcript: Keep the links inside a label whose own target opens nothing (4f02f34)
  • settings: Save merge method picks in order and watch before the first read (664b838)
  • usage: Keep a quota figure when the reset differs by a fraction of a second (3a92bf6)
  • workspace: Start new workspaces from the remote's default branch (da898de)
  • git: Ask the remote the base comes from, and only for a branch it has (b9fdef9)
  • notices: Keep a refused branch rename inside its workspace (009f01f)
  • notices: Title a kept branch truthfully and forget it on archive (d383f78)
  • transcript: Keep the selection bar clickable and its quote faithful (01df515)
  • transcript: Give the selection bar room around its divider (7a791fb)
  • transcript: Queue quotes while a side chat opens and drop stale bars (550d449)
  • transcript: Show the bar again when the same text is reselected (5da76c4)
  • transcript: Read the overlay space name from any isolation (1ea7878)
  • suggestions: Let a suggestion aimed at GitHub start once its clone is added (203a8a2)
  • suggestions: Find the clone a GitHub suggestion means when it is made (475ae3e)
  • github: Name the base the pull request targets (43f42b8)
  • github: Confirm a merge against the pull request's own base (65e2f71)
  • archive: Tear down only the workspaces the store deleted (a59e6d5)
  • transcript: Send again after the owner stops a turn (1d53dd0)
  • review: Classify a refused merge by state and keep its fixes safe (5620ad1)
  • review: Stop a merge round from dropping commits on the server (9711f49)
  • review: Bound the wait and pin the lease to our own push (4a639d3)
  • review: Wait for every check before merging a resolution (1104972)
  • review: Read checks from the pushed head and stop on a moved branch (91322d4)
  • archive: Excuse only the commits a merged pull request carried (9e2a0db)
  • archive: Prune stale remote-tracking refs before counting copies (ce16bc7)
  • workspace: Measure a default-branch workspace against its upstream (5591c93)
  • workspace: Keep a default-branch workspace's base a branch name (0b5ebf1)
  • archive: Fetch a merged pull request's head before measuring it (6e53f63)
  • archive: Never prune a remote that fetches into local branches (9eefc59)
  • archive: Stop calling work merged when commits follow the merge (f1f1fe8)
  • archive: Still prune a remote that excludes some branches (2b30a1d)
  • canvas: Tighten which files a canvas may show (9295e37)
  • canvas: Keep the canvas out of the tab list older builds read (e688ceb)
  • preview: Stop asking to leave the page once the owner declines (c7b7d25)
  • archive: Keep the branch when archive anyway beats the report (8793f5a)
  • archive: Measure again before forcing a branch deletion (5d259b0)
  • archive: Say a check that cannot finish also keeps the branch (730c8f1)
  • archive: Hold a forced deletion to the tip the report measured ([a24dcf7](https://github.com/akira-foundation/un...
Read more

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 18:43
Immutable release. Only release title and notes can be modified.
40cd34c

Unified Dev runs coding agents in git worktrees, in one window.

A project's workspaces sit in the sidebar, each one a real worktree on disk with its own branch. The conversation is in the centre, the terminal and the review pane are beside it, and an agent you start in a workspace works there and nowhere else. Claude Code, Codex, Grok and Copilot are picked up from this Mac as they are installed, with no keys to paste.

What a turn costs is on screen, by project, by conversation and by account. Changes are reviewed in the app, hunk by hunk, and a workspace is archived when it is done, with its branch kept.

This is the first stable release. It needs macOS 26 on Apple Silicon, and it is free and open source under AGPL-3.0. The app is signed with a Developer ID, notarised by Apple and stapled, so it opens without a warning, and it updates itself from these releases.

What follows is what changed since the release candidate. The whole history, every commit since the first one, is in CHANGELOG.md on the repository.


1.0.0 (2026-10-30)

Bug Fixes

  • release: Read a candidate as the stable version it leads to (46a060c)

v1.0.0-rc.1

v1.0.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Oct 09:38
deab431

1.0.0-rc.1 (2026-10-25)

Bug Fixes

  • One split button for merge, so the two capsules cannot differ in height (27e0fa4)
  • Use the page's own ink inside the sent bubble (f4dc139)
  • Leave the keyboard where the click put it, so the sidebar selection has one colour (6d1216a)
  • Stop Home's list claiming the keyboard when it appears (b9ad9ab)
  • Stop a terminal pane taking the keyboard when it attaches (f11fe9e)
  • Put the tab close cross at the tab's own edge and keep the title centred (4ae46e2)
  • Take the view back only for arrivals that land, not for streaming text (39fa073)
  • Match the inspector section's capsules to the window toolbar's (c1c50c3)
  • Draw the toolbar's own rule under the bar (35624df)
  • Switch the toolbar rule on the column match alone (fb7a534)
  • Capture the workspace model weakly in the setup run task (9786382)
  • Verify updates against this copy's signature and hand off the swap at termination (82d68bc)
  • Keep the previous copy when an update cannot be swapped back (4597622)
  • Kill a stopped setup script on time even when the concurrency pool is busy (5a6ba9e)
  • Read the login shell PATH from a sentinel-delimited dump (e14be07)
  • Wait for the login shell probe only when the app has started one (24d534a)
  • Search the PATH again when it changes instead of answering from the last one (c64c8d1)
  • Start the login shell probe without an expression the compiler rejects (da79924)
  • Keep typed text in the script editor when the view updates late (a567376)
  • Let the setup log unfold again after it has been folded (5ae66d7)
  • bridge: Quote fence markers behind any line break, case or spacing (7187d7c)
  • bridge: Route workspace_say replies only through delivered messages (39bb409)
  • bridge: Refuse workspace_say from a workspace whose row has gone (e9f70f4)
  • store: Cancel workspace messages only before their delivery starts (9fd58ad)
  • bridge: Quote a fence marker hidden behind an invisible character (cc35e5a)
  • store: Keep messages already delivered reading as delivered after this update (3e6a4ce)
  • bridge: Answer the chat whose message reached this agent last (f572087)
  • bridge: Say when a message to another workspace can still be taken back (37ff711)
  • preview: Close the gaps the branch review found in scenario seeding (74057b3)
  • tools: Harden the preview guard, the build reservation and the label (76269ba)
  • Let the transcript scroll under the centre toolbar so the bar blurs it like Home (d277bce)
  • Let the transcript scroll under the tab strip with a glass track (ab187e6)
  • Keep tab loading off the toolbar tabs and start the transcript with automatic insets (e90f0b7)
  • palette: Close the gaps the branch review found in the accent (479f40a)
  • workspace: Cut from the primary remote's copy of the base, whatever its name looks like (d7b5c25)
  • workspace: Keep the chosen base when the sheet reloads and when an archived chat is carried on (0d82fd8)
  • preview: Publish the commits the remote is ahead by only after the seeded workspaces are cut (f2676e3)
  • feedback: Send the address with a report that has images (da3ec37)
  • review: Refuse to revert a file while its agent is working (5566e9c)
  • archive: Count an agent waiting for permission as mid turn from the start (6278fd6)
  • review: Centre the review pane's empty states (df5c4ec)
  • sidebar: Show the no projects state once, in Home (87d060a)
  • home: Say that an existing repository will do when there are no projects (b4cafc0)
  • feedback: Remember only a name and an address the endpoint would accept (67ae4d0)
  • archive: Recheck the agent's turn when the unsaved work check fails (400883c)
  • archive: Say a turn is unfinished rather than running when the agent waits for permission (623d900)
  • archive: Ask again when confirming would lose work the question did not show (82bb4b2)
  • archive: Compare what is at risk, not the sentences, when an archive is confirmed (3d5ed6a)
  • archive: Delete the branch only when the confirmed question said it would (07fd599)
  • browser: Let browser tools reach a tab nobody has drawn yet (50d8ecb)
  • transcript: Clear the sending slot when a relayed message lands (82aa7cc)
  • Keep a browser an agent opens from loading until the owner looks at it (8c13754)
  • review: Wrap long lines in the selected file diff ([d82035c](d820...
Read more