Docs/Reference/Changelog
Reference

Changelog

DevThrottle ships continuously. The authoritative, always-current changelog is the GitHub releases feed, where every version lists its merged changes. Highlights of the recent line:

v2.7.0 - September 18, 2026

Several sessions can now work on one repository at the same time, each in its own ready-made copy, and a copy is only cleared for reuse once its work has provably landed on the remote.

  • Pooled worktrees: a ready-made copy per session, cleared only when the work has landed. DevThrottle keeps a small pool of copies of a repository. A session takes a free one, works in it, and gives it back when it closes; a returned copy is reset and handed to the next session, so the build output in it stays warm. A copy is reset only when its work is proven to have landed: the copy is the one it claims to be, nothing is uncommitted or untracked, nothing of its own is sitting in a stash, and every commit in it is either on the freshly fetched default branch or is the same change as something that is. When git cannot prove it - a squash, a rebase, a merge git cannot compare - GitHub or Azure DevOps is asked whether a pull request carrying exactly those commits was merged into the default branch. A host can only turn "held" into "free", never the reverse. Anything unproven leaves the copy held: nothing in it is reset or deleted, and the reason is printed. Turn it on for a repository with cc-devthrottle worktree pool on --repo <path>. It is off by default, there is no machine-wide switch, and the default pool is four copies. The tool is cc-worktrees and it ships in the toolbelt on Windows, macOS and Linux. Tested end to end on Windows. One thing to know before turning it on: a git gc holds every copy in that repository's pool, including free ones, because it rewrites the record the proof depends on; cc-worktrees release <slot> --confirm-abandon gives them back, one at a time.
  • The Wingman tab: one screen to read a stop and answer it. The Now view says which session it is on the first line of every state, has one place to type with one sending button per state, and no longer carries Stop, Interrupt, Compact and Clear context directly under where you click answers. "Stopped at" is the real stopping time, taken from the Director's own record rather than a join key - which is why three sessions on two machines used to claim the same minute. A finished session has somewhere to type, a snoozed one says when it comes back and offers to wake it, the pill wears the session's own colour, and an answer that cannot be taken back says so and asks once.
  • Room for the report. The left rail and the queue dock collapse, both remembered per browser, and collapsing never hides the attention badge. A report has its own address at /report/{id} with nothing beside it, so a printed link opens the report rather than the Reports tab of a session the reader does not have. Export HTML saves exactly the bytes the Gateway serves for the version on screen.
  • Voice: whose session it is, and the clip belongs to the turn on screen. A session held by another session says so and offers nothing, and the banner claims only what the product does - the sessions you own. A narration that failed can be asked for again, while automatic paths still never re-attempt one. The rule that drops an old clip now fires on a state check rather than a sampled edge, so a quick turn can no longer slip past it and leave the phone playing the previous turn as though it were this one. A failed switch or generate stays on screen until it is retried instead of being wiped by the next poll.

v2.6.0 - September 18, 2026

One session now runs your fleet for you, and messages between sessions stop interrupting the work.

  • The Fleet Manager: one session you talk to that runs the rest. You tell it what you want. It starts the sessions that do the work, gives each one your words, watches them without you, and comes back with only three kinds of news: something is ready, something was found, or something needs your decision. It never does the work itself, so it is always free to talk. It replaces the Assistant on the Cockpit, on the phone and in Settings, it is pinned first in your session list with the sessions it started collected under it, and its news is held by the Gateway so a restart or a move to another machine loses none of it.
  • A message is a record, not an interruption. cc-devthrottle message send places the message in the other session's inbox and answersqueued; the session reads it with cc-devthrottle message inbox. A session may message only the session that started it and the sessions it started. When a session has finished its turn and its composer is genuinely empty, the Director rings one fixed doorbell line - and if anything you typed is sitting there, even three spaces, it waits for the next opportunity. A doorbell never ends a snooze you armed.
  • Passwords your sessions use but never see. cc-secrets ships in the toolbelt on Windows, macOS and Linux. You add a secret by hand on each machine and a session can then use it without the secret ever reaching the model. Adding, editing, removing and importing are for you only and are refused inside a session.
  • Linux: an app menu entry, and updates that work. Installing on Linux adds DevThrottle to the app menu with its icon, the command-line install finishes cleanly instead of failing at the last step, and a Linux Director now checks for updates, downloads its own build and can install it. Before this the check reported "up to date" every time.

v2.5.0 - September 17, 2026

Your sessions can now use a password without the model ever seeing it, and a Linux machine installs, appears in the app menu, and updates itself like the other platforms.

  • cc-secrets: passwords your sessions use but never see. cc-secrets is a new tool in the shipped toolbelt. You add a secret by hand on each machine, and a session can then use it without the secret ever reaching the model. cc-secrets run starts a command with the secret supplied on its input, in an environment variable, or to a password prompt, and removes every recognisable form of the secret from what comes back. cc-secrets login fills a login form in a browser profile the Director owns, after checking the page is on the site the secret belongs to. cc-secrets import moves a whole credentials file into the store, one entry per line, without printing any value, and run --with hands several entries to one command at once, such as a service key and the secret that goes with it. Values that are not secret, such as a host or an email address, can be stored as settings beside the secrets (add --setting, import --settings); cc-secrets get prints a setting, and a secret is never printed. cc-secrets editchanges an entry's user name, allowed site addresses, uses or agent access without re-entering its secret. Adding, editing, removing and importing are for you only and are refused inside a session. The store is one file per user per machine, readable by that user alone; every use checks this, and on macOS it also checks access control lists and refuses drives that ignore file ownership. Every use is written to an audit log, which never contains the secret. It runs on Windows, macOS and Linux.
  • Linux: an app menu entry, and updates that work. Installing on Linux now adds DevThrottle to the app menu, with its icon, so there is something to click. The command-line install finishes cleanly instead of failing at the last step, and uninstall removes the entry. A Linux Director now checks for updates, downloads its own build, and can install it. Before this release the check stopped before asking GitHub and reported "up to date" every time.
  • Fleet messages are queued, not typed. cc-devthrottle message send no longer types text into the other session's terminal. It places the message in that session's inbox and answers queued; the session reads it in full with the new cc-devthrottle message inbox, which marks it read. A session may message only the session that started it and the sessions it started, at most 6 messages an hour and 1 per recipient every 10 minutes. cc-devthrottle message ask has been removed.
  • Also in this release. The Cockpit has a Wingman tab on each session: every stop the Wingman judged, with the outcome, the colour it produced at the time, and why. Thecc-devthrottle command line is easier for agents to use: lists show full identifiers, names and paths instead of cutting them short, filters work the same with--json, empty results say count: 0, running it with no arguments shows the live state, and a wrong flag fails with the valid choices listed. Dictation: the ready sound no longer ends up in the transcribed audio, the recorder keeps listening for a quarter of a second after you press Send or Pause so your last word is not cut off, and the time the microphone took to start is logged and shown. The stored raw transcript is the speech model's full output on every path, as the transcription rules require. The Fleet Map draws the same ownership tree as the Sessions list, across machines, so a session started from another machine shows under the session that owns it. The Fleet Map keeps a colour legend on screen, and hovering a session dot now gives the same words as its colour. The Missions board no longer says "needs you" under a session that does not need you. Voice narration is no longer silenced when a verdict check fails. The Wingman now judges sessions owned by a Fleet Manager session, so the Fleet Manager can act on its verdicts; those sessions are still never read aloud to you. On Windows, the Director prepares a spare Director slot in the background the first time it starts after updating. No reinstall is needed.

