# Wormhole 1.4.0

Released October 27, 2026.

### 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 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.

---

Source: https://getwormhole.app/releases/1.4.0
