Skip to content

herminal v0.2.4 — shell-set tab titles

Choose a tag to compare

@hoangperry hoangperry released this 27 May 08:29
· 104 commits to main since this release

Fourth stub-from-spike fix in the v0.2.0 → v0.2.4 audit window. `GhosttyApp.handleAction` was a one-case switch (only handled `RING_BELL`); SET_TITLE / SET_TAB_TITLE returned false, so OSC 0/2 escapes from vim/htop/starship-style prompts were silently dropped — the tab strip stayed on "herminal" no matter what the shell wrote.

Fix

  • `GhosttyApp.handleAction` routes SET_TITLE + SET_TAB_TITLE through `ghostty_surface_userdata` → `ClipboardOwner` protocol → `surfaceTitleDidChangeNotification`.
  • `WorkspaceView` observes, finds the matching pane by identity, updates `TerminalSession.title`, rebuilds the tab strip.
  • Empty payload falls back to "herminal" (OSC 0 with empty string conventionally clears the title).

Try it

```bash
printf '\033]0;mytab\007'
```
The tab label switches to `mytab`.

Four-day audit pass

Version Stub fix
v0.2.1 `read/write_clipboard_cb` (clipboard moves bytes)
v0.2.2 mouse events → libghostty (drag-select works)
v0.2.3 `close_surface_cb` (`exit` closes the pane)
v0.2.4 SET_TITLE / SET_TAB_TITLE actions (this release)

Each one survived 12+ months because the dogfood checklist never explicitly verified the round-trip end-to-end. The `verify-clipboard.sh` (v0.2.2) and `verify-title.sh` (v0.2.4) regression-guards now catch any future regression on day one.

Install

```bash
curl -LO https://github.com/hoangperry/herminal/releases/download/v0.2.4/herminal-v0.2.4.dmg
open herminal-v0.2.4.dmg
```

Signed + notarized + stapled.

Requirements

  • macOS 14.0 (Sonoma) or later
  • Apple Silicon (arm64)