v2.4.0 - September 16, 2026

The session list now tells you what every colour means, and the Wingman can tell a stop that needs you from one that is only reporting - as an opt-in setting, off by default.

  • What do the colours mean? The session list in the Cockpit and on the phone has a new link that opens a short legend: every colour a session can show, what the session is doing, and whether it is asking for you. The words come from the Gateway, next to the rules that decide the colours, so the legend and the dots always agree. If you ever see magenta, the legend says what that means too.
  • The Wingman says whether a stop needs you (opt-in, off by default). When a session stops, the Wingman can now read the screen and decide whether the stop needs you. With the account setting on: a stop that only reports finished work shows cyan, labelled Done or Report, and is not counted as needing you; a session that said it will carry on by itself shows purple, and turns red if it does not; while the Wingman is still reading a stop, the row is yellow; in the Cockpit a judged stop shows its options as buttons, with a This is wrong action for a verdict you disagree with; and a snooze that ends with nothing new comes back calm instead of red. Brand-new sessions stay green, labelled Ready, so a finished session never looks like a new one.
  • The launcher updates itself on Mac and Linux. Until now only Windows launchers updated themselves. From this release the launcher updates itself on every platform.
  • Also in this release. Voice mode names the right session when it speaks. When voice mode gives up on a spoken summary, the session no longer stays yellow: it asks for you instead. On Mac and Linux, cc-devthrottle setup looks for its commands in the right folder and downloads the setup tool built for that machine. The phone's Chat tab has its full screen back; answering a judged stop from its options is done from the Cockpit. A Director older than this release shows finished sessions in magenta until it updates.

v2.3.0 - September 15, 2026

You can now see every machine you own in one place, see which ones are behind the newest release, and update them from the Cockpit without walking over to the machine.

  • A Machines tab: every machine, its launcher and its Directors. The Directors page used to list Directors and nothing else. A machine whose Director was closed but whose launcher was still running did not appear at all, and there was no single place that showed every machine, its launcher and the Directors on it together. The page now opens on a Machines tab: one row per machine, with its launcher and how recently it was heard from, and the Directors on that machine listed underneath. Each launcher is described in plain words - connected, offline, or too old to be sent commands - and the last two say what to do about it. The Directors tab is the list you had before, with one change: the version column now says whether each Director is current or behind, and sorting by version puts the ones that are behind at the top.
  • The Gateway knows the newest release. Every Director used to check for new releases on its own and keep the answer to itself, so the Cockpit could show a version number on every machine but could not say whether any of them was out of date. The Gateway now reads the newest release itself, about once an hour, and every version on the page is compared against it. If it cannot read the newest release, the page says so rather than calling everything current.
  • Update now. A machine whose Director is behind and has no sessions running now offers an Update now button, on the Machines tab and on that Director's own page. Pressing it installs the downloaded update straight away: the Director restarts into the new version, and if the new version does not start, the previous one is put back. If the machine has not downloaded the new build yet, it says so and installs nothing. It is the same update your launcher already performs by itself once a Director is empty - it simply no longer waits for the launcher's next check - and the rules are unchanged: an update is never installed while sessions are running. A busy machine says how many sessions are running and that it will update by itself once it is empty. Each Director's page also has a new Version and updates card: the version it runs, the newest release, whether a newer build is downloaded and waiting, what the launcher can do, and the result of the last update on that machine.
  • Update now needs a launcher from this release. A launcher updates itself, so machines pick this up on their own. Until one has, its machine says its launcher is older than remote updates and keeps updating the way it always has.
  • Also in this release. Restart and Start for a Director are now buttons on the Machines tab and the Director page. Restart only happens when the Director is empty - the launcher checks again at the moment it restarts, and refuses if it is not.

v2.2.0 - September 15, 2026

The session list is now the shape of the work: sessions fold underneath the session that started them, on the Director, the Cockpit and your phone, by the same rules and in the same words. A session now wakes when its conversation actually moves, not whenever its screen redraws.

  • Your sessions fold under the session that started them. A flat list stops telling you anything the moment you run a real amount of work - one Architect with nine sessions under it took ten rows of a fourteen-row rail, and the four sessions you were actually looking for were off the bottom of the screen. Any session that started other sessions is now a parent, and the sessions it started sit underneath it, folded away by default. A session that started nothing is an ordinary row, exactly as before, which is most of them - so on a quiet day nothing looks different at all. The relationship is ownership, not grouping: it is the session a session answers to, the same fact the product already uses to decide whether something interrupts you. It goes as deep as it really goes, so an Architect's Manager's Workers are all there, each nested under the session that actually started it.
  • A folded group hides nothing. A folded parent carries one small square per session underneath it, at every level, in that session's own colour; the counts - working, stopped, and how many need you; and how long the oldest session in the group has been going, ticking as you watch it. A group that is hiding a session that needs you says so without being opened: the count is on the line, and that session keeps its own colour in the row of squares. Open it and its sessions appear underneath, indented behind a guide line, each with its own chevron if it started sessions of its own. Which groups you left open is remembered, per group, and survives a restart.
  • One switch: your order, or what needs you most. There are no tabs and there is no second list. My order is the one you made by dragging rows around, and it is unchanged. Attention puts the session that has been waiting for you longest at the top, then the rest that need you, then the ones still working, then the snoozed ones at the bottom. Nothing is hidden; the order simply changes. Sessions never re-sort underneath their parent, because a session with a live supervisor is not waiting on you in the first place. Dragging still works, and now understands ownership: a row moves among its own siblings and never across a parent boundary, so rearranging your list cannot tell you something untrue about who started what.
  • The same answer on every screen. The Cockpit, your phone and the Director now compute none of this for themselves. The tree, the counts, the age and the attention order are worked out once and read everywhere, and the two implementations - one for the browser, one for the desktop - are checked against a single shared file of worked examples that neither of them owns. Change one side alone and its own tests go red. That is deliberately harder than letting each screen do its own arithmetic, and it is the reason the same group of sessions cannot be described three different ways depending on where you are standing.
  • A session wakes when its conversation moves, not when its screen redraws. Until now a settled session went blue the moment any output arrived, so an agent redrawing its own screen could make a session look busy - and end a snooze - with nothing new in the conversation. A settled session now opens a turn only when the conversation gains a new row. It is on by default on every Director, with nothing to configure. It targets a measured problem: on one Director over one day, 107 wake-ups were a single burst of output with nothing behind it, 85 of them fell on an exact 30-minute cycle while the agent's footer drew "Checking for updates", and 81 snoozes ended on one of those repaints. Checked against 4,328 pinned screen pairs, the new rule kept 93.8 percent of short unexplained wakes red, while 229 of 231 longer ones still opened a turn. Its effect on live snoozes has not been measured yet. If it misbehaves on a machine, settingCC_DIRECTOR_CONTENT_TURN_RULE=off restores the old rule on that one Director.
  • Also in this release. A failed session-key registration now says why. A single invalid value used to produce an unexplained error and take every other session key registering at the same time down with it - on one machine, 2,310 identical errors in a row, none of which named what was actually wrong. Built-in skills now have one source rather than two copies that drifted apart, with a check that keeps them that way, and the skills the product ships no longer teach a way of starting a session that the product refuses. Groundwork for the Wingman judging every stop has landed, switched off: the two per-account switches that will let it change how a stop is shown are both off by default.

