2026.34.1.md

Two crashes, and ⌘Z belongs to the terminal again

Version 2026.34.1 · August 17, 2026

Wortel could quit on ⌘Z, and the longer the window had been open the likelier it was. This one came in from a window that had been up for five days. Typing in the commit box was registering its undo steps against the window rather than against the box, and those steps outlived the box every time the panel closed or you moved to another session. Pressing ⌘Z afterwards, with the terminal focused and the commit box nowhere on screen, reached for a step whose editor was long gone, and the app went down on the spot. The commit box keeps its own undo now, so nothing accumulates on the window and there is nothing stale left to reach for.

  • ⌘Z goes to your shell again. The same bug had quietly taken the key: once you had typed a commit message, the Edit menu’s Undo claimed ⌘Z for itself, and the terminal’s own undo (clear the line you are typing) stopped happening. Undo inside the commit box works exactly as it did.
  • Closing the last session no longer crashes on the way out. The window was being freed the instant it closed, while the app was still holding on to it, so anything that ran in the gap could land in memory that had already gone. Updating the title to say no session is selected was enough to do it. It only ever surfaced once the window was gone, which is the least useful moment to hear about it.
2026.33.2.md

The spinner tells the truth, and a branch you can actually pick

Version 2026.33.2 · August 13, 2026

The sidebar’s busy spinner had drifted away from the truth in two directions at once, and if you keep several agents open you will have seen both. A working session showed nothing, while a session that finished an hour ago kept spinning. The first was a marker list that had gone stale: Wortel recognised the braille spinner agents used to animate in their window title, and Claude Code now animates a different one, so it read every frame as “not working” and fell back to guessing from the screen. The second was worse in a quieter way. When the guessing tier lost sight of a session, which a window resize was enough to cause, it forgot that it owed that session a “stopped” and the spinner never came down. Looking at the session to see what it meant was itself one of the ways it got stuck, so it could never recover.

  • An agent that outlives the app is still an agent. Sessions survive quitting Wortel, but the record of which agent was running in each one was cleared at launch, on the assumption that anything still alive would re-announce itself. A long-running agent never does, because it never returns to a shell prompt. So a session you left running for days came back with no agent name in the sidebar and no activity detection at all, and the longer it ran the less Wortel knew about it. The record now survives when the shell it belongs to does.
  • New Session on Branch is a proper dialog now. It was an alert with a pop-up button whose menu carried a “Filter…” item that opened a list on top of it: a menu, to get to a filter, to get to the branches. It is one panel with one searchable list, and the list is the same one the toolbar’s branch switcher uses, so the two can no longer disagree about what a branch list is.
  • Typing a colleague’s branch name checks out their branch. It used to create a new branch forked from trunk wearing their name, with none of their work and nothing on screen to say so. A branch that exists on a remote is now recognised as a branch that exists, checked out with its history and set to track, and the dialog says which remote it came from before you commit to it.
  • A new branch starts from trunk as it is now, not as of the last time you happened to pull. Wortel fetches while the dialog is open, so the fork point is current by the time you press Create, and it gives up on a slow fetch rather than making you wait on it.
  • The first push from a new worktree session works. A branch forked from origin/main was inheriting origin/main as its upstream, which git then refuses to push to under its own default settings. New branches start with no upstream, and the first push sets the right one.
  • Remote branches no longer hold up the list. On a large repository they are the slow half by a wide margin, so the picker opens on your local branches and fills the rest in underneath, saying so while it does.
2026.33.1.md

Anonymous usage data, and one switch to turn it off

Version 2026.33.1 · August 10, 2026

This is the release where the app starts reporting anonymous usage data. It counts which features get used, so that questions like “does anyone open the Files pane” have an answer at all. That is the whole of it: no session names, no directories, no commands, nothing from your screen. It is on by default, and the first time you open this version the ⓘ at the bottom of the sidebar says so and offers the switch that stops it. DO_NOT_TRACK is honoured, and wortel.sh/privacy lists every event that exists, in full.

  • A new branch now forks from trunk, not from wherever you happened to be. Opening a session on a new branch forked the current one, which in a worktree session meant quietly inheriting that worktree’s branch. The dialog asks now, with a From row that defaults to the repository’s own default branch. wortel new --branch does the same. If a script relied on the old behaviour, it wants --from HEAD, which is now how you ask to stack on the current branch on purpose.
  • A worktree session is marked in the sidebar. A session opened on a branch is renamed to that branch, so it read as an ordinary shell in a directory. It carries the branch glyph now, the same one the toolbar chip uses, because which kind it is decides where your last commit went.
  • The branch chip fits its name instead of breaking it in half at a hyphen and standing taller than everything beside it. Long branch names truncate from the tail, and short ones no longer sit in a chip half full of nothing.
