Skip to content

Release notes

Not released yet

Coming next

What the next version of Wormhole will bring: everything changed since 1.3.0. It may still change before it's released.

Added

  • Settings → Terminals & sidebar has choices for the changed-files count in a terminal's row: whether it counts the files that terminal changed or the repository's (shown once, on the topmost row of the repository), whether editors and dev servers in plain terminals count as work, what becomes of a file two terminals changed at once, and whether each terminal's files are remembered after a restart (on).
  • Zen mode (View → Zen Mode, ⌃⌘Z): every window shows only the terminal list and the terminal, the title row down to its name and the splits, with no status bar, minimap, lines between the columns or right panel. Nothing is saved or changed: leaving it, or quitting and starting again, brings back the window as it was, each window's panel included, and Settings meanwhile shows your own values with a note and a button to leave.
  • History shows a commit in full when you open it: the whole message, who wrote it and who committed it (when that is someone else), co-authors, the branches and tags that point at it, its parents (click one to open it) and how many files and lines it changed. Copy the hash, short hash, message, subject or author from the buttons there or from a right-click on any commit, or press ⌘C on a commit for its hash. A merge says so in the list, and a long subject shows in full in a tooltip.
  • History shows a commit in full when you open it: the start of its message with a "Show more", who wrote it and who committed it (when that is someone else), co-authors, the branches and tags that point at it, its parents (click one to open it) and how many files and lines it changed. Copy the hash, message, subject or author from the buttons there, from a right-click on a commit or on its details, or with ↩ on the details; ⌘C copies the hash of the commit the keys are on in the list. A merge says so in the list, and a long subject shows in full in a tooltip.
  • Copying says so in a small chip that drops onto the top of the terminal, in the system's own glass: "Copied 3 lines", "Copied command", "Copied path". A program's copy in the terminal you're typing in is said there too, instead of the bar over the terminal's last rows. VoiceOver reads it out, and Reduce Motion fades it in instead.
  • Pi (pi.dev) is recognised as a coding agent: its logo in the sidebar, and Settings → Coding agents installs a small extension so its terminal shows when it is working, waiting on a question, done, stopped or failed.
  • Codex, Amp, goose and Kiro show their own logos instead of two letters.
  • Codex, Kiro, Qwen, Crush and Aider sit on their own colours in the sidebar, as Claude already does, and Gemini's tile is Google's blue.
  • fm chat, the chat with Apple's on-device model that comes with macOS 27, is recognised as an agent (Foundation Models). It has no hooks, so its status is read from the screen. fm respond in a script and fm serve aren't taken for an agent.
  • OpenCode's terminal shows that it needs you when it asks a question, not only for a permission. Repair OpenCode's hooks in Settings → Coding agents once to get it.
  • The first run's Look step asks "How much to show" one question at a time, as a shell prompt's setup wizard does: where to start (Zen, Balanced or Everything), then the title row, the status bar, the minimap, the lines between the columns and the right panel with its tools. Each answer is a small drawing of the window it would give; click one or press 1, 2 or 3. Every answer is applied at once, Back and Start over go around, and a summary ends the walk.
  • Wormhole welcome asks the same questions in the terminal, after the look, in the manner of a shell prompt's setup wizard: one question to a page, the answers numbered and each drawn as a small sketch of the window, applied as you press 1, 2 or 3: the panel to the window around the terminal, the rest to Wormhole's settings, as in Settings. b goes back, r starts over, and Return keeps things as they are. An answer changes only that part, so anything you set by hand meanwhile stays.
  • features in config.json switches the right panel's optional tools off and on ("history": false); Changes and Usage always stay, and a key that switches nothing is said so. Settings has no page for it yet; the first run's walk through how much the window shows will set it.
  • Settings → Import brings your font, colours, shell and more over from Ghostty, iTerm2, Terminal.app, Alacritty, kitty, WezTerm, Warp, Zed and VS Code, lists what doesn't carry over, and shows how each terminal compares (sources checked 2026-10). The first-run "Look" step, in the setup window and in Wormhole welcome, offers "Use my … settings" when it finds one. Nothing of the other terminal is changed or run.
  • Update checks let us count how many copies of Wormhole run, without telling one from another. A check now names the update channel, Apple silicon or Intel and the macOS major version, and the first check of each day and of each month says so; counting those gives the copies running each day and month. There is no ID, so two checks from one Mac can't be linked, and the server keeps only the counts, not your IP address. Counting starts a day after this version first runs, so there is time to turn it off: Settings → Updates → Count this Mac anonymously (anonymous_count), which also shows exactly what a check sends. Off, a check sends the version alone, as before.
  • Settings → Updates has a Privacy group: why update checks are counted, the switch, exactly what a check sends from this Mac and what it never sends, and how many hours are left before the first count.
  • Each release has a download for Apple silicon and one for Intel Macs besides the universal one, and an update downloads only your Mac's architecture, about half the size it was.
  • When Wormhole's download server doesn't answer, an update check asks GitHub, where the releases are published, so updates keep coming. That check sends the version alone and is not counted.
  • Fourteen new Wormhole themes in the website's accent colours: Electric Blue, Vivid Blue, Klein Blue, Cobalt, Azure, Sky, Ultramarine, Volt, Signal Orange, Hot Pink, Ultraviolet, Acid Cyan, Red and White. Each comes in a light and a dark version, built on Wormhole's own palette.
  • Settings → Appearance → Branch colour picks the colour of git branch names and their chips: the theme's own, your primary colour, or any colour you choose (branch_color, branch_color_custom). A colour that wouldn't read on the window is made readable, as the theme's is.
  • You choose what the title row shows and where. Right-click the title row to show or hide each part: the folder, the branch and its status, the terminal's name and status, the agent's model and context, open ports, the pull request, Open in… and the split buttons. Settings → Appearance → Title row lists them too: drag a part to move it, and the parts above the flexible space sit at the row's left, the others at its right (title_row). The four switches for the row's extras became this list; what you turned off stays hidden.
  • Icon buttons answer with their own drawing. The sidebar and right panel buttons show whether their column is open: the column's strip in the icon is filled while it is, drains as the column slides away and fills back in as it returns. The + turns, Refresh and Reset spin their arrows, Copy fills and turns into a check, the split buttons fill the pane they make, the pane zoom's corners swap, and the chevron beside Open in… points up while its menu is open. A right panel tab's icon plays once as the tab opens. Settings → Appearance → Animate icons turns all of it off, and Reduce Motion does too.
  • wh prints JSON by default when WORMHOLE_JSON=1 is set; --text asks for text again.
  • A new terminal in a group without a folder starts where the group was last used, and the + on a group that has no folder asks once whether to use one, suggesting the repository its terminals are in, or else the place that holds most of them. "Use Folder" sets it; the box beside it also makes the group keep only the terminals in that folder. "Not Now" is remembered. "Only terminals in this folder" in a group's menu (checked while it is on) takes the terminals in other folders out of the group, which stay open, lets one leave when it goes to another folder, and keeps out one that is dragged, moved or opened into it from outside. A split stays while any of its panes is in the folder, and a linked worktree of the folder's repository counts as inside, so an agent working in one stays in the group.

