Changelog
What’s new in each Ghostties release, newest first.
Beta.15 and earlier: Auto-updates aren't reliable yet in early betas. Download the latest release manually from the download page.
v0.5.0-beta.26
October 12, 2026The sidebar gets a third state, a narrow rail that morphs from the full list and opens when you rest on it, a glass tray, and one list of projects, and session status is back at a glance: spinner, ?, check and cross glyphs return on the right of every row in the full list, and are centered in the rail. There is now one composer, a centered single line, and Cmd+T can resume a past session from it. Ghostties also moves onto the latest upstream Ghostty.
Added
- A collapsed sidebar rail. The sidebar now has three states: the full list, a narrow rail of session icons, and fully closed. Cmd+S toggles between the full list and the rail; Cmd+Shift+S closes the sidebar completely. Dragging the edge snaps between rail and full width. It is one list that resizes in place, not two views swapped: labels fade out in reverse reading order on the way to the rail and drift back in on the way out, and the terminal resizes in step with the sidebar edge. The motion is a spring; opening overshoots slightly, closing doesn’t. With Reduce Motion on, it snaps with a short fade. In the rail, status glyphs are centered. Session shortcuts (Cmd+W, Cmd+1–9, next and previous session and project) work there too.
- Rest on the rail to open the sidebar. Hold the pointer on the rail for just over a second and the full list opens, pushing the terminal over just like Cmd+S, then closes shortly after the pointer leaves. Clicking a session acts, then collapses the sidebar; clicking elsewhere collapses it too. Cmd+S while it’s open keeps it open. The rail no longer shows a popover on hover.
- Hover a session in the full list to see what it needs or is doing. A session that needs approval shows what it wants to run and why. A running session shows your last prompt and the current step. Esc dismisses it while your pointer is on the card.
- Resume a past session from Cmd+T. In the composer, press ↓ to list your past sessions under Resume, then your Templates below them; typing filters both. Each section shows three rows, then a “Show N more” row. Return on a past session resumes it.
- View → Refresh Appearance re-applies the current light or dark appearance to every terminal, for a window that still shows the wrong colors.
- Templates are managed in Project settings. Right-click a project, in the list or the rail, and choose Settings…. Create, edit, duplicate, pin and delete templates in a Templates section there. Templates are shared across projects, and changes apply immediately, without Save or Cancel.
- Rail buttons are announced by VoiceOver with the session name, project and status.
Changed
- Status glyphs are back on session rows, on the right edge: a spinner while a session is working,
?when it needs you, a check when it’s done, a cross on error, and nothing when it has stopped. Sessions listed under a project in the Projects tab show the same glyphs instead of a ghost. - There is now one composer. The New Session button in the tray and Cmd+T open the same centered single-line composer.
- Cmd+Shift+E no longer toggles the sidebar. Cmd+S toggles it (it already worked as a hidden shortcut), and Cmd+Shift+S closes it completely.
- The sidebar is wider by default, 256pt instead of 220pt.
- The default theme now follows macOS. With no theme set, Ghostties uses Apple System Colors and switches between light and dark with your system appearance. A theme in your config still wins.
- Ghostties now builds on the latest upstream Ghostty (Zig 0.16), bringing in its fixes, including word selection that stops at hard line breaks and a crash fix for tmux
list-windows. - New Session moved to a + button in a glass tray at the bottom of the sidebar, shared by the full list and the rail. The tray is two Liquid Glass capsules (solid when Reduce Transparency is on): New Session and New Project (a folder icon) in one, the sidebar toggle in the other. New Project opens the folder picker, then the composer for the new project. Hovering a button highlights it: the sidebar toggle fills its whole button, and the + and folder highlight has a visibly rounded corner. The session list scrolls under the glass instead of stopping above it, and the glass has a light and a dark look: the dark tray tints dark with a dark rim.
- Projects are one list by default. Each project is a header with a monogram tile, its name and its session count; click it to fold the project, or drag it to reorder projects. A project with no live sessions shows dimmed with a count of 0. Sessions is still its own view (Cmd+Shift+2). In the rail, each project’s sessions sit in a column headed by its monogram.
- Easier-to-read sidebar text. Secondary text and project cards in the sidebar have more contrast in light and dark mode. In light mode a project card is now a lighter lift instead of a darker shade.
- Projects with no sessions now read at accessible contrast.
- Pin projects to the top. Right-click a project and choose Pin to keep it at the top of the sidebar and the rail; Unpin puts it back in its place. Dragging keeps a project with the pinned or unpinned ones it sits among.
- The selected session row is tinted, with a faint shimmering rim, in the full list and in the rail. The same chip slides between rows as you move through them, in the rail and in the Sessions and History lists.
- Sidebar sizes sit on an 8pt grid. Project and session tiles are 32pt in the full list and 40pt in the rail, with 16pt icons and status glyphs. A large project tile grows its header so the card still encloses it.
- Smaller sidebar motion is spring-driven too. Folding a project and its chevron, the count badge on a folded project, the hover lift on tray buttons, and the gap that opens as you drag to reorder all settle with a light spring. Opacity never bounces.
- Terminals now have 20pt of padding by default. Your own
window-padding-xandwindow-padding-ysettings still win. - A fully closed sidebar opens as a hover bar. Rest the pointer at the window’s left edge and the full sidebar slides out over the terminal in its own card. Drag its edge to resize it. It closes when the pointer leaves it. Cmd+S, Cmd+Shift+S or the View menu still reopen it for good, and resting on the rail still opens the full list.
- The closed-sidebar hover bar now takes the sidebar’s background and casts the canvas shadow over the terminal.
- Rounder corners. Terminal, browser and History cards and the tray pills now share 12pt corners. The tray’s shadow is lighter and sits lower in light appearance.
- Return on a project opens a shell. In the composer, highlight a project and press Return to start a shell there. Clicking a project still switches the composer to it.
Removed
- The zero-chrome composer style and the old template card are gone. A saved composer style setting is ignored.
- The “Experimental Composer Field” item in the View menu is removed. The single-line composer is the only composer, so there is nothing left to switch.
- Sessions can no longer be pinned; pinning is for projects. The sidebar and History no longer offer to pin a session, and sessions you pinned before show in their project like the rest. Pinned templates in the composer are unchanged.
- Removed the Orchestrator template and the Linear Sync preset. Built-in templates are now Shell, Claude Code, Codex and Browser. Past Orchestrator sessions still show in the sidebar and reopen as Claude Code.
- The Linear Sync preset an earlier beta copied into
~/.ghostties/presetsis removed on upgrade, unless you edited it.
Fixed
- Release builds no longer ship with code-coverage instrumentation. The app no longer drops stray
default.profrawfiles into the folder it ran from. - Every terminal follows macOS light and dark. Sessions in the background, and windows that were hidden, kept the old colors after you switched appearance.
- A session moves to the project whose folder it is working in. When you
cdinto another project’s directory, its sidebar row follows. - Typing a project’s name in the composer now reaches that project.
- The first Return on a new branch creates its worktree. Under load it could be rejected, and you had to press Return a second time.
- Deleting a template that sessions use now names those sessions in the warning (the first three, then “and N more”).
- Closing the embedded browser no longer crashes the app.
v0.1.0-beta.25
September 15, 2026The composer gets a new single-line look, on by default: a floating field with no card chrome, previewing your destination as ghost text. A zero-chrome style is also available for anyone who wants the field with nothing else on screen. The ghost-text field itself is on for everyone. A session’s terminal now survives its agent exiting. The sidebar gets a rebuilt session view: unified Active / Inactive / Archive sections, pinning and drag-reorder, Resume alongside Start Fresh, and a quieter status glyph in place of the ghost icon.
Added
- Pin sessions in the sidebar, and drag between sections. Dropping a session on Active relaunches it; drop zones and auto-scroll make reordering visible as you drag.
- Resume picks up where a session left off. The row’s context menu offers Resume (when a saved conversation exists) alongside Start Fresh, for both Claude Code and Codex sessions.
- A zero-chrome composer style — the field alone, no card, no results list until you type — for anyone who wants the minimum possible surface.
Changed
- Single-line is now the composer’s default look, replacing the card-based style: a floating field that previews your destination as ghost text, with results appearing only once you start typing or press ↓. The old card-based composer is gone.
- RECENT / TEMPLATES / PROJECTS / COMMAND section headers are back above the composer’s results list, so the list reads as browseable groups again instead of one flat stack.
- A thin footer strip shows only the key chords that are live right now (Return, Tab, arrows, Undo), replacing the old static four-chord row — and it never doubles up with an error message or the new-template naming prompt.
- The ghost-text composer field is now on for everyone, previewing your destination — project, branch, template — as you type instead of requiring you to turn it on first. The old toggle in View → Experimental Composer Field still exists if you want it off.
- Tab in the composer accepts one segment plus a space, never a chevron. Typing a name and hitting Tab used to insert
>, which could get read as an explicit branch declaration you didn’t intend. - Active, Inactive, and Archive now follow one rule everywhere — a session or project counts as Active exactly when its terminal is alive, in both the session and project views.
- A row’s status now shows as a single glyph — a spinner while it’s working,
?when it needs you,✓when it’s idle or done,✕on error — replacing the ghost-based indicator.
Fixed
- Typing a branch name that doesn’t exist now offers to create it, instead of silently trying to run it as a shell command. The “Run” reading still shows as a separate option alongside it.
- Abandoning a just-created template’s edit sheet no longer leaves a junk, unconfigured template behind. Opening “New template” and then dismissing without saving (Cancel, Esc, or clicking outside) used to persist an empty
command: nilrow forever. - Closing a session after its agent exits works like closing any other shell. The terminal used to show “Process exited. Press any key to close the terminal.” the moment Claude Code (or another agent) quit; it now drops back to a normal shell prompt and closes the same way a plain terminal session does.
v0.1.0-beta.24
August 31, 2026The session composer’s field row gets trailing project/branch controls in place of the old resolution line, template pinning, and an experimental ghost-text autocomplete field you can opt into. Sidebar status now reads what Claude Code is actually doing rather than guessing at it from terminal text.
Added
- Pin templates in the composer. Right-click a template row for Pin/Unpin — pinned templates stay at the top of the list, ahead of your recents.
- An “Add project…” row where the composer used to just say “No matches” if you have no projects yet.
- Experimental ghost-text composer field, opt-in from View → Experimental Composer Field (off by default). As you type a session name, it previews the full destination — project, branch, template — as greyed-out ghost text, and Tab accepts one segment at a time instead of committing the whole thing at once.
- Typing
>to target any branch in the repo now works, not just branches that already have a worktree — Ghostties offers to create one on the spot if it doesn’t.
Changed
- The composer field row drops its resolution-line text in favor of two small trailing buttons — a chevron for the project picker, a branch glyph for the branch picker — shown inline instead of underneath the field.
- Template rows in the composer are single-line now, with the pin glyph or “recent” label trailing instead of a subtitle underneath.
Fixed
- Sidebar status now reflects what Claude Code is actually doing, instead of inferring it from terminal output — an idle session stops reading as if it needs you. Requires a one-time hook setup in
~/.claude/settings.json; the snippet ships in~/.ghostties/hooks/ghostties-status.sh. - The composer’s results list no longer opens with dead space below a short list, and stops growing past its cap on a long one.
- The composer card now resizes cleanly to fit its content at every window width, instead of clipping or leaving extra space.
v0.1.0-beta.23
August 17, 2026A small fix release: idle Claude Code sessions stop reading as if they need you, and sidebar session names stay in sync.
Fixed
- Idle Claude Code sessions no longer show up as needing your attention. Claude Code’s terminal never emits the shell-prompt marker Ghostties used to detect “waiting for input,” so every session went quiet and immediately looked like it needed you. Silence with no other evidence now reads as idle for agent sessions; plain shell sessions are unaffected.
- Session names fully shed the leading status glyph. A prior fix stripped it from new names, but a title shaped like “repo | ✳ Claude Code” — the actual production shape — could still leak the glyph in the second segment, and already-stored names with a glyph baked in weren’t cleaned up. Both are fixed now, including self-healing existing names on their next sync.
- The Sessions tab shows a session’s current name and status without needing a tab toggle first. Renaming or a terminal title change could sit stale on screen until you switched away and back.
- Guarded against a rare case where a window’s terminal or browser shadow could disappear. Unverified against a live repro, but a code-level gap (shadow path rebuilding from empty bounds) is now closed defensively.
v0.1.0-beta.22
August 9, 2026The Sessions tab gets a real Inactive zone, session keyboard shortcuts, and a titlebar fix that finally sticks.
Added
- Active, Inactive, and Archive zones in the Sessions tab. A session you’ve stopped now lands in its own Inactive zone instead of Archive, so “still running,” “stopped this launch,” and “from a while ago” read as three different things instead of one crowded list.
- Keyboard navigation for sessions.
Cmd+Topens a new session,Cmd+Wcloses the current one (confirming first if it’s still active, and closing the window if nothing’s left running), andCmd+1throughCmd+9jump straight to a session by its position in the sidebar. - A built-in Codex template alongside Shell and Claude Code in the New Session picker.
- Terminal install options. Install without the DMG:
brew install --cask seansmithworks/tap/ghosttiesornpx ghostties-install.
Changed
- One “+ New” button per tab. Projects and Sessions each get a single labelled button for starting something new, replacing the old icon-only button and full-width row.
- The overlay sidebar floats like the others now. In overlay/hover mode the terminal card had lost its inset, rounded corners, and shadow; it now matches the pinned and closed modes.
- Tasks removed from the Sidebar View menu. Projects and Sessions remain.
- The session context menu’s “Remove” is now “Delete.” It permanently deletes the session with no undo — the old label read like it moved the session to Archive instead.
Fixed
- The window titlebar now matches your actual terminal theme. It was drawing from a fixed color instead of your theme’s real background, so it could look mismatched against the terminal below it. It now always tracks the same background your terminal renders.
Cmd+Shift+[andCmd+Shift+]cycle sessions in the order you actually see them when the Sessions tab is open, instead of the Projects tab’s order.- Stopped sessions land in Inactive instead of vanishing. They were being swept straight into Archive as soon as they stopped.
- Stopping one session no longer disturbs other running sessions. A stale internal cache could hold back status updates for sessions that were still running, whenever a different session had just stopped.
- Archive stays collapsed when there’s nothing active, instead of forcing itself back open every time you close it.
- Archive sorts by when a session was last active, not by the order it happened to be added.
- Session names no longer echo just the repo name plus boilerplate — a title like “my-project | Claude Code” duplicating the row’s own subtitle.
- Session names no longer flicker through spinner characters, bare directory names, or truncated paths. Claude Code’s terminal title changes rapidly while it’s working; Ghostties now filters those out and keeps only genuinely informative titles.
- Pressing Esc while renaming a session reverts it, instead of committing whatever you’d typed so far.
- The sidebar re-clamps its width correctly when you shrink the window, so it can no longer end up wider than the window itself.
- Next Project and Previous Project grey out in the menu when there’s nothing to cycle to, instead of sitting there as if they’d do something.
v0.1.0-beta.21
August 1, 2026The Sessions tab gets its own character, names that keep themselves current, and a round of security hardening.
Added
- Session names that keep themselves current. A session’s name in the sidebar now follows the title Claude Code sets, so a row tells you what that agent is actually working on instead of showing a generic label. Rename a session yourself and your name wins — Ghostties stops syncing that one. Right-click and choose Sync name automatically to hand it back.
- A ghost for every session. Each session in the Sessions tab now has its own ghost character, tinted by status, in place of the plain dot. A session keeps its ghost across relaunches.
- Collapsible Active and Archive sections. The Sessions tab splits into Active and Archive, and each one folds away. Ghostties remembers which you left open.
Changed
- The Sessions list holds still. Rows used to reshuffle themselves by most recent activity, so the list rearranged under you while you were reading it. Order is now stable.
- Status colors across the sidebar. Green means working, blue means your turn, gold means a decision is waiting, orange means long-running, red means something went wrong.
Fixed
Cmd+Shift+[andCmd+Shift+]cycle sessions again. The shortcut only worked when focus was outside the terminal — which is almost never, in practice. The terminal was claiming the key combination for its own tab switching before the menu ever saw it.
Security
- Updated Sparkle to 2.9.4, which fixes two vulnerabilities in the update framework (CVE-2026-47121 and CVE-2026-47122).
- MCP server discovery now reads only your own configuration. Ghostties also used to look for MCP configuration inside the project folder you opened, so opening someone else’s repository could offer to launch a program that repository shipped. It now reads from
~/.ghostties/only. - Narrowed what the app is permitted to do. The shipping build no longer requests two hardened-runtime exceptions it never needed.
- Session launcher scripts are cleaned up when a session ends, and anything left behind for more than a day is swept away at launch.
- Fixed a path-handling flaw in
gt donethat let a crafted task name reach files outside the task directory.
v0.1.0-beta.20
July 20, 2026Quality-of-life improvements to the workspace sidebar — resize it, rename sessions in place, and jump between live agents from the keyboard.
Added
- Drag to resize the sidebar. Grab the sidebar’s trailing edge and drag to make it wider or narrower. Ghostties remembers your width separately for the Sessions and Tasks views, so each stays how you left it.
- Rename, stop, and relaunch sessions from the Sessions tab. Right-click any row in the Sessions tab for a menu matching the project view — Rename, Stop, Relaunch, Remove. Renaming happens inline, right on the row.
- Cycle through live agents from the keyboard.
Cmd+Shift+]/Cmd+Shift+[now step through your running sessions in sidebar order (or through task zones in Tasks view). Project cycling moved toCmd+Ctrl+]/Cmd+Ctrl+[.
Changed
- The Sessions list trims itself at launch. It used to keep every agent session you ever started. It now keeps everything from the last 30 days plus each project’s 15 most recent, so the list stays tidy without touching any of your actual work.
v0.1.0-beta.19
July 5, 2026The workspace stays responsive when several agents are running at once.
Fixed
- Running multiple agents no longer pins the CPU. With a few Claude Code sessions streaming at the same time, the workspace could peg a core and beachball the app until you force-quit it. The sidebar was rebuilding itself on every terminal-title change — many times a second, per session — and redoing that work for every project row whether or not anything had actually changed. Activity updates are now throttled, and the sidebar only redraws the rows that changed. The app keeps up under real multi-agent load.
Performance
- Task list reloads incrementally — only the task files that changed are re-read, instead of re-parsing every task on any file-system event.
v0.1.0-beta.18
June 19, 2026The first build delivered to existing users over the air — it confirms auto-updates work end to end. No other changes from beta.17.
v0.1.0-beta.17
June 19, 2026Auto-updates work now, and the workspace sidebar no longer freezes the app.
Fixed
- Auto-updates now work. “Check for Updates” was silently doing nothing in beta.16 — a permission-request wedge stalled Sparkle, and the in-app update notification never rendered in the workspace window. Ghostties now checks for updates in the background and shows a notification pill when a new version is ready. One catch: because the updater itself was broken in beta.16 and earlier, you’ll need to install this build manually — but updates after this one will arrive on their own.
- Sidebar no longer freezes the app. Opening the project sidebar could peg the CPU and beachball the window. Fixed.
v0.1.0-beta.16
May 18, 2026The tasks sidebar is now fully wired up, with six status zones, Linear preset support, and a complete gt CLI.
Added
- Six-zone task sidebar — Inbox, Backlog, Running, Needs You, Review, and Graveyard lanes are all live. Done tasks no longer appear in Inbox.
- Linear Sync preset — a “Linear Sync” template in the New Session picker pre-configures the MCP server with your Linear workspace. Source dots show indigo for Linear-sourced tasks, sage for shell tasks.
set_task_fieldsMCP tool — agents can write back worktree path, PR URL, branch name, and PR state directly into task files.- Sessions tab — sidebar now has a recents tab showing recent terminal sessions alongside tasks.
- New Session template picker — flyout menu now shows available agent templates when starting a new session.
- Sidebar View submenu — Sessions/Projects toggle moved to the View menu and grouped with other sidebar layout options.
- Wordmark animation — assembly/erosion loop for empty terminal panes. Off by default; opt in with
defaults write com.seansmithdesign.ghostties ghostties.emptyStatePhysics.wordmark -bool true. gt smoke— new subcommand for automated task-state verification.- Claude Code template default — new sessions default to the Claude Code agent template.
install-gt.sh— installer script for thegtCLI with PATH setup guidance.
Fixed
- “Check for Updates” visibility — progress and result messages now appear correctly in hidden-titlebar and tabbed windows (previously only showed in standard windows).
- Auto-update channel — channel is now user-controllable via
defaults write com.seansmithdesign.ghostties ghostties.autoUpdateChannel beta(orstable/tip). Previously hardcoded. gt donespeed — done command is noticeably faster with cleaner progress output.
Performance
- Suppressed 1Hz sidebar re-render when session states haven’t changed — reduces CPU overhead while Claude is running.
v0.1.0-beta.15
May 5, 2026Polish and stability fixes following the beta.14 smoke test.
Fixed
- Dark mode titlebar now matches the canvas background color (previously showed a mismatched gray)
- Fullscreen icon position in the toolbar corrected
- Canvas corner radius is now consistent on all four corners
- Shadow depth between the browser panel and terminal panel is now consistent
- Sparkle update-available toast is no longer shown in release builds (debug-only now)
Quality
- All upstream Ghostty tests pass — full test suite is green
v0.1.0-beta.14
April 30, 2026First beta with a production-quality icon and an onboarding experience on first launch.
Added
- New production app icon
- Debug builds use a distinct blueprint-style icon so it’s easy to tell Dev from Release at a glance
- Onboarding sheet appears on first launch — includes welcome copy, links to send feedback, and a version footer
- Tasks panel now shows a “preview” callout card instead of an inline alert
- Honest placeholder copy in places that aren’t fully wired up yet
Changed
- Fresh installs now default to showing the project sidebar first (previously opened to an empty state)
v0.1.0-beta.13
April 30, 2026Window controls alignment and the first version of task row interaction.
Fixed
- Traffic light buttons (close / minimize / zoom) are now correctly centered in the titlebar — previously they floated slightly off
Added
- Sidebar row-click v0 — clicking a task row now lets you interact with it
v0.1.0-beta.12
April 28, 2026First distributable build. Ghostties can now be installed and kept up to date automatically.
Added
- First full DMG bundle with notarization — Ghostties is now installable like any other Mac app
- Sparkle auto-update wired to ghostties.org — the app will notify you when a new beta is available
- Row-click interaction across the task list (12 interaction units shipped)
- Privacy and support pages live at ghostties.org