2026.32.3.md

The git panel keeps up with a worktree

Version 2026.32.3 · August 9, 2026

Two fixes to what the panels tell you, both in the case the app is most useful in: an agent working on its own worktree, unattended. If you run sessions that way, this is the release that stops them reporting stale work.

  • A worktree session’s git panel was blind to its own commits. A linked worktree keeps its HEAD and index under the primary checkout, so committing there moved nothing the panel was watching: the Changes list went on offering files that had been committed minutes ago. It watches that directory now. The primary checkout had the mirror of the same problem.
  • The file tree lost its colours. A changed file is supposed to colour every folder above it, so you can see where the work is without opening anything, and ignored entries like node_modules should stay grey. Neither happened when a session started at a repository root, because the root resolved a beat after the listing that needed it.
  • Release notes now appear in the update dialog, and the whole changelog is at wortel.sh/updates.
  • The new-session button sits on the corner’s diagonal instead of leaning into it.
2026.32.2.md

Sessions that outlive the app

Version 2026.32.2 · August 9, 2026

The largest change since sessions themselves. Your shells now run under a keeper process outside the app, which means the app is no longer the thing keeping them alive. Quit Wortel, or have it crash, and the agent in session three keeps working. It is on by default.

  • Process survival. The ptys live outside the app. Closing the window is no longer a decision about the work.
  • A wortel command. Open and drive sessions from the terminal. wortel --version reports the app it is talking to, which is the one mismatch worth knowing about.
  • A worktree per session. Point several agents at one repository without them standing on each other, with a branch picker for choosing where each one lands.
  • A preview window. Open a file in its own window: Source mode with syntax highlighting, ⌘F, images sized against the window, and markdown on GitHub’s type scale.
  • Hold the pointer over a commit in History to read the whole message.
  • A collapsed sidebar folder says what it is hiding, and the Dock badge asks for the permission it needs.
  • Nested command-line tools are signed on their own terms. Without that, notarization rejects the app, and an unnotarized app is one nobody can open.
2026.32.1.md

The file tree earns its keep

Version 2026.32.1 · August 6, 2026

A week of using the file tree, then fixing what using it exposed.

  • Move to Trash, the one file operation the shell does worse than the Finder.
  • Hold option to take the whole subtree.
  • The chevron is a target you can hit, and it acts on press.
  • A directory watch follows an inode, so a directory replaced wholesale (a checkout, a rebuild) no longer goes silent.
  • A clean work tree in Changes is an empty state, not a one-line list.
  • Each inspector pane keeps its own width, and that width wins the race at launch instead of being overwritten by the column’s.
  • The branch chip shrinks when the toolbar runs short of room, instead of taking the whole section with it.
  • Attention stopped announcing turns that nobody took.
  • wortel.sh rebuilt around a single window: a scroll tour through the app, copy that sounds like a person, and a mobile layout that gives each section its own frame.
2026.31.5.md

Files

Version 2026.31.5 · July 31, 2026

  • Files, the project as a tree, beside Changes and History. Drag a row into the terminal and the escaped path lands at your prompt.
  • A toolbar menu fix: menu items built from a closure survive being copied, which is what the toolbar does to them.
2026.31.4.md

One slot for the dot and the close button

Version 2026.31.4 · July 30, 2026

  • The status dot and the close button share one slot, so a row no longer moves under the pointer when a session goes busy.
  • Release versions are derived from the live update feed instead of a local file, which is what made 2026.31.2 ship twice.
  • Publishing a release redeploys wortel.sh, so the version the site advertises is the version you can actually download.
2026.31.3.md

A version everyone could take

Version 2026.31.3 · July 30, 2026

Nothing in the app changed in this release.

2026.31.2 had been published twice, as two different binaries, because the version counter was derived from a local record rather than the live feed. Sparkle only ever offers a strictly newer version, so anyone holding the first of the two had nowhere to go. This release gave them somewhere. The cause is fixed in 2026.31.4.

2026.31.2.md

Attention, for agents that say nothing

Version 2026.31.2 · July 30, 2026

The point of this release: most agents emit no progress signal at all, and the ones that do are inconsistent about it. Attention now works from what the session draws.

  • Agents that announce nothing are noticed anyway.
  • Agents launched through a wrapper are recognised as agents.
  • Paused progress and blank braille frames no longer read as work in flight.
  • A softer, distinct chime when a turn ends.
  • The unread ring stays visible while a session is busy.
  • ⌘⇧[ and ⌘⇧] switch sessions, alongside ⌘⌥↑ and ⌘⌥↓.
  • A close button on session rows, on hover.
  • The in-app browser pane is gone. It was one pane more than the window wanted.
