Skip to content

What's new in Mastery HQ

The short version of every release. For how updates reach you, see updating Mastery HQ.

Nothing yet — freshly cut.

  • OBS Studio actually connects now. Streaming Mode has always offered to talk to OBS — connect, switch scenes, mute a mic, start and stop your stream from the strip at the bottom — and in an installed copy of Mastery HQ none of it could connect. The app blocked its own connection to OBS, so the whole section sat there looking functional and never was. It works. That also brings back the piece built on top of it: with a privacy scene set, opening a window that shows your API keys jumps your stream to that scene, and puts it back when you close it.
  • No user-facing changes. A maintenance release that exercises the build, signing, and update path end to end after internal release-tooling work. Your install updates exactly as it always does, and nothing in the app behaves differently.
  • A loop no longer gets worse the longer it runs — a refine loop always fed the latest pass into the next one, whatever the judge thought of it. So one bad rewrite became the foundation for everything after it, and a loop could spend its whole budget walking downhill and hand you something worse than pass 2. It now keeps the best-scoring version and refines from that: a pass that comes back materially worse is discarded, and the agent is told what went wrong with it so it doesn’t retry the same direction. When a loop runs out of passes it reports its best pass rather than its last. This is on by default; Keep the best pass turns it off if you genuinely want each pass built on the one before it, however it scored.
  • A loop can pick the best agent for the job before it starts — which agent does best is a property of the task, not a standing preference, and the loop had no way to know. Tick Pick the best agent first and it runs your goal once on each open agent window, scores the answers with the same judge that scores every pass, and runs the loop on the winner. The window says who it picked and what everything scored — and says so just as plainly when scouting changed nothing, so a loop that quietly fell back to your own pick doesn’t look identical to one that scouted and agreed. It’s opt-in because it costs one extra run per agent, and it only happens on a loop’s first start.
  • Pages in the Browser window render properly again — a page whose content only appears once its own scripts run was showing as a bare header on an empty background, and clicking a link inside a proxied page did nothing. Both are fixed: proxied pages now run under their own origin, so their scripts work and in-page navigation works. This only ever affected installed builds.
  • Mastery HQ tells you when an agent CLI has a newer versionSettings → Agents now shows the published version beside each installed CLI and offers to update it. It checks on open and every few hours, and it never updates anything on its own: these CLIs are driven with specific flags, so an upgrade arriving unannounced could break agent launching with nothing to connect it to. Where Mastery HQ installed the CLI, or the CLI updates itself, Update does it. Where something else installed it, you get the exact command instead of a button that would run, report success, and change nothing.
  • An install that produces a broken CLI now says so — a package manager can finish successfully and still leave a command that won’t start. Every install and update runs the CLI once before reporting success, and shows the failure in the CLI’s own words if it doesn’t.
  • The model quick-picks keep up with new models — the per-window model list was hand-maintained, so it went out of date quietly: it was still topping out at Opus 4.8 after Opus 5 shipped. It now folds in newly published models automatically. Anything genuinely newer than what shipped is marked · new; a model from a line the built-in list never covered is marked · also available, because knowing it exists isn’t the same as knowing it’s newer. The built-in picks stay first and stay in order — some models are deliberately left out because they’re rejected on a normal sign-in — and if the catalog can’t be reached you get exactly the built-in list.
  • A loop can now run with a crew — a refine loop has always been one agent doing the whole goal, over and over. Tick Run it with a crew and the agent you picked becomes the orchestrator: each pass it splits the work into pieces, hands them to the crew you chose, and merges what comes back into one result for the judge to score. The loop converges exactly as it did before — the crew only replaces the “doing the work” half of each pass. Crew members can be open agent windows or headless workers, so a wide split doesn’t mean a screen full of windows. The orchestrator picks who does what, but only from the crew you ticked — an assignment to anyone else is refused, not quietly honoured, because that list is what bounds what a run can spend. The window shows the assignment live while the pieces are out, and every pass records who did what. If a split comes back unusable, or the crew is unreachable, or the merge fails, the pass falls back to the orchestrator doing it alone — and says so on the pass, because otherwise a one-agent pass and a crewed one look identical.
  • More work runs at once by default — headless workers were capped at 6 running together, which was leaving parallelism unused in graphs wide enough to take advantage of it. New installs now default to 16. If you’ve already set your own number in Settings → Agents, that number is kept. Each worker is still a real process, so this bounds machine load rather than spend — a run’s token, cost and time budgets are what stop it; and on the CLI brands you’ll usually meet your account’s rate limit before you meet your CPU.
  • A loop is now described in one window instead of three — the Run Monitor used to hang off the right edge of a Loop window (where it covered whatever window was next to it), and a separate panel in the bottom-left corner listed all your loops. Both have moved inside the Loop window itself: the run’s picture sits under the goal, and All loops is a section at the bottom you can collapse. Nothing was lost — the list still shows loops whose window is closed, and still stops, re-runs, opens and deletes them. When no Loop window is open at all, a small chip returns to the bottom-left corner so a running loop is never invisible; clicking it opens the window. The monitor no longer repeats the pass table the window was already showing.
  • 3D models, generated and animated in the app — a new 3D window turns a description into a real 3D model you can spin around, then optionally rigs it and puts an animation on it. Open it with open the 3D pane, describe what you want, and the finished .glb is saved where Blender, Unity, Unreal or Godot can open it. Rigging runs a free check first, because a mesh that can’t carry a skeleton would otherwise fail after being billed. Generation runs on your own Tripo account — add a TRIPO_API_KEY in Settings → Agents — and every button carries its estimated price, because a control that spends money shouldn’t be unlabelled. It counts against the same daily media budget as images, video and music.
  • Infrastructure: run your sites and DNS without leaving the app — a new Infrastructure window manages Cloudflare: DNS records, TLS and security settings, Pages sites, and buying domains. Records are checked before they’re sent, so an A record pointed at a hostname or a CNAME pointed at an IP is caught here rather than taking a live site down. The settings that look safe and aren’t say so next to the control — Flexible SSL shows a padlock while talking to your server over plain HTTP, and Under Attack challenges every visitor, not just suspicious ones. Buying a domain shows Cloudflare’s own live price and renewal terms on a confirmation card, and nothing is charged until you press the button on it; if no price comes back, the button stays disabled rather than showing a reassuring zero. Auto-renew is off unless you turn it on. If you host on a Hostinger VPS, it lists your boxes and copies the IP you’d point a record at.
  • Watch a loop or graph while it works — a Run Monitor now hangs off the right edge of a Loop or Graph window and shows what the run is actually doing. Loops get two views: a figure-eight where the crossing point is the confirming judge every pass has to get through, and a rings view where each pass grows toward your quality bar so you can see whether it’s converging or stalling. Graphs get their stages as a constellation in dependency order, with a bar underneath that only turns green for a layer when every stage in it succeeded. A pass carrying a blocking defect shows red however high it scored. It collapses to a tab when you want the space back.
  • An expired sign-in now says so, and hands you the way back — when a CLI’s login expires part-way through a session, the run used to stop with nothing but the provider’s raw error. It now names the real cause, tells you it expired rather than claiming you were never signed in, and puts a Sign in button back in the agent’s header that opens a console already running the right login command. The button disappears again once a run succeeds. If another account for that brand is still signed in, Mastery HQ switches to it and re-runs.
  • Open several agents in one command“open a codex, kimi and gemini agent” now opens all three instead of being sent to whichever window happened to be focused as a message. Counts work too (“open 3 codex agents”), and a name it doesn’t recognise is reported back rather than silently dropped.
  • The two priciest video models quote what they actually cost — the estimate on the confirm card is what decides whether you’re asked at all, and for Sora 2 Pro and Veo 3.1 it was still a guess: $2.50 and $0.75 against real prices of roughly $4.00 and $1.60. Both now come from the provider’s published per-second rates. An expensive clip quotes an honest number before you approve it, instead of one that reads cheaper than the bill.
  • The zoom controls no longer sit under the toolbar’s flyout — picking a tool from the wrench menu meant reaching over the zoom pill. It’s been moved clear of it.
  • The app no longer promises a confirmation card it might not show you — asking for a song replied “confirm the card and it plays when ready” the instant you pressed enter, before anything had checked whether there was an ElevenLabs key to generate with. With no key you were promised a card that never appeared, and then told a second later that the key was missing. The reply now describes what you asked for rather than what is about to happen, and the confirmation card speaks for itself when there is one.
  • A video clip can no longer bill more than you were asked to approve — the confirm card that appears before a pricey clip was comparing your threshold against an estimate, and those estimates were running two to four times under what the provider actually charged. One clip billed $0.61 against a $0.25 threshold and never asked at all. The two models we have real invoices for now carry what they really cost, and from now on an estimate is never allowed to sit below a price that model has already charged you — so any clip that surprises you once will always ask from then on. Your daily budget was never affected; it has always counted the real bill.
  • Seedance is no longer described as the cheap option — it was labelled “cheap b-roll” in the model picker and the help docs, but measured against a comparable clip it bills more than Veo 3.1 Lite, not less. The label now says what it is: fast, and pricier than the default.
  • You’re told about a missing music key before you approve the cost, not after — asking to generate a song raised the “this will use your ElevenLabs credits” card first and only discovered the missing ELEVENLABS_API_KEY afterwards, so you could approve a charge for a run that was never able to start. The key is checked first now, and you get the “here’s where it goes” message straight away.
  • The empty-workspace welcome card can be closed — and switched off for good — the card offering a way in when a workspace has nothing open now has an ×. Closing it gives you the clear canvas you were after; it comes back the next time you return to an empty workspace, so it stays useful without becoming permanent furniture. If you’d rather never see it again, Settings → Style → Interface elements now carries a Welcome card on an empty workspace switch that turns it off for good and survives restarts.
  • “Open one of each agent” — one window per agent type, in one command — type or say it and every agent type opens at once, tiled as a grid so you can see them all rather than stacked behind whichever opened last. Add in rail mode and they go into rail instead. Say it again with those windows still up and it tops up rather than duplicating: you end with one of each, never two. It fills in only what’s missing, so closing a couple and repeating the command brings back exactly those. Hermes and local models aren’t included — they’re one command away each and neither is a plain agent window.
  • A supervisor is never told a retirement failed and then has it happen anyway — when an agent asks to retire another agent, or to stop everything running, that still raises a confirmation card and still waits on you. What changed is that the supervisor no longer sits holding its breath: it’s told the card is up, gets on with something else, and checks back for your answer. Before, a card you took a while over could time the supervisor out — and then apply anyway when you clicked, leaving it convinced the retirement had failed while the agent was actually gone. Now what it reports and what actually happened always agree, and you get ten minutes to answer instead of ninety seconds.
  • A flipped card now re-words your prompt, not just trims it — the headline on the back of a flipped window used to be your own sentence with the padding removed, which meant a rambling instruction still read as a rambling instruction. Now, a moment after the card turns, a local agent CLI replaces it with a true one-line paraphrase: “go through every file in src and tell me which ones nobody imports” becomes Find Unused Files in Src. The instant version still paints first and is what you keep offline, so the flip never waits and never breaks; the re-word is a bonus that lands on top when it’s ready. Each distinct prompt is paraphrased once and remembered for the session. Only this step passes your prompt text to a model — the instant headline stays entirely on your machine.
  • The ghost rectangle is gone for good — last release taught the frosted glass to re-check itself once a second, which was the right instinct aimed at the wrong target: it compared the glass against the window positions held in memory, and while you drag or resize a window, the position on your screen is briefly ahead of the one in memory. So the check kept “correcting” the glass back to a shape that no longer matched anything you could see, and the ghost came back every second. The glass is now cut from the windows as they are actually painted — it measures the screen, not the bookkeeping — so a frosted patch with no window behind it has nothing left to be born from.
  • A flipped window reads like a headline — turning an agent card around used to show the raw text of your last prompt, which meant a long, chatty instruction shrank to fit and became unreadable from more than a foot away. The back now shows the pithiest faithful phrasing of that same ask — “please can you check the weather in 24 countries and respond with the temperatures in fahrenheit” becomes Check the Weather in 24 Countries in Fahrenheit — set as large as the window allows. It’s a shortening, never a rewrite: only the words that carry no information come off (politeness, lead-ins, “and reply in X”), and the full prompt is one hover away. Nothing is sent anywhere to produce it, so it’s instant and works offline.
  • Frosted “ghost” rectangles can’t linger any more — the frosted glass behind your windows is painted by one shared layer that gets told, continuously, which shapes to reveal. If that instruction ever landed at the wrong moment — mid-drag, mid-resize — the glass could keep an old shape and sit there as a window-sized ghost offset from the window it belonged to, until something else happened to correct it. The layer now re-checks itself against the real window positions about once a second whenever nothing is moving, so a mismatched patch of glass corrects itself within a second instead of staying on screen.
  • There’s an easter egg in here somewhere — if your fingers remember a certain classic cheat code from the 8-bit era, Mastery HQ remembers it too. Type it anywhere outside a text box and see what happens. That’s all you’re getting.
  • Rail mode is now two free windows — the window you’re working in and the rail itself are both ordinary windows on the canvas: drag them, resize them, pan and zoom around them, use the Pane Compass — nothing is locked in place any more. Rail still opens in the familiar split — working window on the left 80%, rail panel on the right — but that’s a starting point, not a cage. Clicking a name in the rail swaps that window into the spot your working window occupies, wherever you’ve put it; opening a new window lands there too; and the rail panel’s × is a quick way to leave rail mode.
  • Rail mode can’t be knocked askew any more — the big window in rail is docked into the container at fixed screen positions, but the canvas camera underneath could still move: a zoom, a fit, or a Pane Compass click would quietly slide the docked window out of its frame and across the borders, leaving the rail looking scattered until you left and re-entered it. The camera is now pinned while rail is on, so the docked window stays exactly in its slot no matter what you click.
  • The rail puts your agents first — in rail mode, the section list on the right now leads with your agent windows, then shows a small Windows divider with everything else — TV, terminals, boards, Help — beneath it. The agents you’re supervising stay in one predictable place at the top instead of being scattered through the list, and the divider only appears when you have both kinds open.
  • Pasted images now recover instead of showing the retry card — a picture on the canvas is normally served straight from its file on disk, and on some Windows setups (a redirected or containerized user profile) that serving path refuses the file even though it’s perfectly readable — yesterday’s “couldn’t load” card was the best the app could do about it. Now, when the normal path refuses, the app reads the file directly and shows your picture anyway; the card is reserved for a file that truly can’t be read.
  • A picture that fails to load now says so — and heals itself — an image placed on the canvas made exactly one attempt to read its file; if that first read was refused (a fresh file still being scanned by your antivirus, for instance) the picture silently showed its caption forever. A failed load now retries twice on its own, and if the file really can’t be read the image becomes a clear “couldn’t load — click to retry” card instead of pretending nothing happened.
  • The Pane Compass no longer shrinks your windows as you pan away — the map used to squeeze everything you own plus your current position into one box, so the further you panned, the smaller every window drew, until they were specks that were hard to find and click. The compass now keeps a fixed scale centered on where you are: windows keep their normal size and shape on the map, and one that leaves the mapped area becomes a glowing arrow on the border pointing at it — click the arrow to jump straight to that window.
  • Every agent type can now be opened by name — “new grok agent” and “new hermes agent” (or “ninja”) open their windows from the command bar and voice, completing the set: every brand in the picker can be summoned by name.
  • A window’s look now follows its model — an OpenRouter window’s name, mark and coloured glow are meant to come from the family of the model it runs: put a window on a Qwen model and it becomes a Qwen window. The inside of the window kept up, but the title bar and the glow didn’t — you could be talking to Qwen under a lime Kimi glow. Switching models now re-brands the whole window, and the change lands in the Audit Log.
  • “New qwen agent” and “new kimi agent” now do what they say — the command bar knew how to open every CLI agent by name, but the two newest brands were missing from its list, so the phrase was handed to one of your existing agents as a task to work on instead. Both phrases — typed or spoken — now open a properly branded window, and the in-app commands list names them.
  • The big window can’t be starved by the Help window any more — Help likes to be 1200 pixels wide, and when it sat in the side column the column took Help at full size and left the window you were actually working in as a narrow strip. A window in the column now claims at most half the screen: Help and the TV still get a generous, watchable size, and the window you’re working in always keeps at least the other half.
  • New windows land where you can see them, and nothing piles up any more — opening a window used to drop it wherever the cascade put it, on top of whatever was already there, and after you’d moved anything by hand the workspace stopped tidying itself at all. Opening, closing or restoring a window now arranges the whole workspace: the window you’re working in fills the left 80% at full height, and every other window lines up in a column beside it, most recently opened at the top. When there are more than fit, the column carries on below the screen instead of squeezing them — pan down or use the Pane Compass. Three things are deliberately left alone: a window you dropped at a spot stays at that spot, images and frames keep their place on the canvas, and a TV or Help window is never squashed into the narrow column — the column widens and the focus gives up the room instead.
  • Bringing a window up counts too — and so does launching — restoring a window from the minimized tray, routing a command to it, asking for one that already exists, or opening the browser used to drop it wherever it last sat — the browser command even re-scattered every other window into a diagonal cascade, overlapping whatever was there; the frosted-glass ghosts some of you saw were windows parked half off-screen by exactly this. All of those paths now promote the window into the big left cell and re-sort the rest. The same arrangement runs when the app starts and when you switch workspaces, so a workspace saved in a mess can never load as one — and leaving rail mode now lands in this same layout instead of putting the old scatter back.
  • Rail fills the window when you resize before switching to it — if you resized or maximized the window while you were in some other layout, switching to rail drew the container at the size the window used to be, leaving a strip of empty wallpaper down the right and along the bottom. It corrected itself the next time you resized anything, which is why it looked intermittent. Rail now measures the window at the moment you enter it.
  • Rail is now one window with everything else listed beside it — it used to stack your other windows in a narrow column, which worked until you had more than a few: with eight open, each one was squeezed shorter than a window is allowed to be, so they sprang back to their minimum height and piled up on top of each other. Rail is now a single container. The window you’re working in fills the left 80% at full height, every open window is a section down the right, and clicking a section makes it the big one. Opening a window adds it to the rail and brings it up, instead of scattering everything you had; closing one just removes its section. Your arrangement is never touched, so leaving rail — the Arrange menu offers Leave rail while you’re in it — puts every window back exactly where it was. The section list shrinks its rows to fit as more windows open and only starts scrolling once they can’t get any shorter and stay readable.

  • Arranging windows works again in workspaces that had drifted — in some workspaces, choosing Grid, Columns, Rows or Hero appeared to do nothing at all, or left frosted rectangles sitting on the wallpaper where no window was. Clicking into a window could quietly slide the whole canvas sideways behind the scenes, and nothing ever put it back, so the arrangement was being placed neatly just off the edge of the screen. The canvas can no longer be moved that way. If a workspace of yours has felt like the layout buttons were broken, this is why.

  • Frosted glass keeps up with a window while you drag it — a window whose Glass frost you’d turned all the way down still picked up a pane of frost while it was moving, and lost it again the moment you let go. The moving-window and resting-window paths worked out which windows should be frosted in two different ways, and only one of them accounted for a frost of zero. They now read the same answer.

  • One agent can now run the others — until now, coordinating a fleet meant you did it, or you described it to Hermes in words. You can now hand one of your own Claude Code agents the controls: Settings → Agents → Supervisor control → Grant control. A supervisor can list the fleet and read any agent’s status, hand out work and collect the results, add or retire agents, watch what an agent is saying as it says it, and stop a run that’s gone wrong. It works across brands and across kinds — a Claude supervisor can task a Codex window or a headless worker just as easily. Nothing listens until you grant it, every call is logged to the Audit Log, and removing an agent or stopping the whole fleet asks you first, with an unanswered card counting as no. Stopping a single runaway is deliberately never gated, because needing permission to do that would defeat the point. See supervisor control.

  • Qwen and Kimi are agent types you can open — both run over OpenRouter with no CLI to install, so they show up in the new-agent menu beside the rest. Qwen starts on Qwen3.7 Max and Kimi on K3, with each family’s other models — the coder and thinking variants, K2.7 Code and the K2 line — grouped at the top of that window’s model picker instead of buried in a list of several hundred. A window follows the model rather than the backend, so switching an OpenRouter window onto a Kimi model re-labels it as a Kimi window, mark and colour included.

  • Agents stop narrating themselves line by line — with Speak agent output aloud on, a long reply used to arrive as a stream of interruptions, one per line, and each of those was a separate charge against your voice key for something you never heard the end of. What an agent is doing is now announced once per kind of activity rather than once per step, what it says is spoken as one piece when its turn ends, and workers running inside a graph, crew or loop stay silent so an orchestrated run doesn’t talk over itself.

  • The light theme is readable again — switching appearance to Light left whole stretches of the interface invisible: Kanban column headers, the agent model dropdown and most Settings labels rendered cream-on-white. Text that had a colour of its own was fine, which is why this looked so selective. Light mode now sets the text colour where it changes the palette, so everything that inherits it follows.

  • Agents can work without a window — how much could run at once used to be decided by how much screen you had. A graph, a crew or a Hermes plan could only hand work to an open agent window, and the graph form capped its workers at three. Judges were already running invisibly, which is what made the limit look arbitrary rather than necessary. You can now add headless workers in Settings → Agents: named agents with no window of their own, dispatched exactly like a window and drawing on the same profile — a headless worker called Scout shares its notes, memory and history with a window called Scout. Two deliberate exceptions: Claude still runs better in a window, because its persistent process beats a cold start every time; and there is no account failover without a window, so an authentication problem fails that step honestly instead of quietly moving to another account.
  • Your accent color now reaches everything it should — only about half of the accent-colored surface ever followed the setting. Borders, hover states, chip text, the scrollbar and text selection were hard-coded orange, so choosing purple gave you purple buttons with orange hover states. All of them are now derived from the accent you pick, and a default install looks exactly as it did before. Accent color also gains a real picker: fourteen named accents — ten of them the colors the wallpaper themes already pair themselves with, so the two lists can’t drift apart — plus Custom with a hue wheel, lightness slider and hex field, each swatch previewing its own shades. It shows a contrast reading for text drawn on the accent and warns rather than blocks, because an accent that never carries text is a perfectly good choice. An accent you pick deliberately is now pinned, so changing wallpaper later won’t quietly revert it.
  • Frosted rectangles no longer get left behind on the wallpaper — dragging a window could leave a pane-shaped patch of frosted glass sitting where no window is, and it stayed there until something else happened to refresh it. The frost is one shared layer with window-shaped holes cut into it; when a window moved during a moment that layer had been told to hold still, the update was thrown away instead of being applied once it could be. It’s now held and then applied, so the glass always ends up where the windows actually are. Arranging or minimizing windows always looked fine, which is exactly why this seemed to come and go at random — those actions happened to refresh the layer anyway.
  • The Whiteboard opens big, and the Usage window opens readable — a drawing surface is only useful large, so the whiteboard now opens filling the working area, clear of the top bar, left rail and command bar. Usage opens half again as large, so the figure and its sparkline can be read without resizing it every single time. And the note explaining that an agent window works on its own project folder now shows its first line with the explanation behind a folder icon, instead of spending four lines at the top of every conversation repeating something you read once.
  • A license code now says which product it unlocks — Mastery HQ and Mastery Lite are issued from the same signing key, which meant a Lite subscription key would have activated Mastery HQ. Codes now name their product, and Mastery HQ refuses anything that isn’t one of its own with a message saying so rather than a generic failure. Every code issued before this change is a Mastery HQ license and keeps working exactly as it did.
  • The Prompt Library now ships 117 prompts instead of 17 — a 100-prompt pack covering engineering, AI system design, research and analysis, and automation, in two new groups alongside the existing ones. They behave like any other prompt: edit, rename or delete them. If you already had a library, the new ones are added the next time you open it, and anything you had previously deleted stays deleted.
  • The wrench menu no longer runs off the bottom of the window — with enough tools in it, its last few entries sat below the edge of the app, unclickable and unscrollable. It now shifts up so the whole menu is on screen, even when that puts it above the wrench itself.
  • The Prompt Library has a command — press Ctrl+K or type “prompt library” in the command bar. It was only reachable from the wrench menu, which is exactly where the bug above was hiding it.
  • Feedback you send is tagged with the edition it came from — Mastery HQ and Mastery Lite feed the same public roadmap, so an idea now carries which one it was sent from. It makes the roadmap honest about where a request came from, and it means a report from the free edition is not silently read as the same signal as one from a paying user.
  • Tell the judge what “good” looks like — a loop’s quality bar was a number, and a number is a weak target. Ask a model to score the same work twice and it moves a point or two, so a high bar either drifts upward until it means nothing, or never converges and spends the whole budget on noise. Loops and graphs now take an optional What good looks like: paste a piece of writing, a code sample, a spec, and every reviewer compares against that instead of guessing. The question stops being “how good is this out of ten?” and becomes “what is still different from this?”, which is a far steadier thing to ask. Leave it empty and nothing changes.
  • Loops stop for a reason instead of running out of budget — a loop that had stopped improving used to keep paying for passes until it hit its cap. Now a pass that comes back with no real change switches to a different reviewer rather than asking the same question a third time, and if the pass after that is also unchanged the loop stops and tells you that’s why. A goal that stalls as one piece is usually one that should have been several, so it offers to split itself into a graph, carrying your goal and your reference across.
  • Work that is wrong no longer passes because it scored well — a reviewer will happily give nine out of ten to something containing a real bug or a factual error, because the flaw is small next to everything that’s right. A reviewer can now mark a defect disqualifying, and that stops the loop finishing no matter how high the score was.
  • A pass that clears the bar gets a second opinion before it ships — one reviewer per round while a loop iterates, and then, at the moment a pass claims to be done, a second independent reviewer looks at it from a different angle. Most rounds are obvious rejections where a second opinion changes nothing, so paying for one only when it can change the outcome is what makes a high bar affordable rather than aspirational.
  • Critiques name the one thing that matters most — reviewers used to hand back a list of improvements, and an agent given five suggestions spreads its next attempt thinly across all of them. They now name the single biggest gap and why it matters, so the next pass fixes the thing that actually decides the outcome.
  • OpenCode works with the Gemini key you already pasted — OpenCode’s default model is a Google one, and it reads that key under a different name from the one the rest of Mastery HQ uses. A perfectly good key still produced a bare “API key is missing” that looked like a crash. The key is now forwarded under both names, and if you have no key at all the window names the one it wants and where to put it.
  • Hermes answers the first time you ask it something — on a new install, the Hermes pane replied to your very first question with “no link is connected — connect one in Settings”, which is an error about a server you’d never heard of, for a pane that doesn’t need one. It now works out what to think with: a Hermes link if you’ve set one up, otherwise your Grok key. If neither exists it tells you what your options are instead of failing. Claude is never picked automatically — an Anthropic key sitting in your settings for something else is not permission to spend it here, so you have to choose it.
  • Set up phone control on this computer in one click — driving your desktop from WhatsApp or Telegram used to mean renting a server, copying files onto it over SSH, and editing a service file in a terminal editor. Settings → Agents → Hermes → Relay setup now has Set up on this computer: it installs what it needs using the app’s own copy of Node, so there is nothing to install first, and runs it locally where only this machine can reach it. It stops when Mastery HQ stops. A server is still the better choice if you want to reach your desktop while it’s asleep, and that route is now a single block you paste in once rather than seven steps.
  • The relay instructions used to be impossible to follow — they told you to copy two files that were never included in the app, and then to run the wrong one of them. Following them exactly produced a connection that went green and then silently ignored every command, which looks like success and is the worst way for something to fail. The files now ship with the app, the instructions name the right one, and there’s a line you can run to see for yourself that it’s working.
  • Agents remember the conversation when they change accounts — when an agent hit its usage limit and switched to another account, the new session started with no memory of what you’d been doing, so it re-derived context that was still on screen in front of you. It now carries the recent exchanges across. It copies them word for word rather than summarising, because summarising would need the account that just ran out.
  • Hand a conversation to another agent — a Hand off button on each agent window copies its recent exchanges into another agent’s input. It fills in their box rather than sending, so you can add the one sentence that makes it useful before pressing Enter. The original agent keeps its conversation — it’s a copy, not a move.
  • AI Radar can’t be pointed at your own network — the radar reads fifteen outside sources, and each story’s link is whatever that source put there. A link that named an address inside your own machine or home network would have been treated like any other. Those are now refused before anything is fetched.
  • AI Radar reads the labs, not the front page — it used to run three keyword searches against Hacker News and keep the two highest-voted hits, so it surfaced whatever the community happened to upvote that day and showed “no recent items” for actual company news. It now reads fifteen sources directly: the labs’ own blogs and newsrooms (OpenAI, Google DeepMind, Anthropic, Meta, Hugging Face, NVIDIA, Mistral, DeepSeek), the AI press (TechCrunch, VentureBeat, Ars Technica, The Verge, MIT Technology Review), and Hacker News as one signal among them rather than the whole radar. Stories sort into model releases, company moves, key people, and research — ten to a group with the rest one click away — and a lab announcing its own model now outranks an article about that announcement. If a source is down you lose that slice and nothing else; the header tells you how many of the fifteen answered.
  • A home for the prompts that work — the prompt you spent twenty minutes getting right used to live in your scrollback until it scrolled away. There’s now a Prompt Library in the wrench menu: prompts grouped by the kind of job they’re for — coding, debugging, review, testing, planning, research, writing, data, DevOps — each with worked examples to start from. Save your own, search all of them, and send any one to an open agent. Sending drops the prompt into that agent’s input rather than running it, because the useful step is nearly always “this, but for my situation” — fill in the bracketed parts, then press Enter.
  • The top bar gets out of your way — leave the pointer off it for eight seconds and it folds down to the workspace menu, Arrange, Minimize all and Settings, tucking Help, Workspace Style and the mode switch behind a . Move back over it, or tab into it, and it opens again. It folds and unfolds smoothly rather than snapping between two sizes, and an open menu pins it open so it can never disappear mid-click. Turn it off with Collapse top bar when idle in Settings → Style.
  • A new Rail arrangement — Arrange windows gains Rail: the window you’re working in takes the left, and everything else stacks in a single column down the right where you can see it without it competing for space.
  • Device Preview moved to the wrench — it sat in the top bar beside the workspace controls, which made it look like part of the app frame. It’s a tool, so it now lives with the other tools in the wrench menu on the left toolbar.
  • Back to the splash screen without restarting — the splash is where you switch workspace and where licences are issued and reviewed, and the only way back to it was to quit and relaunch. Say or type open the splash screen and it comes forward over your workspace; your windows stay exactly as they were and anything already running keeps running.
  • Agents say when the account is out of quota — a run that stopped because the account had hit its usage limit looked identical to any other failure, so the natural assumption was that something had broken. It now says so plainly and tells you what to do about it.
  • The browser waits instead of giving up — some sites answer “too many requests” when you open several pages in quick succession, and the browser pane treated that as a dead end. It now waits the moment the site asks for and tries once more, so the page simply loads a beat later. If it still won’t load, the message names the site and says what happened in plain words.
  • A new licence no longer starts a day short — a fresh 14-day licence read “13 days left” from the moment it was issued, because the time remaining was being rounded down. It now counts the day you’re in.
  • The WebKit preview really does render now — last release said this was fixed and it wasn’t: the Safari-engine tab still sat on “Waiting for the first frame…” for good. It turns out the tab had never once shown a picture since the day it arrived. The preview engine was drawing frames perfectly and handing them over, and the app was discarding every one of them unread — so the half that looked healthy really was healthy, which is exactly why it took so long to find. The tab now shows your page. And if frames ever do stop arriving, it tells you what went wrong instead of waiting in silence forever.
  • The preview’s helper only answers Mastery HQ — the small local program behind the Safari-engine tab can point a browser at any page and type into it. It used to take instructions from anything on your machine that asked — including a web page open in another browser, which could have quietly driven it without you knowing. It now ignores everyone except Mastery HQ.
  • Windows stop leaving a ghost behind — if another app stole focus while you were dragging a window, that window froze in place while everything else moved on, leaving a frosted rectangle with no title bar that you couldn’t click, couldn’t close, and that survived even a re-arrange. Only restarting cleared it. A cancelled drag now simply lets go and the window snaps back to where it actually is.
  • Agents hand back the answer, not the terminal — when an agent finished a task for the Sprint Board, a Graph run or a loop, what got passed on (and scored, and saved) was its raw CLI output: the startup banner, the working folder, the session id, your prompt echoed back, token counts, and the reply printed twice. Every one of those places now receives what the agent actually said — the same clean text the window shows you.
  • “License Expired” now says so — a licence that ran out dropped you at a blank activation box with no explanation, which understandably read as the app having forgotten a licence you still had. It now says License Expired in red, names which licence lapsed and when. A brand-new install still just sees the activation box.
  • Temporary licences say how long is left — a trial looked exactly like a lifetime licence. The splash screen now shows “Temporary · 12 days left” next to the name, with the exact date on hover. Lifetime licences stay unlabelled.
  • Windows can’t silently disappear any more — in a long session the workspace could end up showing no windows at all: the minimap still listed them and their frosted outlines were still drawn, but nothing was actually on screen, opening a new window didn’t help, and only restarting brought them back. The workspace now notices that state and rebuilds the window layer on its own, so your windows come back instead of the session becoming unusable.
  • A licence report for admins — Settings → License gains a Report: how many licences exist, how many people and machines they cover, revenue, and a row per licence (who, term, created, expires, cost, activated, machines, status) over the last 7 / 14 / 30 days, 12 months, year-to-date, all time, or a date range you pick, plus a one-click CSV copy. It covers both licences sold through the store and ones you issued yourself — and licences issued from the splash screen are now recorded, which previously left no trace at all.
  • The WebKit preview actually renders — the Safari-engine tab could get stuck on “Waiting for the first frame…” forever: a frame grab issued while the preview was being resized never finished, and blocked every frame after it. It now recovers on its own. Its real speed is also measured now, and honestly documented: about 3 frames per second, not the 10–15 previously estimated.
  • Help articles have their titles back — in the installed app, every page in the Help sidebar showed its raw file name (setup-wizard) instead of its real title (“The setup wizard”), and each article opened with a blank heading. The readable sidebar shipped in v0.1.130 only ever looked right in development; the published copies of the articles use Windows line endings, which the page reader mishandled. It now reads both, so the titles survive the trip into the installer.
  • The rest of your wallpapers show their scene too — v0.1.130 gave every theme card a real still frame, but only the wallpapers that ship with the app actually got one; themes you imported yourself stayed flat gradients. Imported themes now show their scene as well.
  • Windows re-arrange themselves when you close one — closing a window used to leave a hole, with everything else stranded in the cells of a grid that no longer existed. Now the survivors re-flow so they’re all in view: three windows minus one becomes a clean 50/50 pair, and the last one standing fills the space. Windows that need room keep it — close a neighbour with the TV open and the TV holds half the screen at full height rather than being squeezed into a quarter.
  • Every wallpaper shows you what it actually looks like — the theme cards in Workspace Style were flat colour gradients that only came alive if you hovered them one at a time. Each card now shows a real still frame from its scene, all of them, all the time.
  • Pick a font by looking at it — the font list in Settings → Style now renders each name in that font, so you can see Georgia, Verdana or Cascadia before you commit to it.
  • Help is readable — the sidebar showed raw file names like setup-wizard wrapped over three lines. It now shows real titles (“The setup wizard”), one per line, in a window sized so the article beside it is comfortable to read.
  • Dropdowns stop going dark-on-dark — native dropdown lists are now driven by one themed rule, so they’re legible in both the dark and light appearance instead of whichever the last fix happened to hardcode.
  • MCP servers actually start — adding a server from the MCP Manager failed with “npx: program not found” even with Node installed, because Windows shims need launching the way the agent CLIs are already launched. Seven of the ten built-in servers use npx, so this unblocks most of the catalogue — and with it, tool use from local models.
  • Your files actually preview — opening a screenshot on the canvas showed a broken image, and the Files window’s own image thumbnails were broken too. Local files are handed to the app through a protocol its own security policy never allowed, so every one of them was blocked. Images, video, audio and web pages now render.
  • Click anything in the Files window to open it — only a small icon at the end of the row used to work, so clicking an HTML project’s name did nothing. The whole row opens now. Documents preview too: Markdown, text, JSON and CSV open in the Writer, and PDFs open in the browser.
  • More agents to choose from in Crew and Council — with five CLIs installed, only Claude and Codex were offered as crew roles. Grok and OpenCode now appear as well.
  • Test iOS from Windows — two new ways, no Mac — Device Preview gains a WebKit tab and a My device tab.
    • WebKit renders in Safari’s actual engine, so real WebKit differences show up that Chromium hides — and you can click and scroll it. It’s an optional ~300 MB add-on (never part of the app install) that you can remove again from Settings → Setup. Being straight about it: this is desktop WebKit, not iOS Safari, so iOS-specific scrolling and viewport quirks still won’t appear, and it runs around 3 fps (measured, 1206×2622 px) — fine for layout, not for judging animation.
    • My device is the real thing. Install Expo Go (free), click Pair my device, scan the QR — and your app runs on your actual iPhone or iPad. The same QR works for an Android phone or tablet, so both platforms get real hardware. If nothing connects, the pane names Windows Firewall (the usual cause) and offers one-click tunnel mode for other networks.
    • Worth saying plainly: a native iOS simulator on Windows isn’t possible from any tool — Apple ships Xcode for macOS only, and there’s no Linux or WSL route around it. My device is the way to get true iOS.
  • Device Preview tells you which engine you’re really seeing — the old iPhone and Samsung tabs were the same Chromium frame in different bezels, which quietly implied the iPhone one showed Safari. It doesn’t. The tabs now name the engineChromium or Android emulator — and device size moved to its own dropdown (iPhone 16 Pro, iPad Pro 11“, Galaxy S24 Ultra, Pixel 8). Chromium is genuinely Android’s engine, so Android sizes reflect real Android rendering; an Apple size is a layout check, and the pane now says so instead of letting the bezel imply otherwise. Your open previews carry over untouched.
  • Device Preview opens the right shape — the phone frame used to open in a wide window that stranded it in empty space. It now opens at half the screen’s width and full height, focused. Resize it however you like afterwards.
  • New “Hero” arrangement — a fifth way to arrange your windows, in the Arrange menu next to Grid, Columns, Rows and Focus. Hero puts the window you’re working in across the full width of the screen at half height, then pairs the rest beneath it — two per row, each half the width. For when one window is the main event but you still want the others readable.
  • Web pages fill the whole window — the Browser window’s page now runs right to the left, right and bottom edges instead of sitting inset, so a site gets every pixel of the window.
  • Workspace Style moved into the top bar — it now sits in the main top-bar cluster just before the Vibe Code / Streaming switch, instead of floating as its own button off to the right.
  • Zoom controls nudged clear of the toolbar — the zoom pill no longer sits tucked directly under the left toolbar in the corner.
  • Paste a file path into the browser and it opens — typing or pasting a local file path (or a file:// link) into the Browser window’s address bar used to run a web search instead of opening the file. It now opens the page from disk, the same way an agent’s Open chip does.
  • ChatGPT Image 2 is the default for generated images — the Brand image model now defaults to OpenAI’s ChatGPT Image 2 (GPT-5.4). Ask for “an image of …”, or let an agent emit one, and it’s rendered with Image 2. You can switch back to the faster, cheaper Nano Banana (Gemini) models any time in Settings → Brand. (Image and video generation run through OpenRouter, so they need a balance on your OpenRouter account.)
  • Agent-built projects open themselves in the browser — when an agent finishes building a web project — a game, an app, a page — Mastery HQ now opens it in the built-in browser automatically, so it’s in front of you without clicking its Open chip.
  • Agent-built projects open and run in the built-in browser — when an agent builds a web project — a game, an app, a page with its own scripts, images, and sound — clicking its Open chip now loads the whole thing in the Mastery HQ browser like a real site. Multi-file projects, and anything that loads its pieces as it runs, work instead of showing a blank page. Local dev servers and a coding agent’s own preview link open the same reliable way.
  • The installer looks like Mastery HQ — the Windows setup now carries the Mastery HQ icon and branded wizard art (header and sidebar) instead of the generic installer box, from the file in your downloads through every step of the install.
  • Focus fills half your screen — Focus now gives the active window the entire left half of the screen at full height and tiles the other windows down the right side, so the window you’re working in is as large as it can be while everything else stays one click away.
  • New windows tile instead of stacking — opening a window now drops it into the first open spot rather than landing on top of the windows you already have. Your existing layout stays put, and the new window becomes the focus.
  • TV opens big enough to pick a channel — the TV window now opens at a size that shows its channel row, so you can browse and switch channels the moment it appears instead of resizing it first.
  • Cleaner window borders — windows that aren’t agents no longer pick up a stray colored edge; they use a neutral border. Agent brand glows and the accent colors you set yourself are unchanged.
  • Codex can create files on Windows — Codex’s workspace-write sandbox launches a restricted helper process (through CreateProcessWithLogonW) that Windows blocks inside Mastery HQ’s protected app container, so every file it tried to write failed with a cryptic error. Codex now runs the same full-auto way every other agent already does — writing directly into its own project folder — so “build me a one-page calculator” produces the file instead of an error.
  • Every agent’s file permissions, re-checked — a sweep of each CLI’s auto-approve flag against the tool’s own current options fixed subtler gaps in OpenCode, Aider, and GitHub Copilot windows (an out-of-date flag, or one that stopped short of file writes). Claude, Gemini, and Grok were already right and are unchanged.
  • “Own project” now leaves an assigned repo — clicking the own project chip on a window that had a GitHub repo assigned used to keep running in the repo’s worktree; it now unassigns the repo and works in the window’s own project folder, and tells you so. Re-assigning is one click away.
  • Find everything an agent made — the Files window — the Assets window is now Files, with a new Sites tab that lists the web pages, landing pages, and single-file apps your agents generate (not just media). Drag any item onto the canvas to preview it, open it in place, or reveal it on disk — and everything opens inside Mastery HQ.
  • Web pages open in the built-in browser, never Chrome — a landing page, single-file app, or site an agent builds now opens in a Mastery HQ browser pane, rendered straight from the file, whether you click its Open chip in the reply or open it from the Files window. Your system browser is never launched for your own local pages.
  • Frost that keeps up with your windows — window frost now tracks each window’s real position as it glides off- and on-screen with Ctrl+←/→ (it used to appear at the destination before the window arrived), and the blurred wallpaper behind transparent windows is frame-synced to the sharp one so the two no longer drift against each other. Arranging every window at once (Grid / Columns / Rows / Focus) stays clean.
  • Codex can write files again — Codex’s latest Windows release locates its sandbox helper through the PATH, and a helper that couldn’t be found made every shell command and file write fail with “orchestrator_helper_launch_failed … program not found”. Agent windows now hand every CLI a PATH that always carries its own install and helper directories, so Codex’s sandbox starts reliably no matter how or when it was installed.
  • Windows can’t rest off-screen anymore — if a workspace was left panned so its left-side windows spilled past the edge of the screen, it reopened that way forever. On launch and on every workspace switch, the view now brings your windows fully into the viewable area — the camera moves, your layout never does, and anything you pan mid-session stays exactly where you put it.
  • Select all windows, then sweep them away — press Ctrl+A on the canvas and every open window gets an accent ring; press Delete (or Backspace) to close them all at once, exactly like selecting files in Windows. Esc or clicking anywhere clears the selection, locked windows are skipped, and the sweep is logged in the Audit Log.
  • Aider installs in one click — Settings → Agents now shows an Install button for Aider too. The app fetches a private Python toolchain via uv the same way npm agents get a private Node: no admin rights, no system Python, nothing on your machine touched — everything lives in the app’s own folder. (Cursor’s CLI still has no native Windows build — it ships for Linux/macOS only — so its row links the docs and notes the WSL route honestly instead of faking a button.)
  • Graphs, level 2 — four upgrades to the multi-agent pipeline. Multiple judges: pick up to three lenses; they score in parallel and the weakest score gates, with every critique attributed so one fix round answers all of them. Approval gate: tick “Pause for my approval after the main build” and the run parks with the deliverable on screen — approve to continue, or send it back with a note that routes exactly like a judge critique (waiting never burns the time budget). Planner-added stages: allow the planner up to N extra stages (your cap, disclosed on the estimate card) when the goal genuinely needs one — the engine sanitizes and wires every addition. And a graph: verb — type or say graph: build a landing page… and Graph mode opens with the objective prefilled; the estimate and ack gate still stand before anything runs.
  • Focus that actually focuses — spotlight any window and it always lands fully in view: click it and press the new Ctrl+F shortcut, pick Focus from the Arrange menu, or say focus Alex. The window centers at half the screen in both dimensions and every other window grids up in quarter-screen cells beside it (columns extend past the view when there are many — the Pane Compass shows the way). Nothing gets minimized anymore, and a window that had drifted way off-canvas comes straight back. unfocus lifts the dim. The shortcut is rebindable in Settings → Shortcuts.

  • Smoother glass, same look — window frost is now painted from one shared blurred copy of your wallpaper instead of each window blurring the scene behind it live. Visually identical glass, but a video wallpaper is now blurred once at a gentle rate instead of per-window per-frame — a real GPU saving with many windows open — and the whole class of per-window blur glitches some PCs showed is simply gone. Per-window Glass frost overrides and TV-as-background keep the classic path.

  • Wallpaper can’t wedge to black anymore — leaving Mastery HQ covered by another app could freeze a video wallpaper at the end of its loop with the screen going black until something forced a repaint. The loop engine now keeps itself alive while the window is covered, so the scene is always playing when you come back.

  • Project files: organized and labeled, by routine — everything an agent produces now lands inside its project folder, tidily. Every CLI agent carries a standing file routine — deliverables in labeled type subfolders (docs/, images/, video/, audio/, src/, data/) with descriptive, dated, kebab-case names, never output.csv — and media requested with [[image: …]] / [[video: …]] / [[reel: …]] / [[bumper: …]] is filed into that window’s projects/<name>/images/ or video/ with a labeled, dated filename (e.g. image-hero-banner-2026-07-21.png). The Assets gallery now lists project folders too, so every deliverable stays one click away.

  • Every project gets its own folder — an agent window without an assigned repo now works inside its project’s own folder (projects/<name>/ in the workspace) instead of the shared Mastery HQ folder, so two projects can never mix files in one place. The scope banner and 📁 chip tell you exactly where files land, and setting a project name whose folder already has content asks first: join the existing project, or pick a new name? — repeat the command to join, or choose a fresh name for a fresh folder.
  • A Qwen voice — Settings → Voice gains a fourth speaking engine: Qwen (Alibaba) on qwen3-tts-flash — eight multilingual voices (Cherry, Ethan, Jennifer, Ryan, Katerina, Elias, Dylan, Sunny) across 16 languages, ~$0.013/1K characters with roughly a million free characters on new DashScope accounts. Same privacy shape as the Grok voice (synthesized on the Rust side — your key never enters the page) and the same fail-soft: if the cloud voice can’t run, the system voice speaks instead, with the real reason toasted.
  • Graphs: pipelines of agents, with a budget you can see — the Loop window grows Graph and Super tabs. Graph runs your objective through a pipeline of specialized stages (plan → research ∥ build → integrate → test ∥ review → document) across 1–3 of your agent windows in parallel, judges the integrated result, and re-runs only the stages the critique implicates — never the whole pipeline. Super adds bounded self-refinement inside each worker stage (loops inside a graph) for the highest quality. Before anything runs you see an estimate card — expected stage runs, tokens, a low→high cost band, and an ETA — and bigger runs require an explicit acknowledgement, so nothing big builds without you understanding its quality, cost, and time. Anti-runaway guards are always on: stage timeouts, round/time/cost budgets, and a plateau detector; a capped or stopped run still returns the best result it produced.
  • Agents keep their projects separate — every agent window now works in a visible project scope: isolated by default (its notes, memory, and recall cover only itself), and announced in the transcript before its first task, so two windows on two different jobs can never blend into each other. Want two windows collaborating on one project? Link them by giving both the same project name — the new 📁 chip above the input bar, or type project <name> (project off isolates again, bare project shows the scope). A window reused across jobs switches its notes with the project, recall all still searches everything on purpose, and orchestrated work (Kanban crew, Hermes) keeps sharing deliberately — with a routed task now respecting a window’s own project.
  • File links agents hand you open reliably — an Open link in an agent’s reply that pointed at an absolute Windows path (including the angle-bracketed </C:/…> form some agents emit) used to fail with “The system cannot find the path specified.” The link target is now normalized properly, so the page or file opens on the first click.
  • The Pane Compass stays in its corner — the pane map (the bottom-right minimap) is now pinned to the window itself, so it always sits in the bottom-right corner instead of drifting toward the middle of the screen on some setups.
  • Local models can use MCP tools — a local / custom model window gets a 🛠 Tools toggle. Turn it on and the model calls the MCP servers you set up in the MCP Manager in a tool-call loop — filesystem, web fetch, a database, GitHub — with each call shown as a step above the reply. It reuses the servers you already configured (nothing to set up per window) and works with any local model that supports tool calling.
  • Data Lab — open a dataset and actually see it — a new Data Lab pane (Tools → Data Lab, “open the data pane”, or the Data Lab recipe) turns a CSV, TSV, or JSON file into an honest read: per-column profiles (type, filled / null / unique counts, and min / max / mean for numbers) and a typed 50-row preview. Report seeds a Writer document with the dataset’s shape and a column table; Analyze hands the data to an Analyst agent to compute, chart, and summarize in its own sandbox. It’s a viewer, not a code runtime — nothing executes in the app.
  • Marketing Studio — SEO, campaign links, and publishing in one pane — a new Marketing Studio (“open the marketing pane”, or its recipe) with three tabs. SEO Auditor scores any page 0–100 against title, meta, one-H1 / headings, alt text, canonical, Open Graph, JSON-LD, and /llms.txt (fetch a URL on desktop, or paste HTML anywhere). UTM Builder assembles tagged campaign links, previews them live, and exports the batch as CSV. Publish drafts a post, enforces each platform’s character limit (X, LinkedIn, Instagram, Facebook, Mastodon), optionally schedules it, and hands it to a Publisher agent that posts through the platform’s official MCP tool and confirms the exact text with you first — connect the platform in the MCP Manager beforehand. Nothing ever posts automatically or through an unofficial API.
  • Video Studio — storyboard before you render — a new Video Studio pane (“storyboard a video about the launch”, or its recipe) drafts an editable, scene-by-scene shot list — hook, problem, how it works, why it matters, call to action — each scene with a caption, a duration, and a shot prompt. Reorder, edit, or add scenes; the runtime total updates as you go. To Writer exports the shot list; To Director hands the board to an agent to expand shots, voiceover, and stitch order. Planning is free and local — rendering stays a separate, confirm-gated step.
  • Clips editor — fast single-step video edits — a new Clips pane (“open the clips editor”) runs quick ffmpeg operations on any video in your workspace: Trim a range (stream-copy, no re-encode), Reframe with a centered crop to 9:16 / 1:1 / 16:9, Caption a burned-in line, or Convert to mp4 / webm. Every operation saves a new file — your original is never touched. (Desktop only; needs ffmpeg on your PATH, and the pane shows the install command if it’s missing.)
  • Recurring reports — define once, run with a click — a new Reports pane (“open the reports pane”) holds the reports you keep re-making: give each a name, a cadence (daily / weekly / monthly), and a brief of what to cover. Run hands it to a Reporter agent that pulls the numbers, analyzes them with the Data Lab, and writes them up in the Writer — and can email or save the result to Docs, always confirming before anything leaves your machine. Each report shows when it’s next due; automatic background firing is the planned next step.
  • Research Desk — clip as you read, brief as you go — select any text in the Browser pane and the new notebook button appends the quote (with the page link and today’s date) to your workspace’s research/sources.md. Pair it with “research the new pricing model”, which opens a Research Desk — a browser, a seeded brief in the Writer, and a Scout agent — to turn your clippings into a written brief.
  • Annotate an image on the whiteboard — say “annotate this image” (or “mark up the screenshot”) and the newest image on your canvas opens as the whiteboard’s base layer, so you can draw arrows, circle problems, and drop text notes right on top of it. The marked-up board saves with the pane like any other.
  • Loop against a rubric — grade each loop pass with a purpose-built rubric instead of a generic judge: “loop: polish the landing copy using the readability rubric.” Built-in rubrics cover SEO, readability, brand fit, and code / tests pass, each with a default quality bar baked in, and the judge tags every fix to the checklist item it serves.
  • Route work to the right model — tell Mastery HQ which model handles a kind of work — “route code to claude sonnet”, “route analysis to gpt-5.1” — then ask “what model for analyzing the sales csv” to see which one a task would use. A lightweight way to standardize which model does what.
  • Write in Mastery HQ — a new Writer (Tools → Writer, or “new document”) is a markdown document surface with a live preview, a clickable heading outline, and word / read-time stats. Ask an agent to Draft into the document from a prompt, jump around with the outline, and Open / Export / Copy — a home for articles, briefs, and posts right on the canvas.
  • Start a workspace from a recipeTools → Recipes (or “starter recipes”) opens six ready-made domain workspaces — Blog Studio, Research Desk, App Factory, Marketing Studio, Data Lab, Video Studio — each prewiring the panes that domain needs and seeding the Writer with its conventions and first commands. One click from an idea to a set-up canvas.
  • The Assets gallery lists more than screenshots — new Images, Video, Audio, and Docs tabs surface the media and documents that land in your workspace (brand videos, generated songs, exports). Preview them, open a video or track in the player, copy a file’s path, or reveal it in its folder.
  • Add MCP tools to your agents — a new MCP Manager (Tools → MCP, or say “open the MCP Manager”) connects Model Context Protocol servers — a filesystem, Git, GitHub, web search, a database, a browser, and more — to your coding agents. Pick one from the built-in list (or paste your own), choose which agents get it — Claude Code, Codex, Gemini, Cursor, OpenCode, or Copilot — and Mastery HQ writes each one’s native config so the tools show up inside the real CLI. Any key you enter is saved to your .env, not the config file, and a Test button spawns the server to show how many tools it exposes (or the exact error). npm-based servers run on the bundled Node runtime — nothing to install.
  • Run local and custom models as agents — a new Local model window runs anything that speaks the OpenAI-compatible API. Ollama, LM Studio and Jan are detected automatically the moment they’re running — no key, no setup — and their models open in one click from the agent picker, or just say “open a local model.” Point at any other endpoint too — Msty, Together, Groq, or a company gateway — by adding its URL (and an optional key) in the first-run wizard or Settings → Agents. Everything you add also joins the Model Council and the Benchmark as a contestant, and local servers are free to run.
  • Flat glass clears the last phantom band — turning on Settings → Style → Flat glass now flattens window backdrops all the way down, including the inner surfaces, so the faint glass seam a few setups still showed along a window edge is completely gone.
  • Gemini agents just work — a Gemini CLI agent no longer stops with a “not running in a trusted directory” error the first time you give it a task. Mastery HQ now tells the Gemini CLI it can trust your workspace — the same thing you’d otherwise confirm by hand in a terminal — so once your Gemini key is set, a Gemini window runs your commands straight away.
  • Dictation that cleans itself up — everything you dictate now passes through a cleanup layer before it lands: fillers and stutters (um, uh, “the the”) are stripped, agent and app names come out spelled right (alex → Alex, “cloud code” → Claude Code), and an optional AI refine toggle has your local agent remove false starts from long dictations (“at 2… actually 3” keeps only the 3). Shorter prompts, fewer tokens, same ask. Dictation also now types into whichever text box has focus — an agent prompt, a note, a card — with the command bar as the default, and the mic button no longer steals your field’s focus.
  • A living startup screen — the ninja on the startup screen is now a cinematic clip: a moonlit bamboo forest, cropped to portrait and looping seamlessly. Same layout, same fast load (the clip is lighter than the old still image).
  • A tidy crew bar: type your roles, pin exact models — the Sprint Board’s crew controls are reorganized into two clean rows (mode, pass bar, attempts, and actions up top; the three roles beneath) — no jumbled wrapping, no sideways scrolling. Each role is now typeable: enter an open agent window’s name (Alex), a CLI (Claude Code), or any model, with suggestions as you type — typing an agent as Specialist makes that window the board’s worker, and its own model comes along as the pin. Every CLI role also gets a dropdown to pin the exact model it runs with (Claude Code as Judge on, say, Fable 5) — the pin rides the run itself, and a matching worker window’s model picker updates to show it.
  • Agents remember across restarts — every agent window saves its conversation to disk after each exchange, and a blank window (say, after closing Mastery HQ for the day) now offers ↺ Recall last session with how old it is and how many lines. One click brings the conversation back — and on Claude Code and Codex the session link resumes too, so the agent genuinely picks up where you left off, context and all.
  • Your HQ, your typeSettings → Style → Typography: pick a font size (Small / Regular / Large / Extra large) that scales every window and tool together, and choose the interface font from twenty-three faces — the monospace natives plus ten sans-serif and ten serif choices, each with safe fallbacks and a live preview. Terminals and the code editor stay monospace on purpose. Both choices persist and apply everywhere.
  • A tidier tray, safer files, quieter git — a crowded minimized-windows tray now groups by window type (“Agents · 3”, “Whiteboards · 2”); files are only readable/writable by the app after you actually pick or drop them (a hardening you shouldn’t notice); and git operations no longer show any credential material in the process list.
  • Make your own music — the Music pane’s new Studio tab generates complete songs: say “make a song about shipping week” or “make an instrumental about deep focus”, confirm the card, and a finished track plays in the pane (saved to your workspace as an mp3). “Write lyrics about …” has your local agent write structured [Verse]/[Chorus] lyrics for free — edit them and the Studio sings exactly your words. Songs generate with your ElevenLabs account (ELEVENLABS_API_KEY in Settings → Agents).
  • Hands-on tutorials with real screenshots — a new Tutorials section walks through the ten flagship features (agents, command bar, canvas, kanban, loops, brand media, council/benchmark, command center, GitHub, music/TV) with real captures from the app — on the web and in the in-app Help, which now renders images.
  • Run your mobile app natively — no Android Studio — say “preview my app on android” and Mastery HQ runs your Expo app in a real Android emulator it manages itself, streamed live into the Device Preview pane: click to tap, drag to swipe, type to type. First run downloads the emulator from Google (~2.2 GB, one consent card); after that it’s one sentence to a native preview. The instant web tier (“preview my app on a phone”) is unchanged.
  • Sweep windows off any edgeCtrl/Cmd + ←/→/↑/↓ now glides every window off that edge of the screen (it was right-only). The opposite arrow brings everything back exactly where it was; pressing the same arrow again re-clears anything that strayed back in, and windows land far enough out that no edges or shadows peek in anymore.
  • Preview your mobile app in the phone frame — say “preview my app on a phone” (command bar or voice) and Mastery HQ finds the Expo/React Native app in your project, starts its web dev server, and loads it into the Device Preview’s iPhone/Galaxy frame — hot-reloading as your agent keeps editing. “Stop the app preview” shuts it down. (Native expo run:android builds still need Android Studio and run outside the frame — the Device Preview explains this now too.)
  • Screenshots grew up — click a capture in Assets and it opens on the canvas as its own window (drag, resize, zoom, or drop it straight onto an agent). Each capture also gets Copy (a real clipboard image — paste it into an agent window, the canvas, or any app), a working Download, and Send to agent. Captures are saved as PNG files in your workspace’s screenshots folder now, not just inside the app.
  • The Feedback screenshot button shows your captures first — pick one with a click, or Browse files… which opens in your Pictures\Screenshots folder instead of a random empty location.
  • Attach any file to an agent — agent windows take documents now (PDF, markdown, code, anything), via the attach button or drag-and-drop; the agent reads the file from its path. Images and videos work as before.
  • Google Docs links open right — a doc link clicked in an agent’s reply (or typed in the Browser pane) opens in your real browser signed into the account that owns it, instead of the in-app pane showing “you need permission” on your own document.
  • Spotify connects with zero setup — a built-in Client ID means Connect Spotify works out of the box; your own ID in Settings still takes precedence if you’ve set one.
  • New windows open in the open — a freshly opened window now looks for free space in your current view instead of landing on top of (or underneath) what’s already there; it only overlaps when the canvas is genuinely full, and always arrives front-of-stack.
  • No more terminal flash on dictation — the speech-to-text engine (and every other background process) now runs fully windowless; nothing from Windows pops over the app.
  • Codex answers once — the doubled final reply some Codex windows showed (the CLI reprints its message after its token stats) is filtered out.
  • Faster where you feel it — sixteen operations that silently froze the whole UI (extracting video frames, importing video themes, capturing the screen, stopping a busy agent or terminal, saving downloads, and more) now run off the main thread; the music visualizer and animated wallpapers stop burning CPU while the window is hidden; and images on the canvas are stored as files instead of bloating the app’s saved state — workspaces with screenshots on them save hundreds of times smaller.
  • Also: the launch-time Chrome pop-up some v0.1.105 users saw is gone (sign-in pages only open the browser when you navigate); new workspaces are named “Workspace 2/3/…” instead of “Unnamed”; two minimized windows with the same name are numbered in the tray; Kanban’s crew bar starts collapsed and its role dropdowns stay open while you pick; the Usage window collapses per agent; icon buttons are labeled for screen readers; and the Hermes device token stays out of the app’s web layer until you reveal it.
  • Agents recover from model and sign-in problems on their own — if Codex rejects the model a window asked for (common on ChatGPT-account plans, which don’t allow every model), the window switches to a model your account supports and re-runs automatically — without losing the conversation — instead of dead-ending. If an agent isn’t signed in, Mastery HQ switches to another account you’re logged into (when you have one) or shows the exact one-time login command; Gemini’s “set an Auth method” prompt is recognized too, with a note that you can paste a GEMINI_API_KEY in Settings → Agents instead.
  • Add your Spotify Client ID any timeSettings → Setup now has a proper Spotify field, with the redirect URI to copy and a check that catches the Client Secret pasted by mistake — so you can connect Spotify without re-running the first-run wizard.
  • Screenshots in feedback, and private feedback that actually arrives — the Feedback panel now lets you attach or paste screenshots (up to four). Private feedback is sent to the team’s inbox — it used to save only on your device and never reach us — and is never shown on the public roadmap. On roadmap.masteryhq.dev, cards are clickable: open one to read the full submission and see its screenshots.
  • Sign-in pages open in your real browser — clicking a link that leads to a sign-in page in the Browser pane (or an “add credits” link that redirects to one) now opens your system browser, where your logins live, instead of showing a blank page. The OpenRouter “out of credits” message is readable now too, with a working link.
  • A Whiteboard button on the toolbar — a new Whiteboard launcher sits right under the pointer tool; one click opens a drawing board.
  • First run is calmer — the setup wizard and the training game no longer open on top of each other; you’ll see setup first, then the trainer.
  • Lighter on the battery — an animated video wallpaper pauses while the window is minimized instead of decoding video in the background.
  • Hardened under the hood — the main window now runs under a Content-Security-Policy, and the app’s own network fetches can’t be steered onto private or loopback addresses — defense-in-depth, with no change to how anything works.
  • CLI sign-in links work now — clicking a login link in an agent or terminal window (like the Grok CLI’s “go to accounts.x.ai to enter your code”) opens your real browser, where your sessions and cookies live, instead of the in-app Browser pane that sign-in pages refuse to load in. Ordinary links still open in the Browser pane.
  • New windows open in focus — a window opened from the toolbar, a keyboard shortcut, or a voice command now lands on-screen (even if you’d panned the canvas far away), on top, with the cursor already in its input — type immediately, no hunting, no extra click.
  • Crew runs are hang-proof — a Kanban Crew worker that goes silent (a closed window, a lost completion signal, a turn that never finishes) no longer leaves its card stuck on “working” or stalls the rest of a board run: the crew notices, marks the card failed with an audit entry, and moves on. Three more robustness fixes ship with it: an unreachable Orchestrator self-check can’t abort a board run (the Judge still reviews), assigning or crew-running a card no longer risks resetting the board’s name and crew models, and a Judge whose notes contain code braces is parsed correctly instead of scoring good work zero.
  • See your store from the Command Center — for license admins: a new Store panel shows live all-time revenue, active licenses, device activations, and revoked counts, with sales per tier. It appears once you paste the store admin key in Settings → License, where a new Store licenses table also lists every sold license with how many of its device slots are in use.
  • Flat glass — a new Settings → Style toggle renders windows without the backdrop blur (the translucent tint stays). Turn it on if your PC shows a shaded vertical band across glassy windows — a graphics-driver quirk the blur can trigger.
  • Clearer Spotify setup errors — a mistyped Spotify Client ID (or the Client Secret pasted by mistake) is now caught before the browser opens, with a message pointing at Settings → Setup instead of Spotify’s bare “client_id: invalid” page.
  • Current model menus — the Codex, Gemini, and Grok quick-picks in agent windows now list each provider’s current models (GPT-5.6 family, Gemini 3 previews, Grok 4.5/4.3); retired IDs are gone. Custom… still takes anything your account supports.
  • Multi-model crews on your Kanban — pick one model per role — an Orchestrator to plan, a Specialist to do the work, and a Judge to grade it — from the top of any board, or let the Model Council auto-assign them. The Orchestrator can break a goal into tasks with acceptance criteria; each task’s worker runs until the Judge scores it 95 or better (a security hole or real bug fails it outright, and the Judge’s notes feed the next attempt); and every card shows a live token + cost estimate that sharpens as real runs come in. “Run crew” drives the whole board, and crew activity — runs, pass-rate, average attempts and score — shows up in the Command Center.
  • Fuller model menus in agent windows — the per-window model picker is now a proper dropdown that matches the app instead of a plain OS-white list, and it lists the current models for each CLI: Claude offers Opus 4.8/4.7, Sonnet 5, Haiku 4.5, and Fable 5; Codex offers the GPT-5 / GPT-5.1 Codex family; and a Custom… entry still takes any model id your account supports.
  • Track the licenses you issue — for license admins, the License tab now keeps a ledger of every code you mint — the account, type, expiry, a code fingerprint, and a use status (issued / activated / revoked) you can update — with a one-click CSV copy.
  • Settings opens centered — the Settings panel now opens centered under the top bar instead of hugging the left edge.
  • “Startup Sound” — the Style toggle is renamed from “Startup music” and its extra description line removed.
  • All your work tools under one wrench — Kanban, Backlog, Loop, Benchmark, Model Council, Dashboard, and Assets now live under a single wrench button on the left toolbar; click it and pick from the flyout. The rail is tidier, and Assets (your screenshot captures) moved out of Settings into its own window.
  • A model picker in every agent window — every CLI agent (Claude, Codex, Grok, Gemini, Cursor, Aider, Copilot) now has a model field in its header, alongside the existing OpenCode/OpenRouter pickers. Type any model your CLI/account supports — a few common ones are suggested — or leave it blank for the CLI’s own default; each run passes it via that CLI’s --model/-m flag.
  • Dictation mode — a new button beside the mic starts a hands-light mode: speak a command, press Enter to send, and the mic stays on for the next one. The plain mic is still there for a quick one-off.
  • Sweep everything aside to start freshCtrl/Cmd + → glides all your windows off the right edge for a clean canvas; Ctrl/Cmd + ← brings them right back — nothing minimized or closed.
  • Settings, reorganized — Brand sits up by Style; Hermes moved into Agents; AI Radar into the bottom of Setup; GitHub + Google combined into one Integrations category; License is last. Settings now also opens from the left, wide enough that nothing is cut off, and animates closed when you click away.
  • Close all minimized windows at once — the minimized-windows tray gets an that clears the whole stack (two-step, so a stray click can’t wipe them).
  • The left toolbar tidies itself away — after a minute untouched it tucks into the TB orb; a new toggle in Settings → Style → Interface elements turns that on or off.
  • Shorter command-bar hints — the rotating example prompts are short and readable now instead of running off the edge.
  • Grok Build is an agent now — xAI’s Grok Build coding CLI joins the agent picker alongside Claude Code, Codex, Gemini, and the rest. Install it in one click from Settings → Agents (like the other npm-based CLIs), or the app finds it if you already have it — then open a Grok window and hand it tasks like any other agent. It signs in with your xAI key (the same XAI_API_KEY that powers Grok voice) or its own grok login.
  • Agents speak like a person — spoken replies now read web addresses naturally (by name, never letter-by-letter), never vocalize codes or keys, and use a warmer, briefer, professional-casual tone; the written transcript reflects the same voice. (Named-agent windows.)
  • Feedback flows straight to the roadmap — sending feedback can now publish it to the public roadmap at roadmap.masteryhq.dev in one step, and customer-submitted feedback lands in a moderated queue you Approve or Decline before it appears on the board.
  • Zoom stays where you’re looking — zooming the workspace no longer makes windows “run away”; the pane under your cursor stays fixed, and Ctrl/Cmd + mouse-wheel zooms to the cursor.
  • Model Council in the toolbar — the Model Council now has its own button in the left rail, next to Benchmark.
  • Kanban unsticks itself — a card left stuck on “working” after its agent actually finished (a dropped completion signal) now reconciles against the agent’s real activity and moves itself to done.
  • Open agent-built pages in the Browser — when an agent builds a local HTML page, its Open chip now renders it correctly in the Browser pane (reading the file off disk and inlining its assets) instead of failing with an “asset.localhost” error or tripping over spaces in the path.
  • Screenshot tool: copy + annotate — the screenshot capture tool can now copy straight to your clipboard and draw pen and line annotations before you save or hand it off.
  • Two computers per license — a lifetime license now activates on up to two of your computers; a third is refused with a clear message, and deactivating one frees the slot. See license activation.
  • Drive Picker “developer key” fixdrive pick no longer needs a per-user API key pasted into Settings; the app bundles the Picker key, clearing the “developer key is invalid” error some setups hit.
  • Sturdier generated images — hardened how a generated image is turned into an on-canvas image, so a provider quirk is less likely to leave a broken-image tile behind.
  • Install agent CLIs in one click — Claude Code, Codex, OpenCode, Gemini, and GitHub Copilot now install straight from Settings → Agents with a single Install button and a live progress log. The first install quietly fetches a private Node runtime for you (no admin, no separate Node setup) — so “npm isn’t installed” stops being a wall for new users. Cursor and Aider still link to their install pages for now.
  • Drive Picker opens in your browserdrive pick used to get stuck on a Google sign-in screen that wouldn’t complete inside the app’s window (Google blocks interactive sign-in in embedded windows). It now opens in your real browser, where you’re already signed in, and hands the chosen file straight back to Mastery HQ. Your OAuth token no longer passes through the app’s web layer at all.
  • Deleting feedback removes it from the roadmap — deleting a published feedback item now also pulls its card off the public roadmap at roadmap.masteryhq.dev, instead of leaving it stranded there.
  • Tidier feedback list — the per-item row no longer overflows and clips its buttons on a narrow pane; the chips wrap cleanly.
  • Cleaner agent windows — removed a faint translucent halo that could appear behind agent windows and jitter as you moved the mouse (a WebView2 glass-compositing artifact on the flippable panes).
  • Updates install reliably again — the in-app updater now delivers the NSIS installer, which matches how Mastery HQ installs on your machine, so updates apply cleanly in place instead of silently stalling. (The MSI stays available as a standalone download for fleet/enterprise deployment.)
  • Drive Picker cookie wall — the real fixdrive pick was trapped on Google’s “Allow Google access to your necessary cookies” screen. The cause was WebView2’s built-in Tracking Prevention (default “Balanced”) blocking the third-party cookies the picker needs — not a browser flag, which is why the previous attempt didn’t help. The app now sets the WebView2 profile’s tracking prevention to off at startup, so the picker opens straight to your files.
  • Cleaner panes — removed a phantom translucent sliver that could appear behind windows and jitter when moving them (a 3D-flip rendering artifact); the pane flip is now a smooth 2D turn.
  • Refunded licenses lock out — a refund or chargeback now revokes the license: the app checks on launch, on window focus, and periodically, and a revoked code is removed from the machine so it stays locked even offline. Legitimate offline use is unaffected — an unreachable check changes nothing and simply retries when you’re back online.
  • Tidier bottom-left corner — the collapsed-toolbar orb no longer overlaps the zoom controls; the orb, zoom cluster, and Loops Dock stack cleanly.
  • drive pick unblocked — Google’s file picker used to trap some machines on an “Allow Google access to your necessary cookies” screen whose button did nothing (a Google-side quirk with embedded browsers). The app now opts its webview out of the cookie partitioning that triggered it, so the picker opens straight to your files.
  • Email works out of the box — no Gmail setup? “email the transcript to [email protected] now sends through Mastery HQ’s own relay, from [email protected]. Same confirmation card, same Audit Log entry, capped at 5/day (the relay enforces its limits server-side too). Add your Gmail app password in Settings → Google anytime to send from your own address with the higher 20/day cap.
  • Brand videos on installed apps — the Remotion templates behind “make a brand bumper” and brand reels now ship inside the installer. The first render sets them up on your machine (needs Node.js installed; takes a few extra minutes just that once) — Settings → Setup’s “Brand video renders” row shows the honest status. Previously these renders only worked on dev builds.
  • Benchmark runs count as automation — finishing a Benchmark suite now shows up in the Command Center’s automation panel alongside Council runs and loop passes.
  • drive pick — bring any Drive file into a conversation — the Google file picker opens inside the app; the file you choose becomes readable to Mastery HQ (one file at a time, by your explicit pick — the privacy model stays “the app sees only what you hand it”). Type drive pick in an agent window; one-time setup: an API key from your Cloud Console in Settings → Google.
  • Pick your video model — Settings → Brand gains a Default video model choice alongside the image one: Veo 3.1 Lite (fast default), Veo 3.1, Sora 2 Pro (top shelf, priced to match), or Seedance 2.0 Fast (cheap b-roll). Applies to “generate a video of …” and the b-roll leg of brand reels; the budget and confirm card watch whichever you choose.
  • “Shipped” now means shipped — the Command Center’s ship count and “What shipped” feed used to log every link an agent mentioned (a weather site cited in an answer counted as a “ship”). Now only the agent’s own output counts: files it created, dev servers it’s running, and sites on deploy platforms (pages.dev, vercel.app, github.io, …). Cited links still get their Open chips — they just aren’t trophies. Old reference-“ships” are cleaned out of your metrics automatically.
  • Email polish — every send now records Gmail’s own acceptance line (code + queue id) in the Audit Log, and emailing an empty conversation refuses honestly instead of sending a header-only mail.
  • Generated videos actually play now — video panes for bumpers, clips, and reels used to show a permanently black frame: the app’s own file permissions never allowed the webview to read workspace attachments, so every generated video silently failed to load. That’s fixed, and on top of it a generated video now starts playing the moment its pane lands (no waiting for a click), and local brand renders no longer flash a Chrome window — they run through Remotion’s invisible headless engine, with your installed Chrome as a silent fallback.
  • Drive round-trips (Workspace M4) — type drive <query> in an agent pane to read a saved Doc/Sheet back into the conversation (the recall pattern, pointed at Drive); the Command Center’s Log row appends a summary row to a running Command Center metrics log Sheet instead of minting a new file per export; and a Settings → Google toggle auto-archives every clean run’s transcript to Docs, silently, with the link left in the pane. Still drive.file-scoped — the app only ever sees files it created.
  • Pick your image model — Settings → Brand gains an Image model choice: Nano Banana 2 (the fast Gemini default, upgraded from the classic), ChatGPT Image 2, Nano Banana Pro (highest quality), or classic Nano Banana. Same key, same brand injection, same budget — just a different artist.
  • Brand reels — AI b-roll with your brand on top“make a brand reel of waves crashing saying ship faster” generates a real AI clip, then finishes it locally with your brand-exact title overlay (name, accent underline, tagline over a readable scrim). The paid leg is just the b-roll (budget + confirm card apply); the overlay render is free and deterministic. Agents can request one with [[reel: subject | tagline]].
  • Email from Mastery HQ (Gmail) — set up once in Settings → Google → Email (a Gmail app password, encrypted on-device — no OAuth), then “email the transcript to [email protected] mails the focused agent’s conversation from your own address. Every send — typed, voice, or remote — confirms on a card first (recipient, subject, preview; auto-cancels in 90s unattended), first-time recipients are flagged, and sends cap at 20/day. See Send email from Mastery HQ.
  • Generated video clips (Video M2)“generate a video of the fortress at dawn” produces a real AI-generated clip in your brand’s style and drops it on the canvas as a video pane (saved to the workspace’s attachments too). Runs through OpenRouter’s video API with the same key as images — Veo by default, Sora and friends selectable later — and takes a few minutes. Video money is real money: the daily media budget applies, pricier estimates show the confirm card first, and the toast reports the actual billed cost. Agents can request clips with [[video: …]].
  • Agents can request on-brand media — an agent that wants a visual simply writes [[image: a hero banner for the launch]] (or [[image logo-mark: …]], or [[bumper: ship faster]]) on its own line in its reply, and Mastery HQ renders it onto the canvas when the run finishes. Same pipeline as your own commands: Brand Kit injection, daily budget, confirmation, and an Audit Log entry naming the requesting agent. Every agent learns the syntax automatically at the start of a conversation.
  • A real confirm card for pricey generations — the over-threshold image confirmation is now a proper in-app card (estimate, today’s spend, one-click generate/cancel) instead of a browser dialog, and it declines itself after 90 seconds so a remote or agent-triggered run never hangs waiting for a click.
  • Help moved to the top bar — the ? now lives in the top chrome between the device-preview and Settings buttons (it’s app chrome, not a drawing tool), so it stays reachable even while the left toolbar is tucked away as the TB orb.
  • Brand bumper videos“make a brand bumper saying ship faster” renders a brand-exact 5-second title video locally (your literal colors, fonts, and name — deterministic, free, no generation API) and drops it on the canvas. Settings → Setup shows a “Brand video renders” readiness row.
  • Image template presets“generate a hero image for X”, “an og card about Y”, “a social square for Z”, “a logo mark of W”, “a feature frame of V” — each preset brings its own composition and aspect ratio (wide hero, square logo, …), with your brand injected as always. Add your own presets as JSON files in the app’s media-templates/ folder.
  • Brand images on demand — define your brand once in Settings → Brand (colors, fonts, imagery style, tone — with a live preview of what models receive), then “generate an image of …” drops an on-brand image straight onto the canvas. One OPENROUTER_API_KEY reaches 30+ image models; every toast shows the actual billed cost, spending honors a daily cap, and pricey runs confirm first.
  • The toolbar tucks itself away — shrink the left toolbar with the chevron at its top (or just leave it alone) and it becomes a small glowing TB orb docked bottom-left; hover the orb to bring the full bar back. It never auto-hides while a drawing tool is selected.
  • Google Drive everywhere — the Command Center exports its range straight to a Google Sheet, the Benchmark saves its report as a Doc and its leaderboard as a Sheet, and the Sprint Board saves a one-click board snapshot Doc. Transcript saves now leave a “Saved to Google Docs: ⟨link⟩” line in the conversation, and Settings → Setup shows an Accounts group with your GitHub/Google connection state.
  • Claude agents answer near-instantly after the first message — each Claude window now keeps one live CLI process between turns, so only your first send pays the engine’s start-up cost; every later message begins streaming immediately. Stop still works mid-turn, and the conversation picks up right where it left off on your next send.
  • Save to Google Docs — connect your Google account once (Settings → Google), then a Docs button in any agent window saves the transcript into your Drive as a real Google Doc — markdown headings and links convert properly, files land in a Mastery HQ / ⟨workspace⟩ folder, and the Doc opens in your browser. The app uses Google’s narrowest Drive permission: it can only ever see files it created. See Save to Google Docs.
  • The voice test tells the truth now — Settings → Voice’s test button used to ping an optional self-hosted server and report a scary ✕ on perfectly healthy installs. Test voice engine now runs a real on-device transcription through the same path dictation uses.
  • Stop is always reachable — on narrow agent windows the actions row used to overflow and hide the Stop button mid-run; the row now wraps so Stop is always clickable.
  • Claude replies stream in live — a Claude Code agent used to show nothing until its whole turn finished (long tasks looked hung for minutes). Now the reply appears as it’s being written, tool activity shows as it happens (⚙ Bash — npm test), and the model name appears about a second after you send. Same real token accounting and conversation continuity as before.
  • Snappier everywhere — main-thread cleanup — a class of actions used to freeze the whole app while they worked: Grok voice replies and speech synthesis, Browser-pane page loads, GitHub operations (connect, repo lists, syncs, pushes — a first clone could freeze the app for minutes), the Setup tab’s agent scan, offline voice transcription, and the Usage pane’s refresh (which re-read every agent log — hundreds of MB — every 15 seconds). All of that now runs in the background; the app stays responsive throughout.
  • Spoken replies are brief and never read web addresses — the voice no longer recites URLs (links speak as their title, bare addresses are skipped) and long agent replies are trimmed to a natural sentence instead of being read wall-to-wall. The transcript always keeps the full text; ask for detail if you want it spoken.
  • Faster pre-run repo sync — agents assigned to a GitHub repo no longer fetch before every message; the sync runs at most once every 5 minutes per agent + repo.
  • Smaller, faster app — the shipped binary dropped from ~62 MB to ~15 MB with optimized release builds.
  • Rate-limit account failover — add a second Claude Code or Codex account (Settings → Agents → Accounts) and a run that hits its usage limit switches to the next available account and re-runs on the spot. The limited account rests until its window resets (parsed from the CLI’s own notice when possible), then rejoins; every switch is toasted, noted in the transcript, and written to the Audit Log. Works everywhere runs happen: agent windows, Hermes plans, loops, and judges.
  • One voice at a time — and it prefers Grok — spoken output no longer overlaps (the system voice used to talk over a playing Grok/OpenAI voice), and if you use Grok anywhere (key set, Grok brain, or Grok voice sessions), Grok is now your speaking voice everywhere — agent output, command acks, and voice sessions all sound like the same assistant.
  • Grok voice failures are loud now — if the Grok (xAI) voice can’t speak, the app tells you exactly why in a toast (bad key, API error, …) instead of silently dropping to the robotic system voice.
  • GitHub connection upgraded to a GitHub App (M6) — new connections use a fine-grained GitHub App: the token only reaches repositories where you installed the app, and short-lived tokens refresh silently in the background. The Settings tab now explains an empty repo list (app not installed yet) and links you to the install page. Existing connections keep working; bring-your-own Client ID still accepts either app type.
  • TV Guide works out of the box — the guide no longer needs a URL: it auto-loads built-in programme data covering the major free streaming services (Pluto TV, Samsung TV Plus, Plex, Roku, PBS), which is most of what’s reliably watchable in the catalog. Paste your own XMLTV URL to use a provider guide instead; saving it empty returns to the built-in one.
  • Hermes commands reach your agents — a remote command that isn’t a workspace phrase (like “tell Bo to run the tests”) now routes to the named agent — or the focused one — exactly like typing it in the command bar, instead of coming back “unrecognized”. Saying just an agent’s name (“Alex”) brings that agent to the front.
  • Open a specific agent by voice“new codex agent”, “open claude”, “launch opencode”, “new openrouter agent”, “new cursor agent” (plus Gemini, Aider, and Copilot) open exactly that agent type; “new agent” still opens your default.
  • No more duplicate agent names — two agents can never share a name again, in any casing: every way an agent is created or renamed now auto-numbers a collision (“bo” next to an open “Bo” becomes “bo 2”). Names are how profiles, voice routing, and repo assignment find an agent, so they stay unambiguous.
  • New engine-start sound — the launch cue’s engine is now a real engine recording (the sword swish stays).
  • GitHub, connected — link your GitHub account in Settings → GitHub (device sign-in, no password in the app; token encrypted on-device). Browse every repo you can access, create new ones, and — the point of it all — put your agents to work on them. See Connect GitHub.
  • A repo per agent — every agent window gets a ⎇ Assign repo chip: pick a repository and that agent works inside its own private checkout (a git worktree on its own mastery/<name> branch), so parallel agents never collide. Works by voice too: “assign the repo masteryhq-landing to Alex”, “put Bo on infra-ops”, “create a private repo called billing-service” — and from Hermes.
  • Repos, kept maintained — choose what happens when an assigned agent finishes a run: nothing (review yourself), auto commit + push its branch, or auto open a pull request for your review. Agents sync to your latest default branch before each run, can never touch the default branch directly, never force-push, and every push/PR lands in the Audit Log.
  • Training game: public leaderboard — the finish screen can now submit your score to masteryhq.dev/leaderboard. Confirm with one email tap (no account); only your best score counts.
  • Hermes behind Cloudflare Access — a Hermes connection can now reach a relay that’s gated by a Cloudflare Access service token. Settings → Hermes gains Access Client ID and Access Client Secret fields; Mastery HQ sends them on the WebSocket handshake so the connection passes the edge gate (your device token still authenticates to the relay underneath). Leave them blank for a plain Tailscale or ws:// relay.
  • Real code editor — the Code pane is now a working CodeMirror editor: open a file from disk, edit it with syntax highlighting (JS/TS, Python, Rust, JSON, Markdown, HTML, CSS), and save with the button or Ctrl+S. Open it with “open code editor” (command bar or voice).
  • Dashboard: by-project + automation — the Command Center leaderboard now has a Project view (alongside Agent/Model), and a new Automation card tracks refine-until-good loop passes (and how many cleared the bar) plus Model Council runs.
  • Attach buttons show their icons again — the two controls next to the $ in an agent’s input bar (attach image 📎, attach video 🎬) were rendering as solid colored squares because a style meant for the Send button was bleeding onto them and hiding the icons. They now render as clear icon buttons, so they read as “attach”, not as stuck image thumbnails.
  • Attachment removal, actually fixed — pressing Backspace or Delete now removes the most recent attachment whenever an agent window is in front (unless you’re mid-typing), no matter how the image/video was added — you no longer have to hunt for the × or click the chip first. Adding an attachment also brings its window forward so the shortcut targets it.
  • Working-border progress — while an agent window is running, a brighter lit arc now sweeps clockwise around its border as a subtle indeterminate progress indicator, and clears the moment the run finishes.
  • Remove agent attachments by keyboard — click an attached image or video chip (it gets an accent ring) and press Delete or Backspace to remove just that one; the × button still works too. The earlier keyboard removal only fired when the prompt input happened to be focused and empty, so right after adding an image “Backspace to undo” did nothing — now adding focuses the input, and any chip is directly selectable.
  • Command Center dashboard — a new analytics pane (left-rail button, “open command center” / “show my stats” by voice, or the palette) that answers where your agents’ time, output, and money went: hero tiles for ships, active agent-time, spend (est.), and success rate; a work-area time breakdown; a “what shipped” feed you can click to open; a spend-by-model breakdown with cost-per-win; an agent/model leaderboard; and a reliability chart of clean/rate-limited/failed runs plus handoffs. Pick any time range and drill into an agent or model. Read-only; your data starts collecting now and fills in as agents run.
  • Feedback, leveled up — mark a feedback note private (it never leaves your machine), attach a redacted diagnostics snapshot (app version, OS, recent console/network — secrets masked) to a bug report, and give each note a status (open/planned/shipped/declined) with shipped/declined struck through.
  • Publish to a public roadmap — connect your roadmap admin key and push non-private feedback to a public voting page where users upvote by email; published notes show their live vote count back in the app. (Powered by the new roadmap.masteryhq.dev service.)
  • Delete agent attachments — remove an attached image or video with its × button (now a bigger, clearer control that turns red on hover) or by pressing Backspace with an empty prompt. (The keyboard/× removal shipped to main after v0.1.82 but hadn’t reached a release yet — this is the first build that includes it.)
  • Honest agent run status — a rate-limited or failed run now shows a flashing caution instead of a false green check, and the status badge sits in the window’s title row between the agent’s name and its token count. The check only appears after a clean finish.
  • Open what an agent makes — when an agent produces a website, image, or video (a URL, a dev-server address, or a file path), an Open chip appears under its message and opens it in the right preview pane.
  • OpenRouter model picker — each OpenRouter window has a model dropdown in its header; the pick persists with the window and rides every run.
  • Save as recipe, relocated — the Save-as-recipe control moved out of the zoom cluster into the command bar, right after the layout-density selector.
  • Benchmark in the toolbar — a Benchmark button now sits right after Loop in the left rail; opening the suite (by button, typing, or voice) takes over the screen full-screen and tucks the other windows into the Pane Compass so it has your full attention.
  • Charts on demand — “chart how OAuth works” (or graph/diagram/draw-me forms) has a local agent draw a labeled SVG diagram of any topic; it lands on the canvas as a normal image pane you can resize or hand to an agent.
  • OpenCode model picker — each OpenCode window has a model dropdown in its header (roster from opencode models); the pick persists with the window and rides every run as opencode run -m.
  • Masked secret fields — every API-key/token/password field in Settings (Voice keys, OBS password, Hermes device token) now hides behind variable-length asterisks with an eye button to reveal; the decoy length doesn’t betray the real key length.
  • Update announcements — when a new version is detected you now get a toast (once per session) pointing at the green Update pill, and a failed update check says so on the splash instead of looking like “up to date”.
  • Toolbar highlight & order — design tools (select, pen, eraser, shapes, text, image, screenshot) now sit at the top and only the active one highlights; window launchers (agents, terminal, browser, kanban, backlog, loop, music, TV, celebrate, help) never stay lit, and nothing is highlighted at launch. The Pane Compass still lights while the minimap is on.
  • Gemini & Grok keys in Settings — the Agents tab now shows the set/not-set status for GEMINI_API_KEY and XAI_API_KEY alongside the others (both were already scanned).
  • Agent memory & sessions — agent windows resume real CLI sessions across restarts, keep working notes, compact long conversations into handoffs, share a per-workspace project memory, and answer recall <query> from everything they’ve written down.
  • Attachments — send images to agents via 📎, paste, drag-and-drop onto an agent window, or “send this image to Alex”; attach videos 🎬 with automatic still-frame extraction (ffmpeg) or native video pass-through where the agent supports it.
  • Streaming Mode, complete — one switch that redacts secrets on screen, swaps to a streaming layout, controls OBS and Streamlabs, serves a browser-source overlay, and answers voice verbs like “scene to code” or “go live”.
  • Spotify native player — full-track playback (Premium), search, playlists, queue and volume from the Music pane.
  • Help Center — this documentation: 85 bundled docs, searchable in-app, with per-pane “?” buttons and Learn-more links in Settings.
  • Browser favorites — star sites and open them by name; “go to X” resolves favorites, known sites, then search.
  • Agent Roster pane — every agent’s persistent profile: category track record, editable skills that steer Hermes routing, per-agent backlog, and task history with outcomes.
  • Benchmark media artifacts — new Music (Web Audio) and Motion (canvas/CSS) suites: models compose and animate in code, rendered live in the sandboxed preview with capability chips.
  • TV Guide (EPG) — point the TV pane at any XMLTV guide URL (.xml/.gz) for a NOW card, highlighted running programme, and the channel’s upcoming schedule.
  • Pane openers by voice or typing — “open tv”, “open backlog”, “open loop”, and “open the agent roster” now open the panes (they used to reach the focused agent as a prompt).
  • Real file exports everywhere — benchmark reports, audit log, usage CSV, setup JSON, workspace and agent-transcript exports all write to Downloads and toast the path (several were silent no-ops in the desktop shell).
  • Cleaner codex transcripts — codex no longer echoes its instruction preamble back into the chat.
  • Performance passes across canvas panning, transcripts, and persistence.
  • Loops, complete — the Loops Dock, natural-language loop: creation, a Loop this button on agent windows, Watcher and Backlog-drainer loop kinds, loop cascades (chaining), and resume.
  • Setup Wizard, complete — first-run wizard, install-CLI helpers, and setup export/import.
  • Backlog pane with idea capture and the Roast council (GO / RESHAPE / KILL verdicts before a board is spun up).
  • Loop review lenses (including the Karpathy and Roast judges) and Setup Wizard Phase 1 (capability manifest + Setup-health tab).
  • First release delivered fully hands-free through in-app auto-update — the updater prompt downloaded, installed, and relaunched on its own.
  • TV background audio continuity, channel persistence, and the collapsible minimized-windows tray.
  • Auto-update fixed by pointing the updater at the public releases repo — v0.1.75 is the bridge release; installs from here forward self-update.
  • Custom window frame: the native title bar is gone and the app bleeds to the edges.
  • TV pane: browse and play live channels (iptv-org) with global search, favorites, and recents.
  • Model Council (Arena, Tournament, Debate with a blind judge) and the Benchmark suite.