Fixed

  • A working terminal's light circles its tile smoothly. It moved in uneven steps, about 20 to 24 a second; now it moves 60 times a second, evenly, and the sidebar's spinners and pulses keep a steady 30.
  • wh new-terminal --command (and a command given to a new window or split) now runs: it is typed once the shell shows its prompt, where it used to be typed at once and was dropped while a terminal kept running behind the app had no shell yet, or lost to a shell still reading its startup files.
  • A terminal's row counts only the files that terminal changed, not the whole repository's: terminals in one repository no longer all show the same ±N, and an agent's row shows what that agent did.
  • In bash, a command's block (its gutter mark, ⌘↑ and wh blocks) no longer disappears after the window is resized: a prompt the shell draws again without a new start mark stays the prompt.
  • A Claude Code terminal no longer shows finished (with a banner and a sound) while its agent waits on work it started in the background: a Monitor, or a build or test a subagent runs in the background. It stays working until that work wakes the agent. A server the agent leaves running on purpose still lets the turn count as finished.
  • An update that downloaded but failed to install (for example, without permission to replace the app) is no longer downloaded again at every automatic check. Settings → Updates offers it with Install update, and the next launch tries once more.
  • The keyboard shortcuts sheet names only the panel tabs there are: with notes off, its row reads "Changes · History · Usage" with each key, instead of naming tabs that don't show.
  • The Theme Studio no longer shows notes and tasks while they are hidden.
  • A newer wh talking to this Wormhole about something it doesn't know gets an answer at once instead of waiting ten seconds.
  • wh send-text no longer types into the terminal it runs in just because WORMHOLE_TAB_ID is missing or wrong: the terminal is told by where the command runs (its place under the terminal's shell, or on its terminal device), not only by what it says about itself. A program that starts a session of its own can still hide where it runs.
  • wh send-text types into a terminal whose program only rang the bell. It is still refused while a coding agent waits for your answer (a permission prompt or a question), as it always was meant to be.
  • A working terminal's light, and the breathing amber edge of one that needs you, no longer start over when its row is drawn again (a row moving, a status changing); they go on from where they were.
  • With more than one screen, a program's request to move its window (CSI 3 ; x ; y t) puts the window on the screen it is on, at that place of it, not at the place of the first screen listed.
  • With more than one screen, a new window opens on the screen of the window it comes from, and a window comes back on the screen it was on, instead of always on the main screen.
  • A terminal moved to a window of its own with its group listens to that window's focus, not the old one's: a program that asked for focus events hears it when the new window is active, and the cursor is filled by it. Its find bar and font size follow it too.
  • A terminal moved to another window with its group is saved under its new window at once, so its notes, tasks and text are not forgotten if the old window saves first and Wormhole stops before the new one does.