2026.31.1.md

Copy code out of a diff

Version 2026.31.1 · July 28, 2026

  • Diff lines are selectable, and copy as code: no line numbers, no gutter, nothing you have to strip out before pasting it back into the terminal.
  • A one-command throughput benchmark that finds the terminals you have installed and compares against them.
  • The git toolbar stops fighting itself for space.
  • The running-agent subtitle is gone from session rows; the status dot already said it.
2026.30.3.md

Agent resume that survives ⌘Q

Version 2026.30.3 · July 22, 2026

  • Resume covers eleven agent CLIs across zsh, bash and fish, rather than just claude.
  • Quitting cleanly used to erase the record of what had been running, which is precisely when you want it. It does not any more.
  • Liveness is read from the process table, failing open: an agent it cannot see is assumed to be there.
  • An in-app browser arrived as a third inspector pane. It was removed again in 2026.31.2.
2026.30.2.md

Markdown, rendered

Version 2026.30.2 · July 21, 2026

  • A native markdown renderer in the inspector column. Click a path in the terminal and the file opens there, rendered, with its code blocks highlighted by the same stack the diff view uses.
  • ⌘T works as a hidden alias for New Session, for the muscle memory every other terminal built.
  • The landing page shows the current version under the download button.
2026.30.1.md

Fetch and push without leaving the window

Version 2026.30.1 · July 20, 2026

  • Fetch and push from the git toolbar.
  • Shell integration installs the ghostty terminfo on the far side of an SSH connection, so a remote session renders like a local one.
  • wortel.sh gained the embedded demo, a grid the content snaps to, and a round of accessibility fixes.
2026.29.11.md

Images in History, and an accordion that holds up

Version 2026.29.11 · July 16, 2026

  • Images render inline in the accordion, sized against the pane rather than against themselves.
  • One scroll for the whole commit, with file headers that stick as you pass them.
  • A correctness and performance pass over the accordion.
2026.29.10.md

Every commit opens

Version 2026.29.10 · July 16, 2026

  • Click a commit in History and its changed files unfold underneath it, with the diff for each one loaded when you ask for it.
  • Native text-editing shortcuts work in the rename field.
  • New layered app icon.
2026.29.9.md

Syntax highlighting in diffs

Version 2026.29.9 · July 16, 2026

  • Diffs are syntax highlighted with tree-sitter, per hunk, off the main thread.
  • A native branch chip in the toolbar, and right-click menus that open instantly instead of after a beat.
  • History is branch-aware, and draws its log the way Fork does.
  • The git panel toggle folded into the Changes and History buttons: one control fewer, in the place you were already aiming.
2026.29.8.md

Walking the sidebar

Version 2026.29.8 · July 15, 2026

  • ⌘⌥↑ and ⌘⌥↓ move to the previous and next session, skipping folders you have collapsed.
  • Shell integration reports the working directory as localhost rather than $HOST, which is what makes the path resolve.
2026.29.7.md

The git panel belongs to the session

Version 2026.29.7 · July 15, 2026

  • Git panel visibility is per session. A shell in a repository wants it; the one in your home directory never did.
  • Renaming selects the leaf of a name, not the folder prefix in front of it.
  • wortel.sh rebuilt around the root theme.
2026.29.6.md

History grows a graph

Version 2026.29.6 · July 15, 2026

  • History draws the branch graph beside the commits, and pages them in as you scroll.
  • Large repositories stay responsive: the cost tracks what is on screen, not what is in the repository.
  • Sensible default widths for the side panes.
2026.29.5.md

An AppKit shell, and History arrives

Version 2026.29.5 · July 15, 2026

The shell around the terminal was rewritten in AppKit: sidebar, terminal and git panel as one three-pane layout rather than a SwiftUI split view doing an impression of one.

  • History, a read-only commit list, behind a pane picker in the toolbar.
  • Sessions moved to a native outline view. Names are derived from the directory, and a slash in a name makes a folder.
  • Session rows are a single line again.
  • The git panel divider is draggable and remembers where you put it.
  • Agents that were running when you quit (claude, to start with) are picked back up on relaunch.
  • New sessions open in your home directory instead of inheriting the launcher’s /.
2026.29.4.md

Commit messages, drafted on your Mac

Version 2026.29.4 · July 14, 2026

A commit box worth typing into, and a first pass at not writing the message yourself.

  • A native commit-message editor in the Changes pane, with drafts generated on device by Apple Intelligence. The prompt is budgeted, so a large diff cannot run away with it.
  • Right-click any file in Changes for the actions you expect.
  • Richer, faster signals in the sidebar for what an agent is doing.
  • New app icon artwork.