v2.1.3 - September 14, 2026

A release about who a session answers to, and about being able to see the shape of the thing you are running.

  • A session that starts a session has to say who owns the result.Every session answers to something: either another session is holding it and gets told when its turn ends, or it is yours and it goes red and asks you. That rule shipped in v2.1.2, but nothing enforced it - the refusal lived only in the cc-devthrottle command line tool, a convention the tool chose to follow rather than something the product required, so anything that skipped the tool got an unowned session. Three things were wrong underneath, all the same shape: the spawn path trusted the request for facts the caller should not have been able to choose. The origin of a spawn - a person, an agent, or a schedule - was read out of the request itself, and only one of the two spawn routes checked it at all, and not the common one, so a caller could simply say it was a person. Nothing required an agent to say who would own what it started. And a caller that did declare an owner but got the identifier slightly wrong had that declaration silently discarded, producing exactly the unowned session it had been trying to avoid, with no error to say so.
  • Who is asking now comes from the credential, not the request. All three are closed, on both routes, in one shared place. A person - the desktop, the Cockpit, the phone - is recognised from their signed-in device and is never asked who owns anything: a session you open is yours. A session starting another session is recognised from its own key; it cannot claim to be a person, its parent is taken from the key rather than from what it says, and it must declare who will own the result or the spawn is refused with the options spelled out. A scheduled run declares nothing and is yours, exactly as before. A malformed owner is now refused, naming the value, instead of being dropped. One limit, stated rather than left to be found: the refusal applies where the caller can be identified. A spawn relayed between machines by a Director carries that Director's own credential and is trusted, because its request was written by a command line that had already been through the gate. A test says so, and it will be the first thing to change if that ever stops being true.
  • Handing work to you now says why. --standalone means the user owns the session: it goes red and asks you when it finishes, and the agent that started it hears nothing back. It exists for real cases - you asked for the session, or the work genuinely needs you - but it cost exactly as much to type as --controlled-by self, and agents were reaching for it. On a fleet of nineteen sessions, three of the thirteen that agents had started had chosen it, and two of those were sitting red waiting for attention that need never have been asked for. It now requires a reason. The choice is not forbidden; an agent that cannot say why the work is yours keeps it and collects it itself.
  • The architecture documentation is five documents and has pictures.The architecture tree had grown to 192 files across two directories, and most of it was leftover instructions rather than description: briefs addressed to sessions that finished months ago, phase plans, dated review rounds, handovers. Several still announced themselves as active work, and two were the same document in two formats that had drifted apart. It is now five documents - sessions, the fleet, the Director and Gateway, terminology, and an index - each owning its subject completely, with nothing stated twice. Every claim was re-checked against the code rather than carried across, which turned up three documents describing a product that no longer existed, including one instructing agents to connect to a network port removed months ago. The diagrams draw the outbound-only model - Directors dialling out, nothing reaching in, no ports on any machine, with the mechanisms that used to need a way in marked - and also what decides whether a session interrupts you, who gets told when a turn ends, and the shape of a mission.
  • Also in this release. The test suite now builds its own PostgreSQL rather than assuming one, and a missing database fails the run instead of quietly skipping the tests that need it.

v2.1.2 - September 14, 2026

A release about sessions you are not watching: the ones nobody is holding, the ones that finish and never say so, and the one you are trying to stop.

  • Stopping a session asks you once, and takes your word for it. The Director and the Cockpit had turned a stop into an interrogation - four sentences explaining the audit trail, a box demanding a written reason, a Stop button that stayed switched off until you filled it in, and a panel afterwards reporting what had happened to a session you had just watched disappear. Both now ask one question with Cancel, Stop, and a note you may leave blank. If the stop works the window simply closes; only a failure says anything. The reason requirement stays where it belongs - on the REST interface, because one agent can stop another agent's session and the trail has to say why - and a stop you make yourself is recorded as coming from you. The phone was changed this way two days earlier, so all three screens now behave the same.
  • A session stays quiet only while somebody is holding it.Whether a session could go quiet used to be decided by what kind of session it was, fixed when it was born - so sessions were quietened for the category they belonged to rather than because anyone was there to catch them. On 13 September six sessions sat grey and labelled "Snoozed" with nothing snoozed, and five of the six had nobody who would ever come back for them. The question is now asked fresh every pass: is there a supervisor alive right now? If not, the session turns red and asks you. Alongside it, owning a session is something a session must now say out loud - a session that spawns another must declare who owns the result, where before it took ownership silently just because it could.
  • A session tells its parent when the work comes back. Going quiet is only safe if somebody is told when it is over, and until now nothing was: a session finished delegated work and simply stopped, so "quiet" could quietly mean "lost". A session that was given work now reports back in its own words, and that report interrupts its parent - the right cost, because a session that took ownership took on being interrupted when the work returns.
  • A dictation to a session that has exited stops retrying forever. It was refused and left unresolved, so the phone kept trying it every few seconds, paying for a full transcript each time and throwing it away, repainting a dead session orange on every lap. The only way to stop it was to delete the session. It now resolves the first time, tells you the session has gone, and keeps your audio.
  • Also in this release. The Gateway's own unit tests had grown past the time limit on the everyday test run, which meant they were being stopped before they finished and counted for nothing. They now run on the release check instead, where they count.

v2.0.6 - September 3, 2026

A small release with one fix that matters if you run the Pi coding agent: a new Pi session no longer shows, or reads aloud, a conversation that belongs to an earlier session.

  • A new Pi session showed the previous session's conversation. Open a Pi session in a repository where you had used Pi before, and the chat screen filled with the conversation from that earlier session - a review from weeks ago, in one case - before you had typed a word. The spoken narration read that same old conversation out, and the turn counter on the session card counted the old session's turns as well. DevThrottle was finding a Pi session's transcript by taking the newest transcript file in the repository, and Pi only writes a session's file when the first message is sent - so at the moment a new session started, the newest file was always the previous session's, and that wrong answer was kept for the whole life of the session.
  • Every Pi session now starts with its own session id, and Pi names the transcript file after it, so DevThrottle knows which file belongs to which session from the moment it starts and never has to guess. Reopening a Pi session brings its conversation back, because the same id is what Pi uses to resume. Clearing a Pi session's context is followed correctly: Pi starts a fresh transcript when you clear, and DevThrottle now follows the new file rather than staying on the old one. The context gauge and the model shown for a Pi session come from that session's own file, not the newest file in the repository.
  • A Pi session that was already open when you install keeps the old behaviour until you close it. Sessions opened after the update behave as described above.
  • Also in this release. The cc-devthrottle command line tool gains session raise and session workers: a session that is being driven by another session can put its hand up when it is blocked, and the driving session can see who is blocked.

