0.17.4 Highlights
๐ก A font for every place you read and work. The interface, terminal, AI chat, file preview, file editor, and Document Graph each take their own face and size, or follow the interface or the terminal. Pick the Default (proportional to read, monospace to work) or Hacker (monospace everywhere) preset, save your own setup before you experiment, and zoom everything together with Cmd+= and Cmd+-. First run now walks you through typography, theme, and update channel in four short screens.
โ Your composer is also a command line. Press ! and it becomes one, with Tab completion for commands, paths, and branches. Press ! again and plain English becomes the command. Output streams back into the conversation as a card with its exit code, its duration, and a Stop button.
๐๏ธ Mark up a screenshot before you hand it over. Draw, label, and now crop a pasted image inside Maestro, with the crop staying editable afterwards so you can widen it back out. Ask an agent to save the result and it lands in your project.
๐ด Snooze a tab you are not ready for. Park a chat, a file, a terminal, or a browser page until "next friday 3pm" or "2 weeks", leave a note for your future self, and it comes back and taps you on the shoulder.
๐ธ๏ธ Graph a whole folder of documents, not one file at a time. Right-click a folder to see how your notes really connect, flip through six layouts from the keyboard, and find the orphans: documents nothing links to get their own band at the bottom, which is the only way you ever see them.
๐ฎ The work you lined up stays lined up. A queued message could be silently lost on its way out, and Resume Agent forgot the prompt it existed to replay the moment you quit and came back. Both are fixed, and when you do hit a plan limit Maestro now names the window you exhausted and says whether waiting is your only option.
๐งญ Steer an Auto Run without stopping it. Type while a run is going and your message rides in front of the next task as a steering note, so a course correction costs you no extra turn and no lost momentum. It waits with an amber badge, turns green the moment a task picks it up, and you can click it back before any task sees it.
๐งฎ Open a Parquet file and just look at it. Data files far larger than your machine's memory open as a live, sortable, filterable table instead of a "binary file" card. Type price > 100 and region in (us, eu) and the filter runs across the whole file, not the rows on screen. Works over SSH too.
Setting agents up
- ๐งฐ A per-agent Setup Script runs inside every worktree Maestro creates, so your
.env.localand your installed dependencies are already there before you start work. - ๐ Switch an environment variable off without deleting it. An eye button parks any variable: it keeps its key and value and stays editable, but nothing Maestro runs can see it. Test without a proxy or an API key and put it back in one click, per agent, worktrees included.
- ๐ค An environment variable name suggests itself. Typing
CLAUDE_HOMEwhen the variable is reallyCLAUDE_CONFIG_DIRsets something the CLI ignores, and the agent then runs as if you had configured nothing at all. The name field completes as you type now, from a short per-provider list of the variables people actually reach for (account directory, credentials, gateway, model) plus every name you have already set anywhere in Maestro. Only names are remembered, never values, so a recalledANTHROPIC_API_KEYis a spelling and nothing more, and anything outside the list can still be typed by hand. - ๐ฟ Every per-agent git action from three places. Git log, diff, pull, push, branch switching, Create PR, and worktree setup from the branch pill, the Left Bar right-click menu, or the command palette. Pull and push badge how far ahead or behind you are and stream colored output you can close without killing the command. A push or fetch that fails now reads as plain text, instead of arriving with raw color codes in front of every word and every progress percentage mashed into one line.
- ๐ Opening a PR no longer holds the form hostage. Send it to the background and keep working; the outcome arrives as a toast on the agent it came from, and a second attempt joins the first instead of racing it into a duplicate.
- ๐ Sign back in before anything is broken. Re-authenticate Provider is in the command palette, so you can refresh expired credentials with nothing stopped. The dialog names the account you are signing into, since one provider can hold several logins and picking the wrong one is invisible until the login "succeeds" and the agent fails again.
- ๐๏ธ Change an agent's provider and keep your tabs. Moving an agent from one provider to another used to cost you the conversations open in it.
- ๐ Move an agent to a different folder. The working directory in Edit Agent was read-only, so a project that moved meant a new agent. It is editable now, and the Files panel, the Auto Run folder, git, and Cue all follow the agent to its new home.
- ๐ฅ๏ธ
maestro-cliruns the binary you pointed it at. Every CLI spawn fell back to the bare command name, so a custom agent path was ignored and the desktop app and the CLI could run two different copies of the same agent. On Windows nothing ran at all. The CLI resolves the real binary now, you can pick which installation to run when several are found, and installingmaestro-clion Windows actually puts it on your PATH. - ๐ช First run stops asking for things it can work out on its own. The agent name is optional and falls back to the folder you picked, and the agent name and the project name are finally separate, so calling an agent "Scout" no longer makes the assistant greet your project as Scout. If the folder already has files in it, the agent opens by reading the project and telling you what it found rather than asking you to describe what you are building; only an empty folder still asks. Both the discovery turns and the playbook write-up name the model they are running on, and if your repo already has its own planning there is a "skip that, just create the agent" way out before a single turn is spent. The opening turn also reliably sends now, where it used to be scheduled and then cancelled before it went anywhere, and starting an agent that generated no documents no longer swings the Right Bar over to an empty Auto Run panel.
- ๐ Let an agent reach your calendar, contacts, photos, and folders on macOS. Anything an agent shelled out to was denied on the spot and in silence. Maestro now declares that whole surface, so the request reaches you as a normal macOS prompt and you decide service by service.
- ๐ A Group Chat participant you put on a remote host stays there. If the SSH remote cannot be reached, Maestro says so and names it, rather than quietly running the work on your own machine against somebody else's paths.
- ๐๏ธ Your groups survive a slow start. When the group list could not be read at launch, Maestro saved the empty list over the real one and every launch after made the loss stick. One user lost 13 groups and the placement of 83 agents that way. A list Maestro never managed to read is never written now.
Auto Run and automation
- ๐ A run paused at a gate can finally be answered. A run parked on a pause gate kept the document read-only, which made the gate unanswerable: it asks you to tick the box it sits above, and the lock was exactly what stopped you. Editing and the checkboxes open back up while a run is paused, in the panel, the expanded view, and on the web.
- ๐๏ธ Per-phase model and effort. Drop a
MAESTRO:MODELmarker above a group of tasks and cheap survey work runs small while the hard design work runs at your provider's ceiling. Markers carry a reason now, shown behind an info button, so a playbook you read back a week later can be audited instead of merely obeyed.maestro-clispeaks the same directives. - ๐ Stage a whole folder, nested subfolders included, and the picker keeps the order you clicked rather than reordering your run into tree order.
- ๐ A folder in the document picker shows how far along it is. Folder rows carry a percentage and task count summed across everything beneath them, so answering "how far into this am I" no longer means expanding the folder and reading every row.
- ๐ก๏ธ Cue can screen GitHub issues for prompt injection. An issue body is the one Cue input a stranger can write, and it goes straight to an agent. Maestro can score that text, refuse anything that reads as an attempt to steer your agent, and show you what it blocked. Off until you supply a 0DIN token.
- ๐ท๏ธ Cue can watch for a label. Drop
needs-reviewon a pull request or an issue and the subscription fires, filtered to the labels you name and to PRs, issues, or both. - ๐งญ Cue pipelines lay themselves out instead of opening as overlapping boxes, and nothing can draw on top of anything else afterwards. The Scheduled Tasks list stays readable past a hundred rows with day collapsing and an All / Once / At set times / Interval filter.
- ๐๏ธ A trigger that fires a thousand times reads as one History row. A busy heartbeat could bury everything else under hundreds of near-identical entries. Repeated runs collapse into one row with a tally ("1,382 runs - 3 failed"), a clean run that printed nothing leaves no row at all, and runs from before Maestro recorded output stop drawing twice. Choose how long Cue keeps its history, from 7 days to a year.
- ๐ A playbooks folder on an SSH agent actually loads. Scanning a remote Auto Run folder walked it one directory at a time, so a few hundred subfolders took minutes and the panel sat empty with no reason offered. A 528-folder remote now scans in under half a second instead of about four minutes.
- ๐ A playbook that merely describes halting no longer refuses to start. An authoring agent writing "if the build breaks, halt" stopped the run before its first task, and since the marker renders as nothing you had no way to see what was blocking it. A styling task stops reading as a job for a human, too: "visually" on its own used to raise the human-step banner.
- โ๏ธ The Auto Run editor is a real editor, with syntax colors, a line gutter that follows wrapping, and search hits highlighted in place.
- ๐งฏ Stopping an Auto Run leaves your chat alone. A failing or killed task posted its error into whatever conversation happened to be open and could break that tab's ability to resume. Those errors stay on the Auto Run banner now, next to Resume, Skip, and Abort.
- ๐งฉ Long prompts reach Claude whole on background runs. Typing a long prompt in one go could silently lose kilobyte-sized pieces of it, so Cue runs went ahead on prompts with chunks missing and nothing said so. Maestro feeds the prompt in pieces, waits on Claude's reads rather than a fixed clock, and fails loudly if what arrived is not what was sent.
- ๐บ Cue finds the tools you installed. A Maestro opened from the Dock inherits a bare system PATH with no Homebrew on it, so anything in
/opt/homebrew/bincame back "command not found". Cue shell commands, agent runs, and worktree setup scripts all get the full PATH now. - ๐๏ธ Cue and Director's Notes are on out of the box, so new installs do not have to go find Encore Features first. Either one still switches off in Settings.
- โฑ๏ธ A run is not billed for time you were asleep, a task only a human can do no longer stalls a playbook forever, and Auto Run commits one task per commit instead of leaving changes for a later task to pick up.
The chat
- ๐ Edit a queued message, and send it out of turn.
Cmd+Shift+Eopens the last one,Cmd+Entersaves, and the dialog carries model and effort pickers, so a message queued against Opus can go out on Haiku without retyping it. Queued cards render markdown the way you wrote them instead of as a wall of#and backticks, and they only collapse when there is real text hidden behind the toggle, naming how many characters that is rather than counting newlines at you. - โจ๏ธ The Execution Queue is fully keyboard-driven. Arrow through every queued message across every agent, press Enter for an action menu with Send Now, Edit, Delete, Hold, and Copy, titled by agent and tab.
- ๐ Turns show the model and effort they actually ran under, including queued ones, which freeze their settings the moment you press Enter.
- โฑ๏ธ How long this took, and how long this has been. Every agent reply carries its elapsed time in the gutter, from
<1mup to5d 6h 25m, and Context Details now reports the message count and wall-clock duration of the tab, the two figures you previously had to export the whole conversation to read. - ๐
Opt+Cmd+Fsearches every open tab in an agent, grouped by tab, and hands off to that tab's find bar so next and previous carry on from there. - ๐ A tab opens exactly where you left it. Coming back to a long chat used to land you above your old position, and the heavier the transcript the bigger the jump. A tab that was following live output comes back at the bottom, still following.
- ๐ผ๏ธ An agent can save a screenshot you pasted. A pasted image reaches an agent as pixels with no path attached, so writing one into the repo was a right-click only you could do.
Cmd+Shift+Yopens the staged-image organizer, and slot numbers stay visible so you can say "annotate screenshot 3". - โณ A quota wall stops eating your conversation. Sends queue behind a pending retry instead of superseding it and throwing away the prompt it was holding, the countdown says how many are held, and the retry goes out under whatever model the agent carries at that moment, so switching model and retrying actually gets you past the wall. An exhausted agent is probed every 15 minutes rather than every minute, which turns a four hour outage from roughly 240 refused probes into about sixteen.
- ๐ An error no amount of retrying can fix stops being retried. Codex rejecting a model outright was drawn as "Service overloaded, auto-retrying" and probed forever, with the one instruction that would have fixed it sitting behind the banner. A hard refusal now reads as the error it is, a recovered outage clears the error it recovered from, and a momentary Claude hiccup no longer flags a working agent as broken.
- ๐ป Resume Agent after signing back in looks like it resumed. The replayed prompt ran with no pulsing dot and nothing in the transcript, so it read as doing nothing, and sending it again by hand ran the same ask twice with two sets of edits.
- ๐ซฅ A resumed conversation stops opening with Maestro's own system prompt at the top of it. A tab hydrated from disk drew the whole system envelope as if you had typed it, burying your real prompt under the conductor profile and a couple of file paths.
- ๐ Codex feels like Codex. Your own Codex commands appear in
/autocomplete, read straight off disk and honouringCODEX_HOME, and Codex thinking shows up as thinking rather than being handed to you as the agent's actual answer. - โน๏ธ Stop stops the whole agent, not just the tab you are looking at, and Maestro no longer calls itself idle while a dozen messages are still queued behind a finished turn.
- ๐ธ Tab naming, history synopses, and participant summaries run on your provider's cheapest model, so a first message to an Opus agent no longer buys an Opus turn to write a three-word title.
Files, previews, and media
- ๐ง CSV, TSV, audio, and video get real support. Tabular previews get a keyboard-driven row detail view, and media plays inside Maestro with a 0.25x to 4x speed control that survives a restart.
- โถ๏ธ A media player that follows you around. Browse away and it detaches into a floating widget you can drag, resize, minimize to a play/pause pill, or double-click to re-dock. It holds a queue with each file's running time and what is left, and a media link in a chat plays in Maestro instead of launching your OS default app.
Opt+Cmd+Mopens it. - #๏ธโฃ Jump to any heading in a markdown document. Press
#for a Cmd+K-style palette of every heading with a fuzzy filter: type three letters of a section name, press Enter, land there. The Table of Contents follows the scroll too, lighting up the section you are actually standing in. - โก The Files panel stops sitting on "Loading files..." A large project was built one directory at a time, hundreds of round trips deep, so the panel could spin for minutes over work that takes a tenth of a second. It is walked in one pass now, and a folder sitting right at the depth cap opens instead of drawing as empty.
- ๐ Narrow fuzzy file search by kind with All, Code, Docs, Data, Media, and Other pills, and rows size themselves to the font you picked.
- โ๏ธ Ticking a task checkbox in a rendered preview writes straight through to the file.
- ๐ Publish a text file as a GitHub Gist from its tab menu, without making it the active tab first. A conversation can be published the same way.
- ๐๏ธ Compress a folder to a zip in place from the Files tab, SSH remotes included.
- ๐ผ๏ธ Right-click any image to copy it or save it into the project, whether it is a Mermaid chart, a diagram, a screenshot, or a thumbnail.
- ๐ Searching inside a file preview stops taking the window down with it. Highlighting matches in a syntax-highlighted file could crash the whole app on the next redraw.
Documents and memories
- โจ๏ธ Drive the Document Graph from the keyboard.
Lsteps through Mind Map, Radial, Hierarchical, Force, and the two new layouts, Lobes (grouped by what they connect to) and Timeline (laid out by date).Dwidens neighbor depth,Ffits everything back on screen,Sdecides whether the wheel zooms or pans, and you can screenshot the whole graph. - ๐ง Graph your memories from the Memory Viewer, centered on
MEMORY.md, and see which ones nothing points at. A memory nothing links to is never recalled, so it costs disk and returns nothing. Memories read as rendered markdown now, with the filter one keystroke away. - ๐ฌ Director's Notes bucket by group instead of arriving as one flat list however many agents you run, file links in them actually open, and a run picks whichever provider is available rather than failing on a missing one. An AI Overview that fails says so.
- ๐ Maestro Prompts is a real editor now, riding the same stack the Memory Viewer uses.
The terminal
- ๐ฑ๏ธ Copy out of mouse-capturing TUIs like the Claude Code login, tmux, and vim with Option+drag on macOS or Shift+drag elsewhere. Right-click always offers copy and falls back to the whole line, so a soft-wrapped URL comes out in one piece.
- ๐ฅ๏ธ
vim,nano,less, andtopfill the whole terminal pane instead of painting into a corner of it. - ๐ A terminal tab has a live shell the moment it exists, including tabs opened in the background and every terminal restored on restart, and a killed shell leaves its tab in place to restart instead of vanishing.
- ๐ค Terminals always render in a fixed-pitch font, so choosing a proportional interface font no longer spaces terminal text out as
Cl audeeverywhere at once. - ๐ Copy Login URL from the re-authentication dialog, and signing back in actually works on Windows. A sign-in URL runs hundreds of characters and cannot be selected while the login screen owns your mouse.
Group chat
- ๐ฌ The moderator reads your intent. "Have A draft it, then B review" sequences the room; "ask everyone" fans out in parallel.
- ๐ฆ A group chat waits for a busy agent instead of dropping the work, so delegating to an agent you are already talking to no longer means spotting a note and sending the whole thing again.
- โฑ๏ธ A group chat reports how long its agents actually worked, not how long the room sat open. A chat left across a few nights used to read 481h 34m for about five hours of real work.
- ๐ Read a room as the whole team, or as the moderator alone, and your own prompts show up in the history where they belong.
- ๐ท๏ธ A group chat header shows the room's full name whenever the row has space for it. Fixing a phone layout had thrown the name away at every width, so a 2000px header with most of the row empty still hid it. The space left over is measured now, so the name renders in full or is dropped whole, never clipped to "Group Chat: Maes...".
- ๐ A collapsed Group Chats section tells you when a room is waiting on you, and a running room lights up in the agent jumper.
Keyboard and interface
- โจ๏ธ A shortcut you try to bind over an existing one is refused, naming the action that holds it, instead of silently stealing the key and leaving the older action dead. Maestro also will not take the combinations the operating system owns, like
Cmd+Shift+Arrowfor extending a text selection. - ๐ฆ Find a shortcut by pressing it, or by the word you would use. A By Key button listens for a combination and tells you what it does, and searching by a family keyword finds the whole family. You can clear a binding outright, and 100% keyboard mastery is reachable, because only shortcuts that actually have a key bound count toward the ring.
- โ Every modal, palette, and find bar has a real ESC button, and closing one hands the caret back to whatever had it before.
- ๐ช Modals are drag-to-resize and remember the size you left them at, and full-window destinations close each other instead of stacking, so Settings, the Usage Dashboard, Director's Notes, Cue, and the rest go where you asked.
- ๐ฏ Focus belongs to you. An agent can open a terminal, file, browser tab, or a whole new agent in the background without yanking the app over to it.
- โจ Surface Gloss adds a light source to Maestro's chrome so the title bar, sidebars, tab strip, and composer read as stacked layers instead of one flat sheet of paint. Four stops in Settings, off by default.
- ๐จ More of Maestro follows your theme, including the connecting orange, the context-window warning sash, and the pulse and glow effects that used to fall back to indigo on all twenty themes. A theme change from
maestro-clinow shows up immediately instead of waiting for a relaunch. - ๐ฟ Bind a key to Git Pull, Push, Change Branch, or Create PR, and filter the AI Commands list rather than scrolling it.
- ๐
Opt+Cmd+Rreloads the file tree, git status, worktrees, and history for the agent you are on, in one press, and re-reads the file you have open in a preview. A preview holds a snapshot read from disk, so after an agent rewrote that file the one pane you were watching kept showing the old bytes. - โฌ๏ธ Unread navigation goes both ways. A second
Opt+Cmd+Upwalks backwards through unread tabs, and Unread Only drives the agent and tab filters together in one press. - ๐๏ธ Tabs behave while you drag and close them. The strip scrolls when a reorder drag reaches its edge so you can drop past the tabs off screen, and closing a tab lands you on one you can actually see.
- ๐ท๏ธ The agent name gets the whole Left Bar row. Names used to clip around fourteen characters while the provider label underneath held an uncontested line of its own. The worktree arrow also leaves when the last worktree does.
- ๐ท๏ธ The Claude provider mode pill is opt-in. Turn it on to see whether each Claude turn ran on the TUI or on
claude -p.
Dashboards, privacy, and performance
- ๐ See how much downtime Maestro absorbed for you. A Resilience section keeps score of the outages your agents walked into and came back from, how much waiting Maestro sat through on your behalf, and how many retries it took.
- ๐๏ธ The Usage Dashboard gains a Groups tab. Bundle agents into a Left Bar group, a client, a project, and one tile tells you what it cost, with a sortable per-agent breakdown underneath. Tiles resize, an agent's full name is readable, and the distribution donuts have room for their center total instead of running a long figure like "831h 23m" underneath the ring.
- ๐ชช Filter the agent grid by provider account. With three Claude logins in one install, "Claude Code" stops being an identity anyone cares about. Every account lists the agents behind it, and the "N agents" chip on a quota row opens the grid already narrowed to it.
- ๐ก The context window tooltip names whose quota it is spending. The provider name alone does not tell you which bucket a turn came out of, so the tooltip now names the provider and the account, and it is the same account the Usage Dashboard files that agent under.
- ๐งพ Codex agents stop looking like they outspent every Claude agent you own. Their reported cost was growing with the square of how long you talked to them, and GPT tokens were priced at Claude's rate.
- ๐ง Plan usage reads what your plan really says. Accounts are named by login email, a maxed-out plan keeps its row while you wait for the reset instead of vanishing, windows are classified by how long they actually are, and a reading that comes back garbled is retried rather than written off.
- ๐ช See what the Auto Run wizard cost you and what it produced, with a per-day timeline split by whether a run shipped anything. The inline
/wizardwas recording nothing at all before this. - โฒ๏ธ WakaTime credits the work your agents did without you, counting Cue runs and
maestro-clitime, and stops mislabeling work done over SSH. - ๐ Support packages carry nothing that identifies you or your machine. Usernames, hostnames, paths, and project names are stripped before the package is written, so you can attach one to a public issue without a second thought.
- ๐ Sleep prevention no longer freezes your Mac's housekeeping. Maestro was asking macOS to keep the display awake, which is how the system decides someone is sitting there, so Photos clustering, Spotlight indexing, and Time Machine were all suppressed for as long as Maestro was open.
- ๐ Speed. Switching to an agent with a long transcript no longer freezes the interface, expanding a folder no longer re-renders every other row, typing in Settings no longer drops characters, and pasted images draw from cached thumbnails instead of decoding the full picture every time.
- ๐จ Diagram and math rendering. Mermaid labels pick a color that stays readable against their fill, a flowchart direction the lexer rejected is repaired, inline math renders as math rather than a literal
$$N$$, and an@inside a diagram label no longer takes the whole diagram down with it.
๐ There is also a new runmaestro.ai. It is not part of this download and it did not ship with the app, it just went live. Go have a look, and tell us what you think.
Full Changelog: v0.17.3...v0.17.4