- Split panes are now separate cards. Panes used to sit together on one white card with thin lines between them; now each pane is its own rounded card, and the gaps between them show the space's background, the same color as the sidebar. The pane you're typing in stays the brightest, and the others dim slightly toward the background. The split, minimize, and terminal/chat buttons show only on the focused pane, or on another pane while you point at it. Minimized panes sit in a slim card along the bottom. Cards no longer cast shadows, so the gaps match the sidebar exactly. A tab with a single pane looks the same as before.
Latest: 0.1.116 · October 31, 2026
What’s new in Seedmux.
Every release reaches your Mac through built-in auto-updates, so there’s nothing to reinstall. Linux hosts keep themselves up to date too.
- Quitting Seedmux no longer leaves it "Running in Background" in the Dock. If you use remote hosts, quitting Seedmux could leave a shared SSH connection running for up to ten minutes, and macOS kept the app in the Dock as "Running in Background" until that connection closed. The shared connection is now kept by Seedmux's background service, only while you have tabs open on that host, so the app leaves nothing behind when it quits. Remote tabs still share one connection per host, so they open and refresh as quickly as before.
- Claude's replies now stream onto the iPhone as they are written. While Claude is typing, the session page on the iPhone shows the reply growing a line or two at a time and keeps the view gliding to the bottom, instead of waiting for the whole reply and dropping it in at once. The text appears in small steps so the page moves smoothly; a finished reply stays exactly where it was, with no jump at the end. This needs the new iPhone app (TestFlight build 44) and this Mac version; with either side older, replies keep arriving whole as before.
- Scrolling the iPhone session page no longer makes a paragraph wobble when you stop. The per-row spring effect that caused a block of text to shift a few points after a flick has been removed. The "back to bottom" button now appears after you scroll about a third of a screen up, and the page resumes following new text when you stop within that distance.
- Claude's replies no longer show up twice or with the beginning missing in the chat. Claude Code hands each reply to Seedmux in several pieces, and the last piece sometimes arrived before the earlier ones. The chat then showed a reply that started halfway through, followed by the whole reply again, and a message in the middle of a turn could lose its first part. Seedmux now waits until every piece of a reply has arrived. New replies on the iPhone are right without updating the iPhone app, and the Mac's chat view fixes earlier replies too; replies the iPhone already saved stay as they were. Linux hosts get the fix with their automatic update.
- The iPhone catches up right after it reconnects. When the iPhone reconnects, this Mac now sends the session list and anything new since you last looked straight away, instead of the iPhone asking for them one step after another. Coming back from the background or switching networks shows your sessions sooner, especially over cellular. This needs the new iPhone app (TestFlight build 43); with an older iPhone app or an older Mac, everything keeps working the previous way.
- Fewer false "relay not responding" messages when switching from Wi-Fi to cellular. When the network flipped back and forth for a moment while you left Wi-Fi, an abandoned connection attempt could get in the way of the new one, so the first try failed and the iPhone showed an error for a few seconds. Abandoned attempts now stop right away.
- Faster to connect over cellular. The iPhone remembers the official relay's address and connects to it directly, skipping a lookup that could take more than a second right after switching networks. It still checks the relay's certificate, and addresses that only work through a VPN or proxy app are never remembered.
- Force-quitting an app you opened from a pane no longer takes your sessions with it. On macOS, an app started from a terminal is grouped with that terminal's processes. Once the Seedmux window that first started your sessions had been closed, quitting or force-quitting such an app (LibreOffice, for example) could make macOS end every session along with it. Seedmux's sessions now run in a background job of their own, so they are no longer caught up in this. This takes effect once your current sessions' background process has restarted; the simplest way is to restart your Mac once. After that, quitting Seedmux also no longer leaves it in the Dock as "Running in Background".
- Tabs stay if the sessions end unexpectedly. If the background process that holds your sessions is ever ended, Seedmux no longer closes the tabs. Each pane starts a new shell in the folder it was in, and agents that were running pick up their conversation again.
- Terminal / Chat switch in the pane header. The chat button is now a two-part switch that shows which view you're in, placed to the left of the header's other icons.
- Tidier top row. Pane headers line up with the window buttons, and the icon before a pane's title stays gray instead of changing color with focus. While an agent is running in the pane, the icon shows that agent's logo.
- Clearer relay settings. The relay address field shows examples and links to the guide for running your own relay; once you've entered an address, a "Use Official Relay" button switches back.
- Fewer retries when installing the iPhone's key on a host. If putting the iPhone's SSH key on a host fails, the Mac waits 10 minutes before trying again by itself and stops after 3 failures in a row, so servers that ban repeated logins (fail2ban) no longer block your IP. "Let Mac Re-authorize" on the iPhone still tries right away; this needs the new iPhone app (TestFlight build 42).
- End-to-end encryption, always on. Everything between your iPhone and your computers — sessions, chats, terminals, the remote screen, localhost pages — and between this Mac and hosts you paired without SSH is now encrypted on the two devices themselves. The relay in between, official or your own, only passes it on and cannot read or change it, so a self-hosted relay at a plain
ws://IPaddress is safe as well. Every connection gets fresh keys, and recorded traffic cannot be replayed. There is no unencrypted fallback: update the iPhone app to TestFlight build 41 — older iPhone apps are asked to update instead of connecting. Linux hosts paired without SSH need the new version too and get it with Seedmux's automatic update. - See your Mac's screen over cellular. When the iPhone and the Mac cannot reach each other directly, the picture now goes through the relay's TURN server. The official relay has it; a self-hosted relay needs the latest relay version.
- Your computer's own key on the relay. Each computer now signs in to the relay with a key of its own, so nobody else can sign in as your computer.
- See and control your Mac's screen from your iPhone. On a session's page, tap the display icon at the top right (it only appears for Mac hosts) to see the Mac's screen live. Tap to click, tap again right away to double-click, long-press to right-click, drag with two fingers to scroll, and pinch to zoom in on small text. A row of keys (Esc, Tab, Delete, Return, arrows, ⌘C / ⌘V / ⌘Z) and a text box sit below the picture; what you type goes straight to the Mac, Chinese included. If the Mac is locked you see its lock screen, and the text box turns into a password field with an Unlock button. The first time, the Mac asks you to allow Seedmux in Screen Recording and Accessibility; macOS may also ask you to confirm screen recording again about once a month. Right now this works when the iPhone and the Mac are on the same Wi-Fi or the same tailnet; over cellular through the relay comes next. macOS never accepts remote clicks on its own privacy prompts ("Allow … to access …"), so those still need a click on the Mac itself.
- Works with the new iPhone app (TestFlight build 40).
- Open localhost links from your iPhone. When an agent prints a link like
http://localhost:3000, tapping it in the iPhone chat now opens that page from the machine the session runs on, in a browser that slides up from the bottom. The address stays exactly the same, so dev servers' host checks, live reload over WebSocket, uploads and downloads all work as they do on the computer. If the page also talks to other ports that the session is listening on (a frontend on 5173 calling an API on 8000), those work too. Each machine keeps its own cookies and logins, so two machines'localhost:3000never mix. Works over the pairing connection (same Wi-Fi or relay) and for hosts you reach over SSH. If nothing is listening on that port, the phone tells you so instead of showing a blank error page. - Works with the new iPhone app (TestFlight build 39). Linux hosts that you paired without SSH get the update with Seedmux's automatic update.
- See the full history of a fullscreen Claude session from your iPhone. Claude Code now runs fullscreen by default and leaves nothing in the terminal's scrollback, so the iPhone terminal page could only show the current screen. Scroll to the top and tap "Load full history": Seedmux briefly makes the Mac pane taller so Claude draws the whole conversation, captures it, and puts the size back. The pane flickers for under a second, and if you were scrolled back in Claude on the Mac it jumps to the bottom. New output keeps being added below, so the history stays while you scroll up and down. Up to about 2,000 lines; anything older is in the chat view.
- Works with the new iPhone app (TestFlight build 37).
- Links in the chat view open now. Clicking a link in an agent's reply did nothing. Web links now open in your default browser. Links to files on this Mac — Codex writes them like
File.swift:12— open in Seedmux's built-in preview window at that line, and links to folders show them in Finder. - Works with the new iPhone app (TestFlight build 35), where tapping a web link in a reply opens it in Safari.
- Streaming replies in the chat view no longer jump. While a long reply was being written, every new chunk made the whole message slide up from below: the newest line was briefly cut off at the bottom, and the view lagged behind the end before catching up in steps. Now each new line appears in place and the view glides smoothly to keep the end in sight.
- Stopping an agent from the chat view now really stops it. The stop button presses Esc as before, but Claude Code never reports being interrupted, so the chat view kept spinning and the session stayed "running" until Claude did something else. Seedmux now records the interruption itself: the turn ends as interrupted, the session goes back to idle, and you can send your next message right away.
- Esc pressed in the terminal while Claude is running a tool now shows up right away: the chat view and the iPhone app mark the turn as interrupted and the session as idle.
- Works with the new iPhone app (TestFlight build 34), which can now stop a running agent or add a message while it works. For a stop to return the session to idle immediately, the Mac (or Linux host) needs this version; Linux hosts update automatically.
- Minimized sessions' titles no longer flicker. With several agents running in minimized chips, the ends of their titles kept poking out past the chip and back several times a second. They now stay put, and the little spinner in front of a running agent's title keeps animating.
- The app no longer hitches every few seconds. Showing each pane's folder and Git branch in the sidebar used to make the app wait for tmux on its main thread every 3 seconds, and again after every layout change, so whatever you were doing at that moment — switching to the chat view, typing, scrolling — could pause briefly. That work now runs in the background.
- Expanding a tool call in the chat view no longer makes the page jump. Opening or closing a group of tool calls, or one command's details, used to push the whole message up and drop it back down — including the "Ran N commands" line you just clicked. That line now stays exactly where it is: the details unfold downward from beneath it like a drawer, and the messages below slide along smoothly. The view also no longer scrolls on its own when you expand something.
- The chat view's input box blends in. It no longer paints its own white (or lighter) panel with a shadow; it sits on the same background as the conversation — transparent when your terminal is transparent — with just a faint outline that darkens slightly while you type. It now looks right under every theme.
- The line drawn after each turn's duration and tool count is gone; only the small grey summary remains.
- The chat view scrolls and animates smoothly. Its list is now a native Mac table that knows the exact height of every row instead of guessing: expanding a group of tool calls, or a reply growing as it streams, animates the change and the rows below slide along instead of jumping; the "Working…" line fades in and out without making the page hop; and when you're at the bottom the view follows new content in the same smooth motion. Scrolling back up shows messages that are already laid out, without re-rendering them.
- Claude's replies fade in as they're written, and inline
codeis drawn as a rounded pill. This comes from an updated Markdown renderer (the same one FlowDown uses).
- A native chat view for every agent pane. Right-click a pane running Claude, Codex or another supported agent and choose Open Chat View, or use the new chat button in the pane's header, to see the session as a conversation instead of a terminal: your messages, the agent's replies (Claude's stream in as they're written), and its tool calls folded into one line such as "Read ExportButton.tsx, ran git status +14 −1". Click a line to see each call's output or the lines it changed. Each turn ends with how long it took. Inline
codeis highlighted, and the text size has its own setting under Appearance › Font › Chat View Size. The same button switches back to the terminal, which keeps running underneath. - Talk to the agent from the chat view. Type at the bottom and press Return. While the agent is working you can still send a message — it reads it at its next step, just like typing into the terminal — or press the stop button to interrupt it (sends Esc). The line under the input shows which machine and folder the session is in, plus the model and how much of its context is used.
- Works for remote hosts too. Conversations are put together by the background service on each machine, so a remote host's sessions show up the same way once that host runs this version (Linux hosts update themselves within a few hours).
- Claude no longer looks busy forever after an API error. A turn that ends with an API failure now returns the session to idle.
- The old web-based Claude view is gone; the new view replaces it.
- Remote hosts in the sidebar stay in a fixed place. Host groups now always sit at the bottom of the tab list, in the same order as Settings › Remote Hosts, instead of jumping around depending on which host you opened a tab on first. A host you tick under "Hosts in This Space" shows up in that space even while it isn't connected, and empty host groups can be unticked again. The list is also at the bottom of the sidebar's view options menu (the slider button next to the space title), so you no longer have to right-click the space to find it.
- Seedmux's background service now keeps the connections to your remote hosts. Previously the app itself opened one connection per host; now the background service does, and the app only talks to it. Nothing changes in how hosts behave. A quick app restart no longer tears down the link to a paired host, so its tabs come back sooner. This also lays the groundwork for showing remote agent conversations.
- A restarting relay connection no longer leaves a paired-host tab dead. When the local multiplexer for a paired host restarted, a tab that attached a moment too early would print
read unix …: i/o timeoutand stop there for good: that failure was classified as a generic error, and the tab's reconnect loop only retries on "host unreachable". It is now classified correctly, so the tab reconnects on its own. Ownership of the multiplexer socket is also decided by a kernel lock instead of by "does this socket still answer", so a multiplexer that was killed can no longer stop the next one from opening its socket at all.
- Point a paired host at your own relay, from this Mac. Settings › Remote Hosts › (a paired host) now has a Relay field: type a
ws://orwss://address and hit Switch. Leave it empty for the official relay, or writenoneto keep that machine off relays entirely (LAN/tailnet only). Seedmux dials the new address itself before pushing it — a typo can't strand the host — and switches both sides at the same moment, so you never have to go to that machine and re-pair. - Typing
codexyourself now behaves like launching it from the sidebar. The shim Seedmux puts in front ofclaudeandcodexadds the same permission flags the "New Agent" menu would — so an agent you start by hand in a Seedmux pane is no longer sandboxed on one machine and unrestricted on another. It only applies inside Seedmux panes: the same command in your own terminal is untouched, and passing a permission flag yourself (--yolo,--full-auto,-a,-s,--permission-mode) always wins. Turning an agent's YOLO switch off now spells out the asking mode instead of relying on a bare command. Remote hosts pick this up after "Detect" reinstalls their shims. - Paired hosts notice when the other side goes away. A paired host (one reached by pairing instead of SSH, e.g. a sandbox) could silently stop responding: the tab froze, typing did nothing, and the sidebar still showed it online. WebSocket pings only reach the relay, which answers them itself, so the Mac never learned that the host had been suspended or that the relay's half of the connection was dead. Seedmux now asks the host's own daemon for a reply every 15 seconds; after 45 seconds of silence it marks the host offline and reconnects, and each open tab reconnects with it.
- Remote tabs scroll like a local terminal. Scrollback for SSH hosts now lives in Seedmux itself: the remote
smx streamcommand feeds the pane's raw output straight to the terminal, and tmux on the host only keeps the process alive. Wheel scrolling, selection and ⌘F no longer make a round trip to the server for every tick (each tick used to cost a fresh SSH exec, about 0.6 s on a 200 ms link, and a flick could hit sshd's session limit). Reconnecting replays the remote history and screen. Run "Detect" on an existing host once so it picks up the new mode; hosts whose smx is older keep the previous behaviour. - Settings › Remote Hosts is a list again. One row per host — icon, name, a status line ("Online · smx/0.1.96", "Offline · retrying in 23s", "Not connected"), how many agent sessions it has and how many are waiting for you — with an ⓘ that opens that host's settings in a sheet: name, target, login, daemon, keep-connected, check & set up, remove. Paired hosts get a one-click "Use Official Relay" next to the relay field.
- The official relay now has a name and TLS. Seedmux's built-in relay moved from a bare IP on a plain-text port to
wss://relay.seedmux.com. On some mobile networks the old plain connection was silently cut for 20–30 seconds at a time, which looked like the phone "sometimes can't reach the Mac". Nothing to configure: Macs and paired hosts that leave the relay setting empty switch on their own, phones pick up the new address the next time they reconnect, and anything not updated yet keeps working on the old address (both lead to the same relay). - No more stray
resumecommands typed into live remote agents. After a restart, Seedmux offers to resume the agent that was running in a pane only when that pane's session really came back as an empty shell. On remote hosts it used to assume every session was new, so clicking a sandbox tab could paste acodex resume …line into a Codex that was still running, sometimes twice. It now checks the host's own session table and pane list first, and on remote hosts it never retypes the command.
- The sidebar scroll bar stays out of the way. With a mouse attached, the sidebar could switch to an always-visible scroll bar with a pale track that squeezed the tab list, typically after the mouse slept and woke up or was plugged in. It now always uses the thin overlay scroll bar. Hovering it shows only the knob, without laying a white strip over the sidebar.
- Outline for markdown. The file window now has a heading outline, the same one as the mm editor: click a heading to jump to it. It stays hidden until you open it with the button at the right end of the title bar or ⌥⌘0, and remembers your choice.
- Clearer unsaved marker. While a file has unsaved changes its title reads "name (edited)" instead of relying on the small dot in the close button.
- Read and edit files without leaving Seedmux. Double-click a file in the inspector's Files or Git list and it opens in a window of its own, right next to the terminal. Markdown shows up fully rendered — tables, callouts, task lists, math, mermaid diagrams, highlighted code — so an agent's report or design doc reads like a page, not a wall of
#and|. Code and text files get syntax highlighting; images show as they are; PDFs, videos and other binaries fall back to Quick Look. - It's an editor, not just a viewer. Type straight into the file and press ⌘S to save. The title shows "(edited)" while there are unsaved changes, and Seedmux asks before closing or switching away from them.
- It keeps up with your agents. When the file changes on disk while you're looking at it, the view refreshes on its own. Move the selection in the inspector — click or ↑↓ — and the window shows that file.
- Right-click a file for Open, Open with Default App, Open With… (the apps registered for that file type), Show in Finder and Copy Path.
- Agent team: worker panes now get a readable title such as "hello.txt 里的 hi 改成 hello" instead of "完成 T-71c6f4 任务". The message that starts a worker only named the task ID, so Claude and Codex had nothing to build a session title from; it now opens with a one-line task name in brackets.
smx-team spawnandassignaccept--title; without it the CLI takes the first line of the task text, so write that line as something that works as a heading. The name is also stored in the task's meta.json.
- Agent team:
smx-team spawn --agent claude --effort low|medium|high|xhigh|maxnow passes the reasoning effort through to the Claude worker, the same way it already did for Codex. Theseedmux-teamskill documents the option, so an orchestrator agent can honour "spawn a Claude worker at xhigh" instead of refusing it. The level applies to that worker only; your global Claude settings are untouched.
- Switching to Seedmux with ⌘Tab from another Space no longer flashes the window and then leaves a different app in front. The main window was always a nonactivating panel, which macOS doesn't count when deciding which app owns a Space after the switch; it is now a regular window whenever it isn't summoned by the global shortcut. As a side effect, the window now shows up in Mission Control and App Exposé whenever it is an ordinary window. While summoned by the shortcut it still floats above other windows, follows you across Spaces and leaves the menu bar with the current app, and during that time it stays out of Mission Control as before; clicking another app, switching apps or switching Spaces turns it back into a regular window.
- fish users: Settings › Diagnostics could report "Couldn't start fish to look it up (it failed or took over 8 seconds)" for the claude and codex checks since 0.1.88. The check simulated a prompt to let the Seedmux guard run, which on fish 4.1 and later also made fish query the terminal and wait up to 10 seconds for an answer that never comes in the background. The check now calls the guard directly and tells that one background fish not to query the terminal. Your own fish settings are untouched.
- fish users: Settings › Diagnostics no longer reports two false alarms. "The Seedmux block is missing" fired because the file Seedmux writes to fish's conf.d didn't carry the marker the check looks for; it now does (relaunch Seedmux or run
smx installto rewrite it). "claude in a Seedmux pane: the real claude comes first" fired because the fish guard only runs at the first prompt and the check never showed one; the check now simulates that prompt before looking. - fish users: the Seedmux guard no longer leaves
~/.seedmux/shimsin PATH twice inside a pane. It now removes any existing copies before putting the shims first. (mise users:mise doctorstill notes that the shims sit before mise's directories; that is intentional, since the shim has to win over a realclaudewherever it's installed.)
- New Settings › Spaces page: rename each space, pick its icon (eight new icons, also in the right-click menu's Change Space Icon), and bind a working directory. A new tab still opens in the folder of the tab you're on; when there's nothing to follow, such as the first tab in an empty space, it now opens in the space's working directory instead of your home folder (~). Splits work the same way. Tabs in a folder group still open in the group's folder, and tabs on remote hosts aren't affected.
- Manage Spaces… in a space's right-click menu now opens this page; before, it was grayed out.
- Settings › Claude: the Custom Environment Variables table is now read-only. Adding and removing rows there could crash Seedmux, so the buttons are gone for now; edit
~/.seedmux/claude-custom-settings.jsoninstead (the Open and Show in Finder buttons on the same page point at it). Seedmux picks the file up again next time you open the page. CLAUDE_CODE_NO_FLICKERnow defaults to1(Claude's full-screen mode) instead of0. The first launch after this update sets it to1in~/.seedmux/claude-custom-settings.jsononce, keeping everything else in the file; after that the file is yours again, so setting it back to0or deleting the line sticks. With1, Claude's output doesn't stay in the terminal history, so the phone's terminal page only shows the current screen; set it to0if you want scrollback.- Links whose text isn't the address itself, such as Markdown links (
[text](url)) in Claude's replies, now open when you ⌘-click them. Before, the tmux layer inside Seedmux turned these links into plain text on the way to the terminal, so clicking them did nothing.
- New tabs now open your login shell (zsh, bash or fish) instead of always zsh (issue #45). The same rule picks where the agent-shim block goes (~/.zshrc, ~/.bashrc or fish's conf.d), and Settings › Diagnostics shows which shell panes use and why. Login shells Seedmux doesn't support yet fall back to zsh. To force a specific shell without changing your login shell, set
[terminal] shell = "/path"in~/.seedmux/config.toml(no settings UI). If your login shell isn't zsh, the first launch after this update shows a one-time banner saying what changed.
- The Agents panel in the sidebar lists agents from every space again, including the space you're in. Agents in the current space also keep their status dot at the end of their sidebar row, and switching spaces no longer changes what the panel lists.
- New: Open Folder… in the + menu next to the space name. Pick a folder and Seedmux makes a group for it, named after the folder, and opens a tab there. New tabs in that group start in the folder. Opening the same folder again takes you to its existing group instead of making a second one.
- Folder groups show a folder icon, open while expanded and closed while collapsed; groups you make with New Group… keep the arrow. Hover a folder group to see its path, and right-click it for Show in Finder.
- New: a + button next to the space name. It opens New Tab, New Agent ▸, New Tab on Host ▸ and New Group…, which used to be only in the right-click menu.
- New: view options, the slider button next to +. Choose what a tab's title shows: the conversation or command (as before), the working directory, or the git branch. Optionally add a second line under each tab with the branch and/or the working directory; both are off by default, and with several worktrees open the branch tells the rows apart. Hovering a tab shows its full title, directory, branch and agent status (on by default). The settings live in
[sidebar]in~/.seedmux/config.toml. - The branch is read straight from the repository and follows
git checkoutwithin a few seconds; panes on remote hosts don't show one. - Removed the space-switching ⌄ at the top right of the sidebar; switch spaces from the bar at the bottom or by swiping. The sidebar toggle moved to the far right.
- Sidebar rows sit 1pt further apart.
- New: Settings › Claude. Set custom environment variables for the Claude sessions Seedmux starts: add, edit or remove them in a table. The first row is
CLAUDE_CODE_NO_FLICKER=0, which keeps Claude's output in the terminal history so you can scroll back on the Mac and on the phone's terminal page; change it to1or remove it if you want Claude's full-screen mode. - Everything on that page lives in
~/.seedmux/claude-custom-settings.json, which has the same format as~/.claude/settings.json, so you can also edit it by hand. Claude reads~/.seedmux/claude-hooks.json, which Seedmux rebuilds from this file plus its own status hooks on every launch. Changes apply to Claude sessions started afterwards. The file stays on this Mac; each remote host keeps its own.
- New: Devin CLI support. Devin panes show their status in the sidebar like the other agents: running, waiting for your approval (with the tool name) or for your answer ("Ask"), and done. Pressing Esc to cancel an approval or interrupt a turn no longer leaves a stale orange dot behind. Seedmux adds its own hook entries to
~/.config/devin/config.json; entries from other tools stay as they are. - Settings › Agent has a YOLO switch for Devin (
--permission-mode dangerous), "New Agent ▸" lists Devin, and ⌘P resumes past Devin sessions (devin -r <id>). - Phone: Devin is in the agent list when you start a session from the phone, and the first message is passed along at launch.
- Agent team:
smx-team spawn --agent devinstarts a Devin worker. Its folder is trusted in advance, so it doesn't stop at Devin's "Do you trust the authors of this directory?" prompt. - Linux hosts:
smx installsets up Devin status reporting there as well.
- New: start an agent from your phone. Tap "+" on the home screen, pick a host, a folder (recently used ones, browse down from the home directory, or type a path), an agent that's installed on that host, and optionally the first message. You land in the session as soon as it's up; if it hasn't reported within 8 seconds, the terminal page of that pane opens instead. "YOLO (skip permission prompts)" is a switch in display options, on by default, and only applies to sessions started from the phone. On a Mac, the new pane also shows up at the end of the sidebar's current space.
- Codex started from the phone without a first message now shows up right away. Codex says nothing until its first prompt, so Seedmux marks the pane itself: you can send the first message from the chat page, and a line at the bottom opens the terminal in one tap in case Codex is stuck on a login or trust prompt. Inside Seedmux, Codex no longer checks for updates at startup (that prompt blocked everything); run
codex updateyourself when you want it. - Home list is ordered by the most recent message, Mac groups stay together, and with "Show ended" on, ended sessions appear in the same list instead of a separate section at the bottom.
- Host page shows which Seedmux version that host runs. On Linux hosts, when the release is newer, an "Update to x.y.z" button installs it from the phone (works even with auto-update off); hosts on 0.1.78 are updated by re-running the install command over SSH.
- New Settings › Diagnostics page for when your phone connects but shows no sessions. It checks, on this Mac, everything agent status depends on: which tmux is used and its version, the background service version and how many sessions and events it has received (zero events is flagged), whether Seedmux's hook files and the
~/.zshrcguard are in place, and whetherclaudeandcodexinside a Seedmux pane really go through Seedmux. An alias that points to a fixed path or adds its own--settingsquietly bypasses the hooks, and this page tells you which one. "Copy Diagnostics" copies a plain-text report you can send us; values that look like keys or tokens are masked. - Linux:
smxnow brings its own tmux (3.6a). Hosts with no tmux, with one older than 3.2 (Debian 11, Ubuntu 20.04, RHEL 8), or where you can't install packages without root now work after the one-line install or the phone's "Install Seedmux" button. The bundled tmux goes to~/.seedmux/bin/tmux. If the system tmux is 3.2 or newer, Seedmux keeps using it, so hosts that already work don't change. Hosts on 0.1.76 or later get this through auto-update.
- Fixed the update window opening behind the terminal when Seedmux was summoned with the hotkey, so it only showed up after pressing ⌘`. Update prompts and download progress now appear on top of the terminal and take focus. If this window opened behind the terminal, the fix applies from the next update on, because the window you're seeing is shown by the version you're running now.
- Linux hosts now keep
smxup to date on their own. About every 6 hours the background service checks for a new release, then downloads it and verifies it. If the new version is good, the service switches to it in place. Agents running in tmux keep running, and the phone reconnects within a few seconds. To turn this off, addauto_update = falseto~/.seedmux/smx.toml. Hosts on 0.1.75 or earlier need to run the install command once more to get this version; after that, updates are automatic.
- Fixed "Restart failed (launchctl exit 113): Could not find service" in Settings › Phone. This happens when macOS isn't running the background service, most often because Seedmux was switched off under System Settings › General › Login Items › Allow in the Background. Restart now registers the service again when it can. When it's switched off, Seedmux tells you to turn it back on in Login Items and shows a button that opens it.
- The "Last seen" time of a paired phone now updates when the phone disconnects, instead of staying at the time it last connected.
- Fixed pi refusing to start with "Unterminated string constant" in
smx-agent-status.js(#40). The status extension Seedmux installs for pi has had a broken line since 0.1.72; opening this version replaces it, and pi starts normally again withoutpi -ne. - The OpenCode status plugin had the same broken line, so OpenCode panes stopped reporting their state; fixed as well.
- When Seedmux finds a new version while you are using it, the update window now comes up by itself as soon as you stop typing for a few seconds, instead of waiting for you to click the download button in the sidebar. Choose "Remind Me Later" and it asks again in about an hour.
- The phone companion now works out of the box: the background service connects to the official relay and listens on LAN port 19999 by default, so a freshly installed Mac can be paired from anywhere without editing any file. Write
relay = "none"in~/.seedmux/smx.tomlto opt out. - Pairing codes list every usable address of the Mac (Wi‑Fi, Ethernet, VPN, Internet Sharing); the phone picks the one on its own network.
- The phone explains what is wrong with a pairing code instead of saying "invalid", and codes with only a LAN address pair fine.
smx pairrefuses to issue a code when the service has neither relay nor LAN, instead of printing one that cannot work.
- The background service is now
smx, rewritten in Go: one static binary for Mac, Linux and containers, launched and kept alive by launchd (allow it once under System Settings › Login Items). Linux hosts install it with onecurl … | sh; the phone's "Install Seedmux" button does the same over SSH. - New Settings › Phone page: service status, pairing QR code, paired phones, relay and LAN port. A phone status light at the right end of the space bar opens the same QR in a popover.
- The phone reports a name (its model by default; rename it in the iOS app's settings) and the Mac shows its computer name instead of an internal id.
- Kimi, Grok, OpenCode and pi panes now show how full their context is, like Claude and Codex. Agent team also stops reusing these workers once their context gets too full.
- Fixed agent team workers that start minimized or in a background tab hanging without ever starting, most often with OpenCode.
- Agent team now cleans up after itself: the host closes the workers it spawned once the batch is delivered, and idle workers are closed after 30 minutes. Panes you opened yourself are never touched.
- Workers with a bloated context are no longer reused: a new worker is spawned instead, and the context usage of Claude and Codex panes shows in
smx-team panes. - New Agent Team setting to keep worker panes if you prefer to close them yourself.
- Scrolling in Codex works again: with the latest Codex CLI, the trackpad and mouse wheel scroll through the conversation instead of cycling through your previous inputs.
- Hidden sidebar is easy to bring back: a sidebar button now sits next to the window buttons at the top-left of the terminal. Click it to show the sidebar again.
- The window buttons stay visible while the sidebar is hidden, instead of appearing only when you hover the corner.
- The collapsed Dynamic Island is now more compact on notched displays. It follows the actual notch width and brings the Ghost and activity indicator closer to the notch, reducing the empty space while agents are running.
- Agent sessions now come back after the tmux server is gone. After a shutdown, a crash, or choosing "Stop Running in Background" on the Dock icon, each pane remembers which agent it was running and that agent's session id; the first time you open such a pane after Seedmux restarts, it resumes that conversation automatically (Claude, Codex, Grok, OpenCode, Kimi Code, Antigravity, Pi), using the same flags as the sidebar's New Agent menu. Panes you do not open stay idle, and each session is offered once. Settings › Agent has the switch (on by default;
[agents] resume_after_restartin config.toml). - Resume commands, including the ⌘P palette, now quote the session id and refuse malformed ids; a session recorded on two panes is resumed only once; when the working directory no longer exists the command is typed but not run, so you can see it first.
- Voice input from input methods now lands in the terminal (#29, Doubao). Before writing, an input method asks the terminal where its composition and insertion point are; the Ghostty terminal used to answer "none" while nothing was being composed, which Doubao read as "no text field here" and gave up. The terminal now answers the same way Ghostty.app does, and streamed recognition shows at the cursor as it is spoken.
- Text an input method commits later, without a key press, now reaches the terminal as well; while a pane is scrolled back in tmux, the terminal returns to the bottom before inserting it, as typing does.
- The terminal pane is listed as a text area in macOS accessibility and reports focus correctly across splits and the summon window.
- Split-tab expand and collapse controls now appear in the sidebar's icon slot on hover: click the right-pointing arrow on a collapsed tab to expand it, or the down arrow on the first pane row to collapse it. Moving the pointer away restores the original icon.
- Split counts stay visible when the close button appears. Counts and titles keep their positions as status marks and hover controls change, and expanded pane rows have more room for their titles.
- Split tabs in the sidebar now start as one compact row, with a pane count and the most urgent status among their panes. Hover and click the down arrow to show each pane in place; hover anywhere over the expanded block and click the up arrow on its first row to collapse it again. The same actions are available in the context menu, and the expansion state survives relaunch.
- Renaming a split tab now gives the tab its own name without changing any pane's title. Individual panes can still be renamed separately; single-pane tabs keep sharing their pane's name. Custom tab names are saved with the layout.
- Codex-generated images now appear in the inspector's Info section, with a full-image preview, thumbnails, Quick Look, drag-out, and commands to open, reveal or copy them. The pane header shows an unseen-image count; click it to open the inspector and preview the latest image. Starting a new Codex session no longer shows images from the previous session while waiting for its first prompt.
- File links in the terminal now resolve relative paths against the pane that produced the link. Pane headers gain a minimize button when another pane remains visible; the conversation-view switch is available in the context menu.
- Sidebar groups: rows inside a group are now indented so their icon starts exactly where the group name starts, instead of sitting between the disclosure triangle and the name.
- Global summon hotkey: the "Summon Seedmux / switch back" shortcut is now ⌘3 and enabled out of the box (it was ⌘4 and off). Summoning now brings Seedmux to the front, and the window stays where it is when you switch to another app instead of hiding. Both behaviours can be turned back on in Settings › Hotkey Window (
keep_active_app/hide_on_focus_lossin config.toml); values you set explicitly are kept. - Direct mode (no tmux): splitting a pane now inherits the working directory again — when the live directory cannot be read, the last known one is used, the same as a new tab. Settings › Terminal now shows whether tmux was actually found (version and path) and, when it is missing, explains that sessions are running in Direct mode and offers Install tmux…, since tmux being selected but not installed used to fall back silently.
- Agent team layout: the host pane gives up half its width once, on the first spawn; further workers stack in that side column (up to three, split evenly), the fourth onward is parked, and workers restored from a chip follow the same rule. The host is no longer halved again for every worker.
- Join tabs by dragging a sidebar row onto the terminal: drop a tab row (or a pane row of a split tab) on any pane of the current tab and it becomes a split there, on whichever half you release over (left, right, top or bottom) — the same drop zones as moving a pane inside the card. The row's old tab disappears once it is empty. Dragging rows between rows still just reorders them.
- Right-click menus: the pane menu inside the terminal gains Move to New Tab, Move to Tab ▸ and Move to Space ▸, matching the sidebar's pane-row menu, and single-pane tab rows in the sidebar gain Move to Tab ▸ (join another tab as a split). Move to New Tab (split a pane back out into its own tab) is now a top-level item instead of hiding inside the submenu, and the new tab lands right below its source tab rather than at the end of the list.
- The space context menu's Edit Theme Colors… item now shows a multicolor palette icon so it is easier to spot.
- Fresh installs: the default "Fun" space's green now comes from the theme palette, so it can be picked again in the theme editor.
- Sidebar rows now carry the agent's state at the row tail, with the same marks as the Agents panel: a slowly breathing orange dot while it waits for you, a green dot when it finished while you were looking elsewhere, a spinner while it runs, and a small hourglass while a background shell is still going. Idle rows and plain shells stay clean. A collapsed group header shows the most urgent state among its members next to the count. Tab rows reserve a fixed tail column, so truncated titles no longer collide with the mark or the hover ×.
- The Agents panel now lists only agents in other spaces; the current space's agents are on the sidebar rows, so nothing is shown twice. Switching spaces swaps the panel's contents, group headers always name the space, and the panel disappears when every agent is in the current space.
- Theme presets gain Slate (Ghostty's default #282c34). Pick it and the sidebar, terminal and inspector share one flat gray instead of a darker terminal on a blue-black paper. The neutral swatches (white, black, slate) now come first, and the dark/light slider still tunes it.
- Remote hosts (phase 1): open panes that live on a Linux machine's tmux, with nothing installed there but tmux. Settings › Remote Hosts lists the
Hostaliases from~/.ssh/configfor one-click import, or use Add Host… (alias, host name, user, port, key file path, and a jump host or SOCKS proxy) — it is saved as~/.seedmux/ssh/hosts.d/<alias>.confand your~/.ssh/configis never modified; Seedmux's own ssh calls use-F ~/.seedmux/ssh/config, which includes your config so ProxyCommand, keys and known_hosts apply as usual. Check & Set Up probes the host and writes~/.seedmuxthere (private tmux.conf, the Claude status hook, a guarded PATH block in~/.bashrc/~/.zshrc); first connections accept the host key. Credentials are never stored — authentication stays with OpenSSH. - Right-click a space or group header › New Tab on Host to open a remote pane. It behaves like a local one: ⌘D splits stay on the same machine, ⌘W ends the remote session, ⌘Q leaves it running and it is reclaimed on relaunch, a dropped SSH connection reconnects inside the pane, scroll-back, ⌘F and the Claude status dot work. Known limits: no recovery list for remote sessions yet, and on Linux only Claude's status reporting works.
- Sidebar: a tab with several panes now shows one row per pane, joined by a dotted bracket on the left (termio / VS Code style) instead of a single row with a split count. Each row carries its own title and agent mark; double-click a pane row to rename that pane. Drag-and-drop treats the rows of one tab as one block.
- Fixed updates never showing up while Seedmux stays open. Sparkle only pops its update window when the app has just launched, or the Mac has been idle and Seedmux is in front; otherwise it holds the window until the app is next brought to the front, a moment terminal users (and hotkey-window users) may never produce, so the only way to see an update was ⌘Q and relaunch. Seedmux now shows its own cue instead: a blue spinning update icon appears in the sidebar's top bar and a "Seedmux x.y.z available" line at the top of the Dynamic Island as soon as the hourly check finds a new version. Click either to open the installer; the cue disappears once you act on it.
- The Agents sidebar now recognizes Google's Antigravity CLI (
agy): a Seedmux hook group is added to~/.gemini/config/hooks.json(other tools' groups are left untouched), so panes runningagyshow idle / running / waiting ("Ask" while it waits for your answer to a question) / done like the other agents. Panes that just openedagyare found through the process tree, and rows go away when it exits. - Agent team supports Antigravity:
smx-team spawn --agent agy(anddiscuss --with … agy) starts a worker with the task passed on the command line, pre-trusts the working directory so no "Do you trust the contents of this project?" prompt blocks it, and forwards--model. Antigravity can orchestrate too: the seedmux-team skill is also installed to~/.gemini/config/skills. - Settings › Agent gets an Antigravity switch (
[agents] agy_yolo) for the sidebar's New Agent menu. - Fixed a stray hollow ring on collapsed group headers in the sidebar: a tab row's cell reused for a group header kept its icon, overlapping the disclosure triangle.
- Codex started from Seedmux now defaults
tui.whimsyto off in the Seedmux profile, which stops the input cursor flicker caused by Astra's sparkle animation (openai/codex#44444). An explicitwhimsysetting of your own is left alone.
- Quieter sidebar rows: group headers use the system disclosure triangle in the icon column and are no longer bold; agent tabs show their brand mark in monochrome (Claude's orange no longer reads as a status), plain shell tabs show a small hollow ring, and the leading "✳" that Claude Code writes into its title is hidden since the mark already says it.
- Titles are pure white and get the whole row: the per-row directory badge is gone (it repeated the same repository name on nearly every line), leaving only the split-pane count and the collapsed-group member count at the row end. The directory is still shown in the pane header and the inspector.
- Closing the main window with the red button now hides it instead of quitting. Sessions, the Agents panel and the Dynamic Island keep running; click the Dock icon, use the global shortcut or the island's Show action to bring the window back. ⌘Q still quits.
- The Dynamic Island gets a glass look: 40% transparency with blur by default, adjustable from the island menu or Settings › Appearance (Glass effect switch, transparency 5–80%, blur). On a notched display the band beside the notch stays black and fades into the glass; the "Notch band" option offers Sharp, Fade or Glass with plain-language descriptions.
- The session list is now a ledger: one line per session with the agent mark first and the state glyph last, lowercase group headers with counts, inline n / y keycaps for approvals and reply / review keycaps that jump to the terminal. Clicking a title jumps to its pane, hovering shows the chat button, idle rows carry no state word. Text is pure white, the island is wider (up to 560pt) and caps at 360pt before scrolling.
- Seedmux's own ghost replaces the pixel crab in the notch: it floats and blinks while agents run and its eyes turn amber when a session needs you. Compact-state icons sit centred beside the notch.
- Hide a session title for screenshots: hover a row and click the crossed-out eye to mask it with asterisks (also hidden from tooltips); click again to restore. Never persisted.
- New installs start the main window at 15% transparency with full blur; existing settings are unchanged.
- Restore the dynamic island experience for agent sessions, including compact and expanded states, session status, request attention, chat details and menu actions.
- Tune the island menu height and remove duplicate Agent settings and legacy Launch at Login controls so the menu stays within the display's top status area.
- Update the Agent Team dispatch skill so the lead agent plans tasks that share a deliverable as one batch, reviews each result, and waits for all results to be reviewed and resolved before giving a consolidated response. Parallel code reviews are combined into one assessment with duplicates removed and conflicting findings checked.
- Keep unfinished work visible across replies and rework. The guidance now covers failed dispatches, missing or duplicate replies, worker replacement and late evidence; incomplete results must identify the remaining gaps, while explicit requests for progress updates or separate deliveries are respected.
- Fix Agent Team reporting that Seedmux has exited when a Codex sandbox denies process inspection. Bridge availability is now determined by the authenticated request itself; viewing a task and running local acceptance checks no longer require a running bridge. (#16)
- Task replies are recorded as delivered only after the bridge confirms success. If delivery succeeds but the task record cannot be updated, the CLI explicitly reports that the reply was delivered and must not be sent again. Missing or invalid bridge configuration is rejected before preparing a new task or adding workspace trust records.
- Clarify sandbox requirements and connection errors. This update preserves Codex network and file permissions and keeps task files in their existing location; a sandbox that denies local network access or task-directory writes still needs explicit authorization for those operations.
- Sidebar groups: right-click a tab and choose "Add to New Group…", or create a group from the space menu, then drag tabs in and out. A group is just a name and its members: it is not tied to a directory, tabs stay in order inside it, the whole group can be dragged, and it collapses to one row with a member count. An empty group keeps its place until you delete it. Groups are saved with the layout.
- The tab list is now a native outline view with system drag and drop: the dragged row lifts out into a single slot that follows the pointer, the list makes room as you move, and dropping below the last row or onto a collapsed group header works. Tab rows are a little tighter (28 pt).
- Tab icons follow the agent: a tab whose active pane runs Claude, Codex, Grok, OpenCode, Kimi Code or Pi shows that agent's mark in place of the terminal glyph; group rows use a folder. Text is one color everywhere and the selected row is the card behind it.
- Right-click a group (or the space background) for "New Tab" and "New Agent ▸": the tab opens inside that group with the group's working directory, and the chosen agent starts in it.
- New Settings › Agent page with one switch per agent: agents started from the New Agent menu launch with their full-permission flags (Claude
--dangerously-skip-permissions, Codex--dangerously-bypass-approvals-and-sandbox --dangerously-bypass-hook-trust, Grok--always-approve, OpenCode and Kimi--auto); turn one off to start it plain. Stored as[agents]inconfig.toml. - Settings › Terminal › "Recover Missing Tabs": lists tmux panes that are still alive on the current server but no longer in your layout, and reattaches one as a tab without starting another shell.
- While a pane is scrolled back through history, the cursor tmux draws there is hidden (tmux 3.3+,
[terminal] hide_scrollback_cursor).
- Settings now live in a plain text file:
~/.seedmux/config.toml. Fonts, theme, engines, window opacity and blur, the hotkey window, keyboard shortcuts, the agent team switch, usage statistics, update checks and language all move there; the file is created on first launch from your existing settings, with every option listed and documented in English comments. Edit it in any editor or let an agent in a pane change it: changes apply on save, the Settings window writes back to the same file, and a banner at the top of the window reports what changed or points at the line that is wrong. - Keyboard shortcuts are part of the file too (
[shortcuts]), one action per line as{ key = "cmd+t", enabled = true }. Bindings are validated as a group, so a conflict or typo keeps the previous set instead of leaving the menu half-changed. config.local.tomlnext to it holds machine-specific overrides; a symlinkedconfig.toml(dotfiles) is written through the link.- Known limitation: shortcut round-tripping on non-US keyboard layouts (AZERTY, QWERTZ, Japanese) has not been verified on hardware yet.
- Fix agents reporting "low max file descriptors (2560)" inside panes: Seedmux now raises its file descriptor limit at launch, so the tmux server and every pane inherit the higher limit. If you upgraded, use Settings › Terminal › tmux Backend › Restart… once so the already-running server picks it up. (#24)
- Minimized panes now show the agent's logo and the same status mark as the Agents panel: spinning while running, orange while waiting for you, green when finished, an hourglass for background work.
- The collapsed Agents panel shows a summary status mark for the most urgent agent; hover for the per-state counts.
- Integrate PostHog.
- The ⌘P session list now includes Pi: recent Pi sessions are discovered from
~/.pi/agent/sessions, titled by the session name or the first message, and resume in a new tab withpi --session. Sessions that never received a message are skipped. (#22)
- Reorganize Settings: Appearance now holds window transparency and blur, font and theme on one page, with the full palette behind "Customize Colors…". Session type and renderer move to a new Terminal page. Permissions becomes Privacy & Permissions and holds the anonymous usage statistics switch. The sidebar groups related pages.
- Fix high GPU usage and heat while window transparency is on: a transparent window no longer draws the system shadow, which the window server recomputed every frame even on a completely still screen. At the default 5% transparency this measured 69% GPU before and 23% after. Transparent windows now have no shadow at their edges.
- Reduce the CPU cost of the two-second agent status refresh: Claude transcript files are re-read only after they actually change, and a terminal reporting the same title again no longer refreshes the header, the sidebar and the saved layout.
- Codex sessions launched in Seedmux now use a dedicated
seedmuxprofile for status hooks. Existing custom profiles remain usable. - Preserve third-party hooks and their trust and enabled settings when upgrading from the previous integration, including settings saved in other profiles. Changed configuration files are backed up before migration.
- Keep model, reasoning, MCP and hook preferences when refreshing the integration, and fix duplicate status hooks when launching with
-p=seedmux.
- Simplify the first-launch walkthrough to Welcome and tmux setup. Permission requests no longer interrupt the first run and remain available from Settings › Permissions when needed.
- Update the walkthrough progress and button copy to match the shorter flow, while keeping the existing permission page available for a future re-enable.
- Agent team now supports Kimi Code:
smx-team spawn --agent kimi(anddiscuss --with … kimi) starts a Kimi worker in Never Ask mode, pre-trusts the working directory so no "Trust this folder?" dialog blocks it, waits for the input box before delivering the task, and forwards--modelas a Kimi model alias. Kimi can also orchestrate: it reads the seedmux-team skill from ~/.agents/skills.
- Add an Agent Team section to Settings. A switch turns the whole feature on or off: off stops the local bridge and removes the smx-team command and the seedmux-team skill copies, so agents no longer see the feature; on puts them back.
- View, edit and restore every prompt the feature uses: the four skill files the orchestrating agent reads, plus the worker contract and the discussion task templates that smx-team writes into task files. Edits are stored in ~/.seedmux/team/prompts, apply to the next task, and survive updates; Restore Default puts a single prompt back, Restore All Defaults… clears them all.
- smx-team gains a
promptssubcommand (list / show / default / path / render / reset) for the same files, usable without the app running. - Fix the Agents panel leaving its hover highlight on several rows after scrolling: the highlight now follows the pointer.
- Redesign the Settings window as a two-column layout: a sidebar with General, Shortcuts, Permissions, Font, Colors and About, plus a search field that filters sections by name and by the settings they contain. Every page keeps exactly the same options as before.
- ⌘, opens the new two-column window. The previous toolbar-tab layout is still available as Settings (Tabs)… (⇧⌘,).
- Add optional terminal editing shortcuts in Settings › Shortcuts › Terminal: ⌘⌫ deletes to the beginning of the line (Ctrl+U), and ⌥⌫ deletes the previous word (Ctrl+W). Both are off by default, can be enabled independently, and apply immediately to open panes.
- Support both Ghostty and SwiftTerm, including input after leaving tmux scrollback. Preserve input method composition; the running shell or app determines how Ctrl+U and Ctrl+W behave.
- Add a first-launch welcome flow: an animated ghost, a tmux step that only appears when tmux is missing (one-click install through Homebrew, detected automatically once installed), and an agent permissions step for Accessibility, Screen Recording and Full Disk Access. Every step can be skipped. Existing installs can open it anytime from Help › Welcome to Seedmux or Settings › General.
- Find tmux in more places: Nix, mise and user-level prefixes, falling back to your login shell's PATH when the usual locations are empty.
- Make custom names belong to individual panes, so split panes can be renamed independently and the tab name follows the active pane.
- Add rename and restore actions to pane context menus, and keep custom names visible in the sidebar, pane headers, parked panes, Inspector and agent status rows.
- Migrate the previous tab-level custom name from saved layouts to the active pane without overwriting an existing pane name.
- Add Find in a pane with ⌘F: a find bar appears in the top-right corner of the active pane, searching as you type, with a match count, Enter / ⇧Enter for next and previous, and Esc to close. ⌘G and ⇧⌘G work from the Edit menu as well.
- Match highlighting comes from the session itself, so results stay consistent with the real scrollback history; closing the bar clears the highlight and returns to the bottom.
- Typing back into the terminal after a search returns to the bottom as usual, and the find bar hands keyboard focus back to the pane when it closes.
- Rename a tab by double-clicking it in the sidebar, or with “Rename Tab…” in its context menu. A custom name overrides whatever the shell or program reports and is kept across restarts; “Restore Automatic Name” brings the reported title back.
- Automatic tab names now follow the active pane: moving focus between splits updates the sidebar name immediately instead of waiting for the next title report.
- Fix a sidebar row staying visually lifted after a drag was interrupted — by switching apps, or by a dialog taking focus — so the row no longer keeps its highlight until the next drag.
- Add Finder services “New Seedmux Split Here” and “New Seedmux Tab Here”: open a folder — or a file’s parent folder — directly in a new split or tab, with the working directory set before the shell starts.
- Rework the Permissions page. Full Disk Access, Accessibility, Screen Recording and Input Monitoring now open a drag-and-drop guide beside System Settings, so the right app can be added to the list instead of hunting for it.
- Add “Reset This Permission” inside that guide, with a confirmation step, for the case where a permission looks enabled in System Settings but still doesn’t work because of a stale entry.
- Fix the microphone request under Hardened Runtime by signing the app with the audio-input entitlement.
- Improve process names in the Inspector when an executable path is unavailable, using the kernel process name or argv as a verified fallback.
- Show the known
codex app-serverservice name while avoiding guessed titles from ordinary CLI arguments. - Add an “Unknown process” fallback and regression coverage for process identity and localization.
- Fix the hotkey window remaining above other apps after clicking outside, including the Dock, or switching apps or desktops. When automatic hiding is off, it stays open as a normal window that other apps can cover.
- Restore the ordinary main window when reopening from the Dock or switching back to Seedmux. Switching back preserves an already visible Settings window; clicking the Dock explicitly opens the terminal.
- Hide only the terminal when dismissing the hotkey window, keeping Settings independent. Fix stale exit animations affecting a reopened window and restore auxiliary window stacking when leaving hotkey mode.
- The hotkey window can now receive typing while keeping the previous app active and its menu bar visible. This option is on by default; the summoned window appears above other apps, including full-screen windows.
- Automatically hide the hotkey window when switching to another app, with a default-on switch in Settings → Shortcuts. Keep the focus you just chose, and keep the window open while using Seedmux settings, menus, and session panels.
- Edge windows slide in from the screen with the cursor and slide out with a fade. Fix flickering and disappearing windows when rapidly reversing the animation.
- Fix Seedmux unexpectedly quitting when Settings closes, and keep Settings above the terminal when summoned over another app's full-screen window.
- Fix the global shortcut to actually hide Seedmux when pressed again, then return to the previous app instead of leaving the window visible.
- Give the hotkey window its own section in Settings → Shortcuts. Choose Normal, full-width top/bottom, full-height left/right, or any of four centered edge positions.
- Configure full-width height and full-height width from 25% to 100% of the available screen area, defaulting to 55%. Window minimum dimensions still apply. Normal restores the original frame; ordinary edge positions preserve the original window size.
- Add an adjustable window blur control in Settings → General. Blur applies only while the window is transparent and is disabled by default.
- Use 5% window transparency by default when no transparency preference has been saved. Existing preferences are preserved.
- Add a customizable global shortcut to bring Seedmux forward and switch back to the previous app. The suggested combination is ⌘4, disabled until you enable it in Settings.
- Every shortcut now has its own enable checkbox. Turning it off preserves the chosen keys and releases the combination, including standard editing shortcuts.
- The Shortcuts page now uses the same grouped layout as the other Settings pages, with clearly outlined editable keys and messages beside the affected action. Settings and Quit retain their fixed standard key combinations.
- Fix a brief flash of enlarged terminal content when creating or switching tabs.
- Kimi Code sessions now appear in the Agents sidebar with running, approval, question, completion, and interruption states. Main-session events keep subagent completion from incorrectly marking the main task as done.
- Codex status now uses hooks throughout, including question prompts and Esc / Ctrl+C interruption. Rollout-log monitoring has been removed, preventing historical log events from overriding newer hook states.
- Agent icons use softer colors in light and dark themes. Kimi uses the Simple Icons vector mark with optical alignment in the sidebar and session palette.
- Restart existing Codex and Kimi Code sessions after updating to load the new hooks.
- Agent-team workflows now include reusable workers, task scopes, acceptance checks, and explicit completion, failure, and blocked reports.
- Failed or unavailable verification can no longer be reported as successful completion. Replies also handle large verification output and startup warnings more reliably.
- Design discussions start with independent opinions and use targeted follow-ups when needed. Team instructions load detailed guidance on demand, and these reference files are bundled and refreshed with the app.
- Single-pane sidebar tabs now consistently show their working-directory badge. Duplicate badges are hidden when the title already contains the directory name; split tabs continue to show a pane count.
- Window transparency is now adjustable in Settings. A single-layer rendering model keeps the sidebar, cards, pane headers, and terminal surfaces visually consistent at every opacity.
- The sidebar now keeps one row per tab: split tabs show a pane count, while project-directory badges appear only on minority tabs where they help distinguish context.
- Sidebar tab and agent labels now use a regular font weight for a lighter, more consistent hierarchy.
- Terminal font settings now support a separate CJK font. The grid-aligned preview shows mixed Chinese and Latin text as it will appear in the terminal, and the choice applies to both terminal engines.
- Keyboard shortcuts can now be customized in Settings → Keyboard Shortcuts. Seedmux detects conflicts, lets you remove or reset individual bindings, and can restore all defaults at once; standard editing shortcuts remain protected.
- Seedmux now ships an Intel build. Intel Macs get their own download and update channel, so every release lands on both Apple Silicon and Intel; Apple Silicon users are unaffected.
- The sidebar now shows every split pane and its project or working-directory badge, with direct selection and hover-to-close controls.
- Tabs and panes can now be dragged to reorder, merge, or split into a new tab. Context menus also move panes between tabs and move panes or complete tabs between spaces.
- Seedmux now reports anonymous daily active usage, so we know roughly how many people use it. You can turn this off in Settings → General → Privacy.
- When the only process in a terminal tab exits (including via
exitor Control-D), Seedmux now closes the tab automatically instead of leaving an unresponsive “Process exited” terminal. Existing multi-pane and parked-pane collapse behavior remains unchanged.
- New installations now make terminal backgrounds follow each space’s light or dark theme by default, instead of forcing a white terminal in the first dark space. Existing explicit background choices remain unchanged.
- Automatic update checks now run every hour while Seedmux remains open, in addition to the existing check at launch.
- Pi agent status is now fully integrated: Pi sessions appear in the agent panel with their official logo and live running, idle, approval, and question states. Seedmux installs an isolated Pi extension only when Pi is present, ignores non-interactive and nested sessions, removes stale rows after crashes, and can resume Pi sessions from the session palette.
- Claude view rebuilt as a web-rendered chat mirror: running Claude in a pane and opening the Chat View now shows a Codex-style Q&A layout — right-aligned user bubbles, thinking and tool calls folded into a "process · duration · N tools" timeline (expand a card for its args, Bash code blocks, or per-line Edit diffs), and each reply as GitHub-flavored markdown with syntax highlighting. Still a live, read-only mirror that follows the session in real time.
- The agent-team client half now actually ships with the app: on launch, Seedmux installs/refreshes the
smx-teamCLI (~/.seedmux/bin/smx-team) and theseedmux-teamskill (~/.claude/skillsand~/.agents/skills), keeping them in sync with every app update. Previously this was only promised in 0.1.11 — the files never left the dev machine. - Claude view (chat mirror) readability: message and code text now renders at full terminal brightness instead of dimmed (hard to read on dark backgrounds), tool lines are brighter, and restored views pick up the correct colors on first mount.
- Claude view now toggles in place: right-click a pane running Claude (or use the new header button) to overlay a read-only chat mirror of the session right on top of the terminal — the terminal keeps running underneath, toggle back anytime. Open views are restored across relaunches.
- Sidebar and empty-state logos now always render correctly in release builds.
- Release notes are now embedded in the update dialog and on every GitHub release (this changelog!).
- New Permissions tab in Settings: see the app's system authorization status (Accessibility, Screen Recording, etc.) at a glance, with one-click request or jump straight to System Settings.
- Inspector Git section now shows per-file +/− line counts.
- Drag files from Finder into a pane to insert their shell-escaped paths.
- Fixed ⌘P resuming a Claude session losing its permission mode.
- Fixed several full-screen window chrome glitches; refined traffic-light button placement; sidebar branding now shows in full screen.
smx-team assignnow reuses an existing agent pane instead of always spawning a new one; stable CLI entry at~/.seedmux/bin/smx-team.
smx-team spawnsupports--modelpassthrough; the team skill ships with the app and stays in sync automatically.
- Agents waiting for your input now show a slowly breathing orange dot — impossible to miss, never annoying.
- The focused pane gets a subtle breathing ring; inactive pane borders are slightly brighter for easier scanning.
- Sidebar and split-pane focus legibility pass: brighter selected-row background, higher-contrast text, theme-colored focus ring.
- Fixed crash on launch on macOS 13–15 (missing Swift runtime compatibility shims are now bundled). (#1)
- New ⌘P session palette: fuzzy-find running agent sessions to jump to them, or resume recent ones — now backed by real data.
- New tabs (⌘T, menu, or sidebar) inherit the current pane's working directory.
- Fixed window chrome flashing the wrong light/dark appearance when jumping directly between spaces.
- Custom DMG installer window with branded background.
- Factory workspaces color swap: Personal = dark, Work = light.
- Settings window now follows the system light/dark appearance.
- Fixed ANSI color wheel stroke color in dark mode.
- Theme grain (noise texture) now defaults to off.
- Initial public release: native macOS terminal with swipeable workspace sidebar, tmux-backed panes and splits, agent status awareness (Claude / Codex / Grok / OpenCode), per-workspace theming, Sparkle auto-updates.