The two new commands need the hosted service update that follows this release. They do not work until it is deployed.

v2.0.5 - September 3, 2026

Install this release before the hosted service is updated. It teaches your computer to send its conversations up to DevThrottle instead of being asked for them every time, and the next update to the hosted service expects that. The order matters, and it is explained at the end of this entry.

  • Your computer now sends each finished turn as it happens, and DevThrottle keeps it. Until now, every time DevThrottle needed a conversation - to draw the chat screen, to read a turn aloud, to wait for a spoken answer - it sent a request down to your computer asking it to open the agent's transcript file and read it back. On the chat screen that happened every two and a half seconds. Chat, the transcript view and the spoken narration now all read from the copy that is already there, so the chat screen stops waiting on a round trip to your machine, and a conversation you have already had stays readable when your computer is briefly unreachable. To be exact, because this is easy to overstate: the session itself still needs your computer - that is where the agent runs. What changed is that reading what has already been said no longer waits on reaching it.
  • The narration that went silent for hours is fixed. A session could stop producing spoken narration and never recover, with nothing on screen saying why. Chat in the same session kept working, which made it look like the voice feature was broken. DevThrottle worked out where the agent's transcript lived by building a path from the session's folder; when an agent moved into a Git worktree the transcript moved with it, and every read from then on opened an empty spot, forever. The path is now resolved in one place, following the pointer the agent itself reports - and because conversations are sent up as they happen, nothing reads that file at all any more on the path that failed.
  • Dictation stops changing words you never asked it to change. The correction list is for words you have listed, and it had been guessing at words you had not: between 8 and 17 August the fuzzy matcher turned "sure" into "Soren" 261 times, "many" into "Banya" 138 times, and did the same to "code", "single" and "focus". Only words on your list are replaced now. That matching is off, and stays off. A model may check a candidate before an unlisted word is touched, but it can only choose between candidates - it never supplies text of its own. Dictation transcripts are kept for 90 days, matching session history, so you can go back and see what was actually said.
  • Smaller things. The session picker on the phone is searchable, so a long list is usable. An empty recording no longer retries forever, and a stuck dictation no longer holds its session locked. The Gateway starts listening before it opens its database, so a slow database no longer looks like a dead service during startup. And cc-scrub, a screenshot scrubber, removes private details from an image before you share it.

Install this before the hosted service is updated. This release is safe to install right now, while the hosted service is still the current one: your computer checks whether the service is ready to receive conversations and simply does not send them if it is not, so nothing changes for you today. The hosted service will then be updated to read conversations from the copy your computer sends. A computer still on v2.0.4 or earlier cannot send them, and after that update its chat and voice screens will say so and ask you to update, rather than showing the conversation. That message is correct, and installing this release clears it - but you can avoid seeing it at all by updating now.

v2.0.4 - August 16, 2026

A small release with two fixes, both named in the v2.0.3 notes as things that were still wrong: a session waiting for voice now has a clock and can admit defeat, and the Gateway waits longer for its database before the platform gives up on it.

  • The wait is now on the screen. A session waiting for voice says how long it has been waiting, in whole minutes, timed from the moment the wait began rather than from the last time anything happened. A row reading "Preparing voice" used to read exactly the same at two seconds and at forty-eight minutes.
  • After three minutes the product stops promising. The row turns red and says the voice did not arrive, with the elapsed time, instead of another calm "on its way". Three minutes is the standard the product already held itself to and had written down; it is now shown rather than merely intended. The Gateway keeps trying in the background - what ends is the promise, not the effort. And the reason you can act on still wins: if the speech service is down, or the account is out of credit, or setup is unfinished, the row says that, and none of those sentences is replaced by the give-up message. A session that has audio, has an attempt in flight, or has nothing to read aloud is unaffected.
  • The Gateway waits longer for its database. A deploy on 12 August took the hosted service off the air for 46.7 seconds: the container gave up on its database after ninety seconds and exited, and stopping a failed container during startup also takes down the healthy one serving traffic next to it - while the same database opened cleanly minutes later. The Gateway now waits inside the startup budget it actually has, with room left to finish starting up. This is a mitigation, not a cure: it widens the window in which a slow database can recover, and the real fix - a Gateway that starts answering before it touches the database at all - is not built yet. It has one deliberate cost: a Gateway that cannot reach its database at all now takes about eighty seconds longer to report the error.
  • Known and not fixed here. Five faults are known, filed, and deliberately left for the next release: every new account gets a 14-day Pro trial, but the trial is invisible in the app, so no screen says a trial is running or how many days are left; a snooze does not survive the agent's own update check, so a snooze on an idle session can die within about half an hour; a Gateway serving an evicted Director shows an empty fleet as though it were a fact while the sessions are running normally; spawning a session with a prompt can lose the prompt and tell the caller nothing went wrong; and the hosted morning report can say no sessions ran on days when they did.

Both fixes live on the Gateway side. If you use the hosted service they are already running, and updating the app is all you need. If you run your own Gateway, update it too. There is no migration and no new setting.

v2.0.3 - August 12, 2026

Sessions no longer go quiet without saying why, you can sign out of the mobile app, and two accounts can share one browser.

  • Sessions no longer go quiet without saying why. A session in voice mode could stop speaking and never start again. Its row sat on "Preparing voice" indefinitely, no narration was produced, and nothing anywhere reported a fault - one session was found sitting like that for forty-eight minutes. Reading a session's conversation could fail and be reported as a success with nothing in it, so narration concluded there was nothing to say and never tried again. A failed read is now treated as a failure: the narration is attempted again on its own, and the row says voice is on its way instead of claiming it is being prepared when nothing is happening.
  • The row tells you the real reason. Where it used to say "Preparing voice" for every possible cause, it now says "Nothing to read aloud" when the session is waiting on a question rather than a written answer, "Voice service down" when the speech service cannot be reached, and "Voice needs credit" when that is what is wrong. An agent that keeps no conversation at all is said so once, rather than promising a narration that could never arrive. And asking for a narration by hand no longer reports a failed read as a session that has not produced anything to summarize yet.
  • You can sign out, and keep two accounts. The mobile app previously had no way to sign out at all. You can now sign out, and you can keep two accounts and switch between them on both the phone and the desktop Cockpit, without a password and without a connection. Signing out always asks first, and the confirmation says which of the two outcomes will happen, because signing out of one account and signing out of all of them are different things.
  • Also in this release. An administrator can extend a member's Pro trial, so a promise made to somebody about their trial can be honoured; this is an administrator action on the hosted service, not something a member does. The project now carries a contributing guide and a security policy, so anyone reporting a vulnerability has a stated route. And repairs to the build and the test suites.
  • Known and not fixed here. There is still no clock on a session waiting for voice, so no screen can tell you how long it has been without narration; and there is still no point at which a session whose narration keeps failing admits defeat rather than saying voice is on its way. Both are stated in the release note.

The voice fixes need both halves to be current. The part that reads a session's conversation runs in the app on your own machine; the part that decides what to say about it runs on the Gateway. Until the app is updated, a transcript that cannot be found is still reported as an empty conversation, and the session it belongs to can still go quiet. Update the app, and update your Gateway too if you run your own. There is no migration and no new setting.

