[1.3.7] - 2026-09-11
Terraform support, per-task agent parameters, and two fixes worth having.
Features
- Terraform. Syntax highlighting for
.tf,.tfvarsand.hclin the editor and the diff viewer, and Terraform joins the languages code navigation can serve: go to definition, find usages, hover types and diagnostics through terraform-ls. Opt-in like every other language, and it will not download a server or run any Terraform command until you ask it to. Thanks to @yb-yu, who reported it and then built it. (#289) - Per-task agent parameters from the CLI.
termic newcan now set the model and extra arguments for the agent it starts, without touching the agent's shared Settings:termic new planner --agent codex --model <id>, and--arg(repeatable) for anything else the CLI takes. A planner task can run a stronger model while the workers it fans out to stay cheap, which is the case that prompted it. Thanks to @adamatan. (#287)
Bug fixes
- A Codex tab could quietly start a fresh session instead of resuming yours. If anything else still had that conversation open, Codex refuses to reopen it, and Termic was not reading the refusal: the tab started a new session, said nothing about it, and pressing R did the same thing again. The failure is now noticed and reported, and Termic stops retrying the session id that failed. If you hit this, closing the tab and opening a new one is the way back. (#291)
- Branch names could carry two dashes in a row. A task called "fix - auth
bug" became the branch
fix---auth-bug, and the worktree directory took the same name. A run of dashes now collapses to one, in both the branch and the directory, and a name that leaves nothing to build a branch from says so in the New task dialog instead of failing later in git's own words.
[1.3.6] - 2026-09-09
Open a task's folder in any app, plus a profiles fix that moved projects.
Features
- Open a task's folder in the app you actually want. The folder button in the title bar always opened Finder, and a git worktree is usually something you want to hand to an editor or a terminal instead. It is now a split control: the left half launches whatever you picked last, and the chevron lists the well-known editors and terminals found on your machine. Finder stays first and stays the default, so nothing that worked before stopped working. (#284)
Bug fixes
- A project could move to the default profile on its own. Changing anything on a project from a second profile's window (spotlight, a run script, the code intelligence toggle) filed that project under the default profile and left the profile it belonged to empty. The window kept its own list until it was restarted, so the change surfaced on the next launch and looked like the update had caused it. Nothing was lost. A project that already moved cannot be put back automatically, because the record no longer says where it came from: remove it from the default profile and add it again in the profile it belongs to. Its tasks are still on disk and come back with it.
- A project added as a subdirectory of a monorepo showed every file as deleted. Opening any diff drew the whole file as removed lines, and staging a file from the Git panel quietly did nothing. Git reports its paths from the repository root whatever directory it runs in, and Termic was reading them against the project directory. The Git panel now also lists only the changes inside the project, rather than the whole monorepo's.
- The PR badge on a task stayed grey, and a merged PR went unnoticed. Live status was only fetched for a task whose Git tab was open, so every other task with a pull request kept the "state unknown" glyph for the whole session and no poll ever arrived to see it merge (or to archive it). Every task with a PR is now polled in the background. (#281)
- A task running two agents showed only one agent's plan usage. The footer chip was tied to the agent the task was created with, so a Claude tab sitting beside a Codex tab reported nothing at all for the second one. Each agent in a task now gets its own chip, and the one whose tab is on screen is the one that survives a narrow window. (#277)
Improvements
- Existing worktrees moved behind one row in the new-task menu. A project with worktrees you had made outside Termic listed every one of them at the top level, which pushed the agents (the thing the menu is for) further down the more worktrees you had. They now sit in a submenu called Import worktree, next to Resume, and the row is absent entirely when there is nothing to import.
Thanks
- Vinodkumar Naidu (@nvkvin) for the open-with control, and for following it onto Windows before anyone could run it there.
[1.3.3] - 2026-09-07
Work and personal profiles, and a Claude/Codex credentials switcher that moves a running task.
Features
- Profiles. A fully separate instance of Termic with its own window, projects, tasks and settings, so work and personal can be open on two monitors at once and neither can see the other's work. Each one carries an accent colour (or none) and its name in the title bar, and the profiles you had open when you quit are the ones that come back. Turning profiles off keeps every byte: the app returns to one window and nothing is deleted. Settings, Profiles. (#280)
- Several logins per agent. Add a second Claude or Codex account, choose which one a task runs as, and switch a task that is mid-conversation without losing it: the switch restarts the agent, and the conversation resumes on the other account. Termic never sees a credential. It creates an empty directory and runs the agent's own login in it, and everything that is not the credential (your settings, skills, commands, prompts and history) is shared back to your main config by symlink, so a second account is a second login and not a second setup. Picking an account you have not signed into yet opens a tab where you can run that agent's own login, beside the conversation rather than instead of it. Works sandboxed and in Docker. Settings, Agents. (#278)
- Switch accounts by yourself, at the limit. Off by default, one checkbox per agent in the usage popover. When the account in use passes 95% of a rolling window, Termic moves the task to an account that has room, restarts it and sends "continue", so a task that hits a wall at 3am is still working at 4am. It only ever moves to an account it has seen headroom on, and it says what it did.
- What an agent has cost you. The usage popover now carries the dollars spent on the current account since Termic launched, from Claude's own reporting. An account with no subscription, where percentages mean nothing, shows the figure on the footer chip itself.
- Add several repositories in one sweep. The project picker scans for checkouts and lets you tick the ones you want, instead of one dialog per repository.
- The running version is in Settings, bottom left of the rail. Click it for the release notes.
Bug fixes
termic new --baserefuses a ref it cannot resolve, instead of silently cutting the worktree from your main checkout's current commit while reporting the ref you asked for. A bare branch name that exists only asorigin/<name>, which is whatgh pr view --json headRefNamegives you, now resolves the waygit checkoutresolves it.- Your plan usage shows on an account billed per token from the first turn, rather than staying blank until it had spent something, and a subscription's dollar figure is labelled as what it would have cost rather than as money spent.
- The plan usage chip no longer sits blank with nothing to explain it. Termic reads Claude's usage off the status line it installs, so a project or a status line of your own that already owns that slot silently took the feed away. The chip now names what is holding the slot and where, and offers a prompt you can hand to the agent that owns the script. That prompt now also teaches the script to report what the account has cost, which on an account with no subscription is the only reading there is. (#277)
[1.2.3] - 2026-09-04
Muse Code, Codex self-reporting, and plan usage in the task footer.
Features
- Muse Code, Meta's terminal agent, ships as a built-in: launch it, YOLO it, sandbox it and resume it like any other CLI. (#275)
- Codex reports its own state through agent hooks, so ready, working, needs-you and done come from Codex rather than from Termic reading its terminal. Turn them on in Settings, Agents.
- Codex resumes the right conversation in a main checkout. Several tasks in one repo root used to share whichever session ran last there; each task now returns to its own.
- Your plan usage, in the task footer. How much of the current agent's subscription you have spent, as two percentages and a bar: the rolling session window and the rolling weekly one. The bar turns amber past 70% and red past 90%, following whichever window is closest to its limit, because a comfortable five-hour figure sitting in front of a nearly spent week is the case that catches people out. Click it for the reset times. Claude reports its own numbers through a status line Termic installs alongside the agent hooks (so it needs those turned on, and your own status line is left alone if you have one), and Codex is asked directly. Neither costs you a request. Each cloned agent shows its own account. (#277)
Bug fixes
- One turn interrupts you once. A long turn could raise a desktop notification at every stage boundary, so an agent working for ten minutes could ring repeatedly. The badge still tracks each stage; only the notification is deduplicated. (#276)
- Claude's needs-you notification names the tool it is blocked on ("needs your permission: Bash") instead of "agent needs your input".
- The agent hooks install preview was empty for a cloned agent, even though installing on that clone worked. It now shows the same scripts and config the install actually writes.
- Plan usage now appears for Codex. Termic asks Codex for it by running its binary, and a Termic launched from the Dock does not inherit the PATH your terminal has, so on a released build it could not find Codex at all and the footer stayed empty. A Codex task in a Docker container is also asked about the account that is logged in inside the container, rather than the one on your Mac. (#277)
- The
termiccommand now installs itself. The CLI setting has been on by default for a while, but the command was only ever created when you toggled the setting off and on again, so on a fresh Mac the row said it was enabled and no command existed. It is now installed into~/.local/binon launch. Removing it by hand is still respected: it is never put back. - Add to PATH, next to Install system-wide.
~/.local/binis not on a stock macOS PATH, so the command could be installed and still not found. The new button adds it to your shell startup file and needs no password, where Install system-wide asks for one. It writes the right line for your shell, and will not add a second copy of one you already have. - Multi-line prompts sent between tasks arrive whole. Newlines were delivered to the receiving agent as Enter, so a multi-line prompt was submitted one line at a time and only the last line survived as the message. Single-line prompts were never affected.
- The plan usage popover no longer tells Claude subscribers that their plan has no session limit. Claude reports both windows, and a reading that briefly omits one no longer clears the number that was already there.
- The toolbar's sandbox icon now matches the sidebar, the footer and the mode picker for monitoring mode.
- Settings no longer calls your Docker sandbox Dockerfile "customised" just because Termic shipped a new default one. It now remembers which default your file came from, so an untouched Dockerfile picks up new agents on its own and an edited one is left alone.
Heads-up
- Your Docker sandbox Dockerfile is reset to the shipped default once, on first launch of this version, even if you edited it. This release is where Termic starts remembering which default your file came from, and profiles from before it carry no such record, so there is no way to tell a real edit from an older Termic's copy. Save anything you want to keep before updating. From this release on, your edits survive.
[1.1.2] - 2026-09-03
Agents now tell Termic what they are doing, instead of Termic guessing from the terminal.
Features
- Agent hooks: the agent reports its own state. Termic installs a small script into an agent's own config so it says when a turn starts, when it needs you, and when it is done, instead of Termic inferring all three from the terminal. Inference is usually right and sometimes wrong in the way that costs you most: Claude paints its idle glyph while it is blocked on a permission prompt, and again while its background agents are still running, so a task can read as finished while it is not. Measured over an 8.5 minute run with four subagents, the title claimed idle for 30% of the time the work was still outstanding. Supported for Claude, Grok, Antigravity and opencode, each with the events that agent actually has: Grok is the only one that reports an interrupt, Antigravity has no needs-you event at all so its permission prompt is read from the screen instead, and Codex is left alone because its title already says
Action Required. Works the same sandboxed, in Docker, and unsandboxed. Installs globally, one agent at a time, shows you the exact scripts and config before writing anything, and removal puts your config back byte for byte. Find it in Settings, Agents & Terminals, in the Agent hooks row above the per-agent tabs. Off by default and marked Experimental. (#269) - Cloned agents inherit instead of copying. Duplicating an agent used to take a full copy of its settings, once. That copy then rotted: when a CLI renames a flag, the built-in agent moves with the app and every clone keeps the old value forever, with no way to tell which of its seventeen fields you actually chose. A clone now stores only what you override and reads everything else from its parent as it changes, with the inherited values shown greyed in each field so you can see what is in force. One button clears every override and returns the clone to its parent.
- Task ports are a range you choose. Settings, Tasks now carries a min and max instead of a hard-coded floor at 18100. Existing tasks keep the ports they were given, because a task's ports are frozen at creation, so narrowing the range never moves a live task off the port its dev server is bound to. (#271)
- A way out when the editor cannot show a file. Binary and very large files now offer Open in default app and Reveal in Finder, with a plain explanation instead of an empty pane.
- Agents say when they are ready, not only when they are working. Claude's session start is part of the hook set now, so Termic knows an agent is past its own startup before it types a task's first message into it. It is the one thing the terminal cannot tell you: a blocking startup dialog paints and then goes quiet, which is exactly what a waiting input box looks like.
- Hook coverage at a glance. The Agent hooks row shows a green check when every detected agent is wired, and an amber marker when some are not, instead of a count you have to read.
Bug fixes
- An agent tab no longer loads forever after publishing an artifact. Publishing leaves a background subscription running for the whole session, which Claude reports as unfinished work, so every completed turn after it kept the tab spinning. Termic now holds the spinner only for work the agent is actually waiting on, and a tab can never stay in progress indefinitely.
- A finished turn no longer rings the needs-you bell. Claude sends a notification when work completes, not only when it wants you, and Termic treated every notification as needs-you. Only a genuine request for you rings now.
- Termic no longer hands a spawned agent another agent's session. Launching Termic from inside an agent session copied that session's identity into every agent it spawned: the new agent believed it was a child and turned transcript saving off, adopted the launcher's session, and was handed a live messaging socket and token for it, inside the sandbox.
- A badge clears when you come back to it. A done or needs-you badge on the tab already in front of you now clears when you focus the window, instead of only when you clicked away and back.
- Cloned agents were second-class everywhere. A duplicated agent was blocked from its vendor's API by the sandbox, denied its own config directory, drew a generic icon instead of its parent's, and could not register with the MCP endpoint. All of that resolves through the agent it was cloned from now.
- A commit inside a Docker sandbox no longer fails with "Please tell me who you are". Your git identity is mounted at git's global level, so a repo with its own
user.emailstill wins. - Agent state read from terminal titles, rebuilt from captured titles. The previous patterns covered two agents and were written from reasoning; these are derived from titles recorded off live sessions. Grok's plan approval freezes its spinner and used to read as busy forever, and an agent with no patterns at all rang the needs-you bell on every completed turn.
- Settings fields fit their placeholders. Multi-line placeholders were scrolling inside a two-row box, so the example patterns a field exists to show were clipped.
- A task's first message can no longer kill the agent. Claude asks whether it trusts a folder the first time it runs in a repo, with "No, exit" pre-selected. That question paints and then goes quiet, which reads exactly like a waiting input box, so Termic typed the first message into it and the Enter that followed answered "No, exit". Termic now waits for the agent to report itself ready, and for agents that report nothing it checks that the text it typed came back before pressing Enter.
- Agent hooks update themselves. An install from an older Termic kept its original hook set forever while still reporting as installed, so every fix and every new signal reached only people installing for the first time.
- One
termiccommand, whichever app is open. A beta build installed a secondtermic-betacommand that talked to the same socket astermic, so it drove whichever app happened to be running regardless of which name you typed. There is one command now, andtermic --helpsays which build it is. termic://links reach whichever Termic is open. With a beta installed alongside the shipped app, a link could start the other one, bring the running one to the front and then do nothing, because the URL was lost in the handoff between them.- A link-delivered prompt opens at full height instead of in a one-row box that only grew once you typed into it. (#192)
[1.0.2] - 2026-08-28
π Termic 1.0 ships the last three headline features: code navigation, pull requests, Docker sandboxing.
Features
- Code navigation across seven languages. Go to definition, find usages, hover types and diagnostics for TypeScript/JavaScript/TSX, Python, Rust, Go, C/C++/Objective-C, Swift and Ruby. Termic resolves the server your project already has before falling back to its own pinned download, so a repo with
node_modulesor a.venvuses that one and nothing gets installed behind your back. Python picks between zuban, ty and basedpyright, and you can override the choice per project or per machine. clangd, sourcekit-lsp and ruby-lsp are PATH-only on purpose: they ship with the Command Line Tools or are one package away, and duplicating a binary you already have is a liability. Double-Shift opens Search everywhere, and you choose when it does. (#174) - Pull requests from inside the app, GitHub and GitLab. Open a PR from the task you built it in, then watch it from the right panel: checks, review state, and comments that can be handed straight to the agent working in that worktree. Start a task FROM an issue: its own command palette row, a picker that opens beside the form instead of inside it, and the composed prompt (title, body, the thread's own URL) filled into the first-message box, so you read and edit it before anything is sent. Comments are not inlined; the agent is told to fetch them itself. When a PR merges, Termic can offer to archive the task, or do it for you. Each project gets its own Git settings tab. Self-hosted GitHub Enterprise and GitLab work too, as long as the CLI is signed in to that host. (#21, #22, #255)
- Docker sandboxing, an alternative to the seatbelt. Run an agent inside a container instead of a macOS seatbelt profile: a stronger filesystem boundary, and a blast radius that ends at the container. One generic image for every agent, editable as a plain Dockerfile in Settings, built by an explicit action and never lazily on a spawn. Your logins survive because each agent's own config folder is mounted, one per agent, so cloning an agent is all it takes to keep a work login separate from a personal one. Environment variables and the directories kept between runs are per agent too, and a persisted directory can be anywhere, not only under the container home. Termic offers to rebuild on a schedule you choose (or does it in the background), rebuilds only the agent layers so it takes seconds rather than minutes, and streams the build into the task's own pane instead of a spinner. Containers run as your host user, not root, drop every Linux capability and cap PID exhaustion. A command preview shows the exact
docker runa launch would build, agent command included, before you commit to it. Marked Experimental: network egress is not yet restricted the way the seatbelt's proxy restricts it. (#231) - An MCP endpoint, Phase A. A scoped control plane an agent can call without being handed a terminal. The 2026-07-28 spec revision made the protocol stateless, so a per-task bearer token can answer which task is calling and what it may do. Settings carries the surface and a one-click setup for each client. Phases B1 and B2 are not built. Thanks to @MHohlios. (#176)
- Copy a task's agent CLI briefing, a short fragment you paste into a prompt that carries one task's address, so an agent can prompt another agent without you relaying between them. On the task's right-click menu and in the command palette.
- Cmd+click a path in the terminal and it opens, including files outside the task, which get a read-only tab. Relative paths pointing outside the project are not resolved yet: that needs cwd tracking Termic does not do. (#240)
- Choose which browser opens preview URLs and terminal links, instead of always taking the system default. (#245)
- A diff tab says when it has gone stale. Review a file while the agent keeps working and the tab used to hold whatever it read when it opened, forever, with nothing saying so; clicking the file again in the Git panel just focused the stale tab. It now says it is out of date and re-reads on demand. Deliberately not live-updating: content shifting under you mid-review is worse than content being old. (#266)
- Multi-repo tasks can run in the main checkout, the same host-level choice a single-repo task has, and the dialog remembers each member's mode between opens with a Set all toggle for changing them together. Thanks to @cajbecu.
- The editor reads a file's own indentation instead of assuming two spaces, so editing a tab-indented or four-space file no longer mixes styles into it.
.mcp.jsonis linked into new worktrees by default, alongside the other paths a task inherits. (#251)- Run controls on the task row. Start or stop a run straight from the sidebar tree without expanding the task first, including from a collapsed task's header.
- Worktree tasks can be labelled by their branch instead of the name you typed. (#260)
- The new-task launcher leads with the project's default CLI rather than a fixed order, so the agent you actually use for that repo is the first one offered.
Bug fixes
- Docker CLI detection on macOS. GUI launches inherit launchd's minimal PATH and missed
/usr/local/binand/opt/homebrew/bin, causing the Docker probe to report Docker as not installed. files_to_copyreaches multi-repo tasks. Member worktrees arrived with none of their gitignored files, so keystores, service-account keys and.envhad to be copied in by hand before anything would build. The list now resolves at three levels: the multi-repo project's own list into the task root, a per-member override beside that member's scripts, and, failing that, the member repo's own committed.termic.yaml. Archiving and restoring re-copies all of it. (#264)- A blank line in "Files to copy" no longer copies the whole repo. An empty glob resolved to the repository root, so a trailing newline recursively copied the entire checkout,
.gitincluded, into the worktree. - Terminals that go blank behind your back come back. A Mac driven over Screen Sharing never blurs or hides its window, so none of the existing GPU-context recovery paths ever got to run, and every terminal stayed black until Termic was restarted. There is now a return-from-away rebuild that fires on the first input after a long gap. Thanks to @MHohlios. (#257)
- A failed WebGL attach no longer wedges every pane blank. The failed attempt leaked its canvas, and the leak counted against the browser's live-context limit, so each retry made the next one likelier to fail until nothing could draw at all.
- A first message is no longer dropped into an agent that was not listening. Every prompt-injection path (Agent Race, the New Task first message, the CLI's
--wait) slept a few fixed seconds after the PTY came up and then typed. Lose that bet, which a cold start in a freshly-added project does, and the text went into a TUI not yet reading. Nothing noticed: writing to a live PTY always succeeds. Readiness is observed now instead of guessed. - A leading
~in a per-agent environment value is expanded.CLAUDE_CONFIG_DIR=~/.next-claudewas handed to the agent unexpanded (the PTY child is exec'd directly, with no shell to expand it), so the agent created a directory literally named~inside the worktree and put its whole session store there. - A repo with no remote reports its real changes. The stored base ref was
origin/mainwhether or not that remote existed, sogit diffexited 128 and the task reported zero changes. - Inline blame stops fighting the line you are typing. The annotation sat on the cursor line and moved with every keystroke. (#234)
- File reads follow the config-dir symlinks Termic creates itself, instead of refusing to read through a link it put there. (#250)
- A file opened while the window is behind another one is focusable. Focus was scheduled with
requestAnimationFrame, which WebKit freezes for an occluded window, so atermic://deep link or a CLI-opened file came back unfocused and swallowed the first keystrokes. - The CLI no longer claims a task has no tabs when it simply has not been opened in this session.
statusandlistturned "the UI holds nothing for this task" intoopen_tabs: 0, so a task with four durable tabs read as having none. - The sidebar's sandbox badge no longer claims a task is caged before it has ever run. An idle task showed its mode's real color at reduced opacity, which read as "actively sandboxed" for a task sitting untouched. It is gray until the task has a terminal, and still encodes the mode by fill, so enforce and monitor stay distinguishable either way.
- One focus outline, everywhere. Five components each drew their own focus ring, at two different widths and colors, and everything else fell back to the browser's, which is drawn outside the element and came out clipped on anything sitting flush against a container edge. There is one indicator now, drawn inside the box so nothing can crop it, and controls that had none (the Agents toggles, file-tree rows) show it too.
- Enter submits the Add project dialog instead of doing nothing.
- Settings shows the Default CLI a project is actually set to, rather than the first one in the list.
- Words no longer run together after inline code in the multi-repo members hint, where ".termic.yaml" and the word after it had collided into ".termic.yamllist".
- Agents dropped from Termic can be removed again.
geminiwas shipped once, then retired, and existing installs kept it flagged as built-in: visible, undeletable, with nothing behind it. The built-in flag is now derived from what Termic actually ships rather than trusted from your settings file.
[0.29.0] - 2026-08-21
Scratchpads that survive a relaunch, highlighting for every language CodeMirror knows, and editable SVGs.
Features
- Scratchpad tabs. An unsaved buffer that happens to survive restarts, scoped to one task. Open one from the tab strip's + menu, the command palette or Option-Cmd-N, type a note, and it is still there after a relaunch, with no filename to choose and nothing stray in
git status. Cmd-S does not write to the scratch store, it promotes the pad to a real file inside the task (pick a folder, pick a name), after which the tab is an ordinary edit tab. Quitting keeps your pads; closing one asks. Notes live in Termic's own data directory, never the worktree, so they never reach a diff the agent reviews, and archiving a task keeps its pads. The tab title folds in as many buffer lines as fit, and the syntax is detected from what you type (or picked by hand, and remembered). (#244) - Highlighting for roughly 150 languages, with nothing to add here first. The editor and the diff view take their grammars from CodeMirror's own language registry instead of a hand-maintained list, so
.php,.lua,.zig,.hsand the next one all just work. Each grammar is a separate lazy chunk fetched only for a language you actually open, so app start is unaffected. Makefile, proto3 and Elixir stay hand-written, since the registry has no usable grammar for them. - Set the syntax by hand. A language button on the editor path bar, and a
Set syntaxrow in the command palette, for the.txtthat is really JSON. The pick reconfigures the editor in place, so the cursor, undo history and scroll survive it. Files that claim nothing get content detection (shebangs, markup declarations, real JSON) with high-confidence signals only: a wrong guess is worse than no guess. - SVGs open as source, preview or split, the same toggle markdown has, instead of a read-only image you had to leave the app to change. The preview renders the live buffer, so a split-view edit updates as you type. SVG keeps its own default-view preference, set to preview, so clicking an
.svgin the file tree still shows the picture. (#247)
Bug fixes
- A terminal no longer starts blank with an untitled tab. Anything an agent printed between the spawn and the moment the window started listening reached nobody, which for a CLI that paints a banner and then waits for input meant a blank pane and a generic tab title, permanently. The first output is held until the window is listening.
- The "modified" chip in the Git panel was hard to read on the light theme: its ink was hard-coded black and ignored the theme. Light fills and inks it from the tokens that exist for that, measured at 5.98:1.
- Expanding the bottom split left the caret in the agent terminal above it, so the next keystroke went to the agent instead of the shell. Focus retries on a timer now, which keeps running while the window is behind another one.
- A folder that will not read says why: permission denied, the folder links outside the task, the folder no longer exists, with the raw error underneath. The retry row said "Couldn't read this folder" and nothing else, which for a symlink pointing out of the task was hopeless advice, since retrying can never work. (#250)
- Committing no longer clears every mark-as-viewed in a review, on files the commit never touched. A file's mark expires on its own evidence now, and marks survive archiving, so unarchiving a task resumes the review where it left off.
- The Activity window names an agent row after its tab within a second of the tab getting a title, instead of up to 50 seconds later when the window is behind another one.
[0.28.1] - 2026-08-20
An Activity monitor for your agents, inline git blame, and a command palette that finally knows what the app can do.
Features
- Activity. A window that answers "which agent is eating my machine?". CPU and memory rolled up over the whole process tree under each agent, grouped project, task, tab, and sorted so the culprit is the top row. Termic's own processes get their own group instead of being taken on faith. Every column sorts (CPU descending by default), PID is its own column, and the per-child breakdown is in the row's tooltip. Open it from the Activity button in the sidebar footer or "Activity monitor" in the command palette. It is a real window, not a modal, so the numbers keep moving while you drive the agent that moves them; sampling is on demand, stops when the window closes, and backs off to 5s while the window is occluded. On macOS, memory is
phys_footprint, the same number macOS Activity Monitor shows, never a sum of RSS; on Linux it'sVmRSS(no WebKit-sidecar breakdown there yet). - Each Activity row names the tab it's actually showing (its renamed title, or the live status text the tab strip itself shows) instead of a generic "Agent" label, so several tabs running the same CLI in one task no longer look identical.
- Inline git blame in the editor. The line your cursor is on gets
subject, Author (age)in dimmed text after the code, and resting on it opens a card with the full commit: author, date, short sha, co-authors, message body. Two actions in the card: Open diff (that commit's diff in a real tab) and Show in History (jumps the Git graph straight to the sha, even if it is tens of thousands of rows down). Off by default, togglable in Settings, Appearance, Editor and from the command palette. Cursor line only, and the file is blamed once and cached, so moving the cursor is an array index rather than a git fork. (#234) - The command palette caught up. It was last extended in July and had missed 95 feature commits. Added: Add project, Run commands, Resume options, Stop task, Prompt library, Agent Race, Broadcast to agents, Broadcast to project, Jump to next waiting agent, Split pane right, Split pane down. Agent Race and both broadcasts had no palette presence at all. Reopening the palette now shows your last three commands under a Recent header, cleared after an hour. Archive and Stop are excluded from it, because the top Recent row is pre-selected and Enter must never mean "archive another task".
- The palette has a button. A boxed
>in the bar, before Run, so it can be found without reading the shortcuts list. Its tooltip carries the glyphs. Prompts and the right-panel toggle name their shortcuts in their tooltips too, read from the live bindings, so rebinding one retitles it instead of leaving it advertising a dead key. - Extra named ports per task. Name the environment variables your stack needs (
API_PORT,DB_PORT) in Repo Settings or a committed.termic.yaml, and every task gets its own frozen port for each, injected wherever$TERMIC_PORTis and expanded in the preview URL. Names added later reach existing tasks on the next tab spawn or run. Invalid or reserved names are refused inline. (#196) - A Fix merge conflicts built-in prompt.
- The "No projects yet" card on an empty dashboard is a button now. It looked actionable and did nothing; it opens the new-project dialog, the same one the sidebar + opens. (#152)
- The confirmation opt-out reads "Show this every time" and starts ticked, instead of "Don't ask again" starting unticked, which was the inverse of the setting it wrote. The copy stops implying loss where there is none: archiving keeps the task in History and the branch in git, and closing an agent tab is one click from the + menu's Resume list, so neither gets the red button any more. A pane tab, the one close with no way back, keeps it and says why. A silent archive now toasts "It's in History" with a button that goes there. (#102)
Bug fixes
- Creating a worktree no longer locks the window. Both the New Task dialog and the sidebar's quick-create row used to wait out
git worktree addplus the file copy with a modal open, so the whole app was unusable on a big repo until it finished. Both close/proceed immediately now: the sidebar shows the task with a spinner while its own pane streams live creation progress, and you can keep working elsewhere in the meantime. A failed create leaves a dismissible error in that pane instead of an error dialog. (#242) - Terminal panes going blank, again. 0.27.3 fixed the case where the GPU context is lost and never comes back. This is the other half: when WebKit restores the context, xterm repairs itself in place and the repair is incomplete, leaving the renderer pointing at an evicted glyph atlas. From outside, that state looks healthy (no loss event fires, and the context genuinely is alive), which is why only restarting the tab cured it. The renderer now rebuilds on the raw lost and restored events on its own canvas, so a fresh context always gets a fresh atlas. That also removes the 3 seconds of black the already-working path used to cost. (#232, #241)
- A long branch name no longer takes the whole row it shares in the Git tab. On Commit the filter box had collapsed to its own padding, with no room for a character; it keeps 30% of the row now. On Compare the base ref you had picked was the thing that got crushed, down to a single letter, because the two names split the space in proportion to how long each already was. That bar wraps to a second row instead, so both refs stay readable.
- A folder in the file tree whose read fails no longer hangs on "Loadingβ¦" forever. A background refresh dropped any directory that failed to read and replaced the tree with what was left, which is exactly what happens when a build or a generator rewrites a directory mid-refresh. Refreshes merge now, a failed read retries once and then offers a Retry instead of spinning, and a failed root read cannot wipe the tree to empty. (#159)
- The History archive scrolls when it outgrows the window. Once you had more archived tasks than fit on screen, the rows below the fold were unreachable.
- A command palette action no longer fires minutes late over whatever you are doing. It was deferred by one animation frame, which macOS freezes while the window is occluded, so the dialog it opens arrived whenever you next looked at the window.
- Closing and reopening a fresh agent tab before its first prompt no longer resumes a session that never existed ("No conversation found"). The session id was persisted on a timer, before the agent had written its session file.
- Port allocation is serialized, so concurrent task creates and restores cannot scan the same snapshot and claim the same ports.
- opencode resumes the conversation you left instead of starting a fresh one. Its session id is created by opencode itself, so Termic reads it back after your first message, and the command that reads it could not find
opencodeon the installed app's PATH. Affects both worktree and main-checkout tasks. (#243)
Thanks
- Preeti Yuankrathok (@earthpyy) for extra named ports and their hardening, the Fix merge conflicts prompt, and the CI fix for forked repos.
- Adrian Cristea (@cajbecu) for the History scroll fix.
[0.27.3] - 2026-08-17
A commit graph, branch compare, comments on any file, and a big idle-CPU fix.
Features
- Git. The right panel's Git tab is three sub-tabs. Commit stages and commits as before, with a Push button badged by the number of commits waiting to go out. History is a full-height commit graph: a dense row per commit (lane gutter, ref chips, subject, age), hover for the author, date and full message, click through to any file's diff at that revision. Scope it to this branch, every branch or refs you pick, collapse merged side branches with "First parent only", and search commit messages across the whole branch (git runs the search, so a match ten pages back still comes up first). Compare answers what all of it adds up to: one list of every path that differs between any ref and your working tree, committed, staged, unstaged and untracked together, rendered as a tree, and because its right side is the live file, mark-as-viewed and inline comments keep working, so a whole feature can be reviewed file by file without leaving Termic. Committed work used to vanish from the panel the moment the tree went clean, which is the gap all of this closes. In a multi-repo task all three sub-tabs follow the repo pill you picked. The Unstaged and Staged sections collapse, with Stage all / Unstage all still live. Lane colours come from the theme palette. (#199, #208)
- Select code in any file you are reading and comment on it, the same surface the diff pane has. Several remarks ship as one message, a body is optional, and Shift+Cmd+L stacks a selection from the keyboard. Queued comments follow their code as you edit around them, and the quote is frozen at capture. (#174)
- Find in files runs on ripgrep when you have it: faster on large repos, Unicode-aware, and its regex is what the results highlight with. Without it,
git grepexactly as before, named in the dialog. (#181) - Find in files gets a
.*regexp toggle and anAamatch-case toggle, both off by default. - Right-click any tab pill for Pin, Close, Close others, Close to the right. Pinned tabs sit in their own block outside the scroller, so they stay in reach however far the strip is scrolled, and the flag persists. (#183)
- Right-clicking a tab also offers Split right, Split down and Move to split. Move to split arms a cursor-following drag with the same ghost and edge highlight as a real one, so a tab can be placed in an existing pane without a grab; the next click drops it, Escape cancels.
- Right-clicking a task row in the sidebar offers a New submenu, the same rows as the tab strip's "+". (#197)
termic://links open a pre-filled New Task dialog:termic://new?project=web&worktree=1&name=fix-login&p=Fix%20the%20login%20bug. The link only fills the form; a human still presses Create, which is the whole security model for taking a prompt from any page that can navigate to a URL scheme. New Task grows an optional first-message box. (#192)- New Task can set the agent's resume arguments before its first spawn, the same override the task menu edits. It replaces a session-ID box that only appeared for agents able to resume by id, so codex and gemini had no field at all. (#169)
- Set a default location for worktrees in Settings, Tasks, and override it per repository. An invalid or git-tracked path is refused at save time.
termic tab close <task> --tab <sel>closes a tab from the shell, the one tab verb that also reaches plain shells and custom terminals. (#185)termic promptslists your prompt library and-P/--library <sel>fires one fromnew,sendandtab. With-ptoo the library body arrives first:termic result plan | termic new review --agent codex -P builtin:review -p -.- The archive dialog gets "Don't ask again". With confirmation off the delete-branch choice moves to Settings, Tasks. Note that the command palette's Archive then archives on Enter with no prompt.
Bug fixes
- Idle Termic no longer sits on a third of a core doing nothing. An agent TUI re-emits its unchanged window title while it waits, and the setter wrote to the store every time, re-running every selector in every open task. On a 16-terminal window idle CPU drops from 19% to 12.7%. (#212)
- A slow login shell no longer costs a session its environment for the rest of the app's life. A failed probe used to be cached forever; it now retries in the background and swaps the real environment in for new sessions. (#186)
- Nix profile directories lead the fallback PATH, so a nix-darwin or home-manager machine no longer hides nix-installed CLIs from spawned sessions. Detection reads the same list. (#187)
- Narrowing one of an agent's title patterns in Settings no longer deletes the other two. Each field resolves on its own; empty means inherit, so switching one off needs an unmatchable pattern like
(?!). - A
termic://link's name fills the branch field too, instead of waiting for you to edit the name first. - The "Couldn't resume your previous session" banner is gone. It outlived the failure it described and came back on every relaunch reworded as if nothing had happened. A failed resume now says so once and starts fresh; the agent's own picker (
claude --resume) is the way back to the old session, which was never deleted. - In a multi-repo task the Git tab opens on a repo that actually changed, instead of the empty wrapper.
- Terminal panes no longer go black after the Mac sleeps or the window sits in the background for hours. WKWebView reclaims the GPU context of a webview it thinks is idle, and every terminal kept compositing its last, empty frame, so restarting each tab by hand was the only way back even though the shell and the scrollback were fine the whole time. The renderer re-attaches on a fresh context now, and if the GPU is genuinely gone it stays on the DOM renderer with a forced repaint rather than black-flashing on a retry loop. It also checks on window focus, for the case where the loss never fires an event at all. (#232)
termic logs --tab <id>no longer answers "no tab matches" for an idtermic tabprinted a second earlier. Tab lookup consulted only what the window had last reported, which a brand-new tab is not in yet; an exact id now falls back to the durable record. (#185)- Clicking a desktop notification only brings the window forward. It used to yank you to that task on any refocus within 15 seconds.
- The bottom terminal takes focus when you open it, and collapsing the split hands focus back to the pane you came from.
- A pinned tab holds its width instead of resizing on every title the agent emits.
- Settings, projects and task metadata are written atomically, so a crash mid-write cannot truncate your configuration.
- Terminal in the new-task menu asks for a name in main-checkout mode, like every other item in that menu. It used to create the task at once and let Rust name it.
- The dashed "New task" placeholder in an empty project is the same height as a task row.
Thanks
- Preeti Yuankrathok (@earthpyy) for the worktree path settings, atomic writes, and the archive confirmation opt-out.
- Bohdan Shulha (@bohdan-shulha) for tab pinning and close actions, collapsible git sections, the regexp and match-case toggles, and the terminal focus fixes.
- Michael Hohlios (@MHohlios) for
termic tab close, the CLI prompt library, and both shell environment fixes. - Adrian Cristea (@cajbecu) for the WebGL context-loss recovery.
[0.26.0] - 2026-08-11
CLI tab targeting and worktree adoption, folder browsing in the editor, and image diffs.
Features
- The Termic CLI is now stable and ON by default, so the
termiccommand drives the app from any shell with no setup step: create a task, prompt an agent, wait for one to go quiet, read its result, list and archive. Every task's terminal is also handed the command in its environment, so an agent can instruct other tasks: fan a job out to several agents, wait on them, and read back what they produced, without you brokering it. Access still needs a token only your own user account can read, and agents in an enforced sandbox still never get it. Upgrading turns the CLI on once, including on profiles where it was off because that used to be the default. Switch it off after that and it stays off. termic tabopens another tab in a task and prints its id, and every verb that talks to a task takes--tabto aim at one:send --tab,logs --tab,tab -pto open and prompt in a single call.statuslists the strip with the same ids and 1-based indices, and a selector that misses is a typed error naming the candidates rather than a silent default.termic agentsprints the configured agent registry. (#138, #154, #156)termic new --from <path>adopts a worktree you created outside Termic: the project is resolved from its repo and the task name derived from its branch.--resume <id>onnewandtabseeds an existing agent session instead of starting a fresh one, so a session you began in a terminal continues inside Termic. (#169, #171)termic renameretitles a task from the shell. A same-project duplicate refuses with a typed conflict instead of creating a second task with the same name. (#153, #162)- A folder link in the markdown preview opens a GitHub-style listing in the same tab, not a dead link: rows navigate in place,
..climbs back out, the folder's README renders underneath, and Cmd+[ / Cmd+] walk the trail you browsed. Clicking a file row keeps the listing and opens the file beside it. (#160) - Editor syntax theme is configured per app mode. A dark-optimized scheme no longer gets forced onto a light surface: Appearance, Editor now has an "Editor theme (dark)" and an "Editor theme (light)". Existing settings carry over as the dark theme, and light starts from the same value until you change it.
- The terminal renderer is a three-way choice in Appearance, Terminal, on every platform: GPU (WebGL), Canvas, or DOM. It used to be a WebGL on/off toggle that macOS hid entirely, so a Mac user had no way to change renderer without hand-editing localStorage. WebGL stays the default and the right choice for almost everyone. Canvas and DOM are there for glitches, not for speed: text drawn wrong, flicker or leftover artifacts, or typing that lags on a setup running WebGL through a software rasterizer, as some Linux/WebKitGTK boxes do. Both cost more than twice the CPU of WebGL under heavy output, so there is no performance reason to move off it. Applies to terminals opened after the change; relaunch to switch the ones already open. (#140)
- Images in a git diff render as before and after pictures instead of pages of binary garbage. (#142)
- Protobuf and Elixir syntax highlighting, including the proto3 syntax the legacy mode missed. (#141)
- Double-click a file in the tree to open it in the OS default app, for anything the in-app editor cannot usefully render. (#150)
- Drag tasks to reorder them inside a project. The order persists, so a restart reads it back. (#146)
- The PDF preview keeps its page across tab switches instead of snapping back to page 1. (#148)
Bug fixes
termic archivenow asks a task's agents to stop before it kills them. It used to SIGKILL them outright, which gave an agent no chance to flush its session transcript, so archiving a task could quietly cost you the history that makes it resumable and thattermic resultreads. Anything still running after a short grace is killed as before, so the worktree is never removed under a live agent.- Find in the markdown preview marks the text you searched for, not the code spans around it. Stepping with Enter and Shift+Enter stays in step with the counter and wraps at both ends, a phrase the markdown source hard-wrapped still matches, and a regex metacharacter in the query is treated as literal text. (#168)
- The editor's line-number gutter is opaque, so a long line scrolled right no longer shows through it. (#161)
- The diff's line numbers stay level with the code when inline review comments are added. (#157)
- Settings dropdowns no longer carry WKWebView's own bevelled gradient, which read as a stray system widget against the light theme's flat panels.
- A run command with no label is no longer a nameless row in the Run menu and a nameless tab: it shows the command itself, clipped if it runs long, and the Settings label field previews what you'll get. Custom run tabs are keyed by label or by command, never both, so two unlabelled commands can't land on the same tab. (#177)
- A resume override no longer has its session renamed out from under it:
--nameis skipped whenever a verbatim resume override is active, so the second relaunch can still find the session. The Resume override dialog says so.
Thanks
- Michael Hohlios (@MHohlios) for the CLI tab addressing,
termic rename, worktree adoption, and the macOS GPU renderer toggle. - Adam Matan (@adamatan) for folder listings in the editor, open-in-default-app, task reordering, the PDF page fix, and the branch label on the dev-build pill.
- Alex Goodman (@wagoodman) for the find-in-preview fix and both gutter fixes.
- Bohdan Shulha (@bohdan-shulha) for image diffs and protobuf/elixir highlighting.
- Preeti Yuankrathok (@earthpyy) for the unlabelled run command fix.
[0.25.3] - 2026-08-01
A tray attention list, CLI send and attach, and several agent work-state fixes.
Features
- A menu bar item that's always there, not just while windowless. It shows a numeral badge and a dropdown of tasks that need your input or just finished a turn, grouped by project; click one to bring Termic forward and jump straight to it.
- The termic CLI can now interact with a running agent, not just create and watch one:
sendtypes a prompt into a task (optionally--waiting for the reply),attachopens a live raw-terminal session to it,logs,diff,result, andapplyread its output and land its changes, andpathprints its worktree. (#134) - Settings shows what an agent's terminal actually emits and can propose done/attention patterns from a captured turn, instead of guessing at regexes against blank textareas. (#133)
- Choose, and see, which branch a worktree is cut from per project: current branch, the project default, or any local/remote branch, remembered as a policy rather than a one-time pin. (#133)
- Drag a file from the sidebar tree onto a terminal to type its path at the prompt, the same affordance a Finder drag already had. (#136)
- Resume now lives behind one row in the project menu that opens a submenu of your last 5 archived sessions, instead of listing them at the top level.
- History gets a bulk "empty the archive" action, behind a destructive confirmation naming the exact count.
- A "Show Termic in the menu bar" toggle in Settings, General, for anyone who doesn't want a permanent icon there. On by default and applies live, no restart needed. Choosing "Keep in Menu Bar" from the close prompt turns it back on if it was off, since that button is an explicit ask for the tray as your way back in.
termic quittears a windowless Termic down from the shell, naming what it's about to kill (agents, working tasks) and asking to confirm, or--yesfor scripts. Windowless mode had left the menu-bar Quit as the only way to stop Termic, backwards for a CLI-driven setup.
Bug fixes
- Claude's questions and permission prompts are detected as needing your input instead of being marked done, and a backgrounded subagent still running no longer shows as finished.
- Work state no longer gets stuck on "working" past a ten-minute ceiling, and no longer loses its spinner mid-turn with the tab only recovering on focus.
- Restoring a split task no longer leaves a blank pane where a terminal used to be.
- The working spinner no longer visibly wobbles while it spins.
- The signal inspector's Observed titles column no longer truncates to an ellipsis; the text wraps, is selectable, and has a copy button.
- Worktree tasks and races now prefer the
originremote and read its default branch from the remote's own HEAD, instead of guessing against local branch names. make betano longer silently exits without opening a window when a previous Beta instance is still shutting down.- The termic CLI's Getting started commands in Settings can now be selected and copied.
Thanks
- Michael Hohlios (@MHohlios) for CLI phases 2 and 3 (send, attach, logs, result, diff, apply),
termic quit, and the agent signal proposer. - ghelton-procense for the CLI Getting started selectable-text fix.
[0.24.0] - 2026-07-24
The termic CLI: create, watch, and archive tasks from any shell, plus per-repo run commands.
Features
- A
termiccommand, off by default and enabled in Settings, Termic CLI (marked experimental: the commands and their output can still change between releases). It drives the running app over a local socket, so a task it creates is a real task in your window, not a second copy of Termic.termic new fix-auth -p "fix the login redirect"creates a task in the repo you are standing in (worktree or main checkout, sandboxed or YOLO, any agent you have configured) and streams the setup script's output while it runs.list,status,open,wait,archive, andproject add|list|removecover the rest. Enabling installs the command into~/.local/bin; a button upgrades that to a system-wide install. Agents in an enforced sandbox never get access. (#125, #132, #133) - The CLI is built to be scripted, including by agents.
--waitblocks until the agent goes quiet and only reports success once the prompt was confirmed delivered,--output-format jsonandstream-jsongive machine-readable output with heartbeats so a consumer can tell a working agent from a hung one, exit codes are pinned in--help, andtermic help --jsondumps the whole command surface. (#133) - Agents can drive Termic themselves. Every task terminal is handed the command's path, the task's own id, and a two-line usage note, so an agent working in a task can create more tasks, wait for them, and read what they produced, with no setup on its side. One agent farming work out to several in parallel is now a thing you can ask for. Agents in an enforced sandbox are refused. (#133)
- Custom run commands per repo, beyond the single primary run script. Right-click any file in the tree to run it once, or add it to the repo's run commands, kept personal or committed to
.termic.yamlfor the team. Saved commands get their own section in the Run dropdown with play/stop each, open as real run tabs, and are editable in Settings, Repositories, Scripts. (#124) - A Run configuration dialog gathers the run, setup, and preview scripts plus the new run commands in one place, from the Run dropdown. (#124)
Improvements
- Settings are organized by what they change. General had grown to 18 unlabelled rows, so it split into General, Tasks, Notifications, Sandbox, and Termic CLI. The rail is grouped now: the pages you open often at the top, the ones you set once in the middle, the sandbox and the CLI at the bottom. Two settings moved to where you would look for them: "Task expand behavior" is in Appearance, "Copy on select" is in Agents & Terminals. Nothing you configured changed, only where it lives.
- The file tree and Git status keep themselves current instead of waiting for the next poll. Discarding a file, switching or updating a branch, saving in the editor, renaming or deleting in the tree, a setup or run script finishing, and commands you type in the aux terminal all refresh the panels now. The 4 second poll also stops ticking while the window is in the background.
- Re-expanding a folder in the file tree re-reads it from disk, so a file created while it was collapsed appears without reloading the whole tree.
- Cmd/Ctrl+click on a path in terminal output now finds files inside gitignored folders anywhere in the working tree instead of reporting no matches. (#117)
Bug fixes
- Worktree tasks and agent races work in a repo with no remote. The default base is
origin/main, which such a repo does not have, so every worktree spawn failed at branch creation and the race just sat there. The base now falls back to your localmain, thenHEAD. - "Copy" in the context menus (file tree, Git panel, diff header, breadcrumb, sidebar) works again. WKWebView refused the clipboard write from a menu selection; copying goes through the native pasteboard now.
- Terminal glyphs no longer cache against the wrong font and visibly swap when you select text. (#131)
- Creating a task whose name matches a branch an archived task left behind no longer collides: the auto-filled branch is numbered past it. A branch you typed yourself is never touched. (#129)
- Saving only the Personal tab of the Run configuration no longer writes an empty
.termic.yamlinto your repo. (#124) - Termic declares its local network usage, so macOS can explain the permission prompt instead of asking for unexplained access. (#130)
Thanks
- Michael Hohlios (@MHohlios) for the termic CLI, the design, the control plane, and the create/wait/archive/project verbs, and for the terminal font atlas fix.
- Justin Edmund (@jedmund) for the local network declaration.
[0.23.4] - 2026-07-20
Fixes a tab-drag crash and clipped dialogs on scaled displays, plus tab and terminal fixes.
Bug fixes
- Closing a split pane's last tab with the X now collapses the pane, matching βW, instead of leaving an empty pane behind.
- Reordering tabs by dragging no longer crashes the task view on fractionally scaled displays. (#127)
- Dialogs no longer cut off their right edge (the Browse and Add buttons in Add project, Import worktree) on fractionally scaled displays. (#120, #126)
- Terminals no longer lock scrolling to the bottom after their pane was hidden and shown again. (#128)
- Cmd/Ctrl+click in terminal output now opens gitignored files too, and path detection requires a file extension so plain words stop turning into links. (#117)
Thanks
- Michael Hohlios (@MHohlios) for the terminal scroll-lock fix.
[0.23.1] - 2026-07-20
Agent races, Git branch switching, big battery savings, stop tasks, crisper terminal text.
Features
- Agent races: fire one prompt at several agents at once, each in its own fresh worktree, and watch them attempt the same task side by side. When every racer finishes, compare their diffs in an N-up view and adopt the winner into your main checkout, optionally archiving the rest in the same step. Races take a name and an editable branch segment, and can launch sandboxed or in YOLO so permission prompts don't stall unattended racers. The launch dialog shows live progress while the worktrees spin up, and a race strip above the racers tracks each one with a live work-state badge. Start one from a project's actions menu. (#113)
- The Git tab shows your current branch and lets you switch to another local branch, Fork-style: local work (including untracked files) is stashed, the branch is checked out, and the stash is re-applied. A failed checkout rolls the stash back, and a re-apply conflict is surfaced instead of losing your changes. (#101, #111)
- Update a task branch without leaving the Git tab: pull from its upstream, or merge or rebase the task's base branch. Each op fetches first and auto-stashes local work. Conflicts are left in place for you to resolve in the task's terminal, and a conflicting stash re-apply is reported instead of being passed off as restored. (#101, #116)
- Worktree tasks symlink the project's agent config folders (.claude, .gemini, .codex by default, editable in Settings) so an agent working in a worktree keeps its skills, subagents, and permissions. (#112)
- Dismiss repos you no longer care about from the Add Project picker; a "Show hidden" row brings them back. The choice survives restarts without deleting anything from disk. (#109)
- A default-off "Show all fonts" checkbox in the font pickers widens the list from detected monospace fonts to the full installed catalog, for monospace fonts the detector misses. (#114)
- The work-in-progress spinner (agent tab and sidebar icon) is on by default now. If you turned it off, your choice sticks.
- Resume lists (the tab strip's + menu and the New task launcher) are one-line rows now: a compact greyed age (10m, 2d) sits before the name instead of a second line under it.
- Stop a task without archiving it: "Stop task" in the task row menu (and "Stop all tasks" on the project) kills its agents and frees the memory while keeping every session. Opening the task again resumes the conversations where they left off. (#119)
- Cmd/Ctrl+click a file path in terminal output to open it in the editor. (#117)
Improvements
- Termic no longer drains your battery while idle. The PTY backend stopped sleep-polling (about 1,900 CPU wakeups per second, gone) and hidden panes stop rendering entirely instead of drawing every background repaint. Combined power drops up to 37% while agents stream, 15% at idle. (#121)
Bug fixes
- Terminals no longer render mixed-height, wavy text after a cold start. The WebGL glyph atlas now waits on font faces Termic owns instead of trusting the browser's font registry, which reported ready before the font was. (#70, #100)
- The font pickers list only fonts actually installed on your machine, alphabetized, instead of offering curated names that silently fell back to the bundled font when picked. (#110)
- Option+click makes a selection in terminal panes even when the running program has captured the mouse. (#105)
- codex and grok no longer pop a startup update menu that swallows an injected prompt on unattended spawns (run-prompt into a new agent). When you are at the keyboard they still ask.
- The contact link copies the email address to the clipboard as a fallback when a hijacked mailto: handler eats the click. (#106)
- Creating a group pre-selects the suggested name so you can type straight over it. (#107)
- Clicking a changed file shows the diff its pane implies: an Unstaged row diffs the index against your working tree, a Staged row diffs HEAD against the index (what git diff and git diff --cached show). A file staged and then edited again no longer shows the same full diff from both rows. (#122)
- The built-in diff viewer stays precise on large files (pnpm-lock.yaml) instead of painting whole regions as changed; it matches git diff now. (#118)
- The Git tab no longer fills several gigabytes of RAM when a large directory (e.g.
node_modulesafternpm install) is untracked. File lists are now capped at 5 000 entries per pane and rendered with virtual scrolling. A banner appears when the cap is hit. (#123)
Thanks
- Orel Ohayon (@Orellius) for agent races, branch switching and updates with stash re-apply, worktree config symlinks, dormant repo dismissal, and the terminal font atlas fix.
- Michael Hohlios (@MHohlios) for the installed-fonts picker, the show-all-fonts escape hatch, the group-name pre-select, and for hunting down the idle battery drain (PTY sleep-polling plus hidden panes that never stopped rendering).
- @dancras for Cmd/Ctrl+click to open file paths from terminal output.
- @shimonenator for the bug reports behind both diff fixes and for the stop-without-archiving request.
- Nikhil Verma (@nikhilweee) for Option+click selection.
- Adam Matan (@adamatan) for the mailto fallback.
[0.22.0] - 2026-07-14
Signed and notarized by Apple, adopt existing worktrees, custom work-done signals.
Features
- Termic is signed and notarized by Apple now. A
.dmgyou download opens on first launch: no "unidentified developer" warning, no right-click to Open, nothing to strip from the command line. macOS also remembers the microphone permission across updates instead of asking again on every release. - Adopt an existing worktree when you make a task. The launcher menu lists worktrees already on disk, so you can pick one up where you left it instead of branching a new one.
- Custom work-done signal detection for custom CLIs. Give your own agent the patterns that mean "finished" and Termic notices when it is done, the same way it does for claude, gemini, and codex. (#68, #97)
- Each agent's live title heuristics show as the signal placeholders, so you can see what Termic is actually matching on instead of guessing.
- A bigger starter prompt library. (#93)
- Group folder colors use per-theme palette shades, so a Finder-style color tag looks right in every theme instead of only the one it was picked in. (#95)
- Settings field groups sit in full-bleed bands, so a switch visibly owns the section it governs.
Bug fixes
- A failed session resume keeps the live session instead of discarding it, and a later recovery swaps the two rather than overwriting whichever one you are actually working in. (#94)
- Light theme: raised terminal contrast so truecolor text from CLIs stays readable. (#83, #98)
- The output-scan switch is disabled until you give it patterns, since it does nothing without them.
- New task names count worktree rows in the sidebar, so the default name does not collide with a task you already have.
Thanks
- Orel Ohayon (@Orellius) for the expanded prompt library, custom work-done signals, the light-theme contrast fix, and preserving the session on a failed resume.
- MHohlios (@MHohlios) for per-theme palette shades on group folder colors.
[0.21.0] - 2026-07-13
Project folders, a prompt palette, and in-pane image and PDF previews, thanks to our contributors.
Features
- Project groups: give any project a group label and it collapses under a folder in the sidebar, so a fleet of similarly named repos (app-ios, app-android, service-auth) clusters by product or layer while staying visible at a glance. Right-click a project to move it into a group, or drag it into, out of, or between folders; drag a folder header to reorder whole groups. Folders take Finder-style color tags, and a collapsed folder still shows a dot when one of its hidden agents needs you. (#84)
- Prompt palette: press Option+Cmd+P to search your prompt library by name and fire one straight at the focused agent, or pick a destination when there isn't one. While the search box is empty, keys 1 through 9 fire the top prompts instantly. (#81)
- Whole-app zoom: Cmd+= and Cmd+- scale the entire interface like a browser, Cmd+0 resets to 100%, and the level persists across launches. (#91)
- Image and PDF preview: click an image or a PDF in the file tree and it opens in the pane, rendered natively, right alongside your agents and diffs. (#75)
- Reopen closed sessions: the "+" tab menu now lists sessions you have closed in a task, so you can pick one back up instead of starting over. (#88)
- Find in the markdown preview: Cmd+F now searches within the rendered preview, and wins over the editor's own find when the preview pane has focus. (#71)
- New worktrees branch from a fresh base: task creation fetches the base ref first, so a new branch starts from the up-to-date base instead of a stale local copy. (#86)
- Remote images in the markdown preview are off by default now, behind a new setting, so opening a document can't silently reach out to the network until you opt in. (#85)
- Project discovery reaches one level deeper inside grouping folders, so nested repo layouts show up without adding each repo by hand. (#89)
Bug fixes
- A single Claude agent no longer shows two "working" indicators at once. (#78)
- Directory links in the markdown preview reveal the folder in the file tree instead of opening Finder. (#87)
- Terminals wait for the font to load before spawning, so the first frame can't cache fallback glyphs into the WebGL atlas. (#70)
- The command palette moved to Shift+Cmd+P, and Cmd+K now clears the terminal, matching VS Code and standard terminals. Both remain rebindable in Settings, under Shortcuts.
Thanks
This release leans heavily on community contributions. Thank you:
- Adam Matan (@adamatan) for the prompt palette, image and PDF preview, off-by-default remote images, and reopening closed sessions.
- MHohlios (@MHohlios) for project groups, drag-and-drop folders with Finder-style color tags.
- Orel Ohayon (@Orellius) for reaching one level deeper when discovering repos.
- Ehtasham Yasin (@Ehtasham-Yasin) for fixing the duplicate agent working indicators.
[0.20.1] - 2026-07-10
Workspaces are now Tasks, and you can create one in two clicks from the sidebar.
Features
- Renamed "workspace" to "task" everywhere: labels, menus, the command palette, shortcuts, and settings. Existing workspaces migrate automatically on first launch, with the old data backed up first, and templates that use {workspace_name} style placeholders keep working.
- Every task now has a location. "Main checkout" runs the agent in the repo's live checkout on its current branch, so edits land on your real files. "Worktree" is an isolated branch in its own working directory. A small icon marks each task in the sidebar, top bar, dashboard, and history.
- Quick task creation from the sidebar: click a project's "+", flip the Main checkout / Worktree toggle, pick an agent (or Terminal, or a custom command), and type a name inline. Worktrees also get an auto-filled, editable branch field, so there's no dialog for the common case.
- The Main checkout / Worktree choice is remembered across the app and shared by the quick menu, the New Task dialog, and Advanced, so it always opens the way you last worked.
- Custom launch command tasks (ssh, a dev server, a REPL) can now be created as a worktree too, with an editable branch.
- Creating a single-repo worktree opens the task right away and runs its setup script as a background tab, so you land on the agent immediately instead of waiting.
- Empty projects show a single "New task" button that opens the same menu as the "+" icon.
Bug fixes
- Setup and run scripts always run outside the sandbox now, so they get the full network and filesystem they need (npm install, dev servers, and the like) even in projects that default to an enforcing sandbox.
- A task name that contains no letters or numbers is now rejected with a clear message instead of silently failing.
- Dragging the last main tab into a split pane no longer strands the main pane empty and unclosable: the main tab bar always keeps at least one tab, and dragging its only tab shows no drop target.
Also in this release
Smaller improvements that landed alongside the rename:
- Custom themes: drop a JSON file in
~/.config/termic/themes/and it shows up in the theme picker as a first-class theme, chrome and terminal together. The folder ships with a README and a copyable example. (#62) - RosΓ© Pine, a new built-in theme, using the official ANSI palette so agent TUIs look the same in Termic as in Ghostty. (#61)
- Markdown preview renders images (relative and remote) and follows links, including
file.md#headingjumps, missing-file notices, and folder-reveal in Finder. (#65) - Fonts you pick from the system list are actually used, in both the terminal and the editor, so Nerd Font glyphs from oh-my-posh, starship, and Powerlevel10k stop rendering as empty boxes. The picker also lists every system font the first time you open it. (#63)
- Text on accent-colored buttons and badges stays readable in every theme, including the light accents of Cobalt, Matrix, and RosΓ© Pine. (#60)
- Custom light themes fall back to the light palette for any color they leave out, and the file tree keeps its expanded folders when you switch tasks.
[0.18.4] - 2026-07-08
A Sublime-style split-pane rewrite, plus Run now lives in the main window.
Features
- Split panes, reimagined: every pane now has its own tab strip. Drag tabs between panes, resize panes, and split in any direction by dropping a tab near a pane edge. A drag ghost with drop overlays shows exactly where the tab will land.
- Files now open in the active pane instead of always taking over the main one, and git diffs open there too. Open a file on one side while an agent keeps working on the other.
- Run and Setup now run in the main window, as a tab or a split of your choosing, with play, restart, and stop controls right in the tab pill. The bottom-right run log is gone.
- Top bar Run controls: Run/Stop plus a dropdown for per-repo run targets, setup, preview URL, and configure.
- Spotlight: the run executes at the repository root while a workspace is spotlighted, and moving the spotlight stops the old run and restarts it on the new workspace.
- Files changed on disk reload automatically when the editor has no unsaved edits (#57).
- Broadcast to a project's main agents: right-click a project and pick "Broadcast message" to send one message to the main agent of every workspace at once.
- Run setup tabs tidy themselves away a few seconds after the script finishes, with a countdown button in the "Setup finished" bar that closes it right away.
- Jump to the next waiting agent: press Shift+Cmd+A, or click the bell pill in the top bar (it shows how many agents are waiting), to cycle to the next workspace whose agent finished a turn or is blocked on you. (#56)
- Open your app's preview URL in the browser from a new button in the top bar run controls, shown while a run is active.
- A keyboard shortcuts icon in the sidebar footer opens the shortcuts cheat-sheet.
Bug fixes
- Cmd+click opens links from terminals reliably, including hyperlink-style links (anchor text like "Learn more") inside TUIs with mouse reporting on, and plain clicks on them no longer pop a confirm dialog (#58).
- Restarting a run no longer flips the controls to idle while the new process is alive; restarts wait for the old process to exit so dev servers keep their port.
- Voice input: the microphone permission prompt now works in release builds.
- Run and Setup tabs no longer show up as destinations for reusable prompts or broadcast messages.
[0.17.7] - 2026-07-01
Split pane layout persists across relaunches; TabBar buttons are now split-pane shortcuts.
Features
- Split pane layout (tree, ratios, and all pane tabs including shells) is saved and fully restored on relaunch.
- Both TabBar shortcut buttons now open split panes: split right (Cmd+D) and split below (Shift+Cmd+D). The old bottom-shell toggle is replaced.
Bug fixes
- Splitting from the main agent while other panes exist now places the new pane directly adjacent to main, not in the far corner.
- Splitting from the main agent via TabBar buttons now always targets main regardless of which pane was last focused.
- Pane navigation (Option+Cmd+arrows) now reaches panes that don't share a center-aligned edge with the current pane (e.g. navigating left from a small bottom-right pane now finds the full-height main pane).
- Keyboard shortcuts cheat-sheet no longer has a keyboard binding (was Shift+?), eliminating the "?" key being intercepted in the terminal. Open it from the icon or via the command palette. (issue #53)
- Option+Cmd+Up/Down now navigates workspaces when no horizontal split is open (previously cycled agent tabs). When a horizontal split exists, it still focuses the pane above or below.
- Option+Cmd+Left/Right now does nothing when no vertical split is open (previously switched tabs). It only navigates panes when a vertical split exists.
- Cmd+Left/Right in the terminal now moves to the beginning/end of line (Ctrl+A / Ctrl+E), matching macOS Terminal.app and iTerm2. (issue #51)
- Clicking back on the app window now reliably restores keyboard focus to whichever terminal or editor was last active, without requiring a second click.
[0.17.0] - 2026-06-30
iTerm-style split panes: drag to rearrange, keyboard shortcuts, auto-close on exit.
Features
- Split the main agent pane right (Cmd+D) or below (Shift+Cmd+D) into multiple panes, each running its own agent or shell.
- Drag pane headers to rearrange, with a red drop-zone preview showing exactly where the pane will land.
- Drop onto the main agent pane to reorient the layout (vertical or horizontal split).
- Non-main split panes close automatically when their agent exits.
- Dim inactive panes setting with adjustable opacity (Appearance settings).
- Dashboard workspace rows now show the workspace name and an explicit repo/worktree badge.
Bug fixes
- Cmd+W now closes the active tab when no split pane is focused (regression from drag-target attribute added to main pane).
- Shift+? (was Cmd+/) opens the keyboard shortcut cheat-sheet.
[0.16.1] - 2026-06-27
Restore archived workspaces, project context menu, opencode agent, terminal performance.
Features
- History: restore archived workspaces; redesigned with search, branch and kind columns, archive dates, and auto-refresh.
- Sidebar: right-click a project for quick actions: new workspace, settings, rename, reveal in Finder, copy path, remove.
- Agents: opencode added as a built-in agent with icon, session capture, and resume support (worktrees via --continue, other workspaces via captured session ID).
- Agents: gemini CLI removed (Google is retiring it).
Bug fixes
- Terminal: eliminated a 1-2 minute freeze when printing large files (was caused by JSON-serializing thousands of PTY events individually).
- Terminal: Cmd+Delete now kills the line to the beginning (sends Ctrl+U), matching macOS Terminal.app and iTerm2.
[0.15.9] - 2026-06-25
New filesystem-only sandbox mode, and copyable terminal output when an agent exits.
Features
- New "Enforcing (filesystem only)" sandbox mode: the full filesystem cage with the network sandbox off (no proxy, no host allow-list), for when your egress is controlled elsewhere or you need direct, non-HTTP traffic.
Improvements
- When an agent or shell exits, the terminal stays interactive so you can select and copy its final output (an error message, say). A restart banner now appears under the tab bar instead of a blocking overlay.
- Mark-as-viewed is now an eye icon (Git panel rows and the diff header) so it's no longer mistaken for staging. Marking a file viewed from the diff header advances to the next unviewed file in the same order the sidebar shows, and the sidebar selection follows along. (#42)
Bug fixes
- Sandboxed agents on the Apple Command Line Tools toolchain can run git, clang, make, and swift again (the CLT library path is now readable). (#49)
- Archiving a multi-repo "open repo" (repo-root) workspace no longer strips the member repos out of other live workspaces that share the same checkout. Archive now leaves a member link in place when another open workspace still uses it. As a safety net, missing member links are also restored automatically on workspace launch or a manual refresh.
[0.15.5] - 2026-06-24
Mark files as viewed while reviewing, and pick what a split launches.
Features
- Mark changed files as viewed from the Git panel rows or the diff header, with a per-section viewed count. The mark clears itself the moment an agent edits the file again. (#42)
- Files with inline review comments now show a comment count badge in the Git panel. (#42)
- Opening a right split (βD) now shows a picker to choose what to launch (an agent or a terminal) instead of immediately starting a shell. Use the arrow keys and Enter.
[0.15.4] - 2026-06-23
Cleaner editor reloads, steadier Git repo pills, and New Workspace remembers how you work.
Improvements
- New Workspace now remembers your last workspace type (worktree or repo root) and sandbox mode, so you do not re-pick them every time.
Bug fixes
- Files opened in preview (temporary) mode now refresh quietly when an agent changes them on disk, instead of showing a false "modified" dot. A file you opened to edit asks before reloading, only when you focus its tab.
- After committing in a multi-repo workspace, the repo's pill stays put instead of jumping to another repo while the commit or push is still finishing.
- The vertical split divider no longer sits on top of the next pane's scrollbar, so you can grab and drag the scrollbar again.
- Diff view: changed comments stay legible. Their dim syntax color no longer drops below readable contrast against the green and red line wash. (#40)
[0.15.3] - 2026-06-22
Linux AppImage fixes for python3 and Wayland, plus sandbox defaults and a sharper βJ.
Improvements
- βJ is now three-state: from the agent it focuses the bottom terminal without hiding it, and only hides on a second press, so you stop closing it by accident.
- Sandbox allows the hosts and self-update endpoints that Copilot, Grok, and Antigravity need out of the box, and no longer flags common shell startup files (oh-my-zsh, prezto, fish), so sandboxed agents need less manual allow-listing.
Bug fixes
- Linux (AppImage): python3 and perl work in Termic terminals again. The bundle exported PYTHONHOME, PYTHONPATH, and PERLLIB pointing at directories it does not ship, which broke anything that shells out to python3. (#47)
- Linux (AppImage): the GTK backend is overridable again. It still defaults to x11, but you can run
GDK_BACKEND=wayland termicto use native Wayland, which avoids XWayland frame-stall freezes on some AMD/mutter setups. (#48)
[0.15.2] - 2026-06-21
Keyboard shortcuts for the bottom terminal panel and jumping back to the agent.
Features
- βJ toggles the bottom terminal panel: opens and focuses a scratch shell, or hides it and returns focus to where you were.
- β§βD also toggles the bottom terminal, as a fixed shortcut that keeps working even if you rebind βJ.
Improvements
- βL now jumps focus to the main agent (its terminal, or the open editor) from any pane, including from inside another terminal.
[0.15.1] - 2026-06-19
Release notes now show what changed, and markdown previews show list bullets again.
Improvements
- Release notes (in the app and on GitHub) now lead with what changed in each version, instead of install instructions.
- The in-app Changelog dialog renders formatted markdown.
Bug fixes
- Markdown previews now show bullet and numbered list markers.
[0.15.0] - 2026-06-19
Right-click menus everywhere, file rename/remove, self-contained multi-repo members, clearer diffs.
Features
- Right-click context menus across the file surfaces: copy path (relative or absolute) and show in Finder from the All Files tree, the Git panel, the diff header, and the editor breadcrumb.
- File tree: rename and remove files or folders straight from the right-click menu.
- Right-click a workspace in the sidebar to open its actions menu.
- Multi-repo projects: members are self-contained, so adding one no longer leaves a separate project in the sidebar. Pick from your existing projects or add any folder from disk.
- Add a plain (non-git) folder as a project or multi-repo member: we confirm after you pick it, with no checkbox to set.
Improvements
- Diff view contrast: softer change highlights and even add/remove line tints so syntax-colored code stays readable.
- New Auto editor theme matches the app palette, so a light theme no longer shows light code on a light background.
Bug fixes
- Diff view: the unchanged lines bar no longer renders as a solid black bar on light themes.
- Right-clicking to dismiss a menu no longer leaves the UI unclickable.
- The updater re-checks for a newer release before installing and refreshes a stale changelog.
[0.14.4] - 2026-06-18
Command palette (Cmd+K), quick project picker, worktree or repo-root toggle, right-click menus.
Features
- Message queue: a Send now button fires the next queued message immediately, skipping the wait for the agent to finish.
- Message queue: a configurable minimum send interval (Settings, General; default 10 seconds) throttles the loop so messages can't fire too fast.
- Command palette (Cmd+K): search and run any action (new workspace, file picker, find in files, rename, archive, YOLO, sandbox, theme, sidebars, settings) from one place, with each action's shortcut shown inline.
- Quick project picker (Cmd+N): fuzzy-search any project and start a new workspace without scrolling the sidebar.
- New Workspace dialog has a worktree vs repo root toggle, so you can launch an agent directly in the repo's live checkout (no worktree).
- Right-click context menus across the app.
- Toggle the left and right sidebars with Cmd+B and Option+Cmd+B.
- Run tab picks up run scripts from a .termic.yaml in the workspace.
- File tree, open editors, and the Git panel auto-refresh when an agent finishes a turn.
Improvements
- Clear focused terminal moved from Cmd+K to Shift+Cmd+K (Cmd+K now opens the command palette).
- The command palette and the Cmd+P, Shift+Cmd+F, and Cmd+N finders now read with more contrast, on a soft dim that fades in and out instead of snapping.
Bug fixes
- OSC 52 clipboard: fixed garbled copies from agents that double-encode UTF-8 (for example em dashes landing as mojibake).
- Bottom terminal: closing its last shell now stays closed across restarts instead of reopening on its own.
- Dashboard: the projects list now scrolls when it overflows, and projects with active workspaces sort to the top.
- macOS Dictation no longer types every word twice in the terminal.
- Creating a worktree from the sidebar menu now autofocuses the name input.
[0.13.4] - 2026-06-16
Remember markdown view mode, customizable branch prefix, copy on select, focus fix.
Features
- Markdown files remember your last view (editor, preview, or split) and open new docs that way.
- Copy on select: selecting text with the mouse in any terminal copies it to the clipboard automatically. On by default, toggle in Settings, General.
- Customizable branch prefix for new workspaces in Settings, General (default "feature"). Leave it empty for no prefix.
Bug fixes
- The bottom scratch terminal now grabs focus the first time you open it with Shift+Cmd+D, instead of needing a second press.
[0.13.3] - 2026-06-15
Prompt library, an editor breadcrumb that reveals files in the tree, and multi-repo Git fixes.
Features
- Prompt library: a Prompts menu in the top bar with built-in prompts (Review, Write tests, Security review, Explain the changes, Commit) plus your own. When you fire one, pick where it runs: any running agent (queued if it is busy) or a new agent with the CLI of your choice, and tweak the prompt before sending. Manage, reorder, disable, and reset prompts in Settings, Prompts.
- Editor breadcrumb under the tab bar: click any path segment to reveal and expand it in the file tree, plus copy-path and open-in-file-manager buttons.
- Hide inactive projects: an option in the project list menu folds projects with no agents into an Inactive Projects section (with a count) at the bottom of the sidebar, so the list stays focused on what you are working in.
Improvements
- Multi-repo Git tab shows a pill only for repos that have changes (even when just one does), so the row stays focused on what you are actually editing.
- Smooth drag-to-reorder for projects in the sidebar.
- The file finder (Cmd+P) now matches the find-in-files width.
- Sidebar menus (agent picker, project options, workspace actions) open to the side and scroll within tall menus instead of overflowing the window in a short window.
Bug fixes
- Pressing Tab in the code editor now indents (Shift+Tab dedents) instead of jumping focus to a toolbar button.
- Git tab: staging, unstaging, or discarding a file now moves focus to the next file in the list, and closes the preview diff once none are left.
- Git tab: Cmd+Enter from the commit subject or description now commits, and the preview diff closes after you commit.
- The Git tab no longer flashes empty when the window regains focus; it refreshes in place and only reloads when you switch projects.
- GitHub Copilot CLI: queued messages and fired prompts now submit reliably instead of sitting unsent in Copilot's input.
- Creating a new workspace under a collapsed project now expands the project first, so its name prompt is actually visible.
- Diff view: the Open button now opens the file in the editor (the external open option is gone).
- The project list menu tooltip no longer stays stuck open after you pick an item.
[0.12.4] - 2026-06-14
Fix sluggish UI on Linux by keeping GPU rendering on for non-NVIDIA GPUs.
Bug fixes
- Linux performance: the whole UI (not just the terminal) could feel laggy because termic switched off WebKitGTK's GPU accelerated renderer on every X11 session. It now stays on for AMD, Intel, and nouveau, and is only adjusted for the proprietary NVIDIA driver (DMA-BUF on X11, explicit-sync on Wayland).
[0.12.3] - 2026-06-14
Completion sound now plays, and bun run works in sandboxed workspaces.
Bug fixes
- Completion sound (#34): play it directly so it is audible on modern macOS, where the notification banner had stopped carrying the sound.
- Sandbox (#35, #36): bun run and bunx, and any tool that canonicalizes its working directory, now work in enforcing workspaces instead of failing at startup with a CouldntReadCurrentDirectory error.
- Terminals are no longer sandboxed (#32): a plain shell or a custom terminal entry (docker, ssh, repl) you open yourself is never caged, so git, ssh, and shell history work in a sandboxed workspace. Agents and custom-command workspaces stay sandboxed (they run automated tools against your repo).
[0.12.0] - 2026-06-13
Leave PR-style review comments on diffs and send them to an agent.
Features
- Inline review comments (#28): hover a line in a diff for a one-click comment button, or select a range, and leave GitHub-style feedback. Comments are batched per workspace.
- Send the whole batch to a running agent as one message. Each comment carries its quoted source, so the agent can still find the spot after line numbers shift, and sending focuses that agent's terminal.
- A pulsing footer pill shows how many comments are pending so they are not left unsent. The composer sends on Enter (Shift+Enter for a newline).
[0.11.8] - 2026-06-13
Linux fixes: terminal copy/paste shortcuts and faster typing on NVIDIA/software WebGL.
Bug fixes
- Linux: terminal typing no longer lags on NVIDIA or Wayland setups where WebKitGTK fell back to a slow software renderer (the DMA-BUF GPU path is now disabled in those cases).
- New GPU (WebGL) terminal renderer toggle in Settings, Appearance (Linux and Windows): turn it off if typing feels slow and the plain renderer is faster on your machine.
- Linux/Windows: terminal copy/paste now reach the system clipboard. Select text and press Ctrl+Shift+C to copy, Ctrl+Shift+V to paste (rebindable in Settings, Shortcuts). Plain Ctrl+C stays SIGINT for the shell.
[0.11.6] - 2026-06-12
Custom terminals in the new tab menu, plus notification completion sounds.
Features
- Custom terminals (#27): add your own terminal entries (docker exec, ssh boxes, REPLs) in Settings, Agents & Terminals. They appear under New terminal in the + tab menu and run through your login shell.
- Completion sounds (macOS): pick which sound desktop notifications play when an agent finishes a turn (Settings, General).
- New {workspace_path} placeholder for agent args and terminal command lines, expands per worktree.
Improvements
- Diff view: side by side now disables itself only for genuinely new or deleted files, not files emptied in the worktree.
[0.11.5] - 2026-06-12
Korean and CJK terminal input fixed, plus Linux AppImage rendering and install fixes.
Bug fixes
- Fixed: typing Korean (and other IME-composed CJK input) into a terminal no longer drops characters. Composed syllables now reach the shell intact, so the agent and bottom split shells handle CJK input correctly (#29).
- Fixed: blank gray window on Linux X11 systems (NVIDIA and virtual machines included).
- Fixed: blank white window on Linux systems with newer Mesa drivers. The AppImage no longer bundles libwayland, which broke the host's EGL setup.
- Fixed: AppImage installs failed with 'Symlink target not found' in Gear Lever and AppImageLauncher.
- Fixed: the app icon now shows in Linux launchers and docks after integrating the AppImage.
- The Linux AppImage now builds on Ubuntu 22.04, so it runs on distributions with older glibc (Debian 12, Ubuntu 22.04 and newer).
[0.11.4] - 2026-06-12
Split a workspace into two side-by-side panes. DontPayFull.com joins as our first company sponsor.
Features
- Split a workspace into two side-by-side panes (#25). Each pane has its own tab strip and can run agents, terminals, or shells, and you can drag a tab between panes to move it.
- Each pane tracks focus on its own: only the active pane's tab is highlighted, and opening a file or queueing a message targets the focused pane.
- The message queue button follows the focused pane, so you can queue work for either agent independently.
Sponsors
- DontPayFull.com is Termic's first company sponsor. If your company builds on AI developer tools and wants to support open source, consider joining them on GitHub Sponsors.
[0.10.11] - 2026-06-11
Quality-of-life improvements across the app.
Features
- Editor tabs now reload from disk when the app regains window focus, so files an agent just edited are always current. Tabs with unsaved changes are never touched.
- Markdown preview tabs also refresh on focus.
- Changelog entries are now organized into sections (Features, Bug fixes, Sponsors) in both the in-app dialog and on the website.
Bug fixes
- Right panel All files and Git tabs now stretch full width with a clear active indicator, matching the agent tab style.
- Bottom terminal strip: a visible border now separates the tab strip from the status bar when collapsed.
[0.10.10] - 2026-06-11
All agent tabs now persist and auto-resume after restarting the app.
Features
- Secondary agent tabs (the + button) are now durable: every agent tab is restored on relaunch and resumes its own session independently, so claude and codex can run side by side in one workspace across restarts (#23).
- Closing a secondary agent tab removes it for good; closing the main agent tab just stops it, and it resumes when the workspace reopens.
- Existing workspaces migrate automatically and keep resuming their current conversations.
Bug fixes
- Ctrl+C on make dev / make run now reliably tears down the whole dev stack.
[0.10.9] - 2026-06-10
Sidebar refreshes immediately after archiving a workspace; terminal links open via the system opener.
Features
- Terminal links (Cmd or Ctrl click) now open through the system opener for more reliable cross-platform behavior.
Bug fixes
- Archiving a workspace now updates the sidebar right away instead of staying stale until the next app reload.
[0.10.8] - 2026-06-10
Fix missing app icon on Linux.
Bug fixes
- The app icon now appears in the taskbar and launcher on Linux. The 512x512 PNG was present in the repo but not included in the AppImage bundle.
[0.10.7] - 2026-06-10
GitHub Copilot support, clone any agent, drag-to-reorder agents, and sponsors section.
Features
- GitHub Copilot CLI is now a built-in agent with the classic Copilot icon, live /yolo on/off toggle, session-id based resume, and sandbox paths pre-configured.
- Clone any agent from the Settings tab: the Clone button copies all settings into a new custom agent you can override independently. Cloned agents show an 'extends: parent' badge.
- Drag agent tabs left or right in Settings to reorder them. The order is saved immediately and reflected everywhere: dropdowns, sidebar, title bar.
- Added a Sponsors section to the website and README.
Bug fixes
- Cloned and custom agents now show the correct brand icon everywhere (sidebar, top tabs, title bar, dropdowns, dialogs). Previously only the Settings page used the right icon.
[0.10.6] - 2026-06-10
Redesigned message queue, an optional work-in-progress spinner, and hidden-file patterns for the file tree.
Features
- The message queue is now a low-friction popover: add messages and they auto-send each time the agent finishes a turn, with no Start or Stop. Open it from the bottom bar, pick which agent, and see a live count per agent.
- New optional Work-in-progress indicator (Settings, General): show a spinner on an agent's tab and in the sidebar while it is working. It is off by default, and a stuck spinner clears itself after a few minutes.
- Hide clutter from the All files tree with glob patterns: a personal list across every project (Settings, General) and a per-repo list committed to .termic.yaml (Settings, Repositories), with one-click presets like Python, Node, and Build output. The Cmd-P file finder respects them too.
- Report a bug now opens a prefilled GitHub issue instead of an email.
- Markdown preview now uses the full pane width instead of a narrow centered column.
- The bottom status bar is tidier: shorter sandbox labels (Sandbox: enforcing, monitoring, or off) and consistent heights and text sizes across every bottom bar.
Bug fixes
- The archive confirmation wraps long workspace and branch names instead of clipping them.
- Switching bottom terminal tabs with the keyboard now focuses the new tab so you can type right away.
- Resume args override now applies only to the main agent tab. Tabs added with the + button always start a fresh session.
- Multi-repo member directories no longer disappear from the file tree when hidden-file patterns are configured.
[0.10.4] - 2026-06-09
Preview Markdown files with rendered text and Mermaid diagrams, plus git and editor fixes.
Features
- Open a Markdown file (.md, .markdown, .mdx) and switch between Editor, Preview, and Split with the toggle in the toolbar.
- Mermaid code blocks render as diagrams in the preview, with a clear error box if a diagram has a syntax error.
Bug fixes
- The Git changes panel now lists files inside a brand-new folder individually, instead of collapsing the whole folder into one entry with an empty diff.
- Opening a binary file (like .DS_Store) no longer leaves its error stuck on the next file you open, and now shows a plain message that the file is not text.
[0.10.3] - 2026-06-08
Terminals use your real shell and environment, clickable links, and Settings fixes.
Features
- New terminals now launch your real login shell (zsh, bash, or fish) instead of always zsh, and pick up a changed default shell right away.
- Agents and your setup and run scripts now inherit your login shell environment, so tools like bun and your $EDITOR (Ctrl+G in Claude) work the same as in a normal terminal.
- URLs printed in a terminal are clickable: hover to underline, Cmd or Ctrl click to open in your browser. Works in agent and scratch terminals, on macOS and Linux.
- New Workspace: paste a full branch name like username/my-feature and it is used as-is, with no prefix to fight. The sandbox control is now clearly labelled.
- Sandboxed agents no longer receive secrets exported from your shell config, and an activated Python or Conda environment is no longer pinned onto every workspace.
Bug fixes
- Settings: the spacebar now works in agent argument fields, so you can enter multiple arguments.
[0.10.2] - 2026-06-08
Resume agents from a custom session name, per workspace.
Features
- New per-workspace Resume args override (workspace menu). Set custom resume arguments like --resume {WORKSPACE_NAME} so the agent resumes a named session instead of the auto-managed one. Placeholders {WORKSPACE_NAME}, {WORKSPACE_SLUG}, and {BRANCH} expand at launch. Save applies on the next launch, or Save and restart relaunches the running agent right away.
- The workspace row menu now uses a clearer three-dots icon instead of a settings cog, so it no longer looks like the project Settings button.
[0.10.1] - 2026-06-08
Terminal editors keep their Ctrl keys, plus an optional Option as Meta key.
Features
- New Appearance setting: Use Option as Meta key. Turn it on so Option+key acts as Meta/Alt in terminal editors, matching Terminal.app's option. It is off by default, so Option keeps typing accented characters until you opt in.
Bug fixes
- Terminal-based editors (vim, emacs, nano) now receive Ctrl key combos again. On macOS, keys like Ctrl+P, Ctrl+W, Ctrl+K and Ctrl+S go to the focused terminal instead of being captured for app shortcuts. The app's own shortcuts still work with Cmd.
- Clicking Changelog on the What's new card now dismisses the card.
[0.10.0] - 2026-06-07
New Monitoring sandbox mode that logs every access so you can build an allow-list.
Features
- New: a third sandbox mode, Monitoring. It sits between Off and Enforcing: the agent runs with full access, but Termic records every file and host it touches and flags the ones an Enforcing sandbox would have blocked. Watch a real session, then build a precise allow-list before you switch the workspace to Enforcing, so the agent runs with low friction from the start. Pick the mode (Off, Monitoring, or Enforcing) when you create or edit a workspace.
- The blocked-requests popover doubles as a live activity log in Monitoring mode, with an Aggregate view grouped by folder and a Detailed view. Would-block accesses sort to the top for both paths and hosts, so the things you actually need to allow are right there. Click any row to add it to the allow-list, exactly like in Enforcing mode.
- Two toggles keep monitoring light and focused: Only would-block (on by default) records just the accesses an Enforcing sandbox would deny, and Exclude workspace dir (on by default) ignores the agent's own working tree. Both gate recording itself, not only the display, so long sessions stay fast and memory stays bounded.
- Hosts you allow per agent now persist in Settings, Agents, under Sandbox allowed hosts, and apply to every workspace that uses that agent, so you set them once.
- The Enforcing sandbox is now a pure allow-list: nothing is reachable unless you have allowed it, rather than a deny-list of known-sensitive paths. File and folder names stay enumerable, but their contents stay protected.
- New: per-workspace YOLO. Toggle auto-approve for every agent in a workspace from its menu in the sidebar; it is saved per workspace and shown as a red flash badge. Enforcing sandboxes turn it on automatically, since the cage is the real boundary. The old global toggle is gone.
- Multi-repo workspaces: Cmd+P (file finder) and Cmd+Shift+F (search) now look across every member repository, serially, with each result prefixed by the repo it came from. Both work even while a terminal is focused.
- Multi-repo workspaces: clicking a changed file in a repo-root member now opens its diff, and adding a member repo whose folder does not exist yet creates it on submit (git init plus a seed CLAUDE.md).
- Spotlight now appears only for worktree workspaces, where it makes sense, and is hidden for repo-root, multi-repo, and non-git workspaces.
- Git panel: switching between repository pills clears the current selection and closes the open diff, and the first repository with changes is selected automatically when you open the Changes tab.
[0.9.0] - 2026-06-06
A Fork-style Git panel: stage, unstage, and commit without leaving Termic.
Features
- New: the right panel's Changes tab is now a full Git staging area. It splits into resizable Unstaged and Staged panes so you can stage exactly what you want and commit it, without dropping to a terminal or a separate Git client.
- Stage or unstage a file by clicking the arrow on its row, double-clicking it, or using Stage all / Unstage all in each pane's header. In tree view, hovering a folder stages or unstages everything under it at once. After staging a single file it stays selected in its new pane, so you keep your place.
- Three ways to view the file lists: a collapsible Tree (the default), a Combined list grouped by directory, and a flat List of full paths. There's a filter box and a Hide untracked files toggle.
- Click a file to select it: the row stays highlighted and its diff against HEAD opens in the main area, so selecting and reviewing are one gesture.
- Commit form at the bottom: a subject, an optional description, and a split button that does Commit or Commit and Push (it remembers your choice). The first push of a new worktree branch sets its upstream for you.
- Discard a file's changes with Shift+Cmd+D (it asks first): tracked files are restored to HEAD, untracked files are removed.
- Multi-repo workspaces get a row of wrapping sub-tab pills, one per repository with changes, each badged with its own file count. Selecting a pill switches the whole staging area, including the commit form, to that repo.
- New shortcuts, both rebindable in Settings, Shortcuts: Cmd+S stages or unstages the selected file, Shift+Cmd+D discards it. A header refresh button reloads the file tree and Git status on demand.
- The diff viewer now opens in unified layout by default; side-by-side is still one click away and your choice sticks.
[0.8.2] - 2026-06-05
Non-git projects, import existing worktrees, drag to reorder tabs, and a shortcuts cheat sheet.
Features
- New: non-git projects. Add a plain folder that is not a git repo (for example a parent directory holding several repos) and run agents at the folder root so one agent can see every repo under it. Works for multi-repo projects too: the shared knowledge host can now be a plain folder while each member repo still gets its own worktree.
- New: import an existing worktree. The New workspace dialog now offers to adopt a git worktree that already exists on disk (created outside Termic, or whose entry was lost) instead of always branching a fresh one. It only appears when there is actually a worktree to import.
- New: drag to reorder tabs. Grab a tab in the top strip and drag it; the tab follows your cursor and the others rearrange live.
- New: a searchable keyboard shortcuts cheat sheet. Press Cmd+/ to open a read-only list of every shortcut, with an Edit button that jumps to Settings to rebind them.
- Closing an agent tab now asks for confirmation first, so an accidental Cmd+W no longer ends a running session instantly. Plain terminal tabs still close immediately.
- Desktop notifications now show the project and workspace name instead of the terminal name.
[0.8.1] - 2026-06-04
Spotlight: run any workspace from your repo root, safely. Plus big terminal upgrades.
Features
- New: Spotlight. Sync one workspace's changes into your repository root so you can run and test your whole dev stack against it, instead of from the isolated worktree. Enable it per project in Settings, Repository, under "Scripts & run" (off by default). Start or stop it from a workspace's menu in the sidebar, or from the new Spotlight tab in the right panel.
- Spotlight syncs three layers automatically: committed changes on the branch, uncommitted edits in the working tree, and untracked files (honoring .gitignore). A background watcher re-syncs within a couple of seconds whenever files change in the spotlighted workspace, so the repo root always mirrors what the agent is doing.
- How Spotlight differs from Conductor's, and why it is safer: Termic never writes a commit onto your branch. It checks out the workspace's commit at the repo root as a detached HEAD, so your branch ref never moves.
- The Spotlight tab shows a live sync log that names exactly which files moved on every pass (committed, uncommitted, and untracked). You always know the precise state of your repo root.
- Run while spotlighted is a first-class feature, executed at the repo root in its own tab as a real Run button (not a raw shell). When you switch Spotlight to a different workspace, Termic stops the old run and automatically restarts it against the new target.
- Spotlight guardrails: only one workspace per project can be spotlighted at a time, the repo root must be on a clean branch to start, and stopping fully restores the repo root (re-attaches your branch and removes copied untracked files).
- New: drag and drop a file onto a terminal to insert its path at the prompt, matching macOS Terminal and iTerm2.
- Drag and drop is sandbox-aware: when you drop a file onto a sandboxed agent, Termic asks how to share it. Choose to copy it into a temp folder the sandbox already allows, or add its folder or the exact file to the workspace's allow-list.
- Terminals now support the OSC 52 clipboard sequence, so copy and paste work inside Docker containers and over SSH sessions.
- Inline image rendering in terminals: both the iTerm2 inline image protocol and Sixel.
- Unicode 11 wide-character support, so CJK text and emoji take the correct width and no longer smear the cursor.
- Find in terminal with Cmd+F: live highlighting as you type, with Enter and Shift+Enter to cycle forward and backward through matches.
- Text selection contrast bumped significantly across every theme, so highlighted text is legible everywhere.
- Claude always shows the workspace name in its prompt header, including after a session resume.
- Configurable terminal scrollback in Appearance settings (default 5000 lines; the scratch shell keeps half to stay light).
- New: configurable keyboard shortcuts. Rebind any shortcut in Settings, Shortcuts, and reset everything back to the defaults in one click.
- New: queue messages for an agent. When work-done detection is on, each time the agent finishes a turn the next queued message is sent automatically. Set a repeat count to send the same message several turns in a row.
- Queues are per-agent and run independently, so agents in a split can each work through their own list at the same time.
- Custom-command workspaces: edit the launch command after creation from the workspace's menu, and write it as a multiline shell script.
[0.7.11] - 2026-06-01
Reliable work-done badges, working desktop notifications, and a macOS Tahoe alignment fix.
Features
- Work-done badges are now reliable across Claude, Gemini, and Codex. The blue dot appears when an agent finishes, and the tab you are actively watching never shows a false badge.
- Desktop notifications finally work. The old approach was silently dropped by macOS. Turn them on in Settings, General. They fire only for agents in workspaces you are not currently viewing.
- New per-agent Work-done detection toggle in Settings, Agents, for custom CLIs whose output causes false positives.
- Agents that emit no status signals (custom CLIs) show an attention bell instead of a done dot, since finished and waiting for input cannot be told apart.
Bug fixes
- macOS Tahoe: the window traffic lights now line up with the toolbar in installed builds, not just in local dev builds.
[0.7.7] - 2026-05-29
Launch workspaces with a custom command, plus sidebar polish.
Features
- New "Custom command" option in the project menu: open the repo's current branch and launch your own command (ssh, a dev server, a REPL) in a terminal instead of an agent. The command runs in a login shell and drops back to a usable shell when it exits.
- Sidebar: a workspace now stays highlighted as active while an open file or git diff is showing, not just when a terminal tab is focused.
- Multi-repo: member tabs in the footer collapse into a "+N" menu when they don't all fit, so the Run and Open buttons are never clipped.
[0.7.6] - 2026-05-29
Fix white corners on macOS Tahoe.
Bug fixes
- macOS Tahoe: fixed white corners appearing at the window edges. The content-view clip now sets the window background to transparent so clipped corner pixels show the desktop instead of a white notch.
[0.7.5] - 2026-05-28
macOS Tahoe window corners and traffic lights, maximized state restores, steadier agent resume.
Features
- The window restores its maximized state on relaunch if you quit while maximized.
- Repo-root agent tabs resume reliably after a workspace sleeps and wakes, instead of occasionally starting a fresh session.
Bug fixes
- macOS Tahoe (26): window corners now match the system's larger rounded frame, so the dark background no longer pokes out as black notches. The clip re-applies after fullscreen and zoom transitions.
- macOS Tahoe (26): the traffic-light buttons sit lower so they line up with the toolbar icons again.
- β§β[ and β§β] cycle the bottom-split shell's tabs when it has focus, and no longer skip the last tab.
[0.7.4] - 2026-05-28
Repo-root workspaces auto-resume claude / gemini sessions, multiple per project. Editor search panel re-skinned, terminal links match iTerm.
Features
- Repo-root workspaces now auto-resume claude and gemini sessions. Termic mints a session UUID on first spawn and resumes it on every spawn after, so the shared repo dir does not pull in sessions you ran outside termic.
- Create multiple repo-root workspaces per project. The sidebar prompts inline for a name (defaults to claude-1, gemini-1, etc.) so each one has its own session. Terminal rows skip the prompt because shells have no session to resume.
- Worktree auto-resume is unchanged. Every CLI's directory-based resume keeps working because each worktree has its own dir.
- Multi-repo member picker has a new Add repo from disk option that opens a folder picker, registers the path as a standalone project, and adds it as a member in one click. Available in both New Project and the project's Repository edit panel.
- Editor Find / Replace panel re-skinned: flat controls in termic's palette, no bevelled WebKit gradient buttons or bright green focus rings.
- Terminal links match iTerm and Ghostty. Underline and pointer appear only while Cmd or Ctrl is held; Cmd-click opens in the system browser.
Bug fixes
- Workspace rename input is properly focused on open (was racing the dropdown close).
[0.7.3] - 2026-05-27
Find in files is responsive on huge repos; Run focuses its own tab.
Features
- Find in files: results from git grep are batched in Rust before they cross IPC, so a hot search on a giant repo no longer floods the WebView main thread and freezes Cancel / Esc.
- Find in files: visible Cancel (X) button while a search is running, and stale Tauri listeners from superseded searches are now released.
- Find in files: 350ms debounce and a 3-character minimum so slow typing on a big repo does not fire git grep mid-word.
Bug fixes
- Run footer: clicking Run focuses the Run tab even when Setup was active (was asymmetric).
- Setup / Run scripts: PYTHONUNBUFFERED so Python output streams line by line instead of pausing in 4-64 KB blocks.
[0.7.2] - 2026-05-27
Sidebar expand modes, no autocorrect in editor search, Run toolbar refresh.
Features
- Sidebar: pick how workspaces reveal their agents (chevron only, click name, or auto open) from a new menu in the PROJECTS header. The same menu has Expand all / Collapse all and remembers your default.
- Auto open mode resets a manual chevron-collapse on wake, so a sleeping agent always comes back expanded.
- Run footer: persistent Setup tab is gone. The toolbar now has Setup / Run / Open plus a one-click Copy URL; Setup output appears in a transient tab only after you invoke it. Setup button hides entirely on projects with no setup script configured.
- β₯ββ / β₯ββ and β[ / β] now cycle workspaces in sidebar order (grouped by project), not the random JSON load order.
- Editor: Find / Replace inputs no longer get spellcheck or autocorrect squiggles.
[0.7.1] - 2026-05-26
Signed Linux AppImage with in-app self-update.
Features
- Linux x86_64 AppImage now ships with every release, signed by the same ed25519 key as the macOS build, so the in-app Update pill lights up on Linux exactly like it does on macOS.
- Download the AppImage from the Releases page, chmod +x, run. Keep it somewhere writable (~/Applications works) so the updater can replace it in place.
- Sandbox is still macOS-only on Linux; everything else (worktrees, parallel tabs, find-in-files, themes, in-app diff) works the same.
[0.7.0] - 2026-05-26
Sender-driven work-done indicator, Grok support, worktree polish.
Features
- Work-done indicator: per-CLI title + OSC 9;4 classifier (Claude / Gemini / Codex) with byte-quiet, scrollback, and content-hash gates so a static 'β¦ Working' title doesn't false-fire done. Blue bullet on the tab when a turn finishes, sticky until you focus the tab or type.
- OS notifications wired through Claude's OSC 9 / OSC 777, with focus-edge routing that drops you on the right workspace and tab when you click in.
- Tab pills now show the raw agent title (spinner glyphs and β³ / β included) so the brand-emitted status surfaces as real signal instead of getting stripped.
- New agent: xAI Grok auto-detected. --always-approve as YOLO, --continue as resume, sandbox paths under ~/.grok.
- Welcome wizard CLI rows recolored: installed agents are green, missing ones neutral gray. The old red 'not installed' read as a wall of failures when most users have one or two CLIs.
- Sandbox shield button moves to the UnifiedBar next to Review. Sidebar rows for sandboxed workspaces show an always-on green shield that swaps to the cog on hover.
- Workspace cog menu: new 'Copy branch name' and 'Duplicate worktree' entries. Duplicate seeds the new-workspace dialog with the source workspace's branch tip as the base.
- Worktrees create branches via two-step 'git branch --no-track' + 'git worktree add', so deleting a workspace's branch no longer prompts to drop the remote ref it was branched off.
- git-crypt repos now work in worktrees: --no-checkout, symlink the key dir into the per-worktree gitdir, then hard reset so the smudge filter can decrypt.
- Project Settings: Default CLI always includes Terminal (plain shell) as a fallback, picked automatically when no agents are installed.
- Save-sandbox-changes confirm now has a warning-tinted backdrop and yellow ring so it visually separates from the parent dialog you're saving from.
[0.6.0] - 2026-05-25
File finder, find in files, and richer sidebar navigation.
Features
- βP opens a fast fuzzy file finder for the active workspace.
- β§βF runs find-in-files: literal, case-insensitive, .gitignore-aware, streams live (250ms debounce so a typing burst issues one search, not five).
- β₯β / β₯β now walk every visible sidebar row (workspaces plus their expanded terminal tabs); β₯ββ / β₯ββ still hops workspace-only.
- β1..β9 switches between tabs in the active workspace (Chrome / VS Code convention) instead of jumping workspaces.
- Workspace breadcrumb drops the redundant 'name on branch' when the workspace was never renamed; repo-root workspaces get the same REPO ROOT chip the sidebar shows.
- Tab titles no longer carry the agent's leading state glyph (Claude's β³, Gemini's β); busy/idle detection still uses the raw title.
- Project menu has a new Terminal entry that opens the repo in a plain shell tab.
- Denied hosts popover gets one-click copy for hosts and paths.
- Sandbox now allows ~/.local/share (uv, pipx, pnpm, mise) and ~/.config/git/{ignore,config,attributes} by default.
- Multi-repo Layers marker sits after the project name so rows stay vertically aligned.
[0.5.6] - 2026-05-25
Wider Changelog dialog so release notes have room to breathe.
Features
- Changelog dialog is now noticeably wider (max-w-2xl) so multi-line bullets stop wrapping into narrow ribbons.
[0.5.5] - 2026-05-25
Save sandbox changes without restarting the agent, plus a make run alias.
Features
- Sandbox dialog now has a Save without restart button that persists the new profile while leaving the running agent on its OLD profile until it next respawns.
- Save & restart terminal button gets a clearer restart icon.
- make run is now an alias for make dev.
[0.5.4] - 2026-05-25
Update card puts the Changelog link above the Update button.
Features
- Reordered the sidebar Update card so the Changelog link sits between the summary and the Update button.
[0.5.3] - 2026-05-24
Scrollable sidebar, smarter workspace collapse, inline .termic.yaml editing, bulleted changelog, reordered agents.
Features
- Sidebar project list now scrolls when it overflows, and the Update card floats above the footer so it stays visible no matter how far you scroll.
- Workspaces auto-collapse when they have a single terminal and auto-expand the moment a second tab is added.
- Idle workspaces show a moon icon in the sidebar.
- Clicking a focused workspace toggles its collapse; clicking an unfocused one just activates it.
- Inline .termic.yaml editing for scripts and sandbox settings, with a .termic.yaml / Personal toggle.
- Live syntax-highlighted code preview in Appearance settings.
- New sandbox bypass-permissions preference.
- Removed the one-agent-per-repo-root limit.
- No spellcheck on rename inputs.
- Changelog dialog now shows each version as a short headline plus a bulleted list of changes.
- Sidebar Update card shows just the headline. The full details live one click away in the Changelog.
- Reordered the built-in agents to Claude, Codex, Antigravity, Gemini across the new-tab menu, new-workspace picker, review picker, and Settings.
[0.5.0] - 2026-05-22
Broadcast to multiple agents, premium file explorer, 8 syntax themes.
Features
- Broadcast commands to multiple agents concurrently with the new Megaphone dialog (β§βB).
- Premium file explorer with Sublime-style preview tabs.
- 8 syntax themes and razor-sharp static typography.
- Added standard Google hosts to the baseline sandbox allowlist for Gemini and Antigravity.
Bug fixes
- Fixed a macOS sandbox crash and connection blocks for the Antigravity agent.
[0.4.6] - 2026-05-21
Sharper keyboard focus for terminal tabs.
Features
- Closing a tab keeps focus in the same pane.
- New tabs grab focus on spawn.
- βT opens the new-tab menu.
Bug fixes
- Fixed a doubled border on the collapsed Setup/Run footer.
[0.4.5] - 2026-05-20
In-app self-update prompts and a detailed Changelog dialog.
Features
- Self-update in-app prompts.
- Detailed Changelog dialog.
- Optimized, decoupled terminal rendering logic.
[0.4.4] - 2026-05-20
Missing glyphs fall back to bundled JetBrains Mono.
Bug fixes
- Characters missing from your chosen terminal font now fall back to the bundled JetBrains Mono instead of a thinner, mismatched system face.
[0.4.3] - 2026-05-20
Two-step Esc to close Settings, Antigravity sandbox access to ~/.gemini.
Features
- Esc now closes the Settings panel in two deliberate steps.
- Sandbox grants the Antigravity agent access to ~/.gemini.
[0.4.2] - 2026-05-20
Save from the built-in editor, Antigravity CLI, plain shell tabs.
Features
- Save files straight from the built-in editor with a dirty-state indicator.
- Use the new Antigravity CLI.
- Open plain shell tabs alongside your agents.