Repository navigation
Releases
Tug 0.9.3
This release adds sharing turns from a session, live project directories, and @ mentions of sessions and commits, makes workspace switching immediate, makes shortcuts follow your keyboard layout, and fixes a batch of bugs reported by people trying Tug for the first time.
New
- Share Turns. A Session card can now hand part of its conversation to someone else.
/share, File ▸ Share Turns…, or Share from Here… on a transcript row opens a shade at the bottom of the card: select the prompts, answers and shell exchanges you want, choose how tool calls appear (summaries, full, or none) and a format (PDF, image, or Markdown), then Preview, Copy, Save or Share. Secrets are removed and your home folder is shortened to~before anything leaves, and the PDF and image are drawn from the card's own transcript in your current theme. - Add Project Directory. A session can now reach a second folder without leaving its own, the way
/add-dirworks in Claude Code in the terminal. Use/add-dir, Session ▸ Add Project Directory…, or the new folder-plus button in the session masthead. The folder is granted to the running session at once and kept across relaunches, a checkbox offers to include it in every future session for the project, and its files appear in@completion./remove-dir, or thexbeside a folder in the Session Summary, gives it back. - @ mentions of sessions and commits. Typing
@in the Session card or Overview composer now offers sessions and commits beside files.@@narrows to sessions and@#to commits. - Tooltip Delay. Settings ▸ General ▸ Tooltip Delay sets how long a tooltip waits, from 0s to 0.7s, or Never. The default is now 0.2s, much quicker than before.
- Rename a session from the session card masthead. The pencil in the masthead's
⋯controls, Rename Session… in the masthead's right-click menu,/renameand Session ▸ Rename Session… all turn the name into a text field in place. Return or clicking away commits and Escape cancels. The rename sheet is gone, and Rename Session… now sits at the foot of the session menu. - Name a workspace as you make it. New Workspace and Duplicate Workspace now ask for the name first, in a dialog that zooms in from the control you pressed and out to the workspace's new row. The workspace loads behind the question, so committing the name lands on finished cards, and Cancel makes nothing.
Improved
- Switching workspaces is immediate. The arriving workspace appears whole at once, with each card's live page, its last frame or a skeleton, and nothing of the workspace you left shows through afterwards. Switching between workspaces with different themes no longer flashes the sidebar in the departing theme.
- Copying a selection from a session transcript or the Overview card now gives plain text, ready to paste into a prompt, a message or an email. Copy as Markdown (Option-Shift-Command-C) takes the place of Copy as Plain Text there and copies the Markdown. The composer and Text cards are unchanged.
- Command-click now opens a file reference exactly as a plain click does: file paths in the transcript, a file block's header, and files in the Changes list.
- A tooltip now closes the moment the pointer leaves its control, so the tooltip for the neighbouring button appears instead of being held off by the old one.
- The Session Summary has a Project row and a Directories row, and each folder in them opens in Finder with a click.
- A new card opens in the first empty slot instead of stacking onto a card that is already there.
- The Session card's status row always shows an ARC cell, reading
Nonewhen the session drives no arc, so the row no longer rearranges itself. The little-used/taskscommand and its checklist are gone. - Session rows in the Workspaces card now say an arc's phase in words (Executing, Auditing, Stopped) beside its glyph.
- A re-audit now shows its progress. When a commit landing on the base branch makes a finished arc's audit stale, the card holding that arc shows the re-audit as one live block in its transcript: what moved the base, each check as it runs and how it came out, and the verdict. If the re-audit has to wait, the block says what it is waiting for, and the ARC cell reads Re-auditing or Waiting throughout.
- When the AI mentions another session in a reply, it now writes the name in a form the transcript recognizes (
project/callsign, or the session's id), so the mention appears as a live session reference instead of plain text. - The Split or Stack Slot and Move Card commands have moved from the Window menu to the View menu, and say "Slot" where they used to say "Column".
- The installer disk image's background leaves room for whatever Finder draws around the window, so its text is no longer covered.
- The Delete Workspace confirmation wraps onto two lines instead of stretching to fit a long workspace name.
- Strengthen instructions to the model when mentioning sessions so they are properly formatted as atoms in the transcript.
Fixed
- Keyboard shortcuts now follow your keyboard layout. On AZERTY, QWERTZ, Dvorak and other non-QWERTY layouts a shortcut fired on the key at the US position, so Command-A could quit the app. A letter or punctuation shortcut now answers to the key that types that character, as the menu bar already said. Number shortcuts stay on the number row's keys.
- Tug no longer claims the
.pxdextension, which stopped Pixelmator Pro from opening its own documents. A Cython.pxdfile still opens in Tug, which now decides by the file's contents. - Session ▸ Add Working Directory…, a retired command that could crash the app, is gone. Add Project Directory takes its place and works.
/add-dirnow runs instead of only autocompleting. - A commit message being written in the Changes tab no longer turns up in the Prompt tab, and no longer replaces the prompt you had typed, after a relaunch or a transcript reload.
- The loading wave on restoring cards now animates, and is drawn in the card's text color.
- A Session card in a workspace that was not on screen could come back as an empty frame. It now comes up in its own card.
- A Session card bound to an arc could flicker rapidly between bound and unbound.
- An arc stopped and resumed much later is no longer stopped again at once as "went silent", and its Resume offer is withdrawn as soon as the resume lands.
- A card closed from a split now disappears at once instead of lingering while the remaining card moves.
- The Usage sheet reads the tips newer versions of Claude Code print, and shows commands and paths in their own case.
- An empty composer could be drawn only as wide as its placeholder text.
- Alerts and setup dialogs can no longer be left stuck open by a stalled closing animation.
Thanks
Thank you to the people whose reports and feedback shaped this release:
- Justin Garcia (@littlebobert) for the crash report on Add Working Directory, for noticing that
/add-dirautocompleted but would not run, and for asking for faster tooltips (#169). - Chris Messina (@chrismessina) for finding, diagnosing and suggesting the fix for the Pixelmator Pro
.pxdconflict (#170). - Gene (@SemitoneGene) for reporting the Finder controls drawn over the installer's background (#168).
- Jérôme Danthinne (@jdanthinne) for reporting that shortcuts landed on the wrong keys on an AZERTY keyboard (#171).
- Tito Ciuro for suggesting that Copy in the Session card give plain text by default, with Copy as Markdown for the styled version, the more direct UI affordance to rename sessions in the session card masthead, and the suggestion to make Command-click open a file reference exactly as a plain click does.
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit a507d75.
Tug 0.9.2
This release polishes the session picker, drag-and-drop composer focus, and help docs, with a theming audit that fixes several broken color tokens.
New
- A new Getting Started help card (Help ▸ Getting Started) walks through prompting, monitoring, reviewing and committing — it opens automatically the first time you set up a session.
- The session picker now shows a Create button when a chosen directory doesn't exist yet, so you can create it on the spot instead of hunting for it in Finder.
Improved
- Dropping a jot onto the composer now keeps your caret in place and focuses the composer, so you can immediately send it.
- The session menu now shows a dimmed "Current Session" entry when you open it on the session's own card, instead of no row at all.
- The active workspace in the Cards card is now marked only by its eye glyph; the name no longer gets a distracting accent color.
- Shell commands assembled from a simple variable (like
d=/tmp/x && rm -rf $d) are now recognized correctly instead of being blocked. - Declined tool calls are now shown as "steered" with a clear explanation, instead of looking like an error.
- Help documentation now spells out keyboard shortcuts (e.g. "Command-N") instead of using symbols, for clarity.
Fixed
- Fixed several incorrect color references across the app (popups, progress bars, cards, sheets) that could cause elements to render with the wrong color in some themes.
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit 2a6eb3e.
Tug 0.9.1
The inevitable oops release after cutting 0.9.0 yesterday evening.
This release fixes several keyboard and focus bugs in card editors and panes, and makes background sessions and stuck restores behave more sensibly.
Fixes
- Escape now goes to the right place: it closes an editor's autocomplete or slash-command popup instead of being swallowed by the surrounding pane, and a masthead popover can be closed with the keyboard again.
- Running
/diffa second time on the same file now brings the existing Diff card forward instead of opening a duplicate. - Agent task reports now show the actual hand-back message instead of a generic placeholder.
- A session still working in the background keeps its running indicator instead of incorrectly showing as done; once it finishes, it's shown in green.
- The restore screen no longer gets stuck open for up to 20 seconds when a card is parked in the background or stalled — only cards you're actually looking at can hold it open.
- Fixed a case where new cards could lose track of their permission mode setting; new cards now consistently default to Auto.
- Fixed a styling bug where a progress gauge could render in black instead of its intended color on certain overlay screens.
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit 07d7adb.
Tug 0.9.0
This release is a broad one: sessions now read as Done when you weren't looking, switching workspaces is faster and steadier, and find and replace works everywhere you edit text.
Bumped version number from 0.8.x to 0.9.x
- First beta release.
Sessions and workspaces
- A session whose turn finished while you were looking at another card now shows Done — a filled, still dot — instead of looking like it's still running. Attending the session clears it.
- Clicking a workspace in the Workspaces card no longer makes the list jump: the row you clicked stays under your mouse after the switch, and a filter you type is shared across every workspace's card.
- Switching workspaces (or creating one) now shows a clean cut: the workspace you're leaving, then loading skeletons if needed, then the finished workspace — never a half-painted frame in between. Cards that are ready appear with their correct theme and focus state right away, since parked workspaces are kept as finished pictures rather than remade on every switch.
- A press on a Workspaces row or a Layout place now rings the target card's border immediately, instead of waiting for the UI to settle.
Find and replace
- Find and Replace is now available everywhere you edit text — the Text card, and the composers in both the Session and Overview cards — not just the Text card.
- Replace and Replace All got their own toolbar buttons, menu items, and keyboard shortcuts (⌥⌘G, ⌥⇧⌘G), and they visibly refuse when there's nothing to replace.
- Tab now moves between the find and replace fields.
- The find count and replace controls now correctly follow the text as you type or as a document becomes read-only, and your typed replacement text is preserved across a quit.
Editing
- A new Text menu (between Edit and Session) collects transforms that act on the text itself: case changes, line-comment toggling, converting soft wraps to real line breaks (and back), curly-quote conversion, quote-level adjustment, and removing invisible "gremlin" characters.
.heic,.heif, and.avifimages can now be dropped or pasted in as image attachments.- Key shortcuts (⌘, ⌥, ⌃, ⇧, and the arrow/escape/delete glyphs) now render in a custom-cut typeface matched to the rest of the UI, instead of a mismatched system font.
- Quitting Tug (⌘Q or Quit Tug) now asks for confirmation if a session has a turn in progress, so you don't lose in-flight work by accident.
Replace All's button is now labeled clearly instead of just "All".
Fixes
- Files changed by a session rooted in another project now correctly show up on this project's Changes shade, naming the session and project that changed them.
- Centered images in a card now split and scroll correctly when the card is divided.
- Fixed a case where WebKit's cache could serve a stale version of Tug's interface after an update; Tug now purges its cache at launch and recovers automatically if a stale asset is detected.
- Look Up (dictionary lookup) now works from inside card bodies and from background right-clicks, not just the foreground window.
- Tug can now open extensionless and otherwise-undeclared text files (like
Dockerfileor.tsfiles) from the Open File dialog. - Minor polish: Overview's empty state reads "None", the Overview column gains a Clear option, the Text card's status bar is reorganized with tighter spacing, and the status bar now shows counts for a text selection when one is active.
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit 01ba29d.
Tug 0.8.22
Internal release work. Nothing changes in the app.
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit af08d9f.
Tug 0.8.21
A new Data Visualization sheet charts your project, the Overview answers "how do I…" questions directly, and a join now refuses work its audit does not cover.
Charts
- A new Data Visualization sheet (⌃⌘V, or the end of the Session menu) shows every built-in chart — commits, churn, hotspots, test health, arc timelines, token usage, and more — each with a thumbnail and a one-line description of what it tells you. Pick one to draw it, or just ask for a chart in plain language and Tug will find the right one.
- Charts now draw in Tug's own look, matching whatever theme you're using, including colorblind-safe palettes. Hovering a chart shows the exact values under your cursor.
- Mermaid diagrams are gone — charts render as native Tug graphics everywhere instead.
- Bash output with a chart in it now shows the chart even while the terminal block is collapsed.
Help
- Asking the Overview "how do I…" now gets a direct, step-by-step answer for dozens of common tasks — including what you'll see and when something isn't possible — rather than a vague pointer to a document.
- The Overview can now also search and reference your session transcripts, past notes, and project documents when answering questions, not just the help pages.
Arcs
- Landing an arc now checks that its audit still covers it. If rounds landed since the audit ran, the base moved, or no audit has run yet, the join refuses and says why.
Fixes and small changes
- Fixed a case where closing a Session card while a command was running could leave that command (and Claude) still running in the background.
- Fixed new cards sometimes opening under or overlapping the side rails.
- Fixed a case where text could lose its selection position after certain window changes.
- Fixed the caret and line numbers drifting out of alignment with the code when the window is zoomed to something other than 100%.
- Fixed a case where the Overview could stop following new output early and never resume.
- You can now fold and unfold a project's sessions in the Choose Session list with
⌘←and⌘→. - The update download button is now labeled "Pause" instead of "Stop for Now."
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit 6774069.
Tug 0.8.20
Arcs now show readiness from whether their audit is still fresh, read-only documents gain selection and Find, and the app ships help you can ask questions of.
Join and arcs
- Arcs now show readiness based on whether their audit is still fresh — if the underlying code or base moves out from under an approved arc, it goes back for re-checking automatically instead of silently landing stale work.
- The Changes panel now opens up whenever an arc needs your attention — not just when it's ready to join — and shows exactly what's blocking it, one file per line.
- While a join is reconciling, you can now see what's happening step by step in a live log, instead of a bare spinner.
- Joining is faster: the extra pre-join test run that could get stuck behind busy machines is gone, replaced by a clear "last verified" status shown before you join.
- Removed the Join button on the finished-arc summary row — join from the other spots where it still belongs.
- Two arcs editing the same files on the same base are now reconciled against each other automatically as they go, instead of fighting it out at join time.
Editing, selection, and help
⌘A, Find (⌘F), and text selection now work in read-only documents like the transcript and the new Help windows.- ⇧-arrow selection now works correctly after a mouse drag: it extends or shrinks from where you'd expect instead of jumping around.
- Help menu: added Tug Help and a Glossary, bundled with the app. The Overview can now answer questions about how Tug works, with links into the help text.
Performance and polish
- Cards you switch away from stay loaded longer (up to two hours) before being freed, and go dormant later too, so switching workspaces back and forth is snappier.
- A Session card hidden by a workspace switch now comes back reporting the truth: no duplicated messages, and a dot that reflects whether the turn is actually still running.
- Long-running background commands now show up properly in the Jobs list and keep reporting their status instead of appearing stuck, including commands that get silently moved to the background.
- Added Equalize Heights (
⌃⌘E) and Equalize All Heights (⌥⇧⌘E) to even out split-column card sizes. - Smoother card resizing in a few more cases, and several small visual fixes (toast notifications no longer hide behind side panels, selectable help text, clearer rate-limit notices).
- Various wording improvements so the app speaks in plain terms rather than referring to itself as "Tug."
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit b87b0bf.
Tug 0.8.19
Every card in the deck is now its own web view, in its own process, so a busy card can no longer slow another.
Every card is now its own web view
This release rebuilds how Tug draws the deck. Until now the whole deck — every card, every transcript, every sidebar — was one web page running on one thread. Everything that happened anywhere in the app competed for that one thread: a long transcript streaming in, a fold or a column move animating, a dot pulsing on the Overview, all of it queued behind the same door. Six earlier rounds of work had taken as much off that thread as could be taken, and the remaining cost was the engine's own: style, layout and compositing for one document that grew all day. There was no lever left to pull inside a single page.
So the deck is no longer one page. It is a thin shell page that draws the canvas, the rails and the layout, and over it stands one web view per card, each in its own WebKit process on its own thread. The host app places those views, stacks them in the deck's order, and runs every card motion — folds, unfolds, column splits and stacks, flow slides, resize-to-fit, drags — as Core Animation on the card's container, on the render server's clock. A card's content takes its final size before a single frame is drawn, so nothing relayouts mid-motion and the landing has nothing left to fix up.
What that means for you:
- A busy card cannot slow another. Three sessions streaming at once no longer compete with the card you are typing in, and a card's own heavy work (a huge transcript, a big diff) is paid in its own process.
- Motion is smooth whatever the app is doing. Card animations are driven by the host, not by the page, so they hold display rate even while a card's page is stalled.
- Hidden cards go to sleep. A card you cannot see stops listening to its session and stills its motion; after fifteen minutes hidden, or at once under memory pressure, it gives up its process entirely. The card stays in the deck with its session, binding and draft untouched, shows its real phase the whole time, and comes back under its own last frame when you return to it — no blank, no flash of canvas.
- Parked workspaces cost nothing. A workspace you have not visited since launch loads none of its cards until you switch to it, and when you create a workspace or switch between them the new arrangement lands in a single cut.
- Crashes are contained. If one card's page fails, only that card says it needs reloading; the rest of the deck is untouched.
Everything you already use inside a card — selection, copy, find, scrolling, the composer, every chord and menu item, theme and zoom, VoiceOver — works as before. The one deliberate change: you can no longer drag a text selection across two cards, since each card is now its own document.
Session card
- The TIME popup breaks a session's time into working, waiting on you, and offline, and shows the turn in flight alongside the finished ones.
- Choose Session lists sessions grouped by project, with the workspace's own projects first and open, so a new session starts where you are working. Double-click a row to open it.
- Session ▸ Insert File (⇧⌘I) accepts several files at once and inserts them in order.
- Right-click a misspelled word in any text field to see corrected spellings, with Learn and Ignore.
- A card reloads its transcript from disk only for a named reason — launch, opening onto a session, or a restart of the app's server. A plain reconnect keeps everything on screen and fills in whatever ran while the socket was down.
- Fixed sessions that stayed on "Working" or stuck at Stop after the turn had actually finished.
- Fixed a card losing a turn, a question dialog or re-showing a finished prompt when a replay landed over a live turn.
- Fixed sessions in a project being trashed when that project fell off the recent-projects list. Only your own trash gesture deletes a session now.
- Fixed a stray caret position after pasting, and a pasted atom chip leaving the old chip drawn underneath it.
- Long tool-call names in a block header are clipped with an ellipsis instead of painting over the timing.
- Tall popups under the masthead now paint whole over it rather than being cut off by the card.
Bash blocks and test runs
- Long-running commands in a Bash block now show a run panel: a progress bar, one row per test file or unit, and the reds as they land, folded under the latest run when a step is retried.
- Any project's test runner can reach that panel — known runners are wrapped automatically, and a project can declare its own.
Editing
- New Edit ▸ Quote (⌘') and Unquote (⇧⌘') add or remove a Markdown quote level on the selected lines.
- Astro files (
.astro) get syntax highlighting and open as source. - The File card paints selection across blank lines.
- The completion popup scrolls only itself to reveal the selected row, instead of dragging the card's content sideways.
Layout and appearance
- A new Gap row on the Layout card sets the air between cards, with four presets. The default is now Roomy.
- Dragging a sidebar rail's width moves nothing until you let go: a translucent ghost shows the new footprint, and the release settles everything into place.
- Closing a card hands focus to the card you used most recently, not merely the nearest one.
- Workspace folds in the Cards card survive a relaunch, and folding a group in one workspace leaves it open in the others.
- Fixed grid lines dropping out on macOS 26.
- Fixed a system beep on the writing-direction chords ⌃⌘↓/←/→.
Dialogs
- Confirmations are shorter and say plainly what will happen. Closing a card names its kind ("Close Session?"); logging out names your account and plan.
Security
- A page open in your ordinary browser can no longer reach Tug's local API to read files, run code in the deck, or change state, and the host refuses file operations outside the folders each one needs.
- HTML rendered from model output passes a second sanitizer in the page under a Content-Security-Policy that permits no inline script.
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit d673e4a.
Tug 0.8.18
View ▸ Zoom now scales the whole app picture, and the Layout card gains a row for it.
Zoom
- View ▸ Zoom now scales the whole app picture — layout, type, and spacing all grow or shrink together instead of reflowing, and type actually shrinks and grows down to 50%.
- Added ⌥⌘0 to toggle "Actual Size."
- A new Zoom row in the Layout card gives you four quick levels (70/80/90/100%) plus a fifth slot when you're at some other level.
- Zoom steps are noticeably faster and show the target percentage right as you press the key.
- Fixed a flash where folding or unfolding a card while zoomed made part of the card jump or squeeze oddly.
Other fixes
- The "Restoring sessions…" progress sheet is back for cold app launches, so you see real progress instead of blank cards.
- Command output (Bash) now leads with a spinner or progress ring instead of an info icon.
- ⇧⌘I (Insert File) now works reliably, including inserting images directly as image attachments.
- Transcript receipts (commits, pushes, joins, replies, and more) now share consistent, lined-up padding.
- The compaction progress bar is now narrower and centered.
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit c2d88c2.
Tug 0.8.17
Cards, sidebars and panels settle into place without stutters, and a trackpad swipe across the flow strip ends in one continuous motion.
Smoother motion throughout
Cards, sidebars, and panels now settle into place without the small stutters and stray frames that used to show up mid-move — layouts commit to their new size before anything starts sliding, so you won't see a brief flash of bare background or a list re-flowing while it's still in motion.
Flow strip swipes feel more natural
- A trackpad swipe across the flow strip now ends in one continuous motion: lift your fingers and the cards glide straight to the next stop at the speed you were swiping, instead of coasting, pausing, and then hopping into place.
- A quick flick now carries past the next stop instead of always stopping at the nearest one.
- Touching the trackpad again mid-slide catches the strip right where it is, rather than fighting the animation.
Smaller interface touches
- The current card's icon no longer gets tinted differently — only the highlighted title bar marks which card you're in.
- The Layout card's miniature cards now draw each card's real title bar and icon instead of a plain glyph, and the stack/split toggle buttons moved into a row underneath the numbered strip.
- Card-arrangement hover bubbles now show the card's name, session details, and what each spot does.
- The Arcs sidebar keeps "Stop" and "Changes" always labeled, while less-used buttons show their icon alone until you hover.
- "Replay onto main" is now just "Replay" (the destination still shows as a tooltip), fixing a row that used to overflow.
- Resizing a card by dragging its edge now keeps it in its slot by default, instead of popping it loose — a new Layout setting lets you switch back to the old behavior.
- After rewinding a conversation, the sidebar now correctly shows the conversation that's left (turn count, last prompt, timing) instead of stale info.
Long-running commands
Running tests or other long shell commands from a Session card now shows live progress — a line of status and an elapsed-time clock — instead of sitting silent until it finishes.
To install, download Tug.dmg, open it, and drag Tug into your Applications folder.
Tug has an update feature built into the app, so there’s no need to come back here for new versions.
Built from commit 4940d1c.