v2.0.2 - August 8, 2026

A small release that finishes the mission lifecycle. Missions could be started but never ended, and the fleet was found in exactly that state - eleven missions, several of them finished days earlier, with no way out of the list. You can now end one - from the command line, which is the whole surface for this until the Cockpit gets an archive view.

  • A mission can be ended, renamed, or brought back. A mission is the body of work a session belongs to. Until now nothing anywhere could end one, so the list only ever grew, and finished work sat beside live work with no way to tell them apart. Five commands now do the whole lifecycle: cc-devthrottle mission rename, mission complete, mission remove, mission reopen, and mission list filtered by state - --all or --state active|complete|removed. All of them are in the agent-discoverable actions list, not just the help text, so an agent that finishes a body of work can find the verb that ends it.
  • The wording is most of the work here, because these commands are the only surface for it. A rename names the old name too, so it is visible which mission moved, and says the identifier is unchanged - because "will this detach my sessions" is the first thing anyone wonders. Ending a mission says where the record went and how to get it back, naming both the list command and reopen: there is no other way to see an ended mission yet, so a bare "done" would leave you unable to find it. An empty filtered list says which list is empty, because a bare "no missions" under a filter reads as "you have none at all" - a different and much more alarming thing. And a mission with no stated reason for existing is flagged rather than shown as an empty cell, the same rule the Cockpit card follows.
  • Your agents can actually use those commands. The commands above reached a service that refused them: every mission verb answered 403 for an agent session, on a service that had just been given the routes - a session key could create a mission and read one, but not change one. An agent may now change a mission it can already create and read. This is no wider than what it already held - the mission is resolved inside the caller's own account, and another account's mission answers "not found" exactly as a read does.
  • Also in this release. mission create --parent is gone: missions are flat now, and the flag was still sending a parent identifier to a service that no longer has the field. Resolving a mission by name or short identifier now looks at every mission rather than only the active ones - without that, reopen was impossible, and rename failed on exactly the missions most likely to need correcting.

v2.0.1 - August 7, 2026

A hardening release. Every item here is a defect found during or just after v2.0.0, several of them by walking the product on a clean machine as a new user would, and several more by an independent review that sent the work back before it shipped.

  • Your dictionary now reaches your own dictation. If you use DevThrottle in the cloud, the words you added to your dictionary were not affecting your dictation at all: the correction pass read a shared dictionary rather than yours, so adding a term you say all day changed nothing, and the promise that your dictionary follows you everywhere quietly failed. Your dictation now reads your glossary. Two details worth stating plainly, because either could have been got wrong and both were checked: if you have written no dictionary you get no correction, never somebody else's terms; and running DevThrottle on your own machine is unchanged.
  • A broken dictionary no longer costs you the transcription. A malformed or unreadable dictionary file could fail the whole transcription instead of stepping aside - backwards, since the dictionary exists to improve a transcript. One that cannot be read is now skipped and you get your raw text. It does not fall back to anyone else's terms either: failing open means your own words, not a stranger's spelling.
  • The dictionary never did bias speech recognition, and now says so. The product told you, in the app and on the phone, that your terms were "biased into speech-to-text". They were not, and the code path that would have done it had no caller - your audio goes to speech recognition untouched, and your terms are applied afterwards to the finished transcript. The wording is now what actually happens everywhere it appeared, and the dead path is gone. This changes no behaviour; it stops the product describing a design it does not have.
  • A request we cannot place is refused rather than guessed at. On the hosted service, one voice route would accept a request whose account could not be resolved and quietly treat it as a local, single-machine request - reading the shared dictionary and filing the transcript in the wrong place. Every comparable route already refused; this one now refuses too.
  • Also in this release. The Missions board groups sessions by the mission they belong to, hides missions with nothing in them, and always tells you how many there are. Dictation no longer carries a finished recording into a session you have since moved on from - the guard now arms from both ways of starting to speak. The root folders caption says what actually happens: discovery is the local scan. And workflow run accepts the short run id it prints to you, while a web page answer is never mistaken for data.

v2.0.0 - August 6, 2026

On 5 August every session on every machine was locked out at once. The cloud Gateway was older than the app talking to it, so it refused each session's credential, and every command an agent ran answered "missing or invalid token". The outage lasted hours rather than minutes because nothing said so - the Home page showed no problem, and the error the command line printed blamed the credential, which was fine all along. That is what this release fixes.

  • The Home page shows a red Sessions row when the Gateway will not accept this Director's session keys, and says that it affects every session rather than one. Previously that state produced no row at all, so the one screen built to surface it was blank while the whole fleet was locked out.
  • The command line no longer blames your credential. A refused session key now explains that the Gateway may simply be older than the app - and says which line in the log tells the two apart - instead of asserting that your token is wrong. It deliberately does not guess which cause applies, because it cannot tell from where it stands.
  • The app asks the Gateway what it can do the moment it connects, and says plainly in its log when the Gateway is missing something it needs. Before, it discovered this one failed call at a time, from an error carrying no version and no detail.
  • Sessions no longer go permanently silent. A session could stop speaking forever with nothing reporting a fault - its rail sat on "Preparing voice" indefinitely, it was never played, and no error was raised anywhere. The cause was a corrupted internal pointer: something could overwrite a session's record of its own transcript with a value that was not a transcript at all, after which the session could never be narrated again. Running DevThrottle's own test suite from inside a live session did exactly that, which is how it was found. Both halves are fixed, and a session already damaged this way is repaired by restarting it.

If you run your own Gateway, update it as well as the app. This release changes what the app asks the Gateway for. An older Gateway will still work - that is tested in both directions, and the app now says clearly when it happens - but the fleet features are only fully available once both sides are current.

v1.9.11 - August 5, 2026

Your plan now includes the AI features, the phone recorder lasts all day, and the Windows application finally carries the current mark.

  • The AI features are included in your plan - no credits needed. Dictation, spoken replies, session naming and the Wingman come with DevThrottle Pro and with the 14-day Pro trial, and the app no longer asks you to add credits for any of them. Dictation and voice work on a brand-new account from the first minute, with no balance to top up. The Wingman, session naming and dictation cleanup run on DevThrottle's included models, and the model settings offer exactly those models, so a saved setting can never route your included features onto paid API models. If your trial has ended and you have no subscription, the app says so plainly and points you to the pricing page rather than asking you to buy credits for features credits do not buy. Prepaid credits remain what they always were: optional, and only for calling the DevThrottle model APIs directly with your own API key.
  • The phone recorder lasts all day. Recording no longer stops at a default time cap, keeps capturing while you navigate between screens, and shows a recording indicator on every screen. It holds a wake lock and asks Android to exempt it from battery Doze, so long recordings are not silently killed in your pocket. If a recording ever has to be cut short, it is cut short loudly - you are told, instead of discovering a truncated file later.
  • The Windows Director shows the current mark, not the old name. Every surface had moved to the new mark except the Windows executable, which still carried the old two-C icon in the taskbar, Alt+Tab, the title bar and the installer's file properties. Windows and macOS now match, and the icon carries nine drawn sizes instead of four, so it no longer looks soft at taskbar scale. Windows caches application icons aggressively: if a pinned shortcut still shows the old mark after updating, unpin and re-pin it, or sign out and back in.

