Repository navigation
Releases
Trellis 1.2.0-beta.1
The first 1.2 beta.
Added
- Changes view: a new branch icon in the right sidebar's dock (⌥⌘G) lists the focused pane's uncommitted git changes as a tree, with lines added and removed per file and folder, status letters (M, A, D, U, C), a filter, and Stage/Unstage for each file. Clicking a file opens its diff in a Review tab with line numbers,
n/pto jump between changes and]/[between files. Git runs with hooks and filters off while reading. Panes on this Mac only. See Changes. - Files view: a new folder icon at the top of the right sidebar's dock (⌥⌘F) shows the focused pane's project as a tree, with a search across every file name, an Open in button for Finder and the editors you have installed (Cursor, VS Code, Zed, Xcode, Sublime Text, JetBrains IDEs…) that remembers your choice, and Copy Path, Copy Relative Path and Insert Path in Terminal. It leaves out
.git, build folders and what.gitignoreignores. Panes on this Mac only. See Files. - Welcome tour: a fresh install opens with a short eight-step tour of windows, sessions, projects, remote work, agents and shortcuts. Its last step sets the appearance, the command line tool and whether sessions keep running after quit. Replay it from Help → Welcome Tour or the command palette. It shows the right sidebar and dock: step 2 introduces them, the agents step shows the Agents view, and the keyboard step lists ⌥⌘F for Files with the other sidebar shortcuts.
- Translucent panes: Settings → Appearance → Background opacity (30–100 %) lets the desktop show through the terminal background, with an optional Blur behind background. Text, colors, selections and the sidebar and tabs stay opaque, and panes stay opaque while Reduce Transparency or Increase Contrast is on.
- Drop files on a pane: dragging files from Finder onto a terminal pane inserts their escaped paths at the prompt, for every file type.
Changed
- Right sidebar and dock: the scratchpad, tasks and agents now share one sidebar on the right, switched from a dock on the window's right edge (⌥⌘E, ⌥⌘T, ⌥⌘A). Each view works with the focused pane; icons that don't apply to it, such as all three in an SSH pane, are dimmed. The dock badges count running tasks and agents that need you, and the Agents view lists every running agent across windows. Pane headers no longer have Scratchpad, Tasks or Agent buttons.
- Agent icons: Claude Code and Codex now show their vendors' logos, Claude Code's in its own orange. Agent definitions can set
"fullColor": trueon an image icon to keep its colors. - Trellis Light: the terminal is now white, with black text and a matching palette, instead of dark. Custom light themes with no terminal colors follow it; those that set terminal colors keep a dark terminal unless they set a light background or dark text. Use another theme, such as My Light from the examples, for dark panes under light chrome.
- Pane padding: terminals now have an 8 pt margin on every side, and the part of a row that doesn't fit is split evenly above and below the rows, so the top and bottom padding always match. Rows were pinned to the bottom before, leaving a varying gap under the pane header.
- Focused pane: with several panes visible, the focused pane's header gets an accent line and tint, and the other panes are slightly dimmed. Nothing is dimmed while the window is inactive or with Increase Contrast on.
Fixed
- Light themes: programs using 256-color indexes, like Powerlevel10k prompts, no longer draw near-black blocks on light terminals. Those colors now follow the theme and stay readable; dark terminals keep exact xterm values, and 24-bit colors are never changed.
- Light themes: text that would be nearly invisible no longer vanishes, such as
\e[30mtext and default text on\e[47mand\e[107mbackgrounds. Readable ANSI colors keep the theme's exact values. - The project setup terminal and the ssh connection console now use the current theme instead of the dark default.
- Inserting columns (DECIC) no longer fills them with reverse video.
- The project editor's "Layout" and "Editor" labels no longer wrap mid-word.
- In Settings → Updates, "Current version" now lines up with the toggles below it.
Downloads
Trellis-1.2.0-beta.1.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-1.2.0-beta.1-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-1.2.0-beta.1-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Trellis 1.1.0
The stable 1.1 release. Coming from 1.0.0, you also get everything listed under 1.1.0-beta.1: remote workspaces, the project library, coding agents, directory jump and sessions that keep running after quit. Repository project files are replaced by the library.
Added
- Show in Finder: right-click a file path, or a selected file name, in a terminal pane. Reveal in Finder on launchable files is now called Show in Finder too.
- CLI help:
trellis --helpworks at every level (also-handtrellis help …) with no app or credentials, andtrellis --version(-V) prints the version. Argument errors point to the command's help.
Changed
- Working agents on tabs: a light moving along the tab's top edge and a breathing icon replace the Working capsule and busy bar, leaving more room for the title. Both are static with Reduce Motion.
- Machine name: pane headers show the machine as a symbol and a name instead of bold green text; connection problems change the symbol and color and are named in words. The bottom bar's window name gets a folder icon.
- Settings sidebar: larger, more detailed Liquid Glass icons.
Fixed
- Editor line numbers: the project JSON editor and scratchpad could miss numbers or draw them over the title.
- Settings → Updates: Current version lines up with the page title.
- Bottom bar: shows the focused pane's machine instead of always Local.
- New tabs in remote windows: a tab or split opened from an agent pane, or from a shell before its first prompt, starts in that pane's folder on the host instead of the home folder.
- Hosts named Local or SSH no longer get the wrong pane tools or the "unverified" directory hint.
- Lost remote connections: "Not sent: reconnecting" appears once per outage, and tabs on that host show a red indicator and a symbol until their panes are back.
- Panes stuck after a reconnect: a pane that can't re-attach keeps retrying, and one whose session is gone from the host ends instead of waiting forever.
Downloads
Trellis-1.1.0.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-1.1.0-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-1.1.0-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Trellis 1.1.0-beta.1
The first 1.1 beta. This release adds remote workspaces, a project library, coding agents and directory jump, keeps sessions running after quit by default, and replaces repository project files with the library.
Added
- Remote workspaces (preview): Open Remote Workspace in File → Hosts… opens a window whose tabs and splits run on that host, in the directory you're in there, and keep running when you quit, close the window or lose the connection. The sidebar shows the connection. A dropped connection reconnects on its own (1 s to 1 min apart, paused while offline, checked again after sleep) and each pane resumes where it left off; when ssh needs your password or a host-key decision it stops and the window's menu offers Reconnect…, and Retry Now skips the wait. Relaunching re-attaches the sessions. A pane's Tasks menu runs the host's tasks in the remote shell, and library projects can launch on a host. The command palette has Open Remote Workspace: , exports keep each remote window's host, and
session.getreports the host's connection (FR-RW01–FR-RW16, FR-RW18). - Remote helper on saved hosts (preview): File → Hosts… can check, install, update and remove the Trellis helper on a Linux (x86_64, aarch64) or macOS host over your own
ssh, with a confirmation, a SHA-256 check on the host and nothing written outside~/.trellis. ssh's prompts appear in a connection console. Remote workspaces use it (FR-RW17). - Project library (preview): Projects at the bottom of the sidebar, File → Projects… (⌘O) and the command palette open a library of projects kept in Trellis (
projects.json), not in a repository. Each project has tabs with colors, splits, pane titles, folders, commands and git repositories at the project, tab or pane level, edited in a form or as JSON, made from an open window (New from Window…) imported from JSON, or exported to a JSON file with Export JSON… (FR-PL01–FR-PL05). Launch… (or Launch Project… in the command palette) asks for this Mac or a saved host and the folder, shows what's there, creates the folder and clones missing repositories in a Setting Up terminal with that machine's own git and credentials, then opens the window, bound to the host when it runs there, and types each pane's command once. Launching again reconciles the same window (FR-PL06–FR-PL08). Export/Import Windows & Hosts carries projects too (FR-PL05). Pane headers show a Git icon for shells inside a work tree, on this Mac and on hosts; hovering it shows the branch, uncommitted changes (●), and commits ahead (↑) and behind (↓) (FR-PL09). - Coding agents (preview): each pane header has an Agent button, next to Tasks, that opens Claude Code, pi or Codex in a new tab (⌥ for a split beside the pane), in the pane's folder and on its machine, including a remote workspace's host; the command palette's Launch Agent… does the same. While an agent runs, its tab shows the agent's icon instead of the terminal icon and a Working, Needs you, Done or Error badge, driven by the agent's own hooks through a pane-scoped channel that carries only an event name, plus its bell and notifications. A desktop notification says when an agent needs you or finished out of view. A missing agent offers its vendor's installer, run visibly in the pane. Agent panes restore stopped with Start and Resume Last Conversation. Your own agents go in the Agents folder as
<id>.agent.json(Settings → Agents) (FR-AG01–FR-AG14). Library projects can run an agent in any pane (Runs in the pane's editor,"agent"in JSON), and New from Window… keeps agent panes (FR-PL10). - Agents typed in a shell: typing
claude,piorcodexat a shell prompt now shows the agent's icon and name on the tab and pane header while it runs. These runs have no Working or Needs you badge; opening the agent from the Agent button still gives you those (FR-AG15). - Directory jump: View → Jump to Directory… (⌘J, rebindable) and the command palette list the directories your shells have recently and frequently been in, on this Mac and in remote workspaces, ranked by visits and how recent they are. Return types
cdin the focused pane if it's on that machine and idle at a prompt, otherwise it opens a new tab there; ⌘Return always opens a tab, ⌥Return a split. System, temporary, credential and network folders are never recorded. History stays in an owner-only file on this Mac, and Settings → Sessions can turn it off or clear it (FR-DJ01–FR-DJ09). - Install the CLI from the app: the first launch from Applications offers to install the
trelliscommand, and Trellis → Install Command Line Tool… does it any time. It creates one link at~/.local/bin/trellis, tells you if that folder isn't on yourPATHor anothertrelliscomes first, and never edits your shell's startup files (MAC-15). - Session broker status: Settings → Session Broker shows whether the session broker is running, its PID and protocol, how many sessions it keeps, its socket, and the one Trellis executable allowed to connect, plus the broker on each connected remote host.
Changed
- Sessions keep running by default: every session now runs in the
trellis-brokerhelper, so quitting, closing the window, a crash or a force quit no longer ends it; the next launch reconnects it with its recent output, and full-screen programs redraw. ⌘Q asks only when a session would stop. Settings → Sessions → Stop sessions when Trellis quits brings back the previous behavior, and replaces Keep sessions running after quit (FR-R03, FR-R07, MAC-04). - The pane's machine stands out: a pane's header shows Local, SSH or the remote host's name in bold dark green (FR-RW05).
- Remote workspaces reconnect faster: when a host's link comes back, its panes resume four at a time instead of one network round trip after another, so twelve panes on a slow link are back after three round trips instead of twelve.
- Settings sidebar: each section has a colored icon tile, so sections are easier to scan.
Removed
- Repository project files:
.trellis/project.json(and the olderworkspace.json) is no longer read. Load Project, Open Project…, Save as Project… and Edit Project File are gone; projects now live in Trellis's Projects library (FR-PL01–FR-PL09). ⌘O, or a shortcut you set for Open Project…, opens the library instead. Tasks in.trellis/launch.jsonare unchanged, and the remote helper no longer readsproject.jsonon hosts.
Fixed
trellis cli … --dir: a relative directory that doesn't exist is now refused. It used to hang the command.
Downloads
Trellis-1.1.0-beta.1.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-1.1.0-beta.1-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-1.1.0-beta.1-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Trellis 1.0.0
The first stable release of Trellis. This release adds in-app software updates with Sparkle and a cap on workspace disk writes, brightens selections in the dark themes, and fixes the collapsed sidebar's tabs card.
Earlier versions have no updater, so install 1.0.0 from the DMG; from here on, Check for Updates… installs new versions in place.
Added
- Software updates: Trellis → Check for Updates… and Settings → Updates download, verify and install new versions in place with Sparkle 2. Automatic daily checks are off until you turn them on, and Include beta versions chooses whether pre-releases are offered (on by default in pre-release builds). A check downloads only the update list and sends no system profile. Installing quits through the usual confirmation, so sessions kept after quit keep running (MAC-14).
- Workspace disk writes: Settings → Sessions → Workspace disk writes caps how much the workspace file and its backup may write per hour (50 MB by default). Past it, changes are saved together every 5 minutes; ⌘S and Quit still save at once (FR-R06).
Changed
- Selection: the dark built-in themes and the default palette use a brighter selection background, so selected text stands out from the pane. One Dark, Solarized Dark and Gruvbox Dark also brighten the selected text to keep it readable.
- Underlines: links and dotted or dashed underlines (
4:4,4:5) are drawn as a solid line (FR-TX02). - Privacy: the update check is the one network request Trellis makes by itself, and only when you check or turn on automatic checks (MAC-14).
- Build: works around a Swift 6.4 compiler crash in the session broker client.
Fixed
- Collapsed sidebar: clicking a tab, Settings or Hosts while a window's tabs card was open only closed the card; the click now reaches its target (FR-W06).
- Disk writes: an unchanged workspace is no longer rewritten. A long session could write gigabytes to
workspace.jsonand its backup (FR-R06).
Downloads
Trellis-1.0.0.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-1.0.0-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-1.0.0-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Trellis 1.0.0-beta.1
The first 1.0 beta. This release adds the command palette and the command scratchpad, and fixes project files, tasks and the upgrade from dev.trellis.
Added
- Command palette: View → Command Palette… (⇧⌘P, rebindable) opens a searchable list over the workspace of every enabled action with its shortcut, every window, tab and pane, saved hosts, the focused pane's tasks and the installed themes; Return runs the selected row through its menu path (FR-CP01–FR-CP07).
- Fuzzy matching with bold, underlined matched letters, alias keywords, recent items first when the field is empty, and Go to Window/Tab/Pane…, Connect to Host…, Run Task… and Use Theme… scopes (FR-CP04–FR-CP06).
- Arrowing onto a theme previews it; Esc restores the previous colors (FR-CP08).
- Command scratchpad: a panel beside the panes for writing a command or script, opened with the
</>button left of Tasks in a local pane's header or View → Show Scratchpad (⌥⌘E) (FR-SP01).- Syntax highlighting in the terminal's font and theme colors, with line numbers and no smart-quote or dash substitution (FR-SP02).
- A language selector for sh, bash, JavaScript and Markdown; each language is one registry entry, so more can be added (FR-SP03).
- Validate runs
sh -n,bash -nornode --checkand shows errors with their line numbers (FR-SP04). - Run types
<interpreter> '<file>'into the focused pane when its shell is at its prompt, and follows it like a task (FR-SP05). Its private copy of the script is deleted when Trellis quits (FR-SP07). - Save as Task asks for a task and file name, writes the script to
.trellis/scratch/and adds a task tolaunch.json; the sheet's Save & Run also runs it. The header then shows the saved file's name, with Edited after changes (FR-SP06). - Clear starts an empty buffer, asking first when there are unsaved changes (FR-SP09).
- A file selector in the panel header lists the project's saved scratchpads and opens one; Markdown notes are highlighted and saved without a task (FR-SP10).
Fixed
- Save as Project keeps each pane's folder when the project is reached through a symbolic link, instead of warning that every pane is outside the project; tasks no longer add a
cdwhen the shell is already in the project through a link (FR-WF06, FR-TK05). - Save as Project warns that SSH panes and panes running another program will reopen as local shells, instead of saving them silently as plain shell panes (FR-WF06).
- Upgrading from
dev.trelliswhile the previous app is still running no longer shares its session broker, which left Keep Running sessions unable to start; after it has quit, kept sessions are still reattached (FR-R03). - Open Project… (⌘O) is disabled while the workspace is restoring or in recovery, and never records trust for a project it can't open (FR-WF06).
- Save as Project keeps the existing file's
$schemaline, so editor validation keeps working after saving over it (FR-WF06). - VoiceOver announces a tab inside a project as “project … available to load”, matching its Load Project button, instead of “workspace … available” (FR-WF02).
Security
- Save as Project, adding a task and Create launch.json refuse a
.trellisfolder that is a symbolic link, instead of writing wherever it points (FR-WF06, FR-TK02).
Downloads
Trellis-1.0.0-beta.1.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-1.0.0-beta.1-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-1.0.0-beta.1-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Trellis 0.12.0
This release adds project files and tasks from .trellis/, and drag reordering for windows and tabs.
Added
- Tasks: a Tasks menu in each local pane's header lists the pane's project
.trellis/launch.jsontasks (name, command, optionalcwd,groupandenv) and runs one in that pane's shell (FR-TK01, FR-TK02, FR-TK05).- Detects npm/pnpm/yarn/bun scripts, Make targets, CMake, SwiftPM, Python and Cargo builds and tests; run one directly or add it to
launch.jsonwith + (FR-TK03, FR-TK04). - The button shows Running: name with the elapsed time, then the result with its exit code; Stop sends Ctrl-C and becomes Force Stop (Ctrl-) after 2 seconds (FR-TK07, FR-TK08).
- Environment variables per file and per task, applied to the whole command line (FR-TK09).
- A
launch.jsonversion's tasks run only after you review them and choose Trust and Run; any change asks again (FR-TK06).
- Detects npm/pnpm/yarn/bun scripts, Make targets, CMake, SwiftPM, Python and Cargo builds and tests; run one directly or add it to
- Window drag reordering: drag a window in the sidebar, or a square in the collapsed rail, to move it; an accent bar shows where it lands. VoiceOver gets Move Up/Move Down actions (FR-W07).
- Tab drag reordering: drag a tab along the tab bar to move it; an accent bar shows where it lands. VoiceOver gets Move Left/Move Right actions (FR-T10).
- Project files: a project's
.trellis/project.json, reviewable in its repository, describes one window: tabs with color labels, splits, pane titles, folders relative to the project, and a command per pane (FR-WF01).- When a shell
cds into the project, hovering its tab shows Load Project. It's also in the tab's context menu and available to VoiceOver (FR-WF02). - Commands run only after you review every command and choose Trust and Open. Trust is kept per folder and SHA-256 digest, so any change to the file asks again. Open Without Commands opens plain shells (FR-WF03).
- Opening creates the project's window; opening it again reconciles that window without restarting panes or rerunning commands (FR-WF04).
- Each command is typed at its new shell's first prompt, and the shell stays when the command ends (FR-WF05).
- File → Open Project… (⌘O, rebindable) opens a project folder or its file directly.
- Save as Project… (window sidebar menu) and File → Save Window as Project… write the window with editable commands, in a stable, diff-friendly format (FR-WF06).
- API layouts can now carry tab colors internally, but the automation layout format is unchanged and still never carries commands.
- When a shell
Changed
- Clearer names: "workspace" now means only Trellis's own saved windows (File → Save Workspace). File → Export/Import Workspace… is now Export/Import Windows & Hosts…, and files from the 0.12.0 pre-release named
.trellis/workspace.jsonare still opened when a project has noproject.json; saving writesproject.jsonand leaves the old file for you to remove (FR-WF07). Saved keyboard shortcuts and trust carry over.
Fixed
- Window close keeps the workspace: closing the main window with the red button ends the sessions but keeps windows, tabs and splits as stopped panes, so a following Quit no longer saves an empty workspace (MAC-04, FR-R01).
Downloads
Trellis-0.12.0.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-0.12.0-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-0.12.0-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Trellis 0.11.1
The first Developer ID signed and notarized release, under the new com.bearstouch.trellis bundle identifier.
Changed
- The bundle identifier is now
com.bearstouch.trellis(development builds:com.bearstouch.trellis.dev), ready for Developer ID signing. On first launch Trellis copies your workspace, themes and saved hosts from~/Library/Application Support/dev.trellis/and imports your preferences; the old folder is left untouched (and is listed byuninstall-plan). Because the app is now signed differently, macOS may ask once to allow access to saved host passwords and automation grants in the Keychain. - JetBrains Mono is now the default terminal font for new installs, with its programming ligatures on (turn them off in Settings → Appearance). Existing settings keep the font they saved; choose JetBrains Mono in Settings → Appearance to switch.
Downloads
Trellis-0.11.1.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-0.11.1-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-0.11.1-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Trellis 0.11.0
This release adds sessions that keep running after quit, restored scrollback, desktop and long-command notifications, progress on tabs, shell marks over SSH, ⌘K Clear and opt-in Metal rendering, plus several security fixes.
Added
- Edit → Clear (⌘K, also in the pane's context menu) clears scrollback and the screen above the prompt, like Terminal. Alternate-screen programs keep their screen; an existing ⌘K binding wins (FR-C07).
- Desktop notifications from OSC 9, OSC 777 and kitty's OSC 99, shown when you aren't looking at the pane; clicking one jumps to it. Text is sanitized, length-capped and rate-limited (FR-T08).
- OSC 9;4 progress on tabs and panes: a filled top edge plus a "50%", "Paused", "Error" or "Working" label, also read by VoiceOver and reported by
session.get(FR-T09). - Long-command notifications: with shell integration, a command that ran past a threshold (default 10 s, set in Settings → Sessions) notifies when it finishes out of view. The command line is never shown (FR-SI08).
- Shell marks over SSH: a remote shell's OSC 133/7/1337 marks show "SSH · host:/path", titles, exit badges and notifications. They're display-only and never used for local paths (FR-SI09).
- Keep sessions running after quit (opt-in): sessions run in a bundled
trellis-brokerhelper and reconnect at next launch with up to 4 MiB of recent output. ⌘Q offers Keep Running, Stop Sessions or Cancel (FR-R03). - Restore scrollback after quit (opt-in): each pane's text, with secrets redacted best-effort, is shown in the stopped pane next launch; 1 MiB per pane, stored unencrypted (FR-R04, FR-R05).
- The empty workspace shows the Trellis prompt mark with a blinking cursor (solid with Reduce Motion).
Changed
- Opt-in GPU rendering with Metal (Settings → Sessions → GPU rendering), matching CoreGraphics output and falling back to it automatically. Roughly 50–90% faster output on an M1 Pro;
appearance.getreports each pane's renderer (FR-TX05). - Scrollback and notification settings moved from Appearance to Settings → Sessions.
- Large output is faster: up to 43% for
catof big files. - The DMG opens as a drag-to-Applications window.
- The status bar shows Trellis and the app version on the left and the window name on the right.
- The About panel and
LICENSEcredit "bearstouch" instead of LayerX Labs; the panel links to https://github.com/bearstouch.
Fixed
- A busy tab's context menu (including the Color submenu) no longer closes on its own.
Security
- Compressed (
o=z) and chunked kitty graphics images can no longer hang Trellis or exhaust memory. - Oversized sixel images and numbers are refused instead of crashing or allocating.
- Pasted text can't end a bracketed paste early;
ESC[200~/ESC[201~markers are stripped (FR-C03, FR-C04). - Creating a saved host, or clearing its user, port or identity file, through the API now also needs
session.execute. - DCS sequences are capped at 8 MiB like OSC and APC.
- Release workflow actions are pinned to commit SHAs, and packaging fails when requested notarization fails.
Downloads
Trellis-0.11.0.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-0.11.0-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-0.11.0-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Note: this build is ad-hoc signed and is not notarized. Gatekeeper will block it; build from source or wait for a signed release.
Trellis 0.10.0
This release adds an optional MCP server, saved SSH passwords in the Keychain, richer text rendering, inline images, smart selection and file links, attention and activity cues on tabs, and a terminal bell setting. Trellis now opens in dark mode on first launch.
Added
- Settings → Appearance → Bell chooses what a terminal bell does: Sound (the macOS alert sound, the default), Visual flash, Sound and flash, or Off. A bell still marks the tab as waiting for input whatever the choice (FR-T07).
- The status bar shows the Trellis icon before the window name, and
swift runbuilds now show the Trellis icon in the Dock and About panel too. - Hovering a window in the collapsed sidebar shows a card of its tabs with their live status (busy, waiting for input, failed command, exited) and pane counts; click a tab to jump straight to it (FR-W06). The card replaces the window-name tooltip.
- An optional MCP server lets agents such as Claude Code control Trellis (INT-07). Turn it on in the new Settings → Remote Control section, which also sets the interface and port (default
127.0.0.1:7777). Every API method except event subscriptions is an MCP tool, authorized by the same automation grants: clients send a grant token as a bearer token, and see and run only what the grant allows. It's off by default and listens only on loopback unless you confirm a network address, which warns that the traffic is plain HTTP. Browser origins and DNS rebinding are refused, revoking a grant ends its sessions at once, and--no-mcpturns it off for one launch. - Saved SSH hosts can remember a password in the macOS Keychain (Hosts → Password). It is stored only on this Mac, is never shown again, and is given to
/usr/bin/sshthrough a bundledSSH_ASKPASShelper only for the host's password prompt, at most once per connection. Host-key confirmations, key passphrases and any retry are still asked in the terminal. An optional per-host toggle requires Touch ID or the Mac password before each use. Changing the destination, user, port or identity file removes the saved password, as does deleting the host. Exports, the automation API and the CLI never include it. - Hosts → Connect in New Window opens a saved host in a new managed window named after the host.
- Tabs show an animated bar along their top edge while a pane is printing output. Output at a shell-integrated prompt and the echo of your own typing never trigger it. Reduce Motion shows a static bar.
- Smart selection: double-clicking a URL, email address, file path (with its
:line:columnsuffix), UUID, IP address, git hash, or a quote around a quoted string selects the whole thing, even across wrapped lines. Elsewhere double-click still selects a word, and programs that use the mouse (such as vim withset mouse=a) still receive the click. - ⌘-click opens file paths and OSC 8
file://hyperlinks (ls --hyperlink, compilers,rg) in the file's default app, and the context menu offers Open Link, Copy Link, Open, Reveal in Finder and Copy Path over links. Apps, executables, scripts, installers and other files that could run code are only revealed in Finder. Files open only from local panes: relative paths need shell integration's directory, saved SSH host panes and panes started assshormoshnever open paths,file://links naming another host are refused, and network automount paths (/net,/Network) are never touched. - Font ligatures, on by default and drawn on the cell grid: with JetBrains Mono,
->,!=and<=>join, and text after them keeps its columns. The character under the cursor is drawn on its own. Settings → Appearance → Ligatures turns them off. - Inline images with iTerm2's image protocol (OSC 1337):
imgcat,yazi,timg,chafa -f itermand other tools show PNG, JPEG, GIF, BMP, TIFF, WebP and HEIC images in the terminal, including images sent in parts. Sessions setLC_TERMINAL=iTerm2so tools detect it. File downloads (inline=0) are ignored, documents such as PDF and SVG aren't decoded, and oversized images are refused. - Overline text (SGR 53/55), and rapid blink (SGR 6) blinks like SGR 5.
- Settings → Appearance adds Bold as bright colors, Use bold fonts, Use italic fonts and Allow blinking text. All are on by default; settings saved by earlier versions keep these defaults.
- Tabs show an Input label when their program is waiting for you: a password prompt (sudo, ssh,
read -s) while it lasts, or a bell or terminal notification (OSC 9, OSC 777) from a pane you aren't looking at, such as a coding agent asking for permission. The window list marks windows with a waiting pane, andsession.getreportswaitingForInput.
Changed
- Dark is now the first-launch appearance. Settings saved by an earlier version keep their mode.
- In the About panel, "LayerX Labs" links to https://layerx.xyz.
- Bold white text (SGR 1;37) is now drawn bright white, like bold text in the other base colours.
- Concealed text (SGR 8) is now hidden. Its background still shows, and copy and search still see the text.
- Underline, strikethrough and overline now cover the whole width of wide characters, emoji and ligatures, and dotted, dashed and curly underlines join up across colour changes.
- Any OSC or APC escape sequence longer than 8 MiB is now dropped instead of being buffered without limit.
- OSC 8 hyperlinks whose URL contains
;are no longer cut off at the first;after the parameters. - More space between the sidebar toggle and the New Window button in the collapsed sidebar.
Downloads
Trellis-0.10.0.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-0.10.0-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-0.10.0-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Note: this build is ad-hoc signed and is not notarized. Gatekeeper will block it; build from source or wait for a signed release.
Trellis 0.9.1
This release adds new themes and font choices, refines the terminal layout, and makes closing shells smoother.
Added
- 10 editor-inspired theme families, each with dark and light variants: Modern, One, Monokai, Solarized, Nord, Dracula, GitHub, Tokyo, Gruvbox and Rose Pine. They are Trellis adaptations with complete app and terminal palettes, available without importing files. Their light variants use light terminal backgrounds; the original Trellis Light and Trellis Dark themes keep terminal panes dark.
- Settings → Appearance → Terminal font is now a picker that lists the monospace typefaces installed on your Mac (one entry per family) and previews the selected font. A saved font that is no longer installed is shown as unavailable.
- Trellis → About Trellis, showing the version, copyright and license.
Changed
- Settings now use sidebar navigation in a wider panel.
- Trellis runs as a single app instance per user. Opening it again, including with a different
--state-directory, brings the existing window forward. The instance lock is released automatically when the app quits or crashes. - The terminal scrollbar stays hidden while idle. It appears when you hover over its track or when scrolling moves the viewport, and fades out one second later. Incoming output alone does not reveal it, and showing it never changes the terminal grid width.
- Terminal layout refinements: the pane border is gone, terminal content has subtle padding, the terminal toolbar rows are merged into one, the gap below the terminal grid is removed, and pane dividers are one pixel wide.
scripts/qualify.pywrites its report to.build/by default.- The contributor documentation moved from
specs/to an MkDocs site underdocs/.
Fixed
- Closing a running interactive shell no longer asks you to force-stop it. Trellis now sends SIGHUP, like a terminal hangup, instead of SIGTERM, which shells such as zsh ignore. Force (SIGKILL) is still a separate, explicit step.
Downloads
Trellis-0.9.1.dmg: Universal 2, runs on Apple silicon and Intel (recommended)Trellis-0.9.1-apple-silicon.dmg: Apple silicon (arm64) onlyTrellis-0.9.1-intel.dmg: Intel (x86_64) only
Verify with shasum -a 256 -c SHA256SUMS.txt. Requires macOS 14 or later.
Note: this build is ad-hoc signed and is not notarized. Gatekeeper will block it; build from source or wait for a signed release.