v1.9.10 - August 5, 2026

A single fix: the Handovers list in the New Session dialog now shows your newest handover first.

The tab ordered documents by their filename rather than by their date. Handovers written by the product itself are named for what they are - a session move, a rebuild manifest - while the ones you write are named for the day and minute they were written, and sorting those names as text floated every name beginning with a letter above every name beginning with a date. The result was a list that looked sorted but was not: a handover written minutes ago sat thirteenth of a hundred and forty-three, below a dozen machine-written files, and the date shown against each row ran out of order the whole way down - so the one column you would use to find your document was the one column you could not trust. The list is now ordered by that same visible date, newest first, which is how the Cockpit has always shown it. Reading the list is also no longer done on the interface thread, so opening the tab with a few hundred handovers no longer briefly holds up the window.

v1.9.9 - August 5, 2026

The portless release. Until now both the Director and the launcher listened on a local network port, and agents could reach the fleet two different ways - through the Gateway, or directly through that port. Neither listens any more: everything an agent does now goes through the Gateway, one door, always.

  • Windows will not ask about the network on first launch, and cannot start asking again. The security prompt that appeared on top of the setup wizard, swallowing the clicks meant for it so a new install looked frozen in its first minute, was caused by the Director opening candidate ports to test them. v1.9.8 stopped the prompt by narrowing what that code touched; this release deletes the code outright, so the cause is gone rather than avoided.
  • Your agents stop having a wrong door to find. An agent that can reach the fleet two ways will eventually use the wrong one, and documentation does not fix that. There is now one way, so there is nothing to choose - and the product stopped shipping agents instructions that pointed at the old door. A machine that never accepted a connection cannot have one guessed at, scanned, or exhausted.
  • A security fix you did not ask for. Skill, workflow, schedule and mission commands used to read your account-wide credential from disk and present it, which meant any agent running one of those commands held authority over your entire account, on every machine - true of every release before this one. Each session now gets its own credential instead: bound to that session, limited in what it may call, expiring, and revoked when the session ends. An agent can still change how the product behaves - settings, handovers, sessions, missions - but it cannot change who is allowed in. Device enrolment and account identity are refused to it.
  • What you will notice day to day. Fleet-wide commands are slightly faster, since the local hop is gone. A session reading its own terminal is slower - roughly a third of a second to under a second against a hosted Gateway - because what used to be a local read is now a round trip. With no Gateway reachable, agent tooling does not work: a deliberate trade, not a regression, and the error says so plainly and names the self-hosted gateway as the answer. Starting, stopping and updating the application still work with the Gateway down, because process lifecycle never asks the Gateway anything.

Update the launcher with or before the Gateway. A launcher older than this release registers normally but cannot be commanded by an upgraded Gateway, because commands now travel down the connection the launcher itself opens; if that state occurs, the refusal names the cause rather than failing vaguely. Stated honestly: the Director still opens a local listener during interactive sign-in, to receive the callback from your browser - loopback-only, lasting as long as the sign-in, and carrying nothing an agent can call. The Director runs without a listening socket; it is not that it never opens one.

v1.9.8 - August 3, 2026

Sessions can now move in and out of missions while they run - shipped quietly in v1.9.7 and announced here - and a brand-new Windows machine's first minute no longer looks broken.

  • Move any session in and out of any mission. The v1.9.7 release included this and its notes never said so, so it is announced here. A session no longer has to be born into a mission: attach any running session to a mission, move it between missions, or detach it entirely - from the command line, with no restart and no respawn. cc-devthrottle mission attach attaches a session, or moves it if it already belongs to another mission, and tells you which mission it left; --with-children also brings along every session the target controls, all the way down; cc-devthrottle mission detach returns a session to belonging to no mission, the ordinary state. The session's workflow seat moves with it, so a session shown under one mission is never quietly governed by the conduct of the one it left, and a seat you chose yourself at spawn is preserved. Sessions spawned by a controlling session now also inherit that session's mission by default, so a team stays a team without anyone remembering a flag. One honest limit: a running agent keeps the instructions it was handed at birth, so after a move the command tells you exactly how to ask the session to fetch its current conduct.
  • The setup wizard no longer appears frozen on a brand-new Windows machine. Windows showed its firewall security prompt directly on top of the wizard's first button, where it silently swallowed every click aimed at it - no error, the product simply looked broken in its first minute of use. DevThrottle no longer does the thing that made Windows ask: it now checks candidate ports on the machine's internal address only, so the firewall prompt does not appear at all.
  • Browser profiles is one clickable row again. The entry in the Director's side rail used to unfold into a list of every profile with its own Start link, taking a third of the visible rail. It is now a single row showing the profile count and a green dot when at least one is running; clicking it opens the Browsers settings screen, where all the actions already lived.
  • A logging fault can no longer take down the work that was being logged. Stopping and restarting the application's log writer left it in a state where every later log line threw an error into whichever operation happened to be logging - so one defect surfaced as several unrelated, unreproducible failures. The writer is now replaced rather than revived, and a log call that cannot be accepted is dropped and counted instead of thrown. This one fault was behind most of the sporadic test failures seen on the local gate.

For people running the source, two test-suite fixes make the local gate more trustworthy: a backoff test now measures the code's behaviour rather than the machine's load at that moment, and a test that takes the machine-wide gateway lock is kept out of the parallel run, where it could stall the whole run indefinitely. Known and not fixed here: the Director's large-object heap still grows on an instance left running for days, a vault catalog scan over a synced folder can run away (diagnosed, not fixed), and four repository views still show a failed git read as an empty result rather than saying the read failed.

v1.9.3 - July 31, 2026

A security release. The Director's local control interface now requires a credential, and terminal session recording is off unless you switch it on.

  • The local control interface requires a credential. Anything on your machine that talks to the Director - the command line, hooks, the launcher, the settings tools - now presents a credential it is given automatically, and requests coming from a web page in your browser are refused. The tools that needed credentials were updated in the same change, so there is nothing for you to do.
  • Terminal session recording starts off. It used to record by default and keep everything indefinitely. It is now a visible setting that starts off, recordings are deleted when their session is removed, and recordings left behind by earlier versions are cleaned up the first time this version starts. If you have old session recordings you want to keep, copy them out before you upgrade.
  • The download comes from DevThrottle's own storage. The download link on this site used to point into GitHub's release storage; the release pipeline now publishes it directly.

v1.9.2 - July 31, 2026

The main window fits the screen it opens on, a first install stops reporting its own success as a failure, and sessions stay in the Director when a machine's connection wobbles.

  • The window fits the screen. The main window could open larger than the display it was on, putting the Settings button off the right edge - which quietly broke every "you can change this later in Settings" the setup wizard says. The window is now measured against the screen's usable area and centred before it is shown, down to a 1280x720 display.
  • A first install stops calling a healthy launcher dead. On a clean machine the launcher unpacks itself on first run, which took longer than the installer's fixed twenty-second allowance - so the install ended on an error while the launcher was answering perfectly well. Waiting is no longer treated as a verdict.
  • Sessions survive a wobbly connection instead of vanishing from the Director, and renaming a Director now carries everywhere.

v1.9.1 - July 30, 2026

The app stops getting slower as sessions pile up, and one number was removed on purpose.

  • The context percentage is gone where it was guessed. The gauge divided real usage by a context window inferred from the model's name, which was wrong for the model DevThrottle is most often run with - a session with roughly 800,000 tokens of room left could read 92 percent in red. DevThrottle now shows a context window only when the agent itself reports one; where it does not, you get the raw token count with no percentage. A missing number is an annoyance, a confident wrong one gets acted on.
  • The app stops feeling slow as sessions accumulate - three costs that grew with every open session were measured and cut - and buttons answer the moment you click them.
  • Auto-update says which situation you are in rather than leaving you to guess.

v1.9.0 - July 30, 2026

DevThrottle speaks French and Spanish, and several things that used to fail quietly now say so.

  • Pick a language and everything spoken follows it. DevThrottle speaks from four places - the narration of what a session just did, the direct reply when you ask it something, the in-product help, and the assistant. The speaking rules now live in one place, so a language reaches every spoken path. What is translated is what DevThrottle says: the on-screen text stays English, deliberately, for now.
  • The voice choice is not evenly matched, and the screen says so. English has twenty-eight voices, Spanish three, French exactly one. English is unchanged unless you choose otherwise.
  • Car Mode is out of the product for now. The assistant that shared its underlying brain stays - it is the same thing that answers you in the app.
  • A prompt that was never delivered is surfaced instead of being recorded where nobody would look.

v1.8.1 to v1.8.8 - July 27 to 30, 2026

A fast line of releases between the work-history release and 1.9. The ones worth knowing about:

  • Updating became something you can check (v1.8.8). DevThrottle has updated itself for a long time; from this version something is left behind to verify that the update worked, and to put the previous version back when it did not.
  • Agents launch ready to work (v1.8.6) instead of asking for approval on every call, and a whole skill directory can be held and placed where each agent looks for it.
  • The installer offers Git (v1.8.3), which the app needs to read repositories at all, and the macOS file-search guidance now names the path to grant access to.
  • Every session records who started it (v1.8.2), and History shows the shape the work had rather than a flat list. The screenshots folder you set is the one you see.
  • Cockpit dictation matches the phone (v1.8.1) - live level bars and a Speak button that sends without making you wait on it.

v1.8.0 - July 27, 2026

Every session now tells you its story: when it started, how long it has been open, how long it has been waiting on you, and what it did - live on the session cards, and kept in a durable work history you can read back across all your repositories.

  • Session cards answer the supervision questions. Every card in the Cockpit and on the phone now shows when the session started, how long it has been open, how long it has spent waiting on you, and how many turns the agent has completed - ticking live. Waiting time turns amber after an hour and red after four, so a neglected session looks neglected.
  • Work history. DevThrottle keeps a durable record of every session as it runs - what it was asked to do, how it ended, and a summary of what it built. The new History page shows your work across all repositories, grouped by repository and day, and survives crashes and power cuts because the record is written while the session runs, never at the end.
  • First-run wizard. Setting up a new machine is now one guided journey instead of a chain of dialogs - it finds your coding agents, offers to install what is missing, locates your repositories and screenshots, and explains each step as an offer, never a demand.
  • Fleet Assistant. Ask questions about your whole fleet in plain language - by chat or voice, from the Cockpit or the phone - without being tied to any one session.
  • Trustworthy voice input. Test your microphone and test transcription from Settings on both surfaces, and DevThrottle now measures every dictation's microphone quality in the background and shows the detail in a Transcription Health view, so a bad microphone gets caught before it ruins a day of dictation.
  • One Settings page. The phone and the Cockpit now show the same Settings - same tabs, same names, same cards - so a setting you find on one surface is where you expect it on the other.
  • A 14-day Pro trial for every new account.

Also in this release: voice mode is a real switch with the way out on every screen, and the voice queue plays the waiting sessions first-in-first-out with big buttons on top; the phone's voice recorder is back, with durable segments that survive interruptions and transcripts on both surfaces; the mobile Snooze button lets you pick a length, and a session returning from an expired snooze is labeled so you know to go see why it went quiet; repositories are a first-class subsystem - an always-current monitor, safe worktree and branch cleanup with an orphaned-worktree reaper, and a worktree that an open session is using is never touched; the shared workflow library lets you browse the built-in workflows, switch them on or off per account, and clone one to customize it; each session's uncommitted file count shows in the roster, so you can see who is sitting on unpushed work; the session roster puts Sessions first in the rail, and the Needs-you group is a waiting line with the longest-waiting session on top; the phone says nothing about the network unless something is actually wrong; no user is ever shown a bare status code - errors arrive as plain sentences, and browser errors also land in the Gateway log so they can be diagnosed after the fact; the About page reports the Gateway, Cockpit, and mobile app versions; one Director executable can run several named profiles, and a staged update applies itself automatically when no sessions are running; scheduled runs name their sessions after the schedule and fire time, and asking an agent to clear a session's context now asks you first; and many reliability improvements to the hosted service, including safer deploys with a warmed standby, honest network verdicts, and per-account serving of settings, statistics, and transcripts.

v1.7.4 - July 23, 2026

The macOS setup wizard now mirrors the Windows one, the hosted gateway now scopes every surface by account, and dictation is more reliable and more honest when something goes wrong.

  • The Mac setup wizard, rebuilt to match Windows. A cleaner Welcome screen, the obsolete Standard/Developer choice and the separate Gateway step are gone, and uninstall is fully ported - so setting up on a Mac is the same simple flow as on Windows.
  • Strict account isolation on the hosted gateway. A large hardening pass makes every hosted surface account-aware - directors, sessions, voice, devices, stats, and keys all now enforce account-scoped authorization - and per-device keys are stored hashed at rest.
  • More reliable, more honest dictation. Dictation keeps your last word instead of clipping it, pads trailing silence, and warns you when a send drops audio instead of shipping silence - across the desktop, the Cockpit, and your phone.
  • macOS tools fix. The command-line Python tools now find their config on macOS, shipped through the tools bundle.

Also in this release: the desktop status box shows which gateway you are on and its connection state; Send-direct from the Cockpit Speak box sends the transcribed text; scrollbar thumbs draw at full thickness instead of a hover-only sliver; and many correctness and test fixes across the fleet.

v1.7.1 - July 21, 2026

You can now change which gateway a Director connects to right from the app - disconnect and reconnect to a gateway on your own machine or the hosted one, without editing any files.

  • Change gateway from the app. Settings -> Gateway has a new "Change gateway" button: it disconnects this Director and takes you back to the connect screen to pick another - your own machine or the DevThrottle hosted gateway. No config files, no command line.
  • One-click hosted connect. The "Use hosted" choice is live - sign in with your DevThrottle account in the browser and the machine joins the hosted gateway under your account, with no address to type.

Also in this release: if a new connection does not take effect immediately, the app now tells you clearly instead of sitting on "Connecting".

v1.7.0 - July 21, 2026

Sign in with your DevThrottle account and control a hosted cc-director from the Cockpit and your phone - on the shared hosted gateway, with each account seeing only its own work.

  • Sign in on the hosted gateway. Open the Cockpit or the phone app, sign in with your DevThrottle account, approve the device once, and land in your own hosted Cockpit - no tokens to paste. Everything you see is scoped to your account.
  • The Cockpit opens from the gateway address. Clicking Cockpit on a hosted director now opens the real hosted Cockpit in your browser. The Cockpit and the phone app are both reached from the one gateway address - its cockpit and mobile paths - the same way whether the gateway is hosted or running on your own machine.
  • Strict separation between accounts. The gateway works out which account a request belongs to from the signed-in identity alone, never from anything the browser or app claims, and refuses by default anything it cannot place. One account's directors, sessions, voice, and usage stay entirely separate from another's.
  • A hosted gateway is a paid gateway. Signing a device in to the hosted gateway now requires an active subscription. A gateway you run yourself is unchanged and needs no subscription.

Also in this release: the phone app now lives at the gateway's mobile path, with the old address redirecting so nothing you have bookmarked breaks; the in-window Fleet Map was removed from the desktop app; voice recordings still uploading are cleaned up on an activity-aware schedule; and a plain-English guide to trying the hosted gateway is in the documentation.

v1.5.0 - July 16, 2026

The Gateway becomes the single source of truth for what each session is doing, you can install from the command line with no wizard, and the Gateway core gains the groundwork to run beyond Windows.

  • One honest picture of every session. The Gateway now decides each session's state and pushes it out, so the desktop rail, the Cockpit, and the mobile roster all show the same thing - including how long a session has been snoozed and when it is winding down - instead of each surface guessing on its own.
  • Install from the terminal, no wizard. A command-line installer sets DevThrottle up end to end from the terminal on Windows and macOS, and macOS gets a curl-based install that Gatekeeper cannot block. Command-line sign-in is Windows-only today; on macOS a machine joins your gateway with enroll instead.
  • Groundwork to run the Gateway anywhere. The Gateway now runs headless on Linux and macOS, proven in a Linux container, and ships with a Dockerfile you can build yourself. This is foundation work - the Gateway downloads are still Windows-only.
  • See what you have spent. New governance screens show your usage by day, week, and month, and each session's token spend is stored and sliced by hour and model.

Also in this release: the text injected into every new session is now a Gateway-owned setting you can view and replace; a self-imposed hold now goes through the Gateway and actually takes effect; Your Throttle stats recognize Azure DevOps remotes alongside GitHub; remote session spawn works over a tunnel-only connection; the move-session skill ships; and the Speak box opens instantly without ever opening a second copy.

v1.4.0 - July 16, 2026

A big reliability-and-visibility release: the fleet's voice is steadier, your stats now show which AI model did the work, and the desktop app gains a live fleet map.

  • See which model did the work. Your usage stats now break down by the AI model and the agent tool behind each turn, and each session's token spend is carried up to the Gateway, so you can see what you actually ran.
  • Live fleet map in the desktop app. Watch every session across your machines at a glance, click to select, with the supervisor spawn tree laid out.
  • Know who is speaking. The wingman says which session is talking before it reads a summary, so when you are listening without looking you always know who is speaking.
  • Steadier voice. A single slow moment on one session no longer silences narration for the whole fleet, and when speech genuinely fails you are told the truth instead of getting silence.
  • Pick a snooze length. The desktop and Cockpit menus now offer a list of snooze durations, not just one default.

Also in this release: the Gateway now runs as a background service with a simple Start and Stop tray, and first run no longer asks for a pairing code or a consent window; the mobile app's layout was reworked to sit correctly in the visible screen area, with play controls that mean the same thing everywhere; the Cockpit's settings are organized by topic, the session rail scans by icon, and workflows are served straight from the Gateway; many session-state corrections, so a session's colour and status always tell the truth; and more resilient dictation - a dropped dictation is now loud and gives your words back rather than failing quietly.

v1.3.0 - July 14, 2026

A reliability-and-honesty release: when something goes wrong you are told, and a session's state always tells the truth.

  • Honest failures. A dropped command now explains itself instead of hanging or returning a bare error, and writing into an agent's terminal tells you when it fails.
  • Session state you can trust. A working session is always blue, matching the spec, so a session's colour and status tell the truth.
  • Full prompt-and-reply logging. Every prompt and reply, for all agents, is recorded with where it came from.

Also in this release: the inbound network port was closed and Director Settings restored, removing a connection check that could only mislead; and a cleanup pass deleted dead code, corrected the public API reference, and removed documentation describing features that never shipped.

v1.2.0 - July 14, 2026

This release brings session rename and close back, fixes glitches on large replies, and adds full macOS support.

  • Session rename and close work again across the fleet.
  • No more glitches on large replies. Voice, Wingman, History, and the mobile session roster stop blinking when a reply is large.
  • macOS support. Mac builds, app-bundle placement, launcher start, and the command-line tools.
  • Clear All screenshots deletes the files on disk after a warning.
  • New Session picks the agent, not the model.

Also in this release: Tailscale is no longer required to install; a per-repository default for Open in Browser; Repos becomes a fourth tab of Your Throttle; the terminal verifies every prompt actually submits, not just large ones; snooze honors a requested duration; and fleet-wide "message all" is back.

v1.1.0 - July 10, 2026

This release gives your sessions real roles and missions, lets your other machines connect without opening a port, and makes voice dictation and long recordings far more reliable.

  • Session roles and missions. Every session now shows a role at a glance - Architect, Manager, or Worker - and related sessions group into a named mission. Roles are worked out automatically from how you start and connect sessions; you set the Architect yourself for the session that plans and oversees the work.
  • Connect other machines without opening a port (preview). Let your other computers connect to your main machine without opening or forwarding a network port - the other machine reaches out instead of waiting to be contacted, which is simpler to set up and safer. Opt-in and off by default for now.
  • More reliable voice dictation on your phone. Dictation holds your audio in a durable queue and keeps trying to deliver it, so a brief network problem or an app restart no longer loses what you said - with clear status instead of silent failure.
  • Long recordings and clearer transcription. Long voice clips are split at natural pauses and transcribed in parallel, and a failure now shows a plain-language message instead of a raw error.

Also in this release: a clearer signed-in version and self-repair in the phone app; fewer duplicate and stale notifications; Wingman voice fixes; a security fix that stops the Gateway leaking extra service keys; in-app image generation available again; and a simpler, more focused interface with several in-progress panels removed while they are finished.

v1.0.6 - July 6, 2026

  • Cockpit: major port of the Director experience to the new React Cockpit - session roster and rail, reply and action bar, fleet views, schedule, dictionary, and account pages.
  • Mobile: voice-mode audio player (resume, restart, seek), durable server-owned dictation upload (a refresh never loses recorded audio), and screens that stay awake.
  • Reliability: crash-safe Python tools install and Director self-repair of a broken shared runtime.

v1.0.0 - July 4, 2026

  • First stable release: the signed Windows installer line (Azure Trusted Signing) that ships from devthrottle.com today.

Before 1.0

The 0.9.x line was the pre-release run-up during quiet launch week. Its history is preserved in full on the releases feed.

Note
Pricing lives on its own pricing page. We keep prices public and never raise yours without telling you first.