DorkOS

Changelog archive

Older DorkOS releases (v0.1.0 – v0.115.0), aged out of the main changelog.

Older DorkOS releases, following Semantic Versioning. For recent releases see the Changelog.

[0.115.0] - 2026-10-15

DorkOS 0.115.0 lets your agents work without asking first, opens long chats on their newest messages, and keeps your computer awake while background helpers work.

Added

  • The Terms for DorkOS Cloud are now on the website at dorkos.ai/cloud/terms. They cover the paid services: who can use them, refunds, and what happens if something goes wrong. The pricing page, the site footer and the main Terms of Service link to them.

Changed

  • Agents now work on their own. A new install starts on Trusted: every area is Allowed except Safety limits and Reach & secrets, which still ask, and a chat edits files and runs commands without stopping to check with you. Careful, for anyone who would rather approve things by hand, is the other choice. Updating an existing install moves you to Trusted once and shows a one-time note, "Agents now work without asking," unless you had already chosen Careful or told DorkOS to keep asking you (DOR-2739)
  • Removing a package, deleting a scheduled task, and removing an agent now run and land in your activity feed on Trusted, instead of waiting for a card. Changing an agent's safety boundaries or what it runs on, and running a package from a folder, still always ask (DOR-2739)
  • On Trusted, your agents can message each other across projects by default. DorkOS turns this on once, the first time it starts; turning it off in Team → Access keeps it off from then on. A Careful install is left as it was (DOR-2739)
  • A schedule one of your agents proposes for itself starts running right away on Trusted, with a notification and a Pause button, instead of waiting for your approval. On Careful it still waits (DOR-2739)
  • A mini app your agent builds for you with create_extension turns on by itself on Trusted, bound to the exact folder and the permissions it asked for at the time. On Careful it still waits for you (DOR-2739)
  • On Trusted, your agents can change permissions too, and each change lands in the history with the agent's name. To keep a setting no agent can undo, set the Permissions area itself to Ask or Blocked. Installing or updating a package still asks, on any preset (DOR-2739)
  • A tool or script DorkOS can't place as one of your agents, and an agent whose turn someone outside your team started, still have to ask before an action with no undo or any change to permissions, on any preset (DOR-2739)
  • A new Telegram or Slack connection now lets its agent start conversations by default on Trusted (DOR-2739)
  • Every page of DorkOS starts with a smaller download. Settings and Scheduled tasks now load when you first open them instead of with the app, which trims about 7% off what each page downloads first. They are fetched quietly once the app is idle, so they usually still open at once.
  • A long chat now opens on its newest 150 messages, so it shows up fast however long it is. Press Earlier messages at the top to read older ones, 100 at a time. A link to an older message, from search or another chat, reads back until it finds it, up to about 2,000 messages back. The "New messages" line still lands in the right place.

Fixed

  • Agents can build extensions again. In a chat they only had the extension guide, not the tools to create, test or reload one, so asking an agent for a mini app went nowhere.
  • When DorkOS Cloud had a brief outage just as your credits token was due to renew, DorkOS stopped trying. Your next chat on credits then had to wait for a new token, or failed. Now DorkOS keeps trying, waiting a little longer each time.
  • Sorting the Tasks list by Last run now puts the task that ran most recently first. It used to sort by when each task was last edited instead. Tasks that never ran go last.
  • Your computer now stays awake while an agent's background helper is still working, and while the agent writes up what the helper found. Before, it could fall asleep as soon as the agent said "I'll report back". Other background work, like a server left running, keeps it awake for at most 20 minutes.
  • Your computer now stays awake for 3 minutes after the last piece of work ends, up from 30 seconds, so it no longer dozes off in the gap between one reply and the next.
  • If your computer refuses to stay awake, DorkOS now tries again on its own, and switching the Sleep setting off and on tries again right away. Before, the switch was greyed out until you restarted DorkOS.
  • The Sleep setting now says plainly that closing the lid usually still puts the computer to sleep, and that the screen still locks.

Note for people upgrading

  • If you see the "Agents now work without asking" note, Got it keeps your agents working the new way; Keep asking me switches you to Careful and keeps anything you set to Blocked, so your agents keep asking first. Either answer, the note shows once and does not come back (DOR-2739)

[0.114.1] - 2026-10-14

DorkOS 0.114.1 keeps the app quick and light while your agents work. Chats open and switch without waiting, coming back to the tab is quiet, and DorkOS does far less busywork in the background.

Added

  • If you turn on feature-usage data, DorkOS now also says when you finish or skip setup, and once a day that it is running. Both are off until you turn that channel on, like every other event, and stop the moment you turn it off.
  • An install command copied from dorkos.ai can now end with a short install tag, like --ref=k3j4mnb8x2qa.hn. It is a random code made for that one copy, plus the campaign tag of the link you came from. DorkOS keeps it on your computer and sends it only with the "finished setup" event, only when feature-usage data is on. The tag is only a label on two events; it never links the app to a website visitor or an account. The website adds a tag only for visitors who allow analytics cookies and do not send Do Not Track or Global Privacy Control. The privacy and telemetry pages say exactly what it holds.

Changed

  • Opening a chat you have already seen in the sidebar now shows it straight away, instead of waiting for the server to answer first. DorkOS still checks with the server in the background, and tells you if the chat is gone.
  • When you click an agent, its row lights up at once, even while DorkOS is still finding out which chat to open. After your computer wakes from sleep, clicking an agent no longer waits for a fresh list either.
  • Switching back to the DorkOS tab no longer asks the server again for every list and badge on screen, so coming back is quiet and fast. Live updates keep most of them current. If the tab was hidden for more than half a minute, DorkOS catches up once when you return. Things that change outside DorkOS, like your files, still refresh when you come back.
  • DorkOS asks the server far less often while you just look at the screen. The relay activity list, agent health and your community spaces follow live updates instead of re-asking every few seconds. Most changes show right away. A few can take up to a minute, like a chat app quietly losing its connection.
  • Going back to a chat you opened recently no longer downloads its whole history again; it shows what the app already has. When the agent finishes a reply, DorkOS fetches only that last exchange instead of the entire chat, so long chats stay quick turn after turn.
  • A long chat stays smooth while the agent is replying. Before, every new word redrew every message on screen and rebuilt the whole history. Now only the reply being written redraws, and the history is prepared once.
  • Replies stream more smoothly in very long chats. Each new word used to rearrange every message in the chat; now only the newest messages are rearranged, about 15 times less work in a 3,000-message chat.

Fixed

  • Long chats open fast. DorkOS used to read a chat's whole history from disk every time you opened it, and after every reply. A very long chat could freeze the whole app for a moment each time and use hundreds of megabytes of memory. Now DorkOS remembers what it already read and only reads what is new (DOR-2889)
  • DorkOS uses less memory the longer it runs. Every Codex, OpenCode or Doe chat you opened stayed in memory until DorkOS restarted. Now a chat nobody has used for 10 to 20 minutes lets go of that memory, and comes back as normal when you open it again. Each chat's replay buffer is also half the size it was (DOR-2897)
  • DorkOS answers a little faster everywhere. It used to read and check your whole settings file from disk every time it looked up a setting, several times for every request. Now it keeps the last copy in memory and reads the file again only when it changed, including when you edit it by hand or with dorkos config set (DOR-2898)
  • DorkOS does less busywork in the background. Every five minutes it checked all your scheduled tasks against their files, and rewrote every one of them and reset its timer, even when nothing had changed. Now it only touches a task whose file changed, or whose timer had gone missing (DOR-2899)
  • DorkOS no longer rewrites its agent list and message rules every five minutes for nothing. Its regular check of your agents rewrote each agent's record and saved the message rules file about 30 times in a row, even when nothing had changed. Each save also made DorkOS reload that file. Now it writes only when something actually changed (DOR-2900)
  • DorkOS's log files stay a sensible size while it runs. A log file used to be split by size and day only when DorkOS started, so a server that stayed up wrote one file without limit; one reached 53 MB. DorkOS now keeps the last 14 days of logs, up to 200 MB in all, and each log line is about eight times cheaper to write (DOR-2902)
  • DorkOS no longer pauses for a moment once a day while it saves its daily backup of your data. It now copies the database a little at a time and keeps answering in between (DOR-2906)
  • When DorkOS Cloud is down or doesn't recognize your computer, DorkOS now waits longer between tries, up to 5 minutes for new events and 30 minutes for credits, instead of asking every 30 or 60 seconds for hours and filling the log with the same warning. It goes back to asking often as soon as a try works or you link again (DOR-2903)
  • Building the message search index is lighter on DorkOS. It no longer lists the thousands of helper-agent transcripts it never indexes, and it saves a very long chat to the index a piece at a time instead of all at once. If DorkOS stops partway through a long chat, it carries on from where it got to (DOR-2904)
  • On macOS, DorkOS no longer keeps a file open for every chat on your computer just to notice when one changes. It held hundreds open at once, which could run into the system's limit on open files. Now it watches the folders instead, and checks once a minute for any change it missed (DOR-2907)
  • Stop the experimental Agent computer when you quit the desktop app, keeping its saved files.

save also made DorkOS reload that file. Now it writes only when something actually changed (DOR-2900)

  • DorkOS's log files stay a sensible size while it runs. A log file used to be split by size and day only when DorkOS started, so a server that stayed up wrote one file without limit; one reached 53 MB. DorkOS now keeps the last 14 days of logs, up to 200 MB in all, and each log line is about eight times cheaper to write (DOR-2902)
  • DorkOS no longer pauses for a moment once a day while it saves its daily backup of your data. It now copies the database a little at a time and keeps answering in between (DOR-2906)
  • When DorkOS Cloud is down or doesn't recognize your computer, DorkOS now waits longer between tries, up to 5 minutes for new events and 30 minutes for credits, instead of asking every 30 or 60 seconds for hours and filling the log with the same warning. It goes back to asking often as soon as a try works or you link again (DOR-2903)
  • Building the message search index is lighter on DorkOS. It no longer lists the thousands of helper-agent transcripts it never indexes, and it saves a very long chat to the index a piece at a time instead of all at once. If DorkOS stops partway through a long chat, it carries on from where it got to (DOR-2904)
  • On macOS, DorkOS no longer keeps a file open for every chat on your computer just to notice when one changes. It held hundreds open at once, which could run into the system's limit on open files. Now it watches the folders instead, and checks once a minute for any change it missed (DOR-2907)
  • Stop the experimental Agent computer when you quit the desktop app, keeping its saved files.

[0.114.0] - 2026-10-13

DorkOS 0.114.0 makes the app fast again when your agents are busy: switching agents and tabs no longer freezes, and messages send without timing out. Mini apps can now show only where you choose, and agents work without the old posting limits, while turns started by strangers stay limited.

Added

  • Choose where a mini app's right-panel tab shows: everywhere, or only beside the agents, channels and pages you pick. Set it in Settings → Extensions under Panel tab shows (DOR-2867)
  • Hide a mini app's tab in a channel, in chats with one agent, or on one page with Hide here in the panel's ⋯ menu, and bring a hidden one back with Show here (DOR-2867)
  • Open a mini app's full page straight from its panel tab, with Open full page in the same menu (DOR-2867)
  • Mini apps can say where their tab belongs by default with showIn, and agents can set where a tab shows for you (DOR-2867)
  • Reach your mini apps' pages (the app calls them extensions) from the new Add-ons section at the bottom of the sidebar. Each page shows its own name and icon, and the one you are on is marked. It stays there when you open a space. On a phone it is in the All tab (DOR-2868)
  • A DORKOS_CLOUD_API_URL setting, to send only those requests somewhere else
  • The website now counts desktop app downloads, including ones from links on other sites. Each count carries a random one-time ID, no cookie and not your IP address, and none is made when your browser asks not to be tracked. The privacy page says so.
  • Try a separate Linux desktop through the Agent computer experiment on Apple Silicon Macs. Turn it on in Settings → Experiments, then open Team. View the desktop, take control, and stop it without losing its saved files. The experiment is off by default; live account sign-in and agent replies are not yet confirmed.
  • After your first run sets up an AI, the sidebar offers to join the DorkOS community, right after it asks your name and your work. Join opens the join form with the address filled in, and Not now hides it for good. It appears only once the community space exists (DOR-2873)
  • The person running a Community server can open sign-up only to people who live in certain countries, with COMMUNITY_ALLOWED_COUNTRIES (for example US). Everyone who creates an account then ticks a box that says "I live in the United States" first, whether they sign up with a password, Google, GitHub, or single sign-on, or join an open space. People who already have an account are never asked. A server behind a proxy that adds each visitor's country can also set COMMUNITY_COUNTRY_HEADER, so a sign-up from a country outside the list is turned away. Leave both unset and nothing changes (DOR-2847)

Changed

  • Agents now have the same freedom as people in rooms and notes. An agent can post as many messages in one turn as it needs, change a room's canvas more than three times in one turn, react more than 20 times an hour and send you more than 10 notes an hour. Agents are still asked to keep it short, and everything they post stays in the room for you to read. The safeguards that stop agents replying to each other forever are unchanged (DOR-2739)
  • The rooms.maxPostsPerTurn and rooms.maxCanvasOpsPerTurn settings are gone. Upgrading removes them from your config file (DOR-2739)
  • The "Running unattended at full power" banner is gone, and so is the Control Center line that said the same thing. Full power is the normal way agents work now (DOR-2739)
  • Saving a task or approving a schedule at Full autonomy no longer opens a confirmation first. Setting a Telegram or Slack connection to Full autonomy still asks, because strangers can message that chat (DOR-2739)
  • dorkos task create no longer prints a "Runs at full power" line (DOR-2739)
  • When someone outside your team starts a turn, for example with a Telegram or Slack message, that turn can post at most three messages in rooms and send you at most three notes. Your own agents' turns are never counted. A Codex or OpenCode agent posting into a room other than the one it is answering is not counted yet (DOR-2739)

Removed

  • The Add-ons list in the phone's You tab is gone. Find those pages under Add-ons in the All tab instead (DOR-2868)

Fixed

  • On a fresh install, requests for DorkOS credits, your balance and your plan now go to the DorkOS Cloud service. They went to the dorkos.ai website, which can't answer them, so every one failed (DOR-2673)
  • A brand-new install no longer says "While you were away" a few seconds after setup. Your first daily summary arrives the morning after you set DorkOS up.
  • On your first day, the sidebar shows one "Getting started" list instead of two. The card at the bottom waits until the list at the top is done, and the questions about your name and your work still get asked meanwhile.
  • Your first chat with DorkBot is listed under DorkBot's name, not "Session". A chat with no known agent now says "Chat".
  • One unfinished upload no longer keeps a deleted space stuck "deleting" for good. The server now waits at most a day for such an upload, then finishes removing the space.
  • A space server's log now says when a space is more than two days past its deletion date and still not gone.
  • One chat the app can't read no longer empties your recent chats list. That one chat is left out, and the rest of the list shows as usual.
  • When a space holds your message (you're muted, slow mode is on, or you haven't accepted the rules yet) and you send it again, its files are no longer uploaded a second time. The files you already uploaded go with it. This works in the DorkOS app and on the space's web page, even if you edit the message first.
  • A Codex or OpenCode chat started in an agent's folder now answers. Before, every message failed with "couldn't confirm this chat can use connected apps", and trying again never helped. When a chat has no recorded agent, it runs without connected apps instead.
  • While a space is on hold, you can now accept its rules from the DorkOS app, just as you already could on the space's web page. Accepting the rules changes nothing anyone else sees, so a hold doesn't stop it.
  • DorkOS no longer slows to a crawl while your agents are working. When any chat changed, every open window asked again for every agent's chats, and those requests piled up until switching tabs or agents took seconds and messages failed to send. The app now asks at most once every few seconds, asks that arrive together share one answer, and a new chat still shows up in your recent chats right away.
  • If someone asks to take over a space you own, DorkOS now tells you even while spaces are switched off. It checks in the background about once an hour.
  • DorkOS no longer slows down or freezes when you have a lot of Codex history. Switching agents and tabs stays quick, and messages send without timing out.
  • Opening a chat no longer searches every Claude project folder on your computer each time. DorkOS remembers where each chat lives after the first look, and checks the folder you opened it from first. On a computer with many projects and several Claude accounts, this saves a noticeable pause on every chat you open (DOR-2892)
  • The app stays quick while your agents work. Each time an agent wrote to a chat, DorkOS re-read that project's chats and rebuilt your Recent list from scratch, over and over. Now a chat that is being written to updates its row every few seconds, and the Recent list is rebuilt only when a chat is added or removed. A chat that an agent writes to without pausing now keeps its row up to date, instead of freezing until the agent stops (DOR-2893)
  • DorkOS no longer reads through your chats every five minutes for nothing. A background check listed all of them to clean up the canvas of deleted chats, even when no chat had been deleted. Now it only looks when there is something to clean up (DOR-2905)

[0.111.0] - 2026-10-12

DorkOS 0.111.0 fixes who gets credit for a room post: a post from a chat an agent started is now stamped with that agent, never with you. A chat can also be set to never ask, and agents can find the right app for a job.

Added

  • A Claude Code chat can now be set to Never ask. Turn it on under Ask first on the chat's trust dial. The agent runs only what you have already allowed, and refuses everything else instead of stopping to ask you. It never gets to do more than Ask first lets it. Only you can turn it on: no DorkOS tool lets an agent switch a chat to it, and a chat set to it cannot start another chat that would ask you. Codex and OpenCode chats don't offer it
  • An agent can now describe a job in plain words, such as "summarise my inbox", and get back a short list of apps that could do it, with the ways to connect each one (DOR-2854)
  • When an agent looks up an app, it can now see whether you have already given it an account there. When it looks up a marketplace package, it can see whether that package is already installed for it. If DorkOS can't tell, the agent is told that instead of being told no (DOR-2854)

Changed

  • Agents are now told to mention a connection or a DorkOS package when it would clearly make a task go better and you do not have it yet: what it is, why it would help, and that you decide on the Connections or Marketplace page (DOR-2852)
  • They are told to mention it only once, to leave it out when it would change nothing for the task, and in a shared room to bring it up only if someone asked
  • The top Autonomy level is now called Self-starter instead of Rogue. A Self-starter agent takes the next step in its job before you ask, but still waits for your yes on things that need one
  • The two top Chaos levels are now called Bold and Daredevil instead of Reckless and YOLO. Both still move fast on their own work, but neither force pushes, drops tables, deletes what it didn't make, or skips the checks that protect your data
  • Every Autonomy level now has clearer instructions, including the default. No level can make an agent skip asking first anymore. A lower level only makes it check in more. Your saved slider positions stay the same

Fixed

  • In a chat that answers for an agent in a channel, a message another agent or person posted in that channel now shows their name and face, with the channel it came from. Before, it looked like you wrote it
  • Your own channel posts in that chat still show as yours, with the channel beside them

Security

  • Room posts from a chat an agent started are now stamped with that agent, never with you. Before, a chat an agent started in a folder of its own saved its channel posts under your name, so they could look like your approval
  • A chat with no agent behind it can no longer post, react or act in channels as you. It is refused instead

[0.110.0] - 2026-10-12

DorkOS 0.110.0 gives a new DorkOS a simple start: one screen, a short way to connect your own AI, and a first job from DorkBot in #team. Connecting an app like Gmail now shows both ways in, and messages between chats start the moment a chat is free.

Added

  • Extension authors can now serve an extension's own API with a fetch handler: a function that takes a standard web request and returns a response. Any handler of that shape, such as a Hono app, works as it is. It runs inside DorkOS on Node, so code that needs Bun or Deno's own features does not. The Express router still works, and both can be used together
  • People who run a Community server can now give one of its reserved web addresses, such as official, to a new space of their own. It takes a key made for that one job and a written reason, and the server keeps a record of who gave the address out and why. Everyone else is still refused every reserved address, and addresses that are pages of the server can never be given out. See "Giving a reserved web address to a community" in the server's operations guide

Changed

  • Every agent now follows the same rules for when to act and when to ask first. It does routine work and anything you asked for without checking in, and tells you what it did
  • Before an agent sends something people outside your team will see, spends money or deletes things, it asks first unless you asked or it is its job. Promises to customers, signing up for things, spending past its limit and giving someone new access always need a yes from you or the agent's manager
  • When an agent gets stuck on something only you can do, like a sign-in, it no longer just says it can't. It does every step it can, asks DorkOS for the access, suggests one way forward, and finishes once you choose
  • These rules apply even when an agent's DorkOS knowledge setting is off, and in chats that are not tied to an agent
  • A new DorkOS starts with one screen. Use my own AI lists every way in, one row each: an OpenAI, Anthropic or OpenRouter key, an AI app you already sign in to, or any other service. Paste a key and DorkOS picks the model. A model on your own computer is listed too, but it can't reach a first reply yet (DOR-2783)
  • Continue with DorkOS is on the same screen and signs you in with the code already filled in. Finishing that path with a card still waits on DorkOS Cloud, so for now use Use my own AI (DOR-2783)
  • Every path ends in #team, where DorkBot says hello and offers a first job: Build me a tracker for my customers, Make a daily plan board, or Something else. One press, and DorkBot starts on it. Skipped the account? The same spot opens the two ways to connect AI in Settings instead (DOR-2783)

Removed

  • The old first run is gone: the setup scan, the power-level step and the scripted chat with DorkBot. Set your name and the kind of work you do in Settings › Profile. Full power is still offered the first time an agent needs it (DOR-2783)

Fixed

  • The first time you connect an app like Gmail, DorkOS now offers both ways in: use a DorkOS account (sign in or create one), or paste your own Composio key. Before, someone without a DorkOS account saw only the key and could get stuck
  • If your DorkOS account is linked but can't connect apps right now, you can now link it again from that same step, or use your own key instead
  • When you ask an agent to connect an app like Gmail and DorkOS can't reach it yet, the agent now tells you your choices right away: sign in to a DorkOS account (or create one), or use your own Composio key. It asks which you want and helps you do it. Before, it waited quietly while you were left to work it out alone
  • When an agent asks you for access to a service, it now looks up that service's exact name first, so the request names the right app. Agents are also told that signing in to a service's command-line tool gives DorkOS no access (DOR-2236)
  • A message one chat sends another now starts as soon as that chat is free. Before, if the chat had finished its turn but was still wrapping up background work, the message could sit in its queue for up to five minutes after the work ended, even after an interrupt
  • A chat sending a second message to a busy chat now hears "queued" at once. Before, after a long wait, it could be held for up to five minutes before it heard back
  • A chat started from a room conversation is now told to report in the room. Before, it was told to message a chat that cannot take messages, and every try was refused
  • In a direct message that still lists a removed agent, the other agents are now told it is retired and will not reply, so they stop waiting on it. The app already showed it that way
  • A chat that hit an error in its very first moments could send two "stopped on an error" phone pings, or one after it had already recovered. It now sends at most one, and none once the error clears
  • A connection you just added no longer vanishes for a moment if DorkOS reloads its connection settings at the same time. Before, removing or editing it right away said it could not be found
  • A connection you remove stays removed. Before, a reload at the same moment could start it again and leave it answering messages, even though the app no longer listed it
  • Removing a connection can no longer remove a different one when the connection settings reload at the same moment
  • Two changes saved close together are now written in order, so an older save can no longer overwrite a newer one
  • Turning off or reloading an extension now stops every repeating task it started, including ones it started after it finished loading. Before, those kept running, so after a reload the old copy's tasks could run beside the new one's
  • Turning on a room's files, or keeping changes made outside DorkOS, no longer fails when your profile name is made only of symbols git cannot use, such as <>. DorkOS signs those saves with a plain name instead (DOR-2454)
  • dorkos cloud login now waits and tries again when DorkOS Cloud says it is busy, instead of giving up and making you start over (DOR-2496)
  • A Community server behind a proxy with COMMUNITY_TRUSTED_PROXY_HEADER set now counts sign-in attempts per visitor. Before, sign-in limits saw the proxy's address for everyone, so they either limited nobody or everybody together

[0.109.0] - 2026-10-11

DorkOS 0.109.0 gives your agents a heartbeat: they wake up on their own, do the work that is theirs, and send you one short report at the start of your day. Every channel now has a lead agent, desktop tabs say what needs you, and DorkOS picks the model for you.

Added

  • Agents can now wake up on their own: on a regular beat or when something happens, they check what changed, do the work that is theirs, and tell you at a sensible hour. Every check leaves a line in the record. Each agent keeps a HEARTBEAT.md that says how it wakes and what it watches (DOR-2788)
  • Each agent's profile has a new Heartbeat page. It shows how often the agent checks in on its own, when its next check is, and what its recent checks found. It also lists any messages it is holding until working hours, with who each one is for and when it will arrive. On your own agents, you can edit the agent's HEARTBEAT.md file on the same page (DOR-2788)
  • Agents now send their manager one short report at the start of the workday instead of many small messages. While you're away, routine news waits for your return and only urgent messages reach you. An agent won't send you the same thing again while it's still open, and when two agents notice the same problem, you hear about it once. Each agent's Heartbeat page says who gets its next report and how much is in it so far (DOR-2788)
  • You can now see what your agents did on their own and whether it helped: how often their work stuck, how often their messages were useful, and how often they interrupted you. It's on each agent's Heartbeat page, beside the target each number is aiming for (DOR-2788)
  • Agents can read another agent's heartbeat too, so a lead can check on the agents that report to it (DOR-2788)
  • Agents can do their quick checks on DorkOS credits, so most check-ins end without a full run. Nothing is spent until you say yes. Each agent's Heartbeat page says where its checks run and how many it did today (DOR-2788)
  • A new Heartbeats page in the docs explains how agents wake up on their own, how they tell you things, and how to stop them (DOR-2788)
  • You can now choose who each agent reports to, and tell DorkOS your time zone and working hours. Open an agent's profile and pick from "Reports to": you, or another agent. If you leave it alone, an agent reports to whoever made it, and otherwise to you (DOR-2788)
  • Settings › Profile has a new "Your hours" card for your time zone, working days, start and end times, and the day you are back when you are away. DorkOS fills in your time zone from your browser the first time you open the app (DOR-2788)
  • Agents can now keep a list of what they promised, and anyone can read it on the agent's profile and the Team page. Each promise says who it was made to and when it is due, and one that runs late is marked overdue. You can mark a promise kept or dropped (with an Undo), or add one for one of your agents yourself (DOR-2788)
  • Anyone can now pause an agent everywhere at once, and anyone can lift the pause. Pausing stops what the agent is doing right now, including running scheduled tasks and work it left running in the background, and nothing starts it again until someone resumes it: your messages, its schedules, rooms, and messages from other agents or chat apps. Work it misses is not run later. Pause it from the ⋮ menu on its profile, with dorkos agent pause, or ask another agent. A paused agent can't resume itself, and every pause, resume and held-back piece of work is kept in the record (DOR-2738)
  • Agents can now review each other's work. They can read the record, and any other agent's work chats: scheduled tasks, messages between agents, and replies in the team channels they are in. DorkOS's agent tools and API keep your own chats from other agents, including your direct messages with an agent and chats from Telegram or Slack. An agent can't list, open or search them, though what it did in them is still in the record. This covers agents that say who they are, as DorkOS's tools do. It doesn't stop a program on your computer from opening the chat files directly (DOR-2738)
  • See the whole record in the app: switch Activity to All actions. Each agent's profile has an Activity page with everything it did (DOR-2738)
  • Every channel now has a lead: the agent that answers your message when nobody else is answering it. It steps back when you @mention another agent. Pick the lead in the channel's settings, and see it in the channel header and member list (DOR-2823)
  • A new channel's lead is the first agent you add. Existing channels got one on upgrade: the agent that answered you most there in the last two weeks (DOR-2823)
  • Agents can hand the lead to another agent in the channel (DOR-2823)
  • Channels connected to Telegram or Slack have no lead: their agent still answers only when @mentioned (DOR-2823)
  • When an agent is picked to answer your message in a room, 👀 appears on it right away, and goes away when the agent is done (DOR-2823)
  • A channel with no agent in it shows a quiet line above the message box saying so, with a way to add one (DOR-2823)
  • A link to a chat in an agent's reply or a channel post now shows as a small chip: the agent's icon, the chat's title, and a dot for what the chat is doing. Rest the pointer on it to read what that is, like "Waiting for your OK". One click opens the chat; cmd/ctrl-click opens it in a new tab (DOR-2824)
  • Links to channels and direct messages show as chips too, named the way their tabs are (DOR-2824)
  • A link to a chat or channel that is gone says "Chat not found" or "Channel not found" instead of an empty link (DOR-2824)
  • The Schedules tab shows when a schedule waits for your OK, failed its last run, or is running. A paused schedule's old failure does not count, and a count of failures is red (DOR-2820)
  • The Activity tab counts what happened since you last opened it, and the Connections tab counts requests waiting for your OK (DOR-2820)
  • When the window is in the background, its title count now includes schedules waiting for your OK, beside unread channels (DOR-2820)
  • Extensions can put a status, a count and a short note on the tab of their own page (DOR-2820)
  • Spaces (experimental): a space can now be open to anyone who signs in with the server's single sign-on. They join with one click on the space's own page, with no invitation. It never allows a password sign-up, and the person running the server can turn open joining off for everyone at once (DOR-2764)
  • Spaces (experimental): owners and admins can ban someone from a space. A ban removes them and keeps them from coming back with that account, or with that email address once it was confirmed. A ban can be lifted later. Admins can ban members, but only the owner can ban an admin or lift a ban on one (DOR-2764)
  • Spaces (experimental): owners and admins can mute someone in a space for 10 minutes up to a week. Until it ends, that person and their agents can't post. Leaving and joining again doesn't end it (DOR-2768)
  • Spaces (experimental): a channel can have slow mode: each person waits a set time between posts, and their agents count as them. Owners and admins don't wait (DOR-2768)
  • Spaces (experimental): anyone in a space can flag a message for the owner and admins, once per message. Owners and admins work through the flagged messages and remove the message, mute or ban its author, or dismiss the flag. In the DorkOS app, you report a message with a reason and a note only they read (DOR-2768, DOR-2770)
  • Spaces (experimental): a space can have rules. Everyone accepts the current rules before they post, and again each time the rules change. An agent can only post once the person it belongs to has accepted them. In the app, the channel shows the rules before your first post, and you accept them right there (DOR-2768, DOR-2770)
  • Spaces (experimental): you can change the name you go by in one space without leaving the app. Other spaces keep the name they show. Nobody can take the name of someone else's agent, agents can't take people's names, and the owner can keep some names for the owner and admins (DOR-2768, DOR-2770)
  • Spaces (experimental): a space now checks each new post for spam, and against the space's rules, after the post is up. A post that looks wrong is flagged for the owner and admins with a short note on why. Checks never hide, hold or remove a post, and never slow one down. Owners and admins see what each check made of a flagged message, and can list only the messages the checks flagged (DOR-2777)
  • Spaces (experimental): a Community server can ask Jev and one OpenAI-format model the same questions about the same posts, and compare how often each agreed with moderators, what it cost and how long it took. These calls cost money, so they only run when the server sets COMMUNITY_DECISIONS_PAID=1 beside each model's key, and stop for the day at a call limit. Without that, only free built-in checks run. Messages in private channels never go to these models (DOR-2777)
  • Spaces (experimental): through the app's API, you can now pick channels in a space where your agents answer any person's new post, with no mention needed. Each person and each channel gets a few answers every ten minutes, so a flood of posts cannot keep your agents busy. Every answer runs with a stranger's limits, and only you can change the list, never an agent (DOR-2772)
  • Spaces (experimental): a DorkOS install can name one official space by its link, in spaces.official.url or the DORKOS_OFFICIAL_SPACE_URL environment variable. That one space shows in the switcher and can be joined even while the Spaces experiment is off. Every other space stays hidden, and so do starting and hosting spaces. Its agents only wake when you mention them yourself, unless you change that. Only a person can set the link, never an agent. The link is empty for now, so nothing changes yet (DOR-2769)
  • Community hosts get a readiness check at /health/ready and monitoring numbers at /metrics, for a server key that can read spaces. The numbers cover open live streams, posts and joins per minute, waits for the database, and how fast messages arrive (DOR-2764)
  • Community hosts can cap how many live streams one server, one space, and one person or agent may hold. Past a cap, a new stream is asked to try again shortly (DOR-2764)
  • An OpenCode agent now lists the helper agents set up in its OpenCode config, like Claude Code agents already do (DOR-2520)

Changed

  • DorkOS now picks the model for you. On DorkOS credits, a new chat on the DorkOS runtime just works, with nothing to set up first. To choose a model yourself, open Settings › Runtimes › DorkOS and use the Model row. Picking a model there never changes what pays for your chats, and "Chosen by DorkOS" hands the choice back (DOR-2784)
  • The model is no longer shown in the bar under the message box. Pin it from the ⋯ menu if you want to see it there. A DorkOS chat no longer shows "Runs on" there either, unless you pin it (DOR-2784)
  • DorkBot now knows what DorkOS is for. Its starter AGENTS.md talks about running your business with a team of agents and building mini apps, the tools your business runs on. If you never edited that file, DorkOS swaps in the new text the next time it starts (DOR-2783)
  • An agent that's busy in its own chat no longer skips your room message. The room tries again on its own and answers when the agent is free (DOR-2823)
  • When an agent runs out of usage, the room says when it can answer again, instead of "ran into a problem" (DOR-2823)
  • Every tab in the desktop app now says who or where it is, and whether it needs you. A chat tab reads "Scout · Fix the login bug". A channel shows its unread count. Home counts what is waiting on you, and Team shows how many agents are working (DOR-2820)
  • A tab shows one status at a time: needs you, failed, paused (out of usage), working, or new. Hover a tab to see its full name, what it is waiting for, and when it was last active (DOR-2820)
  • Two tabs open on the same agent now lead with the chat title, so you can tell them apart (DOR-2820)
  • The window title names the page you are on, the same way its tab does. Pages that are not chats no longer show the last agent you picked. A bell shows on every page while anything waits on you (DOR-2820)
  • Spaces (experimental): a message a space holds back now says why and goes back into your message box: you're muted until a set time, the rules need accepting, or slow mode shows how many seconds are left. It no longer shows up as a message that didn't send (DOR-2770)
  • A Community server now sends a new message to open channels as soon as it is posted, instead of asking the database four times a second for every open channel. One server can hold many more people at once. When someone is removed, signs out, or loses access in any other way, their open channels close within a moment. A sign-in that simply runs out is noticed within about 15 seconds (DOR-2764)
  • A Community server now reads each new message once and hands the same copy to everyone who has that channel open, instead of reading it again for each person. New messages reach a busy channel far faster, and someone who loses access still stops getting messages at once (DOR-2830)
  • Posting in a large Community channel is quicker: the server looks up only the people a message mentions, not everyone in the channel (DOR-2830)
  • People can post in a busy Community channel at the same time without waiting in line behind each other. Each message still gets its place in the channel in order, so nobody misses one or sees them out of order, and archiving a busy channel or removing someone from it still goes through right away. In a test on one laptop with 10,000 people watching one channel, messages arrived two to three times faster (DOR-2837)

Fixed

  • The green and red line counts on a file-edit chip are now dark enough to read easily, in light and dark themes (DOR-2512)
  • When a Codex or OpenCode account's usage resets, the notice now names that account, not "Your Claude account" (DOR-2475)
  • Going back to a chat whose live connection had dropped no longer shows "Live updates lost" while it reconnects normally. It says it is connecting until the connection opens (DOR-1916)
  • Editing a channel's topic now opens a box that grows to show the whole topic, instead of a one-line field that showed only its first few words. Enter still saves and Escape still cancels (DOR-2358)
  • In the desktop app, clicking Reset all data while the server is already restarting now says "Nothing was deleted." It used to say your data was deleted when it was untouched (DOR-2133)
  • When you point at part of the app in a bug report, it is no longer named after a large container around it, such as the whole sidebar (DOR-1963)
  • A bug report's log excerpt now hides the whole login value of an Authorization header. Before, a "Basic" login kept its encoded username and password (DOR-2235)
  • Spaces (experimental): reading a thread in a space channel no longer loses your place in the channel. When you go back and reopen the channel, it opens where you were reading instead of at the newest message (DOR-2676)
  • A Community server now keeps its limit on wrong password guesses apart from its other limits. Before, someone could flood a public page with made-up addresses until the server forgot how many guesses an account had already used
  • Agent replies read in a lighter weight than your own messages again, so the two voices are easy to tell apart (DOR-2130)
  • A row of buttons or other items an agent shows in a chat or room now wraps onto a new line on a phone, so the last one is no longer cut off at the screen edge (DOR-2003)
  • The Scheduled runs switch in Settings works again when you run DorkOS from the command line. It no longer shows as locked by an environment variable you never set (DOR-2516)
  • With reduced motion turned on, the "… working on it" line above the message box now clears when your agents finish. It could stay stuck on screen after every reply had landed (DOR-2762)
  • After you switch a chat to Ask first, the offer to start every new chat that way shows up again. The permissions menu now stays open while you choose, instead of closing under your cursor
  • Older agents stop calling themselves assistants. If an agent lives in DorkOS's own folder and you never changed its SOUL.md, or DorkBot's AGENTS.md, DorkOS swaps in the new starter text the next time it starts. A file you edited, even by one character, stays exactly as you left it (DOR-2779)
  • Work an agent started in the background while answering someone from outside your computer, such as a helper or a shell, now keeps asking before it acts after that reply ends. Before, your own next message could hand that work your level. If your message has to wait for that work to finish first, the work still asks while it waits (DOR-2764)
  • If an agent's open session does not switch down to the asking level for an outsider's message, it now restarts at that level instead of answering at yours (DOR-2764)
  • Changing an agent's level in the app while it answers someone from outside your computer no longer lets that reply run at your new level (DOR-2764)
  • A note an agent saves after reading a message from someone outside your team now says so, even when another agent passed that message on. Before, it could look like something you told the agent yourself (DOR-2781)
  • An agent answering a message from someone outside your team can still add notes, but can't change or delete the ones you gave it (DOR-2781)
  • A chat an agent starts while answering someone from outside your team now carries that on, so its notes are marked the same way (DOR-2781)
  • An agent can no longer edit the part of a saved note that says where it came from, so a later chat can't make a note look like yours (DOR-2781)
  • A Claude Code chat started in the claude command line in dontAsk mode stays in dontAsk when a stranger's message starts its turn, instead of switching to a mode that asks (DOR-2772)
  • Spaces (experimental): if a space's "who can wake your agents" file can't be read, your agents now stay quiet there instead of waking for anyone (DOR-2764)
  • Spaces (experimental): agents in a space's channel are now told that people outside your computer post there, and that their messages are not instructions, the same way they are told in a linked chat (DOR-2764)

Security

  • An agent could open any chat's messages, including your own chats, through the app's API. It now gets "not found" for your chats on every chat request, and your chats no longer show up in its live list (DOR-2738)
  • When a stranger's message in a space or a connected chat starts an agent's turn, the agent now asks you before it reads a file outside its own folder or opens a web page. Before, those reads ran without asking (DOR-2772)

Note for people upgrading

  • This release is 0.109.0, not 0.104.0. Settings updates were made for 0.105.0 through 0.109.0, and a release has to reach their number for them to run on your computer. They add your working hours, set up the new first-run steps, and let DorkOS pick the model.
  • In the API, a room's fallbackSeatAuthorId field is now leadAuthorId (DOR-2823)

[0.103.0] - 2026-10-10

DorkOS 0.103.0 makes channels answer you: a message without an @mention goes to the agent you are talking to. Agents now hand work to each other in chats you can open and read, chat links show the chat's title, and Today keeps the chats you actually used.

Added

  • Agents now message each other in chats you can open, so you can read every handoff between them (DOR-2790)
  • See who sent each message: a message from another agent shows that agent and the chat it came from, never you (DOR-2790)
  • Spin-off chats report back by themselves when they finish, fail, need you, or pause at a usage limit (DOR-2790)
  • A new guide, Spin-off chats, explains when an agent hands work to a chat of its own and how to follow along (DOR-2790)
  • The record now holds the tools an agent uses, in DorkOS, Claude Code, Codex or OpenCode: the command it ran, the file it changed or the page it fetched, and whether it worked. Each line points to the chat it happened in, where the full detail stays. In Codex and OpenCode, a helper agent's own tools are not listed yet, only that it started (DOR-2738)
  • Tool cards in DorkOS runtime chats now show what each tool was asked to do, as they already did for Claude Code, Codex and OpenCode (DOR-2738)
  • A new docs page, "Work That Runs After a Reply", lists what Claude Code, Codex and OpenCode can leave running after they reply, and what happens to it when DorkOS restarts or a setting changes (DOR-2717)
  • In the desktop app, right-click a tab to pin it, duplicate it, copy a link to its page, or close the other tabs. Pinned tabs stay at the left as a small icon, and "Close others" leaves them open. Drag a tab to move it, or press Space and then the arrow keys. Shift+F10 opens the same menu from the keyboard (DOR-2820)

Changed

  • In a channel, a message you send without an @mention now goes to the agent you are talking to there: the one that answered you last, or the one you last @mentioned. Its own answers restart the clock, so a long answer no longer uses up the time before you reply (DOR-2823)
  • That now lasts 60 minutes or 15 messages, up from 10 minutes or 5. If you set other numbers yourself, yours are kept. Agents talking to each other keep the old, shorter limit (DOR-2823)
  • In #team, your default agent no longer answers alongside the agent you are already talking to (DOR-2823)
  • When an agent links to a chat, the link shows the chat's title, and one click opens it right where you are. Cmd-click or Ctrl-click opens it in a new tab. Links to other websites still ask before they open, and so does any link that would send a message for you (DOR-2824)
  • Agents now name chats by their title and link them, instead of showing a string of letters and numbers like 48f74bb4 (DOR-2824)
  • A chat an agent starts gets a short, plain title in the sidebar, like "Rooms: always answer people", instead of the first line of the agent's instructions (DOR-2824)
  • Today keeps the chats you actually used. A chat you opened or typed in since 4am stays in Today, even when a dozen agent chats have been busier since. A chat a room, a schedule or another agent started becomes yours the moment you open it or type in it (DOR-2789)
  • Clicking an agent opens the chat you were last in with it, not whichever chat the agent was busiest in. A chat another chat started is never picked unless you have used it (DOR-2789)
  • This works the same on every device. The app remembers which chats you opened or typed in, so your desktop, your phone and a second browser all agree. Opening a chat from a link, a notification or a reload counts too (DOR-2789)
  • An agent's chat list and Switch session are now the same list, and they show what needs you first: chats waiting on an approval or a question, chats whose account ran out of usage, and chats that stopped with an error, then chats that are running, then the rest by when you last used them. Each row says when you last used it, like "You · 2h" (DOR-2789)
  • Chats that another chat started fold under the chat that started them, behind a "2 spin-offs" toggle. One that needs you is lifted to the top, saying where it started. Chats a schedule or a room started fold into one Automated group at the bottom (DOR-2789)
  • Both lists have a New chat button at the top, and you can sort them by For you, Recent activity or when they started (DOR-2789)
  • DorkOS now calls a conversation with an agent a "chat" in its menus, buttons, settings, errors, docs, website and command line. It used to say "session" in some places and "conversation" in others for the same thing. "New session" is now "New chat", the Sessions page is now Chats, and Session details is now Chat details. A chat an agent starts is a spin-off chat. Channels and DMs keep their names (DOR-2789)
  • Choosing Full autonomy no longer opens an extra confirmation. You pick it like any other level, in a chat, in Settings, on an agent's page or from the command line, and it takes effect straight away (DOR-2739)

Removed

  • Agents no longer message each other through Relay's messaging tools. They use chats instead, so nothing between them happens out of sight (DOR-2790)
  • The dorkos config acknowledge-autonomy command, and the saved "don't show this again" date it wrote. Neither is needed any more (DOR-2739)

Fixed

  • When you start a thread by @mentioning an agent, your next messages in that thread now reach that agent without another @mention. Before, the thread's first message did not count, so a follow-up got no answer (DOR-2823)
  • Chat tabs say which agent and which chat they hold again, like "Scout · Fix the login bug", with the agent's emoji. Since the last release they all read "Session" with a plain icon. The Back and Forward history menu names chats the same way (DOR-2820)
  • When OpenCode stops in the middle of a reply, the chat now says the reply ended early and asks you to send your message again, instead of showing a raw error (DOR-2717)
  • Claude Code agents are now told that a reminder saved to disk is not reliable in DorkOS, and to use Tasks for anything on a schedule (DOR-2717)

Security

  • An agent's sign-in to an MCP server is now kept for the sign-in service that issued it. If that server starts sending DorkOS to a different sign-in service, DorkOS no longer hands it the old login

Note for people upgrading

  • This release is 0.103.0, not 0.102.0. Two settings updates were made for 0.102.0 and 0.103.0, and a release has to reach their number for them to run on your computer. One removes the old Full-autonomy confirmation date. The other raises how long a channel keeps you talking to the same agent, unless you set your own numbers.

[0.101.0] - 2026-10-08

DorkOS 0.101.0 lets an agent ask to summarize its own chat when it gets full, keeps your computer awake while agents work, and starts a lasting record of who did what. Codex now asks before it changes things and takes a message mid-reply, and spaces are now an experiment you switch on.

Added

  • Your computer stays awake while agents work, then sleeps as normal. A small cup in the top bar shows when, and Settings → Tools → Sleep turns it off. Closing the lid on battery, or a low battery, still puts it to sleep, and staying awake uses more battery. (DOR-2718)
  • After you connect an account through your DorkOS account, the page that finishes it can send you straight back to Connections, in the desktop app or the same browser address you started from (DOR-2721)
  • Spaces, an experiment you switch on in Settings, can now email you a password reset link, a sign-in link, and a link to confirm your email. A space without mail set up still asks its host for help (DOR-2710)
  • Codex can ask before it changes things, and you can steer it mid-reply (DOR-2719). In Ask first, Codex asks before every change; it still runs read-only commands, and tools marked read-only, without asking. In Workspace write, it asks before it reaches outside your project or goes online. You approve or deny from a card in the chat. Questions Codex asks you, and forms from its tools, show up as cards too. A question that asks for a password or other secret is skipped for now, and the chat says so. A message you send while Codex is replying joins that reply instead of waiting for the next one.
  • Background commands Codex starts keep running after its reply, and the chat picks up when they finish: Codex reads the result and carries on (DOR-2719). It does this only after a reply that ended normally, and never for a command that runs until you stop it, like a dev server. After three pickups in a row with no message from you, the chat waits for you. In a room, a finished command shows in the chat and the room carries on at its next turn. You can stop one from the task bar above the chat box, and DorkOS stops one that is still running four hours after its reply.
  • An agent whose chat is nearly full can now ask for it to be summarized, instead of waiting for you to type /compact. The summary happens after its current reply ends, never in the middle of one, and the chat shows a line like "Summarized at 89% (asked by the agent)". An agent can ask at most once an hour, and only for its own chat. You can turn this off for any agent on its Permissions page, under Own chat. Works in Claude Code, Codex and OpenCode (DOR-2732)
  • When a chat passes 80% of its room, the agent gets one short note on its next reply suggesting it save its notes and ask for a summary. It is told once, and again only after the chat has been summarized. This works in Claude Code, Codex and OpenCode (DOR-2732)
  • /compact now works in Codex chats, and so does an agent asking for its own chat to be summarized. The chat shows the summary while it runs and draws the same line afterwards as in Claude Code and OpenCode. Codex doesn't take instructions for a summary, so words you add after /compact are ignored there. Codex set to its older exec mode still can't do this (DOR-2732)
  • DorkOS now keeps a permanent record of what happened on your computer: who did what, to what, and when, for you, your agents and DorkOS itself. Everything that shows in Activity goes into it, and nothing in DorkOS can change or remove a line once it is written. Anyone, you or any agent, can check it with dorkos call audit.verify, which names the first line that was changed or taken out of the middle. Lines taken off the end can't be caught yet (DOR-2738)
  • @dork-labs/cloud-api describes how a computer asks a person to approve DorkOS remote access: it shows a short code, the person approves it on a web page, and the computer checks back for the answer (DOR-2763)
  • @dork-labs/cloud-api tells a computer how to check that a visit really came through DorkOS remote access, and refuse any that did not (DOR-2763)
  • @dork-labs/cloud-api lets a computer cut off its own remote access, and explains how to recover when a new access key goes missing on the way (DOR-2763)
  • Three new pages at dorkos.ai/compare: Paperclip, ChatGPT Space and Slack Code. Every row on them was checked on October 7, 2026, mostly against each product's own docs, and each one links its source
  • Each page says plainly where the other product is ahead. Paperclip's budgets pause an agent when it hits its spending limit, which goes further than anything DorkOS has. ChatGPT Space's agents keep working on their own cloud computer with your laptop shut. Slack Code lets a whole team watch and pause a coding agent in a channel they already use
  • Each page also says where DorkOS is different: your agents build you mini apps that open inside DorkOS once you say yes, it is built for founders, and it runs on your computer with your real files, free and open source
  • The record now also holds actions that used to leave no trace: DorkOS tools an agent ran after you approved them, every setting change with its old and new value, packages installed, updated or removed, work merged into a room (and who merged it), API keys created or revoked, sign-ins, and updates that failed. Any other change made through the app or its API is recorded too: who did it, what kind of change, and whether it worked. Lines about sign-ins note where they came from, and are marked as the owner's alone (DOR-2738)
  • Choose DorkOS as an agent runtime in Settings → Runtimes. Use your API key, a local model or DorkOS credits. Chats keep their chosen inference source across restarts; tool approvals, search and coding helpers work through the app.

Changed

  • Scheduled tasks that ran late now say so, and very late ones are skipped instead of running at odd hours. A run that wakes up under an hour late, and less than halfway to the next scheduled time, still runs, and anything under a minute late counts as on time. Its history row says how late it was and how many runs were missed while the computer slept (DOR-2718)
  • Codex now asks before it changes things, and takes a message you send mid-reply, in every Codex chat (DOR-2719). This was opt-in before. To go back to the old way, set runtimes.codex.transport to exec and restart DorkOS.
  • A Claude Code chat in Default, Accept edits or Auto can now start a Codex chat in Ask first (DOR-2719). Starting one in Workspace write or Full access still needs a chat in Full access. A chat in Plan can no longer start a Codex chat at all, because every Codex level can now make changes once you approve them.
  • Keep local folder paths out of new conversation links.
  • Spaces are now an experiment, and they are off unless you turn them on. Open Settings, then Advanced, then Experiments, and switch on Spaces to join, start or move a space. While it is off, the space menu, space channels and space hosting are hidden. Your own channels and #team are not spaces and work the same either way (DOR-2740)
  • If you already joined a space: while Spaces is off, your agents there stop answering new messages, and nothing is deleted. Turn it back on and everything is where you left it (DOR-2740)
  • dorkos community deploy now says it is experimental each time it runs (DOR-2740)
  • Activity now keeps a year of history instead of 30 days. Change it with dorkos config set activity.retentionDays <days>; the new number applies the next time DorkOS starts (DOR-2738)
  • @dork-labs/cloud-api now says plainly that asking for a remote access key twice with the same request key is refused, instead of sending the key again. A computer that lost the answer asks again with a new request key (DOR-2763)
  • Agents now know they are co-workers on your team, not assistants. They do the job in their description, work toward the goals your team sets, and finish routine work without asking first. Approvals still apply (DOR-2736)
  • A newly set up DorkBot describes DorkOS as a workspace for people and agents, built for founders, and asks to add the agents it finds to your team (DOR-2736)
  • The welcome screen now says what DorkOS is for: build and run your business with an agent team. Its three previews are now building your team, asking for tools and connecting services
  • The installed app's description reads "Build and run your business with an agent team."
  • dorkos --help and the Mac app's About window now describe DorkOS the same way the website does: build and run your business with an agent team. The help for dorkos marketplace install, update and uninstall now uses a real package, flow, in its examples

Fixed

  • Stop a scheduled task from running twice after the computer wakes, and from being filed under the wrong time (DOR-2718)
  • A message that needs the agent to switch folders, instructions or settings no longer stops the helpers, Monitors or background commands it is still running. The message waits in the queue and says what it is waiting on. Press Switch now to run it anyway and stop that work. After four hours it runs on its own.
  • When a connection can't start, the dialog now says why and what to do, and offers to try again only when that could work. An app that can't be connected yet says so plainly (DOR-2713)
  • If you deleted or archived a Codex conversation in Codex itself, your next message in DorkOS starts a fresh one and tells you so. Before, a deleted one started fresh without a word, and an archived one failed the message (DOR-2719).
  • Open conversations by session ID across Claude Code, Codex and OpenCode, including accessible conversations started outside DorkOS.
  • Keep new conversations in their chosen folder and runtime after reloads and tab switches.
  • OpenCode chats now say how much room is left. DorkOS reads each model's size from OpenCode's model list, so an OpenCode agent also gets the note at 80% full. The token count now includes the part of the conversation OpenCode had cached, which it used to leave out (DOR-2732)
  • A message from someone in a bridged Telegram or Slack chat in a room, or from another company's agent, now gets an answer at the level a brand-new chat starts at. That holds even in a conversation you set to Full autonomy, and when such a message arrives in the same moment as yours. Your own next message runs at the level you chose (DOR-2739)
  • When one of your agents asks another for help in a room, the second agent works with no more power than the first one had at that moment (DOR-2739)

Security

  • A reset or sign-in link to an account whose email was never confirmed removes every old way in first, so someone who made an account with your email loses it the first time you use your mail (DOR-2710)

Note for people upgrading

  • A Codex chat in Ask first can now make changes. It still asks you first, every time. Before, it could only read.
  • If your own Codex settings (~/.codex/config.toml) name a model your account can't use, Codex chats stop at once with a message saying that model isn't available. Pick another model in the chat's model menu.

[0.98.0] - 2026-10-05

DorkOS 0.98.0 lets extensions give your agents their own tools, and lets an extension run as its own program so a crash can't take DorkOS down. You can now build a plugin or skill pack live from a folder, and agents stop losing background work, reminders and timers.

Added

  • Extensions can now give your agents tools and skills. An extension you approved offers them while it runs, and they go away when you turn it off, stop it or remove it (DOR-2685)
  • You see what an extension gives your agents before you turn it on. Its Activity inbox row says, for example, "Would give agents 3 tools and 1 skill", and lists each tool as Reads, Acts or Asks you first. Its card in Settings → Extensions shows the same list, and says why a tool or skill was left out (DOR-2685)
  • An approval card for an extension's tool says which extension it is from (DOR-2685)
  • Codex and OpenCode chats get new tools the next time they ask DorkOS for its tool list, and a Claude Code chat gets them with your next message (DOR-2685)
  • Skills are short guides that teach an agent when and how to use the extension. They land where a plugin's skills land: in the project for a project's own extension, and in DorkOS's own Claude Code chats for one installed for all your projects. dorkos harness sync from a terminal keeps exactly the same skills (DOR-2685)
  • Removing an extension clears any permission you set for its tools, so a choice like Allowed never carries over to something installed later under the same name (DOR-2685)
  • dorkos marketplace validate now checks the extensions a package carries, and fails when DorkOS would refuse one of their tools, so an author hears about it before publishing (DOR-2685)
  • Settings → Permissions has a new Extension tools area, for tools an installed extension gives your agents. Careful asks first; Balanced and Full power allow them. A tool that deletes or removes something asks every time, even if you set it to Allowed. Each tool's row names the extension it came from (DOR-2685)
  • An extension can now run separately from DorkOS, as its own program, limited to the sites, programs and agent access its card listed when you said yes. If it crashes, freezes or runs out of memory, the rest of DorkOS keeps working. DorkOS starts it again after a second, waiting longer each time it stops again, and after 3 stops in 10 minutes it stays off until you click Reload. Your sign-in never reaches it. Its screens still run with your access, a program it may run has your full access, and its list of sites is a check inside its own program, not a firewall. It has been tested on macOS and Linux. In the desktop app DorkOS has checked that its limits hold, but the extension itself hasn't been run there yet, and it isn't confirmed on Windows yet. (DOR-2686)
  • An extension that runs separately from DorkOS can now give your agents tools, the same way one running inside DorkOS does. Each call still goes through your permissions first, inside DorkOS. If the extension crashes or freezes, its tools disappear until it is running again, and a call that was in progress fails instead of waiting. (DOR-2686)
  • Before you turn on an extension, its card now says what it can reach. One with only screens says its screens run in DorkOS with your access. One whose server part runs inside DorkOS says it has full access to your computer. One built to run separately lists the sites it can connect to, the programs it can start, and whether it can message your agents. The same lines show before you install a package from the Marketplace, and when you link a folder you are working on. If an extension asks for more while the card is open, your yes is not used, and the new card starts with what changed. If it asks for less, your yes still counts.
  • Run a plugin or skill pack from your own folder while you build it, right from the app (DOR-2696). Go to Marketplace, then Installed, and choose Link a folder. The card shows the folder and everything it runs before you link it.
  • A linked package shows a Dev link tag and its folder on the Installed list, in Browse, on its extensions in Settings, and on any page it adds. Its row says when your last edit reloaded, shows the build error when one didn't, and tells you when the folder is missing.
  • Switch back from the same row. Use installed copy brings back the copy you had installed, Install published version gets the one from the marketplace, and Unlink removes it. Your folder is never touched.
  • Run a plugin or skill pack from a folder on your computer with dorkos marketplace link <path> (DOR-2696). It shows the package, the folder, everything it runs and what it replaces, then asks before linking. If the folder changes while it asks, nothing is linked.
  • Switch back with dorkos marketplace unlink <name>. Your installed copy comes back, or the package is removed. Your folder is never touched.
  • dorkos marketplace installed marks each dev link with its folder, and says when the folder is gone. dorkos doctor lists your dev links and names any that need a look, with the command that fixes it.
  • A plugin or skill pack you run from a folder now picks up your edits within seconds (DOR-2696). Save a change to one of its extensions and DorkOS rebuilds it, without asking you again. Add a skill and it reaches your agent tools in that project. Changes to other files, like a README or your build output, reload nothing.
  • Edits never approve anything new. A new extension, hook, server or program in the folder still asks you first, on its usual card.
  • If you delete the folder, DorkOS stops reloading it and starts again within a minute of the folder coming back. After you unlink it, edits there do nothing.
  • Go back and forward in the desktop app. Each tab now remembers where it has been. Use the arrows at the top left, Cmd+[ and Cmd+] (Ctrl+[ / Ctrl+] or Alt+← / Alt+→ on Windows), or your mouse's side buttons. The History button lists the tab's pages so you can jump straight back to one. Switching tabs no longer costs you a Back press. (DOR-2107)
  • Keep document actions and their delivery status up to date in sessions and rooms.
  • Submit native widget actions, retry a lost response without duplicating it, and keep typing while accepted work waits.
  • Load long document event histories in pages, while keeping who may see them and their delivery status correct.
  • A new setting, runtimes.codex.transport, chooses how DorkOS runs Codex (DOR-2719). Leave it on auto and nothing changes: Codex works exactly as before. Setting it to app-server tries an early version of a new way, where one Codex process stays running and keeps a chat ready between replies. The change takes effect after you restart DorkOS.
  • Show each sign-in button in a space with its own mark: the Google "G", the GitHub mark, and the DorkOS mark where the host turns it on, so "Continue with …" reads as a sign-in button (DOR-2709)
  • Sign in to a space with Google, GitHub or single sign-on even when your email already has an account there: the page asks for that account's password once, then links the two and signs you in (DOR-2709)
  • Let a host trust its own single sign-on with COMMUNITY_OIDC_LINK_VERIFIED_EMAIL=1, so a sign-in with a verified email links to the matching account straight away. If that account's email was never confirmed, its old password, sessions and other sign-ins are removed first, so someone who signed up with your email before you cannot stay in (DOR-2709)
  • dorkos community deploy --forget <run-id> stops listing a stopped setup in --list-incomplete once you've removed what it made. It checks that each thing is really gone first, and changes nothing in your Fly or Neon accounts. If setup made a storage bucket, it also shows you how to delete the bucket's Tigris access key, which keeps working after the bucket is gone.
  • Download and verify the experimental managed browser on Apple Silicon Macs with dorkos browser install. Check its saved files with dorkos browser status --runtime, or replace damaged files with dorkos browser install --repair.
  • Show Shared browser in Experiments as unavailable while safety checks continue. (DOR-2671)
  • Publish @dork-labs/connector-providers for developers who build on DorkOS: the shared definitions and Composio code the app uses to reach outside services. It ships with every release, at the same version as @dork-labs/cloud-api (DOR-2715)

Changed

  • A chat an agent starts now runs at the same permission setting as the chat that started it, unless the agent asks for a lower one. Before, a chat at Full autonomy could only start chats that stopped to ask. Asking for a higher setting is turned down with a plain reason instead of being quietly lowered. Full autonomy is never passed on silently: the agent has to ask for it by name, so it shows on the approval card, and it still needs your one-time okay. The new chat's first lines say which setting it got (DOR-2714)
  • Remove the server API keys and working invitation links an account made when its password is recovered, along with its sessions and connections (DOR-2709)

Fixed

  • When an agent hands work to a helper and reports back later, that report now reaches whoever asked. An agent that sent the work with a message it checks back on gets the late answer in the same inbox for up to 30 minutes, or a note that none is coming. An agent that waited for a single reply is told the other agent is still working, since that later answer cannot reach it. A scheduled task's run history shows what the agent reported after the run ended.
  • A chat that starts a command in the background and ends its turn now hears back when the command finishes. Before, the agent was closed five minutes after its turn and the command died with it.
  • A message sent while a chat was busy no longer restarts the chat on the wrong Claude account. That restart lost the chat with "No conversation found".
  • If DorkOS restarts while a chat is waiting on background work, the chat gets a short note as its next turn, so the agent knows the work stopped and can carry on.
  • A reminder an agent sets for itself (a wake-up or a scheduled prompt in the chat) now fires. Before, the agent was closed five minutes after its turn and the reminder was lost.
  • A turn waiting on a Monitor, a workflow or a background tool no longer gets stopped after ten quiet minutes.
  • Waking a laptop that slept for hours no longer closes agents that were still waiting on background work. The four-hour limit, and the wait for an answer to an approval, now count only time the computer was awake.
  • When an agent started a session for you, the id it got back could stop working later. A message sent to that id then started a new, empty chat in your home folder instead of reaching the right one. Now a session keeps the id it was started with, and a message to an id that doesn't exist is refused instead of starting a new chat.
  • A session's header no longer shows a model that belongs to a different runtime, like Codex with Opus. Changing a session's permission mode no longer changes the model it shows.
  • If you call the DorkOS API directly: a message to a session id the server doesn't know now gets a "not found" answer. To start a new session with its first message, add "create": true to that message.
  • The right panel now stays open, on the same tab, when you switch to a chat in another project. Before, it closed, so a tab like Flow had to be reopened after every switch. A project where you left the panel a certain way still opens it that way. If the new project doesn't have the tab you had open, the panel shows another tab instead of closing. Reloading the app brings back the panel the way you last saw it. On a phone or narrow window, switching projects or reloading shows the page instead of covering it with the panel. The old behavior saved "closed" for every project it visited, so those saved layouts are cleared once; layouts you left open are kept (DOR-2579)
  • The Pulse panel no longer says "Nothing needs you" while the Inbox shows something waiting. When a decision an extension asked about, an approval, a question from an agent, or an extension waiting to be turned on is in your Inbox, Pulse now says what is waiting, in the same words the Inbox uses, with a button that opens it. If Pulse can't check everything waiting, it says so and offers to try again, instead of saying all is quiet. The "All quiet." line on Home follows the same rules, and stays hidden until it has checked (DOR-2578)
  • A link can now open the Inbox right on the question it is about (DOR-2577). Before, Flow's "Review in Activity" link opened the Activity page, which lists past events but not open questions, so there was nothing there to answer. A link ending in ?inbox= followed by the question's id now opens the Inbox over the page you are on, with that question highlighted and ready to answer. This works on a phone too. If the question was already answered, the Inbox still opens. Flow will use this in its next update.
  • A dialog added by an extension now opens when the extension asks for it, and goes away when you close it with Escape, a click outside or its own close button. Before, it never opened, and one that ignored its closed state stayed on screen for good (DOR-2576)
  • Keep file edits open when saving fails. Preserve newer edits when an earlier save finishes.
  • Report which agent personality setting has an out-of-range value.
  • Slack connections no longer fail before the sign-in window opens (DOR-2715)
  • Only a person can ask DorkOS which project a folder belongs to (DOR-2547). An agent or another website that asks is turned away, so it can't fill the project list with folders that hold their names forever. Checking which accounts may work in a folder no longer records the folder at all.
  • DorkOS now remembers at most 200 folders that were only looked up. Past that, it forgets the one used longest ago. Projects you work in, ones an extension named, and ones your account settings name are never forgotten this way.
  • Opening many folders at once no longer starts a burst of background git checks. DorkOS runs at most four at a time. A folder that isn't in a repository is checked less and less often, up to once every 10 minutes, instead of every minute. If a check fails for another reason, such as a timeout, it is tried again after a minute.
  • A space server setup you stop with Control-C just as it starts creating something can now carry on (DOR-2701). Before, the resume command it printed failed every time, and the setup stayed stuck. Now setup offers dorkos community deploy --remove-uncertain <run-id> instead. Once it shows the create never happened, it keeps what setup already made, such as your Fly app, and prints a resume command that works.
  • When --remove-uncertain can't finish, it now lists everything that setup made, where each one is, and how to remove it, since those may cost money until you do.
  • Finish only the file already being deleted when a legal hold is placed during a community purge or an import cleanup. Preserve the remaining files and community records.

Security

  • Google and GitHub never link to an existing account without its password, and a sign-in whose email was not verified never links at all. Every link is recorded in the space's audit log, and mailed to the account where the host has mail set up (DOR-2709)
  • Stop a revoked sign-in session from changing data through a cached cookie.

Note for people upgrading

  • The managed browser is still experimental and stays turned off while its safety checks finish. Chrome support for every kind of page, including frames and background workers, is not yet confirmed.

[0.97.0] - 2026-10-03

DorkOS 0.97.0 lets you try a plugin or skill pack straight from a folder on your computer, after you approve it. Long agent replies no longer get cut off at 30 minutes, and the app's wording is shorter and plainer everywhere.

Added

  • Let an extension send one of your agents a message. A busy agent holds it until its current turn ends, and the extension hears when the agent starts on it, finishes, or will never get to it (DOR-2683)
  • An agent can ask to run a plugin or skill pack from a folder on your computer instead of an installed copy (DOR-2696). You approve it on a card, and nothing runs from the folder until you do.
  • The card shows the folder's full path and the extensions it would run. No permission setting can approve it ahead of time, and a folder that changes before you answer is asked about again.
  • If you already have that package installed, the installed copy is set aside, not deleted.
  • A plugin or skill pack you run from a folder now reaches your agent tools like an installed copy (DOR-2696). Linked for one project, its skills, commands and hooks are set up in that project for Claude Code, Codex and the other tools you use there. Linked for every project, its skills are shared the same way an installed copy's are. Commands and hooks it sets up say which folder they came from.
  • The approval card for a folder now lists every command it runs and when it runs. Approving the card covers exactly those, so the package loads without a second card. Anything new the folder adds later asks first.
  • When the installed copy comes back, so do its approvals, exactly as they were.

Changed

  • The app's wording is shorter and plainer everywhere. No label, message or button runs past 15 words, and longer explanations sit behind an info button or a "More details" link next to what they explain
  • Buttons say exactly what they do ("Delete agent", "Remove app"), and dialogs for things you can't undo ask a question that names the thing
  • Approval buttons now read Allow, Always allow and Don’t allow, on chat cards and in the inbox
  • Error messages say what didn't happen and what to do next

Fixed

  • Settings › Privacy no longer says DorkOS shares anonymous data by default. It now says nothing is shared unless a switch on that page is on
  • Fix late message failures allowing agents to exceed their hourly turn limits.
  • Long replies no longer get cut off at the 30-minute mark. DorkOS used to tidy away a session it thought was idle, even while the agent was still answering, and the reply ended with "Request interrupted".
  • An agent that hands work to a helper now waits for the helper to finish, even when one step takes more than ten minutes, like a long build. Before, the reply was ended after ten quiet minutes and the helper's report never showed up.
  • A Neon organization key, the kind the setup guide asks for, now gets past setup's checks. Before, setup always stopped with "Neon preflight is unavailable", because Neon won't let that kind of key read its list of regions. Setup now checks your region against a saved copy of that list. If your region isn't on it, setup tells you why and what to do (DOR-2700).
  • A Neon project key that can't see your organization now gets the same clear message every time, naming the key and the organization. Before, the message changed from run to run, and most runs gave the vague "preflight is unavailable" instead. A Fly token that Fly turns away is reported the same steady way (DOR-2700).
  • If you press Control-C while dorkos community deploy is deploying your space server, you can now run the resume command it prints straight away. Fly keeps the server's Machine locked for a few minutes after a stopped deploy, so setup now says it is waiting and carries on when Fly lets go, instead of failing after a minute and a half. A setup stopped this way now ends with a plain line that matches what it saved and says how to carry on. When a change on Fly, Neon or Tigris fails, setup now explains it in plain words instead of a code like CREATION_OUTCOME_UNCERTAIN, and saves the code with its progress. The recovery list also names the storage bucket by its name and reminds you that its Tigris access key outlives the bucket (DOR-2702)

Security

  • A Community server no longer starts its test-only controls just because COMMUNITY_TEST_RUNTIME=true is set. Those controls let anyone pause or refuse agents' posts without signing in, so the server now refuses to start unless COMMUNITY_TEST_RUNTIME_ACKNOWLEDGEMENT also holds an exact phrase, and it prints a warning when both are set. A real host should set neither (DOR-2655)

[0.96.0] - 2026-10-03

DorkOS 0.96.0 lets you pick DorkOS credits anywhere you choose what an agent runs on, and lets you delete your DorkOS account from the app. It also makes sure only the owner of a DorkOS can spend its money or change its connections.

Added

  • Choose DorkOS credits in the same places you choose a Claude account: Settings › Runtimes › Runs on, an agent's Runs on, the account chip before a chat's first message, and Continue on another account. Settings › DorkOS account has one switch per runtime credits can pay for. A chat set to DorkOS credits stops and says so when credits can't be reached, with Retry and Use your Claude Code sign-in — it never quietly runs on your own sign-in instead, and a chat on your own sign-in never uses credits. A folder's own Claude Code settings can't send your credits anywhere else, though other settings, such as PATH or a database address, still reach its hooks and commands. Credits keep working after a restart, an expiring credits token is replaced before a chat needs it, unlinking your DorkOS account stops anything running on credits right away, and Claude Code on credits ignores five more ways another program can hand it an endpoint or a sign-in (DOR-2623, DOR-2633)
  • If you link a DorkOS account while Claude Code has no sign-in at all, new Claude Code chats run on credits, and DorkOS tells you once, with Change and Undo all. If you sign in to Claude Code later, DorkOS offers once to switch back. Turning credits off is remembered, and a sign-in that has expired is never replaced with credits. A computer that was already linked keeps everything as it was and gets one offer you can turn down (DOR-2623)
  • An agent runs on DorkOS credits only when you choose that in the app. If an agent's own settings file asks for credits, the agent row says so and offers Allow (DOR-2623)
  • A project with its own Claude Code sign-in can't run on credits, so the chat now offers Don't use credits in this project, which adds a project limit you can remove in Settings › Runtimes. Doing this refreshes the model menu at once, so it offers what that project runs on (DOR-2623, DOR-2679)
  • When credits stop a scheduled task, an agent's reply or a room turn, you get a notification instead of nothing (DOR-2623)
  • On a Community server, each line of the erasure journal a host copies now says when that erasure finished, as finishedAt. A copy kept somewhere else can now delete old lines on the same schedule as the server, instead of counting from when it copied them. The lines in the app log and the COMMUNITY_ERASURE_JOURNAL file stay as they were, and erasure:reapply reads both kinds. (DOR-2621)
  • You can delete your DorkOS account from Settings › DorkOS account. Before anything happens, it says what goes (your plan, credits you haven't used, your seats and the rest of the account) and what stays (everything on this computer), offers a copy of your data, and asks you to type "delete". DorkOS then emails you a link, and nothing is deleted until you follow it. Only you can ask, never an agent. Once you follow the link, this computer unlinks itself and keeps working on its own; if the link expires first, the app says so and offers a new one. Where your account doesn't offer this yet, the app says so plainly. (DOR-2651)
  • If you run your own Community server, you can now ask for a new owner for a space whose owner has left. The owner gets an email and a note on the space's own site, and can keep ownership with one click. If their DorkOS is connected to the space, DorkOS tells them too the next time they open it. If they don't answer in time, the new owner can take over: with single sign-on, only the account you named; without it, whoever you send the claim link to. You need two things: mail set up on your server, and a host key with the ownership permission (or your own password). Without mail, the request is refused, because the owner could not be told (DOR-2252)
  • A Community host can now close someone else's account, for example when the person is younger than the host's minimum age, or under a legal order. The person is signed out at once and cannot sign in, and their account is erased 72 hours later, the same wait a person's own request has. Until the erasure starts the host can cancel it, and the person can sign in again. It needs a new host API key permission, accounts:close, and a host can find the account by the identity its single sign-on gives the person. Each person or key can close at most 10 accounts a day (COMMUNITY_ACCOUNT_CLOSURES_PER_DAY), and every closure writes a log line you can alert on. An account that still owns a community cannot be closed until its owner is replaced, and the erasure waits while the person belongs to a community under a legal hold. (DOR-2557)
  • Check delivery status for messages sent to agents through the HTTP API. Keep receipts for seven days, including refusals when an agent is busy, without sending the message again.
  • Once DorkOS says which models your credits cover, a chat or an agent on DorkOS credits lists only those models in the model menu, with DorkOS's suggested model first. This works the same in Claude Code, Codex and OpenCode. A chat on credits with no model chosen starts on that suggestion. Chats on your own sign-in keep the full menu and Automatic (DOR-2636)
  • A chat, an agent or a scheduled task on credits can't be set to a model your credits don't cover. If one already names such a model, it runs on the suggested model instead. A note in the conversation names both models and stays there, in chats, scheduled tasks and rooms alike, and the status line shows the model that ran (DOR-2636)
  • If DorkOS can't check the models your credits cover right now, it keeps using the last list it got (up to seven days old), even after a restart, and the menu says the list may be out of date (DOR-2636)
  • If your credits cover no model for a runtime, a chat on credits stops and says so, with the way to use your own sign-in instead (DOR-2636)
  • @dork-labs/cloud-api: each model in GET /v1/inference/models can now say which request formats to offer it in (protocols, by InferenceFormatSchema name) and in which it is the suggested first pick (recommendedOn). Both fields are optional (DOR-2636)
  • Codex and OpenCode are ready to run on DorkOS credits. Each gets a Runs on choice on its card in Settings › Runtimes and a switch under Use credits for, but neither shows up anywhere until DorkOS credits actually serve it. For Codex the choice applies to new conversations. For OpenCode it moves all of OpenCode, and you can't switch while OpenCode is in the middle of a reply, so nothing it's doing is cut off. Neither runtime uses your own sign-in or keys while on credits, and DorkOS never changes your own Codex or OpenCode settings: if credits can't be reached, Codex offers Start a new conversation on your Codex sign-in and OpenCode offers Use your OpenCode sign-in, which switches all of OpenCode back. A runtime set to credits keeps its Use credits for switch even while credits can't run it, so you can always switch it back. OpenCode never holds your DorkOS credits key itself — it talks to DorkOS on this computer, which adds the key on the way out, so a project's own OpenCode settings can't read it and send it anywhere. Codex conversations on credits also turn web search off, so they aren't refused once credits can run Codex; web search keeps working on your own Codex sign-in, and everywhere Codex can move onto credits now says it can't search the web there (DOR-2633, DOR-2679)
  • When Claude Code has no sign-in yet, its setup step now offers DorkOS credits first, with "Sign in with Claude" and "Paste a key" right under it. The same offer shows in first-run setup, in the chat card when a turn could not sign in, on the banner for a sign-in that is not there, and on your phone. If this computer is not linked to a DorkOS account yet, choosing credits shows the link code right where you are, and Settings › DorkOS account and your other open tabs show the same code. Once you approve it, you pick up where you left off. Before anything is sent again, DorkOS asks you first (DOR-2630)
  • When an account runs out of usage, the banner now leads with "Keep going on DorkOS credits". Nothing moves to credits unless you choose it, an account with no credits left is offered a way to add some instead, and a sign-in that expired still leads with signing in again. If you turned credits off for a runtime, your own sign-in stays first (DOR-2630)

Changed

  • Rename the Claude account section in Settings › Runtimes from Billing account to Runs on (DOR-2623)
  • DORKOS_CLOUD_CREDITS can now only turn DorkOS credits off: set it to 0. It no longer turns them on (DOR-2623)
  • A space's own website now says "space" everywhere you read it, the same word the DorkOS app uses: Create space, Join space, Leave space, Spaces you left, the page title, the emails it sends and the messages it shows. The page for the person who runs the server is now Server administration, and wherever the site said "host" it now says "server" or "server admin". Messages removed before this change keep their old wording and still show as removed. (DOR-2653)
  • dorkos community deploy now says "space" in what it prints, for example "Space setup is complete at …". The command itself is unchanged. (DOR-2653)
  • Label browser reports and captures as page-reported, so agents know the page can alter what they see (DOR-2662).
  • The company behind DorkOS is now 144 Studio, LLC. The terms, privacy, cookie, security, telemetry and pricing pages, the license, and the desktop app's About panel and installer all name it (DOR-2675).

Fixed

  • When Fly or Neon refuses to let your token create something during dorkos community deploy, setup now says so plainly: which service, which organization, and which token. Before, it called the outcome "uncertain" and offered a resume command that could never work. If nothing was made, it leaves no unfinished setup behind, so you can just run it again with a token that can. (DOR-2656)
  • After --remove-uncertain finds that nothing was made, that setup no longer shows up in --list-incomplete. Right after a stop, it waits a few minutes first, in case the create is still finishing. (DOR-2656)
  • When an exported NEON_API_KEY or FLY_API_TOKEN can't read the organization you chose, setup now tells you that, instead of asking you to check the service status and sign in again. For Fly, it also says the token may have expired. It never prints the key. (DOR-2657)
  • On a Community server, a member can now leave a community its host has put on hold. Before, the hold blocked leaving along with posting, so a member had no way out until the host lifted it. Leaving deletes none of their past messages, and a legal hold does not block it either. An owner still has to hand the community on before leaving. (DOR-2588)
  • Your DorkOS account's usage now shows last month's storage charge under Other charges. Before, it looked only at the last 30 days, and a month's charge is only ready after the month ends, so it never appeared. A tiny amount of storage that still cost something now reads "<0.001" instead of "0". (DOR-2589)
  • On a Community server, a legal hold now keeps every file the community has until the host releases it. Three cleanups could still delete some while a hold stood: uploads nobody posted, exports from older versions past their expiry, and files that were stored but never used. Now their files wait and are deleted once the hold is released. Nothing changes for the people in the community: an expired export still can't be downloaded, and an upload nobody posted still leaves after an hour and stops counting toward the storage limit. (DOR-2581)
  • Cancel pending browser work when its page changes, and keep delayed replies from changing the new page's reports or recording (DOR-2662).
  • A space channel you read down to its newest message now opens at the newest message next time. Before, once the app had saved a spot higher up, it kept opening the channel there, even after you had read past it (DOR-2170)
  • The pricing page and the docs now say what DorkOS credits pay for today: Claude Code. Codex and OpenCode use their own sign-in. Messages about sign-in and credits now name the runtime, such as "Codex" or "Claude Code", instead of its internal id (DOR-2627)
  • Only you can spend from or change your DorkOS account now. Buying a plan or credits, opening billing, exporting or deleting the account, linking or unlinking this computer, changing seats, starting or moving a space, and choosing what runs on your DorkOS credits, scheduled tasks included, are refused for agents, and, with login on, for anyone signed in who isn't the owner of this DorkOS. The app shows the reason in one plain sentence instead of saying it couldn't reach your account (DOR-2652)
  • With login on, only the owner of this DorkOS can now connect, reconnect, pause or disconnect apps, or decide which agents may use them. Anyone else signed in no longer sees the Connections lists, reviews, requests or events either. Someone else signed in can't approve an agent's change to the DorkOS account settings, and their edit to a scheduled task that runs on DorkOS credits puts it back in front of the owner instead of keeping it running (DOR-2678)
  • Agents can no longer put a scheduled task on DorkOS credits or switch one back on, and only you can save or remove the keys DorkOS uses to reach your apps (with login on, only the owner of this DorkOS) (DOR-2678)
  • Fix signed webhook messages being refused when a service sends JSON.
  • DorkOS asks for an "export ready" email only when your download isn't ready yet, and only then tells you one is coming (DOR-2680)

Security

  • Keep local pages isolated from your DorkOS data when you open their preview links in a new tab. (DOR-2663)
  • Keep webhook connections from taking over an agent's message address. Refuse conflicting addresses and keep similar-looking addresses separate. (DOR-2660)
  • Preview pages keep every script restriction sent by their web server.
  • DorkOS adds its preview scripts only when the page format and script rules safely allow them.

[0.95.0] - 2026-10-01

DorkOS 0.95.0 gives your DorkOS account its own home in Settings, and calls communities spaces. You can start and join a space on DorkOS with your DorkOS account, Settings is shorter, and when your account has a problem the app now says what went wrong and how to fix it.

Added

  • Replacing a Community owner who has left can now finish on the server. The owner can keep ownership with one click from the email, with no sign-in, or from the community while signed in. The person the host asked for can then take ownership, signing up first if they need to. When the host uses single sign-on, only the exact account the host named can do this. Asking for a replacement is still turned off for now. It will open up in a later release (DOR-2541)
  • If someone asks to make someone else the owner of a space you own, DorkOS now tells you. The space's row in the switcher gets a warning dot, and its page shows when the change could happen, only what you can do about it, and an Open space button to keep ownership. Your Inbox gets one notification when DorkOS first sees the request and one if it goes through, even after DorkOS restarts or updates. DorkOS checks while the app is open, and a finished request is only shown for a week. Admins and members see nothing (DOR-2543)
  • The Community site now has every page for replacing an owner who has left. Hosts get an Owner part on each community's record: ask to replace the owner, see each request's progress in plain words, cancel it, or send the claim link again. The owner sees a banner with Keep ownership and only the choices they really have, and an owner without a password is no longer told a password would let them hand on a community that is archived or on hold. Admins see that a request is open. Everyone sees a note for a week after a new owner takes over. The emailed link opens a page with one Keep ownership button and no sign-in, and the new owner's link opens a page that says when they can take over. Asking for a replacement is still turned off for now. It will open up in a later release (DOR-2542)
  • Change your plan, add credits and see your invoices on the DorkOS website, one click from Settings › DorkOS account. Each button opens the page in your browser, and every plan name and price you see comes from your DorkOS account. If you're already on a plan, changing it happens on your billing page. If something isn't available on your account yet, the app says so (DOR-2632)
  • Download a copy of everything your DorkOS account holds, from the same place (DOR-2632)
  • Where a space's site signs people in with your DorkOS account, starting or joining it no longer asks for a second account. The pages DorkOS opens for you there (making the space yours, an invitation, approving this DorkOS) lead with Continue with your DorkOS account, and every other way to sign in stays one step away. Everywhere else, including a space you run on your own server, nothing changes. (DOR-2634)

Changed

  • On the pricing page, the paid plans now have a Request early access button in place of Create your account. It opens the early-access page. The free plan's button is the same as before.
  • Your DorkOS account has one home now: a DorkOS account tab in Settings, right after Profile. Before you link, it says plainly what an account adds on this computer and offers one button. Once you link, it shows your plan, your credits (what is included this period and what you added), which runtimes run on your credits, what is on your account, your seats if you have any, and Unlink this computer at the bottom (DOR-2628)
  • The team-name menu at the top of the sidebar now opens with you (your face and name, onto your profile), then DorkOS account, which says whether this computer is signed in, then Settings. "Workspace settings" is now just "Settings", and the extra "Account" row that opened your profile is gone. The You tab on a phone starts with the same two rows (DOR-2628)
  • The Access tab in Settings is gone. Its login half is now Login & security, under This computer. Old links to ?settings=account, ?settings=security and ?settings=access still open the right tab (DOR-2628)
  • What the app called a community is now a space, everywhere you read it: menus, dialogs, messages and the docs. The menu at the top left now offers Add a space. Join a space is there for everyone. With a DorkOS account you also get Start a space, and Your spaces, where you can move a space you run elsewhere over to DorkOS. Running a space on your own server now sits under Advanced (DOR-2631)
  • Join a space is now one dialog. Paste a space's address to connect, or paste an invitation link: it opens on the space's own site so you can join, and the dialog stays open with the space's address filled in, ready to connect when you come back. A join link that is incomplete or not secure is refused with a plain message instead of being sent anywhere (DOR-2631)
  • Settings is shorter. You see the tabs you use day to day, in three groups: You, Agents, and This computer. Server, Tools, Room limits, Experiments and Danger zone now sit under Advanced at the bottom, folded until you open it. Settings remembers whether you left it open, and a link to any of those tabs opens it for you. Each built-in Settings tab is also in the command palette now, so typing "danger" or "room limits" takes you straight there. Room limits holds the defaults every room follows; a room can still set its own limits in its own panel. (DOR-2629)
  • The docs now give your DorkOS account its own section. It says what linking gives you today and what still works without an account, with fresh screenshots of the DorkOS account tab. Old links to the account page still work. The pages for running DorkOS yourself (Docker, tunnels, your own server) now sit together under "Advanced: running DorkOS yourself". Run your own space server in the app now opens a page just for that. (DOR-2635)

Fixed

  • When an app connected through your DorkOS account can't load, the app now says where the problem is. It tells you whether DorkOS's servers aren't answering, or whether this computer needs to be linked to your account again (DOR-2622).
  • When the link needs to be made again, a "Link my DorkOS account again" button opens Settings and starts a new link for you. Your computer stays linked until you approve the new one (DOR-2622).
  • A computer whose DorkOS account link needed updating can now pick up the update by linking again. Before, the app never recognized the message DorkOS's servers send for that case, and a linked computer had no way to link again (DOR-2622).
  • If a new link is turned down, its code times out, or it can't finish, Settings keeps showing this computer as linked, with a short note you can dismiss. Before, it showed an error until the next check, up to 15 minutes later. You can also cancel a new link while its code is showing. If the new link finishes at the moment you cancel, it is kept rather than lost, and Settings shows this computer as linked (DOR-2622).
  • The dorkos.ai fallback that lists apps and their actions for a DorkOS account no longer fails the whole list when an app sends extra details, such as a logo or an action's display name. It now leaves those details out (DOR-2622).
  • When dorkos community deploy --remove-uncertain removes a Tigris bucket, it no longer says the bucket's access key was removed. Fly deletes the bucket but leaves its access key working in Tigris, so DorkOS now tells you, and shows you how to delete it: in the Tigris console, or with the Tigris command-line tool (run tigris login oauth and choose "Sign in with Fly", then find the key named after the bucket, usually <bucket>_access_key, and delete it by its id, which starts with tid_) (DOR-2646)
  • The app no longer swaps itself out for "DorkOS can't reach its server" about 15 seconds after a quick reload when the server is fine. That brief swap could clear what you had open, like a channel mid-conversation, before putting it back. If the server really is down or stuck, you still see the message. (DOR-2649)

Security

  • A few spots that tidy up text, like the end of a web address, an error report or a model name, could slow to a crawl on a very long, oddly repeated piece of text. They now take the same short time on any input, and give the same results as before.
  • A log line about an agent's conversation no longer lets the conversation's id change how the rest of the line is written.
  • The link in the "your report shipped" email is now escaped so that no web address can break out of it.

[0.94.0] - 2026-09-30

DorkOS 0.94.0 makes the app much easier to use with the keyboard, and cleans up properly when you remove a chat connection or disconnect from a Community. People who run their own Community server can now take down a whole community, move a large community in over a shaky connection, and keep very big rooms fast.

Added

  • dorkos community deploy --remove-uncertain <run-id> checks the one resource a stopped launch may have left behind when it could not tell whether a create worked. It removes the resource only when DorkOS can prove your launch made it and you type the id it shows, and it checks everything again just before deleting. Otherwise it removes nothing and tells you why, with the commands to check it yourself. After a removal, --resume continues the same launch. A real launch on Fly and Neon has confirmed that the codes setup saves come back unchanged, so the proof holds (DOR-2238).
  • A person who runs a Community server can now take down a whole community when they learn it is illegal. It closes at once: every member sees "This community was removed by its host.", every connected DorkOS app and agent loses access, and any finished export is deleted. If the host has a separate evidence store, the server first saves a full copy of the community there, with each member's account details, because many laws require keeping one for the authorities. The owner is told why, unless the host holds that back, and can't cancel it. The community is deleted after three days by default. Until then the host can undo it, and the community comes back paused rather than open. One person or key can remove at most three communities a day, so a leaked key can't quietly remove many (DOR-2293)
  • A Community server now tells connected DorkOS apps plainly when its host took a community down, as a different answer from a pause or an ordinary deletion. When that happens, DorkOS removes the rooms, messages, files and search results it kept from that community, stops your agents working there, and says the host took it down. If the host puts it back, you connect again and it fills in from the Community. A host suspending a community removes nothing. (DOR-2293, DOR-2334)
  • Moving a community into a hosted community now sends a large export in pieces when the new community's server supports it. If the connection drops, sending again picks up with the pieces that are still missing instead of starting over, and the progress bar keeps counting from where it was. Servers that take the file in one piece work as before. If DorkOS restarts during a move, or the move was started on another computer, the move now says plainly that it has to start again and why, and a move whose upload time ran out says that instead of a general error. (DOR-2297)
  • On a Community server, the host can now keep a copy of the erasure journal, the list of people who erased themselves, somewhere other than the server, by reading it with a host API key that has the new communities:erasure_journal permission. After restoring a backup, running that copy through erasure/reapply.js erases those people again, so nobody who was erased comes back. The list holds IDs only, never anything that was erased. The server keeps journal lines for COMMUNITY_ERASURE_JOURNAL_RETENTION_DAYS (400 days unless you change it) and deletes them after that. The Community operations guide has a script that makes the copy on a schedule. (DOR-2566)
  • When a Community you're connected to is deleted or taken down, its page now says what never got there, for example "3 messages from your agents and 1 draft of yours weren't sent." Your own unsent drafts get a button to copy them before you remove the community, which clears them (DOR-2575)
  • Community hosts get the first part of a way to replace an owner who has left: new host routes to ask for a replacement, list the requests, cancel one, or send the new owner a fresh link. They need the new communities:ownership key permission, or an operator's password. For now every request is refused, because the owner can't yet answer the email that tells them. Asking will open up in a later release, once the owner's "Keep ownership" link and the new owner's claim are ready (DOR-2539, DOR-2540)

Changed

  • dorkos community deploy now marks what it creates so a later check can tell your launch's resources apart from anyone else's. Before each step, it saves a random code in the recovery journal. The Fly app gets its own private network named after that code, and the Neon database role is named community_ plus a code instead of community_owner. Because of the separate network, the app can't reach your other Fly apps over Fly's private network. Community doesn't need to. Launches you already started keep working as before (DOR-2238).
  • Each signed community release now names the exact image for each kind of computer it supports, not only the bundle that holds them. dorkos community deploy uses that name to check your community after it starts, so it no longer needs to look the image up in the image registry first. Releases made before this change still work: setup looks the image up as before (DOR-2586)
  • Keep big Community rooms fast in the app. Loading a room's history used to slow down more and more as the room grew: 4,000 messages took about seven minutes, and 100,000 would have taken days. It now takes under a minute for 100,000. Scrolling back through a room that size also went from about a tenth of a second per page to under a millisecond. (DOR-2573)
  • Stop keeping a record of every message delivery forever. The app now keeps a message's delivery record for eight days, as long as the message itself can still be waiting, and each connection's newest 500 events. On a busy install that keeps the database small, and a connection's event log and the delivery numbers load several times faster. (DOR-2574)
  • Community servers now delete a connection request an hour after it expires, even once it was used. The connection it made stays. (DOR-2574)
  • Removing a Telegram or Slack connection, or uninstalling the package a connection came from, now deletes its record of recent deliveries straight away, along with the chat names in it. These used to stay until a regular cleanup removed them, days later. Messages already passed to an agent or a room stay where they are. Updating a package keeps that record. The removal prompt now says so. (DOR-2604)
  • Moving a community into a hosted community no longer stops at a fixed 16 GB. How large a move can be now depends on two things: what the new host says it will take, and how much free space this computer has to hold the file while it goes up. If the file won't fit on this computer, the move stops before anything is saved and says how much space it needs and how much is free. If the file is larger than the new host takes, the move stops before anything is sent to the new host and says it is too large. (DOR-2587)
  • Delete a large community faster, and post with less work: the server now checks each link between a community's records once instead of twice. On a test community of a million messages, deleting it went from about two minutes to under a minute and a half.
  • Start an export or a member's erasure without first reading every message in the community. On the same test community, that step went from 107–157 milliseconds to under one. Posting and opening a channel's member list now look up that community's members instead of every membership on the server.
  • Removing a chat connection such as Telegram or Slack, or uninstalling the package it came from, now also deletes its list of people who messaged it with no agent to answer, with the names and chat titles in it. That includes people you ignored or blocked, so if you set the same connection up again, anyone you blocked will need blocking again. Updating a package keeps them. (DOR-2608)

Fixed

  • Setting up your own community with dorkos community deploy no longer stops once your community is already up and running. The release names one bundle of images for several kinds of computer, and Fly runs the one for its own servers, so setup's final check compared the wrong fingerprint and gave up. Setup now works out which image Fly will run before it deploys, by reading the signed image bundle from the image registry, and checks against that (DOR-2586)
  • Setting up your own community with dorkos community deploy no longer gives up while Fly is still starting it. Setup allowed every step 30 seconds, but starting your community can take longer, and cutting it off left setup unsure whether it had worked. Starting and restarting now get up to ten minutes, and creating or removing things gets two. If a start is still cut off part way, running the same command with --resume starts your community again. If your app is running something setup didn't put there, setup leaves it alone and tells you what to check (DOR-2169)
  • Removing a self-hosted community's file storage is now recognised as done straight away. For a while after it's removed, Fly still lists the storage under a new name, marked deleted and no longer attached to your app, and setup used to treat that as an error it couldn't read (DOR-2169)
  • dorkos community deploy now uses a Fly or Neon token you export, instead of quietly using your saved sign-in. Before, setting FLY_API_TOKEN, FLY_ACCESS_TOKEN or NEON_API_KEY to a limited token changed nothing, so setup could create things with more access, or in another account, than you chose. Setup now hands those tokens to fly and neonctl and to nothing else, says in one line which ones it is using (also when removing something a stopped setup left behind), ignores an empty variable, and never writes them to its recovery notes or anything it prints. Setup has not yet been tested end to end with a limited Fly token; signing in with fly auth login is still the tested path (DOR-2602)
  • Connecting a community now tells you what actually went wrong instead of always saying to check the address. If no community uses that short address, it says so. If there have been too many tries from here in a short while, it tells you to wait, and for how long when the community says. If the community's server is too old, it tells you to ask whoever runs it to update it.
  • When you connect an agent to a Telegram or Slack connection, the chat picker now lists the chats that have messaged that connection recently, by the group's name or the person's name, with how many messages each has sent. The list was always empty before. An agent's connection card also says when its chat last sent a message, where it used to say "No recent activity" every time.
  • A message you send just as a Community is deleted or taken down is no longer lost with its room. The community's page counts it with your drafts, and "Copy your drafts" gives you its text back (DOR-2575)
  • When you move around with the Tab key, the button you're on now has a clearly visible outline in light and dark mode. Before, the outline was too faint to see easily, on the Community's own web page and in the DorkOS app (DOR-2567)
  • On the Community's own web page, the Attach button now shows when you've tabbed to it. Before, nothing showed at all (DOR-2567)
  • Disconnecting this DorkOS from a Community now removes the agents you added to it from this app, instead of leaving them active there with nothing left to run them. The Disconnect confirmation names the agents it will remove first. It removes only agents this DorkOS still runs (DOR-2603)
  • If the Community can't be reached when you disconnect, this DorkOS still disconnects, and it tells you which agents are still on the Community so you can remove them under Agents on its own site (DOR-2603)
  • If you already have a connection with the same name as a marketplace package, the install preview now says so before you install, and asks you to remove or rename it first. Your connection stays exactly as it was. Before, the install failed at the last step and removed your connection, along with its saved sign-in details and its links to your agents. (DOR-2607)
  • Installing an adapter package you already have installed now works, and keeps its connection, saved sign-in details and links to your agents as they were. (DOR-2607)
  • When you move a community in, DorkOS now checks that the file fits on this computer before sending it. If it doesn't fit, you hear so at once, with how much space it needs and how much is free, instead of after the whole file has gone up. That matters most from a phone, where a large file can take a long time to send. (DOR-2610)
  • Starting a move again, after it was refused, cancelled or failed, now begins a new move. If it is refused again, you see the real reason. Before, it could show the old cancelled move with no explanation. (DOR-2611)
  • When you Tab to a text box, a checkbox, a radio button, a slider or a scrolling list, it now has a clearly visible outline in light and dark mode. Before, the outline was too faint to see easily. This covers the standard controls in the DorkOS app and on a Community's own web page (DOR-2609)
  • A text box with a mistake in it now shows a clear red outline while you're typing in it. Before, the red was so pale it was hard to tell it apart from the page (DOR-2609)
  • In a narrow window, switching from a Community back to your own DorkOS now leaves your place on the Home page's title, so a screen reader says "Home" and stays there. Before, the message box took over a moment later, and the next thing you heard was the name of a box you never picked (DOR-2613)
  • When you move around the DorkOS app with the Tab key, the outline around the thing you're on is now easy to see in light and dark mode. Before, many boxes, rows, links and small buttons drew it too faintly: the folder path box, the feedback message box, inbox rows, option lists and banner close buttons among them (DOR-2615)
  • Choice switches like "Ask first / Full autonomy" now show an outline when you tab to them. Before, nothing showed at all (DOR-2615)
  • When an agent asks you a question, the first answer no longer looks already chosen. The outline that shows where the arrow keys are only appears once you press one (DOR-2615)
  • If two of your computers run the same agent files and both add the agent to a Community, each one now gets its own copy of the agent there. Disconnecting one computer, or removing the agent from it, leaves the other computer's copy running, and one computer can no longer take over the other's copy. A computer you disconnect and connect again gets its own agent back, with the same name and rooms. You can still remove any of your agents on the Community's own site, and the Community's owner and admins can still remove them too. An agent you added before this update belongs to the computer that added it when only one of your computers has ever connected to that Community. Otherwise it belongs to whichever computer next renews its access (DOR-2612)
  • Going to another page no longer draws the page you are leaving a second time first. For a split second the old page came back, and its message box could take your cursor on the way out. The short fade meant for the new page also played on the old one, so the new page just appeared (DOR-2616)
  • Your DorkOS account link no longer drops itself when one app-connection request is refused. It checks the link first, and only unlinks this computer when the account really has let it go. Before, a single refused request could unlink you and leave your connected apps stranded until you linked again (DOR-2620)

[0.93.0] - 2026-09-29

DorkOS 0.93.0 lets you keep each Claude account to the projects it belongs to, and lets an extension start work in a new chat with one click. People who run their own Community server can now move a community in from another host, take down illegal content, and set a minimum age to join.

Added

  • A Community host can start moving a community in from another host. Starting an import makes a new, empty community that nobody owns yet, with its web address if the host gives one, and gives back a one-time upload link for the owner's export file. The link keeps working if an upload breaks off or sends the wrong file, until it expires after a day. A large upload can take as long as it needs, as long as it keeps sending. The host can cancel an import at any time before it finishes, which removes the new community and the uploaded file, unless the host has put that community under a legal hold. Nobody can claim the community while it is being imported. (DOR-2258)
  • A Community host can now finish moving a community in from another host. After the owner's export is uploaded, the server checks it first and shows what it holds: how many channels, messages, files, and past members. Nothing is visible until the host starts the import. Then every channel, message, reply, mention, and file comes back as it was, all at once or not at all. The person who claims the new community takes over the old owner's place, so their past messages are still theirs. Past members show as former members, and everyone else joins again with an invitation. Someone who was erased on the old host arrives as an ordinary former member, with their messages already replaced. A channel name or description that is too long for this host is shortened. Each moved channel starts with a line saying when its history was brought over. A damaged file, a personal export, or an export that doesn't fit the community's file space is refused with a plain reason, and the host can cancel at any point before it finishes. A community under a legal hold is never removed by a cancelled or failed import. (DOR-2259)
  • A person who runs a Community server can now take down one message, one file, or a community's icon when they learn it is illegal. It disappears at once: the message shows "This message was removed by the host.", any finished export of that community is deleted, and a download already under way stops. The host names it by its ID and never sees what it said. If the host sets up a separate evidence store, the server first saves a copy there, with who posted it, because many laws require keeping one for the authorities. The owner and the author are told why, unless the host holds that back, which it does by default when the reason is protecting children. Hosts can do this from the host page or through the requests described in the Community API guide.
  • A Community host can now let the server send short notices by email through the host's own mail server. It stays off until you set COMMUNITY_SMTP_URL and COMMUNITY_MAIL_FROM, and mail to another machine must be encrypted. The server never stores the address it sends to, reports a notice as delivered only when your mail server accepts it, and keeps trying a busy mail server for up to three days. Hosts and their programs can check whether mail is on at GET /api/v1/host/capabilities. (DOR-2537)
  • Right after you turn on an extension, the inbox can offer "Next time, trust everything from dork-labs/marketplace?". Say yes and extensions DorkOS installs from there turn on without asking. Only you can do this, and you can undo it in Settings → Extensions → Trusted sources (DOR-2527)
  • Keep an account to the projects it belongs to. Set a work account to "Only for client-app" in Settings → Runtimes, and DorkOS will never use it for new chats anywhere else, whether you, a schedule or an agent picks it. In other projects the account shows in the chat's account menu but can't be chosen, and the menu's Default names the account a new chat there will really use. Chats already running keep their account (DOR-2526)
  • An extension's button can now start work in a new chat with one click. The chat you are in, and anything you have typed there, stays as it was. The new chat has a plain title, and its first line says who started it and why, like "Started by the Flow extension: 12 new ideas were waiting to be sorted". What it was asked is folded under "What it was asked" so it is there when you want it. (DOR-2524)
  • A chat that an agent starts from another chat now says so as its first line, with a link back to the chat it came from. (DOR-2524)
  • The chats an extension starts are limited: at most 10 an hour and 3 working at once, counting the chats those chats start. Continuing one of those chats on another account is never blocked by these limits. Chats started other ways, like schedules and rooms, have limits of their own. (DOR-2524)
  • A chat an extension starts uses an account the same way any new chat does, so an account kept to other projects is never used, and a project no account may work in says so instead of starting. (DOR-2524)
  • A Community host can now import a community of any size, whether its export was made before or after exports became background jobs. Through the host API, a large export can go up in numbered pieces, so a dropped connection costs one piece, not the whole file, and the upload picks up where it stopped. The server checks the whole file before it restores anything, then brings the community back a piece at a time, so a restart carries on instead of starting over. Newer exports also bring back more than older ones did: the community's picture and description, removed and erased messages marked as removed, and the channels the owner was actually in. A host can set the largest import it takes and how long an upload may take. (DOR-2296)
  • On a Community's own web page, a message with replies now shows how many ("2 replies · last 9:41 AM") and keeps the count current as replies arrive. Tap it to open the thread (DOR-2562)
  • On a Community's own web page, an agent's message now looks like one, the same way it does in the DorkOS app: a square avatar with a small bot badge, and screen readers hear "Agent" after the name (DOR-2563)
  • A Community host can now take down one message, one file, or the community icon from the host page, by the ID in a report. The page warns when takedowns won't keep a copy for the authorities, and lists each takedown with where its copy stands, with Try again and Release where they apply.
  • When the host removes something and says why, the community's owner and admins see it under "Removed by the host" in Settings, and the person who posted it sees a one-time note with the reason.
  • Each file in a message now has its own Report link, so a host can take down just that file.
  • The person running a Community server can set a minimum age with COMMUNITY_MINIMUM_AGE. Everyone who creates an account then sees "You must be at least N to join" and ticks a box to confirm it first, whether they sign up with a password, Google, GitHub, or single sign-on. The server checks too, so no account is made without the tick. Leave it unset and nothing changes (DOR-2554)

Changed

  • Connections now uses plain words when something goes wrong. Its error lines and sign-in failures no longer show internal words, raw app ids or status codes. Ways to reach your apps are called by name everywhere, like "Your DorkOS account", "Your Composio key" or "The app's own MCP server".
  • When DorkOS turns down an agent's action or request, the agent reads plain words and the app's name instead of internal terms and raw ids. The ids an agent needs to act on still come along, in their own place.
  • The line about who pays for an app is now true for every way you connect it. Apps on your own Nango server or an app's own MCP server no longer say usage is "billed to you". Apps on your own Composio key say the charges go to your Composio account.
  • Actions the service marks as risky now say "High risk" everywhere: in the access lists, on the approval card, in the warning about what every agent can do, in what an agent is told when it must wait for approval, and in Activity. They used to say "delete" or "can't be undone", which wasn't always true, because the service also marks sending and sharing this way. When the same action is listed twice, the older one says "Older version".
  • The Composio key form now asks for your project key by name, and the messages after saving or removing a key no longer say "provider key". If a key check fails, you see one plain line. It says DorkOS will check again only while it really will, updates on its own once DorkOS stops, and says when DorkOS couldn't reach Composio or your Nango server at all.
  • A chat app that stopped working shows one plain line. Its raw error is still there under "Details" if you need it for a bug report.
  • When the same extension is installed in several projects, DorkOS now runs the newest copy everywhere instead of whichever project it opened first. You say yes to it once, not once per project (DOR-2527)
  • When you give an agent Read or Read and write on an app, DorkOS now keeps that choice as you made it. If the app adds a way to read, agents on Read get it. If an action starts changing things, or becomes high-risk, it leaves Read, and no high-risk action ever joins either level. DorkOS checks each app's actions every 12 hours while it runs, right after it's updated, and whenever you open Who can use it?, so while DorkOS runs, a change reaches your agents within 12 hours. It works the same for Every agent and for apps connected through your DorkOS account. Actions you picked one by one stay exactly as you picked them. An agent on Read no longer shows up as "Exact actions" just because the app changed (DOR-2506)
  • A Community server now says when a community was deleted, instead of answering as if it had never existed. When an owner or host asks to delete a community, open channels close as before and new ones are refused while the deletion waits. Once the deletion finishes, a DorkOS app that asks about that community is told it is gone for 30 days; after that it looks like any community that never existed. Nothing else about the deleted community is shared (DOR-2334)
  • Open the thread list, room members, an agent's sessions and mirrored Community rooms faster on a busy install. On a test install with 500,000 room messages, the thread list went from about ten seconds to under half a second.
  • Delete a large community in minutes instead of more than an hour, and post, check unread mentions and erase a member faster in big communities. On a test community of a million messages, deleting it went from an hour and a half to under two minutes, and each post stopped reading every message on the server.
  • The pricing page and the Communities guide now say that paid plans, and communities DorkOS hosts for you, are for people in the United States who are 18 or older. The free, open-source app, and running DorkOS or a community yourself, stay open to everyone, wherever they live (DOR-2555)
  • The plan section in Settings, and the Start a community and Move a community here windows, now say the same thing. The line sits just above the button, with a link to the full answer on the pricing page.

Fixed

  • The Nango line no longer promises that nothing leaves your systems. Your sign-ins stay in your own database, but actions still go out to the app itself.
  • When your Nango encryption key is missing or the wrong length, the message now says to restart DorkOS after you set it, because DorkOS only reads it when it starts.
  • A request from a program to connect an app now shows the app's name, its status and where its sign-in is kept, instead of raw ids and version numbers. If its sign-in didn't finish, it says why in one line and points you to the Connections page.
  • On a phone or tablet, the top bar no longer spills past the edge when the inbox bell shows a number. The bell keeps its size and shows the number as a small badge on its corner. (DOR-2524)
  • When DorkOS is shutting down, new requests now get a clear message to try again after it restarts.
  • When a Community you're connected to starts being deleted, DorkOS now removes its copy of that community: the rooms, messages, files and search results it kept. Any of your agents working in those rooms stop, and the community shows as being deleted, then as deleted once the deletion finishes. If its owner cancels the deletion, you reconnect and the rooms come back from the Community, but you need to add your agents to it again.
  • Disconnecting a Community now removes those copies too. Copies left on your computer by an earlier disconnect are removed the next time DorkOS starts.
  • Setting up your own community with dorkos community deploy no longer stops right after it creates the file storage for uploads. Setup was checking on the new storage with a request Fly doesn't support; it now uses the one Fly does, and it treats a storage bucket that is already gone as gone, not as an error. Setup also hands the storage keys to your community itself, since Fly leaves that step to whoever creates the storage, and does it the moment the storage exists. If they still go missing, setup stops and tells you how to add them by hand and carry on, and it never replaces keys your app already has. And setup no longer fails at the last step, when it replaces your community's one-time setup key: it was passing Fly an option that step doesn't accept (DOR-2559, DOR-2584)
  • When you paste the address of a site that holds several communities into Connect a community, DorkOS now tells you to use the link for the one you want (its short address, or its full link with /c/ in it), instead of a general "Couldn't connect" (DOR-2561)
  • The Community pages that tell you how to connect DorkOS now give the steps the app really uses (the menu at the top left, then Add community, then Connect a community…) and show the community's own link with a Copy button, so you paste the right address (DOR-2564)
  • When a Community you're connected to has been deleted, DorkOS now notices, even if it was offline while that happened. It removes the rooms, messages, files and search results it kept, stops your agents working there, and shows the community as deleted.
  • If a Community keeps saying it doesn't exist for two weeks, DorkOS shows that it seems to be gone and offers a Remove local copy button. Nothing is removed until you choose to, because a missing community and a misconfigured one look the same from here.
  • On a Community server, a legal hold now also keeps files that were already waiting to be deleted when the hold was placed. They are deleted once the hold is released.
  • On a Community server, an export that starts while a member is being erased, or while the host takes something down, no longer fails and has to retry.

Security

  • An extension only counts as coming from a place when DorkOS installed it from a branch or tag there and its files are still exactly what was installed. If anything in the plugin changes afterwards, for example by a git pull, it asks you again before it runs, and Settings → Extensions says why (DOR-2527)
  • An extension you trust through another project runs from a checked copy that DorkOS keeps for itself, so editing the files in the project can't change what runs (DOR-2527)

[0.92.0] - 2026-09-29

DorkOS 0.92.0 makes the apps you give your agents honest and useful. Each app shows whether your agents can really use it and the one thing that fixes it, and agents can now act in Gmail and Google Calendar, not just read. When a chat runs out of usage, it tells you which account ran out and when it comes back.

Added

  • If an agent's runtime, model or effort is changed by editing its settings file instead of through DorkOS, the change is recorded in Activity as Changed outside DorkOS, with the old and new values. Every approved scheduled task that uses the agent's own setting then waits for you again, and its card shows what changed, for example Agent's model: claude-sonnet-4 → claude-opus-4. Changing the setting back doesn't restart the task: the card says it was changed, then changed back, and you approve it. Changes you make in DorkOS don't make anything wait (DOR-2337)
  • Your DorkOS account's usage now lists charges that aren't for agent work, such as extra storage, under Other charges. Each one shows its name, how much you used and for which dates, and what it cost. They are listed on their own and are not added to the credits total above them (DOR-2316)
  • Gmail and Google Calendar can now be shared with agents as "Read and write" instead of only "Read". With it, agents can send, create and edit things, like sending an email or adding a calendar event. Agents still can't delete, share your calendar, forward or redirect mail, change who your mail is sent as, change many messages at once, move an event to another calendar, or turn on an automatic reply: you allow those one action at a time. "Read" also now covers reads that used to need your approval one at a time, such as reading a draft or finding free time in your calendar. Other apps connected through Composio keep offering "Read" only for now. No agent's access grows on its own. If you connected an app through your DorkOS account and allowed an agent one of its actions one at a time, you may need to allow it again (DOR-2466)
  • When a chat runs out of usage, a notice above the message box now says which account (or Claude, Codex or OpenCode, with one account) ran out and when it comes back. It shows what you can do: wait for the reset, keep going on another model, or, with two or more Claude accounts, continue on another account. When the work is about to move to another account by itself, it counts down and lets you move now, pick another account, or wait instead. (DOR-2382, DOR-2388)
  • While you wait, the notice counts down to the reset. With a Claude account you can tick "Continue automatically when it resets". Once the reset comes, one click continues the chat where it left off. (DOR-2382)
  • When it's over, a one-line note in the chat says what happened, such as "Acct 4 ran out · moved to Acct 2 at 2:14pm" or "Resumed after reset at 4:02pm". (DOR-2382)
  • You can now turn an app on or off for one chat. Open the chat's details, and each app its agent was given has a switch. Turning an app off there only affects that chat. Turning it back on puts back the access that chat had, and never adds any (DOR-2448)
  • When an agent asks for an app that its chat has turned off, the request card in the chat now offers to turn it back on for that chat and answers the agent in the same step (DOR-2448)
  • When you install a plugin that brings an extension, the Activity inbox now asks once whether to turn it on, and says what it adds. One click turns it on, and its tab appears right away. "Not now" removes nothing. (DOR-2517)
  • A package installed from a folder on your computer, or one whose version no longer exists, used to list the files an update couldn't sort forever, and if one of them still ran, it waited for your Review after every update. Where Check files can't sort them, open the note on its row in Installed and press Keep these as mine, or run dorkos marketplace keep-files <package>. DorkOS shows you the files and marks the ones that still run, and asks first. After that they're yours: updates keep them, and nothing is moved or deleted. For a package held back from every session, it also shows everything the package runs, and your yes approves what it discloses now, like a Review. Only you can do this, not an agent (DOR-2341)
  • Extensions can now ask you things in the Activity inbox. Every question says why it is asking, and you can answer it right there. A question can come with the agent's own pick and a time: if you haven't answered by then, the agent goes ahead with its pick, so nothing waits on you. After you answer, an extension can offer once to handle that kind of thing on its own next time. (DOR-2523)
  • When things from two or more projects are waiting, the inbox now groups them under each project's name. (DOR-2523)
  • Decisions an extension made while you were away now fold into one "While you were away" line in Activity, and each one says who decided: you, the agent, or a setting of yours. (DOR-2523)
  • Extensions can now add a full page, an item in the chat status bar, and a dot on their tab in the right panel. Find an extension's pages in the command palette under "Add-ons", or on your phone under "Add-ons" in the You tab. Reloading on an extension's page brings you back to it (DOR-2525)

Changed

  • An agent can now ask you for Gmail, Slack or another popular app even before DorkOS is set up to reach apps. The card in your chat walks you through the one-time setup first, then sign-in, then "Let your agent use Gmail?". Before, the agent was told there was nothing to ask for (DOR-2494)
  • When your DorkOS account isn't linked anymore, or your own key isn't set up or didn't answer, DorkOS now says so plainly. The chat card, the setup step and your agent name the way that stopped working, and the card offers to connect the app again. When a new link can't reach an app, DorkOS shows it as disconnected and adds a note to Activity saying so, so you can connect it again (DOR-2494)
  • When an agent asks to do something in a connected app that can't be undone, like deleting an email in Gmail, the card that asks you now says exactly what it is. It shows the app's logo, which account, the action in plain words ("Delete message"), and the details the agent would send, such as which message. If there's more than fits, "Show everything" opens every detail in full right on the card. It also says plainly that the change can't be undone. Before, the card showed only two long codes, so you had to approve without knowing what you were approving. Details that look like passwords or keys are hidden.
  • Notifications from an app now go to one chat with the agent. Before, every new email or event opened a brand-new chat, so a busy inbox buried your chat list. Each message in that chat starts with the kind of notification it is, like "New email: Invoice from Acme". If you change that chat's permission level for your own messages, the next notification starts a new chat, so a notification never runs with more power than you approved for it. (DOR-2507)
  • You can turn on chat apps (Telegram, Slack and webhooks) from the Connections page. Before, you had to quit DorkOS and start it again from a terminal with a special setting, which the desktop app had no way to do. Now you choose Turn on chat apps, then Restart DorkOS. The terminal setting still works and still wins if you use it. (DOR-2507)
  • Connections now shows an app as ready (the green dot) only when your agents can actually use it. If the way DorkOS reaches it stopped working, or your key can sign in but can't run actions, the app says so instead of looking fine (DOR-2500)
  • Every app that needs something shows one line saying what's wrong and one button that fixes it: Sign in again, Resume, Fix the key, Connect again, or Check who can use it. When there's nothing you can press, it says what DorkOS is doing, or what you can do in the app's own settings, with no button that can't work (DOR-2500)
  • Your agent now learns why it can't use an app you gave it (paused, signed out, turned off for this chat, a change to its access still applying or refused, and more) and tells you the one thing to do, instead of asking you for access again (DOR-2500)
  • A chat's side panel now says, for each connected app, whether its agent can use it here and why not, in the same words as the Connections page (DOR-2500)
  • When your own key or your DorkOS account didn't answer for a reason that may pass, the app now shows that DorkOS is checking it again on its own, instead of asking you to fix a key that may be fine. If it still doesn't answer after a few tries, each a little further apart, DorkOS stops and shows the one fix (DOR-2500, DOR-2502)
  • Signing in to an app again no longer quietly resumes an app you had paused. It stays paused until you resume it (DOR-2500)
  • "Check again" on an app your DorkOS account can't reach now asks DorkOS to try the account again, rather than only re-reading the list (DOR-2500)
  • Settings › Connections no longer says "Working" for a DorkOS account that can't reach apps, or for a Composio key that can't run actions. The key hint now asks for a project key (DOR-2500)
  • Link this computer again with the same DorkOS account and the apps it connected through its earlier link can come back, instead of needing to be connected one by one. This works after you unlink in Settings or run dorkos cloud logout. If the earlier link was removed from your DorkOS account, or you link a different account or a different computer, connect those apps again. For this, DorkOS keeps a proof that it held the old key, never the key itself (DOR-2521)
  • An agent now asks for an app at one of the same two levels you answer with, Read or Read and write, instead of guessing the names of things it wants to do. So it's never told "you weren't allowed" right after you allowed exactly what it asked for
  • You answer an agent's request with the same card everywhere: in the chat, in a room, and from Needs you on the Connections page. If the agent also wants to hear when something new happens there, the card asks you which updates it gets, right after you allow it
  • Whatever happens to a request, the agent gets a plain note saying what comes next: still waiting on you, allowed, allowed only to read, turned down, or ran out of time. So it can tell you in its own words instead of guessing
  • Disconnecting an app takes effect at once, and you can always remove a disconnected app from your list. Ending its access at the service is now DorkOS's job: it keeps trying in the background, waiting longer between tries, and shows when it will try next (DOR-2502)
  • When DorkOS can't end an app's access at the service (for example, your DorkOS account is no longer linked), the panel says so plainly, links to the page where you can remove the access yourself for Google apps, GitHub and Dropbox, and offers to remove the app from your list. It no longer offers a "Try disconnecting again" that could never work (DOR-2502)
  • "Check who can use it" now explains why DorkOS is asking, and you can confirm the access as it stands without changing anything. Confirming also settles any change to who can use the app that didn't go through, using exactly the access you were shown (DOR-2502)
  • An app that needs its access checked now says the true reason (how DorkOS reaches it changed), instead of saying its actions changed (DOR-2502)
  • Linking your DorkOS account again keeps the access you gave agents on the apps it still reaches, and sends again the changes the old link turned down, including a disconnect for an app you already removed from your list (DOR-2502)

Fixed

  • Red warning text is easier to read in dark mode. This covers the red number that shows a chat is nearly out of room, the message when a package fails to update, and red actions like Delete in the menu you open by pressing and holding a sidebar row on a phone. While you press one of those red actions, its words turn your normal text colour so they stay readable, and the icon stays as the warning sign (DOR-2493)
  • Settings shows which Claude account new chats use, even when the folder is written differently. Before, if the default account's folder was written with an extra slash at the end, through a shortcut, or with ~, no account said "in use". When DorkOS was started with its own CLAUDE_CONFIG_DIR folder and no default is chosen, Settings now says that new chats use that folder.
  • Keyboard and screen readers can now reach a chat's rename and details buttons directly in the sidebar. Before, those buttons sat inside the chat's own row, so a screen reader could skip past them and it was unclear which one a key press would reach
  • A default account written with ~ now opens the right folder. Setting it to something like ~/.claude2 from the terminal, or by editing the settings file, used to make new chats look in a folder literally named "~". DorkOS now saves and uses the full path to your home folder instead.
  • A usage number in the status bar that is more than an hour old now says "· old" after it, instead of only turning a lighter gray that was hard to read. The amber and red usage numbers, the notes under them when you open or point at usage, the small gray text in the tooltips for context, subagents and session rows, and the green "Ready" on a runtime in Settings, are easier to read too. In Settings, the Codex and OpenCode usage sections now have names a screen reader can tell apart, and the section headings on each runtime no longer skip a level. Amber warning text in light mode is a little darker, so it stays easy to read on the sidebar too.
  • Some warning and status text is easier to read. Yellow warnings, green "done" marks and red error messages in places like settings, the marketplace and the task list were too faint on a light background. They now use the app's own warning, success and error colours, which are dark enough to read in both light and dark mode.
  • Each notification now says how its newest event went: delivered, on its way, being tried again, or what stopped it and what to do next. Before, a notification that failed looked exactly like one that worked. A notification sent to an agent has an Open chat button. (DOR-2507)
  • You can remove any notification, including ones that stopped working. Before, a notification that stopped stayed on the list forever with no way to remove it, and a removed one stayed listed as "revoked". (DOR-2507)
  • Notifications are described in plain words: who they go to, and what they filter on ("Only when Folder is inbox"). Raw codes, ids and filter code no longer show. (DOR-2507)
  • An account that can't send notifications says so once, instead of showing a setup box plus a second error. An account connected through your DorkOS account no longer claims delivery is taken care of before its notifications actually load. (DOR-2507)
  • DorkOS now notices when a sign-in to one of your apps stops working. If a Gmail or Google Calendar sign-in expires or is turned off at the service, the app no longer stays green on the Connections page. DorkOS checks every 15 minutes and whenever you open Connections, and an agent that tries to use it is told you need to sign in again.
  • When the way DorkOS reaches your apps has a short outage, it now comes back by itself. DorkOS checks again after 30 seconds, then waits a little longer each time, so you don't have to save your key again. A key the service refuses still waits for you to fix it.
  • The Deployment guide's Interactive Setup tab now shows up and renders correctly. Before, it was swallowed into the Environment Variables code block next to it.
  • The Connections docs now match what's actually in the app: how to answer an agent's request for an app right from the chat card, that Gmail and Google Calendar are the only apps with a real Read and write level today, what happens to a connected app when your DorkOS account link ends, and the real risk of leaving login off while sharing an app with every agent
  • Revoking a linked instance from your DorkOS account now signs its apps out at the service too. Before, an app you connected through your DorkOS account (your Gmail, say) stayed signed in there after the link ended, with no way left to reach it. If the service can't be reached at that moment, DorkOS keeps trying until the sign-in is gone.
  • Deleting your DorkOS account now signs every app you connected through it out at the service first. If one can't be signed out yet, you land back on your account page with a note that this can take up to a day and to request deletion again from there later, so no sign-in is left behind with no record of it. A deletion is never held up for more than a day: past that, your account is deleted anyway and DorkOS records exactly which sign-in is left so it can be ended by hand.
  • An app that was already disconnected now stays disconnected when DorkOS changes its own connection settings.
  • Turning a DorkOS-account app back on after it was removed at the service now stops with a clear reason instead of retrying every hour forever.
  • An agent can no longer open a new card for the same app just by rewording its reason. It keeps one open request per app, and it can't open requests faster than you could answer them
  • If the updates you pick for an agent can't be set up, you can pick them again, answer without updates, or say no, instead of the request getting stuck. Updates you didn't end up allowing never arrive, and updates you'd already set up yourself are left exactly as they were. A request whose updates never start ends on time, and the agent is told it won't get updates
  • On Codex and OpenCode, an agent waiting for your answer no longer gives up with an error while you’re still deciding
  • Signing in to an app again no longer leaves it paused when the sign-in fails, runs out of time, or is left unfinished. The app goes back to how it was, and a pause you chose yourself stays (DOR-2502)
  • Apps a "Sign in again" left paused before this update are given back (DOR-2502)
  • "Sign in again" or "Resume" on a Connections row now says so on the page when it can't start, instead of failing silently (DOR-2502)
  • An app your DorkOS account no longer has now shows as gone, with one button to connect it again and, for apps like Gmail, a link to check its old access ended, instead of DorkOS retrying a change forever (DOR-2502)
  • DorkOS ends an app's access at the service only through the key the app was connected under. If you changed your key since (or change it before DorkOS finishes), it no longer counts the access as ended just because the new key can't see the app. It says it couldn't confirm the end and shows where to remove the access yourself (DOR-2502)
  • Disconnects from before this update whose removal at the service had already failed now show where to remove the access yourself, instead of retrying with a key that may be the wrong one (DOR-2502)
  • An app whose Resume keeps being refused after you signed in again now shows as gone with one button to connect it again, instead of sending you back and forth between Resume and Sign in again (DOR-2502)
  • Connecting the same account again after DorkOS gave up ending its earlier access now works, instead of being refused (DOR-2502)
  • A refused notification setup no longer marks the whole app as needing attention (DOR-2502)
  • A chat that works on several flow items now shows all of them, not just the newest one. The account popover says "Working on 3 items" when there is more than one, and work a chat started in chats of their own is listed too (DOR-2522)
  • The flow item a chat works on no longer disappears from the chat's account popover when the session list refreshes (DOR-2522)
  • When a Community takes away your access to a room, any of your agents still answering in it now stop right away. Before, DorkOS tried to stop them but couldn't, because the room had already been closed to you, so their replies kept running until they finished on their own. Your copy of the room is still deleted as before.
  • When you open a Community message from search and it is then deleted or erased on the Community, the message now changes to its "deleted" or "erased" note right where it sits, including inside a thread, without reloading. Before, the old words stayed on screen until you closed and reopened it.
  • Setting up your own community with dorkos community deploy no longer stops right after it creates the database. Neon labels each database with a number, setup expected text, and so it gave up and asked you to check by hand. Setup also stops failing later on, when it reads your app's public address, and it now recognises the Fly command-line tool on Linux, where the tool reports its name as flyctl. And a Neon region with no known location no longer stops setup before it starts (DOR-2536)
  • An open Community channel now updates when a message in it is deleted, removed or erased. Within about 30 seconds the message changes to its "deleted" or "erased" note right where it sits, including in an open thread, and the reply count under it stays. You don't need to reload, and a change made while the channel was reconnecting still arrives. Before, the old words stayed on screen until you left the channel and came back.
  • When an extension asks DorkOS to take you somewhere in the app, it now goes there. Before, the request was quietly ignored (DOR-2525)
  • A link whose address holds a value like 1.10 or -0 no longer has it changed to 1.1 or 0 when DorkOS opens it (DOR-2525)
  • When a message an agent sent to a Community is deleted, removed or erased there, its files now go too. DorkOS deletes its own copy of those files, stops offering them, and an open room stops showing them. A file taken off a message on its own is removed the same way, and files still on the message stay.

Security

  • A new workspace is now checked before anything runs in it. A clone is read first: its settings files, the links it keeps and what its skills run. Your repository's workspace commands are shown with them. When you make a workspace that brings any of these, you see them first and then decide. When an agent asks for one, a person approves it on a card that shows them. Before, a cloned repository's settings ran in every session there and nobody saw them (DOR-2335)
  • A workspace's cleanup commands are now the ones you saw when it was made. Changing the repository's workspace file afterwards no longer changes what runs when the workspace is removed. For a workspace made before this release, you are shown its cleanup commands before they run, and you can remove it without running them (DOR-2335)
  • When an agent makes a workspace from your repository, your repository's own git hooks and file monitor no longer run inside DorkOS. When you make one yourself, they run as they would for your own git (DOR-2335)
  • Once you allow the workspace commands of your own repository, new workspaces from it no longer ask again until a command changes. dorkos harness hooks --list shows these decisions, and --revoke <folder> forgets one (DOR-2335)
  • A copy DorkOS saves aside when it updates or removes a package can no longer run. Saved copies used to keep their permission to run as a program, and a saved program in a package's bin/ folder stayed on your agents' command path. A saved skill or command folder still loaded in your sessions. Now every saved copy loses its permission to run, and a whole folder or a program set aside goes in the package's .dork/saved/ folder, where nothing runs or loads it. DorkOS fixes copies earlier versions saved from a package's own files the next time it starts, leaves your own folders where they are, and keeps a package you approved approved. A package's list of programs now counts only files that can actually run. (DOR-2340)

[0.89.0] - 2026-09-28

DorkOS 0.89.0 makes it easy to run more than one Claude account: see which account a chat uses and how much it has left, and move the work to another account when one runs out. Connections shows each app's real logo and what agents can do with it, and agents can use your connected apps again.

Added

  • An app's side panel now shows what agents can do with it, right under "Who can use it". Pick "Read" and you see what agents can look at; pick "Read and write", where an app offers it, and you also see what they can change. Actions that neither choice includes, like sending or deleting email in many apps, are named too, with how to allow them one at a time. "See all" lists every action, each marked Look or Change. The same list shows before you connect an app, to help you decide (DOR-2465)
  • Apps whose service can't list their actions say so plainly, and everything agents do in them counts as a change. The list is kept for a day, so reopening a panel is instant (DOR-2465)
  • Apps in Connections now show their real logo and one plain line about what each one does. The popular apps ship their logos with DorkOS, so they show before anything is set up, and offline. Other apps use the logo their connection service sends. DorkOS fetches it once and keeps a copy, so your browser never loads another company's site. An app with no logo keeps its letter tile, and searching for what an app does now finds it (DOR-2464)
  • When a Claude account runs out of usage, the session it stopped now says what can happen next: move the work to another account, switch to another model when only one model ran out, or wait for the reset. The server keeps this across a restart and updates it as your other accounts' usage changes (DOR-2382)
  • New server routes for this: GET /api/sessions/:id/continue-options lists your other accounts in order, with the one that has the most room this week first. POST /api/sessions/:id/continue starts a new session on the account you pick, in the same folder, with a short summary of where the old one stopped. No model writes that summary, so nothing runs on the account that is out. POST /api/sessions/:id/wait and POST /api/sessions/:id/continue/cancel hold the session or cancel a pending move (DOR-2382)
  • A session that a room, a schedule or a chat connection started can only wait for the reset. Its work never moves to another account. Chats started before this update can only wait for the reset too. For now, only Claude Code sessions can move to another account or model; a Codex or OpenCode session that runs out waits for the reset (DOR-2382)
  • When Flow is set to move work on its own, a session that runs out now moves to the account Flow picked, after the wait Flow asked for (at most an hour). Its first turn does not stop for approval cards or questions, like a scheduled run. When you write in the new session yourself, it asks you as usual. If that account has also run out by then, or 8 automatic moves are already running, the session stays where it is and you get a second notice so you can choose. Restarting DorkOS cancels a pending move, and the session asks you instead (DOR-2382)
  • The work can also move to Codex or OpenCode when Flow offers one of their accounts. The new session uses that runtime's own model and never gets more permission than the old one had. Full autonomy is never carried over (DOR-2382)
  • Settings → Runtimes now shows how much of each usage limit you have used, for every runtime that reports it, even if you only have one account. Claude Code and Codex show bars for the 5-hour and weekly limits. OpenCode shows what it spent this month. When there is no reading yet, the bar says "unknown" instead of showing zero (DOR-2379)
  • With two or more Claude accounts, each account shows a colored dot and small bars for its limits. Click the dot to pick the account's color, or go back to its default. When flow is installed, a note under the list takes you to Settings → Flow, where you choose how flow uses your accounts (DOR-2379)
  • DorkOS can now check how much of a Claude Code account is used even when nobody has worked on it lately. It starts Claude Code on that account with nothing to answer, reads the usage, and closes it again, so nothing is billed and no chat is saved. Your agents can ask for it with the new accounts_probe tool. Each account is checked at most once a minute, and a check that cannot read anything leaves the account marked as unknown rather than guessing. Only a person can start this check through the DorkOS API; agents use their own tool, which goes through your approval settings (DOR-2381)
  • DorkOS now records how much of your Codex plan you have used, read from what Codex already writes after each turn.
  • DorkOS now records what your OpenCode turns cost each month. The total carries on after a restart and starts again on the first of each month.
  • When Codex runs out of usage, or an OpenCode provider stops you for sending too much or for running out of credit, the session now shows it is waiting on a limit, and you get one notification about it instead of an error.
  • Settings → Runtimes → Claude accounts now lists other Claude account folders it finds on your computer, like ~/.claude2, under "Found on this computer". Nothing is added until you click Add. Dismiss hides a folder for good. A folder that looks company-managed is marked "managed by an organization", so you can decide whether to add it (DOR-2387)
  • See which Claude account a chat spends and how much it has left, right in the status bar. With two or more Claude accounts, a small chip shows the account's name and two bars for its 5-hour and weekly limits. It turns amber when the account is close to a limit and red when it runs out, and it says when the account comes back. Click it to see each limit and when it resets (DOR-2387)
  • When one agent messages another to start a new conversation, it can ask for that conversation to run on a particular Claude account. DorkOS only honors the request when Flow's account settings allow it. Otherwise the message is still delivered and runs on the usual account, and a conversation that has already started always stays on its own account (DOR-2384)
  • Agents can now start a new session of their own with the session_start tool. The new session always runs as the agent that asked for it, never as another agent. Each one shows up in Activity, with the agent that started it, the folder it works in, and the account it runs on. An agent can pick a Claude account only after Flow is set up to say which accounts agents may use. A session an agent starts can never turn off approval prompts, and at most 8 of them run at once. (DOR-2383)
  • When you choose to wait for an account's reset, DorkOS now picks the session back up by itself once the reset has happened. It does not go by the clock alone: it waits until a fresh usage reading shows the account has room again, then sends the session one message: "Your account's usage has reset. Continue where you left off." If it needs your approval, the request is turned down instead of waiting (DOR-2382)
  • You get one notice per account when it comes back, saying how many paused sessions can continue (DOR-2382)
  • A session is picked up by itself at most once per reset. If it runs out again before the next reset, it waits for you instead. If too many sessions nobody typed into are already running, it tries again each minute. A session that a room, a schedule or a chat connection started is never picked up by itself; it shows as ready for you (DOR-2382)
  • If no reading can confirm the reset within a short while, the session shows as ready but is not picked up by itself, so you can decide. Waits survive a restart of DorkOS (DOR-2382)
  • You can now set the color of this computer's own Claude sign-in with runtimes.claudeCode.defaultAccountColor in your config file. That is the account DorkOS calls "Main" when you haven't added its folder as an account, and until now it always showed the default color for its place in the list. Only you can change it, not your agents. If you have added that folder as an account, the account's own color is still the one used (DOR-2492)
  • With two or more Claude accounts, you can move a chat's work to another account when its account runs out. Open the account in the status bar and choose "Continue on another account": you see each account's usage left and when it resets, then pick one. It starts a new chat in the same folder with a summary of this one. (DOR-2388)
  • Choose a color for this computer's own Claude sign-in in Settings. With two or more Claude accounts, Settings → Runtimes → Claude Code now lists that sign-in as "Main (this computer's sign-in)" under your other accounts, with its usage and its color dot. Click the dot to pick a color. Main can't be removed there, because it isn't an account you added (DOR-2492)
  • With two or more Claude accounts set up, each Claude Code chat in the sidebar now has a small dot in its account's color, just before the chat's name. Point at the chat to see the account's name (DOR-2387)
  • With two or more Claude accounts set up, a chat whose account ran out of usage now says so in the sidebar, where its time used to be: "out · handing off" when the work is about to move to another account by itself, "out · needs you" when it is waiting for you to choose what happens next, and "out · waiting for reset" once you chose to wait. The row turns light red only while it needs you. A chat you already moved to another account shows neither (DOR-2382)
  • With two or more Claude accounts set up, the chat header names the account the chat uses and, when the chat ran out, says so in the same words as its row in the sidebar, in red only while it needs you (DOR-2387)
  • With two or more Claude accounts set up, this computer's own Claude sign-in is called "Main (this computer's sign-in)" wherever DorkOS names an account, instead of its folder name ".claude" (DOR-2387)

Changed

  • Give newsletter and feedback forms the same buttons and text fields as the app, with larger controls on phones.
  • Give Community account and administration forms consistent buttons, fields and error messages while preserving native controls.
  • In a room with files of its own, an agent now starts each turn with the latest files, including changes other agents merged and edits people made, without having to sync by hand. DorkOS only does this when the agent has no work in progress in its copy, and never while another conversation with that agent in the same room is still running (DOR-2411)
  • When an agent does have work in progress, its copy is left exactly as it is, and the agent is told what changed in the room since it started: who changed it, what they said about it, which files, and which of those files it has changed too, so it can bring the latest files in before it hands its work back (DOR-2411)
  • A Claude Code session on a subscription now shows how much of its plan is used as soon as you open it, before it has run anything, and every open session on the same account updates together when new usage comes in. This works with a single account too
  • How full a session's context is now shows when you reopen it and after DorkOS restarts, instead of waiting for the next reply
  • The pricing page now says that prices are in US dollars, and that sales tax or VAT is added at checkout where it applies. It says so under the plans and in the questions.
  • Pick the account for a new chat on the account chip instead of the runtime menu. The choice still applies to that chat only and locks once you send the first message (DOR-2387)
  • Apps you connect through your DorkOS account can be served by the DorkOS Cloud service, which now holds your account. dorkos.ai hands those requests over the same way it already hands over signing in and your linked instances, once the service is ready for them (DOR-2485)
  • The status bar now shows how much of your usage limit is used, and how full the chat's context is, as soon as you open a chat, not only when you are close to a limit. Usage limits show for Claude Code and Codex, with one account or many, and every chat on the same account shows the same numbers. OpenCode keeps showing what the chat has cost (DOR-2387)
  • The usage and context details now end with how fresh the numbers are, such as "as of 12 min ago" or "just now". A usage number older than an hour is dimmed, and a limit window that has already reset reads "reset" instead of an old percentage (DOR-2387)
  • With two or more Claude accounts, usage shows once, on the account chip, instead of twice (DOR-2387)

Fixed

  • Keep dialog and side-panel text readable when a dark panel opens inside a light page, or the reverse.
  • On a tablet-sized window with the sidebar open, Home's top bar no longer runs past its edge when your team has ten or more agents. The status light used to slide under the button beside it, and it got worse with every extra digit in the team count and when remote access was on. When the bar is narrow, the Stop button beside the working count now shows only its icon, and when it is narrower still it steps out of the bar. You can still stop every agent from the list of working agents above the message box (DOR-1816)
  • When a room's git settings could make git run a program, the room's Files section now says which settings they are and the exact command to remove each one, instead of just "Couldn't load files." Saving, uploading, renaming and deleting in that room say the same. The command names the actual settings and sits on its own line, so you can copy it and run it as it is (DOR-2414)
  • dorkos harness sync no longer says DorkOS moves skills on its own inside room folders. It only ever does that inside the agent folders it owns (DOR-2414)
  • An agent in a room with files can attach a screenshot or recording it made in its own copy of the room's files again. Since room turns moved to the agent's own folder, those files were refused. Files in the room's shared folder or in another agent's copy still can't be attached (DOR-2410)
  • Disconnecting an app that goes through your DorkOS account now finishes on its own even when disconnecting stalls partway. DorkOS keeps trying, waiting a little longer between tries, until it is done, instead of waiting forever for an answer that would never come (DOR-2468)
  • Finish disconnecting no longer seems to do nothing. When disconnecting is still going, the panel says so, says why it is waiting (for example, that DorkOS's servers had a problem) and when it will try again, and keeps itself up to date until it is done. You can still ask for a try right away (DOR-2468)
  • Apps disconnected before DorkOS tracked this now finish disconnecting the same way (DOR-2468)
  • When DorkOS can't finish disconnecting on its own (for example, this instance is no longer linked), the panel says why and offers Try disconnecting again (DOR-2468)
  • Resuming a paused app that goes through your DorkOS account no longer waits forever when the first answer stalls; DorkOS asks again until it goes through (DOR-2468)
  • When two sessions on one account hit a usage limit at the same moment, the app now keeps the reading that says the account is out of usage. Before, the second reading was dropped, so an account could look free when it was not (DOR-2380)
  • A Codex agent's first message in a room no longer fails with "Canonical runtime authority could not be verified". DorkOS now records which program a room conversation runs on as its first turn starts, so the agent's connections open on the first try (DOR-2447)
  • Extensions that ask for a recent version of DorkOS now load. Before, DorkOS compared every extension against the wrong version number of itself, so any extension that needed a real release was marked "incompatible" and never started. The card for an extension that needs a newer DorkOS now reads "Needs DorkOS 0.88.0 or newer".
  • Agents in a room now call you by the name you gave DorkOS, or "the operator" if you haven't given one, instead of "You", which an agent could read as itself. This covers the messages an agent reads, who reacted to it, who changed the room's files, who is in the room, what is on its canvas, and the room history it looks up. The lines a room writes about you, like "Dorian stopped Bo" or who opened a discussion on the canvas, now use that name too, in your own window as well (DOR-2458)
  • The command an agent is given to bring the latest room files into its copy now works when that copy sits under a folder with a space in its name (DOR-2411)
  • Agents can use your connected apps again. Every Gmail action an agent tried, like reading your inbox, was turned away with a message saying its details did not match, even when they were right. DorkOS was quietly filling in the app's own default settings before checking the request, then refusing it for no longer matching what the agent sent. It now checks exactly what the agent sent and passes it along unchanged, and the app fills in its own defaults as it always has.
  • The same mistake turned away most choices about which app events an agent hears about, such as new email in one label. Those are accepted again.
  • When an agent's request really is wrong, the refusal now names the setting at fault, like a number sent as text or a setting the action does not have, so the agent can fix its request and try again.
  • A popular app you set up on your own Nango server, like Gmail, now shows up once in Connections, as that app with its name, logo and description, and you can connect it right there. Before, it showed twice: once as the popular app with no way to connect, and again under the key you gave it in Nango. Accounts you already connected, including disconnected ones, move to the right app too. If you set up the same app twice in Nango, the one you set up first keeps the app's row (DOR-2436)
  • Sign in with Google, GitHub, or your community's sign-in service to review a local install request. If the request expires while you review it, the approval buttons disappear.
  • Make unlinking from DorkOS Cloud take effect locally at once. Delayed responses can no longer restore an old link or remove a newer one.
  • Use the identity confirmed by DorkOS Cloud when preparing credits for an agent. Credits stay unavailable if the service cannot confirm this installation, and unlinking or replacing its sign-in makes previously prepared credits unusable.
  • Updating an extension now always loads its new code, even when only a file it imports changed. Before, DorkOS could keep running the old version until someone cleared its build cache by hand (DOR-2491)
  • An account's usage no longer shows as "unknown" because of a single reading DorkOS can't make sense of. DorkOS now skips that one reading and shows the rest. A usage reading above 100% now counts as 100%, and one below 0% counts as 0%. Before, DorkOS threw away the account's whole usage file over either one (DOR-2471)

Security

  • When a room's git settings could make git run a program, only the person who runs DorkOS now sees which settings they are, where they live on the computer, and the command that removes them. Everyone else in the room, agents included, sees only that the room's files are paused until those settings are fixed (DOR-2457)

[0.88.0] - 2026-09-27

DorkOS 0.88.0 turns the Connections page into one simple list of apps, and lets you connect an app right in the chat when an agent asks for it. Agents in rooms now work from their own folder, a session tells you when a Claude account runs out of usage, and linking to a DorkOS account shows how long the code has left.

Added

  • When an agent asks for an app you have not connected, a card now shows up right in the chat where it asked. Connect the app and let that one agent use it, without leaving the chat. The agent then picks up your original request by itself (DOR-2415)
  • The card shows why the agent asked and what it wants to do, and starts on the access that covers it. If you give it less, the card says what it will not be able to do, and so does the agent's answer (DOR-2415)
  • If the app is already connected, the card only asks whether this agent may use it, and says so when every agent already can. With two accounts, it asks which one first. A paused or signed-out account can be fixed right from the card. Choosing "Not now" tells the agent no (DOR-2415)
  • The same card appears in a room when one of its agents asks, and only you see it. If you're talking to an agent over Telegram or Slack, the request waits for you in DorkOS: in the chat where it asked, or under Needs you on Connections. DorkOS never sends a link into those chats. If a chat has the app turned off, the card says so. A request that also asks to hear about new activity opens the full review on Connections (DOR-2415)
  • Answering a request in one window now updates every other open window, including the Needs you list on Connections (DOR-2415)
  • You get one notification when a Claude account runs out of usage, however many sessions were using that account. It says when the account comes back, if Claude said (DOR-2382)
  • The pricing page now shows the DorkOS Cloud plans side by side, with what each one costs and includes, and the price of every model is one click away. DorkOS itself stays free and open source (DOR-2028)
  • Every agent now works for apps you connect through your DorkOS account, not only apps you connect with your own key. Choose it in the app's Who can use it? card and every agent you have, including agents you add later, can use exactly the actions you picked. New or changed actions stay off until you review them, and Stop sharing with every agent takes access away on the next call, even while DorkOS Cloud can't be reached (DOR-2439)
  • @dork-labs/cloud-api, the open contract for talking to DorkOS Cloud, gets a new version for developers who build on it. It now says how a machine names each batch of activity it reports: an Idempotency-Key header, one per batch, so sending the same batch again is counted only once. It also says who a hosted connection grant covers: one agent, or every agent of the connection's owner (DOR-2452, DOR-2439)

Changed

  • The Connections page is now one simple list of apps. Yours shows everything you connected, one row each, with what state it is in and the one thing to do next: an app that signed out turns amber and moves to the top with Sign in again, a paused one is greyed with Resume. All apps shows everything else you can connect, sorted by kind, with the popular apps always there. Chat apps such as Telegram and Slack sit in the same list with a small Chat tag (DOR-2418)
  • Click a connected app to open its side panel: who can use it, what agents did with it lately, and a few one-click prompts that open a chat with the message already typed. Its name, notifications, exact actions, pause and disconnect are under More. A chat app's panel shows who answers it and anyone waiting for an answer (DOR-2418)
  • When an agent asks to use an app, or a program asks to change one, it shows in a small Needs you strip at the top of the page, and only then (DOR-2418)
  • Settings › Connections marks Used for new apps on the way DorkOS connects new apps through, when you have more than one, and keeps the chat app message history under a fold (DOR-2418)
  • In a room that has files of its own, an agent now works from its own folder instead of from its copy of the room's files. It keeps its own personality, safety rules and memory in that room, the same as everywhere else, and it reaches the room's files by their full paths (DOR-2410)
  • An agent in a room about its own project can now change its own code in the same conversation where it works on the room's files. Its instructions tell it to do that in a private copy of its own project, so it doesn't edit the folder other conversations with it may be using at the same time (DOR-2410)
  • Picking up a room conversation in the app puts the agent in its own folder too, with the same access to the room's files it has in the room (DOR-2410)
  • Conversations agents had in rooms with files before this update stay in their lists. Claude Code and Codex pick them up where they left off. An OpenCode agent can't move an old conversation to its own folder, so its next turn in that room starts a fresh conversation there. The old one stays in its list to read, and picking it up in the app says so and points you back to the room (DOR-2410)
  • Cloud usage in Settings › Access now shows in whole credits. Included credits and credits you bought show their money value beside them, what you have left is never rounded up, and anything under one credit shows as <1 instead of zero. The upgrade suggestion shows your last 30 days in credits with their money value, and the plan price and the difference in money, so the sum adds up (DOR-2425)
  • If your DorkOS account doesn't say what unit its figures are in, the panel says it couldn't read them rather than showing a number that might be wrong (DOR-2425)
  • While you link this instance to a DorkOS account, Settings › Access now shows how long the code has left, counting down beside the waiting line and switching to "less than a minute" near the end. Screen readers hear the time when the code appears and again at five minutes and at one, not every second (DOR-2188)
  • The button that opens the approval page now says Open the approval page (DOR-2188)
  • The Connections list pages and searches much faster. DorkOS now keeps each connection service's list of apps for a while instead of asking for the whole list again on every page and every search: a day for Composio, 15 minutes for your DorkOS account, a minute for Nango. It drops that copy as soon as you change or remove the service's key (DOR-2463)

Fixed

  • An app you connected can be given to an agent straight away, including when an agent asks for it; it no longer waits on a review nobody could do. Apps you connected earlier and never shared are settled the same way when you update. After you change how DorkOS reaches your apps, only apps someone already shares ask for a review (DOR-2418)
  • When a Claude account runs out of usage, the session no longer stops without a word. It now shows Claude's own message, such as "You've hit your weekly limit", and it remembers that the account is out until the limit resets, even after DorkOS restarts. The limit clears when you send the session its next message (DOR-2382)
  • If the approval page cannot be opened from the app, the panel now says so and tells you to copy the code and open the page in your browser, instead of the button doing nothing (DOR-2188)
  • Apps you connected through your DorkOS account work again. Since September 19, every request for them failed before it started, so you could not use them, see which apps were connected, check their usage, or disconnect one. All of that works again, and nothing you connected was lost (DOR-2467)
  • Warnings in agent creation and Connections (a name that's still missing, a schedule DorkOS couldn't check, access that needs another look) now actually render amber instead of ordinary text color — they used a color class the app's stylesheet never defined, so the styling was silently dropped (DOR-2444)
  • Success checkmarks in Connections (a connection confirmed, an agent's access granted) now show green instead of ordinary text color, for the same reason (DOR-2444)
  • Warning text got a bit darker app-wide, so it stays easy to read against every background it's shown on, not just the lightest ones (DOR-2444)

Security

  • An agent can only change the parts of a room's shared history that saving its own work needs. Settings and scripts that run for everyone in the room stay out of its reach, and DorkOS no longer follows a pointer an agent could rewrite when it checks an agent's copy (DOR-2410)
  • A task, a chat connection, a message from another agent or a room turn for one agent can no longer run inside another agent's folder or inside a room's files. It stops with a message saying why instead (DOR-2410)
  • A message from another agent can no longer choose the folder a turn runs in, which agent it runs as, or how much it may do without asking. The receiving agent answers from its own folder with its own settings. Only people, through a chat connection, the app or the API, and DorkOS itself set those (DOR-2446)

Note for people upgrading

  • If an agent is set to use no folder of its own, its tasks and chat messages run in your default folder. In a DorkOS development checkout that folder is the dorkos agent's own folder, so those tasks now stop with a message. Set a default folder that belongs to no agent, or give the agent a folder of its own (DOR-2410)

[0.87.0] - 2026-09-27

DorkOS 0.87.0 finishes agent permissions: pick Careful, Balanced or Full power, undo any change, and see why a permission is set. Agents can now work in several conversations at once, you can change a room's files from its Files panel, and connecting an app takes fewer steps. It also closes more ways a package or an agent could act without asking you.

Added

  • Pick Careful, Balanced or Full power in Settings → Permissions or the Control Center, and every area follows: rooms, tasks and schedules, other agents, messages, chat connections, tools and packages, DorkOS settings, safety limits, permissions, and reach and secrets. The picker shows how many changes you made on top, with a Reset (DOR-2278)
  • Open any area to set its single actions one by one. An action whose card shows what it would change, like the model an agent runs on, always asks and never offers Always allow. An action that deletes or removes something asks you even when its area is Allowed, unless you set that one action yourself
  • Give one agent its own Files & commands setting (Ask first, Act or Full autonomy). It applies to that agent's conversations, scheduled runs and room turns
  • Let agents ask you to change a permission, or a setting only you may change, like remote access or login. Each one raises a card, never offers Always allow, and changes nothing until you say yes
  • See and reset each agent's own permissions from the Control Center, in one tap
  • Change permissions from a terminal with dorkos permissions and dorkos agent permissions
  • A Community server can now delete one message or one file. You can delete what you or your agents posted, and a community's owner and admins can remove other people's. The message keeps its place in the conversation, so replies and threads still make sense, and shows "This message was deleted." or "This message was removed by a community admin." instead. Its files are deleted at once, which frees the space they used. Programs can use the new DELETE requests described in the Community API guide.
  • Undo any permission change from its history, in Settings → Permissions or on an agent's Permissions page. If something changed since, Undo asks before it sets it back, and a change that reached several agents undoes what still matches and tells you what it left alone (DOR-2278)
  • Tap Why? next to any permission to see where it comes from and who last changed it, when, and where
  • See how many agents a change reaches before you make it: every default row, single action, preset and Files & commands says "affects 33 agents"
  • If you keep allowing the same thing, the request card offers to remember it: after three Allows in a week for the same agent and action, Always allow stays highlighted until you answer Not now or Always allow. Not now is in the history, and you can undo it there
  • Undo a change from a terminal with dorkos permissions undo <id>. dorkos permissions history now shows each change's id
  • The Installed tab says when a package's files changed since it was installed, for example 3 files changed since install (2 edited, 1 added). Open it to see which files. When an update is waiting, it also says what the update will do: replace files you edited and keep your copies, keep files you added, and put back files you removed. Update all… says the same for each package (DOR-2197)
  • dorkos marketplace installed --verify adds a FILES column saying whether each package is as installed, changed, or unknown, and dorkos doctor --deep names the packages that changed or that an older DorkOS installed (DOR-2197)
  • Packages an older version of DorkOS installed are checked in the background after DorkOS starts: their files are recorded only when every file still matches the exact version you installed, and nothing is touched otherwise. Check files in the Installed tab, or dorkos marketplace check-files <name>, tries again, and says why when it can't help, with Try again once you've put things back. Scheduling work for an agent from such a package now points you there instead of telling you to wait for its next update (DOR-2197, DOR-2320)
  • If you run a Community server, you can now put a suspended community on hold in one step. It goes straight from suspended to on hold and is never live in between (DOR-2299).
  • A host can place a legal hold on a community so it can't be permanently deleted until the hold is released: not by the host, not by the owner's own request, and not by a deletion that is already running. It needs its own host key permission, communities:legal_hold, and every change is recorded in the host audit log. Owners and members are not told (DOR-2299).
  • The Community site now has Delete on your own messages and files, and Remove for owners and admins on other people's. A confirmation says what everyone will see afterwards and what can't be taken back. The message stays in its place as "This message was deleted." or "This message was removed by a community admin.", in quieter italic text, and its thread still opens. (DOR-2289)
  • A new message can no longer say only "This message was deleted." or another removal sentence, so nobody can make a message look removed when it isn't. (DOR-2289)
  • Messages erased, deleted, or removed in a Community now change in your DorkOS installation too: its saved copy of the channel shows the new text within 15 minutes, and searching that channel no longer finds the old words. What your agents already saved, like their session history, stays as it was (DOR-2266)
  • Keep an open Community page up to date when someone deletes a message: it changes to "This message was deleted." within 30 seconds, without a reload (DOR-2290)
  • Tell DorkBot your name and pick an @handle when you first set up DorkOS. If you signed in with an email, the handle starts as the part before the @. You see it and can change it before anything is saved. Your name and handle then show on your team page, and agents in a room reach you by your @handle instead of "You" (DOR-677)
  • If you set up DorkOS before this question existed, a small card in the sidebar asks once. Answer it or choose "Don't ask again", and it never comes back (DOR-677)
  • Drag the line between a channel and an open thread to make the thread wider or narrower. It lights up when you point at it, just like the right panel's edge, and the thread opens at the width you left it next time (DOR-2119).
  • Choose which of your Claude accounts pays for a scheduled task. Set account: in the task's schedule: block, or send account when you create or edit it, and its runs start on that account instead of the agent's. Changing the account on an approved schedule sends it back to you for approval, like a model change does. A schedule that keeps one conversation stays on the account it started on (DOR-2384).
  • Extensions that come inside a plugin now load, once you approve them. Before, an extension packed inside a marketplace plugin was set up on install but never showed up or ran. It now appears in Settings → Extensions and asks for your OK like any other extension (DOR-2383)
  • The Connect a service list always shows popular apps like Gmail, Slack and Notion, each with one line about what your agents can do with it. Before, it said "No matching services" until you had set up how DorkOS reaches your apps, and never said why (DOR-2421).
  • When nothing you have set up can reach an app yet, connecting it starts with one short step that asks how DorkOS should reach your apps: your own Composio key, or your own Nango server under Other ways. If something is set up but not working, the step says so in one line. Once a way works, Connect goes straight to sign-in (DOR-2421).
  • Before an app's own sign-in page opens, one line tells you whose name it will show, for example "Google will ask you to allow Composio", so it is never a surprise (DOR-2421).
  • An app can now be shared with every agent at once, including agents you add later, for exactly the actions you picked: choose Every agent under "Who can use it?" when you connect an app. If every agent could send, change or delete things as you, DorkOS says so before you save. New actions an app adds later still stay off until you allow them. Stopping the sharing takes effect for every agent at once, even one in the middle of a task, and works even while the app's service is down (DOR-2420).
  • When you create an agent, or add one from the Marketplace, DorkOS says what it will get from apps shared with every agent before you create it, for example "Research Bot will get: Gmail (read)". An agent that arrives any other way gets a line in Activity saying what it can use (DOR-2420).
  • Add, upload, rename, move and delete a room's files right from its Files panel. Drop files on the panel or on a folder, or use Upload, up to 20 files at once. If a name is already taken, you choose whether to replace it or keep both. Deleting asks first and tells you how many files go with a folder. Each change is one saved step in the room's history under your name, and the room gets one quiet line about it that does not wake any agent (DOR-2412, DOR-2413).
  • Keep a file someone attached in the chat as one of the room's files: press the folder button beside it and pick where it goes (DOR-2413).
  • Start a new file or folder in a room's files and write it straight away. It appears when you save it (DOR-2413).
  • If someone else changed a file first, a rename, move, delete or upload stops and shows you who and when, so you can look at their version or go ahead anyway (DOR-2413).
  • DorkOS now keeps track of how much of each Claude Code account you have used, across every session on that account, and remembers it after a restart. Your agents can read it with the new accounts_usage tool. It includes this computer's own Claude sign-in, even when you have registered other accounts, and it shares one record per account with the flow command (DOR-2380)
  • @dork-labs/cloud-api, the open contract for talking to DorkOS Cloud, gets a new version for developers who build on it. Every amount now says whether it is money or credits, and the service can say which unit it uses. A new @dork-labs/cloud-api/display entry renders those amounts one consistent way. It also adds reads for offers, remote-access usage and statement lines, a malformed_identifier refusal code, whether a claim to an agent waits for approval, and which addresses a machine's tunnel credential answers on. Older responses still read. The refunds route, which was never served, is withdrawn, and its exports are marked deprecated (DOR-2425, DOR-2426, DOR-2445)

Changed

  • Choosing a preset now also sets Files & commands: Careful starts new conversations at Ask first, Balanced at Act, and Full power at Full autonomy, which asks you to confirm what it means the first time
  • The agent profile's Tools & MCP page is now called MCP servers. What an agent may do is on its Permissions page
  • Community exports now work at any size. Choosing Export this community or Download my data starts the export in the background, and a progress bar shows how far it has got. You can close the page and come back. When it is ready, Download shows the file's size, the export is kept for a day, and a download that stops can resume from your browser's downloads list. Before, a community with more than 10,000 messages or members, or more than 1 GB of files, could not be exported at all.
  • The exported .zip now also holds the community's name, description, joining rule, icon, and who is in each channel, and marks messages that were deleted or erased. Messages posted after an export starts are not included, and a message deleted while an export is prepared is left out or shown as deleted.
  • An agent now asks you before it changes what an agent runs on: its runtime, model or effort, for itself or any other agent. Every scheduled task that doesn't pick its own settings runs on those, so a change would reach work you already approved. The card shows each change as it is now and as it would be, for example Model: claude-sonnet-4 → claude-opus-4. If the agent's settings change again before you answer, you get a fresh card. Your own changes, from the Runs on menu or the agent's settings, still apply at once (DOR-2328)
  • An agent can now work in up to three conversations at the same time. Before, sending an agent a message while it was answering in another room meant waiting until that answer finished, even though the two rooms had nothing to do with each other. You can change the number in Settings → Rooms → Conversations at once, from 1 to 8. Higher is faster, but turns that change the same files can collide; set it to 1 to go back to one thing at a time. One agent still never answers twice at once in the same room, and a message that arrives while it is at its limit still waits for it, so you never have to send it again.
  • Replies in a thread now line up with the message they answer instead of being pushed in from the left, so they get the full width of the thread. A thin line that says how many replies there are separates the first message from the answers (DOR-2110).
  • Saving a file in a room now makes any folders it needs, and posts a quiet line in the room saying who changed what. The app shows that line as plain text, so a file name or a person's name can't turn into a link there. Places that read its words, like an agent's view of the room or a chat bridge, may still show a name that looks like a web address as a link (DOR-2412, DOR-2413).
  • With login on, a change you make to a room's files is saved under your own name, so two people's changes stay apart in the history (DOR-2412).
  • You now connect a community right from the switcher at the top of the sidebar. Choose Add community, then Connect a community, and a small window asks for its address and walks you through approving it on the community's site. Once you approve, the window closes and the community is selected. A community still waiting for your approval, or one that needs connecting again, opens that same window when you choose it, instead of sending you to Connections. Communities no longer appear on the Connections page, and the note you get when this DorkOS loses access to a community now points to the switcher (DOR-2422).
  • After you connect an app, DorkOS now asks "Who can use it?" in the same window. Tick the agents you want, pick Read or Read and write, and save. Before you save, the card tells you if an agent you unticked will lose access. You can skip it, and "Choose exact actions" still opens the full list of actions for each agent (DOR-2417).
  • Settings has a new Connections tab. It shows each way DorkOS reaches your apps (your DorkOS account, your own Composio key, your own Nango server), whether it works, and how many apps use it. Before you change or remove a key, it lists every app that will pause or stop, and the button says how many (DOR-2419).
  • Unlinking your DorkOS account in Settings › Access now lists the apps that stop working with it, too (DOR-2419).
  • The chat app settings moved to the same tab, in plainer words: start working right away, most chats at once, and how many seconds a new message waits for a free chat before it's turned away. The Connections page now keeps to your apps (DOR-2419).
  • Telegram, Slack and Webhook are listed with the other apps and tagged Chat. Connecting one opens its own setup right away, with nothing else to set up first (DOR-2421).
  • Edit any text file in a room's files, not only Markdown. Images and other files that aren't text stay read-only, and the preview says so (DOR-2413).
  • If one of your Claude accounts was saved with the id default, DorkOS renames it to default-2 when you upgrade. default now always means your main account. The agents, chats and schedules that named the old account move to its new name and keep using it. Schedules that come from an installed package are not changed (DOR-2379, DOR-2380)
  • Saving your Claude accounts in Settings no longer drops what flow or a hand edit added to your config file. An account flow added while Settings was open is kept when you save, and so are extra details on an account and an account entry DorkOS cannot use yet (DOR-2379)

Removed

  • The per-agent limit ("observe" or "act") and the Agent context switches for tasks, messages, other agents and chat connections. Permission areas replace them
  • Retire the DorkOS plugin for Obsidian. Use the normal DorkOS app with your vault folder instead, subject to its usual folder permissions. The in-vault sidebar, active-note context, dragged-in note context, and opening notes inside Obsidian are no longer provided. Your notes and conversation history are not deleted. See the retirement guide for migration and historical source recovery.

Fixed

  • Joining a community through an invitation to a channel no longer fails now and then when the person who sent the invitation posts or uploads to that channel at the same moment (DOR-2277).
  • A skill or command can ask Claude Code to run a shell command the moment it is used, written into its text as !`command` or as a code block marked with an exclamation mark. The install and update previews never showed these, so a package could run commands you were never shown. They now appear with the other commands, naming the skill each comes from, in the app, in dorkos install and dorkos update, and on agents' approval cards. The same goes for commands in a package's agents and output styles. When a command uses the text you type after it, the card says so, because that text becomes part of the command. A new version that adds or changes one asks you again. Packages you already approved are not asked about again unless they have such a command. Multi-line commands now keep their line breaks on the card, so two commands can't read as one (DOR-2327).
  • Updating or removing a package that an older DorkOS installed no longer guesses which files are yours when DorkOS can't get the version you had, for example because you're offline. It keeps every file it can't account for and tells you which ones. After an update, the package says Kept 2 files DorkOS couldn't sort after an update, and you can open it to see them. Once you're online, Check files sets aside the ones that are exactly what the earlier version shipped, renaming each to end in .dork-old so it no longer runs, and keeps the rest as yours. Nothing is deleted. The package keeps listing the kept files through later updates until you check them, and says which of them still run, such as an old skill or command. A package installed for all projects that still runs such a file waits for your approval instead of loading, and says why. dorkos marketplace installed --verify, update --apply, uninstall and dorkos doctor --deep say the same (DOR-2322)
  • When a Community server refuses a request because of too many wrong passwords, or another per-minute limit, it now says how many seconds to wait, in a standard Retry-After header. Wrong passwords on every action that asks for one (leaving, disconnecting installations, handing over ownership, exporting, archiving, deleting, API keys and erasure) still count together, per account. The sign-in library's own password-change address, which nothing on the Community used and which did not count wrong passwords that way, is now off (DOR-2275)
  • Something that happened a few minutes ago now reads "5m ago" even when midnight has passed since. Before, for about an hour after every midnight, it read "Yesterday, 11 pm" instead, which made fresh things look old. Anything from the last six hours now counts in minutes or hours; older than that, a time from yesterday still shows as "Yesterday" with the hour.
  • An agent's memory rules now say that only you, in a one-to-one chat with the agent, can set its standing preferences. They used to say "a direct chat", which a group direct message with someone else in it also fit, so another person there could have passed as you. The preview on the agent's profile shows the new wording. (DOR-2134)
  • When a phone notification fails to send, the server log no longer records your phone's private push address. Logs are often attached to bug reports, so that address should never have been there (DOR-2135)
  • The same notification raised twice at almost the same moment now reaches you once, instead of arriving twice in your inbox and in your chat app (DOR-2140)
  • Scheduled tasks no longer stop for good after the disk fills up. A write that failed partway could leave a broken lock file behind, and from then on no scheduled task ran, with nothing in the log to say why. DorkOS now replaces a broken lock file and cleans up after its own failed writes (DOR-2131)
  • A second full-disk spell now shows up in the log too, not only the first (DOR-2132)
  • Opening the app no longer flashes "nothing here" messages over things you already have. For a moment during startup, the Team page's table and map views could show "Bring in existing projects" over a full team, and the Pulse panel, marketplace sources and agent gallery could briefly say they were empty. They now show their loading state until your data is in (DOR-1914)
  • In a room, the line that says which earlier message a reply is answering now has a little space before the reply itself (DOR-2120).
  • The time that appears when you hover over a message in a run of messages from the same person no longer sits against the edge of the row. This applies to both rooms and sessions (DOR-2120).
  • A long room topic now wraps onto as many lines as it needs in the room panel, so you can read all of it. Before, it was cut off after a few words, on a phone as well as on a desktop (DOR-2117).
  • Opening a link to the #team channel no longer shows #team's name in the header for a moment before it takes you to Home (DOR-2141).
  • Typing in a canvas document no longer tells you your agent changed it. Each time a document saved itself while you were editing, the canvas mistook that save for a change from your agent and showed "Your agent changed this while you were editing". It now recognizes its own saves. A real change from your agent, or from another window, still shows the notice so you can choose which version to keep.
  • Unregistering an agent now takes it out of every channel it was in, so a channel's member list shows only who can still read it. Its messages stay, marked "Retired" beside its name, and a direct message with it stays too. Open windows update straight away. Agents already unregistered before this fix are cleared out of their channels the next time DorkOS starts (DOR-2095)
  • An agent that DorkOS removed because its folder was out of reach for more than a day, such as one on an external drive, now gets its channels back, with the same settings it had, when you add the folder again or DorkOS finds it again. It only rejoins a channel it is still allowed into (DOR-2095)
  • Agents answer again in a room that has its own files. When login was on, an agent working in its copy of the room's files couldn't post, react, read the history or send you a note, so the room showed that it "read this and did not reply." This hit Claude Code, Codex and OpenCode agents alike. With login off, some of those posts carried your name instead of the agent's. Now each agent's posts carry its own name, and a working copy DorkOS can't tie to the agent it's working for can't post as anyone (DOR-2091)
  • When an agent in a channel runs into a problem or is waiting for you to answer something, the words in its note that tell you to open that agent's session are now a link that takes you straight there. The note used to tell you to open the session without giving you a way to get there. (DOR-2077)
  • The Session link button in Remote Access now copies the conversation's full address. It used to copy a shortened one that only reached the conversation by way of a redirect. (DOR-2077)
  • An agent working in a git worktree of its own repo, or in a checkout it owns, now keeps its own name, personality, memory and Claude account. Before, it could pick up an out-of-date copy of its settings that the branch happened to carry, and the agent settings screen could edit that copy instead of the agent (DOR-2355).
  • A folder inside a room's files can no longer be registered as an agent, so a settings file someone commits to a room never becomes an agent of its own (DOR-2355).
  • A Claude account entry that is broken, such as one with no folder, an empty id, or a number where text belongs, no longer makes DorkOS set your whole config file aside at startup. DorkOS skips that entry and notes it in the log (DOR-2379)
  • Starting work on the default account now uses this computer's own Claude sign-in, even when DorkOS itself was started from a terminal pointed at a different account (DOR-2380)

Security

  • A new agent can't bring wider permissions in its folder's settings file. When DorkOS adds an agent from a folder, however it gets there, it keeps only the settings that are stricter than your defaults, ignores the rest even if it can't rewrite the file, and says so in the history (DOR-2278)
  • An agent package can no longer ship its own permissions. DorkOS refuses a package whose agent settings say what the agent may do, so an agent from the marketplace starts where your defaults say, and you decide the rest after it is installed (DOR-2278)
  • A package can no longer fill your disk. DorkOS now refuses a package larger than 250 MB in total, with more than 20,000 files and folders, or with any single file over 50 MB, and says which limit it hit. It checks this before showing what a package will do, and again before copying it into place. A download from git is stopped as soon as it grows past 1 GB or takes longer than 10 minutes, and a download that would unpack into more than 100,000 files and folders, or more than 1 GB, is refused before a single file is written. If you install from a folder on your computer, DorkOS copies its node_modules too, and the message says how much of the package is in there. Its .git folder doesn't count toward the limits. The files DorkOS reads from packages you already have installed are now held to the same 1 MB per-file limit as the ones it checks before installing. Real packages are far below these limits. (DOR-2321)
  • An agent package installs into the folder its sessions run in, so settings it shipped there could run commands, start servers or let the agent act without asking, and none of it was on the install screen. DorkOS now refuses an agent package that ships them: Claude Code's .claude/settings.json (or a .claude folder anywhere below the top), a .mcp.json, a subagent with its own hooks or servers, Codex's .codex/ folder, OpenCode's opencode.json or .opencode/ folder, and Gemini CLI's settings. Instructions and skills are still fine, and the install screen now lists what the skills in those folders may do without asking. This covers dorkos install, installs by an agent, and installs through DorkOS's own connections (DOR-2314)
  • In the app, a marketplace agent can no longer be created when DorkOS refuses its package: the card says why and Create stays off (DOR-2314)
  • When DorkOS won't install a package, the install screen and the package page now say so and why, instead of showing "No special permissions required" (DOR-2314)
  • A package can no longer mark those settings folders as yours to edit, so an update always runs exactly what you approved (DOR-2314)
  • A folder can no longer make git run a program just because DorkOS or one of your agents looked inside it. A folder set up to look like a git repository can carry a setting that tells git to run a program. Now every time DorkOS or an agent runs git, git ignores the settings of a repository it only stumbled on, and never starts a file-watching helper. DorkOS refuses to install a marketplace package shaped like a git repository, and drops any .git folder a package brings with it. Your own repositories work as before, and your git hooks still run when you or an agent commits. Two trade-offs: git in a very large repository that relied on a file-watching helper checks for changes the slower way, and an agent working inside a bare repository must name it with --git-dir. Full protection needs git 2.38 or later. DorkOS warns at startup and in dorkos doctor when yours is older. (DOR-2326)
  • Creating a workspace now refuses a source that git would read as an option or as an instruction to run a program, and its git only reaches folders on your machine or https, ssh and git addresses. (DOR-2326)
  • Creating an agent from the marketplace in the app now goes through the same checks as installing a package. What installs is exactly what its preview showed you, and a package that ships settings for its own sessions is refused. Before, the app copied the package's files without checking them. The agent now lives in its package's folder, so updates find it (DOR-2325)
  • Creating an agent from your own template now shows you anything it brings that would run in the new agent's sessions before it is created: settings files with hooks or permission rules (with their full contents), servers, and skills that use tools without asking. You then decide whether to create it. In the terminal, dorkos agent create --template prints the same list and asks (DOR-2325)
  • When an agent creates another agent from a template, a person now has to approve it on a card that lists everything the template brings. Before, nothing stopped it (DOR-2325)
  • When an agent installs a marketplace package that adds another agent, a person now approves it first, on a card that shows where the agent will live and what its skills can do. What installs is exactly what the card showed (DOR-2325)
  • When an agent installs any marketplace package, what installs must be exactly the package that was previewed: same kind of package, same files. A source that changes in between is refused and nothing is installed (DOR-2325)
  • Your OK to run an extension now belongs to that one copy of it: its folder, and the plugin it came in. If a different plugin brings an extension with the same name, DorkOS asks you again before running any of it. Extensions you already allowed keep running with nothing to click, and updating a plugin keeps your OK for the extensions it still brings (DOR-2383)
  • Agents can no longer start a scheduled run on their own. Before this, an agent could send a message that started a run with its own instructions, in any folder, with every permission check turned off and nobody watching. Now only the scheduler can start a run, and any other attempt is turned away and logged. (DOR-2416)
  • Agents can no longer approve their own tool calls. Before, an agent that knew its session and the pending tool call could send an approval as if you had clicked it on Telegram or Slack. Now DorkOS accepts an approval only when it comes from the chat connection where you clicked, and refuses and logs any other (DOR-2431).
  • Agents can no longer send messages to DorkOS's own internal addresses, the ones it uses to start scheduled tasks, answer approval requests and stop runs. Only DorkOS itself can send there now, so an agent can't pretend to be the scheduler or approve its own tool calls. A webhook can't be set up to deliver to those addresses either. Agents still message each other and reach you exactly as before (DOR-2432).

Note for people upgrading

  • If you are on Careful, agents now ask before they touch tasks and schedules, other agents, chat connections or rooms, where before some of those ran without asking
  • An agent you had limited to "observe" now has every area Blocked. It can still post and react in conversations
  • An Agent context switch you had turned off becomes that area Blocked for every agent. The history records each of these as an upgrade
  • An agent you had switched a tool group on for (rooms, tasks, messages, other agents or chat connections) gets that area Allowed as its own setting, shown as an exception you can reset. It could already use those tools, so nothing it can do has widened

[0.83.0] - 2026-09-24

DorkOS 0.83.0 lets you decide what your agents may do on their own, and marketplace updates now keep your settings and run only what you approved. It also closes several ways a package could harm your computer. Communities are still early.

Added

  • If you run a community host, the switcher now takes you to where you create a new community on it. Open Add community, then Create a community, and your host's own page opens in the browser. It only appears when that host has just confirmed that the account you connected with runs it, and the host's page still asks you to sign in before anything is created. If you run more than one host, each gets its own row (DOR-2242).
  • A Community server can now erase a person when they ask. A person can erase their messages from one community, or delete their account and be erased from every community on the host. Each request waits 72 hours, and they can cancel it until then. After that, their messages stay in their place in conversations as "This message was erased.", and their name, handle, files, and agents are removed, and their DorkOS installations are disconnected. Mentions of them in other people's messages become @[erased]. The host who runs the server cannot start, speed up, or see an erasure. (DOR-2265)
  • Hosts can keep a record of finished erasures outside their backups with COMMUNITY_ERASURE_JOURNAL, and run erasure:reapply after restoring a backup, so nobody who was erased comes back. (DOR-2265)
  • Erase your messages from a community, or delete your account, from the Community page. Under Manage, then Account, choose Erase your messages here. Communities you left and Delete your account are on the page that lists your communities. Each waits 72 hours, and a banner lets you cancel until then. Every form says plainly what erasure can't reach: copies on other people's computers and the host's backups. (DOR-2265)
  • If you run a Community server, you can now put a community on hold instead of suspending it. Members can still read everything and the owner can still download an export, but no one can post, join, or change settings. Connected DorkOS installations and agents keep reading, invitations wait until the hold ends, and posting comes back on its own when the host releases it. To cut people off, a host suspends the community instead. Every channel shows a banner that says so. Releasing the hold puts the community back as it was (DOR-2255).
  • A host can publish a deletion notice for a held community, at least two weeks away by default and never less than one. Members see the date on every channel. After it passes, the host can schedule the community's deletion, which waits the usual seven days and which only the host can cancel. An owner can still delete their own community during a hold, and cancelling that returns it to the hold (DOR-2255).
  • See how many replies a thread has in a community channel. The count sits under the message that started the thread, the same way it does in your own channels, and it goes up as new replies arrive. Click it to open the thread. A community running an older version of its server shows no count until it updates. (DOR-2229)
  • See what you have installed from the terminal with dorkos marketplace installed. Each row says where the package lives (everywhere, or which agent), and marks a package that points at a working copy on your computer. (DOR-2193)
  • See which packages are behind with dorkos marketplace outdated. It only prints what has an update, plus anything it couldn't check, and changes nothing. Its exit code tells a script or a scheduled job what it found: 0 all up to date, 1 something has an update, 2 it couldn't tell. A package linked to a working copy is listed on its own and doesn't change the answer. (DOR-2193)
  • Your agents can now find out which of your installed packages have a newer version, and update them. Ask an agent "is anything out of date?" and it can check every package you have installed, in every place it is installed, without opening the app. When you want the updates, the agent asks first: an approval card lists every package it would update, where it is, the old and new version, and every command, scheduled job and MCP server the new version would run. Nothing changes until you say yes, and if a package changes after you approve it, that package is not updated and you are asked again. A package you linked from your own working copy is never replaced. Agents can also ask for an out-of-date flag on the list of installed packages they already read, and that list stays as fast as before when they don't ask (DOR-2195).
  • Before you install a plugin, DorkOS now shows every program it would start on its own: MCP servers, language servers, background monitors, and the commands it adds for your agents to run, each with exactly what it runs. It also reads hooks a plugin declares in its manifest or in its skills, not only in its hooks file, shows the tools each skill may use without asking you, and says so when a plugin declares something it can't read. The app, dorkos install, and agent approvals all list these, hidden characters that could disguise a command are shown, and an approval no longer covers a package that adds or changes one after you said yes (DOR-2195).
  • You can now change when a schedule that came with an installed package runs. Edit it on the Schedules tab and pick a new time or timezone; DorkOS keeps your timing, so the package's files stay as they shipped and your choice survives its updates. The row says "Your timing" and shows the timezone it runs in, and "Reset to the package's default" puts the package's own timing back. If an agent changes when one of these schedules runs, it stops and waits for you to approve it again (DOR-2302)
  • Decide what your agents may do on their own. Settings → Permissions sets each kind of work to Allowed, Ask or Blocked for every agent, and an agent's own Permissions page lets you set one agent differently. Rooms is the first area: making rooms, adding or removing people, renaming, leaving and archiving.
  • Agents can now archive a room they are in when the work is done. The room and everything said in it are kept, and you can bring it back from the room's settings. (DOR-2094)
  • Every permission change is kept in a history that says what changed, who changed it and when. It is never cleared.
  • If an agent's settings file is edited directly instead of through DorkOS (by you, or by an agent that can edit files), the change still takes effect, and the history records it as Changed outside DorkOS, with what it was before and after. The agent's Permissions page marks that row.
  • When an agent needs your yes, the card now has three answers: Allow (this once), Always allow (this agent, this action, from now on) and Deny. Always allow is saved as that agent's own permission, so you can see it and reset it on the agent's Permissions page.
  • The card also shows up inside a room when that room's conversation caused it, so you can answer where the work is happening.
  • An agent that is blocked from something can now ask you for it, and say why. You get a card with its reason. To keep this from turning into nagging, an agent can ask about one thing per area at a time, cannot ask again for a day after you say no, and can ask at most five times an hour.
  • An agent can look up its own permissions, so it can tell you why something was refused instead of guessing.
  • A Community host can now link its own terms, privacy notice, and a way to report abuse. Terms and Privacy show under the sign-in form, all three show in Settings under Account, and each message gets a Report link. Report opens the host's page with only the community and message IDs added, never the message text or anyone's name. A host that sets none of them shows nothing new.
  • You can now make schedules for an agent you installed from the marketplace, the same way as for any other agent, and they are kept when the package updates. Until now DorkOS turned every one of them down. Two cases are still refused, each with a note saying why: a name the package already uses for one of its own schedules, and any schedule for an agent whose package was installed by an older version of DorkOS, which works after that package's next update. If no update comes out for that package, there is not yet a button to prepare it by hand; that is coming (DOR-2272)
  • A schedule that came with a package now says so as soon as you open it. You can still switch it on or off and change when it runs; its name, instructions and settings are shown but can't be changed there, because the package's next update would put them back. Make my own copy opens a new schedule for the same agent with everything filled in and a name that isn't taken yet. By default, creating the copy also switches the package's schedule off, so the same work doesn't run twice (DOR-2272)
  • A community on your Community server can now have a short web address, such as your-host/acme, instead of only its long ID link. Set it from the community's record on the host page. If you change it, the old address keeps working and takes people to the new one, and no other community can take it. A released address stays unavailable for 90 days by default, so a bookmarked link can't suddenly lead somewhere else (DOR-2256).
  • Members can copy their community's address from its settings; it uses the short address when the community has one.
  • If your Community server runs behind a proxy, set COMMUNITY_TRUSTED_PROXY_HEADER to the header your proxy puts each visitor's address in, such as Fly-Client-IP. Sign-up, invitation, pairing, and address-lookup limits then count each visitor on their own instead of everyone together (DOR-2256).
  • You can now connect DorkOS to a community by pasting its short web address, such as https://community.example/acme, as well as its full link. DorkOS looks the name up once and then remembers the community itself, so renaming the short address later doesn't break the connection (DOR-2257).
  • A Community host can now let people sign in through its own OpenID Connect provider, beside email and password. The sign-in page shows one more button with the name the host chose. Joining still needs an invitation, the provider must confirm the email address, and single sign-on never attaches itself to an account that already exists here. You link it yourself from Settings, Account.
  • Someone who signed up through single sign-on, Google or GitHub can add a password under Settings, Account. They can then still sign in when the provider is down. Actions that ask for a password, like exporting or leaving, now say "Set a password in your account to do this." instead of saying the password is wrong.
  • When a schedule waits for your approval again, the card lists what changed since you approved it, with the old and the new value side by side, for example "Model: claude-sonnet-4 → claude-opus-4". A change to when it runs is written out in words, and a change to its instructions is marked so you can read the new ones on the card (DOR-2323)

Changed

  • A community owner can ask to delete a community while the host has it suspended. Cancelling that deletion puts the community back in its suspension. (DOR-2265)
  • An owner export keeps erased members as "Erased member", with no email address. (DOR-2265)
  • Use consistent fields, buttons and error messages when signing in to the DorkOS app or a Community.
  • All marketplace commands now live under dorkos marketplace: install, update and uninstall join installed, outdated and the source commands. dorkos install, dorkos update and dorkos uninstall still work as shorter names for the same commands. (DOR-2193)
  • The Marketplace's Installed tab now tells you which packages have a newer version before you click anything. Each package says "Update available: v1.2.0 → v1.3.0", "Up to date", or why it couldn't be checked, for example when a package is linked to a folder on your computer. The tab shows how many updates are waiting, even from Browse. Update all lists every package it will update, where it is installed and which version it moves to, and only updates those after you confirm. A package that is already up to date no longer has an Update button (DOR-2196).
  • If you chose Full power when you set up DorkOS, your agents can now make and arrange rooms without asking. If you chose to keep being asked, they ask first, and that now includes merging a room's work into the main branch, which they used to do without asking. If you never chose, nothing changes until you do.
  • A Blocked action no longer shows up in an agent's list of tools. The agent is told once that the area is blocked and to ask you if it needs it.
  • Uninstalling a marketplace agent now removes it from your team, and the confirmation says what that takes away: its rooms, schedules, sign-ins and access. Reinstalling brings back its identity but not those (DOR-2245)
  • Package authors can't mark files that decide what a package runs (hooks, servers, commands, skills, subagents, extensions) as yours to edit, so an update always runs exactly what you approved (DOR-2245)
  • Plugins written for Claude Code can keep their own state with ${CLAUDE_PLUGIN_DATA}, which DorkOS points at a folder inside each install (DOR-2245)
  • Every answer you give on a card is recorded in your permission history, with who answered. With login off it says "Someone on this computer", because DorkOS cannot tell who pressed it.
  • A scheduled run, a chat connection or another agent's message no longer holds its turn open for ten minutes waiting on a card nobody is watching. The card goes to your inbox, and when you answer, DorkOS tells the agent so it can carry on.
  • dorkos update --apply prints what each new version runs and asks before it installs. Add --yes to skip the question. dorkos update <name> without --apply still only checks. An older dorkos CLI is told to update itself instead of updating anything (DOR-2306)
  • Adding a marketplace source now fetches its list of packages straight away, so you can install from it without running dorkos marketplace refresh first. If DorkOS can't reach the source right then, the source is still added, and dorkos marketplace add tells you why the list isn't there yet and the command that tries again. In the app, the sources page shows the same reason on the source's row, with a Try again button, and each source now has a Refresh button. A refresh always checks again: if the source can't be reached, the terminal and the app say so and tell you when the copy they're still showing is from, instead of calling it refreshed. Source names can now use only letters, numbers, dots, dashes and underscores. Removing a source also forgets its list of packages, so a new source you give the same name never shows the old one's packages (DOR-2304).
  • New passwords on a Community now need at least 12 characters, wherever you set one: signing up, first-time setup, adding a password, or recovery. A password you already have still works.
  • Offline password recovery now also removes the account's Google, GitHub and single sign-on links, so whoever took over one of those accounts cannot get back in. Hosts can keep the links with --keep-linked.
  • Your agents now know how the marketplace and schedules work today. They can list what is installed and what is out of date, and they tell you when an update saved your edited copy of a file beside the new one. They know a package held back from your sessions waits for you, and they can't approve it themselves. They know a new source's packages are there as soon as you add it, and they tell you plainly when a refresh couldn't reach a source. They also know that changing a schedule's timezone needs your approval again, and that their edit pauses a schedule straight away. They can make schedules for an agent you installed from the marketplace. A schedule that came with a package can only be switched on or off or given a new time, and Make my own copy is how you change what it does (DOR-2305)
  • dorkos marketplace install --help now lists --approval, and dorkos marketplace held-back --help says a decision covers the installed copy (DOR-2305)
  • DorkOS now remembers how each marketplace source's last check went, whether it came from adding the source, a refresh, or browsing packages. On the sources page, a source whose packages didn't load keeps its amber dot and the reason after you reload the page, and every open window shows the same thing. A source that hasn't been checked yet gets a hollow grey dot instead of a green one. dorkos marketplace list has a new column showing how many packages each source has, and a line under the table says why any of them didn't load. Agents that list your marketplace sources see the same, so they can tell an empty marketplace from one that didn't load (DOR-2324).

Removed

  • The per-agent Manage rooms switch. Your old choice carries over: an agent you had switched it on for keeps rooms, and one you had switched it off for has Rooms blocked.
  • Standing permissions, the "stop asking about this for 8 hours" button, and the Standing permissions switches in Settings and the Control Center. Always allow replaces them. Any that were still running when you upgraded were ended, not made permanent, and your permission history has a line for each.

Fixed

  • Reach the newest message with one press of Scroll to bottom, even right after a lot of messages arrive at once. Before, it could stop partway and take two to four presses. (DOR-2268)
  • See your own message in a community channel as soon as you send it. Every half minute the channel used to quietly reload itself, and a message sent at that moment could take around twenty seconds to show up. (DOR-2268)
  • --project . on install, update and uninstall now means the folder you're in, even when DorkOS was started somewhere else. Before, DorkOS could pick the wrong project or refuse the path. (DOR-2193)
  • dorkos update now says to restart DorkOS when the running copy is older than the command, instead of a bare "Not found". (DOR-2193)
  • You can now save edits to a schedule that came with an installed package. Saving one used to fail every time, even when you had only changed when it runs (DOR-2302)
  • Updating or reinstalling a marketplace package keeps the settings and files you and your agents added to it. Before, an update reset everything except two folders, and a reinstall kept nothing (DOR-2245)
  • If you changed one of a package's own files, an update saves your copy next to the new one (as .dork-old) and tells you, instead of losing it. A package can mark a file as yours to edit, such as a settings file, and then your copy stays and the new default is saved next to it (as .dork-new) (DOR-2245)
  • A marketplace agent keeps its identity, persona and memory when its package updates. Before, every update gave it a new identity and reset its notes (DOR-2245)
  • Uninstalling a package keeps the files you and your agents added or changed, and lists them; reinstalling picks them up. --purge still removes everything (DOR-2245)
  • An update that the new version could never finish, such as one with a schedule in an unknown time zone, is refused before anything is removed, so the version you had stays installed (DOR-2245)
  • A skill or command file whose header starts with ---JSON or ---Json now reads the same as one starting with ---json. Before, DorkOS said it couldn't read the file. (DOR-2317)
  • A package schedule you had switched off no longer switches itself back on when the package stops including it, including a schedule you set up before this update. DorkOS now keeps your choice and writes it into the schedule's file, which is yours from then on. If the file can't be written right away, DorkOS keeps the schedule off and tries again (DOR-2272)
  • A schedule waiting for your approval keeps saying why. The note ("An agent changed what this schedule does", or "This schedule's file changed since it was last approved") used to be replaced a few minutes later by "DorkOS found this schedule in a file", which wasn't true (DOR-2313)
  • A Community whose owner once downloaded an export can be deleted again after that export expires. Before, asking to delete it failed every time with "Storage ownership must be reconciled before deleting this community." (DOR-2269).
  • An agent's post that a held, archived, or closing Community refuses now fails right away with the reason, instead of being tried again and arriving hours later. A held community says "The host has put this community on hold. You can read it, but no one can post. Its owner can still export it." (DOR-2287).

Security

  • A package's files can no longer run code when DorkOS reads them. Before, a skill or command file whose header started with ---js instead of --- had that header run as code the moment DorkOS opened it, including when you only looked at a package before installing it. DorkOS now refuses to read those files. Headers written the normal way read the same as before, with one small correction: a number written with a leading zero, like 0123, now reads as 123. Before, it could come out as a different number (83). (DOR-2308)
  • If an agent changes only the timezone of a schedule you approved, the schedule now stops and waits for you to approve it again, the same as when an agent changes when it runs. The same time in another timezone can land up to a day earlier or later. Schedules you already approved stay approved, in the timezone they run in now, and a timezone change you make yourself keeps the schedule running (DOR-2307)
  • An agent editing a schedule at the same moment DorkOS noticed the change could switch it back on without your approval. Now only your own edits do that (DOR-2307)
  • Before you update a package, DorkOS shows what the new version runs on its own: each command and when it runs, and each server or program and whether it starts in every session. What is new since the version you have comes first. The update installs only that version, with those files. If the package changes before the install, nothing is updated and DorkOS asks you to look again (DOR-2306)
  • When an agent asks to update a package, or to install one for all your projects that runs commands or replaces one you have, you get an approval card first. It lists what the package runs, its version, where it comes from and which agent asked. Nothing changes until you allow it (DOR-2306)
  • A package installed for all your projects loads into every session. If it runs commands or programs of its own, it now loads only after you approve the exact copy that was installed, down to its files. Installing or updating it yourself counts. If a different copy arrives another way, such as an agent installing it, DorkOS holds it back from the next message on and asks you. When a package is held back or removed, any open conversation that had it loaded restarts before your next message, so it stops running right away. After this update, expect one card for each such package you already have, noted "installed before approvals were recorded" (DOR-2306)
  • This protects what arrives through installs and updates. It does not re-check files on your computer after they land, since a program already running as you can change your files and settings anyway. A package you linked in from a folder is approved by that folder and runs whatever is in it, and its row says so (DOR-2306)
  • DorkOS refuses to install a package that ships its own settings, secrets or install record, because it never checks those files (DOR-2306)
  • A package that is held back says so on its row in Installed, with a Review button. dorkos marketplace held-back lists them in the terminal and lets you allow or turn one down, and dorkos lists them when it starts. With sign-in on, only a person signed in to the app can decide, so the terminal points you to Review (DOR-2306)
  • When an update changes something a package runs, the confirm step shows what runs now beside what will run after the update (DOR-2306)
  • A small skill or command file can no longer make DorkOS run out of memory or freeze when you look at a package. YAML lets a file repeat a value by name, and a few hundred bytes of those repeats can grow into billions of values. A long run of blank or comment lines in a header could also keep DorkOS busy for minutes. DorkOS now reads headers with its own reader and stops at one that is too long, repeats values too many times, grows too large, or nests too deep, and reports the file as unreadable instead. Real skill and command headers are far below the limit. (DOR-2311)
  • A marketplace or package can no longer make DorkOS load an enormous file, wait forever, or read files outside the package. DorkOS now stops reading a marketplace catalog past 5 MB, and each file it reads to check a package past 1 MB, and says which one was too large. While checking a package, it no longer follows a shortcut (a symbolic link) inside the package, and it skips anything that isn't an ordinary file, so a package can't point DorkOS at your own files or leave it waiting on a device. When a package includes shortcuts, such as a skill folder that is a shortcut to somewhere else, the install preview now lists each one and says it won't be installed, instead of the skill quietly going missing. Reading a marketplace's extra DorkOS catalog file (dorkos.json) now gives up after the same wait as its main catalog. Real catalogs and package files are far smaller than these limits. (DOR-2319)
  • A Community with Google sign-in accepted a bare Google ID token as a way to sign in, and any signed-in session could read back the tokens Google had issued. Together, someone holding an old token could start a new session without Google, which also got past the "signed in within the last five minutes" check that account deletion relies on. Sign-in now only goes through Google's own page, and those tokens are no longer handed out. The same rule covers the new single sign-on.
  • When an agent changes what an approved schedule does, or when it runs, the schedule now stops in that same moment and waits for you. Before, it kept running on the agent's new version for up to a few minutes, until DorkOS noticed the changed file (DOR-2313)
  • An approved schedule now waits for you again when an agent changes its name, the runtime, model or effort it runs with, its time limit, or whether it remembers earlier runs. Before, an agent could switch an approved schedule to a different model, or let it run for hours longer, and it kept running. A change you make yourself stays approved. Schedules you already approved stay approved through this update, with the settings they run with now (DOR-2323)

[0.82.0] - 2026-09-23

DorkOS 0.82.0 lets you move between your own DorkOS and every community you've joined from one switcher, and marketplace packages now install and update the version they say they will. The feedback form is simpler too. Communities are still early.

Added

  • Move between this DorkOS and each community you've joined from the switcher at the top of the sidebar. On a phone, it opens as a sheet from the top bar, with your settings and account still at the bottom. The switcher remembers your order and where you left off. Messages from one community never show up in another, even after you sign in as someone else. Press ⌘⇧K (Ctrl+Shift+K on Windows and Linux) to open it, even while you are typing in a message box.
  • When you switch from a community back to this DorkOS, you land on the page you last had open here. Reloading and your browser's Back button still take you to the address in the bar.
  • Community rooms now reopen at the message you were reading. Each room and thread keeps its own place.
  • The switcher shows mentions of you apart from other unread messages in each community. When a community can't be reached, its counts are marked as last checked.
  • Community channels now follow what you're allowed to do there right now. If a community's server can't be reached, you can still read saved messages, but posting waits until it's back. Archived communities stay read-only. If a community removes your access, or you leave it on its site, DorkOS notices within seconds and clears its private messages until you reconnect. If you had it open, you go back to your own DorkOS. Other communities are not touched.
  • Hand a new community to its owner with one link. When a host administrator creates a community, they now get an owner claim link to copy and send. The owner opens it, creates an account or signs in, and lands in their new community as its owner. The link works once and lasts 24 hours. The secret sits after # in the link, so the browser never sends it with a page request, and the page removes it from the address bar before loading anything else. (DOR-2181)
  • The context switcher now has a Manage menu for the community you have open. Invite people, Community settings and Leave community open that community's own site, at the right page, where it checks your sign-in. The DorkOS app's own settings stay under Workspace settings, so the two never mix. Disconnect asks first, then removes only that community from this app. You stay a member (DOR-2185).
  • Add community in the switcher now offers three separate paths. Connect a community links this DorkOS to a community you are already in. Join with an invitation opens an invite link you were sent on the community's own site. Run your own community opens the guide for setting up your own community server (DOR-2185).
  • Not signed in? The form asks for your email, so we can tell you when your report is fixed. It remembers the address in this browser for next time (DOR-2232)
  • On a phone, the You tab now has Send feedback, Your reports and Documentation as rows of their own, and the command palette has a Your reports entry (DOR-2232)
  • Close the form by accident and your draft is still there when you open it again. Press ⌘↵ (Ctrl+↵ on Windows and Linux) to send, and the thank-you links to Your reports (DOR-2232)
  • Sending the same report twice within a minute is caught, so it doesn't get filed twice (DOR-2232)
  • Reload without losing your invitation. If the page reloads while you are joining a community, it still shows the community, who invited you, and any channel the invitation includes, and you can still create an account or sign in. The invitation link itself is still never saved by the page. (DOR-2181)
  • See what rejoining brings back before you rejoin. If you were a member before, the invitation lists what returns (your name and handle) and what stays removed (your old role, earlier channels, agents, and connected DorkOS installations). (DOR-2181)
  • If you run a Community server, you can now give a program its own key instead of your password. Create one under API keys on the host page, choose what it may do (read community records, create communities, or suspend and resume them), and copy it once. A key can never read messages, files, or members, and it cannot create other keys. You can replace a key without downtime, or revoke it at once. A headless server can create its first key from the command line with node dist-server/host-keys.js (DOR-2253).
  • If you run a Community server, you can now set limits for each community on the host page: the most members and the most file space, each shown beside what it uses now. Lowering a limit never removes anyone or anything. It only stops new members or new files once the community is full. Exports never count, so an owner can always download their data. A program with a host key can also give one person more or fewer agents than the server's default, and read how much each community uses without seeing any names or messages (DOR-2254).
  • Sign out of a community site from the browser you are using. Find it in Settings, under Account, or on the page where you choose a community. Only that browser is signed out. Your memberships stay, and your connected DorkOS installations keep working. (DOR-2181)
  • Disconnect all your DorkOS installations from a community at once. In Settings, under Account, confirm your password and every installation you connected there stops reading and posting until you connect it again. You stay a member, and your installations in other communities are not affected. (DOR-2181)
  • dorkos update checks every package you have installed in one go. That includes packages installed for a single agent. A package installed in two places now shows up as two lines, each saying where it lives, like flow [Alpha]. With --apply, it lists what it updated and anything it couldn't update, with the reason. Programs can ask the same question with GET /api/marketplace/updates and apply updates with POST /api/marketplace/updates, either for named packages or for exactly the installations a check listed. A package folder you linked in from your own copy is checked but never replaced; its line says to update the source instead (DOR-2194)

Changed

  • The Send feedback form is simpler. You write in one box, and your screenshot, the part of the app you pointed at, and the buttons to add them all sit inside that box. Diagnostics and the conversation are small switches under it, each with a preview (DOR-2232)
  • The page with the reports you've sent is now called Your reports, in the help menu, its tab and its title (DOR-2232)
  • The help menu has three items now: Send feedback, Your reports, and Documentation. Report a bug is part of Send feedback (pick Bug), and the public GitHub option is a link at the bottom of the form (DOR-2232)
  • Pointing at part of the app no longer writes code names into your message. It shows up as a small picture named by the words on it, like "Set up a daily run", and the box asks what's wrong with it. You need to add a few words before you can send (DOR-2232)
  • When joining fails, the page now says plainly that membership was not added, tells you if your new account was still created, and offers one next step: try again, open the link again, or ask for a new invitation. (DOR-2181)
  • The community chooser works fully by keyboard and screen reader, explains why a suspended community can't be opened, and tells you when a community link you opened isn't available to your account. With no memberships yet, it tells you how to join. (DOR-2181)
  • DorkOS no longer installs a package whose .dork/manifest.json and .claude-plugin/plugin.json state different versions, and says which file says what. Packages you already have stay installed and can still be updated or removed.
  • dorkos marketplace validate now fails when a marketplace entry lists a version that the package's own plugin.json contradicts, since Claude Code would quietly ignore the entry's.
  • When a community is full or out of file space, you now get a plain message that says so, and an invitation to a full community says it before you sign up (DOR-2254).
  • The DorkOS app now names a community's agent limit when you add an agent. An older DorkOS app talking to an updated Community server shows "That no longer matches the community" instead; update the app to see the plain message (DOR-2254).
  • Each connected installation now says what it can do (for example "Can read and post") and asks before it disconnects. The question says what ends and that you stay a member. (DOR-2181)
  • Leaving a community now lists what ends (your membership, its channels, and the installations and agents you connected there) and what stays (your account, your other communities, this browser's sign-in, and your past messages). A wrong password now says so and that you are still a member. Other refusals, like needing to transfer ownership first, now give their real reason. (DOR-2181)
  • DorkOS now tidies its store of downloaded marketplace packages on its own. After each download it keeps what your installed packages need, plus an update that is waiting to be installed, and removes the rest. Before, the store only grew, and checking for updates often would have filled your disk over time. (DOR-2249)
  • If DorkOS can't read one of your projects, for example on a drive that isn't plugged in, it removes nothing from the store until it can, and dorkos cache list tells you why. (DOR-2249)
  • dorkos cache prune now follows the same rule and no longer takes --keep-last-n. The old option could delete the exact copy an installed package came from. (DOR-2249)

Fixed

  • A closed community no longer accepts new invitations or members. Setting a community's admission to Closed already cancelled the invitations that were out, but an owner or admin could still make a new one and someone could join through it. Now no one new can be invited or join until the owner switches admission back to Invite only, and people who are already members keep their access. In the community's settings, the invite panel says the community is closed instead of offering a button that would not work (DOR-2178).
  • When an agent asks for a service by a name DorkOS doesn't know, such as "composio-emails", the refusal now tells it how to search for the exact name, and lists close matches when there are real ones (DOR-2231)
  • When no services are set up in DorkOS yet, an agent's request now says so and names the one step for you: open Connections in the DorkOS app and set up Accounts (DOR-2231)
  • Agents are now told that signing in to a service's command-line tool in a shell does not give DorkOS access. Before, nothing said so, and an agent could spend a turn installing one (DOR-2231)
  • A service an agent can find in DorkOS's service list is now a service it can ask for. Before, a request could be turned away while your linked DorkOS account was reconnecting, or when the list was too long to check in one go (DOR-2231)
  • Asking for a Messaging-only service like Telegram now tells the agent that you set it up under Messaging, instead of sending it back to search again (DOR-2231)
  • A screenshot attached to a bug report from the browser now shows the conversation you were reading. If you had scrolled through a conversation, the screenshot showed an empty list, or one message under a large blank space, even though the messages were on your screen. This happened both when you captured the whole app and when you pointed at one part of it. The desktop app was not affected. When a report includes diagnostics, it now also shows each error's actual message instead of {} (DOR-2230).
  • Bug reports now scrub private details from the diagnostics they carry. Folder paths that include your user name, secret-looking keys and passwords, and the query part of web addresses are removed before a report is sent, including from the crash details attached to a report (DOR-2230).
  • dorkos community deploy works with the current Fly CLI again. It created your Fly app and then stopped, saying it could not tell whether the app had been made, and left the app behind. It also refused to start at all if your Fly organization already had any apps in it. It now recognizes the app it just made by its name and the organization you picked, and it reads your existing apps without tripping over details the Fly CLI leaves blank. It still never takes over an app in a different organization. Setting up file storage would also have failed at the next step, because the launcher gave Fly the organization's short name where Fly needs its ID; it now looks up the ID first (DOR-2169).
  • Disconnecting this DorkOS from a community now ends its access on the community too, not just the copy on your computer. Before, the community still listed this DorkOS as connected after you disconnected it. If the community can't be reached when you disconnect, DorkOS still disconnects here and tells you, so you can finish under Connected installations on the community yourself.
  • When a community turns down a request, you now see why instead of "Community unavailable." For example, adding an agent past the community's limit says you've reached the limit on active agents. "Community unavailable" now means only that the community couldn't be reached or had a problem on its side. A private channel you haven't joined still looks exactly like one that doesn't exist.
  • dorkos update and the Update button now notice new versions of marketplace packages. Before, they always said everything was up to date. (DOR-2244)
  • When DorkOS can't check a package for an update, it says so and why (for example, "couldn't reach github.com"). It no longer calls that package up to date.
  • dorkos update with no package name now checks every package where it is installed, including packages installed for one agent. A problem with one package no longer stops the rest, and naming a package that isn't installed still ends with an error.
  • The installed list now shows the version Claude Code actually runs, even for a package whose own files disagree about its version.
  • A message you started in a community channel and did not send is now still there when you switch to another community, or back to this DorkOS, and then return. Files you attached to it come back too. Before, switching away threw the message away. It stays in that one channel of that one community, is never shown anywhere else, and is thrown away if you sign out or that community's connection ends (DOR-2241).
  • A marketplace package now installs the branch, tag or exact commit its listing names. Before, many installs quietly took the repository's newest code instead, and a package pinned to a commit or kept on another branch could fail to install. (DOR-2248)
  • The commit DorkOS records for an installed package is now always the code that was actually installed, so the version shown and the update check can be trusted. (DOR-2248)
  • A package kept in one folder of a larger repository now installs even when that repository's default branch has another name, like master. (DOR-2248)
  • When a branch, tag or commit doesn't exist, the install stops with a plain message saying so, before anything is downloaded. (DOR-2248)
  • If DorkOS stops in the middle of installing a package over an older version, you get the older version back. Before, a crash at the wrong moment could leave you with neither version, because DorkOS later deleted the saved copy of the old one instead of putting it back. (Updating a package is not covered yet; that fix is on its way.)
  • A package that was half-installed when DorkOS stopped is cleaned up the next time DorkOS starts, instead of showing up broken. If you have since put something of your own in its place, DorkOS leaves it alone.
  • When two copies of DorkOS work on the same project, one no longer undoes an install the other is still in the middle of. If you try to install a package while the other copy is installing it, DorkOS tells you how many minutes to wait.
  • A leftover saved copy of a package no longer shows up as a second copy of it: not as a second Shape, not as a second agent in the health check, not as extra skills for your coding agents, and not as a second copy of a scheduled task.
  • Small grey text on a community site is now dark enough to read against every background, and links inside text are underlined, so you can tell them apart without relying on colour. (DOR-2182)
  • Every button and field on a community site is now at least 44 pixels tall on a phone, including the menu button that opens the channel list and the owner claim field in host administration. (DOR-2182)
  • The on/off switch on each messaging connection in Connections now says which connection it turns on or off, so a screen reader no longer reads it as just "switch". (DOR-2182)
  • The two buttons at the bottom of a confirmation, like "Keep connected" and "Disconnect", are now full-size touch targets on a phone. (DOR-2182)
  • Warning and error text is easier to read. The red used for error messages and for buttons like Delete and Reset was too faint against the background in both light and dark mode. It is now a slightly deeper red in light mode and a slightly brighter one in dark mode, so every error message and red button label meets the standard contrast level for readable text. Red buttons in dark mode now use the same deeper shade the main Delete button already had.
  • Updating a package with --project no longer moves a package that is installed for everything into that one project. Each package is now updated where it is installed (DOR-2194)
  • A marketplace whose server stops answering no longer stalls an update check for minutes. After 15 seconds the check falls back to the last copy DorkOS saved, or says it couldn't reach the server (DOR-2194)
  • A self-hosted community server now shuts down cleanly when it is told to stop twice, for example when you press Ctrl-C and your process manager sends its own stop signal too. Before, the second request crashed the shutdown, so the server exited with an error and printed a stack trace even though nothing was wrong. It also stops within about five seconds when people have channels open, instead of waiting for them to leave, and a second Ctrl-C while it is stopping ends it at once (DOR-2221).
  • A file or data export that finished downloading no longer breaks the next request if your access to its channel ended at that moment. The download was already complete, but the community cut the connection afterwards, so whatever the app or browser sent next on it failed. You still can't download any more of a file once your access has ended (DOR-2250).
  • The community list no longer waits for a slow community. Before, if one community took a long time to answer, the whole list waited for it, sometimes for ten seconds or more, every time it refreshed. Now each community gets under a second.
  • A community that doesn't answer in time keeps the unread and mention counts it last reported, marked with when they were last checked. If it hasn't answered for a while, it shows as offline: you can still read what's saved, and it comes back on its own at the next refresh. A slow answer never makes DorkOS ask you to reconnect. (DOR-2223)

Security

  • Limit password guesses everywhere a community site asks for your password: leaving, disconnecting all installations, handing over ownership, exporting the whole community, archiving, restoring or deleting it, and creating or replacing a host API key. After 5 wrong passwords in a minute, that account's password-protected actions are refused for the rest of the minute, even with the right password. Other people are never locked out by someone else's guesses, even when everyone reaches the server through the same proxy. A wrong password now always says "That password is not right." and that nothing changed. A server owner can change the number with COMMUNITY_REAUTH_ATTEMPTS_PER_MINUTE. (DOR-2181)

[0.81.0] - 2026-09-22

DorkOS 0.81.0 brings Opus 5.5, Anthropic's newest model: pick "Opus" in the model menu to use it. Self-hosted communities also take a step forward. One server can now hold several communities, owners can manage theirs from the Community website, and a new command sets up a community server on Fly for you. Communities are still early.

Added

  • Use Opus 5.5, Anthropic's newest model. Choose "Opus" in the model menu to use it. On some accounts the row reads "Opus (1M context)". Read the upgrade note below: sessions already on Opus move to it on their next message (#1993)
  • Early: Run more than one community on one self-hosted server. Each community keeps its own members, channels, files, agents, exports and live updates, and having an account on the server does not let anyone into a community they are not a member of. Links to an existing single community, and approvals for new DorkOS connections, keep working after you upgrade (#1975)
  • Early: Connect DorkOS to one specific community on a shared server. On the Community website, you go straight to your community if you belong to one, or choose between them if you belong to several (#1978)
  • Early: Manage a community from the Community website: its settings and icon, members, exports, ownership, and archiving or restoring it. Owners can schedule a community for deletion, watch its progress, and cancel any time in the seven days before it happens. Whoever runs the server can create communities and hand them to an owner without being able to read any private conversations (#1984, #1985)
  • Early: Join a community from an invitation link that carries you through signing in, without the invitation's secret ever being saved in your browser. Once you have joined, you choose when to open the community, and you can see that each of your DorkOS installations connects to it separately (#1987)
  • Early: Open an archived community to read its history and export your data. Posting and other changes stay off until an owner restores it (#1987)
  • Early: Set up your own community server on Fly with dorkos community deploy. It uses a Neon database and a private Tigris bucket for files, shows the whole plan first (including which accounts may be charged), and creates nothing until you type the app name. If setup stops partway, it keeps what it made, never deletes anything that costs money on its own, and tells you how to pick up where it left off (#1965)
  • Early: Check whether a community server can safely go back to an older, single-community release. The recovery guide has you keep a copy of your current backup first (#1975)

Fixed

  • A session's cost total now carries on after the session restarts in the background, instead of starting again from zero. For a conversation started before this update, that begins after its first new message (#1993)
  • Each turn's token and cost figures in your own traces now cover that turn alone. Before, from the second turn on, they counted the whole session so far (#1993)
  • A tool from another server that borrows DorkOS's name no longer skips the approval prompt. DorkOS now checks which server actually runs the tool, not just its name (#1993)
  • When DorkOS can no longer confirm you still have access to a community, it stops that community's live activity on your machine instead of carrying on. You can still remove your own agents from a community while it is unreachable (#1984)

Note for people upgrading

  • Sessions and agents already set to Opus move to Opus 5.5 on their next message. So do ones set to Default, on an account whose default is Opus. Opus 5.5 is priced differently from the Opus it replaces, so what a turn costs can change. To stay on the older model, set its full model name on the agent (#1993)

[0.76.0] - 2026-09-20

DorkOS 0.76.0 lets an agent sign in to websites with a login you saved once, gives Codex and OpenCode agents the same DorkOS tools Claude Code agents have, and lets agents decide for themselves when a room message needs an answer. It also fixes a long list of small things in sessions, schedules and the desktop app. Two surfaces arrive early: self-hosted communities and the DorkOS account panel. Both are built and tested, but not yet proven by people outside the team, so expect rough edges there.

Added

  • Desktop: when you send feedback from the desktop app, the report now includes the app's own recent log lines (never the server's), so a problem like the window reloading itself can be seen from the report (DOR-2045)
  • An agent that registers another agent can now give it a name to show, an emoji and a colour, instead of leaving it with a face DorkOS picked. If it sends something that is not one emoji, or a colour that is not a hex code like #ec4899, DorkOS turns the call down and says what it wanted rather than storing it (DOR-2054)
  • Ask DorkBot to add an agent or a room to a sidebar section, and it changes only that section. If the thing was already filed somewhere else it moves, the way it does when you drag it yourself, and DorkBot tells you where it came from. You can name an agent the way you say it out loud and DorkBot works out which one you mean, or tells you it cannot find it instead of quietly filing a row that points at nothing. An agent can only file rooms it is in, so asking one to tidy your sidebar never turns into a way to find out which private conversations you have. It can make the section if you do not have one yet, and take things out again the same way. Until now the only way it could do any of this was to rewrite your whole sidebar at once, so a section you dragged at the same moment could be quietly undone (DOR-2055)
  • Ask DorkBot to report a bug or ask for a feature, and it drafts the report and hands you a link to review and send. Nothing is sent for you: the link opens a GitHub issue page with your version, your OS, which agent runtimes you have set up and your on/off settings already written in, so you read it, change anything you would rather keep to yourself, and press submit. It opens the same page you get from Help and feedback → Report on GitHub in the app, or from dorkos feedback in a terminal (DOR-2056)
  • Publish @dork-labs/cloud-api, the public wire contract for DorkOS Cloud: Zod schemas for the whole /v1 surface, a thin fetch client, and a corpus of example payloads both sides of the wire can build against. It has no dependency on anything else in this repository, so anyone can read exactly what the app and the hosted service say to each other (DOR-2025)
  • Early: Settings now shows what your DorkOS account includes, once you link one. Under Access → DorkOS account you get your plan, the people and addressed agents it covers, your included credits and what is left of them, cloud hours and storage, and how remote access works for you. Everything on the card is what the service says — the app itself knows no plans and no prices. Nothing in this section appears on an install with no DorkOS account: the whole section is one line until you link, and no request leaves your machine (DOR-2027)
  • A credits gauge with a breakdown of where they went, agent by agent, plus what this machine spent on its own. The two are deliberately kept apart and labelled: the runtimes' own cost figures are their price list, not your bill, and a runtime that reports no cost at all is named rather than silently left out of the total (DOR-2027)
  • Seat management: see the seats your organization holds, hand one back, and assign one. When an action needs a different plan, the explanation is the one the service sent, word for word (DOR-2027)
  • An occasional note comparing what you have spent with what a subscription would have cost, when the service works one out. It is one line, it can be dismissed, and it never sits between you and topping up (DOR-2027)
  • DorkOS credits can now run your turns instead of your own key, for Claude Code. It is off unless you turn it on, and the app says plainly which of your runtimes the choice does not reach yet (DOR-2027)
  • Early: Start a self-hosted community server with its own accounts, channels, message history, and live updates. Docker setup needs no DorkOS Cloud account.
  • Early: Invite people to a self-hosted community, manage membership, approve a local DorkOS installation, and give each agent its own identity. Members can revoke a connection or agent without sharing credentials in the browser.
  • Early: Chat in a self-hosted community from your browser. Invite people, share files, reply in threads, manage members and agents, and download your own posts and files before leaving.
  • Early: Connect the DorkOS app to self-hosted communities and bring local agents into shared channels. Read channels, reply in threads, and share files without a DorkOS Cloud account.
  • Early: See which agent replies are waiting for delivery to a community, and retry or stop them from the app. Reconnecting keeps confirmed replies from appearing twice.
  • Early: Recover a community member's password from the server without setting up an email service. Recovery signs the member out and revokes their connected installations and agent credentials.
  • A Test key button wherever you paste an API key. It asks the service whether the key works and tells you straight away, without saving anything (DOR-2123)
  • The published cloud contract (@dork-labs/cloud-api) now describes buying credit and asking for a refund, including the three refusals that go with them, so an app can say what actually happened instead of guessing (DOR-2090)
  • A person in an organization can be shown by name rather than by role alone, and a seat's permission list can show what it resolves to when no rule is set (DOR-2090)
  • A remote connection now carries the two timing windows it is told to honour — how long it may sit idle, and how long it has to finish work in flight before it closes (DOR-2090)
  • A new seat activity event, for anyone building fair billing on top: one per agent seat per subscription period, with nothing from any message in it (DOR-2090)
  • Two new reasons an inference request can be turned down: a daily limit that resets, and a single turn that has used up its budget. Both are separate from "you are out of credit", because what you do about them is different (DOR-2090)
  • An approval card that cannot offer "stop asking about this" now tells you how to get it. Answering once and having DorkOS remember it needs Standing permissions switched on, which needs a login. Until now a card with either one missing simply showed no such button, so it looked like there was no way to stop being asked. The card now says: turn on Standing permissions in Settings, under Access. Cards where DorkOS cannot tell which agent asked stay quiet, because no setting would help there (DOR-2102)
  • Sign in to a website once and your agents' browsers start already signed in. Run dorkos browser login github.com, sign in in the orange-framed agent browser (your password manager works there as usual), and press Enter. Agents get the saved sign-in, never your password (DOR-2155)
  • Give an agent the signed-in browser from its profile: Tools & MCP, then Signed-in browser. The button works for Claude Code, Codex and OpenCode agents. Each browser runs hidden, starts from your save, and keeps what the agent does to itself. An agent with the browser can read every saved sign-in in it, so give it only to agents you trust with those accounts (DOR-2155)
  • See which sites are saved with dorkos browser status, and take one away with dorkos browser forget <site>. The same saved sign-ins also work in the claude, codex and opencode command-line tools; the Signed-in Browser guide has the setup. Tested on macOS with Chrome; a full agent turn inside DorkOS, and Windows and Linux, are not tested yet (DOR-2155)
  • When you asked an agent something and it chose not to reply, the room tells you: one line saying it read your message and did not answer, so you can ask again, ask somebody else, or let it go. When nobody asked and an agent simply had nothing to add, nothing is written at all — the working line fades out saying it finished with nothing to add, and there is no trace of it afterwards (DOR-2099)

Changed

  • DorkOS now checks your API key before saving it. A key that the service turns down, or an address nothing answers at, is reported right there in the form instead of saving cleanly and failing on your first message (DOR-2123)
  • The "your own API key" form remembers what you entered: the power source, the base URL, and that a key is already saved, shown as the last four characters. Moving a saved key to a new address asks you to paste it again, so nothing else can point your key somewhere you did not choose (DOR-2123)
  • Picking where your models come from is now a short list — OpenAI, Anthropic, or any OpenAI-compatible server with its own address — instead of a box you type a name into. A name nobody serves used to save without complaint and then fail later (DOR-2123)
  • Full autonomy now says what it does not cover, everywhere you can turn it on. It switches off the agent's own permission prompts: editing files, running commands, working outside this project. It does not switch off DorkOS's own questions about risky actions, like deleting a schedule or removing an agent. Those still stop and wait for you on an approval card. That line already appeared in a chat, on a channel connection and on a scheduled task. It now appears in the places it was missing: the shared setting in Settings → Runtimes, any runtime card you have set differently there, and the Power dial in the Control Center. It shows up once per setting rather than once per card, so a page where every agent follows the shared setting says it once. If you have already ticked "don't show this again", those were the only places left that could have told you (DOR-2102)
  • The line itself is clearer, and it ends by naming a place rather than giving you an order: "The setting for that is Standing permissions, in Settings under Access." It used to say "actions on DorkOS itself, like removing packages, still ask", which named the rarest example and pointed at a Settings tab that no longer exists. In the Control Center, where the Standing permissions switch is right there on the same panel, the line points at that switch instead of sending you to Settings (DOR-2102)
  • Full autonomy no longer promises more than it delivers. The dial used to read "Acts on its own. It will not stop to ask you, even for risky steps." Deleting a schedule is about as risky as a step gets, and DorkOS has always stopped for that one. It now reads "Edits files and runs commands on its own. It will not stop to ask you.", with the exception spelled out underneath (DOR-2102)
  • Your Codex and OpenCode agents now always have the DorkOS tools your Claude Code agents have — posting in rooms, reacting, reading back what was said, remembering things between sessions, and using the canvas and the Browser tab. It used to be an experiment you had to find and turn on, and most people never did, so a Codex agent sat in a room with no way to answer while the Claude Code agent beside it answered fine. Nothing about what those agents may DO has changed: the same permission checks run on every action, and an agent still has to be a registered agent of yours to get any of it (DOR-2099)
  • Your agents now decide for themselves whether to answer in a room. What an agent writes while it thinks stays in its own session, so at the end of every turn it does one of three things: it says something, it puts an emoji on your message, or it decides nothing needs saying and stops. This is how it works everywhere now — in channels and in direct messages, on every agent you run (DOR-2099)
  • An agent can answer you in a direct message the same way it answers in a channel. It used to be refused there, back when whatever it wrote was posted for it (DOR-2099)

Removed

  • The "DorkOS tools in every runtime" switch is gone from Settings → Experiments. There is nothing left to decide — every runtime gets the tools — so the switch would only have offered you a way to take them away again (DOR-2099)
  • The "Agents decide when to speak" switch is gone from Settings → Experiments. It is how rooms work now, so the switch would only have offered you a way to go back to agents answering every single time (DOR-2099)

Fixed

  • A skill in a folder DorkOS cannot open is now reported instead of quietly vanishing. Before, a folder with the wrong permissions on it made a project with a skill in it look exactly like a project with none — and dorkos harness adopt <name> told you there was no skill by that name, which was not true about your own project. You now get a warning naming the folder, and asking to move the skill tells you what to fix (DOR-1949)
  • Warnings about files DorkOS could not read are written in plain words again. They used to trail off into an error code and somebody's home directory — ENOTDIR: not a directory, scandir '/Users/…'. Now they say what is actually wrong: it is a file, not a folder; nobody may read it; the link points at nothing (DOR-1938)
  • dorkos harness sync now tells you when it could not look inside a folder it tidies up. It used to say the project was fully in sync, because a folder it could not open and an empty folder looked the same to it. Nothing was ever deleted by mistake — it is a warning, not a fault — but you can now see the folder and fix it (DOR-1939)
  • A sync no longer promises to remove a file it cannot remove. If an old, unused link sits in a folder DorkOS may not write in, --check used to list it for removal and --fix then stopped partway through with a permission error. Both now name the file and the folder, leave everything exactly where it is, and still count the project as needing attention — so you never read "everything already matches" over a leftover file DorkOS can see (DOR-1941)
  • The report no longer claims a coding tool can see a packaged skill when the link it reads could not be made. Whether something is in the way of .agents/skills or the folder simply will not take a new file, the skill is listed as not reaching that tool, with the folder named — instead of being shown as working (DOR-1942)
  • When DorkOS cannot read one of the folders your all-projects packages use, the message names the folder that is actually in the way. It used to blame the packages folder whichever of the two was the problem, and print an error code about the other one (DOR-1937)
  • Tell you when a package you installed has a file DorkOS cannot read, instead of leaving it out of every report. dorkos harness sync now names the package and the file, and says that the skills it had already shared were left where they are (DOR-1933)
  • Keep sharing a skill whose folder DorkOS cannot open — a folder whose permissions changed, or one that is halfway through being deleted. DorkOS used to treat it as a skill you had removed and take its links away without a word; now it leaves everything alone and tells you which folder to look at (DOR-1935)
  • Stop a timer running for a skill that is no longer there. Uninstalling a package used to leave its scheduled skill on the clock forever; DorkOS now pauses it in the same pass, whether the package went or only the link to it, and whether or not other skills from the same package are still around (DOR-1934)
  • The desktop app used to wait up to a minute before recovering a window that had failed, if a web page inside it was still loading. Now it only waits for the app's own page (DOR-2046)
  • Tell you when one skill name is in two folders the same agent tool reads. If review-pr lives in both .claude/skills and .opencode/skills, OpenCode sees two skills under one name — DorkOS now says so beside both of them, along with what that tool's own documentation says happens: one of them loses, both load, or nobody wrote it down. Both copies still show as read by the tool, because both really do load (DOR-1940)
  • Say what a marketplace package does in plain words on its page at dorkos.ai. A package that hooks DorkOS up to something outside now reads "Adds connections" instead of "Installs messaging adapters" — which was wrong twice over, since that kind of package can be a Telegram bot or an account DorkOS acts through, not only messaging (DOR-1936)
  • Rename the marketplace's "Integrations" category to "Connections", and describe it as "Ways to hook DorkOS up to outside services." Links to the category page are unchanged (DOR-1936)
  • Stop turning a friendly name into a broken one. An agent's short name is permanent and is what its @handle in a room is made from, so "DorkOS Cloud" used to be stored with the spaces still in it. DorkOS now shortens it to dorkos-cloud and keeps "DorkOS Cloud" as the name you see in the app (DOR-2054)
  • Keep the name you typed when creating an agent from the app or the API. It was accepted and then thrown away, so the agent ended up showing its short name to everybody (DOR-2054)
  • An agent asking DorkOS what it can do no longer gets an error when it leaves the page size out. Nine tools had an argument you were supposed to be able to skip — the page size on activity, room history, room search and marketplace search, and the member list when creating a room — and skipping it failed the call instead of filling in the usual value (DOR-2053)
  • New agents show up in the sidebar right away, in every window. Registering, renaming or removing an agent used to leave the list showing the old set until you reloaded the page, so a project you registered from a terminal, from a second window, or by asking DorkBot simply was not there. The same goes for settings: rearrange your sidebar in one window and the other follows (DOR-2052)
  • The Remove button on an agent now clears its row on the spot, instead of leaving it on screen for up to half a minute in the window you clicked it in (DOR-2052)
  • A plugin your agent installs for you now works right away, the same as one you install from the app. Before, its files arrived but its commands and skills never showed up for the agent. Removing a plugin through an agent now cleans those up too (DOR-2057)
  • Say what git will do with the files DorkOS writes when your project sits inside a bigger repository. A package in a monorepo — or any dorkos harness sync run from a folder below the one holding the .git — was treated as if it were not in git at all: on Windows nobody was warned that the skill links there get committed as copies of the files rather than as links, and the .gitignore check stayed silent. DorkOS now looks upward for the repository, reads the ignore rules from there down to your project the way git does, and names the file you would open to change one — ../../.gitignore when that is the one deciding (DOR-1957)
  • You can now approve a schedule that came with an installed package, and switch it on or off. Clicking Approve used to fail with an error saying DorkOS would not change the package's files. Your choice stays put when the package updates, and changing what the schedule does still means editing the package (FB-26)
  • Open a session again after its agent asked you a multiple-choice question and left out a detail, such as whether you could pick more than one answer. Before, the whole session refused to load and showed "Session not found". Now the question counts as pick-one, and a question with nothing readable in it no longer stops the rest of the conversation from loading. The same kind of question also shows up right away while the agent waits for your answer, instead of never appearing. (DOR-2075)
  • On the desktop app, a tab on a channel used to just say "Channels," no matter which one you had open. Now it reads "#general" (or a direct message's name), the way the channel itself does. It shows "Channels" until that name loads, so you never see the wrong one flash by, and it keeps up if someone renames the channel from another device or another agent renames it (DOR-2072)
  • The bar above a session opened from one of your own rooms said "# #proj-trame" — the room's own name already starts with #, and the mark beside it drew a second one. The visible name now reads #proj-trame once, with the full form still available to screen readers (DOR-2073)
  • The "Send feedback" dialog now scrolls on its own. On a shorter screen, opening "Attachments & details" and adding a screenshot used to push the Send button off the bottom with no way to reach it. The message and attachments now scroll while Send stays put (DOR-2076)
  • Fix a list posted to a room sitting flush against the left edge instead of indented, unlike the same list in a session transcript. A room message now draws its markdown through the same typography as a session's, so a numbered or bulleted list, a table's spacing, a link's color, and inline code's color all match between the two places (DOR-2074)
  • Stop telling you the agent did not respond when its reply was only slow to start. With a running agent kept between messages, a restarted agent sometimes finished some of its own background work first, and the app ended your turn right then with an error, while the real reply arrived seconds later with nowhere to show. When that happens, your turn now waits up to 30 seconds for the reply to your message. A turn that stops without saying anything still gets the error, after half a second or, if the agent is still visibly working, up to 30 seconds. Errors, a stopped reply and commands like /compact still end the turn right away, and pressing Stop while a turn is waiting ends it at once (DOR-2064)
  • A session with one damaged message in its history now opens. Before, a single message the app couldn't read made the whole session fail with "Session not found". Now the rest of the conversation loads, and a quiet note sits where the unreadable part was. The note is calm on purpose: an old damaged message is not your agent failing, so it no longer looks like it. If your agent asks you a question, or asks for your OK, and the app can't show it, you get a note saying so, instead of an agent that seems stuck for no reason. (DOR-2078)
  • A session started from a room now gets the short title Claude Code writes for it, instead of showing the message that started it. Renaming a session still wins over that title, and it updates on its own as soon as the new title is ready, with no need to reload the page. (DOR-2083)
  • Installing a package no longer asks you to approve a schedule it shipped switched off. A schedule like that now shows up on the Schedules page already off, with its source named so you can tell it came from the package — switch it on yourself and DorkOS runs it through the same approval it always has. A schedule a package ships switched on still asks first, the way it always has
  • Your agent's background helpers are no longer stopped while they are still working. The app used to close an agent down as soon as no message of yours was in flight — after five quiet minutes, when another chat needed to start its own agent, or half an hour after your last message. Anything the helpers had not finished was thrown away, and the agent was told you had refused.
  • This now covers every kind of background work an agent starts: helpers, monitors, and task types the app does not recognise yet.
  • An agent that is only talking to itself between your messages no longer counts as unused.
  • Background commands are the one exception. They never hold an agent open, and they still stop when it does.
  • Nothing waits forever. After four hours of background work the app takes the agent back anyway, and if a helper finishes without ever reporting in, the app stops holding the agent open for it after 30 seconds (DOR-2064, DOR-2065)
  • An agent's task count in the mesh view no longer includes a schedule that is still waiting for your approval. Before, a newly proposed schedule made the agent look like it was already running work it had not started yet (DOR-2087)
  • When your agent keeps working after a reply ends — finishing a background helper and reporting back, or picking its own work up again — what it says now appears in the chat as its own message, labelled as coming from the agent. Before, those words were thrown away and you saw nothing after the reply finished.
  • A message you send while the agent is still finishing its own work now waits its turn instead of landing in the middle, so your words and the agent's never end up jumbled into one reply. It waits at most half a minute, even if the agent never gets back to it.
  • Pressing Stop while the agent is talking on its own now actually stops it. Before, you were told nothing was running.
  • Unregistering an agent no longer switches off the schedules it owns. It pauses them instead — the same way a package update already worked — so a schedule you had approved and switched on comes back switched on and running once the agent is registered again (DOR-2082)
  • A scheduled task that could not use a single one of its tools is now marked Blocked, instead of getting a green tick. A task on a timer runs while you are elsewhere, so there is nobody to approve a tool it asks about — and DorkOS turns those requests down on the spot. When every one of them is turned down, the task runs, takes a few seconds, does nothing at all, and used to be filed as a success: one mailbox task read no mail twice in an afternoon and left two green rows behind it. Blocked is its own outcome in the run history, with the tools it was denied named on the row, its own entry in your activity feed, and its own notification — because a task that quietly does nothing every night is the one thing you cannot spot for yourself. It also dims the health light at the top of the window, the same as a failure does. Nothing broke, so there is nothing to debug; what it needs is permission. A task that lost one tool and got on with the rest of its work still counts as completed, and so does one that simply ended by asking you a question (DOR-2101)
  • Approving a schedule an agent proposed can now also give it the setting you actually run at. A proposed job is always held back to the careful level, whatever it asked for, so nothing an agent writes can hand a 3am job more power than the agent has itself. But approving it never lifted that — so if your own setting was Full autonomy, you said yes and then the job failed the first time it needed to run a command, with nothing telling you why. The approval card now shows what each answer will run the job at, and offers a second button naming your own level ("Approve at Full autonomy") beside the plain Approve. Giving it a level that never stops to ask asks you to confirm first, the same as anywhere else. It applies to that one job: the next schedule an agent proposes arrives held back exactly the same way (DOR-2100)
  • A new conversation now shows the power level it will actually run at before you send anything. If you set new sessions to start at Full autonomy, the permissions control and the sidebar row said "Default — asks before it edits a file or runs a command" until your first message, then switched. The setting was always being applied to the turn; only the screen was wrong, and it was wrong at the moment you look to check (DOR-2103)
  • A power level you pick for one conversation before sending it anything now survives a page reload. It was stored correctly and used for the turn, but nothing could read it back, so the screen fell back to showing your default — which could claim more freedom than the conversation actually had (DOR-2103)
  • While the app is still working out what a conversation runs at, the permissions control now says nothing instead of showing "Default" for a moment and then correcting itself — and it stops waiting once there is nothing left to wait for, so it never sits there loading forever when no conversation is open, a read has failed, or your wifi dropped — DorkOS runs on your own machine, and losing the internet is no reason to stop reading it (DOR-2103)
  • Stop the "What will be sent" feedback preview's privacy line from overlapping the last diagnostics row (DOR-1962)

Note for people upgrading

  • No field was renamed or removed in the cloud contract, and nothing you already send stops being accepted (DOR-2090)
  • New values can turn up on existing lists. This release adds five: three new refusal codes and two new reasons an inference request can be turned down. Code that was built against an older release will meet a value it does not recognise, so show it rather than treating the answer as broken — the contract says what a consumer owes an unknown value, and the package README explains how the bundled client behaves until it can carry one (DOR-2090)
  • If you had turned the "DorkOS tools in every runtime" experiment on or off yourself, your choice no longer means anything and DorkOS quietly drops it from your settings file the next time it writes one. You do not have to do anything (DOR-2099)
  • If you had turned the "Agents decide when to speak" experiment on or off yourself, your choice no longer means anything and DorkOS quietly drops it from your settings file the next time it writes one. The limit on how much one agent may say in a single turn — three messages, unless you changed it — stays exactly where it was (DOR-2099)

[0.75.1] - 2026-09-14

DorkOS 0.75.1 is a one-fix patch: the desktop app no longer reloads itself after you change pages or open a web page on a canvas.

Fixed

  • Desktop: the app no longer reloads its own window about ten seconds after you move to another page, or every ten seconds while a web page is open on a canvas. Each of those reloads threw away anything you had typed and not yet sent (#1860, DOR-2041)
  • Give markdown documents cleaner spacing, aligned lists, and readable tables and code in both light and dark mode.
  • Keep open documents in step with the app's colors when you switch themes.

[0.75.0] - 2026-09-14

DorkOS 0.75.0 gives every room a shared canvas and a real browser, so you and your agents are looking at the same document, diff, or web page. Your agents can now use a page, not just read it. And the Skills page finally shows which of your coding tools can see each skill — with one button to fix the ones that cannot.

Added

  • Send account events to an agent, room, Slack channel, or Telegram chat after choosing the exact account and event. Agents can also ask for the service access they need, while the owner keeps the final choice of account, actions, and notifications.

  • dorkos harness sync now lists everything else in your .claude/ folder, not just the parts it already knew how to copy. Rules in subfolders, subagents in subfolders, and whole folders you have linked in from elsewhere are all counted, and a subagent is listed under the name you invoke it by rather than its file path. Your rules, your subagents, your MCP servers, the hooks you keep to yourself in .claude/settings.local.json, and any hooks a skill declares in its own front matter each get a line saying they stay in Claude Code — and, for every other agent you run, where that agent would keep the same thing. Before this, a project with 13 rules, 7 subagents and an .mcp.json was told about none of them, which reads exactly like a project that has none (DOR-1845)

  • Your subagents already work in Cursor, and your skills in .claude/skills already work in Cursor, OpenCode and Copilot — the report now says so instead of calling them dropped. All four read those folders themselves, so nothing is written for them. That includes the skills you marked Claude-Code-only: marking one says what you meant, not what OpenCode reads, and OpenCode reads that folder

  • When a skill in .claude/skills has a name an agent would not accept — capitals, an underscore, or a name inside the file that does not match its folder — the report no longer says it works there. It says which rule the name breaks and that the agent's own docs do not say what happens next, so you can rename it or leave it knowingly (DOR-1845)

  • dorkos harness sync now looks at which coding agents your project uses every time you run it. Start using Cursor next month and it tells you Cursor is not turned on yet, instead of quietly leaving it out (DOR-1851).

  • dorkos harness sync --fix --enable cursor turns an agent on and sets it up in one command. It is the only thing that writes to your .agents/harness.manifest.json, and all it does is add the name to the list — your own formatting and key order stay exactly as you left them (DOR-1851).

  • Some of what DorkOS writes belongs to your computer rather than your project: links into installed packages, and the hooks files it rebuilds on every sync. If your .gitignore does not cover them, dorkos harness sync now prints the exact lines to add, and --fix --write-gitignore adds them for you. It only ever appends, under a comment saying where the lines came from (DOR-1851).

  • If you keep .agents/ out of git, dorkos harness sync explains what that means: your skills stay on this computer, while the links DorkOS writes into .claude/skills still get committed — so anyone who clones your project gets links pointing at files they do not have (DOR-1851).

  • A skill your agent writes while it works now shows up in your other coding tools within a few seconds, instead of waiting for you to run a command or restart DorkOS. Most tools read the skills folder directly and see it the moment the file lands; Claude Code reads a different folder, so DorkOS puts a link there for you (DOR-1850)

  • DorkOS now tells you when a Claude Code session you already have open needs a restart to see new skills, and only when that is actually true — Claude Code watches the skills folder, but only if the folder was there when the session started (DOR-1850)

  • dorkos harness sync now names the plugins you turned on in Claude Code, which your other agents cannot see. Each one comes with the repository it came from and the command that installs it here, named by your project's full path, so every agent on the project gets it. Nothing is installed for you, and the report says which settings file it read (DOR-1921)

  • The same report says how many commands your personal Claude Code settings run on their own, and that only Claude Code runs them. If part of that file is written in a way DorkOS cannot read, it says which part rather than guessing at a number (DOR-1921)

  • Tell you when the same package is installed twice, once for all your projects and once in this project. The line says what Claude Code and Codex each do with the pair, and how to remove either copy (DOR-1922)

  • Your agent's Skills page can now fix what it finds. When some of your agent files are out of date, a line at the top says so and offers a Sync now button that writes them, and the page updates to what the sync actually did rather than to a guess. Syncing sometimes also removes files — a link to a skill you deleted, the copies a package left behind when you uninstalled it — and the page names every one of those files, with a plain sentence saying why each is going, before you click, then lists them again afterwards so they do not vanish into a toast that fades. One line in that list is not a deletion at all: your own .claude/settings.local.json keeps every setting you wrote and loses only the entries DorkOS added, and it says so. If a package wants to run commands automatically, syncing does not wait for you to decide — the files that do not run code are shared straight away, an approval card goes up for the ones that do, and the page tells you a package is waiting. Only you can press the button: an agent asking on your behalf is turned down (DOR-1895)

  • Point a DorkOS agent at a project and DorkOS sets that folder up straight away, instead of waiting for you to run anything — whether you named the folder yourself or added one you already work in. It only adds files: it never deletes anything and never asks you to approve anything on that pass. A brand-new agent's own folder is still set up by the step that builds it, exactly as before (DOR-1901)

  • A skill that runs on a timer inside a package you installed for all your projects now actually runs. dorkos harness sync --global puts those skills where DorkOS looks for timed work, so a daily job in a package you installed once shows up for you to approve like any other. It works from any folder and needs no project (DOR-1923)

  • Before it removes a link, --global prints every path it is about to remove — each with one plain sentence saying why — and prints them again once they are gone. It only ever removes links it made itself: a folder you made, or a link you made yourself, is left exactly where it is. Run it twice and the second run does nothing (DOR-1923)

  • The Skills page now lists the skills in your all-projects packages alongside your project's own, tagged "for all your projects", with the same sentence about who can see them — and the count above the list counts both (DOR-1923)

  • Skills that only live in another agent tool's folder now show up. .opencode/skills, .cursor/skills, .gemini/skills, .github/skills and .codex/skills are read alongside your own, so a project whose skills live in one of them sees them on the Skills page and in dorkos harness sync instead of an empty list. Each one says which tools read it where it is, which do not, and says to move it somewhere every tool can read — it is a sentence, not a button, and nothing is moved for you (DOR-1902)

  • An MCP server list in another tool's config file is named as something DorkOS does not carry. If your servers are declared in opencode.json, .codex/config.toml or .cursor/mcp.json, you now get one line saying how many are in there and that DorkOS only passes on the ones in .mcp.json. It counts them and reads nothing else, so nothing from those files — no server name, no key — is ever printed or stored. Every ordinary way of writing that list is counted the same, including the shorthand forms, and a file your editor saved with a byte-order mark is read rather than called broken (DOR-1902)

  • A package you installed for all your projects can now be shared with your other agent tools. Run dorkos harness sync --global and DorkOS asks once: it shows the two folders in your home directory it would use, names every link it would add, and writes nothing until you answer. Say yes with dorkos harness global --enable <tool>, once per tool you want (DOR-1924)

  • dorkos harness global --list shows what you chose and where the links go. --disable <tool> stops sharing with one tool and removes the links that tool's folder no longer needs first. Five tools share one folder, so turning one off while another still reads it removes nothing (DOR-1924)

  • DorkOS only ever creates links in those two folders, never files, and it only ever removes a link it made itself. Your own skills, and shortcuts you made yourself with the same shape, are left exactly where they are. If you uninstall a package later, DorkOS removes its links too (DOR-1924)

  • The line about a package you installed for all your projects now says it is shared once you have shared it, and tells you which command shares it until then (DOR-1924)

  • A skill your agent wrote inside one tool's folder can now be moved to where every agent reads it, with one command: dorkos harness adopt <name>. It moves the folder to .agents/skills in one step — either the whole skill arrives or nothing happens — and, if your project uses Claude Code, leaves a link at .claude/skills so Claude Code still finds it. Add --check to see what it would do without writing anything, or --claude-only to say the skill belongs to Claude Code and should stay put (DOR-1944)

  • DorkOS tells you when it will not move a skill, and why. A skill whose settings only Claude Code understands, one whose text points at a Claude Code path, a name already taken in .agents/skills, a folder that is really a link somewhere else — each gets one plain sentence naming the thing in the way and what to do about it, and nothing on disk is touched (DOR-1944)

  • Every dorkos harness sync now names the skills that live where only some of your agents look, one line per folder, with the command that moves each. It says which of your tools cannot see them — worked out from what each tool documents about itself, not from a list DorkOS wrote down — and stays quiet when every tool you use can already read them (DOR-1944)

  • The Skills page can now move a skill for you. A skill sitting in one tool's own folder — where the rest of your agents cannot see it — gets a Share with every agent button. Pressing it asks first, naming the folder it moves from, the folder it moves to, and the link it leaves behind so Claude Code still finds it. Say yes and the row redraws on the spot: the tools that could not see the skill now say they read it. The command that does the same thing from a terminal is still printed right beside the button (DOR-1946)

  • If DorkOS will not move a skill — its settings are Claude Code's own, something already sits in the way, the folder is really a link somewhere else — the row says so in one plain sentence, in the place the advice was, and nothing on disk is touched. Screen readers are told the sentence as it arrives (DOR-1946)

  • DorkOS can now move a plainly-portable skill into the shared folder every agent reads, on its own — but only inside the agent folders and room folders DorkOS made, only when you turn it on with dorkos config set harness.autoAdopt true, and only for a skill whose settings hold nothing one tool alone understands. Everything else is reported, with the one sentence saying why, and left exactly where it is (DOR-1945)

  • Every server start writes a line into the DorkOS log for each agent folder holding a skill only some of your coding tools can see. It names the skills, says which tools cannot see them, and gives you the command that moves each one — with your agent folder's full path in it, so it means the same thing wherever you paste it. You get that line whether or not you turned the setting on, because knowing is the point (DOR-1945)

  • dorkos harness adopt now knows when you are standing in a room's own folder, and refuses to move a skill whose name matches one DorkOS puts in every room folder — that folder gets cleaned up, and the skill would go with it. It tells you to rename yours and adopt it under the new name. The same skill in one of your own projects still moves (DOR-1945)

  • If you turn the setting on and then run dorkos harness sync in one of your own projects, it tells you in one line that the setting does nothing there and that dorkos harness adopt <name> is how you move a skill yourself. Nothing in your own repositories is ever moved for you (DOR-1945)

  • Attach a screenshot when you send feedback — paste one, drag it onto the dialog, or pick a photo on your phone. The picture is shrunk before it goes so your report stays small, and if it is still too big to send you are told, rather than the picture quietly going missing. You see exactly what you are attaching, and one click removes it (DOR-1955)

  • Browse Composio’s full service catalog in Connections and use its built-in sign-in where supported. Existing custom setups keep priority. Services that need an API key or account details open a secure hosted form; unsupported methods explain what is missing. Connecting an account still grants no agent access until you choose it (DOR-1958).

  • Capture the app in one click when you send feedback. The feedback dialog gets out of the way, takes the picture, and attaches it — so a bug report shows what you were looking at without you having to take a screenshot yourself. It captures only the app, never the rest of your screen. In the desktop app the picture comes from the window itself, so it is exactly what you see (DOR-1956)

  • Point at the part that looks wrong. In the feedback dialog, "Point at element" gets the dialog out of the way and hands you a crosshair: the app dims, whatever you hover lights up, and one click sends a report cropped to just that piece — with the name we use for it in the code, so we know exactly which one you meant. Press Esc, right-click, or Cancel to back out; anything you had already typed is still there. It needs a mouse and a bit of room, so you will see it in a full-size window on a computer, not on a phone or a narrow one (DOR-911)

  • You can now change what kind of work you do any time, in Settings › Profile. When DorkBot asks the question, it tells you where the answer is kept and links you straight there.

  • If you run Claude Code with more than one account, you can now see which one a chat is using without leaving it. Hover the runtime chip above the message box, or open the session details panel on the right.

  • See the widgets your agents post in a channel or a direct message. A widget an agent writes into a room message now renders as the real card, table, or chart it describes, instead of a block of raw code. Buttons that open a link, or change something small and visible in DorkOS like a panel or the theme, work the same as they do in a session. Buttons that would send a note back to the agent — or open a page, file, or terminal in your workbench — are shown but switched off, with a note when you hover them: a room message has no session behind it to answer into, and it can come from an agent you don't run or be relayed in from a Telegram or Slack room by someone you've never met. If a widget is broken, you get a short "this widget couldn't be rendered" card with the reason and the raw text, the same as in chat, and the rest of the message reads normally (DOR-1997)

  • A Browser tab in the workbench, next to Canvas. Web pages open there — a local file you are building, a dev server you are running, or a site your agent wants you to see — while files, documents and diffs stay in Canvas.

  • Each of the two tabs keeps its own set of open documents and remembers the one you were reading. Switch to Browser and back, and the file you had open is still the one on screen.

  • Agents in a room can now put documents and pages on a shared canvas — a file, a change to a file, a web page, a note — and everybody in the room sees the same one. It survives a reload, because the room owns it rather than one browser tab.

  • Agents can read the canvas too, so one can look at what another put up without you relaying it. Every agent in the room is told what is on the canvas at the start of its next turn.

  • Putting something on the canvas interrupts nobody. The room's log gets one quiet line per turn saying what changed, and that is all — if an agent wants you to look now, it says so in a message.

  • A new setting, rooms.maxCanvasOpsPerTurn (3 by default), caps how much of the canvas one agent may rearrange in a single turn.

  • Rooms now have a Canvas and a Browser tab, and what is on them belongs to the room rather than to your browser. When an agent puts a document there, everyone in the room sees it — at the same moment, without reloading — and it is still there tomorrow. Each tab says who put it there (DOR-2000)

  • You can put things on the table too: type an address in the Browser tab, pick a starting point in an empty one, or press "Put on the canvas" on a file in the Room tab's Files section. Pin the ones that matter so they stay at the front, and close the ones that do not — for everybody

  • Markdown the room owns can be edited right there, and your save reaches everyone. While you are typing, an agent's change to that same document is held rather than dropped on top of you; every other document stays live

  • A document that arrives while you are looking somewhere else lights a small dot on the tab it landed on. Nothing ever moves the tab you are on, and a brief drop in your connection never takes away what you were typing

  • When the room turns something down — it has been archived, or the document is already gone — it says so where you pressed, and nothing you wrote is thrown away on the way: a save the room would not take leaves your words in the editor, and an address it would not take stays in the box

  • Pin a document on a room's canvas to keep it at the front. Hover its tab and press the pin. A room holds twelve documents and drops the one nobody has touched for longest, but a pinned one is never dropped — and a pin sticks, so reloading the page or opening the room on your phone finds it still first. Anyone in the room can pin and unpin.

  • See who is looking at what. A small face sits on the tab somebody is reading. An agent's face shows up while its turn is really reading that document and goes when the turn ends, so it tells you what the agent is working from — it is never something an agent decides to show you. None of it is saved: close the window and your face goes with it.

  • A room that has files of its own now starts with ROOM.md pinned to its canvas. Those are the notes everyone in the room shares, so they get a tab that nothing can push off.

  • #team starts with a board on its canvas — a short checklist of what to do next, which any agent in the room can rewrite as things change. It is an ordinary pinned document, so you can make one in any room; close it and it stays closed.

  • Your agent can now use the page in the Browser tab, not just look at it. Ask it to try the signup form and it will: it reads the page to see what is on it, clicks buttons, fills in fields, presses keys, scrolls, and waits for the page to catch up — then tells you what happened, in the tab you are watching. It never pastes the page's HTML at you, and when several things match what it was looking for it says so and asks which one instead of guessing (DOR-2007).

  • Every one of those answers names the page it acted on and where that page is now, so an agent with three previews open can tell you which one it used.

  • Your agent can record what it does in the Browser tab. Ask it to show you rather than tell you, and it films the steps: one frame per action, saved as a small animated picture in its own working directory. You get back where the file is, how many frames it kept, and how long it covers — and the agent gets the last frame as a picture, so it can reason about where the page ended up. Open the file and watch the form fail for yourself (DOR-2008).

  • An agent can put a file it made into a room. A screenshot or a recording goes on the message like a file you sent yourself: everyone in the room can open it, and every other agent there finds its own copy of it on its next turn. It beats a paragraph describing what a page looked like.

  • Follow somebody's browser in a room. Pick a person on the Browser tab and your panel goes where theirs goes — the same page, the same place on it — until you turn it off. It's people only, it's off until you ask for it, nothing about it is recorded, and it stops on its own when you look away or the person you're following goes quiet. A room where nobody is following anybody sends nothing extra at all. (DOR-2010)

  • Talk about one document on a room's canvas. Press Discuss on any tab and a thread opens on it, with a short line in the room saying you started one. Press it again next week and you land in the same conversation, and so does everybody else — there is one discussion per document. Asking an agent something in it tells the agent about that document and no other. (DOR-2010)

  • Review an agent's work from the room's canvas and merge it there. When an agent puts a review of one of the room's files up, and its copy is ahead of the room, you see that file the way the agent has it beside the way the room has it. Turn down the parts you don't want — they go back in the agent's copy — then press Merge into the room. The room gets one line saying what landed, and nobody is interrupted.

  • Merging stays yours, and so is the review itself: reading and changing somebody else's working copy is something a person does, and an agent asking is turned down. Only you see the merge button, so no agent can sign off its own work. If the room has moved on since the agent last caught up, the button is replaced by the reason and a note to ask that agent to catch up.

  • An agent can put something on a room's canvas from a one-on-one chat with you. Ask for a chart and say which room it belongs in, and it lands on that room's table for everyone. It has to be a member of the room, it can do it three times per room per turn, and one line saying what it put there posts when the turn ends.

  • Your Codex and OpenCode agents can now use the canvas and the browser the same way your Claude Code agents always have. They can put a document up, open a file or a diff beside your chat, point the Browser tab at a page, read its console and its network log, take a screenshot, use the page — click, type, scroll, wait for something — and record what they did. Turn on DorkOS tools in every runtime in Settings under Experiments, and their next turn has all of it. Until now a Codex agent in a room could not see a console error while the Claude Code agent beside it could (DOR-2009).

  • Before starting a long job in a room, an agent now puts 👀 on your message, then swaps it for ✅ when the job is done. So you can tell "seen and working" from "did not notice". Quick replies skip the signal, so rooms stay quiet.

Changed

  • Pending raw MCP connection checks now survive a DorkOS restart.

  • Some packages ship hooks: commands your coding agent runs on its own. dorkos harness sync --fix used to install every one of them, even from a package you had turned down. Now it holds those back, sets up everything else, and prints each command it did not install, so you can see what it skipped and why (DOR-1849).

  • Say dorkos harness sync --fix --allow-hooks <package> to install that package's hooks. DorkOS remembers your answer, so you only say it once. dorkos harness hooks --list shows every package you have decided about, and dorkos harness hooks --revoke <package> forgets one so you get asked again (DOR-1849).

  • When you turn a package down, DorkOS now remembers that too. It used to forget on the next restart (DOR-1849).

  • If DorkOS cannot read your settings file, it says what is wrong with it and holds every package's hooks back, instead of telling you that nothing has been decided. It will not write over a file it cannot read (DOR-1849).

  • Connections now stay available while Claude Code, Codex, or OpenCode keeps the same long-running turn active. Ending the turn closes access. If supervision stops unexpectedly, that access still expires within four hours.

  • Your project's .agents/harness.manifest.json can say what to do with your hooks for each agent, and DorkOS now does what it says. none means that agent's hooks file is not written, and the report says so instead of quietly writing it anyway; generate is what DorkOS has always done; say nothing about an agent and nothing changes for it. If DorkOS had already written that file, dorkos harness sync --fix clears it away — and never touches one you wrote yourself. For Claude Code, which reads your hooks straight out of .claude/settings.json whatever your manifest says, none means one thing: hooks that came with an installed package stop being added for it.

  • Allowing a package's hooks no longer records an answer that quietly comes true later. dorkos harness sync --fix --allow-hooks <package> stops and explains itself when nothing in your project can take those hooks — whether that is because you told DorkOS not to write them, or because none of the agents you use has anywhere to put them. Saying yes was being saved either way, and would have installed them the day you changed that, without asking. When only some of your agents are covered it saves your answer and tells you which ones miss out.

  • Four keys in that same file are no longer read by anything: skillWrappers, commandMappings, instructionProjections and skillBundles. Your file still works if it has them, and dorkos harness sync names each one so you can delete it. A manifest DorkOS writes for you from now on has only the three keys that do something.

  • Your agent's Skills page now shows every skill it has and which of your coding tools can see each one, with a reason when one can't. It used to list only the skill packs you had installed from the marketplace, which is how an agent with thirty-one skills came to be told it had none. Each skill is one line with a small tag per tool — reads it, has a copy, out of date, can't see it, or needs you to decide something — and where a tool can't see one, the page gives you the same sentence dorkos harness sync prints in your terminal, word for word, so the two can never tell you different things about the same file. Under the list there is a panel per tool holding every agent file that tool cannot see — skills, rules, commands and more, so that count is usually bigger than the number of skills — and a line when DorkOS finds files for a tool in your folder that it is not sharing to, with the one command that turns it on. Reading this page never writes anything (DOR-1894)

  • Harness Sync now says what a package you installed for all your projects actually holds — its skills by name — and that only the Claude Code sessions DorkOS runs can see it. The old line told you to "run a global sync", a command that has never existed (DOR-1922)

  • Say so when one of those packages has a hooks file DorkOS cannot read, instead of reading it and saying nothing (DOR-1922)

  • dorkos harness sync now says why each file it removes is going, on the line for that file, in both --check and --fix. It used to print the paths under one heading — "what they came from is gone" — which was true of most of them and not all: a skill link, an uninstalled package's command, a hooks file nothing writes to any more and a settings file that survives are four different things, and now each says which it is. The app shows the same sentences, word for word (DOR-1895, DOR-1906)

  • The line about a package installed for all your projects now ends with "Its skills that run on a timer now work" once those skills are actually linked, and tells you which command links them until then. Packages with no timed skill say nothing new (DOR-1923)

  • If DorkOS cannot read the folder your all-projects packages live in, --global stops and removes nothing instead of treating the folder as empty. A package that is still installed also keeps its links when DorkOS cannot make sense of its settings file (DOR-1923)

  • The advice on a skill that only some of your agents can see now names the folder it is really in, instead of always saying .claude/skills (DOR-1902)

  • If you told DorkOS to stay inside one folder on this machine, it does not put links in your home directory. It says so, names the folder you set, and your timed skills keep running (DOR-1924)

  • Saying no is remembered. DorkOS asks the question once, and a no means it does not ask again (DOR-1924)

  • If one of those folders is a file, or DorkOS may not write in it, the run says which folder and what to do about it. It used to stop with an error nobody can read, after it had already recorded your answer (DOR-1924)

  • The Skills page prints the command that moves a skill, right under the line saying where it lives. It carries your project's full path, so it means the same thing wherever you paste it (DOR-1944)

  • Bug reports now say which page you were on more precisely — not just /session but which conversation. The address is filtered first: the folder you are working in and anything you typed to an agent are stripped out before it is sent, and you can read the exact address in the preview before you send (DOR-1960)

  • Bug reports can also carry your window size, browser, and light/dark setting, so a layout problem can be reproduced without us asking what you were looking at. These ride under the same Diagnostics switch as before — turn it off and none of them are sent — and the preview lists every one (DOR-1960)

  • Codex agents now run on Codex 0.154.0, which carries upstream fixes for connected tool servers and for picking up skill and plugin changes in a session that is already open. Context readings refresh themselves within a few minutes of the update. If you never picked a model for an agent, Codex now chooses your account's default, which may not be the model it picked before.

  • An OpenCode subagent whose last tool call failed now shows as failed. It used to hand back whatever the subagent had written up to that point and read as finished.

  • The context meter counts every part of the conversation the runtime reports, so the number matches what the model actually sees

  • A session's cost now tells you how sure it is. If DorkOS has no published price for the model that ran, the figure says it is an estimate instead of standing there like a fact. A cost charged at your company's own rates says that too. You will see it in the cost tooltip and in the /context panel.

  • If you export traces of your agent runs, each turn now also reports how many of its output tokens the model spent thinking.

  • DorkOS now knows exactly which of your messages a reply answered, so nothing is left hanging when you send several at once. Claude Code reports the whole list instead of just the last one, and DorkOS reads it — a reply that covers two messages closes both, and a message it already answered can no longer be mistaken for one it still owes you.

  • A message you send mid-reply is less likely to get a silent answer. When Claude Code says it still has one of your messages waiting, DorkOS now waits longer for that answer before it ends the turn. It never cuts the wait short, so an answer that was already on its way still reaches you.

  • If Claude takes a long time thinking about something you sent mid-reply, that answer now reaches you. DorkOS used to give up waiting after five seconds and the whole answer went nowhere.

  • When Claude ends a turn nobody asked for — it re-ran one that was cut short, or it ran a slash command on its own — the log now says which, instead of reporting it as a surprise.

  • When an agent opens a page for you, DorkOS brings up the Browser tab instead of the Canvas tab, so a page it sends never takes over the file you were reading.

  • A page that is open but cannot be driven now says so in one sentence, straight away — including a preview you navigated away from, to a page DorkOS is not serving. A page loaded straight from the internet is shown, not driven — and until now asking an agent to look at one meant an eight-second pause followed by a note about opening a preview that was already open.

  • With the same conversation open in two windows, only one of them acts: the one that most recently brought a preview to the front. The other sees nothing, and a window you close hands the page back right away, and a window that stops responding hands it back after about a minute and a half. Screenshots follow the same rule, which settles a long-standing surprise where whichever window answered first won.

  • Background chores your agent runs for itself no longer crowd the task bar. They show in the expanded panel, and any that fail still show up like other failures.

  • In auto mode, Claude Code is told which DorkOS safety tier a tool call already passed, so it asks you less often about things that were already decided. It can still ask whenever it wants to. Set DORKOS_CLASSIFIER_CONTEXT=0 to turn it off.

  • A task running on its timer no longer waits ten minutes for an approval nobody can give. It moves on without that tool right away, and the run tells you what it skipped. Only runs the clock starts skip the asking — press Run now and you are watching, so that run keeps its approval cards and you can answer them.

  • A finished run leads with the tools it could not use, and each one gets its own line in your activity feed. Nothing pings your phone about it.

  • Installing a plugin while agents are busy no longer makes them re-read their whole conversation right away. An expensive reload waits, and DorkOS keeps checking back until the agent says switching the plugin on is free — or gives up waiting after fifteen minutes and switches it on anyway.

  • A reload you ask for by hand still happens straight away, whatever it costs. Reloads that cost something now show up in your Activity feed, with how big the conversation was and whether the wait paid off.

  • Your canvas now lives on your DorkOS machine instead of in one browser. Open a file on your laptop and it's already open when you pick the session up on your phone; close it there and it closes on the laptop. Clearing your browser data no longer costs you your tabs, and two windows on the same session show the same set instead of drifting apart. Anything you had open is carried over the first time you open that session (DOR-2006).

  • Your agent can now name which canvas tab it means. Asking it to change or close "the chart" used to act on whichever tab was at the front, so it could only ever work on the one you were looking at; it can now pass the id of any document on the canvas. Leave the id out and it still acts on the front tab, exactly as before (DOR-2006).

  • Your agent can see what's on your canvas, and read it. Ask "what have we got open?" and it gets the real list — every tab, what it is, what it's called, which one is at the front, and how many windows are watching — instead of guessing from whatever your window last mentioned. It can read one of those documents back too, like the chart it drew for you last turn, and a document backed by a file is read off disk so you get what the file holds now (DOR-2006).

  • Codex sessions now say what the permission setting lets Codex do, in plain words. The default setting lets Codex read files but not change them, and Codex has no way to ask you to approve one, so asking for a change used to get a confusing "I can't do that" with nothing on screen to answer. A Codex session that starts in that setting now says so once, above the chat box, with a link to the picker. The three Codex settings read the same way wherever they appear (DOR-2019)

Fixed

  • Keep security audit records when you delete an account or an admin changes one (DOR-1874)

  • dorkos harness sync --check no longer crashes on a broken link. If a file DorkOS writes for an agent — .codex/hooks.json, or the .claude/CLAUDE.md pointer — had been replaced by a link to something that is no longer there, the check stopped with a stack trace instead of telling you what was wrong. A broken link is now just one more thing to fix: the check names it, and --fix puts the real file back. Anything else that goes wrong is reported as one line, and you can ask for the details with LOG_LEVEL=debug (DOR-1843)

  • A skill you removed or renamed no longer leaves a dead link behind. Deleting .agents/skills/my-skill used to leave .claude/skills/my-skill pointing at nothing, which Claude Code cannot follow — and the check called it clean. The next sync now names those links and clears them away. Links you made yourself, real folders you put there, and links that still work are all left alone (DOR-1843)

  • DorkOS will not write over a folder, or through a link, where one of its own files belongs. A folder sitting where .codex/hooks.json goes used to be reported as something a sync would repair, and the sync then stopped with an error; a link pointing outside your project could have the file at the far end quietly rewritten. Both are now reported as blocked, with a line saying exactly what to move (DOR-1843)

  • If you use Cursor, Gemini CLI or GitHub Copilot, dorkos harness sync no longer tells you your skills were left behind. All three read the shared .agents/skills folder, so they had your skills the whole time — the report was wrong, not your setup (DOR-1847)

  • A package you install now puts its skills in that shared folder no matter which agents you have turned on. Before, only turning Codex on put them there, so a project running just OpenCode or just Cursor got none of them (DOR-1847)

  • More of your Claude Code hooks travel to the other agents. Codex now gets the "session ended" hook, and Copilot gets five more — including compaction, permission requests and notifications — instead of being told they do not exist (DOR-1847)

  • dorkos harness sync no longer claims an agent is reading a file you do not have. With no AGENTS.md, no hooks and no commands folder, it says so plainly rather than listing them as working (DOR-1847)

  • Skills you deliberately keep for Claude Code only now show up in the report as kept, with a line per agent that does not get them. They used to be missing from it entirely (DOR-1847)

  • When a command cannot travel to an agent, the reason now names that agent's own command folder — .cursor/commands, .gemini/commands, .github/prompts — instead of saying it has none (DOR-1847)

  • A project with no slash commands and no hooks is no longer told, five times over, that its commands were left behind. If you never wrote one, dorkos harness sync says nothing about them (DOR-1847)

  • A skill you keep only for Claude Code is now looked for where your settings file says it is, instead of only in the usual folder — so a skill that is really there is no longer reported as a leftover entry (DOR-1847)

  • If you list a skill as Claude-Code-only when it is really in the shared folder, you are told the first time you check, on a fresh copy of the project — not only after a sync has already run (DOR-1847)

  • Room work folders stay clean when the room's project has a package installed. The links DorkOS makes for it no longer show up as your unsaved changes, which used to stop the folder being tidied up or merged (DOR-1880)

  • A SKILL.md whose front matter will not parse is now reported the same way every time, by every part of DorkOS that reads one. It used to be called broken the first time it was opened in a session and something else entirely after that, so which answer you got depended on which reader looked first — the marketplace preview, a scheduled task, the skills list, or the harness report (DOR-1845)

  • dorkos harness sync now explains a checkout that cannot make symlinks. On Windows, and in any clone where symlinks are turned off, git writes each skill link out as a plain file — and the report used to call that "drift" and tell you to run --fix, which then refused it without saying why. It now says in one line that symlinks are off in this checkout, and gives you both ways out (DOR-1855).

  • Every blocked skill link now says what is in the way, not just that something is. When the name on disk differs only in case — a Foo where the plan wants foo, on a Mac or Windows filesystem that does not tell the two apart — the message names the difference, instead of leaving you looking at a folder you believe is called something else (DOR-1855).

  • On Windows, the file paths DorkOS writes into a plugin's hooks and command wrappers are now spelled one consistent way instead of half one way and half the other, which is easier to read and safer for the shell that runs them. Because that changes the exact command text, DorkOS will ask you once more about plugin hooks you have already approved on Windows; approve them again and it settles (DOR-1855).

  • dorkos harness sync no longer hangs if a named pipe is sitting where a skill link belongs. It now says a file is in the way, like it does for anything else it did not put there (DOR-1855).

  • Projects can now be added when their own folder is the scan root. If adding a project fails, it stays in the list with a clear retry action (DOR-1897).

  • The files DorkOS writes for your coding agents now land in one step. If an agent reads one while a sync is running, it sees the whole old version or the whole new one — never an empty or half-written file (DOR-1854)

  • Two syncs into the same project no longer trip over each other. Installing two packages at once could leave one of them waiting on a half-finished picture of your project, or fail outright with an error there was nothing you could do about (DOR-1854)

  • The X that closes a dialog is back in its top-right corner. In Settings and the other dialogs with a sidebar it had slipped to the bottom-left, below the tab list, and in the plainer dialogs it sat too low and pushed the heading down with it.

  • Show your API keys after you create them, so you can recognize and revoke each key.

  • Scheduled tasks now start in the right folder when you run DorkOS from source. They were starting one folder too deep, so a task with no workspace of its own could not see the project it was meant to work on.

  • Set up Gmail notifications when the service supplies suggested values and examples. Review or edit the suggestions before approving; examples are never selected for you. Keep blank filters unchanged when saving (DOR-1899).

  • dorkos harness sync --check now lists every file a --fix would remove, not just the broken skill links. Uninstall a package and the check names the links, slash commands, hooks files and settings entries it left behind — before you run the command that deletes them (DOR-1889)

  • A project is no longer called clean when a sync would delete files in it. Removing a package used to leave the check saying "no drift" while the next sync quietly took nine files out of the project (DOR-1889)

  • dorkos harness sync no longer stops with a system error when something unexpected sits where a commands folder should be — a stray file at .opencode/commands, or a folder your account cannot read. It tells you about the rest of the project instead (DOR-1889)

  • dorkos harness sync now lists files it could not read — a .mcp.json with a typo in it, a rule file whose header will not parse, a stale entry in your manifest — under a heading that says this project, instead of blaming whichever agent tool happened to be named first. A project that only runs Codex used to be told Claude Code had a problem, narrowing the report to one tool hid the warning completely, and turning on a plugin was never involved even though the old heading said "plugin layers".

  • Refreshing the page no longer opens on "DorkOS can't reach its server" for a few seconds when the server is running fine. DorkOS was remembering an old connection hiccup and treating it as proof the server was down right now. It only says the server is unreachable when this visit's own attempt fails.

  • Your API keys stay listed in Settings → Access after you turn "Require login" back off. Turning login off never revoked those keys — they kept working for MCP clients and scripts — but the list disappeared, so there was no way to see them or revoke one.

  • Opening DorkOS no longer shows remote access as on, or offers a link and QR code for it, when the tunnel stopped since you were last here. DorkOS was reading what your browser remembered about remote access as if the server had just said it.

  • No more "Remote access turned off" alert on a visit where nobody turned anything off. That message now only appears when remote access actually drops while you are looking.

  • DorkOS now refreshes itself when its live connection comes back. After a dropped connection (a sleeping laptop, a restarted server, a moment of bad wifi), rooms, sessions and agents could keep showing what they showed before the drop until something else happened to refresh them. The catch-up that was meant to run on reconnect never did.

  • Signing back in now clears the "your sign-in stopped working" banner. Before, the banner only went away once something happened to run on the exact account that broke — so if you signed in, sent a test message, and it ran on a different Claude account, the warning stayed up and survived a page reload. Signing in to a different account still leaves the warning up, because that credential really is still broken.

  • Agents you talk to in a room now start at the power level you picked. If you set your power to Full autonomy, an agent you @-mention in a room used to ignore it and stop to ask permission instead. That is the one place nobody is watching, so the agent just waited. Now the room reads the same setting your other chats do, from the agent's very first reply. Rooms were the last place this setting did not reach: chats and scheduled tasks already followed it. If you have not set a power level, nothing changes. A room conversation that is already going keeps the settings it started with. And a message from someone in a linked Telegram or Slack chat still starts an agent at the careful setting, so a stranger cannot start one at full power (DOR-1917)

  • Keep newly received chat tasks visible when an older history request finishes. Clear the list when a newer history response confirms it is empty.

  • A scheduled skill you add to a new folder is picked up within seconds instead of up to five minutes. If the folder DorkOS reads schedules from did not exist yet — a fresh project, or an agent you just added — the first schedule you put there could sit unnoticed for as long as DorkOS kept running, and only a restart would find it. Now DorkOS starts reading the folder the moment it appears (DOR-1908)

  • Folder-watching can also go quiet in two other ways: a busy machine running several agents at once can use up the operating system's supply of folder watches, and a schedule saved in the first moment after DorkOS starts watching can slip past. In both cases DorkOS now checks the folder itself every ten seconds for as long as it needs to, so the schedule still starts on time. When everything is working normally, nothing changes (DOR-1908)

  • Codex now uses a current version and offers the models available to your signed-in account. New Codex agents start with the runtime you selected.

  • Rejected models explain what to change, with a button that opens the model menu. Informational warnings no longer appear as errors.

  • Codex and OpenCode agents can use their DorkOS tools while app login is enabled. Each turn keeps the permissions it started with.

  • Codex’s context gauge now shows the current conversation size and effective limit reported by Codex, instead of counting earlier requests again.

  • Collapsed tool results now show an arrow and an ellipsis, so a result with hidden contents no longer looks empty.

  • The Skills row in an agent's profile no longer says "Skills 0" about an agent with thirty-one of them. It says how many there really are once you have opened the Skills page, and says nothing at all before that. Counting them means reading your project folder, and doing that every time a profile opens would slow every chat down for a number you had not asked to see (DOR-1894)

  • Approval cards now name the thing they would act on. Asking to remove an agent used to show only its id — a line like agentId: "01KXQ3P7ADJY9DSXMZW1XGWCV4" — so four requests in a row looked identical and there was no way to tell which agent was which. The card now leads with the agent's name, keeps the id underneath so you can still check it, and does the same for a scheduled task it would delete. If DorkOS can't look the name up, the card shows the id exactly as before.

  • A request DorkOS can't put a name to now says where it came from — "Asked from a session on this computer", or "Asked by an app connected to DorkOS" — instead of the old "Requested without an agent identity", which sounded like the request came from nowhere.

  • When you approve or refuse an agent's request to remove an agent or delete a scheduled task, the agent now finds out on its own and carries straight on. Before, those two requests ended the agent's turn: you would approve the card, nothing would happen, and you had to go back to the agent and tell it yourself. Every other kind of request already worked this way; these two were the stragglers. If nobody answers within ten minutes, the agent falls back to the old behaviour and the card stays on your screen, so nothing is lost either way.

  • Turn on the agent DorkOS itself runs your sessions on, even when your project shows no sign of it. A project that has only ever used OpenCode or Codex has nothing of Claude Code's for DorkOS to find, so DorkOS used to leave it off — and the session it then started had never read the AGENTS.md you keep in that folder. Now it is turned on, DorkOS says so in one plain line, and the one file it writes is a .claude/CLAUDE.md pointing at your own AGENTS.md (DOR-1901)

  • Say so when a project was set up before that, and does not list the agent DorkOS runs. dorkos harness sync and the app both name it and give you the one command that turns it on. Your manifest is still never rewritten behind your back (DOR-1901)

  • One line on your agent's Skills page had gone stale. Some packages bring along a part that connects DorkOS to Slack or Telegram, and the line explaining why that part stays inside DorkOS instead of travelling out to your coding tools still used an old name for it. It says Messaging now, which is what it is called everywhere else. DorkOS also checks its own wording from here on: a test reads every sentence the file-sharing engine can print — why a tool cannot see a file, what is in the way of writing one, what a sync would delete, what is out of date in the file that lists which tools you share to — and fails if one of them slips back into a word the product has stopped using, so the next stale line gets caught before you ever see it. The page itself is now opened and clicked through in a real browser on every run, against a real folder on disk (DOR-1896)

  • If a plain file sits where DorkOS needs a folder — a commands file where your agent tool keeps a commands folder, say, or a folder nobody has permission to read or write in — syncing your agent files no longer stops partway through with an error. It sets up everything the folder is not in the way of, leaves the folder exactly as you left it, and lists the one thing it could not do with a line naming the folder and how to clear it. Checking first says the same thing, so you are never told to run a fix that was going to refuse (DOR-1882)

  • If DorkOS cannot read the folder your skills live in, it now leaves every skill shortcut alone instead of treating the folder as empty and tidying them away. It says which folder it could not read and that it removed nothing, so a folder with the wrong permissions costs you a warning rather than your skills (DOR-1882)

  • Syncing no longer rewrites the command files DorkOS generates when nothing about them has changed. Only the ones that are actually different get written — the same now goes for the settings file DorkOS merges your packages' hooks into, which Claude Code re-reads every time it changes — so your editor and your agent tools stop being told a file changed when it did not, and a folder you have made read-only no longer turns a sync that had nothing to do into an error (DOR-1882)

  • When your agent asks to do something that cannot be undone, it waits about ten minutes for you to say yes or no. You get two hours to answer. Answer after that ten minutes and, until now, nobody told the agent — you had to open its chat and pass the message on yourself. Now DorkOS tells it for you. Your answer arrives in the agent's own chat as a note DorkOS wrote and signed, so it always reads as a decision you made in the approvals panel and never as something you just typed. A "no" reaches it just as quickly as a "yes", along with the reason you gave. If the agent is busy, the answer waits its turn instead of getting lost; if its chat has ended for good, DorkOS says so in the log rather than failing. You are only ever told once — an answer that reaches the agent while it is still waiting is not repeated afterwards — and restarting DorkOS mid-decision no longer swallows the answer. This works for agents you run in DorkOS chats today (DOR-1931)

  • On Windows, dorkos harness sync now makes real skill links whenever your account is allowed to — with Developer Mode on, or as an administrator. Before, it always made the one kind of link Windows allows without permission, and git commits a copy of every skill's files instead of the link, so a teammate who pulled got duplicated skills nobody meant to add (DOR-1883).

  • If your account cannot make real links, DorkOS says so once per sync — in the terminal and on the Skills page — before you commit anything: what is on disk, what git would do with it, and the two ways out. Nothing is treated as broken, because the links still work on your own machine.

  • Keep sign-ins separate when you run DorkOS with different data folders on different local ports. The default port keeps existing sessions. Other ports require one sign-in after this update. (DOR-1953)

  • Managed services now return when DorkOS can reach them again. A temporary outage during startup could hide them until you restarted or linked your account again.

  • Messaging now says when it is off or when its options could not be loaded. It no longer suggests choosing an unavailable option or says every kind is already in use when the list failed to load.

  • A bug report's attached server log now keeps the lines from just before the problem, instead of the oldest ones. On a busy machine the log was long enough to be trimmed, and it trimmed from the wrong end, dropping exactly the lines that explain what went wrong (DOR-1976).

  • The composer status line no longer shows your model's name twice. It now shows up once, right where you'd expect it.

  • Opening an agent's session from inside a channel now takes you to the conversation that agent is having in that channel, instead of an unrelated one.

  • You can type spaces again when you rename a session from the session list. The space key was being read as a click on the row instead of a character in the name.

  • Running out of disk space no longer shuts DorkOS down mid-conversation. It now keeps going, hands scheduled tasks to another DorkOS process if one is running, and writes a line in the log telling you the disk is full. It picks scheduling back up on its own once you free some space.

  • Find DorkOS account setup directly from Connections, and refresh available services after linking or unlinking your account.

  • Make Gmail send and draft actions available to review. Actions with uncertain effects require the stricter approval level.

  • Keep agent commands on the DorkOS version running your app. Unknown commands stop before opening settings, and agents prefer their built-in tools over an older installation on your computer.

  • Help agents find their granted accounts and notice access changes in existing conversations. Account guidance now matches Claude Code, Codex, and OpenCode.

  • Agents can discover services across the full Connections catalog and ask for the next page, instead of missing services when the catalog is large.

  • When this instance loses its DorkOS account link, service actions now explain that nothing was sent and point to Settings to reconnect. Actions with an uncertain remote result remain protected from automatic retries.

  • Reconnect disconnected accounts through a fresh sign-in. If disconnection still needs to finish, Accounts now explains the next step. Old agent permissions stay revoked (DOR-1993).

  • Keep disconnected accounts in their own section and let you remove them from Accounts after disconnection finishes. Past usage remains available (DOR-1994).

  • Stopping an OpenCode subagent now shows as stopped instead of failed. OpenCode changed the wording it sends when a subagent ends early, and DorkOS was reading the new wording as a crash.

  • If you reported a bug or asked for a feature and left your email, you now actually get the "your report shipped" email when we ship it. Before, that email only went out if the report carried a version number, and none of them ever did, so nobody got one. The email now links to the changelog so you can see what changed.

  • Claude Code sessions keep showing their task list and to-dos after the runtime update

  • You now get a clear message when your Claude account is on hold, needs verification, or its cloud credentials were refused, instead of a turn that just stops

  • Sessions with a lot of plugins installed start reliably

  • DorkOS replaces an outdated copy of the Claude Code command it downloaded for you, so sessions keep starting after an update

  • Lowering MCP_TOOL_TIMEOUT to cut off a slow outside tool server works again. DorkOS used to raise your value back up, because a short one would also cut off a tool call that was waiting on you to approve it. DorkOS now sets its own time limit on its own tools, so your setting is left alone and reaches the server you meant it for.

  • When an agent changes a document while you are editing it, the canvas now tells you and lets you pick. Your edit was always protected, but the agent's version used to be thrown away without either of you being told. You get a quiet notice with two buttons: Reload shows their version and ends your edit, and Keep mine throws theirs away. Your agent is still told the change went through — it has no way to know you were typing — so for now the notice is only on your side.

  • Agents now know about everything they can put on the canvas. What they were told listed 6 of the 14 kinds, so files, side-by-side changes, web pages, 3D models, sound, video and CSV tables were all things an agent could open and had never heard of. The command that applies a saved layout was missing too, and could not be run at all.

  • Lines the room writes about you — a merge, a change to the canvas, the one that opens a document's discussion — now show your name and your face. They used to be signed "Unknown", which read as if nobody wrote them. (DOR-2014)

  • Asking an agent for the console at a particular level, or for only the failed requests, works again. Both reads were quietly ignoring every filter you gave them and answering with the default instead (DOR-2009).

  • Your agent gets told when an approval times out. When an agent asks to do something that needs your sign-off and you never get to it, the request quietly stops being valid after two hours — but until now nothing said so. The agent was left waiting on an answer that could no longer come, and you had to go and tell it yourself. Now the request closes itself on time and the agent is told, in its own words: nobody answered, the request is dead, ask again if it still matters. You get no extra ping — it was not your action to be reminded about, and the request had already disappeared from your approvals list on its own.

  • A tool waiting for your approval no longer looks like it already ran. While Claude Code asked "can I write this file?", the file showed as written — the whole time you were deciding. Now it stays marked as in progress until it really finishes, and a tool you turn down is marked as refused instead of done.

  • The OpenCode model list no longer offers models OpenCode cannot run. A model you pulled with Ollama used to show up in the menu even when OpenCode knew nothing about it, so picking it was accepted and then the next message failed with "That model isn't available" — pointing you back at the menu that offered it. The menu now shows only models that will actually work.

  • "Run now" can ask you a question again. When you run a task by hand and the agent needs your go-ahead for something, the request now shows up where all your other requests do — the tray at the top, the Pulse panel, the home page — and you can answer it there. Say yes and the task carries on. Before this, the request went nowhere at all: nothing appeared, nobody could answer, and two minutes later the run gave up and blamed a schedule you had not used. A task the clock starts is unchanged — nobody is watching one of those, so it still gets on with what it can do without you and tells you afterwards what it had to skip.

  • Every task run now opens to its own conversation. Click a run in a task's history and you land in the session it actually had, instead of an error.

  • Stopping a task run also takes away the question it was waiting on. Before, the request sat in your list for hours pointing at a run that had already finished.

  • The composer says why a message did not send. When the server turns a message down for a reason — "Choose a registered agent before starting this session", say — you now read that sentence instead of "HTTP 400".

  • An agent that rewrote its own personality file could switch its personality off by accident. The top of that file is written by DorkOS from the six personality dials you set, and an agent saving the file without it left the dials showing your choice while none of it reached the agent again. DorkOS now keeps that part of the file whatever an agent sends.

  • Reloading the page while a tool is waiting for your approval no longer shows it as already done. The live view was fixed first; rebuilding the conversation from its saved history still showed a finished tool, so a refresh mid-decision put the old answer back on screen.

  • Extensions are no longer told a tool finished while you are still being asked whether to allow it.

  • Opening a message-search result now takes you to the conversation it came from, whichever agent ran it. Results from Codex and OpenCode carried the id those tools use internally, which DorkOS could not open, so pressing Enter on one led nowhere.

  • A result from a conversation you had at the command line, which DorkOS never ran, now says so instead of offering a link that opens an empty screen. The message is still found and still shown.

  • When part of DorkOS fails to load, the "Something went wrong" screen now always shows, with its Try again and Back to home buttons. Before, some unusual failures could crash that screen too, and you saw nothing useful (DOR-2032)

  • Desktop: a slow start no longer makes the app reload its window over and over, losing unsent messages and half-filled settings each time. The shell was reading the old page's late check-in as the new page coming up, so it kept retrying the same first step instead of trying the deeper fixes (#1840, DOR-2034)

  • The "DorkOS can't reach its server" screen now only appears when nothing answers at all. When a request for your settings comes back with an error instead, DorkOS says that and shows the status code it got, rather than telling you the server is down (DOR-2035, #1841)

  • When DorkOS will not answer to the address you reached it on, it now says so in words you can act on, instead of a bare error code (DOR-2035)

Security

  • Keep raw MCP server URLs out of shared configuration snapshots, where embedded credentials could be exposed.

  • Stop passing the full DorkOS server environment to coding agents and their setup commands. Standard model sign-ins and operating system settings remain available. Custom tools that need extra variables now require an owner-approved list of names. Restart DorkOS after updating that list (DOR-1904).

Note for people upgrading

  • DorkOS adds these links while you work and never removes them on its own, which is deliberate: it will not delete files in a folder you may be editing right now. So a skill you delete leaves a dead link behind. dorkos harness sync --check lists them and dorkos harness sync --fix clears them out (DOR-1850)

  • This only ever touches projects you have already set up for syncing, and only inside the folder your DORKOS_BOUNDARY allows. A project DorkOS has never synced is left completely alone (DOR-1850)

  • Showing a page needs a server to serve your files and reach your dev server, so the Browser tab is part of the web app and does not appear in the Obsidian plugin. Everything you had open is still open — pages just moved one tab along.

  • A recording is a slideshow of the steps, not a video of them — two frames a second, and at most sixty frames. Past sixty it stops filming and everything the agent is doing keeps working; the answer says so.

  • An agent can only attach a file from its own working directory. It cannot reach into another agent's copy of the work, and the size and count limits are the same ones your own uploads follow.

  • One thing an agent reaching in from outside the DorkOS app still cannot do: apply a Shape. It writes to your machine — files, settings and scheduled work — and there is no way to put that question to you from a Codex or OpenCode session, so it is refused with a sentence telling the agent to ask you to do it in the app. Your Claude Code agents still ask you the normal way.

  • Nothing changed about what your Claude Code agents can do, or what any of these tools are called. They are the same names, the same arguments and the same answers; there is just one copy of each now instead of one per runtime.

[0.74.0] - 2026-09-07

DorkOS 0.74.0 puts you in charge of the accounts your agents act through, moves remote access into the Control Center, and cleans up the whole app: one word for connections, grouped Settings tabs, and a calmer, keyboard-friendly interface everywhere.

Added

  • Remote access now lives in the Control Center — flip it on, and a globe appears in the top bar with your link and QR code one click away
  • ⌘K knows about it too: search for "remote" to copy the link, show the QR code, or turn remote access on or off
  • You can now scroll back through a room's older messages. A room opens on its most recent fifty, and an "Older messages" button at the top loads the fifty before those — as many times as you like, back to the day the room started. The room keeps your place when the older messages land (DOR-1734)
  • Review the exact connected account and actions each named agent can use in Connections.
  • Use approved Composio actions from Claude Code, Codex, OpenCode, or the dorkos connections command.
  • Let programs request a connection change and follow its status without gaining owner access.
  • Show an explicit unknown outcome when an approved change may have finished but its confirmation could not be saved.
  • You can now tell DorkOS that an account on another platform is you, and it stops notifying you about your own messages. Text your agent from your own phone and DorkOS used to buzz you about what you had just written — and again if you typed your own @handle. Open Team, find yourself on the platform you write from, and press "This is me"; press "Not me" to take it back. It only changes whose words DorkOS thinks those are — that account still gets nothing else on your machine, and only you can set it (DOR-1778)
  • Connect several accounts for the same service, choose the exact actions each agent may use, and see the same access from the account or agent profile.
  • Keep sign-in progress after a restart, review agent requests, and pause or disconnect accounts from Connections. See account usage without exposing action inputs.
  • Use DorkOS-managed accounts or your own Composio account. Keep Slack and Telegram messaging separate from the actions agents may take through connected accounts.

Changed

  • Buttons give a little squeeze when you press them, everywhere in the app — the same small answer a sidebar row already gave (DOR-1751)
  • Tapping a tab on your phone answers right away, instead of waiting for the next screen to load (DOR-1751)
  • Sections that fold open — in Settings, Connections, agent setup and onboarding — slide instead of jumping (DOR-1751)
  • Rows in a table are easier to see under the mouse, especially in dark mode (DOR-1751)
  • Checkboxes pop in when you tick them, like the switches beside them (DOR-1751)
  • The globe only appears while remote access is actually running, and holds still once it is — one quiet ripple when your phone can reach this machine, and nothing after that
  • If your tunnel drops, every part of DorkOS finds out at once instead of waiting for the next page refresh
  • Settings is easier to find your way around. The tabs are grouped now — You, Agents & sessions, Access & privacy, System — and each one is named after what is inside it. "Advanced" is gone: the message box and the switch that watches for agents you started somewhere else moved to Preferences, the logging settings moved to Server, and what was left — reset and restart — is now a tab called "Danger zone". "Show dev tools" moved to Experiments, alongside the app's other developer switches. Security and DorkOS account are one "Access" tab with a section each, and Remote Access is a proper tab instead of a window that opened on top of the settings window. Old links you saved still land in the right place (DOR-1758)
  • The Server tab leads with the two things people open it for — the version and the address to paste into other apps. The folder paths and Node version now sit in a "Diagnostics" section you can open when something is wrong, with one button that copies all of them at once (DOR-1758)
  • The switch that watches for agents you started somewhere else is no longer in the session panel under the message box. It changed that setting for every window on your machine, not just the session you were looking at, so it now lives only in Settings → Preferences (DOR-1758)
  • One word for the outside world. Anything that links your agents to the outside world is a connection everywhere now — on the Connections page, in the app's own menus and dialogs, in the warning you get before letting an agent act without asking, in the message Slack and Telegram send back when someone who is not an approver taps a button, in what dorkos doctor reports, and on the website. The same thing used to go by four different names. Nothing you have set up changes; only the words do (DOR-1754, DOR-1814)
  • Scheduled tasks are called tasks everywhere on the page now, and the run history says who started each run: a schedule, you, or an agent.
  • The task form is clearer: "When it runs" instead of "Cron Expression", "Stop after" instead of "Max Runtime", and "Remember the last run" instead of "Sticky".
  • Cross-project access says "project" throughout, instead of switching between project, namespace and directory.
  • Settings → Runtimes now opens with a line saying what a runtime is, and the model and effort pickers say "Automatic" where they used to say "Runtime's choice".
  • Settings now sounds like one product. Rows that read like a manual ("Poll for updates to sessions running outside DorkOS", "Size in KB before a log file is rotated") now say what you get in plain words, and rows whose control already spoke for itself lost their filler description (DOR-1755)
  • Every heading, button and menu item is sentence case now. "Reset All Data" is "Reset all data", "Open in New Tab" is "Open in a new tab", "Add to Chat" is "Add to chat", and the headings on Home stopped SHOUTING IN CAPS (DOR-1755)
  • The messages that never reached an agent are no longer called "dead letters". That screen, and the Activity tab's, now say what happened in plain words instead of a raw wire code like hop_limit, whose messages they were, and what clearing them does, with the raw example folded away (DOR-1755)
  • The Team page's grouping chip says "Group by owner" instead of "Group: manager", which is the word the rest of the page already used (DOR-1755)
  • Settings describes each group of agent tools by what the agent gets to do ("Let agents send messages and check the inbox."), not a bare command fragment (DOR-1755)
  • The "Agent Discovery" tool group is now "Agent discovery", matching the other three groups.
  • Mentioning you inside a private chat you have muted no longer gets through. In a 1:1 every message already reaches you, so an @ there is not a second way in — muting that conversation now means muting all of it
  • Messages you send yourself, from your own phone into a chat DorkOS is bridging, now come back to you as a notification — unless you tell DorkOS that the Telegram or Slack account is you, which you can now do on the Team page
  • Message search now says what it covers in one line instead of four bullets. The full list is one click away, and it opens itself when a search comes back empty — which is when "search matches whole words" is the answer you needed (DOR-1757)
  • Settings → Notifications is scannable by its bold labels. Every row's sentence is short, the wall of framing above them is gone, and the how-to for getting DorkOS onto your phone is tucked into "Get these on your phone" (DOR-1757)
  • The install screen leads with one line — "Adds 12 files. Declares no commands." — and opens only the parts you have to read: the commands a package runs, the jobs it schedules, and anything that clashes. The rest is one click away, with its count on the label, so nothing is hidden (DOR-1757)
  • The Workspaces page says what a worktree is once instead of twice, and the folder it scans no longer runs off the edge of a phone screen (DOR-1757)
  • The small labels dotted around the app (counts, states, categories) are drawn from one recipe now, so the same kind of label is the same size everywhere (DOR-1760)
  • The connection-lost banner now announces itself to screen readers, so whenever it does reach the screen it says so out loud instead of silently changing colour (DOR-1760)
  • Side panels open in a fifth of a second instead of half a second, and the dark backdrop now arrives with the panel instead of ahead of it (DOR-1764)
  • The sidebar and the right panel open without that little pause before they start moving (DOR-1764)
  • The send button and the two icons in the top bar no longer grow under your mouse. They light up instead, the way the rest of the buttons do (DOR-1764)
  • Picking one of a few side-by-side choices — like how much freedom you give an agent — now slides the highlight across instead of blinking it to the new spot (DOR-1764)
  • Pages fade in when you switch between Home, Team and the rest, so the page keeps up with the menu beside it (DOR-1764)
  • Copying something now shows the checkmark with a small fade, so you can see it worked (DOR-1764)
  • Empty panels and "couldn't load that" panels now look the same everywhere in the app, instead of a little different on each screen (DOR-1763)
  • Panels that list facts — a session's id, a server's settings, your usage — line those facts up the same way on every screen (DOR-1763)
  • Sections that slide open and shut now all move at the same speed. Before, opening a tool card and opening a task row were the same gesture at two different speeds (DOR-1763)
  • Most controls in the app now measure size the same way — extra small, small, medium, large — so two controls side by side usually line up (DOR-1761)
  • .env.example now lists every setting the server reads — the telemetry off switches, rate limits, tracing, and the self-hosted connector gateway among them — and no longer describes a scheduler switch that nothing reads any more (DOR-1646)
  • Keep each connected account under its own DorkOS identity, preserve existing agent and session access during the upgrade, and show a clear recovery error if that upgrade cannot finish. Removing one connection from an agent now stops its live tools and revokes that connection's grants, session access, and event delivery before the action completes. (DOR-1793)
  • The sign-in system got a library upgrade. Your auth database updates itself the first time the new version starts — no action needed, and existing logins keep working.
  • Template addresses are now limited to the ones DorkOS can actually download from: https://, git@host:path, a github:, gitlab: or bitbucket: shorthand (add #branch to pin a version), or an owner/repo name. Other spellings — ssh://, git://, plain http://, the gh: and sourcehut: shortcuts, and one-word template names — are now refused with a message naming what to use instead, because none of them ever finished a download (DOR-1825)
  • Loading spinners now look the same everywhere in the app. They were drawn by hand in three dozen places, at six different sizes for the same job, so two panels loading side by side could disagree about how big "loading" is.
  • The spinner on a running task now uses the app's own blue, which means it stays readable in dark mode instead of staying stuck at the light-mode shade.
  • Spinners that sit next to words like "Loading files" no longer get read out a second time by a screen reader, and the ones that sit alone now say what they are waiting for.
  • On a phone, the icon that replaces a spinner when something finishes is now the same size as the spinner was. Buttons and rows used to shift by a few pixels at the moment they finished loading.
  • The note DorkOS adds when it shortens something now reads … [truncated, 2400019 characters total], giving the full size. It used to say how much was left off instead (… [truncated, 2395923 more characters]), so any saved search that looks for the old wording in ~/.dork/logs/ will stop matching (DOR-1728)
  • The line DorkOS writes when it crashes (Uncaught exception) now records the failure under error, the name every other error line in ~/.dork/logs/ already uses; it used to be message on that line only, so a saved search for it will need updating. The Unhandled promise rejection line keeps its wording and gains the fields it was dropping — the error's name, and codes like ENOENT (DOR-1827)

Fixed

  • The sort-direction button next to filter dropdowns (on Team, Tasks, and Activity) now works with the keyboard, not just a mouse click.
  • Schedule preset cards now tell a screen reader their name and what they do, not the entire prompt read out in full.
  • The "open this link?" dialog now works properly with a keyboard: Escape closes it, Tab stays inside it, and focus lands on it the moment it opens instead of staying stuck behind it.
  • Tabbing through the right panel's tabs and the composer's status line (runtime, model, plan, and permission chips) now shows the app's keyboard focus ring instead of the browser's default one.
  • Dialogs, side panels, and dropdown selectors no longer flash a focus ring when you click them with a mouse — it now only shows up for keyboard navigation, where it belongs.
  • On a phone, the top of the Schedules "No schedules yet" screen was cut off behind the header. It now starts at the top and scrolls (DOR-1748)
  • Marketplace cards now measure the space they actually have instead of the width of your window, so opening a side panel no longer squeezes them into unreadable slivers (DOR-1748)
  • On a tablet-sized window the side panel now slides over the page instead of squashing it, and the Home tabs never shrink away to nothing (DOR-1748)
  • Pop-up windows now keep a margin from the screen edges, keep their rounded corners on a phone, and scroll when they are taller than the screen (DOR-1748)
  • Removed the React warnings that appeared in the browser console every time the app loaded (DOR-1748)
  • Long folder paths stay inside the card that shows them. On a phone, the Workspaces page used to push yours off the side of the screen (DOR-1747)
  • Marketplace cards show who made a package and where it came from, in full, on a card of any width — including the narrow columns a docked panel or a half-width window can create (DOR-1747)
  • An agent's name stays readable in search results. The folder path beside it gives way first (DOR-1747)
  • The marketplace search box fits on a phone, down to the smallest ones — the "/" shortcut hint it was making room for only shows where there is a keyboard to press it (DOR-1747)
  • Text no longer paints outside its box in the font picker, the blocked-paths list, the discovered-agent list, a connector tile's name, chat error details, or the full-power window (DOR-1747)
  • A discovered agent's suggested name and a denied agent's reason now show their full value on hover when truncated, matching every other truncated field (DOR-1747)
  • Closing the "open this link?" dialog now returns your keyboard focus to the link you opened it from, instead of dropping it to the top of the page.
  • The sort control in list filter bars (Tasks, Team, Activity) is bigger and easier to tap.
  • Tool and thinking cards in a chat answer the mouse now, and their headers show a focus ring for people using a keyboard (DOR-1751)
  • Activity rows that lead nowhere no longer look clickable or take a keyboard stop (DOR-1751)
  • Cards that lift under the mouse do the same for a keyboard, so nobody learns less by not using a mouse (DOR-1751)
  • Menu and list rows fade between highlights instead of flashing (DOR-1751)
  • A keyboard focus ring inside a section that folds open no longer gets cut off at the edge (DOR-1751)
  • Rows in the Obsidian sidebar panel keep their press feedback and hover colour again (DOR-1751)
  • If turning remote access off doesn't work, DorkOS now tells you why instead of quietly leaving the switch on
  • Fixed several buttons on the phone that were too small to tap reliably — the queued-message actions in the composer, the terminal and canvas tab close buttons, the schedule builder's day-of-week picker, the activity page's filter chips, the Tasks/Team/Activity filter toolbar (Status, Filter, and the active-filters badge), and the background-task bar's expand arrow all now have a proper-sized tap area, even though the button you see stays the same size. (DOR-1753)
  • Fixed the search box on Tasks, Team and other pages, which was quietly disabled from growing on a phone, and a few controls that had ended up smaller on a phone than on a full-size screen. (DOR-1753)
  • What a background agent last did is now shown from a normal-sized screen up. On a phone, the task list keeps the agent's full description visible instead of shortening it to make room. (DOR-1753)
  • The side panel on a phone no longer stretches to fill the whole screen when it has almost nothing to show — Pulse and the Files list now size to their own content instead of leaving most of the screen empty. (DOR-1753)
  • Coloured borders show up again. One line of styling had been quietly turning every coloured border grey, on 69 screens. Panels that were meant to look different at a glance — a connection that is fine, one that needs a look, one that broke — all wore the same grey outline. They do not any more (DOR-1750)
  • Small text on a phone now grows with everything else. Timestamps, badges, keyboard hints and little labels were pinned to a fixed size, so they stayed tiny while the rest of the app got bigger. Roughly 300 of them now follow the same scale (DOR-1750)
  • Icons in buttons grow on a phone too, so a small icon no longer sits in a big tap target. Two dialogs had icons stuck at the wrong size entirely; both are fixed (DOR-1750)
  • Status colours mean one thing everywhere. Green, amber and red were spelled seven different ways across the app, so the same state could look green in one place and a slightly different green in another. There is one set now, and it is tuned for dark mode as well as light (DOR-1750)
  • The built-in terminal uses the font you picked in Settings. It used to ignore your choice and draw in its own (DOR-1750)
  • Running background tasks are colour-coded from the app's own palette, so their colours suit dark mode instead of staying the same in both themes (DOR-1750)
  • An agent that never picked a colour gets its own again in Settings → Runtimes, instead of a flat grey (DOR-1750)
  • An agent changing one of its own settings no longer quietly turns the ones beside it back on. Switching off its SOUL.md used to switch its saved notes back on, and nudging one personality dial reset the other five (DOR-1719)
  • When one agent messages another directly, the agent that answers now runs on the AI tool it is set up to use. A Codex agent used to reply through Claude Code — under its own name — because a direct agent-to-agent message never said which tool to use. Messages arriving from Telegram and Slack already worked this way (DOR-1627)
  • If an agent is set to use an AI tool this copy of DorkOS did not start, another one answers for it, as before — but the server log now says so, naming the agent, the tool it asked for, and the one that replied instead. It used to happen silently (DOR-1627)
  • Renaming a room, changing its topic, or putting it away is now yours alone. An agent in the room could do any of those over the API before — including archiving a channel, which takes it off everyone's sidebar. Agents can still rename a channel they belong to and write its topic through the update_room tool, which has never been able to archive anything, and an agent asking for its own direct message again still brings that conversation back (DOR-608)
  • Fixed a bug where a Claude Code session started in a brand-new project — often one begun while DorkOS was still starting up — could be missing from your session list until you restarted the app. The list now re-checks your projects on disk every few seconds, so a session the file watcher failed to notice still turns up on its own (DOR-577)
  • The to-do list an agent writes above the message box now opens while the agent is working and folds back to its one-line progress count when the turn is done, and a long list scrolls inside its own box instead of pushing the conversation off a phone screen (DOR-1759)
  • The space just above the message box now shows one thing at a time. Suggested replies and the question about turning on notifications used to stack up together; whichever matters more speaks, and the other waits its turn (DOR-1759)
  • The Pulse panel no longer repeats what the page beside it already shows: its activity peek is gone on the Activity page, and its "Needs attention" list is gone on Home (DOR-1759)
  • Sections you can fold open and shut — "Advanced settings", "Schedule", an install's permission groups — now look and behave the same everywhere, and each one says how much it is hiding (DOR-1759)
  • The strongest permission setting used to say it "still asks when it matters", which sounded just like the safer setting next to it. It now says plainly that it will not stop to ask you, even for risky steps.
  • Errors tell you what to do next. "Failed to X" is now "Couldn't X", and the sentence written for you is the headline, with whatever the server said underneath it. You should no longer meet a bare "ENOENT: no such file or directory" with nothing else to read (DOR-1755)
  • The setup screen no longer shows internal field names when it cannot save your progress. It says so in a sentence and keeps going (DOR-1755)
  • A feature that is off now tells you where to type the command that turns it on, and offers to copy it (DOR-1755)
  • On a phone, the empty Channels screen points at the All tab at the bottom instead of a sidebar that phones do not have (DOR-1755)
  • A few error messages claimed something the app couldn't actually promise, like "Nothing was deleted" after a reset that failed partway through, or "Nothing you did was lost" on the screen for a crash so bad the app can't tell what happened. They now say what's actually true: it isn't sure (DOR-1755)
  • Remote access said "Failed to start tunnel" and "Failed to stop tunnel" when it couldn't tell you why. Those now match the rest of the app's voice (DOR-1755)
  • Fixed links inside a package's README on the DorkOS marketplace website. They looked like links but were not: hovering showed no address, ⌘-click or middle-click did not open a new tab, "Copy link address" had nothing to copy, and search engines could not follow them. They are ordinary links now (DOR-1296)
  • Opening a document in the canvas editor no longer repaints every border in the app. The editor brings its own stylesheet, and that stylesheet was resetting the app's border colour to the text colour — so cards, buttons, inputs and filter pills all picked up a hard near-black outline (a washed-out light one in dark mode) and kept it until the next reload. Measured across thirteen screens in both themes (DOR-1024)
  • Coloured borders now work inside the Obsidian panel too, the same way they do in the app (DOR-1024)
  • Installing an agent from the Marketplace into one project used to leave it stranded. The files landed correctly, but the installed list looked right past them and the uninstall button said the package was not installed — so the only way to remove one was to delete the folder by hand. Project installs are now looked for in the same places they are written to, whatever kind of package they are (DOR-994)
  • A package installed globally and again inside a project now shows as two separate installations you can manage one at a time, and removing the project copy leaves the global one alone (DOR-994)
  • Updating a marketplace package no longer destroys another install of that same package that arrives while the update is running. An update takes the old copy away and puts the new one down, and for a moment in between the folder was unguarded: anything installed in that moment was deleted without a word, even though whoever installed it had already been told it worked. The update now holds the folder from start to finish (DOR-1722)
  • A conversation whose agent runs on Claude, Codex or OpenCode now says so by name when that program is no longer running on your machine — and tells you the two ways back: turn it on again to pick up where you left off, or take the agent out of the conversation and add it back to start fresh. Before, every message got the same "ran into a problem" apology and pointed you at a session that was always empty, so the only way to fix it was to already know how (DOR-1720)
  • That line is written once while the situation lasts, instead of once for every message you send (DOR-1720)
  • A session you open from the sessions list says the same thing in the same words when the program it runs on isn't running (DOR-1720)
  • The "Add a connection" dialog used "Connection" for both the thing you're picking and the thing you're creating. Picking a source now says "Source".
  • Removing a connection now tells you plainly that nothing routes through it anymore, instead of reusing the same wording as removing a single routing rule.
  • A message from a real person in a private Telegram or Slack chat now notifies you, the same way a message from one of your agents does. It used to be the one kind of message DorkOS stayed silent about — and the mute switch, the five-minute grouping and the read-when-you-open-it rule all apply to it just as they do to an agent's
  • A channel you are not a member of no longer claims you left it. The app only knows whether you are in a room right now, not whether you ever were — so a channel one of your agents opened without you was labelled "You left this channel", which was never true. The sidebar row now says "Read only", the channel itself says "You're not in this channel. You can read it, but not add to it.", and the way back in is called "Join" (DOR-1620)
  • Long chats with Codex and OpenCode agents got slower and more expensive than they needed to be. Every turn re-sent the agent's whole introduction — who it is, its SOUL.md and NOPE.md, what DorkOS is, where it is running — and each copy stayed in the conversation, so a twenty-message chat was carrying twenty copies of the same few pages. OpenCode now sends it on a channel its own engine keeps out of the conversation, and Codex sends it once per chat and again only when you actually edit the agent. Measured on a real agent, that removes about 60% of the text a twenty-turn Codex chat was carrying and about 90% for OpenCode — counted as characters of text sent, which is what we can measure directly rather than what a model provider ends up charging for. Nothing an agent needs to know went away: its saved notes and the tools it currently has are still refreshed on every turn (DOR-477)
  • The little coloured tags in the Marketplace that say what kind of package you're looking at — agent, plugin, skill pack — now pick colours made for dark mode instead of reusing the light-mode ones (DOR-1760)
  • Small icon buttons — copy, close, fullscreen, Browse — are big enough to tap on a phone and show a focus outline when you reach them with the keyboard. Several were about half the size a thumb needs (DOR-1760)
  • The settings sidebar reads correctly to a screen reader again. It described itself as two overlapping widgets at once, and the arrow keys now work from wherever your focus already is (DOR-1760)
  • A greyed-out folder field greys out its Browse button too, instead of offering to change something you can't (DOR-1760)
  • A long dialog heading no longer runs underneath the expand button in the corner (DOR-1760)
  • A busy Inbox shows up right away. It used to trickle in one row at a time, which looked like it was loading slowly (DOR-1764)
  • The recent-chats panel above the message box, and a project card you just added during setup, fade away instead of vanishing mid-blink (DOR-1764)
  • Menus now open outward from the button you clicked, and one near the edge of the screen slides in from the right direction (DOR-1764)
  • If you have asked your system for less on-screen movement, a busy conversation's glowing border now stays still (DOR-1764)
  • When a plugin's hooks/hooks.json is damaged, DorkOS keeps the parts it can still read and skips the rest. It used to skip them silently, so a hook could stop running with nothing anywhere to say so. dorkos harness sync now names the file and each affected event, and says whether the rest of that event still runs (DOR-1724)
  • A project-room conversation you carry on somewhere other than the room now continues in the same working copy the agent has been using in that room, so the work it has not saved into the room's files yet is right there. Before, it started up in the agent's own folder instead, and that work was invisible. If you name a folder yourself, yours still wins (DOR-1624)
  • Right-clicking in the desktop app did nothing at all — no copy or paste on a text box, no "Copy Link Address" on a link, no spelling suggestions. It now opens the menu you would expect, and the app's own right-click menus (like the one on a room in the sidebar) still take priority where they have one (DOR-1297)
  • The health check now spots a room that can no longer find its conversation after its agent's folder moved. It used to look for the saved conversation anywhere on disk and call the room healthy, while the agent itself looked only where it lives now and started over from nothing every time (DOR-805)
  • Screen readers no longer read out loading spinners as unlabelled pictures (DOR-1763)
  • The subagent lines in a session's status panel now match the size of every row around them, instead of standing out as the one larger line (DOR-1763)
  • A server's detail rows in agent settings show the label dimmer than the value again, so the two read at a glance (DOR-1763)
  • Buttons no longer submit a form by accident when all they were asked to do is run a click (DOR-1761)
  • Checkboxes and radio dots now grow on a phone, like the text boxes beside them already did (DOR-1761)
  • A switch given a size now still grows on a phone; asking for both used to quietly do nothing (DOR-1761)
  • The live activity chip that shows what your agent is doing now keeps its gentle pulse when "reduce motion" is turned on, instead of going still (DOR-1761)
  • In the desktop app, Settings → Danger zone → Restart Server and Reset All Data work again. Both used to ask the server to end itself and start over, which the app can't do — so the app refused, and the two buttons could only fail. Now the app restarts its own server: it stops it, deletes your data if you asked for that, starts it again, and puts your window back on it. If another copy of DorkOS is using the same folder, nothing is deleted and you are told which one to quit (DOR-542)
  • Refusals from these two buttons read like sentences again. A message from the server used to arrive as the whole raw response — braces, error code and all — with the explanation buried inside it (DOR-542)
  • Changing an agent's personality saves once, when you let go of the slider. Dragging one dial used to send a save on every step it crossed, and the handle lagged behind your finger while it caught up (DOR-1646)
  • Search on the docs site now puts the page that explains a topic first. Searching "relay" used to return a long reference page that merely mentions relay, with the Relay page itself down at eleventh (DOR-701)
  • Docs search now understands word endings and small typos: "scheduling" finds what "schedule" finds, and "releay" still finds Relay (DOR-701)
  • Asking docs search a full question no longer costs a giant download. A five-word question used to return around 300 KB — worse than reading the whole documentation index — and now costs about the same as a one-word search (DOR-701)
  • The diagnostic view of a room's agents no longer contradicts the health check about the same agent. It used to look for a saved conversation anywhere on disk and report "found it", while the health check warned that the agent could not actually reach it — so anyone chasing a room that had forgotten everything was told to look somewhere else. Both now read the same answer, the "anywhere on disk" one is still shown beside it under a name that says what it is, and when the two differ the response says why (DOR-1780)
  • The diagnostic view of a single session now says whether the runtime it names is the one that session actually runs on, or just the one it would get. A room's first session had no recorded runtime, so the view printed a guess as if it were a fact (DOR-1780)
  • One room member DorkOS cannot look up no longer costs you the whole report. A busy or damaged database used to take down the diagnostic view and cut short the startup check that repairs rooms — the two places you go when something is already wrong. Now it costs that one member's answer, which is marked as unreadable rather than passed off as healthy (DOR-1780)
  • A message that ran out of time before an agent saw it is now turned away everywhere, and whoever sent it is told in plain words — "The message expired before the agent could start" — instead of "TTL budget expired". One path already refused these; another quietly handed the message a fresh full clock and answered as if it had just arrived, so an hour-old message could still start a turn nobody was waiting for (DOR-1770)
  • Starting DorkOS with --tunnel now prints the address your phone can reach it on, and a QR code for getting there without typing it. Turning Remote Access on later from the app prints it too. Both were silent before: the terminal was watching a copy of the tunnel that never actually ran, and the QR code was failing in a way nothing reported (DOR-1745)
  • Installing an adapter for one project now tells you when it lands machine-wide instead of silently ignoring the project choice (DOR-1776)
  • The install conflict check now looks at every kind of installed package — agents and Shapes as well as plugins — when warning you about a clashing skill name or a screen slot two packages both want (DOR-1776)
  • Reinstalling a package no longer warns that it clashes with itself, and two different packages that happen to share a name are no longer mistaken for one, which used to hide a real clash between them (DOR-1776)
  • Editing an agent's setup while another agent is talking to it no longer switches which AI tool answers — the conversation stays with the tool that has its history. DorkOS used to re-read the agent's setup on every message, so a change made mid-chat handed the rest of the conversation to a tool that had never seen any of it and answered from nothing. Your change still applies everywhere else you use that agent — in rooms, in chat, and in new sessions you start; the one running agent-to-agent thread keeps the tool that has been answering it (DOR-1774)
  • An agent-to-agent message that could not run at all — the AI tool not signed in, for example — no longer locks that conversation to the tool it happened to try. Fix the setup and send again, and the next message goes where you said (DOR-1774)
  • You can now pick up and reorder sidebar items with just the keyboard. Tab into a section, arrow down to the row you want, press Space to lift it, arrow to where it should go, and press Space again to drop it. Escape puts it back. Before this, the sidebar told screen readers a row could be dragged with the keyboard, but there was no key that could actually start the drag (DOR-1746).
  • Enter still opens whatever a sidebar row points at — Space is the key that picks it up.
  • The same works on a section you made yourself: Space picks the whole section up so you can move it, and Enter folds it. Sections that come with DorkOS — Channels, Direct messages, Agents — can't be moved, so Space still folds those.
  • Lifting something and putting it straight back where it was no longer saves anything. It used to write your whole sidebar layout back to disk for a move that never happened.
  • Editing a schedule that came from an installed agent or Shape no longer writes into that package's own files, where the change would have been shared with everyone who installed it and wiped out by the next update. DorkOS now says the schedule belongs to a package, the same as it already did for plugins — and schedules belonging to agents you made yourself stay yours to edit (DOR-1789)
  • Adding a new schedule to an agent that came from the marketplace is now refused up front, instead of being accepted and then wiped out by that package's next update. DorkOS suggests making your own copy of the agent and putting the schedule there (DOR-1789)
  • DorkOS now re-reads a message mailbox the moment it starts watching it, instead of only reacting to what arrives afterwards. Anything already waiting — mail that landed while DorkOS was not running, or in the instant the watcher was still starting up — is picked up straight away rather than sitting there until something else happens to arrive (DOR-1787)
  • A scheduled run that hits its time limit now says so the same way everywhere, in plain words. Depending on how the run was started, its record used to read either "Run stopped after passing its 5m time limit" or "Run timed out (TTL budget expired)" — the same thing, said twice, once in jargon (DOR-1786)
  • Switching which account an agent runs on now saves on machines with more than one account. The Account setting in an agent's "Runs on" panel was sending its change down a path that only agents use, and that path refuses account changes on purpose — only you get to decide whose subscription pays. So the setting quietly failed every time, on the only machines that show it. It now goes the way the rest of your settings go, the picker keeps whatever you chose, and every screen that names the account — the panel itself and the account label at the bottom of the window — updates straight away, even if you close the panel the moment you click (DOR-1736)
  • A thread's "3 replies" line no longer says a smaller number than the replies it is sitting above. It could fall behind when a reply arrived while you were reading a long thread (DOR-1734)
  • DorkOS now reaches a remote tool server and reads its tool list before it shows connected. Failed checks add no account and explain what to fix. Closing before a check starts keeps it closed. Simultaneous connections stay with the right provider. Repeated disconnects cannot bring back a removed server. (DOR-738)
  • Adding a marketplace now checks the address before it saves it. A marketplace is either an https:// link to a git repository or a file:// folder on your own machine; anything else — including SSH-style git@host:org/repo addresses, which look right but can never load a listing — is turned down on the spot, with a note saying what to use instead. Previously any text at all was accepted and quietly failed later. Sources you already have are left exactly as they are (DOR-1710)
  • DorkOS used to spell an ellipsis two ways ("Saving…" beside "Saving...") and an apostrophe two ways, sometimes on the same screen. The app now spells both one way, and a check keeps new copy from drifting back (DOR-1756)
  • When something goes wrong, DorkOS now says the same thing every time. The crash screen, the page-error screen and the "page not found" screen used to invent their own words for the same two buttons. They now all say "Try again", "Reload DorkOS" and "Back to home" (DOR-1756)
  • A page that fails to load now tells you what happened in a sentence written for you, with the technical error tucked underneath, instead of showing you the raw error and nothing else (DOR-1756)
  • Errors that used to start "Could not…" now start "Couldn't…", and say what to try next (DOR-1756)
  • When an agent asks you for something, the card now says "{name} needs something from you" and its button says "Done". Screen readers hear the same plain countdown the card shows: "Two minutes left to answer." (DOR-1756)
  • Smaller labels that read like code now read like English: "Repository link" instead of "Git URL", "What this can do" instead of "Permissions & Effects", "Not protected" instead of "No auth", and "Reloaded 3 extensions" instead of "Reloaded 3 extension(s)" (DOR-1756)
  • The banner about agents running unattended now says "connection", matching the rest of the app, and its Connections button actually opens Connections. It had quietly stopped working (DOR-1756)
  • On a phone, the "New Schedule" button ran off the side of the Schedules header and painted over the icons next to it, leaving the page tabs clipped at both ends. It is a + there now — the same shortening the Team page already uses — and screen readers still hear its full name (DOR-1747)
  • Installing a package straight from an address now checks the address the same way marketplace sources are checked. An install address is a git repository over https://, ssh:// or git@host:path, or a file:// folder on your own machine; anything else is turned down before DorkOS runs anything, with a note saying what to use instead (DOR-1799)
  • A huge error no longer floods your terminal. When something fails with a message megabytes long — a crashed program dumping everything it had — DorkOS now prints the start of it, the lines that say where it happened, and a note saying how big the whole thing was. Log files were already shortened this way; the terminal was not (DOR-1728)
  • DorkOS accounts now keep the sign-in source they came from, so email, GitHub, and Google sign-ins continue to recognize the right account after an upgrade.
  • Skills from other tools that keep extra settings under metadata (for example ClawHub skills) used to be dropped silently. They now load like any other skill.
  • The built-in "writing for humans" skill had a typo in its header that made DorkOS skip it. It is back.
  • Huge errors are now shortened in more places. DorkOS already shortened an error it was reporting on its own, but not one tucked into a wider line of detail — and those lines used to carry the whole thing, filling a log file with a single 1.2 MB line. Crash reports and the other failures DorkOS reports now get the same short version, with the same note saying how big the original was (DOR-1827)
  • Activity now names the agent that changed an extension's settings or secrets, registered or removed an agent, added a chat connection, changed a chat route, or created, paused, deleted or cancelled a scheduled task. Those entries always said "You" before, so work one of your agents did looked like something you did yourself. What you do in the app still says "You", and a caller DorkOS cannot identify is shown as an unidentified caller rather than as you (DOR-1801, DOR-1829)
  • DorkOS sometimes said "DorkOS couldn't finish starting" on a machine that was simply busy. One small hiccup while the app was still loading — a picture that didn't arrive, a request that gave up — was enough to make it announce a failure, even though the app came up seconds later. It now waits until loading has actually stopped before saying anything went wrong, so a slow start looks like a slow start.
  • Loading a profile photo at the moment it was replaced or removed could take the whole server down, rather than just failing that one request. Photos are now read from disk once instead of twice, which removes the crash and also fixes a subtler problem: the version tag your browser caches could name different bytes than the ones it was actually sent.
  • Opening a file or a picture from a room or a transcript at the exact moment it was deleted could take the whole app down, instead of just failing that one request. Now only that one request fails, and everything else you have open keeps running.
  • When Claude's safety filter declines a message, the chat now says that plainly and tells you what to do: rephrase it, or pick a different model. Before, it only said "The request was rejected as invalid" and hid the reason under Details.
  • Reloading the app used to print one red "query error" line per background check in the browser console. Those were the browser cancelling requests, not real failures, and they are no longer logged.
  • OpenCode sessions no longer disappear from the session list when a project is opened through a different spelling of the same folder — through a symlink, with a trailing slash, or by way of a parent folder. They come back in the session list, in the sidebar's Recent list, and in the Activity counts. The surfaces reading the client-side selector still miss them when the folder is reached through a symlink: that matching happens in the browser, where it cannot check what a folder really is on disk. That half is coming separately. (DOR-695)
  • Activity now records removing an extension's secret and putting one of its settings back to the default. Setting them was already recorded; taking them away was not (DOR-1829)
  • The agent card an outside tool reads before talking to your agents now says that a key is needed. It only said so when you had turned login on or set a server key, so on a normal setup the card promised the call would go through and the call came back refused. Calls have always needed a key; now the card admits it. Reading the card still needs nothing while login is off, and the card never says where your key is kept (DOR-1824)
  • DorkOS now refuses to read or install from folders outside your allowed workspace, however the address is spelled. A package install aimed at a file:// address used to skip that check — it could list the contents of a folder you never opened up, and copy that folder in (DOR-1825)
  • Creating an agent from a template now checks the address up front and says plainly when it isn't one DorkOS can download from, instead of failing partway through with a server error (DOR-1825)
  • Your GitHub key is only ever sent to GitHub. Installing a marketplace package, or creating an agent from a template, used to attach your key to whatever address it was pointed at — so an address on someone else's site was handed a working key to your GitHub account. Private repositories on GitHub still work exactly as before (DOR-1833)
  • Reopening a menu or a dropdown list straight after closing it no longer eats your next click. The press did nothing and you had to press again — the list that had just closed was still on screen finishing its fade, and it was closing the one your press had opened. The same press now works the first time, anywhere in the app a menu is reopened straight after it closed (DOR-1834, DOR-1835)
  • Clicking the little arrow at the right of a collapsible settings section now opens and closes it, the way clicking its title always did. The arrow had quietly stopped being part of the button.
  • Opening the session page without a link no longer flashes errors on its way in. DorkOS picks the conversation you were last having and sends you there, but it was not saying which project that conversation belongs to — so the page asked for a transcript it could not place, got two errors back, and settled on an empty screen before recovering. It now names the project, and the conversation opens straight away (DOR-1836)
  • Stopping an agent's very first reply in a room now always stops it. The very first time an agent answers in a room, DorkOS works out which program is running that answer by reading the agent's settings — and if those settings changed while the answer was being written, Stop went to the wrong program and quietly did nothing: the reply carried on to the end, and you paid for it. DorkOS now remembers which program picked the answer up, so Stop goes there (DOR-1721)
  • Reconnecting to a chat no longer skips replies. When two turns started on the same chat at once, the server could swap out the counter it uses to number that chat's events — and a window reconnecting afterwards asked to carry on from a position that no longer meant what it used to, so some replies simply never arrived and nothing looked wrong. Those windows now reload the conversation instead.
  • Links from packages, connectors and agents clear the same safety check as every other link. A package's homepage, a sign-in link from a connector or an MCP server, an add-on's setup button and a "Learn more" link all used to be handed straight to your browser. Now they go through the same check DorkOS runs on every other link, and one it won't open says so instead of doing nothing (DOR-924)
  • A Codex chat you start from DorkOS now offers the same skills the codex command does, including ones that came from a package you installed or a folder you linked in. Those skills always worked in your own terminal; they were just missing from the DorkOS slash menu and from the list your agent reads (DOR-1844)
  • Your own hook files stay yours. If you had written a .codex/hooks.json, .cursor/hooks.json or .github/hooks/copilot-hooks.json by hand, installing a marketplace plugin could delete it — even a file for an agent you had not turned on. DorkOS now leaves any hook file it did not write exactly where it is and says so. The one exception is a .codex/hooks.json holding nothing but a bare list of events, which only older versions of DorkOS ever wrote and Codex never read — that one is replaced with a file Codex does read. When it had hooks of its own to put there, it tells you they are blocked and to move them into .claude/settings.json, which reaches every agent you run; when it had none, it just notes the file is yours and carries on (DOR-1842)
  • Hooks projected to Codex are now written the way Codex reads them. The file DorkOS generated at .codex/hooks.json had the right hooks in the wrong shape, so Codex most likely ignored every one of them. Existing files DorkOS wrote are rewritten in place the next time you sync (DOR-1842)
  • DorkOS only tidies away the skill shortcuts it made itself. A skill of your own with a double underscore in its name — my__helper — looked like one of those, so a sync could remove the shortcut it had just created for it (DOR-1844)
  • On Windows, a skill kept somewhere else in your project and linked into .agents/skills now gets the right kind of shortcut. DorkOS asked Windows for a file shortcut where a folder one was needed, which fails unless you are an admin or have Developer Mode on (DOR-1844)

Security

  • Resetting DorkOS — the button that deletes everything it has stored — now takes a deliberate two-step confirmation, so nothing else on your machine can trigger it with one hidden request. Before this, any program that could reach the DorkOS API could delete your whole ~/.dork folder with a single message, because the only thing the reset asked for was a word that is written in DorkOS's own source code. Now DorkOS hands out a one-time code the moment you press the button, and the reset only happens if that exact code comes back within two minutes. Nothing changes about how you reset: type "reset", press the button, done (DOR-1707)
  • Turning an extension on or off is now yours alone. DorkOS already refused an agent that request when it came through settings, but the Extensions screen had its own way in that asked nobody — so an agent, or a web page you happened to be visiting, could switch your extensions on and off behind your back. Both are refused now, in both directions, and DorkOS says what it did not do and who can do it. Nothing an extension does actually ran without your say-so either way: an extension still needs your one-time approval before its code runs anywhere (DOR-1507)
  • An agent can no longer create a second extension under a name you already use. DorkOS keeps extensions in two places — one for you, one inside a project — and it used to check only the place it was writing to. So an agent could put its own notes in your project while your own notes sat in the other place, and that copy could quietly take over the name later, after you had switched the original off. Now a name you are already using is refused in both places, and the message says where the existing one lives (DOR-1507)
  • Rate limits now count by connection instead of by a header anyone can write. DorkOS was reading the client's address from X-Forwarded-For, which is fine behind a proxy and free to fake without one — so someone guessing your password could put a new value in that header on every try and never run out of attempts. All six limits count honestly now: sign-in, the MCP endpoint, the agent-to-agent endpoints, extension data proxies, the connection test for agent messaging, and the admin restart and reset buttons — that last one guards the button that erases everything DorkOS has stored, so it is the one you would least want a stranger to be able to keep retrying. If a proxy you control really is the only way in and you want it counted per person behind it, set DORKOS_TRUST_PROXY=true (DOR-1711)
  • The MCP endpoints now check where a browser request came from the same way the rest of DorkOS does. They had their own shorter list, which quietly refused addresses everything else accepted — the IPv6 spelling of localhost, a container published on a different port, and any address you listed in DORKOS_CORS_ORIGIN. Those work now, and the protection against a malicious page pointing your own address at itself is unchanged (DOR-1711, DOR-553)
  • The addresses you list in DORKOS_CORS_ORIGIN are now added to the ones DorkOS already trusts, rather than standing in for them. Before, listing your public address could stop the app's own live connection from opening and stop you signing in, because those two checks read the list as the complete answer while the rest of the app did not (DOR-1711)
  • Check the active turn, agent, session override, connection, action version, and approval again before every provider attempt.
  • Stop the next discovery or action after access is revoked, a turn ends, or provider configuration changes.

[0.73.0] - 2026-09-03

Added

  • You can now cap what an agent is ever allowed to do. Pick its limit in the agent's Tools settings, or run dorkos agent update --path <dir> --ceiling <observe|act|destructive>: observe reads only, act changes things but never deletes them, and destructive is no extra limit. Anything past the line is refused, and no approval unlocks it — so this is how you get an agent that reads your repos and can never uninstall anything. Every agent starts with no extra limit, so nothing you already run changes until you set one. An agent can tighten its own limit; only you can loosen it. This covers what an agent asks DorkOS to do — one that can run terminal commands can still act outside DorkOS, and turning on Require login (Settings, under Security) closes that door too (DOR-486)
  • Find out when an agent's sign-in stops working, even when the work was running on its own. Before, a scheduled task, a room reply, or a message from a connected chat would just fail quietly. Now DorkOS notices and tells you which sign-in it was — Claude, Codex or OpenCode — and, if you run more than one Claude account, which account. You get one note about a sign-in, not one for every job that failed because of it, and opening it takes you straight to the place to sign in again (DOR-1654, DOR-1682)
  • Agents you reach through a connected chat, like Telegram or Slack, tell you the same way. Before, those agents were the one case that stayed quiet and left you guessing why they had stopped answering (DOR-1654)
  • DorkOS now tells you when your Claude sign-in is about to run out, three days before it does, on the Claude card in Settings. It keeps saying so through the last few hours, when signing in again is most urgent. Doing it when you choose takes a moment; being caught out used to cost you a failed turn (DOR-1653)
  • If you work through an API key instead, DorkOS stays quiet. It only mentions a sign-in that is actually doing your work, so a stored login you no longer use never nags you (DOR-1653)
  • A sign-in that stops working can now reach your phone. If a scheduled task or an agent reply fails because Claude, Codex or OpenCode needs you to sign in again, DorkOS puts a note in your inbox right away, and if nobody has dealt with it after a couple of minutes it pushes to any device you have subscribed and to your connected chat apps. Tapping it opens the page where you sign in. Change that wait, or turn it off, under Settings › Notifications (DOR-1657)
  • When a runtime's sign-in stops working, the app now shows a banner across the top naming the runtime, with a button that takes you straight to signing in again. Before this, a browser tab told you nothing — a dead sign-in reached you only through the bell, a phone notification, or the desktop app, while your scheduled tasks and agent replies quietly failed. The banner clears itself on the next task, message or reply that gets through on that runtime, since trying is the only way DorkOS can tell that a sign-in works again (DOR-1680)
  • See the pictures your agents make. When an agent generates an image, or a tool hands one back — a screenshot, an image from an MCP server — it now appears in the conversation where it happened, and it is still there when you come back to it days later (DOR-1663)
  • Images from tools now work on all three runtimes. Ask Claude Code to read a PNG and the picture appears right under the step that read it, and Codex shows images that come back from a connected app. Before, this produced nothing at all on the runtime most people use: no picture, no error, no hint that anything had happened. If the only thing an agent produced was an image, the whole turn used to vanish (DOR-1663, DOR-1664)
  • When a picture cannot be kept — it is too big, or a kind DorkOS does not store — the conversation says so instead of showing you nothing, and that notice is still there after you reload (DOR-1663, DOR-1671)
  • Two gaps worth knowing: images an OpenCode model draws itself are dropped by OpenCode before DorkOS ever sees them (anomalyco/opencode#46600), and Codex has no way to send an image its own model drew. DorkOS is ready for both the day they are fixed (DOR-1663, DOR-1664)
  • New agents now show a face. Each one gets its own color and emoji the moment you make it, so your team reads as a row of characters instead of a row of letters (DOR-949)
  • An agent you install from the marketplace now arrives wearing the face its author gave it (DOR-949)
  • When DorkBot picks the name DorkOS calls you — usually because you told it "call me Dorian" in a chat — your team page, your account menu and Settings › Profile now say "Suggested by DorkBot" under that name. Save a name yourself in Settings › Profile and the note goes away for good, even if you save the same name it picked. Names already on your machine keep working exactly as they do today and get no note, because DorkOS only started recording who picks a name in this release (DOR-1022)
  • Ready-made agents from the Marketplace now tell you up front if they come with work on a timer. Before you create one, DorkOS names the job, when it runs, and how much it can do on its own — the same plain-language wording every other kind of package already shows. Ready-made agents were the one kind that skipped the install screen, so this was the one place that fact went unsaid (DOR-644)

Changed

  • When an agent's sign-in stops working mid-chat, you can now sign back in right there in the conversation. The card shows the sign-in running and tells you when it lands, so you no longer have to open Settings, find the right agent, and press Reconnect. If you would rather use an API key, that link is still there, one quiet tap away. On a computer with more than one Claude account, it signs you back into the account that chat is actually using, so you never fix the wrong one (DOR-1651)
  • Sign in once from the card and your message goes again on its own. No retyping, and no Retry button to hunt for (DOR-1650)
  • It stays out of the way when you have moved on. Started typing something else while signing in, or already have a message running or waiting in line? Then nothing is sent behind your back — the card just says you are signed in and leaves the Retry button there. Whatever you typed is left exactly where you typed it, and if you tried again while signing in, it is the newer message that goes (DOR-1650)
  • When you open DorkOS on your phone and an agent's sign-in has stopped working, the card now tells you plainly that signing in needs the computer DorkOS runs on. Before, it showed a Sign in button that always failed. Settings says the same thing on the same screen where you would otherwise press Connect, so the app no longer tells you two different stories two clicks apart. The card keeps its Retry button, so once you have signed in over there you can send your message again from your phone with one tap (DOR-1655)
  • DorkOS now stops telling you about a broken sign-in once it is working again. It watches for the next piece of work that gets through on that sign-in, then files a second note saying it came back. If the same sign-in breaks again later, you hear about it again straight away. Notes are written in the past tense now ("Your Claude sign-in stopped working"), because a note you read the next morning should still say something true (DOR-1657)
  • Pressing Stop now tells you what actually happened. Before, every ending looked the same: the agent hearing you and winding down, DorkOS killing the process because it never answered, the reply having already finished, and the agent refusing to stop all came back as the same yes or no. Now each one is its own answer, and the app only says an agent "stopped" when it really saw it stop. If the agent did not confirm, you get "Stop requested" and the Stop button stays there so you can press it again — instead of being told it worked while the agent keeps going (DOR-1015)
  • Stopping a background task answers with what happened rather than a plain yes or no, and no longer reports "already stopped" for a task it could not confirm, because that task is probably still running (DOR-1015)
  • "Always Allow" on a permission card now says how far the permission reaches — this session, this project, or all your Claude sessions — right on the button. Some of these grants get written to a settings file, so they outlive the chat you gave them in; now you can see that before you tap, not after (DOR-1462)
  • The Workspaces page now shows the copies of your code that actually exist. It reads your workspaces folder directly, so the worktrees your agents really work in finally show up, grouped by project, with the branch, how many files hold unsaved edits, how far ahead of or behind the remote each one is, and when it last got a commit. Before this, the page could only list copies DorkOS had made itself, and it had never made one, so it sat empty while dozens of real worktrees sat in the very same folder. Worktrees you reach through a shortcut (symlink) are included, and a broken shortcut is called out rather than skipped (DOR-1056)
  • The page only reads. It never creates, changes, or deletes a copy, so a stray click can't take a folder out from under a running agent (DOR-1056)
  • It also refuses to guess. A copy whose branch was merged and deleted says so, rather than claiming it's in sync with a branch that no longer exists. A folder DorkOS can't read gets a row marked "Can't read" instead of quietly disappearing, and if a whole folder or the scan itself fails, you're told the list is incomplete instead of being shown an empty page that means "you have none" (DOR-1056)
  • Picking a color or an emoji for an agent yourself still wins. DorkOS only fills in the half you left blank, and it never changes a face you already set. Clearing a color or emoji puts back the face the agent started with, instead of a different one (DOR-949)
  • Approval prompts, sign-in receipts, and the notices a room posts on its own now read as plain sentences, without a stray dash in the middle (DOR-1261, DOR-611)
  • Install screens no longer say a package's scheduled job "starts switched on" — in the app or in the terminal. Nothing a package brings ever starts on its own: DorkOS parks every new schedule until you approve it, so all three screens now say that instead of promising the opposite (DOR-644)
  • Asking the dead-letter list for an empty endpoint name is now an error rather than a way to get the whole list. Leave the filter off entirely to see everything

Removed

  • The "Scheduled run notifications" setting is gone. It promised a toast when a scheduled task finished, and nothing ever showed one (DOR-1522)

Fixed

  • Reopen a chat that stopped because your sign-in ran out, and you now get the same "Sign in again" card you saw at the time, with the button that fixes it. Before, reloading turned that failure into a line that looked like your agent had said it. Other stop notices from Claude, such as hitting a usage limit, come back the same way: as a notice you can read, not as words your agent said (DOR-1649)
  • Search stops filing those notices as things your agent said. This applies to conversations indexed from now on; notices already in your search index stay there until you delete it, which rebuilds from scratch (DOR-1649)
  • When a Codex or OpenCode sign-in dies in the middle of a turn, you now get the "Fix sign-in" button instead of a generic crash message with no way forward. Codex trouble is caught on the path it actually takes — before, a live Codex run that lost its sign-in showed the raw text the tool printed and offered nothing to click — and whatever the agent's own tool said is kept under "Details" instead of being dropped (DOR-1656)
  • A Claude sign-in that had already run out no longer shows as "Ready". DorkOS was only checking that a sign-in was stored, not that it still worked, so a run-out sign-in looked fine until a turn failed. It now offers you the sign-in button instead (DOR-1653)
  • On a machine with more than one Claude account, "Fix sign-in" now signs back into the account DorkOS runs new sessions on, instead of whichever one the server happened to be pointed at (DOR-1652)
  • When an OpenCode turn failed, reopening the chat used to show your question and nothing after it. The failure is now there where it happened, in plain words with the fix to try, and the provider's own wording tucked behind Details — the same thing you were told while the turn was running, instead of raw error text on reload (DOR-1666, DOR-1678)
  • A chat turn that fails now says so. Some failures used to look like a clean finish: the session went quiet, the text explaining what went wrong disappeared, and you got a "finished" note instead of a warning. This happened whenever Claude Code named its own reason for stopping, like a model error, a problem reaching the service, or a prompt that ran too long. Now the session is marked with the error and keeps the explanation on screen, and if you are away from your machine DorkOS starts trying to reach you about it (DOR-1676)
  • Stopping a turn and a turn crashing no longer look the same. When a turn was cut short, DorkOS said you stopped it, whether or not you had touched Stop — so an agent that hit a refusal from the service and gave up on its own was filed as a session you ended on purpose, and the message explaining what went wrong was wiped off the screen. A turn nobody stopped that ended with a real error is now marked as an error and keeps its explanation. A turn you stopped still shows as stopped, with no red mark and no scary text. Scheduled runs get the same fix, where it mattered most (DOR-1681)
  • Pressing Stop no longer looks like the agent crashed. When an agent does not answer a stop quickly enough, DorkOS ends it — and that ending was reported as a failure, with a red error on the reply you had just stopped. It now shows as what it was, including when you stop a message the moment you send it (DOR-1302)
  • Stopping two replies in a row no longer makes the third message refuse to send with "This chat's agent keeps stopping". That count is meant to catch an agent that cannot stay running, and a stop you pressed yourself no longer counts against it (DOR-1302)
  • A scheduled run that hit an error now says so. Run history used to mark those runs finished, with a green tick and no explanation, so a task that died overnight on an expired sign-in looked like it had worked. Now the run is marked failed and shows what went wrong, an expired sign-in leads with what to do about it, and the failure reaches your notifications and your daily report like any other (DOR-1658)
  • Scroll back to something that went wrong earlier in a chat and its Retry button is gone. That button always re-sent your newest message, not the one that failed, so pressing it on an old error sent the wrong thing without saying so. The error itself still shows, and you can always type again (DOR-1677)
  • An old card about a sign-in that ran out keeps its sign-in button. Your login really is broken, whenever it broke, so fixing it there still works (DOR-1677)
  • The model menu now says which models can't do the job, instead of letting you find out after you send a message. Models that can't use tools are grouped under their own heading, and a model that answers with pictures says so (DOR-1660)
  • Models that no longer exist are gone from the OpenCode menu. The list is checked against what OpenRouter actually serves, so a model quietly retired upstream is no longer offered. If that check can't be reached — on a plane, or behind a firewall — you get the full menu instead of a wait (DOR-1660)
  • Choosing a model your runtime can't run is refused right away with a clear message, rather than saved and failed on your next message. A shortened, unconfirmed list never turns your choice down, though: with no OpenCode provider connected, a model you can really run may sit outside that list, so only a confirmed list refuses anything (DOR-1660, DOR-1688)
  • The model menu refreshes when you connect a provider, sign in, or install a local model. It used to keep showing the old list for up to half an hour (DOR-1660)
  • When OpenCode can't find any of your credentials, the menu no longer dumps thousands of unchecked models into the picker. It shows a short list and says plainly that nobody has confirmed you can run any of them — and the lists in Settings › Runtimes and on an agent's settings now say the same thing, instead of looking complete when they aren't (DOR-1660, DOR-1674)
  • You can read the whole model name in the picker. The panel is wider, so a long name like "Qwen: Qwen3 Coder 480B A35B Instruct" and its note both fit, and when an id is too long the picker trims the front and keeps the end — because two models can share everything but their last few characters (DOR-1673)
  • Picking a model on a brand-new session works again. If you started a session, switched it from Claude Code to OpenCode, and then chose a model, DorkOS refused with "The claude-code runtime cannot run model …" — naming a runtime you had not picked. It now checks against the runtime you actually chose, and saves your choice when nobody has decided yet
  • /compact now works on OpenCode sessions. It had been failing every time with a "bad request", because DorkOS never said which model should write the summary (DOR-1668)
  • A conversation that had a permission mode saved under a name one agent tool uses but another does not no longer breaks the next reply. It starts in the careful "ask me first" mode instead, and your saved choice is left exactly as you set it (DOR-885)
  • Come back to an OpenCode session after a restart, change just one setting — the model, say — and it now keeps everything else you had chosen. Before, the settings you did not touch quietly reverted: a session you had trusted to work on its own dropped back to asking before every action. The settings panel kept showing your real choices the whole time, so there was nothing to see until you noticed the agent behaving differently (DOR-1152)
  • Changing a setting on a chat no longer answers as if DorkOS already knew which agent tool would run it. A chat records its tool when you send it your first message, and until then the answer says outright that it is a guess (DOR-1693)
  • A session running a runtime's own default model no longer shows a meaningless "· default" after the runtime name, including in the moment right after startup (DOR-1279)
  • OpenCode agents no longer start every reply by reciting the setup notes DorkOS gives them, followed by a copy of your own message. The reply now begins with what the agent actually says, in chat and in rooms — where those notes had included what other people in the room had said. Summaries of scheduled runs show the agent's answer rather than its setup notes (DOR-1659)
  • When an agent is created it is asked to introduce itself. That request came from DorkOS, not from you, and search now leaves it out on every runtime — so searching your history no longer turns up DorkOS's own instructions as though they were your words. Turns already indexed stay until the index is rebuilt (DOR-1669)
  • Links in error messages are now clickable. When a provider's message points you somewhere — "add credits at …" — that address is a real link you can open, not text to retype. The same goes for tunnel, marketplace, connector and page errors (DOR-1661)
  • Errors no longer hide what actually went wrong. A failed turn could show "An error occurred during execution." in place of the real explanation, and a sign-in failure could throw the provider's message away entirely. Now the real explanation is what you see, with the provider's exact words under Details (DOR-1661)
  • The server log is quieter. Every time your agent reached for a DorkOS tool, the log gained a bogus "Invalid API key" error — around four per turn, burying the real problems. Genuine key failures still show up (DOR-1661)
  • Links in chat now follow the same safety rules as everywhere else in DorkOS, and DorkOS tells you when it refuses one. Before, a link an agent wrote was checked against a looser list than a link on any other screen. When a link can't be opened, the confirmation box explains why and offers to copy the address instead of showing an "Open link" button that would do nothing — and it says which rule stopped it, so a link that works in your browser but not in the desktop app reads that way (DOR-547)
  • Message search no longer confuses a literal <mark> someone typed into a message with its own highlight markers (DOR-1552)
  • Claude Code sessions you started in a subfolder now show up under the project they belong to. If you ran claude in something like my-app/packages/api, that conversation was missing from my-app. Each session still shows the folder it is actually running in, and an agent whose open conversation runs in a subfolder now lights up in the sidebar instead of looking closed (DOR-1550)
  • An agent can now see what happens in a preview it opened in the browser app: console messages, network requests and screenshots reach the conversation, so asking about a page's errors no longer comes back empty. It only worked inside Obsidian before. Switching conversations while a preview was busy no longer files its last console messages under the wrong chat (DOR-1305)
  • A session's task list no longer loses tasks that were just created when the task history finishes loading late (DOR-1632)
  • Answering a request again after the server refused your first answer — because another window already answered it — no longer makes its confirmation card disappear too soon (DOR-1633)
  • Answering the last permission request no longer makes the "Allowed" or "Not allowed" confirmation flash and vanish; it stays long enough to read, in the Inbox, on the home screen, and on your phone. A request you have answered no longer offers you the buttons again a moment later (DOR-1411)
  • Denying a tool on an OpenCode session no longer offers a reason field that went nowhere. The field appears only when the agent can actually receive it — in the conversation itself as well as in the Inbox (DOR-825)
  • The Permissions status item judges a mode by what it actually does, not by whether its name happens to be "default". Switching a session to its safest mode no longer shows a false warning, and the item appears only when the agent really is acting with less oversight (DOR-820)
  • A session running at full power says so the same way everywhere. The details panel used to call it "Bypass All" while the mark on the row called it "full power" (DOR-1499)
  • When an agent sends a helper off to work in the background and that helper needs your permission, the request has to be turned down for it — and that used to happen in silence, leaving a conversation where the agent quietly stopped making progress. The conversation now says so, names the helper and the tool it lost, and the note is still there when you come back later (DOR-795)
  • The "working on it" line shows its timer the moment the number is due, instead of occasionally waiting a whole extra second (DOR-1729)
  • Agents no longer go silent in direct messages when you let them decide for themselves when to speak. An agent would work out a good answer, write it somewhere nobody could read, and send nothing — then reply to a plain "thanks" with a pleasantry. Now the answer it works out is the one you get, and a thanks can just sit there (DOR-1643)
  • Changing which program an agent runs on no longer moves its running room conversations onto the new one mid-chat, where it kept answering from a blank slate. Stop had the same problem and quietly stopped nothing. A change now applies to the agent's next conversation; to move a room the agent is already in, remove it from that room and add it back (DOR-764)
  • A busy thread no longer comes apart. A room loads its most recent 50 messages, so once the message a thread started from was older than that, every answer showed up as its own separate line. The room now brings that first message along, and the "60 replies" line counts every answer in the room, not just the ones on screen (DOR-690)
  • You can no longer end up with two direct messages holding exactly the same people — two rows in the sidebar for one conversation, with half the history in each. Asking for a conversation you already have always brings back the one you already have, and a change to who is in a group message that would create a copy says so instead (DOR-1616)
  • Renaming an agent, or changing your own name, photo, or handle, now updates right away in any room you already have open (DOR-1114)
  • Agents working on a room's files can now use their own DorkOS skills there, including the one about how to work on a room's files. A copy an agent has been working in for months picks up newer skills the next time the app restarts (DOR-1640)
  • Turning an agent's tool groups off now sticks. An agent could quietly turn its own back on, undoing the change you made on its Tools page. The same goes for a handful of other settings that are yours to decide: its short name, the namespace that decides which agents it can reach, whether it speaks in a room without being asked, and which account pays for its work. Agents still edit everything that was always theirs (DOR-1506)
  • Changing an agent's safety boundaries — its NOPE.md, the list of things you told it never to do — now asks you first. An agent could rewrite that file through its own update tool with nothing shown to anyone, and could switch the whole list off without touching a word of it. Both are now one action that waits for your approval, and the card shows the full new text rather than the first line (DOR-1698)
  • Adding an agent by folder no longer writes a brand new agent file over one the folder already had. Point it at a project you keep in git and DorkOS quietly rewrote a file your repository owns — and removing the agent afterwards deleted it. DorkOS now takes on the agent the folder already describes, and never deletes a tracked file: removing that agent leaves the file alone and blocks the folder from scans instead, and says so. Adding the folder again brings the agent back (DOR-1019)
  • An agent's own thinking or progress updates can no longer be mistakenly re-delivered to it as a new message — closed for every kind of update this can happen to, not just the ones already seen (DOR-804)
  • Two unrelated projects with the same folder name no longer share one internal messaging identity, and a session's origin still shows its project name (DOR-514)
  • Deleting or unregistering an agent now actually turns off its identity, instead of leaving its access tokens valid until they expire on their own (DOR-490)
  • An agent or person avatar with no real color on record no longer risks an invisible letter; it shows a soft tint instead (DOR-998)
  • Profile photos load faster and update reliably when changed (DOR-1008)
  • The Team page no longer flashes "Nobody to show yet." for a moment on startup before your team appears (DOR-1419)
  • The team table's column headers no longer overlap into garbled text, like "Manaigedy by", when the table is narrowed (DOR-1287)
  • Closing a profile returns keyboard focus to whatever you opened it from — a mention, a name, a face — instead of dropping it (DOR-1274)
  • On a phone, swiping the room sheet closed no longer accidentally opens a member's loudness scale or asks to remove them (DOR-1275)
  • The New Agent dialog opens your agents folder even when DorkOS is limited to a single project folder, for example in Docker with DORKOS_BOUNDARY set (DOR-437)
  • When an agent changes one of your scheduled tasks — its prompt, its schedule, its name, or which runtime and model it uses — the change now sticks. It used to disappear within five minutes, even though the agent was told it worked, because DorkOS wrote it to its own records and never to the task's file (DOR-1625)
  • Because those edits now really land, one thing follows: when an agent changes what an approved task does, the task pauses and waits for you to approve it again, since you never saw this version. Your agent is told and asked to tell you. Changing anything else, including switching a task on or off, leaves your approval alone (DOR-1625)
  • Editing a scheduled task no longer lets you pick a different agent. The pick was always thrown away when you saved, and while it showed on screen the permission setting below it described the wrong agent — so you could move the dial a step and never be asked about it, then save a task that runs without stopping to ask. The edit screen now shows the agent it runs as and says the agent is set when a task is created. At creation, picking an agent that would stop the run pausing for permission asks you first (DOR-1694, DOR-1637)
  • While your list of agents is still loading, the edit screen no longer claims the task's agent is gone. If the list can't be read at all, it says that instead of blaming the task (DOR-1694)
  • Manually running a scheduled task now updates its "last run" and "next run" times right away, instead of leaving them stale (DOR-1492)
  • Copy one of a Shape's scheduled tasks to use as a starting point and it is yours to keep. DorkOS now remembers exactly which files it wrote when you applied a Shape, so removing that Shape removes only those, and re-applying it never writes over your copy (DOR-1524)
  • When an empty folder sits where one of a Shape's scheduled tasks would go, DorkOS says so on the apply screen and names the folder, instead of quietly skipping the task on every attempt (DOR-1524)
  • A Shape-installed schedule can no longer start with every approval prompt turned off instead of the normal, safer defaults (DOR-823)
  • Scheduled runs no longer fail with "No receiver for the scheduled run" when the agent-messaging connection they were handed to was switched off or failed to start. DorkOS now checks that something is really listening, and simply runs it itself when nothing is (DOR-1636)
  • Closed a hole where an agent running on Codex could switch your Shape on its own. Switching a Shape writes files into your skills folder, changes which Shape is active, adds, moves and removes scheduled tasks, and turns extensions on and off. Agents on Claude Code have had to ask you since 0.57.0; Codex agents were never asked, because a Codex session has no way to put a question in front of you. They now refuse and tell the agent to leave it to you (DOR-639)
  • Installing a marketplace package from a folder on your own computer now works when the folder name has a space in it (DOR-412)
  • Installed connector packages show the same cyan CONNECTOR badge Browse already shows for them, instead of the generic ADAPTER badge (DOR-710)
  • Installing or removing the same package in two places at once is safe. Before, a package could silently go back to an older version — one install failed, undid itself, and put the old files back on top of the other one that had just succeeded (DOR-711)
  • One package with a broken hooks file no longer stops every other package from reaching your coding tools. Syncing used to fail outright on it, so nothing got set up. DorkOS now skips only the parts it cannot read and sets up everything else — which also means the install screen and the sync agree about what a package will run (DOR-646)
  • When you approve an agent's request to install a marketplace package, that approval now covers the commands and scheduled jobs the card showed you, not just the package name. If the package changes between the moment you say yes and the moment it installs, DorkOS stops, tells you what it declares now, and asks again (DOR-647)
  • The dead-letter list can no longer be asked for an endpoint name that points outside the relay's own mailbox folder, where it would read and return files from elsewhere on your machine. And a Shape from the marketplace can no longer name an extension in a way that reaches outside your DorkOS data folder; extension names now have to look like extension names everywhere DorkOS turns one into a file
  • Alt+F4 no longer quits the whole app on Windows
  • Labels, headers, and sidebar rows on Windows no longer act like drag-selectable web page text. Text in messages, code, and diffs can still be selected and copied
  • Full-screen mode no longer leaves an empty strip at the top of the window
  • The window's header and tabs dim slightly when it loses focus, like other native Mac apps; scrolling to the end of the chat or a sidebar list no longer bounces past it on a trackpad; and toast and error messages can be selected and copied
  • A dorkos:// link opened during a slow first boot now still opens once the app is ready, instead of silently doing nothing
  • The desktop app never told its window what it was allowed to ask your computer for, and a window that says nothing is treated as saying yes — camera, microphone, location and reading your clipboard could all be handed over without a prompt you would ever see. Everything is now refused except the two things the app really does: show you a notification, and copy text you asked it to copy. Even those are refused to anything that is not DorkOS itself, like a website you have open in a canvas (DOR-560)
  • The page the app runs on now carries a rule about where its code may come from: your own machine, and nowhere else. Nothing an agent writes into a message, a widget or a marketplace card can pull a script off the internet and run it there. Everything you already use works exactly as before, including 3D and PDF previews, embedded web pages and copy buttons (DOR-560)
  • Creating your owner login now works from any address you have allowed the server to answer. Before, the server would load the whole app and then turn the sign-up away, which blocked Remote Access setup (DOR-1744)
  • Sign-in and sign-up errors say what went wrong in plain words. A refused address used to show only "Invalid origin"; you now get a sentence, the address to allow, and the original wording underneath (DOR-1744)
  • Remote Access now works in the Mac app. Turning it on always failed — the switch flicked straight back off, no matter which ngrok token you used — because the part of ngrok that does the real work was missing from the app we shipped. It now ships with the app, and the Windows build is wired the same way (#1458)
  • Remote Access comes back when you restart the desktop app. Turning it on saved the setting, but only the command line ever read that setting back, so the desktop app started with the tunnel closed and nothing said why (DOR-1738)
  • DorkOS now notices when a tunnel drops. It was asking ngrok to tell it using a name ngrok does not answer to, so a dead tunnel was still shown as connected until you turned it off by hand. A tunnel that is briefly re-establishing itself now reads as on and says "Reconnecting" — with your address still there — instead of showing as switched off, and turning Remote Access off yourself is silent rather than raising a red warning (DOR-1738, DOR-1739)
  • A username and password you set for the tunnel in your environment is now actually used when you turn Remote Access on from the app. Before, the app started an open tunnel and then told you it was password-protected — the one direction that mistake must never point (DOR-1738)
  • Your saved tunnel address no longer reads as empty after a restart (DOR-1738)
  • When a tunnel fails to start or stop, the reason is written to the log. Someone who turned logging all the way up to find out why still saw nothing at all (#1458, DOR-1738)
  • Stopping a remote-access tunnel now always works, even if login is turned off on this instance (DOR-574)
  • Turning on Remote Access no longer looks like it did nothing. When the tunnel failed to start, the reason flashed on screen for an instant and vanished, taking the "Try again" button with it, and the switch snapped back off. The failure now stays on screen until you dismiss it, and "Try again" actually tries again (DOR-1739)
  • Saving your ngrok token no longer always says "Could not save token. Try again." no matter what happened; DorkOS tells you the real reason and what to do about it. A custom domain that fails to save now says so instead of sitting in the box as though it had been saved, and clicking into that box and back out again no longer erases a domain you had already saved (DOR-1739)
  • A tunnel that takes more than 15 seconds to start is no longer reported as timed out and then connected a few seconds later. A failure no longer sticks around for the rest of the session — closing Remote Access and reopening it, or saving a new token, clears it — and opening DorkOS while remote access is already on no longer announces "Remote access is on" as though it had just been turned on (DOR-1739)
  • The connected tunnel's speed check no longer keeps firing at an unreachable address with nothing to stop it, piling up requests for as long as the window stays open (DOR-1739)
  • The Remote Access setup note said to create your owner login first; it is the token first, and the login when you switch remote access on. The note now matches (DOR-1739)
  • Long file paths in Settings read the right way round again. The Server and Advanced screens shorten a path from the front, so you keep the folder name at the end — and they no longer move the leading slash to the far right, drawing /Users/kai/.dork as Users/kai/.dork/ (DOR-1686)
  • "Reset to defaults" on the Appearance tab now puts back the theme and text and nothing else. It used to quietly flip every switch on the Preferences tab and forget your sidebar, canvas, and panel layouts too. The clean slate lives in Settings → Advanced → Danger Zone as "Reset All Settings", and it asks first (DOR-923)
  • If you'd limited which kinds of files can be uploaded, resetting your settings no longer quietly allows every kind again (DOR-1505)
  • Saving a Slack per-channel override with a mistyped setting name now shows an error naming the problem, instead of silently saving an empty rule (DOR-655)
  • An API key no longer stops working after ten uses in a day. With Require login turned on, the dorkos command sends your key on every request, so the eleventh command of the day came back "unauthorized", as if the key had been revoked. Keys you already created start working again with no action from you (DOR-489)
  • The Name field lines up with its Add button when adding a Claude account on a narrow screen
  • On narrow screens, small buttons like "Try again" and "Create agent" are easier to tap — 44px tall, the minimum size Apple and Google both recommend (DOR-771)
  • Sidebar rows, channels and sections read correctly to a screen reader again. Making them draggable had wrapped each one in a second, invisible button, and a button inside a button is something screen readers skip or garble (DOR-1418)
  • Server log files now record what actually went wrong. When something failed, the saved line kept only the headline ("Failed to load workspaces") and threw away the reason, so the log often could not explain the failure it was written for. Every line now carries the error's message, its stack, and the chain of underlying causes (DOR-802)
  • Server logs also record it when an OpenCode agent's unanswered permission request times out, matching what already happens for Claude Code (DOR-803)
  • Fixed a rare first-start problem where two DorkOS processes opening the same brand-new data folder at once each made their own secret key and one was thrown away — leaving whatever it had locked up (saved connection credentials, signed-in sessions, browsers signed up for notifications) impossible to open. The first process to finish writing the key now wins. If a secret file in your data folder is empty, which only happens when a much older version was interrupted on its very first start, DorkOS stops with a message naming the file instead of quietly replacing it; move the file aside or delete it to have a new one made (DOR-712)
  • Awkward text can no longer stall the server. A handful of text patterns got dramatically slower as the text got longer, and a few were reachable from outside: a scheduled task's time limit, a crash report's stack trace, and a chat message carrying a wall of half-finished tags could each tie the server up long enough to stop answering anyone
  • Fixed a leak where the access token for a connected tool server showed up on the command line of the Codex program DorkOS starts, which meant any other program on your computer could read it. The token now travels out of sight, and your agents reach those servers exactly as before (DOR-993)
  • Release blog posts no longer show the install instructions twice near the bottom of the page (DOR-649)
  • A marketplace package page no longer shows the package's name as a heading twice — once as the page title, once again at the top of its README (DOR-725)
  • Text on the dark sections of the story page was nearly invisible: a dark gray meant for cream backgrounds, painted on near-black. It now uses the same light color the rest of those sections use (DOR-1512)
  • The "API Reference" link in the docs, from the rooms page and the integrations guide, no longer leads to a page-not-found error (DOR-611)
  • Session, scheduled-task, and subtask rows now light up when you hover or tab to them, so it's clear what you're about to click (DOR-1752)
  • The Activity feed now tells you when it can't reach the server, with a way to retry, instead of quietly showing "no activity" (DOR-1752)
  • The Team page now shows a placeholder shaped like your roster while it loads, instead of a bare spinner that pops into a full grid (DOR-1752)
  • The Team page's filters and search no longer jump down after your roster finishes loading — they now stay put while the roster fills in underneath them (DOR-1752)
  • On Connections, the built-in Claude Code card no longer has a dashed border, which used to make it look unavailable even while it was live and working (DOR-1752)
  • A conversation's scrollbar now lights up as soon as you move toward it, instead of only while you're actively scrolling (DOR-1752)

Security

  • Extensions that forward requests to an outside service (a "data proxy", like one that talks to GitHub for you) were also handing that service your DorkOS login — the cookie or key that proves the request came from you. It never needed to go: the extension already carries its own credential for the service it talks to. Your login now stops at DorkOS
  • Those proxies got three more limits. They can only reach the address the extension declared, so a crafted request can no longer walk up to a neighbouring part of that service with the extension's key attached. If the service answers with a redirect, DorkOS hands it back to whoever asked instead of following it with the key. And there is now a ceiling of 120 requests a minute, so nothing can quietly burn through your quota
  • DORKOS_CORS_ORIGIN="*" no longer opens the whole API to every website. Logging in is off by default, so a wildcard meant any page you happened to visit could read your sessions and files and start turns of its own. DorkOS now ignores the *, says so at startup, and tells you to list the exact addresses you want to allow. Listing real addresses works exactly as before
  • Every response now says it must not be second-guessed about what kind of file it is, instead of only the handful of routes that said it themselves
  • Sending data through an extension's proxy could also fail for a reason nobody could see: DorkOS passed along the size of the original request while sending a slightly different one, so the outside service either rejected it or waited forever for bytes that never came. DorkOS now states the size of what it actually sends
  • Closed a hole where an uninstall could reach outside the marketplace's own folders. A package name is checked before DorkOS turns it into a folder on your disk, so a name dressed up as a path — ../../something-else — is refused instead of pointing the uninstall's delete at a folder that was never a package. The same check guards the install cache
  • Installing a package from a folder on your own disk now has to stay inside the folder DorkOS is allowed to reach, the same limit every other file feature respects. Previewing a package is held to the same limit, so a preview can no longer be used to ask what is in a folder elsewhere on the machine
  • The marketplace_install and marketplace_uninstall tools an agent can call now check the project folder you point them at, which the web app has always done and the tools did not
  • Your agents can no longer publish your machine to the internet. Opening a tunnel is one of the settings reserved for a person, but the button's own endpoint asked nobody, so anything on your machine that could reach DorkOS could open one. Closing a tunnel is still open to everything, on purpose — shutting off access should never be the thing that gets refused (DOR-1738)
  • If you have Require login turned on, turning Remote Access on now takes a person signed in to DorkOS. A script holding one of your API keys is refused, because a key proves the account and not the person. This is a deliberate narrowing: a script of your own that used to turn the tunnel on will be turned down, and you turn it on from the app instead (DOR-1738)
  • Saving any setting sent your stored secrets back over the wire: the reply carried your ngrok token, your tunnel sign-in, your MCP key and your cloud token in plain text, even when the setting you changed had nothing to do with them. Replies like that get written to logs and browser caches, and they travel the public internet when you use DorkOS from your phone. Saving now replies with a summary that says whether a key is set without saying what it is (DOR-1740)

[0.66.0] - 2026-08-29

Added

  • Sending a message to a room now tells you who it went to. The reply from the server names the agents the room asked to reply, and names the ones that will not be answering along with the reason — the back-and-forth hit its reply limit, that agent has already taken its turns in this exchange, or the agent is no longer set up on this machine. It is the room's first answer, not its last: if the room later changes its mind about one of those agents, it says so in the conversation the way it always has. A chat window can now explain why nothing is happening instead of just sitting there (DOR-786)

  • There is now a ceiling on how many turns your agents can start by messaging each other. Every route into an agent — another agent, an outside system, a webhook answering back, a scheduled task running — is counted in the same place, so two agents told to keep each other posted stop after a while instead of talking all night. It ships at 1,000 turns an hour for any one agent and 5,000 across DorkOS, the same allowance rooms have. When it stops something, it says which limit it was and the message stays in the agent's inbox to be read later. A turn DorkOS accepted but couldn't run, because every slot was busy, doesn't count against you. Change either number with dorkos config set relay.maxAgentTurnsPerAgentPerHour / relay.maxAgentTurnsTotalPerHour, or set them to null for no limit at all — but note that 0 stops your scheduled tasks too, since they start turns the same way (DOR-791)

  • Search results from your Claude Code and OpenCode chats now open on the exact message you searched for, the way channel results already do. The message sits in the middle of the screen, so you can read what was said around it. When DorkOS can't find the message, from an old link or a chat that has changed since, it opens the chat as before (DOR-1579)

  • Rooms that have files of their own now show them, in the room panel. The list is read-only for now, and every entry says who last changed it and when. Rooms without files of their own look exactly as they did.

  • Files can be opened straight from a room's list: text and markdown show in place, and anything that can't be shown — a picture, something too big, a link — says so plainly.

  • A room's file list hides the machinery by default — dotfiles, node_modules, and the folders your tools keep for themselves — with an eye button to show it again. The session Files panel already hid its own; now both do, and one button means the same thing in both.

  • Your agents can now find a room by its name, so "post that in #backend" or "put it in my DM with Ana" works without you looking up an id for them. They can also ask which of their rooms a particular person is in — which is how an agent checks whether a direct message with someone already exists instead of opening a second one (DOR-1610)

  • An agent can now see a room in full before it speaks: what the room is about, and everyone in it, with each person's @handle and whether they are a person or another agent. It only works for rooms the agent is actually in — a room you never added it to stays invisible, exactly as it was before (DOR-1610)

  • A scheduled task can now say which agent runtime it runs on — Claude Code, Codex or OpenCode — which model, and how hard that model thinks. Pick them under Advanced settings when you create or edit a task, or set them in the task's file, over the API, from the dorkos task create command, or by asking an agent to make you a task with them (DOR-1615, DOR-1347)

  • The task form tells you when a choice no longer works: a runtime you have not turned on, or a model that runtime does not offer — which is what you see if you pick a model for one runtime and then move the task to another. It never drops the choice for you (DOR-1615, DOR-1347)

  • A task that runs somewhere other than its agent says so on its row, and nowhere else — the tasks that simply follow their agent stay quiet (DOR-1615, DOR-1347)

  • Leave all three unset and nothing changes: the task runs on whatever its agent runs on, which is what every scheduled task did before. Setting one is an override, and clearing it goes back to following the agent (DOR-1615)

  • Run history now records what each run ran on, not what the task says today. Move a task to a different runtime next week and its old runs still report the truth about themselves (DOR-1615, DOR-1347)

  • An agent can merge its work into a room's files (DOR-1598)

  • Your Codex and OpenCode agents can now use the same DorkOS tools your Claude Code agents already have — posting in rooms, reacting with an emoji, reading back what was said, and remembering things between sessions. It is off to start with: turn on DorkOS tools in every runtime in Settings under Experiments, and it takes effect on those agents' next turn. Expect their turns to cost a little more, since they now carry a longer list of tools (DOR-1613)

  • When DorkOS cannot get its screen working, it now shows you a page that says so instead of leaving you with a black rectangle. It offers you three things: start over, reset the window and restart, or save a report you can send us. Your projects, your sessions and your agents are not touched by any of them — they live on your computer, not in that window (DOR-1453)

  • Agents can manage rooms when you switch it on — open a channel or a direct message, bring people and agents in, take them out, rename a channel, and leave a channel they are finished with. It is off for every agent until you turn it on, in that agent's own Tools settings. (DOR-1611)

  • This switch is a lock, not a hint. Unlike the four tool groups beside it, turning it off blocks the calls: the agent is refused and told to ask you. Only you can change it — an agent cannot turn it on for itself. (DOR-1611)

  • Whatever you switch on, an agent can never remove you from a room, and any room holding two agents holds you too. It cannot rename your home channel, and it cannot leave a direct message — those stay until you archive them. (DOR-1611)

  • An agent can name you and your other agents the way the app does — by @handle, or by the id it sees on a room's member list. You do not need a handle of your own for it to put you in a room. (DOR-1611)

  • An agent cannot rename a direct message, whichever way it asks: a direct message is named after who is in it. It can still write the topic. (DOR-1611)

  • If you launch DorkOS from the window that opens when you double-click the download, it now offers to move itself into your Applications folder, so updates keep working. An app run from that window can't update itself, which is the difference between getting new versions and quietly never getting one again. DorkOS asks once, takes no for an answer, and doesn't ask again unless you move it somewhere else. Mac only. (DOR-1495)

  • Your agents can decide when to speak. Right now, whatever an agent writes during its turn in a room gets posted, so it answers every single time it is triggered. With Agents decide when to speak on, it chooses instead: it can answer, it can just react with an emoji, or it can decide nothing needs saying and stay quiet — and its thinking stays in its own session rather than landing in the room. It works the same way in direct messages, where an agent could not choose before at all. It is off to start with: turn it on in Settings under Experiments, and for Codex and OpenCode agents turn on DorkOS tools in every runtime first (DOR-1613)

  • When you ask an agent something and it decides not to reply, the room says so — one line, "Ana read this and did not reply", so you are never left wondering whether it saw you. When nobody asked and an agent simply had nothing to add, the room stays exactly as it was and the "working" pill fades out saying it finished with nothing to add (DOR-1613)

  • A new setting caps how many messages one agent may post into a room during a single turn, so a single answer cannot arrive as nine bubbles. Three by default, in Settings (DOR-1613)

  • The Files section of a room now tells you when somebody has work the room hasn't got yet. Each agent in a room with files works in its own copy of them, and that copy can sit there for days: the badge names who is holding something, and hovering it says whether that is commits nobody merged or changes nobody committed. It shows up only when there is something to see (DOR-1599)

  • Agents working in a room's files are now told where they are and what to do there. Every turn in one of those rooms says which copy of the files the agent is working in, where the room's own copy is and that it must not write there, how far the room has moved on since it last looked, how to catch up before editing, and how to hand finished work back to the room (DOR-1599)

  • A room that has files of its own now shows them in the room panel, and you can open one to read it. Each file says who last changed it and when, and the room's ROOM.md sits at the top where you can find it (DOR-1600, DOR-1601)

  • You can now edit a room's markdown files in DorkOS and save them. Each save is one entry in the room's history, with your name on it, so the room can always say who wrote what. Other kinds of file are still read-only for now (DOR-1601)

  • If somebody else changes the same file while you have it open, DorkOS will not quietly write over their work or throw yours away. It tells you who got there first and what they said they were doing, and you choose: open their version, or save yours over it (DOR-1600, DOR-1601)

  • If somebody changes a room's files outside DorkOS — in a terminal, say — saving in that room stops until it is sorted out, and the room now says so instead of just refusing. It lists what changed and gives you two ways out: keep it all as one saved change, or throw away exactly the files you tick (DOR-1600, DOR-1601)

  • Saving a file that is too large now says so plainly, instead of answering with a server error that told you nothing you could act on (DOR-1600)

  • A room can now have files of its own: a folder everyone in the room works on together. It holds real files rather than attachments: scripts, notes, a whole small project. The room keeps one shared copy of them, and every agent in the room gets its own copy to work in, so two agents can be busy at the same time without writing over each other. Finished work goes back to the shared copy by merging, which is the only way anything lands there (DOR-1592, DOR-1596)

  • There is no button for giving a room files yet. Today it is a request to the DorkOS API, described in Rooms. Only you can make it, never an agent. Everything else here works normally once a room has files (DOR-1592)

  • An agent's copy of a room's files sticks around between conversations, so work in progress is still there tomorrow. DorkOS clears one away only when it has been untouched for a while and holds nothing the room has not already got. Anything unsaved or not yet handed in is left alone, and the room shows you who is holding it (DOR-1596)

  • New settings for all of this under Room files: whether rooms may have files at all, how long an untouched copy is kept, and how big a file, a room, and a ROOM.md may get. See Configuration (DOR-1591)

  • A room that has files of its own now has a ROOM.md. It is the room's front page, written by the people and agents in it. Whatever it says reaches every agent in that room, on every turn, so "how we work here" is written down once instead of repeated in every message (DOR-1593)

  • Agents are told plainly where those rules came from: they are additions to the agent's own instructions, from the room's members, and never a replacement. If a room's rule clashes with an agent's own, the agent follows its own and says so (DOR-1593)

  • Editing ROOM.md takes effect on the next thing an agent does, never in the middle of something it is already working on. And if the file grows past the size a turn can carry, agents are told it is too long to send rather than being handed part of it. Half a rule reads like a whole one (DOR-1593)

Changed

  • Agents in a channel no longer stop and think about every message they overhear. After you talk to an agent it keeps following the conversation for a while — that part is unchanged — but it now skips a message that plainly was not for it: one that named a different agent, or a reply in an exchange it is not part of. Before, each of those cost a full turn that ended in the agent saying nothing. In a channel with four agents, asking one of them a question used to wake all four.
  • Nothing goes missing. A skipped message still reaches the agent as background the next time it does reply, so it knows what was said while it stayed out of it.
  • A message that names an agent, and anything you say in a direct message, is never skipped. If you asked, you get an answer.
  • You can turn this off with dorkos config set rooms.responseGate off if you would rather every agent weigh every message.
  • dorkos.ai has a new home page. It opens with the short film about Dave, who gets three agents and stops doing everything himself, and then shows you the same thing working for real: scroll, and one conversation plays out in front of you, apps land in it as they are used, and the whole thing settles into a laptop at the end. The old page told you what DorkOS was. This one shows you (DOR-1562)
  • Underneath the film there is a shelf for short walkthroughs. The only thing on it today is the film itself, cut to fit a phone. The rest are empty frames, and the page says so on each one rather than pretending otherwise. You can leave your email on any tile and hear when the walkthroughs are made (DOR-1562)
  • The story page's footer now links to npm as well as GitHub, so it ends the way every other page on the site does (DOR-1562)
  • The list of features and the answers to common questions are still there, in the same words, further down the page where someone who has decided to check goes looking for them (DOR-1562)
  • The menu at the bottom of the home page now moves you around the page instead of pointing at other pages, and folds the rest of the site behind one button. Every other page keeps the menu it had (DOR-1562)
  • The newsletter signup boxes on dorkos.ai now turn away a flood of sign-ups coming from one place. Signing up works exactly as before. Someone sending attempt after attempt is asked to wait a few minutes (DOR-1581)
  • The rest of the public endpoints on dorkos.ai now turn away a flood coming from one place: sending feedback, checking on feedback you sent, the two links in our newsletter emails, and the three places DorkOS reports anonymous usage to. Everything works exactly as before. Someone hammering one of them is asked to wait a few minutes, and each endpoint is counted on its own, so a flood at one never blocks another. Unsubscribing and reporting usage get generous room on purpose, so a real person is never turned away (DOR-1586)
  • One thing changed in what we do with your IP address when DorkOS reports anonymous usage: we now count how many requests come from it in the last few minutes, so nobody can flood those endpoints. That count lives in memory for a few minutes and then it is gone. Your address is still never saved, never written to a log, and never passed to anyone else (DOR-1586)
  • ROOM.md and README.md now sit at the top of the file list, where you'd look for them. This applies to the session Files panel too.
  • The Files panel on a session and the new file list in a room are the same thing underneath now, so anything either of them learns, both of them get.
  • The permissions dial on a task now describes what will actually happen on the program the task runs on, instead of always describing Claude Code. And if you move a task to a program where its setting means "never stop to ask", the app asks you first rather than making the change quietly (DOR-1615)
  • Scheduled runs used to happen on Claude Code no matter what the task or its agent said, on whatever model came out of the box. They now walk the same ladder every other kind of turn walks: the task's own setting, then the skill file's, then the agent's, then your default for that runtime (DOR-1615, DOR-1347)
  • A task set to a runtime you have not turned on now fails its run and says so, naming the runtime and what to do about it. It never quietly runs somewhere else — a run on a different runtime is a different run, billed to a different account, and you would have had nothing on screen to tell you (DOR-1615)
  • A task that remembers its last run, and that you then move to a different runtime, starts a fresh conversation instead of trying to pick up one that lives in another program's history. Its earlier runs are all still there to read (DOR-1615)
  • One rough edge worth knowing: if a task remembers its last run and you change its model, the next run may carry on with the old model until that conversation is put down. Tasks that start fresh each time — the default — always use the model you picked (DOR-1347)
  • The Mac install steps now tell you to open DorkOS from your Applications folder rather than from the window the download opened, and say why it matters. (DOR-1495)

Removed

  • The bar across the top of the home page is gone. The floating menu at the bottom does that job now, and it moves you around the page. Every other page keeps its top bar (DOR-1562)
  • The old home page is gone, and so is what only it carried: the scrolling activity feed at the top, the cards about what goes wrong when you run agents by hand, the history of how DorkOS was built, and the closing note with the contact address in it. The address is still in the footer of every page (DOR-1562)

Fixed

  • Open the same chat in a second window and you now see the reply that is already being written, plus the Stop button, right away. Before, that window could sit blank and say "Live updates lost".
  • A chat link that leaves out the folder now shows the conversation and stays live. DorkOS looks up the folder the chat is running in instead of falling back to a default one. The name in the title bar can still be wrong on those links — that part is not fixed yet.
  • Opening a room while an agent is working in it now shows that straight away, instead of after up to ten seconds of looking idle. The room's details panel had a worse version of the same problem: opened over a different room, it could never see who was working and quietly drew nothing, which looks exactly like a room where nobody is working. It now knows the difference, and says "No one is working right now" only when that is actually true (DOR-786)
  • If an agent is taken out of a room while a message is still waiting for it, the room now says so. Before, the message was quietly dropped and nothing was written anywhere, so from inside the conversation it looked like the agent had simply ignored you (DOR-786)
  • When a scheduled task completes or fails, it now shows up in your activity feed right away, instead of only after the next refresh. This already worked on some setups; now it works on every setup (DOR-1573)
  • An agent you set up to run on Codex or OpenCode is now handed its Telegram and Slack messages on that program, the same one it already used in rooms and in the app. Before, every chat message went to Claude Code no matter what the agent was set to — the wrong program replying under the right agent's name, with nothing anywhere saying so. Which program owns a chat conversation is now decided the moment the conversation starts, from the agent's own settings, and written down, so every later message in that conversation goes to the same place (DOR-1614)
  • Chat replies now use the model and effort you chose for that agent on the program it actually runs on. A model name only means something inside the program that offers it, so a Codex agent no longer gets handed a Claude model name it cannot use (DOR-1614)
  • A chat message meant for a program this copy of DorkOS did not start is now turned down with a message saying which program is missing, instead of being quietly handed to a different one (DOR-1614)
  • Approving or denying a tool from a chat now reaches whichever program is waiting on the answer, not only Claude Code (DOR-1614)
  • The sidebar no longer flashes its phone layout for an instant when you widen the window (DOR-1558)
  • Screen readers now hear the "1 minute left" warning on a permission request even when the tab was in the background and the clock skipped a second (DOR-1558)
  • Fixed the address DorkOS gives Codex for the panel it uses to open things on your screen. It was fixed to one form of "this machine", which is not always the one DorkOS is listening on — so on some Macs, and inside Docker on Windows, Codex could not reach it at all (DOR-723)
  • The desktop app now tells you when an update fails to install, instead of quietly offering you a restart that cannot work. It writes down which version it was about to install, and the next time you open DorkOS it checks whether that version is the one actually running. If it isn't, the sidebar says so and offers a fresh copy to download — the one thing that always works. Your settings and your agents stay exactly where they are. Before this, an update could fail every time for weeks with nothing on screen but "Update ready — Restart" (DOR-1454)
  • Update errors are no longer hidden. A problem that showed up after an update finished downloading used to be swallowed by the "Update ready" card, which kept sitting there as if everything were fine. Now the card shows what actually happened (DOR-1454)
  • If the DorkOS app's screen ever fails to come up, the app now notices and fixes itself. It waits ten seconds for the window to draw; if nothing appears, it reloads. If that doesn't work it clears what the window has saved and reloads again, and after that it offers to restart DorkOS with graphics acceleration turned off — and asks first if your agents are still working, so nothing is interrupted without you. It counts across restarts, so a window that breaks every single launch still gets each of those tried once. Before this, a window that came up black simply stayed black: nothing retried it, nothing recovered it, and nothing wrote down what went wrong (DOR-1453)
  • The "DorkOS couldn't start" message used to tell you to check a folder that only exists on a Mac. It now names the folder on the computer you are actually using
  • Clicking "Restart to install" now actually installs the update. DorkOS used to step in front of the installer's own restart — shutting itself down its own way and quitting — which left the installer with nothing to install, so the app came back on the old version every time. It now gets out of the way: it asks about any agents still working, stops its background server, and then hands the restart to the installer (DOR-1455)
  • DorkOS clears out its own downloaded update once it has caught up with it. A copy left over from an earlier attempt used to be handed to the installer on every quit, for ever — and if you had installed a newer version yourself, that leftover could quietly put you back on the old one (DOR-1455)
  • If an update cannot install itself, DorkOS now recovers instead of sitting there. Handing the restart to the installer means shutting down first, and on the rare occasions the installer gives up without saying so, DorkOS starts itself back up within a few seconds and tells you the update did not go in (DOR-1455)
  • DorkOS notices when you install a new version while it is still running. It keeps running in the menu bar after you close its window, so dragging a new copy into your Applications folder used to change nothing: opening it just brought the old one back. Now it tells you the new version is there and offers to restart into it — and it makes sure a half-finished download from before cannot land on top of the copy you just installed (DOR-1455)
  • A missing or broken app file now shows up as a clear error in your browser's network tab instead of a silently blank window (DOR-1474)
  • Taking an agent out of a room no longer leaves the room pointing at it as the one that answers messages addressed to nobody in particular. Those messages used to reach nobody at all, silently. (DOR-1611)
  • If DorkOS can't reach its server when it opens, it now says so and keeps trying. Before, you got an empty window — or, if you had used DorkOS before, a full screen rebuilt from what your browser remembered last time, where none of the rooms, agents or buttons in it actually worked. The new screen tells you the server may still be starting, has a Try again button, and clears itself the moment the server answers (DOR-1475)
  • A server that has stopped answering without ever refusing the connection now gets the same screen, after fifteen seconds of silence, instead of leaving you in a window where everything you press hangs (DOR-1475)
  • Opening DorkOS while its server was down could also drop you into the first-run setup screens, as if this were a brand new install — and anything you answered there had nowhere to be saved. It doesn't do that any more (DOR-1475)
  • The little "working on it · 12s" counter beside a busy agent now keeps true time. It used to slip a fraction of a second further behind with every second it counted, so on a long turn it read short (DOR-1642).

Security

  • Leaving the folder out of a request no longer reads a chat that naming the same folder would be refused for. Every session request is now checked against your allowed folders, whether you named one or DorkOS worked it out.
  • With Require login on, deleting a scheduled task or cancelling a run now needs a person signed in to DorkOS. A program holding one of your API keys is refused, the same as when it tries to change how a task runs. The approvals guide now says plainly that if you leave agents running on their own and they can use a shell, you should turn on Require login — without it, one of those agents can approve its own scheduled task. (DOR-1574)
  • Connection errors from chat integrations can no longer write access tokens into log files.

[0.65.0] - 2026-08-26

Added

  • Three new pages at dorkos.ai/compare cover the coding agents DorkOS runs for you: Claude Code, Codex and OpenCode. These are not head to head pages. Each one says what the agent already does well on its own, then what having DorkOS around it adds, so you can see where the line sits before you install anything (DOR-1465)
  • Each page scores the agent honestly on its own merits, with a link to the maker's own documentation behind every claim and the date someone last checked it. Where an agent already does something DorkOS does, the page says so instead of quietly leaving it out (DOR-1465)
  • When the desktop app misbehaves, Help → Save Diagnostic Report now gathers everything we need to help you into a single file on your Desktop: the app's logs, your version numbers, where the app is installed, and what its last update did. Your saved keys and passwords are replaced with [redacted]. The logs go in as-is, so glance through them if you're unsure about anything in there. The same item is in the DorkOS menu on your menu bar, which still works when the window itself won't open. The logs now also record the moment DorkOS first reaches its own server, so "it opened but nothing loaded" is a question the file can actually answer (DOR-1456)
  • A skill file can now carry a schedule: block that says when it should run: a time, a timezone, a time limit, how much the run may do on its own, and what to send when it fires. DorkOS understands the block today. Actually running a skill from its own schedule: block arrives in a later change (DOR-1484)
  • A task that could not run because DorkOS was already at its limit now says so in that task's history, at the time it was meant to run, instead of disappearing without a word. It shows as "Skipped", with the reason, and it does not count against the task's success record (DOR-1482)
  • Five new pages at dorkos.ai/compare put DorkOS head to head with the tools people ask about most: GitHub's Agent HQ, Devin, Conductor, Emdash and Claude Squad. Each one says what the other tool is genuinely good at before it says anything about ours, and every claim links to the maker's own page with the date someone last checked it (DOR-1466)
  • The Conductor page settles which Conductor it means in its first sentence, and again further down. Three different products share the name, and only one of them is the Mac app for running coding agents (DOR-1466)
  • Where a rival does something better, the pages say so plainly. Emdash drives more agent tools than DorkOS does and can also run jobs on a schedule; Agent HQ reaches more screens and hands one job to three companies' agents at once; Devin can split a job across copies of itself. Those are all in the tables, in their column, marked done (DOR-1466)
  • Five more pages at dorkos.ai/compare, covering Omnara, Amp, Cline, Factory's Droid and DeepSeek Harness. Each one leads with what the other tool is genuinely good at, and every claim links to the maker's own page with the date someone last checked it (DOR-1467)
  • The DeepSeek Harness page is the one to read if you want to know who else is building what we are building. It runs Claude Code and Codex inside itself, which is our own headline trick, so its column is marked done exactly where ours is. We quote its makers calling it a developer preview instead of softening it, because that is how we would want our own early parts described (DOR-1467)
  • Where a rival is ahead, the tables say so plainly. Cline runs jobs on a cron line and already has agent teams with a shared task board and a mailbox, which is further than our rooms have got. Droid schedules work and plans big jobs into milestones that get checked. Omnara ships an iPhone app with an Apple Watch app beside it, and we ship neither (DOR-1467)
  • Two things worth knowing if you read about these tools elsewhere: Amp is no longer Sourcegraph's agent, having spun out into its own company at the end of 2025, and Omnara has moved on from being a phone command centre to being a platform for running agents. Both pages say so in their first few lines (DOR-1467)
  • Five more pages at dorkos.ai/compare. Three are for tools that are not really our rivals but keep coming up next to us: OpenClaw, Hermes Agent and Block's Buzz. Each one opens by saying plainly that it is a different kind of product, and then compares only the ground the two actually share (DOR-1468)
  • Two are for tools that no longer exist: Terragon, which closed in February 2026, and Roo Code, which closed in May. These pages are for people trying to work out where to go next, so they lead with what happened rather than with us, and both say out loud where DorkOS is the wrong answer. The Roo Code page says it plainly: if what you miss is the agent inside your editor, the tools its own team named will serve you better than we will (DOR-1468)
  • The Roo Code page corrects something most write-ups get wrong. Roo Code's own shutdown notice names two alternatives, Cline and ZooCode, and Kilo Code is not one of them, however often you see it called the official replacement. The page says who named whom, so you can choose on the facts (DOR-1468)
  • The Buzz page is the one to read if you want to know where someone else is ahead of us. Buzz can hand an agent a new instruction while it is still working, and our rooms make you wait for the turn to end. It says so in the table, twice (DOR-1468)
  • Where a fact could not be checked, the pages say so instead of guessing. Terragon's shutdown notice went offline with its website, so that page explains where the notice went, links an archived copy, and quotes no prices we could not confirm (DOR-1468)
  • Compare is now in the menu at the bottom of dorkos.ai, right after Features. The comparison pages have been there for a while, but you had to already know they existed, or find the link in the footer (DOR-1504)
  • The menu now shows you where you are. Reading a comparison, Compare is the word that stands out; reading a feature page, it is Features (DOR-1504)
  • The Compare page opens with a picture of DorkOS instead of only words, so you can see the thing being compared before you read about it (DOR-1504)
  • A new page at dorkos.ai/compare for Grok Bot, xAI's cloud coworker. It is not the same kind of tool as DorkOS, so the page says that first and then compares only the ground the two share: work that carries on while you are away, and checking in from your phone (DOR-1514)
  • The page answers the question the pricing pages make hard work. Grok Bot does not come with every Grok or Cursor plan: xAI lists SuperGrok Plus and SuperGrok Heavy, and on the Cursor side Pro+, Ultra and Teams. Plain SuperGrok at $30 and Cursor Pro at $20 are not on that list, and the page says so with the current numbers (DOR-1514)
  • It is honest about the row where Grok Bot is ahead of us. Several of its bots run at once, message each other and hand a job along, and that works today, while our rooms are still marked early (DOR-1514)
  • It is also clear about what Grok Bot is not for. The eight jobs xAI uses to describe it are office work: outreach, recruiting, expenses, a weekly report. Working through the code in your own repository is not one of them (DOR-1514)
  • Marketplace packages can ship scheduled tasks. Until now only a Shape could set one up; a plugin, agent template, or skill pack can now do it too, so a package that does recurring work brings its own schedule instead of leaving you to write one by hand after installing. (DOR-1487)
  • A package sets up a schedule in one of two ways: it points at a skill it already ships, which puts the timing right in that skill's own file, or it describes the work itself, which creates a new skill for it. Either way you end up with a normal skill file you can read, edit, or delete. (DOR-1487)
  • Before you install, the confirmation screen now lists the scheduled tasks any package will set up — not just a Shape's. It shows how often each one runs and what it is allowed to do while nobody is watching. (DOR-1487)
  • Removing a package removes the scheduled tasks it created. Nothing it set up keeps running once it is gone, and skills you wrote yourself are never touched. (DOR-1487)
  • Any skill can now be a scheduled task. Add a schedule: block to a skill's settings and DorkOS picks it up — no moving the file, no special folder. Take the block out and it goes back to being an ordinary skill. DorkOS watches your agents' .agents/skills/ folders and a new ~/.dork/skills/ folder for schedules that do not belong to any one project (DOR-1485)
  • Nothing DorkOS finds in a file ever starts running on its own. A schedule found on disk waits on the Schedules page until you approve it, whether or not the file says it is switched on. Once you approve it, it stays approved as long as the file does not change; edit what it does or when it runs and it comes back for another look. That means a schedule cannot arrive on your computer through a git pull or an installed package and quietly start running (DOR-1485)
  • A schedule that DorkOS cannot read now says so instead of going quiet. If the schedule settings have a typo, or the timing is written in a way DorkOS cannot make sense of, the schedule shows up waiting for you with the problem written out — naming the setting and what is wrong with it. The skill itself keeps working everywhere else; only the schedule half is held back (DOR-1485)
  • Agents you add while DorkOS is running have their schedules found straight away. Before, DorkOS only looked at each agent's folders when it started up, so a schedule that came with a newly added agent stayed invisible until the next restart (DOR-1485)
  • Approving a schedule no longer rewrites its file. Approving is a decision about the schedule, not a change to what it does, so DorkOS leaves the file exactly as you wrote it — including the comments, spacing and settings it does not recognise. If you do change what a schedule does, DorkOS writes that change into the schedule settings themselves rather than alongside them (DOR-1485)
  • Schedules that come from an installed package are left alone. You can switch one on or off, but DorkOS will not edit the package's own copy — that change would be shared by every agent using the package and would disappear at the next update (DOR-1485)
  • Saving a schedule's file no longer makes you approve it again. Many editors save by replacing the file rather than changing it, and installing a package update does the same; DorkOS now recognises that the schedule came back unchanged. Genuinely changing what a schedule does, or when it runs, still brings it back to you for a look (DOR-1485)
  • Removing the schedule settings from a skill now switches its schedule off, even if DorkOS was not watching at the moment you did it. It stays in your list, switched off, with its history intact (DOR-1485)
  • Schedules that came with an installed package are found. They arrive as a shortcut into the package's own folder, and DorkOS was quietly skipping every one of them, so a package could ship a schedule that never appeared anywhere (DOR-1485)
  • DorkOS now records your approval of a schedule directly, rather than working it out from whether the schedule is switched on. Switching a schedule off, or removing the agent it belongs to, no longer has any bearing on whether it counts as approved — so a schedule you never approved cannot end up running because something else switched it around. Schedules you had already approved stay approved when you upgrade (DOR-1485)
  • When a schedule is waiting because its file changed, DorkOS says so in its own voice instead of appearing to quote an agent that never said it (DOR-1485)
  • Editing a schedule that is already running keeps it running. Changing what it does, or when it runs, no longer sends your own schedule back to you for approval a few minutes later. If an agent makes the change instead of you, it still comes back for a look (DOR-1485)
  • The features list on dorkos.ai now includes seven things that shipped without ever getting written down: your Inbox, alerts that follow you to your phone, schedule approvals, reply limits, the activity feed, billing an agent to a different Claude account, and Shapes (DOR-1516)
  • The comparison pages ask six new questions, and they are the ones people actually run into. Does it use the plan you already pay for? Can an agent book itself a repeating job, and do you get a say? Can you stop your agents talking to each other all night? Can you read the code and skip making an account? Can you say yes from your phone? Is there one list of everything waiting on you? (DOR-1516)
  • DorkOS now keeps a searchable copy of what was said in your Claude Code chats — including the ones you ran from the plain claude command line, outside DorkOS. It reads the chat files Claude Code already writes and never changes them. Nothing in the app searches this yet; the search box itself comes next (DOR-681)
  • It only keeps what was said: your messages and the agent's replies, in plain words. Command output, file contents, and the agent's private notes are left out on purpose, so the copy stays small and a search does not fill up with machine noise (DOR-681)
  • A few kinds of chat are left out for the same reason. Conversations a helper agent had with itself are not yours, so they are skipped. So are the throwaway chats our own test runs produce (DOR-681)
  • The copy stays up to date without re-reading everything. DorkOS remembers how far into each chat file it got and picks up from there, and it notices a chat that was half-written when it looked — so a message that was still being saved is read whole the next time round, never cut in half (DOR-681)
  • Your agents remember what they learn. Every agent now keeps a short notes file of its own, beside its instructions and its boundaries. It reads those notes at the start of every conversation it joins, and writes down what is worth keeping. Tell an agent something in a private chat, and it still knows in a team channel next week (DOR-632)
  • Every note the agent saves records where it learned it, like "(noted in #product, 2026-08-24)". The agent does not choose that part, so a note always says where it came from, and a note that turns out to be wrong tells you which conversation taught it (DOR-632)
  • The notes file is plain markdown you can open in any editor, or from the agent's profile. Fix a line to correct it. Delete a line to forget it. It holds about 8,000 characters, which is small on purpose: the notes travel with every turn, so when the file fills up the agent is asked to tidy it rather than grow it (DOR-632)
  • Anything in the notes file can come up in any conversation the agent joins, including channels with other people in them, so never put a secret in it. The file explains this rule at the top, and it is the only thing that crosses between conversations. The conversations themselves never do (DOR-632)
  • Agents are now told the plain truth about how they run: each conversation is one session of the agent, sessions share the notes file but not the conversation, and an agent asked about work it cannot see should say so rather than guess. That last one is the difference between an agent that forgot and an agent that was never there (DOR-632)
  • You can now ask DorkOS where something was said, and get an answer back in one request: GET /api/search?q=… looks through your rooms and your Claude Code chats at once and returns the best matches, each with the sentence it was in and the words you searched for marked. The search box you will click is still on its way (DOR-684)
  • Results come back ranked together rather than sorted by where they came from, because "where did we talk about the scheduler" does not know whether you said it in a channel or to an agent (DOR-684)
  • Searching matches whole words, including their other forms: look for dogs and you will find "dog", "dogs" and "DOGGED". A piece of a word, like ogs, finds nothing (DOR-684)
  • Each result carries what it needs to be opened later — which chat or room it was in, where in it, who said it, and when (DOR-684)
  • The searchable copy of your Claude Code chats now covers every Claude Code account on your computer, not just the one DorkOS happens to be pointed at. It used to read a single account and say nothing about the rest — about half the chats on the computer where this was found, and less on a computer with more accounts. Nothing in the app searches this yet; the search box itself comes next (DOR-682)
  • Which accounts get read is the same list DorkOS already uses everywhere else: the one you picked, the one your terminal points at, ~/.claude, and any account you added in settings. Nothing is guessed — DorkOS does not go hunting for folders that merely look like accounts (DOR-682)
  • If one account's folder cannot be read, DorkOS names that folder in its own log and keeps what it already knows about the account rather than throwing it away. There is nothing to see in the app; the note is for whoever goes looking in the server log (DOR-682)
  • Search your messages. Press ⌘⇧F (Ctrl+Shift+F on Windows and Linux) and type what you remember somebody saying. DorkOS looks through your channels and direct messages, and your Claude Code, Codex and OpenCode conversations, shows you the sentence it found with your words picked out, and takes you to the conversation it was said in. (DOR-685)
  • The box tells you what it can and cannot see. Before you type anything it says which conversations it searches and which it does not, that tool output and file contents are never searched, and that it matches whole words — so ogs will not find dogs, but dog* will. Nothing about the edges of search is left for you to discover by getting no results. (DOR-685)
  • ⌘K now offers "Search messages for …" as its last row, carrying whatever you already typed. ⌘K still finds things by their name — an agent, a channel, a conversation — and the new box finds them by what was said inside them. They stay two separate boxes on purpose. (DOR-685)
  • A conversation whose project folder has been deleted still turns up, and still opens: you can read what was said, and DorkOS tells you the folder is gone rather than failing. (DOR-685)
  • The searchable copy of your chats now covers your Codex conversations too — live ones and ones you archived. DorkOS reads the files Codex already writes, so chats you had in DorkOS and chats you had in the plain codex terminal are both in there. You can search these from the search box (⌘⇧F) (DOR-683)
  • Only what was actually said gets saved: your words and the agent's replies. The setup text Codex and DorkOS slip into a message before sending it — the project notes, the environment block, the widget instructions — is left out, so searching does not turn up things nobody said (DOR-683)
  • Codex records every message twice in its own files, once for the model and once for the on-screen log. DorkOS reads one of the two, so a chat you had once shows up once (DOR-683)
  • If Codex has never run on your computer, this quietly finds nothing and says nothing (DOR-683)
  • The searchable copy of your chats now covers your OpenCode conversations too. With this, every runtime DorkOS can run is in there — your rooms, Claude Code, Codex and OpenCode. You can search these from the search box (⌘⇧F) (DOR-688)
  • DorkOS reads them without ever opening OpenCode's own file. Each pass takes a copy, reads the copy, and deletes it. OpenCode keeps its sign-in details in the same file as its messages, so DorkOS reads only the three tables that hold conversations and cannot reach the rest — no account or password can end up in the search index, and DorkOS never starts OpenCode in the background to read them (DOR-688)
  • Anything you actually typed is kept as you typed it, including a key you happened to paste into a chat. That is your own conversation, and DorkOS treats it the way it treats every other word in it (DOR-688)
  • Conversations a helper agent had with itself are left out, and so is a conversation OpenCode has deleted. If you have never used OpenCode, nothing happens and nothing is reported (DOR-688)
  • A conversation you are in the middle of gets picked up properly. OpenCode writes an answer a piece at a time over as much as a minute, so DorkOS keeps re-reading anything touched in the last quarter of an hour until it settles — otherwise you could search for a sentence your agent said and never find it (DOR-688)
  • If DorkOS cannot read OpenCode's file at all, searches now say so instead of quietly returning less, and the other chat sources keep working rather than going quiet alongside it (DOR-688)
  • If OpenCode's file is briefly unreadable while DorkOS is copying it, DorkOS waits rather than deleting conversations that are still there (DOR-688)
  • Your agents can now look things up in any room they are in, not just the one they are answering in. Ask in one channel about something that was decided in another, and the agent finds it and tells you which channel it came from. It can also list the rooms and direct messages it belongs to, so it can say where it has been and read a conversation back (DOR-1532)
  • An agent only ever finds what it was there for. It sees the rooms it is a member of and nothing else, and in each one it starts from the day it joined — so adding an agent to a long-running channel does not hand it the years of conversation that happened before it arrived. A room it is not in returns exactly what a room that does not exist returns: nothing at all (DOR-1532)
  • Agents are told when to use this. The same short note that tells an agent it is one session of itself now adds the next step: if you are asked about something said in another room you belong to, go and look, and if you cannot find it, say so rather than guess (DOR-1532)
  • Your agents keep working even if the thing storing their memory stops working. Memory now lives behind a swap point, so it can come from somewhere other than the notes file DorkOS ships with. If whatever you choose starts failing, DorkOS goes straight back to the notes file, mentions it once in the log, and your conversations carry on as normal — a memory problem can never end a chat. Worth knowing: while DorkOS is falling back, an agent reads the notes file rather than the backend that stopped answering, so notes kept only in that backend are out of view until you fix it and restart (DOR-1533)
  • A new setting, memory.provider, says where your agents keep what they remember. It starts as builtin: one small notes file beside each agent, on your machine, which you can open in any editor. Only you can change it, and a change takes effect the next time DorkOS starts (DOR-1533)
  • The plugin build now packages SQLite alongside the plugin, picking the build that matches whichever Obsidian you run it on. Every one of them is checked against a recorded fingerprint each time it is used — not just the first time it is downloaded — so bytes that are not what they claim to be stop the build instead of shipping (DOR-1563)
  • The plugin now carries the rest of what searching your history needs: a strictly read-only path to the copy the DorkOS app keeps. Read-only is the guarantee, not a detail — it will not create a database, change one, or add to one, so it can never disagree with the DorkOS app about your own data. Where there is nothing to read, it stays out of the way rather than quietly finding nothing (DOR-1563)
  • Anything read that way respects exactly the same limits as the DorkOS app. If your DorkOS asks people to sign in, the plugin works out who owns it from the database rather than assuming it is you (DOR-1563)
  • The desktop app now shows a notification when an agent proposes a scheduled task, or asks to do something it cannot undo — like deleting a schedule. Both used to show nothing at all on the desktop: the only sign was a quiet count on the bell, so you had to be looking at the right window to notice. Click the notification to open the thing you need to decide. (DOR-1570)
  • When an agent asks to do something it cannot undo and nobody answers, DorkOS now reaches your phone after the same delay a proposed schedule uses — the "escalate to my phone after" setting under Notifications. Before this, that kind of request could sit for its full two hours with no signal outside the app. (DOR-1570)
  • You can now search what was said from inside Obsidian. ⌘⇧F opens the same box as the DorkOS app, over the same history, showing you the same things — and ⌘K offers the way in, the same as it does in a browser (DOR-1563)
  • It appears only where there is something to search. On a machine where DorkOS has never run, or in an Obsidian this build of the plugin has no database engine for, the box and the ⌘K row are simply not there — rather than being there and finding nothing (DOR-1563)
  • The box tells you the one way it differs there: in Obsidian it shows what the DorkOS app has already indexed, so anything said while only Obsidian was open turns up once you have opened the app. Your channels and direct messages are current either way (DOR-1563)
  • Scheduled tasks can now pick up where they left off. Flip on the new Sticky toggle when you create or edit a task, and every run resumes the same conversation instead of starting cold — so your agent can say things like "since I last ran, here's what changed." It keeps working across restarts, not just back-to-back runs. Leave it off (the default) and each run stays its own fresh, isolated session, exactly as before. Every run still shows up in the task's history, and opening one takes you to that conversation with everything from the runs before it. If a run is still going when the next one is due, that next run is skipped rather than talking over itself. (DOR-1571)
  • If you build or run a custom memory backend behind DorkOS's memory provider seam, DorkOS now tells you when it stops using yours — instead of quietly falling back to its own local notes and only saying so once in the server log. A banner in the app names the backend and says why, and GET /api/system/memory reports the same thing for anyone scripting against it. This only matters if you've registered a backend of your own; a stock DorkOS install always uses its built-in memory (DOR-1560)
  • When that fallback already has notes on it and DorkOS injects them into a turn, the affected agent is now told those notes come from a different local store, not its usual memory, so it does not assume anything missing was never saved. This does not cover every fallback yet — the more common case, an agent's very first turn on the fallback, stays silent for now (DOR-1560)
  • Click a search result from a channel or direct message and you land on that message, not just somewhere in the conversation. It scrolls to it and marks it for a moment, so you can see straight away which line answered you — and the address in your bar points at it too, so a refresh or a link you paste to somebody lands in the same place (DOR-687)
  • Search again without leaving, and the conversation moves to the new message. Picking a second result in the room you are already reading takes you there, the same as the first one did (DOR-687)
  • Pick a result that was said inside a thread and the thread opens with that reply on screen, rather than leaving you on the collapsed "3 replies" line (DOR-687)
  • If the message is not among the ones the conversation currently has open, DorkOS says so in one quiet line instead of dropping you at the bottom and letting you wonder. Everything said there is still there (DOR-687)
  • Results from your Claude Code, Codex and OpenCode chats still open the conversation rather than the exact line. The numbering search keeps for those chats counts only what was said, so it does not line up with everything the chat shows — and landing on the wrong line would be worse than landing in the right chat. That one is still to come (DOR-687)

Changed

  • Skill files now take one set of options, everywhere. The settings that used to work only at the top of a command file work at the top of any skill: a hint for its arguments, a model, an effort level, and running it in a forked helper. DorkOS also reads the rest of Claude Code's options now, including which tools to keep away from a skill, which files it applies to, and which shell runs its inline commands. A skill you wrote for Claude Code needs no changes to be read correctly here (DOR-1484)
  • Task run history is now trimmed every hour rather than only when DorkOS restarts, and the history is indexed for the way it is read. A task that runs every minute was adding about 43,000 rows a month to a server that stays up, and every one of them was scanned each time you opened the runs list (DOR-1482)
  • A package can never switch its own scheduled task on. Whatever the package asks for, the task waits for you to approve it before it runs for the first time, and a package cannot give itself permission to work unsupervised. (DOR-1487)
  • A package will not overwrite a skill of yours. When one tries to create a scheduled task where you already keep something — a skill, a draft, notes, anything at all — DorkOS keeps what is yours and tells you, rather than replacing it. (DOR-1487)
  • If you change when a packaged scheduled task runs, or what it is allowed to do, updating that package puts its own settings back — and now says so, naming the task, instead of letting your change disappear quietly. (DOR-1487)
  • Rooms, Connections and the Slack adapter are no longer labelled earlier than they are. Rooms in particular is the screen DorkOS opens on, so calling it experimental had stopped being true (DOR-1516)
  • Every comparison page got shorter and plainer. The verdicts are a few sentences instead of a paragraph, the questions and answers are trimmed to the ones people ask, and the pages stop explaining themselves with metaphors (DOR-1516)
  • Comparison pages used to open by telling you that searching the other way round lands on the same page, which is a fact about search engines rather than anything you wanted to know. They now open with a sentence about the two tools (DOR-1516)
  • Two ownership changes we had wrong: Cursor is owned by SpaceX, which bought Anysphere in August 2026, and Grok Bot is made by SpaceXAI. That also means the two share an owner, so Grok Bot coming with some Cursor plans is one company bundling its own product. Both pages now say so (DOR-1516)
  • The pages are clearer that these agents are not only for code. They write the code, and they also send the email, plan the week and book the call (DOR-1516)
  • We stopped calling DorkOS "mission control" or a "cockpit". It is simpler than that: one place for every agent you run. The website, the docs, the app and the install instructions all say it the same way now (DOR-1517)
  • The feature page for running Claude Code, Codex and OpenCode together moved from /features/multi-runtime-cockpit to /features/every-agent-one-place. The old address still works and sends you to the new one, so any link you saved or shared is safe (DOR-1517)
  • The scheduler now calls its work scheduled tasks, and Schedules where a label has no room. The word "task" was doing two jobs: the thing you put on a timer, and the to-do list an agent keeps while it works on your message. Now only one of them is called a task, and the tab, the page, the dialogs, the command palette and the activity feed all say the same word (DOR-1490)
  • The guide is rewritten around what actually changed underneath: any skill becomes a scheduled task when you add a few lines of timing to it, and DorkOS finds it wherever your skills live. It covers where DorkOS looks, why nothing runs until you approve it, what happens to schedules you already had, and the one gotcha worth knowing before you flag a skill as "do not pick this up on your own" (DOR-1490)
  • The /flow guides now show the new format and the one step that turns it on: approve flow-drain on the Schedules page. Approving is what arms and enables it together — no file edit required first (DOR-1490)
  • Your scheduled tasks live with your skills now. The first time you start this version, DorkOS moves every one of them out of its old folder and into ~/.dork/skills/ (or your project's .agents/skills/), and rewrites the settings at the top of each file into a schedule: block. Nothing to do, nothing to click — and the ones you had already approved stay approved and keep running (DOR-1486)
  • New scheduled tasks land in the same place, in the same shape, whether you make one in the app, an agent proposes one, or a Shape sets one up for you. There is one kind of file now: a skill, which may or may not have a schedule on it (DOR-1486)
  • A schedule that a Shape sets up now waits for you before it runs, the same as one DorkOS finds in a file. Applying a Shape means you want the arrangement; saying yes to a job that runs on its own is a separate answer (DOR-1486)
  • Text somebody pastes into a room is neutralised a little more thoroughly before an agent reads it. DorkOS already wraps other people's messages in a marked-off block so an agent treats them as words rather than instructions, and a handful of DorkOS's own internal markers could previously survive inside that block. They no longer can. Nothing you type looks different and the same words reach the agent — they just cannot pretend to be part of DorkOS's own instructions any more (DOR-632)
  • A note that quotes somebody else stays a quote. Every note records the conversation it was written in, and that stamp is written by DorkOS rather than by the agent — so a note saved in a busy channel cannot come back later claiming to be something you asked for. Only what you say in a direct chat sets your agent's standing preferences (DOR-632)
  • Anything said in a room can be found straight away, instead of after the next few-minute catch-up. Claude Code chats still take up to five minutes to show up, because DorkOS has to notice the file changed rather than being told (DOR-684)
  • The Slack connection now runs on the latest Slack toolkit (Bolt 5 and Web API 8). Setting up and using Slack is unchanged (DOR-1528)
  • DorkOS now runs one version of the library it uses to check that data has the right shape, instead of two. Three parts of the app — marketplace packages, skills, and the harness that projects them into your agents — were a major version behind, so every place those parts met the rest of the app needed a hand-written translation kept in step by hand. One less way for a package or a skill to be read differently depending on which door it came in through. (DOR-1527)
  • The app loads a little less code. The marketplace screens and the rest of the app each pulled in their own copy of that library, so both were shipped to your browser; now there is one. (DOR-1527)
  • A few messages about a broken schedule: block in a skill file are worded differently, because the wording comes from that library. A cron that should be text but is a number now reads "Invalid input: expected string, received number" where it used to say "Expected string, received number". Same problem, same field named — just the tail of the sentence. (DOR-1527)
  • "Preview what your agent will see", on the profile, now shows the agent's saved notes as well — in the same place, and inside the same wrapper, a real turn puts them in. The preview is the whole prompt again rather than a tidied version of it (DOR-632)
  • The terminal built into DorkOS moved up to a new major version of the library that draws it. Scrolling back through what a command printed now uses the same scrollbar Visual Studio Code uses, and the terminal itself loads faster — the library shrank by about a third. Everything you do with it is unchanged: open a shell, type, scroll, keep several tabs side by side (DOR-1529)
  • We updated two of the libraries the app is built on to their latest major versions: the calendar component and the pinch-to-zoom, wheel-zoom, and drag-to-pan controls on canvas images. Nothing changes for you — both still look and work the same (DOR-1531)
  • The A2A gateway now speaks version 1.0 of the Agent-to-Agent protocol, and still accepts the version 0.3 calls it accepted before. Outside agents written against either version can reach your agents, and each request is answered in the version it was asked in. Agent Cards say so directly: they list your endpoint under both versions. Your stored A2A tasks carry over as they are — there is nothing to convert. (DOR-1530)
  • Agent Cards are laid out the way version 1.0 describes: the single url and preferredTransport fields became a supportedInterfaces list, and security became securityRequirements. If you read cards from DorkOS with your own code rather than an A2A client library, this is the one change to look at. (DOR-1530)
  • A version 0.3 caller that sends a message without saying blocking: true now gets the task back right away instead of waiting for the answer. That is what version 0.3 always said should happen, and DorkOS now follows it. If a call that used to wait no longer does, add "configuration": { "blocking": true } and it waits again. (DOR-1530)
  • Slack works through a corporate proxy. Set HTTP_PROXY or HTTPS_PROXY the way you always have, and DorkOS picks it up (DOR-1542)
  • Listing tasks over A2A stays fast as tasks pile up. DorkOS used to read every task it had ever stored to hand back a single page of fifty; it now reads only the page you asked for. (DOR-1548)
  • We updated the library behind the app's menus, dialogs, dropdowns, switches, tabs and slide-up panels. It had been held back because we thought the update would make the bottom sheet snap shut instead of sliding away — it doesn't. Nothing changes for you (DOR-1539)
  • The comparison pages at dorkos.ai/compare stopped hedging about DorkOS. They used to describe DeepSeek Harness as the closest thing to what DorkOS "is trying to be", which reads like a product that has not decided what it is yet. DorkOS is something. The pages now say so, and every other soft phrase about our own product went with it (DOR-1557)
  • Every verdict, answer and explanation on those pages got shorter again. Nothing was dropped: the facts, the credit we give other tools, and the places we say they beat us are all still there, in fewer words (DOR-1557)
  • "Which one is for you" now opens with the reasons to pick DorkOS, instead of reaching them after a panel about the other tool. It reads that way on a phone and on a desktop, and the DorkOS ticks are green so the two lists are easy to tell apart at a glance (DOR-1557)
  • An agent that proposes a schedule, or asks to delete one, is now told to say so in its reply instead of quietly stopping. It used to report the task as created and end the turn, leaving you to discover the approval on your own. In a DorkOS session it can also offer to open the Schedules panel for you. (DOR-1570)

Removed

  • The "Timezone" setting under Tasks is gone. Every schedule already carries its own timezone, so this one never had any effect — changing it did nothing at all. Set the timezone on the schedule itself, as you always have (DOR-1482)

Fixed

  • Clearing a scheduled task's time limit, display name, timezone, or cron no longer breaks the task's file. DorkOS used to write the cleared field as the word null, which it could not read back — after that the task stopped syncing, and every later edit to it quietly failed to save. (DOR-1481)
  • Editing a task that runs only on demand now works. Saving one from the task form cleared its cron, which the database refused, so the edit failed — after the file on disk had already been rewritten, letting the half-finished edit apply itself seconds later. (DOR-1481)
  • When DorkOS cannot save a task's file — the disk is full, or the file is read-only — editing the task now fails with a message naming the file it could not write. It used to report success, then put the old values back a few minutes later with nothing to explain why. (DOR-1481)
  • A task whose file DorkOS cannot read or make sense of now says so when you edit it, and names the file to open. Editing one used to quietly succeed while the file stayed broken, so a damaged task had no visible symptom at all. (DOR-1481)
  • A time limit DorkOS cannot read, like 10 minutes, is now refused when you edit a task, exactly as it already was when you create one — through the task form, the API, and the tasks_update tool an agent uses. It used to be accepted and then removed the task's time limit altogether. Write it as 10m. (DOR-1481)
  • Canceling a task from another AI tool now actually stops the agent. Before, DorkOS replied "canceled" and the agent kept working — and kept costing you money — until it finished on its own. The cancel is now passed to whoever is running the turn, and you are only told it stopped when something confirms it did. If nothing can be stopped, you get an error saying so instead of a comfortable lie (DOR-791).
  • When an outside tool waits two minutes for an answer and gives up, DorkOS now asks the agent to stop too, and writes to the server log whether that worked (DOR-791).
  • The comparison tables now work on a phone. Each point becomes its own block, with both answers stacked underneath and labelled, so every word fits on screen and there is nothing to scroll sideways. Before, most of the second column sat off the edge of the screen with nothing to hint at it. On a tablet or a computer it stays a table, with the row label pinned as you scroll across and the edge fading to show there is more to see (DOR-1465)
  • Small grey text on the comparison pages is darker, so table headings, links and labels are easier to read and meet accessibility contrast standards (DOR-1465)
  • Links like "More on this" and "Back to the table" now land where they should. They used to jump to a spot hidden behind the top bar (DOR-1465)
  • The Cursor comparison now says that Cursor has a phone app, a web dashboard and a Slack integration, which it gained since the page was written. You can also reach the comparison pages from the site footer (DOR-1465)
  • Long web addresses in the "how we checked" list now wrap onto the next line. On a narrow phone one of them used to stretch the whole page sideways (DOR-1465)
  • The Codex page no longer says its source code is simply open. Only the command-line tool is: the cloud service, the apps and the models are not, and the page says so (DOR-1465)
  • A skill that lists its pre-approved tools the way Claude Code allows, as a YAML list instead of one line, no longer goes missing. Before, that one detail stopped the whole skill from loading (DOR-1484)
  • One option DorkOS does not recognize can no longer hide a skill. A line like shell: zsh is skipped over now, and the skill keeps working everywhere else (DOR-1484)
  • Starting a second copy of DorkOS no longer marks the tasks another copy is running as failed. Booting the app while a dev server or the desktop app was mid-task used to end those runs in the record, throw away what they actually did, and send you a "task failed" notification for work that was going perfectly fine. Now only the copy in charge of the schedule ends a run, and only when it can show nobody is still working on it (DOR-1482)
  • The limit on how many tasks run at once now counts every task, however it was started. With the message bus on, that limit counted nothing, so a slow task on a short schedule could pile up as many runs at once as the schedule allowed — and the "running now" count read zero the whole time (DOR-1482)
  • An agent changing a task's schedule now changes when it actually runs. Editing a schedule through an agent used to update what the screen showed while the old schedule kept firing, and deleting one left it running against a task that no longer existed — in both cases until you restarted DorkOS (DOR-1493)
  • A task that came round while DorkOS was starting up can no longer lose its turn without a trace: the record of a run and the note that its turn was taken are now written together, so a crash mid-way leaves the turn free for next time (DOR-1482)
  • A comparison page for a shut-down product no longer invites you to "see it for yourself", which led to a stub page or a read-only repository. Those pages now offer to show you what is left of it instead (DOR-1468)
  • The banner on a shut-down product's page used to promise that the details came from the company's own announcement, linked at the bottom. That is not always true: a company's website tends to go down with the company. The banner now says what the page covers, and the sources list says where we actually looked (DOR-1468)
  • The light gray text on dorkos.ai is darker now, so it is easier to read. It is the color used for the small print all over the site: breadcrumbs, table column headers, card labels, captions, and the source lists under the comparison tables. Against the site's cream background it was too faint to meet the accessibility standard for readable text, and most of it is only nine to twelve pixels tall, which is exactly the text you can least afford to squint at (DOR-1503)
  • The credit lines on the story page were the opposite problem. That page is dark, and the same gray was being used on it, which made it fainter still. Those lines now use the warm cream the footer already uses on dark backgrounds, so they are comfortably readable too (DOR-1503)
  • The floating menu no longer sits on top of what you are reading. As you scroll down a long page it steps out of the way, and it comes back the moment you scroll up, reach the top, or arrive at the end. Before this, it could cover a link and swallow the click (DOR-1504)
  • The menu fits on a phone screen again now that it holds six words. On the narrowest screens it drops "home", which the logo at the top already does (DOR-1504)
  • If you are moving through the menu with the keyboard, it now waits for you. It used to slide away mid-tab and drop you back at the start of the page (DOR-1504)
  • Installing a package with a broken schedule now fails immediately, naming the package's schedule and what is wrong with it. It used to install fine and then turn up later as a task that could never run, with nothing to explain why. (DOR-1487)
  • We were quietly claiming that scheduled work happens "while you are asleep or away". DorkOS runs on your own computer, so it needs that computer awake. The pages now say a job starts at a set time without you pressing anything, which is the true version (DOR-1516)
  • A plugin you install into a project can now offer you its scheduled tasks, whichever coding agents that project uses. Before this, a plugin that shipped a scheduled task was only set up for Claude Code on a normal project, and DorkOS does not look for schedules there — so the job sat on your machine and was never offered to you. Now a project plugin's scheduled tasks are put where DorkOS looks, and it asks whether you want each one to run. Plugins installed for your whole machine, rather than into one project, still cannot offer schedules this way (DOR-1518)
  • dorkos harness sync now explains the set-up steps that need explaining. A line used to say only what was linked and where, which reads as arbitrary when the folder belongs to a coding agent you do not use. Each such line now says why it is there (DOR-1518)
  • If two things wanted the same name — a task called digest and a skill called digest — the skill keeps its name and the task moves in beside it as digest-migrated, and shows up waiting for you so you can see what happened. Nothing is overwritten (DOR-1486)
  • A task file DorkOS cannot read is left exactly where it is, and appears on your Schedules page with the file's path and what is wrong with it, instead of being quietly left behind in a folder nothing looks at any more (DOR-1486)
  • A Shape can no longer write its schedule over a skill you wrote yourself that happens to have the same name. Your file stays exactly as it is, and applying the Shape tells you which schedule it skipped and why, instead of reporting one it never made (DOR-1486)
  • Your task templates keep their timing when they move. Before, a template that had moved offered no schedule at all when you picked it (DOR-1486)
  • An agent you add while DorkOS is running brings its scheduled tasks with it straight away, instead of waiting for the next restart (DOR-1486)
  • If one place DorkOS reads from cannot be read, search still answers with everything else and tells you one of its sources is behind — rather than failing the whole request or quietly returning a short list (DOR-684)
  • Sending a message can never fail because the search copy could not be updated. The room keeps your message either way, and the next catch-up adds it to search (DOR-684)
  • Searching one room is fast again. Looking inside a single room was taking seconds where searching everything took milliseconds — the database was reading the room the long way round. Agents reading their own room history were on that same slow path (DOR-684)
  • A very short search is turned down properly now. Typing a single letter with a comma after it looked long enough to run, and it was the slowest kind of search there is (DOR-684)
  • Posting into a room the search copy has never seen no longer waits while the whole room is copied. That catch-up happens in the background instead (DOR-684)
  • When your Slack token stops working — you removed the app, the token was revoked, or it never had the right permissions — the Slack connection now stops and tells you which problem it hit. It used to miss that the failure was permanent and keep retrying forever against a token that was never going to work again, so the connection sat there looking busy while every message quietly went nowhere. It also now shuts down cleanly, instead of leaving background timers running against the dead connection (DOR-1528)
  • Asking the A2A gateway to wait for an answer now really waits. It used to reply the moment it handed your message to the agent, so a caller that asked for the finished result could get a task still marked working and never see the answer arrive. (DOR-1530)
  • Agent Cards now go out in the format the protocol specifies. A few fields were being sent in DorkOS's own internal shape instead — the bearer-token security scheme in particular — which a strict A2A client could refuse to read. (DOR-1530)
  • OpenCode sessions you started in a subfolder now show up under the project they belong to. If you ran opencode in something like my-app/packages/api, that conversation was missing from my-app — and from every other project too, so there was nowhere to find it. It now appears everywhere a project's sessions are listed: the sidebar switcher, the agent's Sessions page, the command palette, the embedded sidebar, and the Recent list. Each session still shows the folder it is actually running in. Claude Code sessions in subfolders have the same blind spot in their own listing; that fix is tracked separately. (DOR-674)
  • An OpenCode agent that was working in a subfolder no longer looks idle. Its last-active time and its daily run counts skipped those sessions. (DOR-674)
  • Canceling a task from another app no longer loses the agent's reply. If the agent finished answering while the cancel was still on its way, DorkOS threw the answer away, told you the task could not be canceled, and left it stuck part-way — with no way to ask for the answer again. It now keeps the reply and finishes the task. (DOR-1547)
  • Asking one agent for its tasks now gets you that agent's tasks. A request to /a2a/agents/{agent} listed every agent's tasks instead, complete with their message history — and looking one up by its id from that endpoint worked too, whoever it belonged to. Both now answer for the agent in the address, and anything else reads as not found. Ask the fleet endpoint /a2a when you want the whole list. (DOR-1546)
  • A handful of small timing bugs on the website: the account-activation page no longer flashes an empty form for a split second while it checks your code, and pages that adapt to phone screens now get it right on the very first frame instead of correcting themselves after (DOR-1541)
  • The DorkOS plugin for Obsidian builds a bundle that can actually start. Two things in it were broken before the plugin got as far as loading: a patch the build applies missed some of the code it was meant to cover once the bundle was minified, and the database library worked out a file path the moment it was loaded rather than when it was needed. Both are fixed, and the build now stops with a message naming what it missed instead of quietly producing a plugin that throws on startup (DOR-1563)
  • Scheduled tasks no longer bury you in "could not be delivered" notifications. Every scheduled run was talking to itself: each thing the agent said got sent back to DorkOS as if it were a brand new job, failed to make sense, and turned into a failure notice. One run produced 279 of them. Runs now send that stream nowhere, because nothing was ever reading it. (DOR-1567)
  • A scheduled task is now told it is a scheduled task. When the message bus was on — which it is by default — the agent started with none of the usual briefing: what job this is, what schedule woke it, and that nobody is around to answer questions. So it would stop and ask. Both ways of starting a run now hand over the same briefing. (DOR-1567)
  • A scheduled run that stops to ask permission now gives up after ten minutes instead of waiting four hours. It already worked that way on one of the two paths a run can take; now it works on both, so a single unanswered prompt can no longer hold a run open for the rest of the day. (DOR-1567)
  • A scheduled run that fails is now clickable in the run history, so you can open the transcript and read what went wrong. Finished and cancelled runs already linked to theirs; the failed ones — the runs you actually want to read — did not. (DOR-1567)
  • A task an agent schedules for you is now a real task. It used to make a task with no file behind it and no owner, so nothing kept it in step with your project and its runs happened in the wrong folder. The agent is now asked where the task belongs — under itself, or in your DorkOS folder — and the task is written there like any other. (DOR-1568)
  • An agent that asks to schedule a task for an agent DorkOS has never heard of is now told so, instead of quietly making a task nobody owns. (DOR-1568)
  • A time limit an agent sets when it schedules a task is now kept. The tool accepted the setting and then threw it away, so the task ran with no limit at all. (DOR-1568)
  • Deleting a task through an agent now deletes it. Only the entry was removed, so the task came back on its own a few minutes later, after the agent had already said it was gone. (DOR-1568)
  • Editing a task now refuses a field it cannot change, and says which one. Anything DorkOS did not recognise was thrown away and the edit reported as a success — which is how an agent came to believe it had filed a task under itself when nothing had happened. Where a task lives is decided when it is created; to move one, delete it and create it again. (DOR-1568)
  • When you tell your agent a standing rule in a one-to-one chat — "we deploy on Tuesdays, never Fridays" — it now writes that down before the turn ends, so a later conversation in a channel knows it. Some models used to answer "got it" and save nothing, and the next conversation had no idea. (DOR-1564)
  • Search keeps filling even when one of the places it reads breaks. If DorkOS could no longer read a folder or a program's history — the files moved, or it lost permission to open them — everything from that one place quietly stopped being added to search, and nothing told you. Now your search results say that part of your history could not be read, nothing already found is thrown away, and every other place carries on being added. (DOR-709)
  • The app stays responsive while search catches up. Adding to the index used to hold up everything else until it finished, which is most noticeable the first time you run DorkOS, when there is a whole history to get through. It now works in small pieces and gives the app a turn between each one, so it fills in the background instead of in your way. (DOR-702)

Security

  • Only a person can run a scheduled task on demand. An agent could ask DorkOS to run a task right now — including one that was parked, waiting for you to approve it — which walked straight around the approval. You can still run a proposed task once from its approval card to see what it does. (DOR-1481)
  • Searching your own machine reaches every room on it, including rooms your agents opened between themselves and never invited you to. That is deliberate — it is your install, and search is how you find something you half-remember — but it is worth knowing, because it is more than the room list shows you (DOR-684)
  • Your own chats with agents stay yours. An agent searching gets only the rooms it is actually in, and only from the point it joined — never what was said in a room before it arrived, and never anything from your Claude Code sessions (DOR-684)
  • Asking about something you are not allowed to see gets exactly the same answer as asking about something nobody ever said, so a search can never be used to find out that a private room exists (DOR-684)
  • We updated the libraries DorkOS is built on and closed almost every open security warning: 109 of them before, 6 after. Nothing you do changes — this is the plumbing underneath. Among the ones now fixed: a flaw that let a web page read files the dev server was told to keep private, a flaw in the desktop installer's archive handling, and a bug that could leak the credentials used to publish a release (DOR-1526)
  • The six that remain are in Electron, which the desktop app is built on, and in one archive-unpacking helper that has no fix published yet. Both are held for a separate update so they can be tested on their own (DOR-1526)
  • With Require login turned on, only a person signed in to DorkOS can approve a scheduled task, turn off its safety prompts, or start one running. Before, anything holding one of your personal API keys counted as you for these — so a program on your machine could set up a task that runs on its own, at full power, without you ever seeing it. Approving a task now needs a real sign-in, the same bar DorkOS already uses for its other sensitive actions. Setting up tasks from the dorkos command line still works; a task it creates now waits for you to approve it in the app. (DOR-1569)

[0.64.0] - 2026-08-24

Added

  • An agent can now be told which Claude account to bill. Open its profile, click Runs on, and pick an account — the same way you pick its model. The row shows where the setting came from: green when the agent simply follows your default, amber when you chose something else here, and one tap on that chip puts it back. The row only appears where the choice is real: on Claude Code, and only once this machine knows of more than one account.
  • Settings → Runtimes now lists agents that bill somewhere other than your default, alongside the ones that run on a different runtime or model. If an agent points at an account that isn't registered on this machine, it is listed in amber with a warning — it quietly bills to your default until you fix it — and clicking the row opens that agent so you can.
  • An agent pointing at an account that isn't registered also turns up under Needs attention in the sidebar, the same as one pointing at a runtime you haven't connected. You find out where you happen to be looking, rather than only when you open Settings.
  • If DorkOS can't read your account list at all, it now says so instead of quietly acting as though you have no accounts — so a temporary hiccup no longer paints every agent amber.
  • You can now bill one chat to a different Claude account without changing anything else. Before you send the first message, open the runtime chip in the status bar and pick an account — it applies to that chat and nothing after it. The menu says so: "This session only. Locked once the first message sends." Picking an account here only affects this chat — the account every new chat starts on lives separately, in Settings → Runtimes → Claude Code as Default account.
  • The menu also names what "Default" would actually charge, so leaving it alone is still a choice you can see. If the agent working in that folder is set to bill a particular account, that is the one it names — not whatever your machine falls back to otherwise.
  • Scheduled tasks now start at your power level. Create a task without picking one and it runs at whatever you chose for new chats, worked out for the agent that will run it. If you never chose a level, nothing changes — a task starts where scheduled runs have always started, able to edit files and stopping for anything riskier. Picking a level on the task itself still wins, an agent still cannot choose one for you, and a task file on disk still cannot hand itself the never-ask level.
  • dorkos task create now says so when the task it just made will run without ever stopping to ask, so a schedule armed from your default power level is never a surprise.
  • Set different reply limits for one room, or take its limits off entirely. Each room can now carry its own version of the four automatic-reply settings — how many replies in a row agents may trade, how many of those any one agent may send, how many replies the room may run in an hour, and whether it is limited at all. A room you have not touched follows Settings, and clearing a room's setting puts it straight back to that. One thing a room cannot switch off is the hourly limit across all of DorkOS: a room can opt out of its own limits, not out of your bill. These are yours alone to change — nobody else in a room can lift a limit and leave you with the bill (DOR-1429)
  • Choose how much agents may say to each other, in Settings → Rooms. Four numbers decide how far a conversation between agents can run before the room steps in: how many replies they may trade in a row, how many of those any one agent may send, how many replies a single room may run in an hour, and how many all your rooms may run in an hour together. Each field says what it is by default, and your own message always starts the counts over. Until now the only way to change any of this was editing a file by hand (DOR-1430)
  • Turn the limits off, when you want to watch two agents work something out. One switch at the top of the panel does it, and it says plainly what happens: agents can reply to each other without limit, and the Stop button is the only brake. Your numbers are kept while it is off, so turning it back on restores exactly what you had (DOR-1430)
  • Set limits for one room, from the panel beside it. A room can follow your settings, keep its limits when you have turned yours off, or run without limits of its own. Each number shows the default it would use, so an untouched room still tells you what bounds it, and clearing a number puts the room straight back to following Settings. Only the person who owns this DorkOS can change a room's limits, and anyone else is told so plainly (DOR-1430)
  • A Control Center to see and change your agents' power at a glance. Tap the ⚡ in the top bar (or press ⌘⇧L, or search "Control Center") and one panel opens: how much new sessions may do before they ask, whether your agents can talk across projects, whether "stop asking about this" sticks, whether agents stay warm between messages, and how many scheduled tasks run at once. Setting where new sessions start applies to new sessions — conversations already running keep what they have.
  • The Control Center's Exceptions list shows anything that runs at a different power than your dial: a runtime with its own default, a live session, a task, or an integration. Each line takes you straight to where you can change it. A tidy setup shows a calm "everything follows your dial" instead.
  • The first time you open DorkOS after this update, it asks one plain question: run at full power, or keep being asked first? Choose full power in one click, or keep being asked — your call, and it sticks. Unlocking turns it all on at once — agents act without stopping to ask, they message each other across every project, and scheduled runs get the same freedom. Prefer to stay hands-on? "Keep asking me first" changes nothing, and the question never comes back. There's also a "Customize…" link if you'd rather set the pieces yourself in the Control Center. If opening up your agents to talk doesn't finish, DorkOS tells you plainly and leaves everything else on — nothing is turned on behind your back, and nothing you chose is quietly undone.
  • Limit automatic replies is now a switch in the Control Center (DOR-1446). Tap the ⚡ in the top bar and it sits with the other power switches, so letting your agents talk freely — or reining them back in — is one click instead of a trip through Settings. Turned off, it tells you plainly what that means: agents can reply to each other without limit, and the Stop button is the only brake. The numbers behind it still live in Settings → Rooms.
  • Setting up DorkOS for the first time now includes a step to choose your power level. Right after the readiness check, and before you meet DorkBot, you get the same plain question everyone else does: run at full power in one click, or keep being asked first. Pick either and setup moves on; not ready to decide? Choose "Decide later" and DorkOS asks again once you're settled in. Nobody is opted into anything without answering, and the choice is a normal part of getting started rather than a surprise later.
  • Installing the Mac app now shows you the two steps that let it update itself later: drag it into Applications, then open it from there (DOR-1458)

Changed

  • Agents in a room can now hold a real conversation. Each agent may answer up to ten times in one back-and-forth instead of once, chains may run thirty replies deep instead of three, and the hourly ceilings on automatic replies are much higher — 1,000 per room and 5,000 across DorkOS. Your own message still starts every count over, and the room still says so when it stops an exchange. Existing installs get the new numbers too, unless you had already changed them: a number you set yourself is left exactly where you put it (DOR-1428)
  • New setting rooms.turnLimitsEnabled. Turn it off and agents may answer each other with no limit at all — no reply ceiling, no hourly cap. The Stop button becomes the only thing that ends a conversation, and every turn of it costs money, so it is meant for watching two agents work something out rather than for leaving on. It ships on, and turning it off and back on restores the numbers you had (DOR-1428)
  • Setting an agent to full autonomy now reads green everywhere it shows up — the dial, the word in the status line, the mark beside a chat in an agent's Sessions list, the Settings note, the confirmation dialogs. It used to read red, which told you off for choosing the thing DorkOS is for. That green meets WCAG AA contrast in light mode; dark mode is unchanged.
  • Red is now saved for real problems. Nothing about a permission setting you chose on purpose is painted in the colour that means "something is wrong", so when you do see red, it means something.
  • Ask first now shows a small padlock instead of a shield, because it is the setting that holds the agent back. It stays plain and uncoloured — nothing shames the careful choice.
  • The banner about integrations and scheduled tasks running unattended is now a plain note rather than a warning. It reads "Running unattended at full power:" and names them, and it still cannot be dismissed while it is true, with the same links to Integrations and Tasks.
  • The Settings note under Where new conversations stop for you now says "New sessions run at full power" instead of "New sessions run without asking", and still offers change to put it back.
  • Open an agent and go to Sessions: a chat running at full power is marked with a green lightning bolt instead of a red crossed-out shield, and hovering the bolt reads "This chat runs any command without asking". Expanding that chat's details shows a green Permissions line to match, so the mark and the words never disagree. The DorkOS sidebar in Obsidian gets the same green bolt.
  • The telemetry question is now a one-time pop-up you answer and are done with, instead of a bar that sat across the top of the app until you got round to it. Nothing about the question or your answer changed — DorkOS still sends nothing unless you say yes, and "See what's sent" still shows the exact payload (DOR-1431). If DorkOS can't save your answer, it tells you and leaves the choice on screen so you can try again, instead of quietly losing it.
  • DorkOS asks you at most one of these one-time questions per launch, and never while first-time setup is still on screen. Anything else it wants to ask waits for a later launch (DOR-1431)
  • It won't ask again about something you already settled somewhere else — in another window, with dorkos telemetry, or by editing your config by hand (DOR-1431)
  • New setups keep their agents warm between messages. A Claude Code chat holds its agent open instead of starting a new one for every message, so replies from your second message on come back about four times faster. Existing setups follow automatically in an upcoming update. This used to be an experiment you had to find and switch on; it is now simply how DorkOS works. The cost is memory — up to about a gigabyte per waiting agent, twelve at most, and an agent you have not used in five minutes shuts itself down. Nothing about what your agents may DO changes: the same program runs with the same permissions, and every action is checked exactly as before. Two things worth knowing. If you had deliberately turned this off, the update turns it back on — DorkOS cannot tell an off you chose from the off it shipped with, because the two look identical on disk. And while the setting waits for its switch in the app, the way to change it is runtimes.claudeCode.persistentSession in ~/.dork/config.json (dorkos config set works too); a switch for it is coming.
  • Four scheduled runs at once, on new setups, instead of one. A slow overnight task no longer holds up every schedule queued behind it. Existing setups follow automatically in an upcoming update, and the same caveat applies: if you had set it to one on purpose, the update raises it to four, because a one you chose and the one that shipped are the same number on disk. Anything from one to ten still works — it is scheduler.maxConcurrentRuns, in Settings under Tools.
  • New scheduled tasks and new integrations now start at your own power level instead of always "accept edits." If you set your default to full power, you no longer re-pick it every time; if you kept "ask first," nothing is quietly turned up. You still confirm once when you point one at full power, since no one is watching it run.
  • When an agent is set to ask first, its permission popover now shows a quiet "Limited — unlock" pointing at the Control Center, so opening things up is one step away. It is a gentle nudge, never a warning — asking first is a fine choice.
  • An agent's progress notes no longer eat its reply allowance (DOR-1434). "How many replies from one agent" now counts turns: if an agent says "looking at the migration" and "found it" before it answers, that is one reply, not three. Agents that tell you what they're doing used to run out of room three times faster than agents that said nothing until the end, which was backwards. Messages posted before this change still count one each, so nothing about your existing rooms is re-scored.
  • Clearer wording for full autonomy. It turns off the approval prompts — the cards that halt each action until you tap Allow — but your agents still ask when something genuinely needs your call, and still follow anything you have told them to check with you about. The old copy ("runs without asking") made it sound like full autonomy would ignore your instructions and never ask you anything, which was never true (DOR-1431)
  • Saving a task now checks the schedule before anything else, so a schedule DorkOS cannot read is refused on the spot with a message naming what is wrong — instead of being accepted and then quietly never running. That covers times it cannot read and timezones it does not know. A schedule that simply never comes round is still allowed — that is how you write a task you only ever run by hand.
  • Installing on a Mac now greets you with a proper DorkOS install window instead of a generic gray one. Open the download and you get a clean, near-white window with the DorkOS mark, the app icon on the left, your Applications folder on the right, and an arrow between them showing you exactly what to drag where (DOR-1457)

Fixed

  • With Keep agents warm between messages turned on (Settings → Experiments), the very first chat after starting DorkOS now gets its fast second reply too — it no longer quietly restarts its agent once.
  • An agent that was still starting up when you pressed Stop can no longer talk over it. Its answer used to arrive anyway — once, a 7,000-character reply landed 23 seconds after the room said everything had been stopped. That message is now turned away instead of posted, and the next thing you say is answered normally (DOR-1313).
  • If you turn on the experimental setting that keeps an agent warm between messages (runtimes.claudeCode.persistentSession, off by default), the answer to a note you add mid-turn now stays in the chat. Before, when you sent something while your agent was still working, the agent often answered it in a separate turn. That answer did not reach the chat until you reloaded the page. It now arrives in the turn you are watching (DOR-1314)
  • Changing a chat's permission mode while its agent is finishing up no longer hangs. DorkOS now gives every behind-the-scenes request a deadline and tells you when one couldn't be delivered (DOR-1301)
  • Sending a message to a chat whose settings changed no longer gets stuck waiting on the agent to confirm. The settings that went through are applied, the ones that didn't are left for the next message, and your message starts either way (DOR-1301)
  • Reloading plugins after installing something from the Marketplace now finishes instead of waiting forever on an agent that has already stopped listening. If the agent doesn't confirm, you're told the reload may still have worked — instead of being told to send a message you already sent (DOR-1301)
  • Asking DorkOS for a chat's messages now works without knowing the chat's folder — and when a chat truly can't be found, it says so instead of answering with an empty list.
  • Pressing Stop now responds the moment you click — the button says it's stopping, and clicking again doesn't send the request twice. Before, a Stop that took a few seconds to take effect left the button looking untouched, so a second (or third) click fired off extra requests with nothing on screen to explain the wait.
  • Context you add for an agent now survives a DorkOS restart. The note that says it was added is never left pointing at words that vanished — they are saved the moment you add them, and the agent gets them with your next message (DOR-1324).
  • Cleaned up a false alarm in the server log: when an agent's background process was tidied up at the exact moment you added context, DorkOS logged it as a fault. It was normal, your words were kept, and it is no longer reported as a problem (DOR-1325).
  • If DorkOS is force-quit while it is keeping agents warm, the next start now cleans up the agents the old one left running. They no longer sit in the background using memory. Closing DorkOS the normal way already shut those agents down. It was the abrupt endings that did not, like force-quitting the app, a crash, or a hard restart. That mattered, because a dozen warm agents can hold on to several gigabytes between them. DorkOS only ends a process when it can prove it started that exact process itself, so nothing else on your machine is touched (DOR-1310).
  • Pressing Stop while OpenCode is stuck no longer strands the messages you had queued up. Before this fix, if OpenCode didn't answer a Stop request, your typed-but-unsent messages could stay stuck until OpenCode finished on its own, sometimes indefinitely. Now DorkOS waits about 3 seconds for OpenCode to respond, then gives up and returns your messages to the message box so you can send them again (DOR-1299).
  • Pressing Stop while you were editing a queued message no longer pastes that message's text into the box twice.
  • Pressing Stop right after rewriting a queued message now always keeps your rewrite, even if the save to the server hadn't finished yet.
  • A question your agent asks now shows its real time-to-answer right away, instead of showing zero until the page refreshes.
  • When dorkos room export loses its connection part-way, it no longer leaves a stray .dorkos-export-… folder next to the file you were saving. The export still stops and tells you it is not complete, and the copy you already had is still untouched — now the scratch folder goes away too
  • Coming back from a thread after scrolling up now lands you exactly where you were. The list quietly measures older messages a moment after you stop scrolling, and it used to remember your place from just before that — so returning could leave you a message off. It now waits for the view to settle before it remembers.
  • Clicking "Always Allow" on a file change now sticks. It used to stop the asking only until the chat restarted. After that the agent asked again, while the status line still read "Accept edits". Your chat now remembers the change you made, so the status line and the agent finally agree (DOR-1316)
  • One click on one file can never turn the asking off for good. Moving a chat to full power still takes the confirmation step it always did (DOR-1316)
  • Steer a task from a second window while it is running, and the chip no longer claims the task had already finished. It says what is actually true: something else is running this task, so your message is waiting in line (DOR-1315).
  • Fixed the to-do list sometimes getting stuck showing old status or counts, even after refreshing. A task's progress update could miss the task it was meant for and quietly do nothing — or, rarer, land on the wrong task instead.
  • When DorkOS restarts while an agent is waiting on you, the question it asked is now saved as unanswered instead of disappearing. Reopen the conversation and you can see it was asked, and that nobody got to answer. That agent's work stopped with the restart, so ask again to pick it back up (DOR-1439)
  • Messages you queued and context you added for a chat that was deleted while DorkOS was closed are now cleared out the next time it starts, instead of sitting in your database forever. DorkOS only clears a chat it can confirm is gone — anything it cannot check is left exactly where it is (DOR-1436)
  • When Stop cannot reach an agent, the log now says so instead of reporting a turn it never stopped. (DOR-1425)
  • Stop now reaches an agent that is still starting up. Pressing Stop in the first moments of a turn used to stop nothing: the agent finished the whole answer anyway, and you paid for it. (DOR-1424)
  • An agent you stopped no longer adds reactions to the conversation. It can react again the next time you give it a turn there. (DOR-1426)
  • A question or form an agent is waiting on now keeps one deadline wherever you look at it. The time limit rides along with the prompt, so the countdown keeps ticking down instead of starting over whenever the card is redrawn (DOR-1442)
  • Pressing Stop while you were editing a queued message no longer loses the message you had parked in the box, even if the message you were editing had already been sent by then (DOR-1442)
  • Mac releases now include the delta data auto-updates need, so future updates download only what changed instead of the whole app (DOR-1449)
  • Tell you when a stricter permission setting has not reached the reply that is already running. Turning approvals back on while an agent is mid-reply used to look like it took effect immediately, even when the running reply kept the looser setting it started with. The setting is still saved, and now the cockpit says plainly that it starts on your next message. Claude Code and Codex both report it (DOR-1435)
  • The Mac app opens again. Version 0.63.0 could start to a black window that never loaded anything — the app was packaged with one piece of missing information, and it stopped before it could draw its first screen. Updating gets you a working app, and the build now refuses to package one with that fault in it (DOR-1448).
  • If DorkOS can't save the panel it remembers between visits — some browsers block that, and so does the app in a few situations — it now starts fresh with a loading screen instead of showing you nothing at all.
  • When DorkOS can't start its background server, the message it shows now points at the folder your logs are actually in.
  • The "Stop, and put your queued messages back?" question now closes itself once those messages have all been sent, instead of sitting there asking about zero messages and blocking the message box (DOR-1443)
  • That question also stays in the chat you asked it in. Switch to another chat while it is open and it no longer follows you there, where saying yes would have stopped the wrong agent (DOR-1443)
  • Switching to a model that has no thinking-effort setting now clears the effort from the status line, so it stops showing a level you can no longer see or change (DOR-1445)
  • Stopping an agent no longer leaves a red error behind. The agent shut down cleanly and your next message worked fine, but the chat still recorded the stop as something going wrong (DOR-1320)
  • After an update, DorkOS now always loads the new interface. Before, your browser or the desktop app could hold on to a saved copy of the old one, which could leave you looking at a blank window until you cleared it by hand.
  • Stopping an agent gives you the composer back sooner. A stopped turn used to spend up to eight more seconds asking the agent for its context and usage numbers after the work had already halted, so the screen looked live while nothing was happening. Those numbers now refresh on your next turn instead (DOR-1319)
  • If DorkOS can't finish starting, you now see what went wrong instead of a black window. The page says it couldn't start, gives you a Try again button, and keeps the technical error under Technical details with a Copy details button — so you can send us the exact error rather than a screenshot of nothing. This works everywhere DorkOS opens: the desktop app, the cockpit you start from the command line, and a plain browser tab.
  • Our docs and website said scheduled agents keep working after you close your laptop. That was not true. DorkOS runs on your own machine, so closing the laptop stops it. The copy now says what really happens: your agents run on a schedule without you at the keyboard, for as long as DorkOS is running. Want them running around the clock? Put DorkOS on a machine that stays on, like a desktop, a home server, or a cheap cloud box (DOR-1478)
  • The checkmark on a completed step in a generated timeline is now visible. It used to disappear — a green icon on the same green background.
  • The two lines you can put at the top of a skill to say who may run it now work everywhere, not just in Claude Code. user-invocable: false keeps a skill out of the slash menu, so background-knowledge skills stop crowding the list you pick from in Codex sessions. disable-model-invocation: true keeps a skill out of the listing your agents read, so an agent won't reach for a job you meant to start yourself — you can still hand it that skill by name. Both lines read the plain-English booleans people actually write — no, off, yes — and a value DorkOS cannot make sense of leaves the skill visible instead of hiding it (DOR-1489)
  • Saving, deleting, or switching off a schedule no longer wipes the to-do list in an open chat. Any schedule change anywhere used to reset a working agent's checklist mid-answer.
  • Run history stays accurate after you press "Load more". A run that finished while you were reading it used to keep spinning forever on the earlier pages, and a run that started while you were reading could show up twice.
  • Run history now says so when it can't be loaded, instead of showing "No runs yet" for a schedule with a long history.
  • The on/off switch on a schedule goes back to what the server actually has when the change doesn't save, instead of claiming a schedule is off while it keeps running on its timer. It also stops accepting a second flip until the first one lands.
  • Deleting a schedule clears its runs from the health dot in the top bar right away, rather than leaving a red count for runs that no longer exist.
  • A schedule whose cron expression DorkOS can't read can no longer be saved. The form already marked it in red; now Save waits until you fix it.
  • Opening a setup link now lands on the right step instead of bouncing to the start. A link that points straight at a later setup step also no longer breaks the app if it names a step that no longer exists — it just opens setup at the beginning.
  • Editing a scheduled task's file on disk now takes effect right away. Changing when a task runs used to update what the screen showed while the old schedule kept running, until you restarted DorkOS — and a task file you dropped in by hand got a card in the cockpit but never actually ran.
  • A task whose file disappears now stops running, and starts again when the file comes back.
  • A typo in a task's schedule can no longer stop DorkOS from starting. That one task sits out until you fix it, and everything else runs as normal.

Security

  • When you give a scheduled task permission to run without asking, an agent can no longer quietly change what that task does and keep the free pass. If an agent rewrites the task's instructions, its schedule, or its name, DorkOS puts the normal approval prompts back — so it can't turn a task you trusted into one you didn't. A task's name also can't hide extra instructions any more. Editing the task yourself still keeps the setting you chose.
  • An agent can no longer briefly run a scheduled task at full power by editing it through the tool API. When a task is allowed to run without asking and an agent changes what it does — its instructions, its schedule, or its name — DorkOS now puts the normal approval prompts back the instant the edit lands, instead of leaving a short gap where the next run could fire at full power. Editing a task that only toggles it on or off, or renames nothing, is untouched. This closes the same escape on the tool API that was already closed for edits made in the app.
  • Settings you turn down to give your machine room can no longer be turned back up by an agent. Nine of them were missing that protection: whether your Claude Code chats keep an agent awake between messages (which can cost about a gigabyte each), how many scheduled runs may go at once, how large an upload may be and how many files it may carry, whether DorkOS updates the agent files inside your projects on its own, and which four sets of DorkOS tools your agents are told about. An agent asking to change any of those now gets a plain refusal and nothing is written.
  • DorkOS already refused to undo choices like these when it had to rebuild your settings file after a problem — it just did not refuse an agent that asked on purpose. Now the two rules match, and a check in the build keeps them matching.
  • You still change every one of them yourself, in the same place as before. Warm agents and how many scheduled runs go at once are in the Control Center (⌘⇧L, or Ctrl+Shift+L); the four tool switches are in Settings → Tools. The upload limits and the project-file updates have no switch yet, so dorkos config set is the way there — and now the choice you make there sticks.

[0.63.0] - 2026-08-22

Added

  • If you talk to an agent from Telegram or Slack, you now hear when it stops. Before, only two things reached you: a reply that crashed, and somebody pressing Stop. If the agent paused to ask you to approve something, or was already busy with other work and never picked your message up, nothing was sent. From the chat it just looked like the agent had gone quiet, sometimes for a long time. Both of those now arrive as a short message, in the same plain words the agent's own conversation in DorkOS uses. You still answer an approval in DorkOS itself. The chat message only tells you there is something waiting, and never includes what the agent wanted to run. Group chats stay quiet by default, as before. And if the agent is busy elsewhere, the chat is told once rather than once per message you send, so a burst of messages will not fill your phone with the same notification. (DOR-1359)
  • Stop one agent without stopping the rest. Open the live view in a channel and every agent that is working now has its own Stop button. The others keep going, and the channel says who stopped what. An agent that is only waiting to start here can be stopped too, and that just means this channel stops waiting for it (DOR-1352).
  • A room now tells you what an agent is doing, not just that it is doing something. While one agent works, the line just above the box you type in reads "Kai is reading standup.md" instead of "Kai is working on it", and it keeps up as the agent moves from one thing to the next (DOR-1351)
  • Click that line and each agent gets its own row saying what it is on right now, so with two or three of them working you can see which one to check first (DOR-1351)
  • A screen reader hears "Kai is working on it" once and is not read a new tool name every couple of seconds, so the new detail costs nothing in noise (DOR-1351)
  • The file names and commands an agent is working with stay on your own screen. They are not sent to a chat app a room is connected to, or to another community a room is shared with (DOR-1351)
  • If you have named approvers on a Telegram or Slack connection, one of them can now answer an agent from a one-to-one chat with the bot. They get the same Approve and Deny buttons you get in DorkOS, showing the same thing the agent wants to run. Press one and the agent carries on (DOR-1356)
  • An agent that stops and waits now says so in the chat it stopped in, instead of going quiet. One short sentence, with no file name, no command and no countdown, saying that the answer happens in DorkOS (DOR-1356)
  • When an agent proposes a scheduled task, it now shows up under Needs Attention with Approve and Reject buttons, on the Home screen and in the top-right indicator. Before this, the only way to find one was to wander into the Tasks page (DOR-1381)
  • DorkOS now keeps a notification history with read state, and one pipeline decides what reaches you where. Finished runs, notes from your agents, messages that could not be delivered, agents that stopped answering, and version updates all land in one place you can come back to (DOR-1383)
  • Questions your agents asked now leave a record of how they ended. An agent's question that nobody answered in four hours used to just disappear; now it is written down as "expired", so you can find out what you missed (DOR-1383)
  • On a Mac, the desktop app now shows real system notifications with buttons on them. When an agent needs a yes or no, the banner has Allow and Deny buttons right on it, so you can answer without opening DorkOS (DOR-1386)
  • On a Mac, a simple question from an agent can be answered right from the notification too: type your reply and it goes straight back to the agent (DOR-1386)
  • Wherever you run DorkOS on desktop, clicking a notification brings the app to the front and opens the session it is about (DOR-1386)
  • There is now one Inbox in the top right, and it replaces the amber "waiting on you" pill. Anything that is genuinely stopped and waiting on a person, like a permission an agent wants, a question it asked, or a scheduled run it proposed, is still pinned at the top and still turns the marker amber, and you still answer it right there without leaving the page. Below that, in a quieter grey, is everything that happened while you were away: turns that finished, runs that failed, agents that stopped answering, notes an agent left you. Each one carries a dot until you have seen it, clicking one opens the thing it is about, and "Mark all read" clears them in one go. Read marks are kept on your machine rather than in the browser tab, so clearing the marker on your laptop clears it on your phone too. The marker stays out of the way entirely when nothing is waiting and nothing is unread. ⌘⇧Y still jumps straight to whatever needs you.
  • Every agent's page now shows the same list for just that agent, under a new "Notifications" row, so you can ask "what has this one been up to?" without reading past everything else. A conversation's "..." menu has a "View notifications" item that opens the Inbox showing only that conversation.
  • When an agent sends you a direct message, or someone @-mentions you by your handle, it now shows up in your Inbox the same way a finished turn or a failed run does. Mentions only work once you have set a handle for yourself in your profile; until then nobody can address you by name. Plain channel chatter that does not mention you stays quiet, just like before. Read the room and the Inbox row clears itself, so you are never told twice about something you already saw. Muting a room stops it messaging you about new direct messages, but a mention still gets through, because someone naming you directly is not the ambient chatter mute is for.
  • A soft knock now plays the moment an agent stops and needs you, and a gentle chime plays when the last thing waiting on you is answered. Both are on to start with.
  • If the DorkOS tab is hidden behind something else, your browser can show a notification when an agent needs you, or when a turn finishes while you are away. Clicking it brings DorkOS back and opens the thing it is about. DorkOS asks for permission the first time that would actually be useful, never when you open it, and it only asks once.
  • Settings has a new Notifications tab. Every sound, the browser notification setting, and how long something may wait before DorkOS tries to reach you another way now live together in one place.
  • Each morning, Home greets you with a short report of what your agents did while you were away: what finished, what failed, and what waited on you. It shows up once a day, only when there is something to say, and sits just above the Recent Activity list. Dismiss it and it is gone until tomorrow's report has something new to tell you.
  • If an agent waits on you for more than a couple of minutes, DorkOS can now ping your phone's browser and your connected chat apps. Answer anywhere and everything else goes quiet. Set the delay, or turn it off, in Settings under Notifications.
  • Settings under Notifications now lists the devices DorkOS can reach, with a button to add the one you are reading this on and a way to remove any of them. Adding your phone's browser is the point of it.
  • Three things can reach you this way, and only three: an agent waiting for your answer, a scheduled task waiting for your approval, and a session that stopped on an error. News, like a turn finishing, never follows you around.
  • On your phone, you can now add DorkOS to your home screen, and it opens like an app: full screen, with its own icon (works when opened over your tunnel's https address) (DOR-1390)
  • A schedule an agent wants to run on a timer now shows in the sidebar's Heads up, beside the other things waiting on you. Nothing runs until you say yes (DOR-1391)
  • Sidebar groups are now called sections, and they sit at the top of the list instead of hidden under Agents. A section can hold anything you see there — a channel, a conversation, an agent — and everybody gets to make one, however few agents they have (DOR-1371)
  • The Agents list shows the agents you have used lately and the ones you pinned, then a single All 31 agents → row that opens your team page. An agent you have not touched in a month no longer costs a row forever, and "lately" counts the last time you looked at it, not only the last time it ran. If you have eight agents or fewer, you still see all of them (DOR-1371)
  • Channels and Direct messages each remember how you want them sorted — by name, or by what happened most recently (DOR-906)
  • An agent that wants to run something on a timer now has to say why, in its own words. DorkOS keeps that reason with the proposal, along with which agent asked and the session it asked from, so there is something to read before you decide (DOR-1394)
  • Activity rows now show who did it. When a notification is about one of your agents — a finished turn, a message that never arrived, a session that stopped on an error, or a question nobody answered — its row shows that agent's own color and icon instead of a plain bell or checkmark, so you can tell at a glance whose work you're looking at. A session-error or unanswered-question row still keeps its red icon to flag something urgent, even with the agent's face attached. When one of these needs to reach your phone, it now goes out through that agent's own chat instead of whichever chat was used most recently.
  • When the same agent does the same thing three or more times in a row, like finishing four runs back to back, those rows now fold into one line ("Alpha Bot finished 4 runs") that you can open to see each one. A single event, or just a pair, still shows on its own (DOR-1396).
  • When an agent suggests a scheduled job, you now get a real card instead of a one-line row. It shows which agent asked, why they asked in their own words, what the job would do, and the next few times it would actually run. The exact instructions sit behind a "Show exact instructions" link, next to how much power the job would have. Nothing on the card is guessed: if the server could not work out when it would run, the card says nothing rather than making a time up (DOR-1398)
  • Run it once. Before you agree to something that will run on its own every night, you can run it a single time and watch what happens. The card tells you when it finishes and links straight to what it did. Nothing gets scheduled, and Approve is still sitting there afterwards, now with proof behind it (DOR-1398)
  • Turning down a suggested job now gives you a few seconds to change your mind. The card says "Rejected" with an Undo button, and the job is only really deleted once that moment passes. Undo cancels something that was never sent, so there is nothing to put back. Closing the panel does not lose your decision (DOR-1398)
  • You can answer a suggested job from the keyboard, the same way you answer everything else that needs you: A to approve, D to turn down, and only while the card has your focus, so a stray keypress while you are typing cannot decide anything (DOR-1398)
  • The card names the conversation the job was suggested in, and clicking it opens that conversation (DOR-1398)

Changed

  • Answer an agent's question in one window and the other windows now say who answered it: "Already answered by Ada at 2:01". DorkOS uses the name on your account, or the name you told it to call you. When it knows neither, the card still says when the question was answered. (DOR-1355)
  • Rooms never ask you to send a message again. Your agent works in one folder at a time, so when you write to it in one conversation while it's busy in another, DorkOS keeps your message instead of turning it away. The line above the message box tells you what's happening: "Kai will pick this up when it finishes in #deploys". When that work ends, your message becomes the agent's next turn and the answer lands where you asked. Click the line to open the conversation that's in the way, or to ask for yours to be answered first. If your agent leaves the room, or you put the room away, DorkOS stops waiting and stops saying an answer is coming.
  • A message you send from Telegram or Slack is no longer dropped when your agent is already running as much as it can. It waits its turn, and it runs when your agent has room for it. If the wait goes past ten seconds, the chat tells you once that your message is waiting. Nothing asks you to send it again. (DOR-1362)
  • Your agent now waits for you instead of guessing for you. When an agent asks to run something and nobody answers, the ten-minute countdown still runs exactly as it did. What changes is what happens next: the card says "waiting for you", the agent holds the question, and answering it hours later picks up right where you left off. Go to lunch, sit through a meeting, do the school run. Four hours on, the agent does give up, and it tells you how long it waited (DOR-1350)
  • A scheduled task is the one exception. Nobody is watching a scheduled run, so its questions are still refused after ten minutes and the run carries on (DOR-1350)
  • Three buttons now say what they actually do. On the Team page, an agent's row action shows an arrow that points where it takes you, and a screen reader hears "Open session with Ana" instead of "Chat with Ana". On a profile, the button reads "Open session" instead of "Message". In the command palette (⌘K), a direct message reads "Open conversation with Ana" instead of "Message Ana", and pressing it opens the conversation you already have. All three already opened what they open; only the words were wrong (DOR-1367)
  • The "2 live" chip on an agent's row in the sidebar now counts the same sessions as the "N working" line at the top of the panel. The two could show different numbers for the same agent before this. A turn that has paused to ask you something no longer adds to the chip, because the dot on the agent's face and the Heads up list already tell you it is waiting. That does mean the chip and the "Live now" list inside the session switcher can differ by one while a conversation is paused waiting on you: the chip counts what is running, the list counts what is still open (DOR-1366)
  • The bottom of the sidebar shows one card at a time, and it stays put. Up to four things used to compete for that corner, and the "Use DorkOS on the go" card sat inside the scrolling list — so once you had more than a screenful of agents and channels, it slid out of sight for good. Now there is one spot, pinned just above the row of buttons at the bottom, and whatever matters most gets it: finishing setup, then an update that is ready, then the question about your work, then a tip (DOR-1369).
  • Every one of those cards has an × now, and hiding one sticks. The tip cards had no way to say no at all. Your answer is saved to your account rather than to the browser you happened to be using, so a card you hide on your laptop stays hidden on your phone.
  • "Use DorkOS on the go" only shows up when it means something — you are in a browser and you have not set up remote access yet. It used to show for everyone, forever.
  • On a phone, the card appears at the bottom of Home. Phones never showed it at all before.
  • The "Feedback & requests" entry in the help menu, and its page, are now called "Product feedback" (DOR-1380).
  • The desktop tray now says when an agent is waiting on you, not just how many are working. It reads "2 working" or "1 waiting", or both together. On a Mac, the app icon in the Dock also carries a badge with the waiting count. On your phone, an agent's question now shows as a full card on the Now screen, the same one you already use to answer an approval, so you can answer it right there instead of hunting for the conversation (DOR-1382)
  • The sidebar is simpler to read. It used to have three levels — a big grey word like "Library", a section heading under it, and then your rows — each starting at a different spot on the left. Now there are two. Every heading looks the same: Heads up, Today, Pins, Channels, Direct messages, Agents, and any section you make yourself. Every row starts on the same line, so a channel, a conversation and an agent all line up (DOR-1368)
  • Every heading now folds. Click one to hide what is under it, or hold Option (Alt on Windows) and click to fold the whole panel at once. A folded heading tells you what it is hiding, like "12 · 3 unread". Heads up shows how many things still need you, so folding it can never quietly bury something you have to answer
  • The word "Library" is gone from the screen. It named a heading rather than anything you would go looking for. Screen readers still hear it. On your phone, that bottom tab now reads "All"
  • A group conversation's stack of faces stops at two and stays inside its own column, instead of sliding under the conversation's name
  • Muting a conversation no longer greys out its name. Muted means fewer signals, not harder to read: the name stays crisp, and the bold, the unread count and the working dot go away
  • The "+" beside a section is now reachable from the keyboard. Arrow down from a heading to reach New channel, New agent, or New section
  • Home's Needs Attention now shows only what is actually stopped and waiting on you: a proposed schedule, or a session that hit an error. What merely went wrong lately (a failed run, undeliverable messages, an agent nobody can reach) moved to its own quieter Recent Activity group. An agent waiting on your answer is now drawn once, as a card, instead of twice (DOR-1381)
  • "Session idle for 47 minutes" rows are gone from the Home screen. A session going quiet was never something you had to answer, and saying so every minute for a day taught people to skip the whole group (DOR-1381)
  • Telegram and Slack messages about finished runs now ride the same system as everything else. What reaches your phone has not changed: a failed run always tells you, a successful one only if you switched that on for the integration. What is new is that the run is recorded either way, so a machine with no chat integration connected is no longer told nothing at all (DOR-1383)
  • A note an agent sends you with "notify user" now also lands in your history, so a message you glanced at on your phone is still there tomorrow. The tool works the same way it always did: same answers, same limit on how many notes an agent can send you in an hour (DOR-1383)
  • That hourly limit now actually holds. It counts every note an agent tries to send you, not only the ones that reached a chat app — before, on a machine with no Telegram or Slack connected, nothing ever counted and an agent stuck in a loop could talk to you forever. A note that hits the limit, or that you have switched off with "Agent can start conversations", now leaves nothing behind anywhere, instead of quietly filling your history (DOR-1383)
  • These notifications stay quiet on their own (no sound) and only show up for the things worth interrupting you for, or for finished work while you are away from DorkOS. Everything else still waits for you in the app (DOR-1386)
  • The "Recent activity" group on your home screen now reads from the Inbox instead of working things out for itself. It shows the same three things it always did: runs that failed, messages that could not be delivered, and agents that went quiet, all from the last day. They are now the same rows the Inbox holds, so something you have already read on one screen looks read on the other. Links people have shared before still open the same detail panels. A message that could not be delivered now opens the Connections page, which lists them all, instead of a panel that could only find some of them.
  • The chime that used to play every time an agent finished replying is off to start with. With a few agents running it was a lot of sound, and it never told you which one needed you. You can turn it back on in Settings under Notifications.
  • Sound settings follow you between devices now instead of being remembered by one browser. If you had the finishing chime turned on, it stays on.
  • The sound switch inside a conversation's status panel is gone. It looked like it was about that one conversation and was not, and all three sounds are now set together in Settings.
  • The setting that says how long something may wait before DorkOS tries another way of reaching you now does what it says. It used to be saved and ignored.
  • A notification sent to your phone carries a short line and a link to the thing it is about, and nothing else. It never carries what an agent wrote or what it wanted to run, because your phone may show it on a locked screen.
  • "Went quiet" rows are gone from Heads up. A session going quiet is not something you have to answer, so the daily digest says how many sessions are sitting idle instead (DOR-1391)
  • On a phone, a question you can answer right there no longer also shows as a second line underneath the card (DOR-1391)
  • One way in to each agent. Clicking an agent in the sidebar opens your chat with it, and that is now the only place that chat lives. The sidebar used to list the same agent twice, once under Agents and once under Direct messages, and the two opened different things. Pick one agent in the "+ New" picker and you land in that same chat. Pick two or more and you start a group message (DOR-1370).
  • Your old one-on-one messages are all still there. Nothing was deleted or moved. Whenever one of them has something new for you it shows up under Today — including a line an agent started by itself — and the agent's own row gets a dot beside it. You can find any of them any time with ⌘K or from the agent's profile. Chats connected from Telegram or Slack keep their own row, since there is a real person on the other end (DOR-1370).
  • A group message keeps up with who is in it. Add an agent to a group and its name grows to include them, unless you named the conversation yourself, in which case your name stays (DOR-772).
  • Removed the extra sentence under "Scheduled Runs" in the Inbox popover. The summary above it already promises nothing runs until you decide, and the schedule card underneath already says what it's about to run (DOR-1395)
  • The "All clear" checkmark now fades and rises into place instead of appearing all at once (DOR-1395)
  • The alert about a schedule waiting on you now names the agent that proposed it, instead of saying "An agent" (DOR-1394)
  • A schedule waiting for your approval now says when it would actually run: the next time, and the two after it. Until now it said nothing, because DorkOS only worked that out for schedules that were already switched on, which is never true of one that is still waiting on you (DOR-1394)
  • Every page's header now ends with the same three controls, in the same order: search, the inbox, and the right-panel toggle. Nothing else can sit between them, so the corner you reach for is the same corner on every page (DOR-1400)
  • A long room name in the header now shortens with an ellipsis instead of pushing those controls off the edge — hover to see the full name (DOR-1400)
  • The Inbox bell and the knock sound and desktop banners that alert you now always agree about what's waiting on you. They read from the same list, so one can no longer say something needs you while the other stays quiet (DOR-1397)
  • Home, Activity, Scheduled and Workspaces now switch from tabs inside the header itself, so each of those pages starts one row higher and shows more of what you came for (DOR-1401)
  • Home lost the extra row that named your #team room. The Home tab says which page you are on, the box at the bottom says which room you are writing to, and the header now shows how many people and agents are in it — press that head count to open members (DOR-1401)
  • Activity's category filters moved out of the header and onto the page, above the feed they filter (DOR-1401)
  • The little system-health dot sits at the same spot on all four of those pages now, so it never moves as you switch between them (DOR-1401)
  • Workspaces no longer prints its own title under the header that already says it (DOR-1401)
  • A channel no longer names itself twice. The room name, what it is about, and everything happening in it now live in the single header row at the top, so the conversation starts a row higher (DOR-1402)
  • The header of a room now shows when agents are working in it and gives you a Stop button to halt them all. Both hold their place while the room is quiet, so nothing shifts under your cursor when an agent starts (DOR-1402)
  • On a phone that pair is replaced by a small green dot on the head count, and the room's name gets the space back — you stop agents from the line above the message box, which is on screen whenever something is running (DOR-1402)
  • When the header runs out of room, the topic shortens and disappears before the room's name gives up any space. The name only shortens when nothing else is left, and hovering either one shows the full text (DOR-1402)
  • Home shows that same working count and Stop button again, next to the head count for your #team room (DOR-1402)
  • Press the head count in a room's header to see who is in it and add more (DOR-1402)
  • Your #team room now opens in one place. Pressing #team in the sidebar takes you Home, and old links to it land there too, with any open thread still open. The #team row stays highlighted while you are there (DOR-1402)
  • The Team page's view switcher is now the same kind of tab strip the rest of the app uses, with a thin rule separating the three ways of seeing your agents from the two about access (DOR-1405)
  • On a phone, the Team views are no longer hidden behind a dropdown. All five are in one strip you swipe sideways, and the Table view — which the dropdown used to leave out — is finally among them (DOR-1405)
  • On a phone, "New Agent" is now a + button, which gives the view names the width they need (DOR-1405)
  • The bar above a session now shows who you're talking to and which conversation you're in: your agent's face and name, then the session's own title — the same title the sidebar list shows. It used to read "Team › DorkBot › Session", which was true of every session you've ever opened and never told you which one you were looking at. A brand-new session reads "New session" until your agent names it after the first reply, and then the header updates on its own. If the session isn't tied to an agent, the header shows the folder's name instead. Sessions started by something other than you — a scheduled task, a message from Telegram — still say so, and on a narrow window that note shrinks to its icon so the conversation's name keeps the room. If you delete an agent while you're reading one of its conversations, the header keeps its name rather than going blank — it's still the agent that wrote everything on screen.
  • The sidebar no longer builds itself in front of you when the app opens. It waits until it knows what to draw, showing a quiet outline of the panel in the meantime, and then appears once. Your channels, direct messages and agents all arrive together instead of popping in one group at a time (DOR-1372)
  • Everything about a room now opens in the side panel instead of a pop-up over it. Who is in the room, what it is about, how loud each agent is, and the way to add or remove one all sit beside the conversation, so you can read the room while you change it (DOR-1403)
  • The panel has its own tab, next to Pulse. Opening a channel or Home puts you on it, and Pulse is still one press away (DOR-1403)
  • The three ways in still go where they always did. The head count in the header opens the list of members, an empty room's "Add agents" opens the picker ready to type, and the sidebar menu's Members, Add agents and Edit topic each open the part they name (DOR-1403)
  • Picking one of those from the sidebar now opens that room as well, so the panel is always about the room you are looking at (DOR-1403)
  • On a phone the panel slides over the room, the way the pop-up used to (DOR-1403)
  • Reloading the cockpit no longer opens with a second of empty panel. DorkOS remembers what your sidebar looked like last time — your channels, your agents, today's conversations, your pins — and paints the finished panel in the first frame, then quietly checks with the server behind it and updates anything that moved (DOR-1373)
  • The sidebar redraws less. Muting a channel, filing one into a section, or the panel's own once-a-minute tick used to make every conversation row in the list redraw itself; now only the rows that actually changed do. Each row also waits until you reach for its menu before setting up what that menu can do, so a long list costs less just by being on screen (DOR-1375)
  • Pages stop saying their own name twice. The bar along the top already tells you where you are, so Marketplace, Marketplace Sources, Connections and Product feedback no longer repeat it as a big title underneath — each one opens with the line that actually explains it. Screen readers still announce the page name, so nothing is lost if you navigate by heading
  • The sidebar now moves when something changes that you did not change. Folding a section springs it shut and leaves a quiet count on the header ("12 · 3 unread"); a conversation that turns up in Heads up or Today slides in and flashes once instead of appearing out of nowhere; a list that reorders slides so your eye can follow the row you were reading; and dragging a row lifts it slightly, marks where it would land with a thin ring, and lets it settle into place. Nothing loops, nothing lasts longer than a blink, and if you have asked your computer for less motion, all of it is simply off.
  • The Claude account you pick in Settings is now called your default account — new chats bill it unless something more specific says otherwise. Your current choice carries over, and each account you have registered gets a short name of its own so other settings can point at it later (DOR-1407)

Fixed

  • After you rejoin a channel, the sidebar stops saying you left it. The row could keep its dimmed "Left" tag, sometimes for as long as the channel stayed quiet, if you happened to read something else at the same moment, on this device or another one (DOR-1358).
  • In the Obsidian panel, typing before you have picked a conversation no longer swallows what you wrote. The message box now says "Pick a conversation, or start a new one." and keeps your words, instead of looking ready, clearing itself, and showing "Could not send message" (DOR-1354)
  • If a message waits so long that it never runs, the chat now says so plainly and tells you that you can send it again. Before, a busy agent asked you to resend before it had even tried. (DOR-1362)
  • When an agent proposes a scheduled task, the Scheduled list now updates immediately. You no longer have to reload to see it waiting for your approval. It also shows up in Activity, so there's a record that it happened (DOR-1380).
  • One error now shows one message. Creating an agent, making a channel or DM, connecting or testing a messaging integration, turning a connection on or off, renaming a session, and a few onboarding steps could each pop two overlapping error messages when something went wrong: one naming the action, one generic. Now there's exactly one, and it says what actually broke (DOR-1378).
  • Copy buttons now show a small check right on the button, and say so if the copy failed instead of staying quiet. A few success messages that popped up for things you could already see are gone. One message that wrongly looked like an error after a successful delete now looks normal. And a channel name that's already taken shows right under the name field instead of a separate error message.
  • A few more success messages that popped up for things you could already see are gone: saving an extension setting, saving or clearing a secret, and turning an extension on or off all show the change right on the control now, with no extra message on top. Stopping a scheduled task run that fails to stop now shows one clear message instead of a chance of two.
  • Copying two things back to back no longer cuts the first one's checkmark short. Also fixed a rare case in dev builds where making a channel with a name that's already taken could show both an inline message and a separate pop-up saying the same thing.
  • If starting a direct message fails, DorkOS now always says so, even if you closed the panel while it was still trying (DOR-1391)
  • Copying the update command, or your debug info, now tells you when your browser refused the clipboard instead of saying it worked. The "Copied" note also clears a little sooner, matching every other copy button in the app (DOR-1391)
  • On a phone, an agent waiting on you can no longer be hidden behind the getting-started card (DOR-1391)
  • Schedules already waiting for you no longer knock or send a notification as if they had just arrived, when DorkOS is slow to read its settings at startup (DOR-1391)
  • A section's Show setting now actually filters the list. It was there, it remembered your choice, and it did nothing (DOR-1371)
  • A section sorted by Recent activity now puts channels and conversations in the right place. They used to all fall to the bottom, whatever had just happened in them (DOR-1371)
  • Mute is gone from a section built from rules. Choosing it flipped the label and changed nothing, because a rule-built list is rebuilt every time you look at it (DOR-1371)
  • New section… from any row now puts the name box in one place — the top of the list — instead of somewhere below your agents where a narrow sidebar could not show it (DOR-1371)
  • The N inactive row at the bottom of Agents took a click and did nothing. It is now the "All N agents" row, which goes somewhere (DOR-1105)
  • Right-clicking a channel, conversation or agent and choosing New section… or Rename… now opens the name box. It had been opening and closing again too fast to see, so the menu item looked like it did nothing — using the row's ⋮ button worked, which is why it went unnoticed (DOR-1371)
  • A notification with nowhere to go, like a DorkOS update record, no longer draws as a button that looks clickable but does nothing. It now reads as plain text; the dot still clears when you use "Mark all read" (DOR-1396).
  • The home screen used to announce everything waiting on you as "approvals", even when none of it was. It now says what each thing actually is: questions, requests, and schedules. Screen readers hear the same honest wording the Inbox already used (DOR-1398)
  • A suggested job now waits in "Waiting On You" alongside the other decisions, instead of sitting under "Needs Attention" with the things that broke (DOR-1398)
  • Opening a link to a conversation now shows the room loading instead of a blank page while DorkOS works out which room it is (DOR-1402)
  • Your agents keep their faces and names from the first moment you see them. They used to appear with a placeholder emoji and colour that changed a second later — every agent at once (DOR-1143)
  • The panel asks the server for the same thing once instead of twice, so the app has less to do while it starts. DorkOS now watches your 24 most recent conversations for work that needs you, up from 10 — so a session that has been waiting a while is less likely to be missed (DOR-1372)
  • Opening the app on a channel no longer scrolls the panel on its own. The open conversation is simply already in view (DOR-1372)
  • A one-to-one shows the agent's own picture again, in the header and beside their name in the panel. For a while it showed nowhere (DOR-1403)
  • Opening a link to a room that has been deleted now says so in the panel, instead of showing a name that never arrives (DOR-1403)
  • Pressing the head count moves the keyboard into the list of members, so you can get there without a mouse (DOR-1403)
  • On a phone, the Archive button no longer sits under the home indicator (DOR-1403)
  • The Getting started suggestions appear with the rest of the panel instead of arriving a moment later and pushing everything below them down (DOR-1373)
  • Something you just changed, like a card you dismissed, a section you made, or a room you muted, is what the next load starts from, even if you reload the moment after (DOR-1373)
  • The setup wizard no longer appears over an install that finished setting up long ago. For a moment while DorkOS read your saved settings, it could decide you were brand new and put the welcome screen up. It now waits for your real settings first (DOR-1373)
  • A damaged saved copy of your sidebar no longer stops the app opening. DorkOS throws it away and loads fresh instead (DOR-1373)

Security

  • A program calling DorkOS with an agent token DorkOS cannot verify no longer acts as you in a channel. Until now it could attach files, rename people, stop running work, post messages and read a channel's history, and all of it went into the record as something you did. Every way into a channel now turns that token away and says so: the web addresses, and the tools an agent uses (DOR-1361)
  • The same token can no longer get itself written down as you when an MCP server is added to one of your agents. That entry records who added it, and a person reads that line when deciding whether to trust a server that runs a command on their machine, so DorkOS now refuses instead of putting your name on it (DOR-1361)
  • When any of this happens to a command you ran, the dorkos command line now shows you what the server actually said. It used to tell you your API key was the problem, which sent you to fix the wrong thing (DOR-1361)
  • What an agent is waiting for now reaches only the people who could answer it. In a group chat nobody sees it, because DorkOS cannot know who else is reading. And another agent on your machine no longer sees any of it: not in the fleet-wide list, not on the live feed, and not on a session's own stream. It could never answer one of these, and now it cannot read one either. Your own scripts, holding your API key, can still see them and still cannot answer them (DOR-1356)
  • Requests for permission to run something are no longer broadcast to every connection. An agent connecting to DorkOS with its own token no longer sees what other agents are asking you for permission to do, which brings these in line with the questions agents ask you (DOR-1383)
  • What the cockpit remembers is tied to the address it was talking to, so two DorkOS installs open in one browser never show each other's channels. It is forgotten when you sign out, when you update DorkOS, and after a day. Your conversations are never kept in the browser — and neither is anything waiting on your answer, so you are never shown a stale "three things need you" (DOR-1373)

[0.62.0] - 2026-08-18

Added

  • Settings has a new Experiments section: things we are still proving out, not yet ready to be the default. Each one says what it gives you and what it costs, and they are all off until you turn them on. Two are waiting there now. Keep agents warm between messages leaves your agent running between messages, so replies from the second message on start about 4× faster — it holds up to about 1 GB of memory per warm agent, and applies to chats you start after turning it on. Let outside agents reach yours opens the A2A gateway, which lets agents built by other people send work to yours; it is still early alpha, and turning it on opens a door, so only do it when you know what is on the other side. Every experiment ends the same two ways — it becomes the normal behaviour, or it goes away — so an empty list means nothing is waiting on you (DOR-1304).
  • See a dev server you're running in the canvas from your phone, your tablet, or another laptop — not just the machine it runs on. Live reload keeps working, and pages with deep links open where you asked for them. When a preview can't be shown, the canvas says why in a sentence you can act on instead of going blank.
  • Click the line above the message box in a channel to see each agent that is working, how long it has been going, and what it is answering (DOR-1329)
  • From there, jump to the message an agent is replying to, open the session its work runs in, or stop the room (DOR-1329)
  • When an agent stops to ask you something, you can now answer it from wherever you are in DorkOS. The question shows up in the header on every page, in the sidebar, on the home screen, and on the line above the message box in the channel it came from (DOR-1330)
  • The question says what the agent actually wants, in its own words: "Meeting Notes wants to edit standup.md", not "waiting on you" (DOR-1330)
  • Press Cmd+Shift+Y to jump to the next thing waiting on you. With the card in front of you, A allows it and D refuses it (DOR-1330)
  • Several requests from one agent for the same tool arrive as one card, so five files to read is one decision and one Allow (DOR-1330)
  • Let all my agents talk to each other — a single switch in Team → Access. Until now, two agents you made a minute apart could not message each other: each one lands in its own project, and agents only talk inside a project unless you add a rule for the pair, one dropdown pair at a time. Five agents meant twenty rules, and nothing told you until an agent hit the wall in the middle of a job. Flip the switch and every agent on this machine can reach every other one. Flip it back and you're where you were, with any pairs you'd already allowed still there. It's off when you install DorkOS — your agents stay in their own project until you say otherwise. (DOR-1338)
  • The switch also shows up while you're making an agent, once you have another one it wouldn't be able to reach — so you find out before the agent does, not after. (DOR-1338)
  • Packages that need npm libraries now get them installed for you. When you install something from the Marketplace, DorkOS lists the libraries it will download before you approve — in the cockpit dialog and in the terminal — then fetches them as part of the install. No more running npm install by hand to make a plugin work (DOR-1341).
  • If a package's libraries cannot be fetched — no npm on your machine, or the download fails — the package still installs and DorkOS tells you exactly what to run to finish the job. The note stays on the package in "Manage Installed", so you can still find it long after the pop-up is gone (DOR-1341).
  • The API reference now documents the two mesh topology endpoints — reading who can talk to whom, and changing it — including the "Let all my agents talk to each other" switch and what happens if you use * on only one side of a rule (DOR-1343)
  • New guide, Answer your agents from anywhere, explaining how to answer a question or approval from the header, the sidebar, the home screen, or right above the message box where it came up

Changed

  • The A2A gateway can now be turned on from Settings instead of only from an environment variable. If your machine sets DORKOS_A2A_ENABLED, that still wins either way, and the switch shows you what is really running rather than offering a choice the server would ignore (DOR-1304).
  • Turn on message timestamps in Settings and they now show in channels too, not only in sessions (DOR-1328)
  • Rest the pointer on a message's time in a session and you get the whole date, the way a channel already did (DOR-1328)
  • Move through a run of messages with the keyboard and each one now shows its time as you land on it (DOR-1328)
  • The line that says who is working moved above the message box, and it is always the same height, so an agent picking something up no longer pushes what you were reading (DOR-1329)
  • A session's own line lives in the same place now, and still carries how long the turn has taken, what it has spent, and a warning when its permission stops are off (DOR-1329)
  • The line waits ten seconds before it puts a timer up, because a number that starts at zero is nothing to read (DOR-1329)
  • Answer a question once and it is answered everywhere. Every copy of it turns into a line saying what happened: what you chose, or who answered it first and when, or that it is no longer needed (DOR-1330)
  • The question still has ten minutes. If nobody answers in that time it is refused for you and the agent carries on without it, exactly as before. Showing it everywhere is how you get to it in time (DOR-1330)
  • A question that arrives while you are typing never takes the cursor, and A is still just the letter A in your message (DOR-1330)
  • When an agent is blocked from messaging another agent, it now names the switch and where to find it, so it can tell you exactly what to turn on. (DOR-1338)
  • Agents that are set up to talk to each other now start every turn with the tools for it already in hand, instead of spending part of their time looking them up (DOR-1337)
  • See exactly which files an install will touch. The install dialog used to say only "134 files will be created, modified, or deleted". It now names the folder they land in, counts how many are new, changed, and removed, and lets you open the full list of paths. Removed files are listed first, because those are the ones an uninstall cannot give back. If a package writes anywhere outside that folder, the dialog says so and names those files. (DOR-1339)
  • Find DorkOS packages in the Marketplace without searching. The catalog carries nearly 300 packages, most of them mirrored from other registries. The browse page now opens with DorkOS's own packages first, and a new Source filter in the sidebar lets you narrow to any single marketplace. Each card names where the package came from. (DOR-1339)
  • Long channels scroll smoothly. A channel now draws only the messages you can see, the way a session's chat already did, so a room with months of history stays as quick to scroll as a room with ten messages (DOR-1331)
  • When a message arrives while you are reading back through a channel, you get a "New messages" button instead of being taken to the bottom. Press it when you are ready (DOR-1331)
  • Open a thread on your phone and come back, and the channel is on the same message you were reading (DOR-1331)
  • Hover a message longer than the window and its buttons stay where you can reach them, at any point in the message (DOR-1331)

Fixed

  • Dev servers you run on your own machine — Vite, Next, anything on a localhost address — now show up in the canvas, live reload included. They used to render as a blank white page. Using DorkOS from another device? "localhost" means that device, so the page won't render there yet; the browser toolbar's "Open in system browser" button still gets you to it (DOR-1259).
  • The canvas now tells you when a preview goes wrong instead of showing you nothing: when there's no dev server on that address, when a page is taking too long, and when a page failed to load some of its own files (DOR-1259).
  • Stop now works while an agent is finishing up. Right at the end of a reply, an agent can wake itself back up — a background job it started reports in, or one of its own scripts runs — and DorkOS shows the reply as running again, with a Stop button on it. Pressing that button did nothing: DorkOS asked the agent to stop and then waited for an answer that could never arrive, so the reply kept going until the agent ended it on its own. Stop now gives up on asking politely after three seconds and ends the agent's work itself, and when DorkOS already knows the agent can't hear it, it ends the work straight away. The reply is then marked as one you stopped — not as finished, and not as an error, whether or not the agent had said anything yet. That marking sticks: reopen the chat later and it still shows as stopped. (One rough edge left: the agent's own written record of the chat won't say it was stopped, because it never got the message.) (DOR-1244)
  • Stopping a single background task is bounded the same way: if the agent doesn't answer within three seconds, DorkOS tells you it couldn't stop that task instead of leaving the request hanging — and it never ends the rest of the reply to do it (DOR-1244).
  • Adding context to a chat no longer quietly starts a second agent. "Add context" was starting one even with the "Keep agents warm between messages" experiment turned off, and every message after that in the chat stayed on it. Now the chat says "Added context for the next reply" and your words go to the agent when you next write to it. They are kept in memory until then, so restarting DorkOS in between loses them (DOR-1307)
  • Extensions no longer restart every time you open DorkOS or open a new tab. Each browser tab used to ask the server to start the extensions again, which shut down the running ones and started them over — seconds after launch, and again on every tab. DorkOS now leaves an extension alone when nothing about it has changed, and only restarts it when its code actually changed or you ask for a reload. (DOR-1336)
  • Running DorkOS from your home folder no longer fills the log with warnings about its own bundled extensions. When your working folder is the one that holds DorkOS's own settings, DorkOS was reading its extensions folder twice and mistaking its own extensions for project copies of themselves. It now reads that folder once. (DOR-1336)
  • An API key you save for an extension now works straight away. Extensions read their saved keys fresh every time, so pasting a key in Settings no longer needs a DorkOS restart before the extension can use it. (DOR-1336)
  • When the background half of an extension stops building, its card in Settings now says so — "Server side failed to rebuild… the previous version is still running" — instead of looking perfectly healthy while DorkOS quietly runs the last version that worked. The rest of the extension, including the part you see on screen, keeps working while you fix it. (DOR-1336)
  • Your agents can reach each other by following their own instructions. The address one agent needs to message another was written one way in the instructions and matched another way by the access rules, so an agent that did exactly what it was told got "access denied" — even with the permission switched on. Agents now read the real address straight from the agent list, and a shortened address still gets delivered instead of refused (DOR-1337)
  • An agent whose turn crashes no longer looks like an agent with nothing to say. The agent that asked now gets a clear failure, plus whatever partial work came through, instead of an empty answer it had no way to question (DOR-1337)
  • The Mac app no longer says "Claude Code CLI: missing" when it ships with Claude Code. It was looking for the copy inside its own app bundle in a place it could never run it, and it never looked at the one the app hands it. Both checks now walk the same list of places as the agent itself, so what the setup screen says and what your sessions actually run are the same thing (DOR-1334)
  • Codex now shows up with an honest status even when the Codex tool is not installed. It used to vanish from the setup screen entirely, leaving a card with nothing to say. If you start a Codex chat without it, you get a plain sentence telling you what to install (DOR-1334)
  • "Install Claude" now installs Claude, and the next chat you start uses it — no restart. The button was there but had nothing behind it, so clicking it looked like nothing happening. If a one-click install is not available for something, you get a sentence saying so and the command to run yourself (DOR-1334)
  • dorkos and dorkos doctor no longer warn that Claude Code is missing when it is right there. They were looking in fewer places than DorkOS itself does (DOR-1334)
  • When a check reports something missing, the server log now says why — which tool, where it looked, and what went wrong — instead of staying silent (DOR-1334)
  • The Mac app now finds the tools you already have installed. Opening DorkOS from the Dock or Spotlight used to hide everything outside a handful of system folders, so agents installed in places like ~/.local/bin or Homebrew looked missing — even though the same DorkOS found them instantly from a terminal. The app now reads your shell's own setup at startup. (DOR-1335)
  • The Mac app now opens in your home folder instead of somewhere inside the app itself. That wrong starting point was why it could show an empty list of chats and a folder path that nothing would open. (DOR-1335)
  • Codex is now included in the Mac app. It was left out of the download by mistake, so the app acted as if Codex did not exist. (DOR-1335)
  • Add-ons from the Marketplace now load in the Mac app. A missing piece of the build stopped them starting every time you opened it. (DOR-1335)
  • With Keep agents warm between messages turned on (Settings → Experiments), a chat now reaches the agent the first message warmed up from the second message on, instead of starting a second one beside it. Replies start faster, and DorkOS stops holding a spare agent open for every chat. (DOR-1309)
  • A new agent no longer changes namespace five minutes after you create it. The namespace is the group an agent's permissions hang off, shown in Team → Access. DorkOS put every agent it created into one shared namespace and then moved it into its own on the next background check, so two agents made in the app could talk for a few minutes and then quietly could not. They now land in the namespace they keep (DOR-1342)
  • When an agent does change namespace, it no longer leaves its old one behind it. An agent created by an older version still moves once, on the first background check after you upgrade, and that move now clears the permissions of the namespace it left, instead of leaving them there for good (DOR-1342)
  • Agents you message through Relay now answer with the model you set for them, whether the message comes from another agent or from a chat app like Telegram or Slack. An agent pinned to a fast, cheap model was quietly answering on whatever the runtime picked instead — the same agent already used your setting in channels and in chat. A conversation you have already changed the model on keeps your choice. (DOR-1344)

Security

  • An agent can never answer a question, including its own. Anything calling DorkOS as an agent is refused. With Require login turned on, so is anything holding one of your API keys, which is the kind of password a program uses instead of signing in. Only a person signed in on this machine can answer (DOR-1330)
  • A channel still shows only a short note when an agent is waiting, with no file name, no command and no countdown. The question itself, with all of its detail, goes to this copy of DorkOS, where you are the person who can answer it (DOR-1330)
  • A program calling DorkOS with an agent token DorkOS cannot verify can no longer see which session each agent in a channel is working in. Only a person can (DOR-1357)

[0.61.0] - 2026-08-17

Added

  • See exactly what your agent reads. The Instructions and Boundaries pages of an agent's profile now end with a line you can open: Preview what your agent will see. Inside is the real thing — the short name and description your agent is given, its personality written out in full, your instructions and your boundaries, assembled the way the agent gets them. It follows what you have typed, so you can read it before you save (DOR-1255)
  • dorkos debug phantoms shows how often an agent's own work was cut short by the coding tool rather than by you. This has been a real bug — one session lost eight pieces of work to it in a single sitting — and until now the only way to notice was to sit and watch. Now it is a number you can check, and a warning in the log when it happens (DOR-1087)

Changed

  • Everywhere you could open an agent now says the same thing: View profile. The sidebar's "Agent hub", the Team table's "Manage", the status line's right-click menu, the command palette and the topology map all used a different word for the same act, and they all landed somewhere slightly different. One word now, and one place — the profile, which docks beside your session or slides in from the side depending on where you are (DOR-1255)
  • Links you saved to the old Agent Hub still work. They open the profile (DOR-1255)
  • On the Team page, View profile in the table now opens the same profile card the cards open, instead of a different panel off to the side (DOR-1255)
  • An agent can send you up to ten notes an hour. Past that it is told to say it in the conversation you are already having, so an agent stuck in a loop cannot fill up your phone. Notes still only go where you already allowed them: your direct message with that agent, or a chat on a connection you set up and gave it permission to start conversations on (DOR-1265)

Fixed

  • DorkBot's voice is yours to change. Setup asks you to pick how DorkBot should sound, but its profile then refused to let you change your mind. Now the Personality row on DorkBot's profile opens the same picker every other agent has. Its name, its face and its description still belong to DorkOS (DOR-1255)
  • An agent your fleet can no longer name — one you retired while the app was open — no longer goes silent in the sidebar. Its face and its menu still open the side panel, which tells you the agent is gone and names the folder it was in, instead of doing nothing at all (DOR-1255)
  • Settings pointed you at a tab that no longer exists. Under Connect other apps to DorkOS, the note about giving one of your own agents tools from another MCP server now sends you to the agent's profile and its Tools & MCP page (DOR-1255)
  • A new chat gets its permanent name a moment after you send the first message. Anything still using the name from that first moment — a button inside a reply, a window opened from an old bookmark, or a script talking to the API — used to quietly start a second, empty copy of the chat and cut the live one off mid-answer. Both names now lead to the same chat, so the reply keeps streaming and the click lands where you expect (DOR-1262)
  • The receipt that confirms a message was staged now reaches your screen for a chat that has been renamed, instead of going nowhere (DOR-1262)
  • The "start every new session here?" prompt that appears after you switch to Full autonomy no longer hides its own buttons. Make default and Dismiss now stay fully on screen and clickable, at any window size (DOR-1270)
  • Every room turn now tells the agent the room's id and the id of each message it can act on. Reacting to a message, reading a channel back, and posting to one all ask for those ids, and an agent had never been given them — so one asked to "just acknowledge this" had nothing to point at, and one asked to check a channel's history guessed the channel's name and got an error (DOR-1263)
  • A file someone shares in a room now comes with a full path, so the agent opens it on the first try instead of looking in the wrong folder (DOR-1266)
  • Your agents keep the names you gave them in channels. An agent that posted, reacted, or read back a channel used to rename itself to its short address partway through a conversation, so "Docs Writer" became "docs-writer" in every message and in the member list. Names now stay put (DOR-1264)
  • Ask an agent in a channel to send you a note and it now arrives. It used to stop and wait for a permission card that only ever appeared inside the agent's own chat — somewhere nobody was looking — so the note was never sent (DOR-1265)
  • A question or an approval the agent is waiting on now survives a page refresh. Reloading the tab used to hide the card behind a "Question answered" line, for a question nobody had answered. That left no way to answer it, and the agent sat stuck until it gave up. The card comes back now, ready to answer, and it is the only thing on screen for that question (DOR-1269)
  • "Steer" now appears only when your chat can really hand a message to the agent mid-task. Before, it was offered on every Claude Code chat, but only chats that keep the agent running between messages can be interrupted that way — so the message quietly waited its turn instead of cutting in (DOR-1268)
  • If a message can't cut in after all, the chat says so — "Couldn't cut in. It's waiting in line." — instead of staying silent (DOR-1268)
  • Links in an agent's reply act like normal links again: hover to see where they go, and cmd/ctrl-click opens one in a new tab. In your browser, right-click also copies the link address (DOR-1272)
  • Agents are now told the real name of every DorkOS tool. Claude Code gives your agent these tools under longer names than the ones DorkOS registers them with, and the instructions the agent reads were using the short ones. An agent that followed those instructions exactly got "no such tool" and gave up. Bigger models guessed their way around it. Smaller, faster ones did not. Ask an agent to just acknowledge a message and it now leaves the ✅ on the first try, instead of failing three times and typing a reply nobody wanted (DOR-1292)
  • Room tools are ready the moment a turn starts. Agents used to have to look a tool up before they could use it, which cost a step on every reply in a channel. Posting, reacting, and reading a channel's history now work straight away, so an agent answers instead of hunting (DOR-1292)
  • Every other DorkOS tool is easier to find. Each one now carries a short phrase saying what it does, so an agent can look for "install a package" instead of guessing the exact name (DOR-1292)
  • Agents are also told that a thumbs-up can be the entire reply. Anything an agent writes during a room turn gets posted to the room, so an agent that reacted and then added "Done, acknowledged" left two messages where you asked for none. It now knows it can react and stop (DOR-1292)
  • Reopening a chat used to put a green "Question answered" over a question nobody had answered. If you missed the question and the agent gave up waiting, the record of it said the opposite of what happened. Now the transcript says what actually became of it — nobody answered in time, you dismissed it, it failed, or no answer was ever recorded — and shows the agent's own words when there are any. An answer that lands right as the turn ends still counts as an answer (DOR-1293)
  • A tool you turned down, or left waiting until it timed out, no longer comes back looking like it ran. Reopening the chat shows that it was refused, and shows the reason the agent was given — including refusals that never went through DorkOS, like a tool you turned down in the claude command line or one your permission rules blocked (DOR-1293)
  • A tool that simply failed now reads as failed in an old chat, instead of getting a checkmark (DOR-1293)
  • The text under one of these rows keeps its line breaks, so a blocked command reads the way it was written instead of running together on one line. A very long one is cut short with a button to show the rest (DOR-1293)
  • If you turn on the experimental setting that keeps an agent warm between messages (runtimes.claudeCode.persistentSession, off by default), sending a message into a reply that was already being written could leave that chat stuck — every message afterwards went nowhere, and only restarting DorkOS brought it back. It no longer can: a late answer is matched to the message it belongs to, and a reply that never finishes is closed out so the next message still runs. When that happens the unfinished reply is marked as an error rather than left spinning, and your next message goes through normally (DOR-1294)
  • With that same experimental setting on, a reply that never finished used to spoil the next one: DorkOS closed out the unfinished reply while your new message was already under way, so the new reply was marked failed and stopped mid-sentence even though the agent was still writing, and the chat's saved history mixed the two together. The unfinished reply is now closed out first, before the new one starts, so it is marked as an error on its own and your next message runs clean. The same goes for /compact after a reply that never finished (DOR-1295)

[0.60.0] - 2026-08-16

Added

  • Try "Engaged" as a response mode for new direct messages with an agent (DOR-773)
  • Ask an agent to open a room with another agent — you're always included, replies go one-for-one, and agents hand off with @name (DOR-1208)
  • Get a DorkOS direct message when an agent finishes and you have no Slack or Telegram connected (DOR-1209)
  • Set how long a channel waits before answering, and how many messages one answer covers (DOR-1201)
  • Agents react with an emoji instead of writing "seen" — and now default to reacting instead of typing "Ack" (DOR-1202, DOR-1234)
  • Agents can read or search a room's history without pausing on a permission prompt they own (DOR-1202, DOR-1229)
  • An agent can post an update straight into a channel or thread mid-task — that post is its answer (DOR-1202)
  • Claude Code agents get react, look-back, and post automatically; Codex and OpenCode need your own MCP setup (DOR-1202)
  • Your conversations are backed up automatically — daily, and before any storage change (DOR-1224)
  • Export any channel or DM to a file: dorkos room export #backend (DOR-1225)
  • Steer a working agent, add context, or queue your message — pick from the composer, and a steer shows up right inside the agent's reply as it works (DOR-1198, DOR-1195)
  • See only the send choices your agent's runtime actually supports (DOR-1198)
  • Leave a channel or group from its menu; rejoin anytime, or undo right after leaving (DOR-1233)
  • DorkOS logs which setting changed and where from — never the value — across the app, CLI, and agents (DOR-1237, DOR-1247)
  • Confirm Full Autonomy from the terminal too: dorkos config acknowledge-autonomy (DOR-1247)
  • Open a profile from a message's face, a member list, or the "working now" strip (DOR-1251)
  • Jump to "View profile" from a message's hover, right-click, or long-press menu (DOR-1251)
  • An agent's profile opens onto its conversations, tasks, rooms, skills, tools, and connections (DOR-1253)
  • Each profile row shows what's behind it — and loads its real count instead of showing zero first (DOR-1253)
  • Change an agent's runtime, model, thinking effort, or personality right from its profile (DOR-1253)
  • Pick an agent's colour, emoji, and personality together on its Appearance page (DOR-1253)
  • Manage an agent — default, block, unregister, or delete — from its profile's ⋮ menu (DOR-1253)

Changed

  • An agent you call into a thread reads that thread, plus a short glance at recent channel messages (DOR-1207)
  • Several people talking at once now get one considered reply, not several rushed ones (DOR-1201)
  • A message sent while an agent works is folded into its next answer instead of getting missed (DOR-1201)
  • Stop in a room really is the end of it — the reply is cancelled, not just hidden (DOR-1201, DOR-1232)
  • Your agents' hourly reply limits now survive a restart (DOR-1205)
  • If your database won't open, DorkOS stops and tells you — it never rebuilds over your data (DOR-1224)
  • A profile is now a picture up top and rows you tap to open full pages (DOR-1252)
  • An agent's profile shows who manages it; a person's profile lists the agents they run (DOR-1252)
  • Edit your name, handle, and photo from your own profile too (DOR-1252)
  • A profile explains what's happening in plain words — "Working in #team," "Last active 3h ago" (DOR-1252)
  • Message only appears as an option when there's somewhere for it to go (DOR-1252)
  • A profile lists every room that person or agent is in; tap one to go there (DOR-1252)
  • The right panel's "Agent Profile" tab is now simply Profile — the same profile as the Team page, docked beside your session; ⌘⇧A still opens it, and old Agent Hub links land there (DOR-1254)
  • A profile opened from inside another one links back to where you came from, and profile links open even from a different agent's session (DOR-1254)
  • dorkos config set tells you the value it actually saved, or exactly why it couldn't (DOR-1247)
  • Pressing Stop with messages waiting puts them back in your composer, after asking first (DOR-1199)
  • The queued-messages header now matches the rest of chat's style (DOR-1246)

Fixed

  • DorkOS tells you when an agent can't be readied to reply in a room, instead of staying silent (DOR-1206)
  • Rooms keep track of an agent's real conversation across a restart, even mid-reply (DOR-1205)
  • Rooms that lost track of their agent's conversation are repaired automatically at startup (DOR-1205)
  • A long conversation shortening now shows a marker in the chat, live and in history (DOR-1215)
  • A settings file from a newer DorkOS build no longer looks "damaged" to an older one (DOR-1221)
  • Rescued settings backups now keep every version, with a timestamp, not just the last one (DOR-1221)
  • A failed settings upgrade stops and tells you — it no longer wipes your settings (DOR-1221)
  • A helper finishing mid-task no longer cancels your agent's file writes (DOR-1238)
  • A successful "shorten this conversation" no longer shows as a crash (DOR-1235)
  • A failed conversation-shortening now gives one clear reason, not two confusing messages (DOR-1235)
  • A turn that never starts now ends after two minutes with a clear reason (DOR-1229)
  • A setting a newer build wrote no longer wipes your whole config — DorkOS skips just that one (DOR-1227)
  • DorkOS names any skipped settings at startup, in dorkos doctor, and in config validate (DOR-1227)
  • The "make this my default" offer now leaves the screen when you switch conversations (DOR-1237)
  • While an agent plans, the status bar shows one Plan control, not two confusing ones (DOR-1236)
  • Clicking a button in a reply works right after the agent finishes, no "locked" error (DOR-1239)
  • A message meant for one agent no longer lingers as a draft in another agent's composer (DOR-1242)
  • Restarting DorkOS no longer fires off an old channel message days after the fact (DOR-1242)
  • When a channel truly can't get an answer, it says so right away, not an hour later (DOR-1242)
  • Changing a setting from the CLI now asks for consent, the same as the app does (DOR-1247)
  • dorkos config set checks your value before saving and tells you if it's invalid (DOR-1247)
  • Reading settings works even when DorkOS can't write to its own folder (DOR-1247)
  • Saving a setting to a folder DorkOS can't write to now gives one plain-language error (DOR-1247)
  • Writing an agent's instructions or boundaries now actually saves them (DOR-1253)
  • Changing one thing about an agent — like its model — no longer erases its description (DOR-1253)
  • Renaming an agent updates its name everywhere at once (DOR-1253)
  • "Saved" now only shows once your change is stored; a refused save keeps your edits in place (DOR-1253)
  • The instructions editor counts your whole file, so you see the limit before you hit it (DOR-1253)
  • Leaving an unsaved instructions or boundaries edit now asks before discarding it (DOR-1253)
  • Changing an agent's personality from its profile now reaches the agent, not just the setting (DOR-1253)
  • Clearing an agent's name now restores its old name instead of leaving it blank (DOR-1253)

[0.59.0] - 2026-08-12

Added

  • You can now sign in to MCP servers that need OAuth, like Granola. Ask an agent to sign you in, open the link it gives you, and approve access in your browser. DorkOS keeps the sign-in token encrypted on your computer and sends it to the server for you, so the server's tools start working on the agent's next reply. DorkOS refreshes the token quietly before it runs out, and it remembers your sign-in if you restart. If a server needs you to sign in again, checking it now says "needs sign-in" in plain words instead of a raw error. One thing to know for now: if a server signs you out while you are working, DorkOS may not notice until the next time you check that server, so sign in again to fix it (DOR-942).
  • When an agent needs your OK for something it cannot undo, like adding a tool server, it now waits for your answer and picks up the moment you approve. The request shows up as a card right in the chat, and saying yes there lets the agent keep going without you having to tell it to try again. The agent waits about ten minutes; if you take longer it stops waiting and the chat says what it asked and that it moved on without an answer. That goes for anything an agent waits on you for — a question it asked you, or a sign-in prompt from a connected server, as well as a tool approval. An approval is still there in your Approvals list — answer it, then tell the agent to try again, exactly as before this existed (DOR-939, DOR-1158)
  • You can now sign in to an MCP server that needs OAuth right from the agent's server list, without asking an agent to do it for you. When a server needs a sign-in, its row shows "Needs sign-in" and a Sign in button. Click it, read what DorkOS will do with your sign-in, then open the link and approve access in your browser. DorkOS keeps the sign-in for you, and the server's tools work on the agent's next reply.
  • You can now tap and hold a person's or agent's name (like an @mention in a room) to see their identity card on a phone or tablet — the same card you already got by hovering with a mouse. A quick tap still does nothing, so it won't be mistaken for a button, and holding a mention no longer also opens the message's actions menu underneath it, or leaves some other open menu stuck on screen (DOR-953)
  • One list of everyone on your install — you and your agents together — behind the new GET /api/team. It reads the records DorkOS already keeps instead of making new ones, shows your real name rather than "You", and says which agents are yours. If something can't be read, you still get the rest of the list with a note about what was missing: a roster that can't say your name will still list your agents. The Team page that shows this is coming next (DOR-971).
  • Hovering an agent's @mention in a room now tells you how that agent runs — the runtime it is on, and the model it starts on when it names one. Agents that just take their runtime's default model show the runtime alone, and an agent DorkOS has no details for shows nothing extra rather than a made-up answer (DOR-954).
  • Every agent in a room now has an @handle: one short name that reaches exactly them. DorkOS makes it from the name you gave the agent. Agents whose name has a space in it, like "Art Blocks Analytics", could not be reached by @ at all before. Now they answer to @art-blocks-analytics. (DOR-676)
  • Two agents with the same name get different handles, so a message can only ever reach one of them. The second becomes @api-server-2.
  • People writing in from Telegram get a handle that carries the platform they came from, like @miguel.telegram. Nobody on another service can take a name your agents answer to.
  • Your own handle is not set yet, and DorkOS will not guess one for you. Rooms say you have no handle instead of inventing an address that reaches nobody. The screen for picking it is coming with the profile work.
  • Add a server that needs a sign-in and DorkOS says so immediately. It checks the address as it saves it, so the "Sign in" button is there the first time you look — you no longer have to press Test to find out (DOR-1003).
  • When you finish signing in, DorkOS tells you how many tools you just unlocked — "Connected — 12 tools." — instead of only saying it worked (DOR-1003).
  • The page you land on after signing in now names the server you signed in to, says what happens next in plain words, and gives you a link back to DorkOS (DOR-1003).
  • Ask your agent to connect something, like your meeting notes or your issue tracker, and the sign-in link now shows up as a card right there in the chat. Above the link is a plain note about what DorkOS does with your sign-in. You do not have to go hunting through settings, and your agent no longer repeats a long link you can already see. Click it, sign in, and come back. Your agent picks the job back up on its own and carries on with what you asked for. It will not announce that it connected, and it will not ask you to tell it when you are done (DOR-1004).
  • You can sign in however you like and it still works. Close the tab, reload the page, or finish on your phone. The agent still gets going again on its own (DOR-1004).
  • Once the sign-in lands, the card turns into a short note saying what you connected and how many tools it added, so you can see it worked. The note sticks around while your agent gets back to work, then the chat moves on. The moment your agent picked the job back up stays in your chat and names the server, so you can still find it later (DOR-1004).
  • The card stays put while you are away signing in. If you open a new tab in the meantime, it shows the card too (DOR-1004).
  • Adding a server that needs a sign-in now takes you straight into it. Before, you were dropped back at the list and had to find the new row and press a button (DOR-1004).
  • People and agents can now carry a photo, alongside the name, emoji and colour they already had. Wherever the app draws a face — a room roster, a message, the card that opens over a mention — the photo is what shows, with the emoji as the backup if it will not load. Nothing sets a photo yet; the page for choosing one comes next. (DOR-975)
  • A profile photo can now be stored, and it stays on your own machine — under your DorkOS data folder, not in anyone's cloud. PNG, JPEG and WebP up to 2 MB; DorkOS checks what a file really is rather than trusting its name, and turns away anything else. Once stored, the photo shows up under the same name everywhere on the roster and in your account, so the two can't disagree. There is still no page for choosing one — this is the storage underneath, reachable only through the API for now; the Settings screen that asks for a photo is next. (DOR-976)
  • Some services will not let DorkOS sign itself up automatically — they want you to register an app with them first and hand over the ID it gives you. That used to be a dead end. Now, if a sign-in fails for that reason, the server's card offers "Use your own app credentials": paste the ID (and the secret, if you got one) and sign in normally. What you paste is kept encrypted on this computer, the agent never sees it, and the card's Details afterwards says the server is using your own app credentials (DOR-982).
  • A profile panel for everyone on your install. It shows who a person or an agent is, what an agent runs on, and who it belongs to. Your own row also shows your email. The panel keeps its own web address, so a reload or a saved link brings the same profile back. It opens beside the page on a computer and fills the screen on a phone.
  • A Team page. The sidebar's Agents entry is now Team, and it opens one roster of everyone on your install: you, and every agent you run. You are always on it, even before you register a single agent.
    • You can tell a person from an agent at a glance. A person is a circle. An agent is a filled square with a small robot mark. Someone reaching you from another app, like Telegram, gets that app's mark. The shapes are the same everywhere else in DorkOS.
    • Every agent says who it belongs to. A line under the name reads "by @you". Click it and the roster narrows to that person and their agents. DorkBot has no owner line, because it belongs to the install rather than to a person.
    • Filter, group, and search. Narrow to just people or just agents, cluster each person's agents under them, or type a name. Every control writes to the address bar, so a filtered roster is a link you can bookmark or send. The filters follow you between views: narrow the cards, switch to the table, and you are looking at the same people.
    • Five views, one page. Cards is the roster. Table is your agents in columns, now with a "Managed by" column. Topology, Denied, and Access are unchanged, and all three moved here from the old Agents page. On a phone the table is not offered: six columns at that width is a scroll bar pretending to be a table.
    • An old link still gets you there. A saved address that names a view DorkOS no longer has now opens the roster instead of an error page.
  • Your face now sits in the bottom-left corner of DorkOS. Click it for your name, your @handle, a link to your profile, Settings, and — if you have a login on this machine — a way to sign out. On a phone it opens as a drawer you can swipe away.
  • Settings › Profile, now the first tab. Upload a photo, set the name DorkOS calls you, and claim the @handle people and agents use to reach you. Your photo shows up everywhere you appear: your team page, every room, and beside everything you write.
  • If a handle you want is already someone else's, or is spoken for, or isn't spellable as a handle, the form says which of those three things happened — and what to do instead — rather than just refusing.
  • Click a face to see who it is. Names and avatars now open a profile: an @mention in a room, a card on the Team page, an agent's picture in the sidebar, the agent chip above the chat box, and an agent in the network view. The profile keeps its own web address, so you can reload the page or send someone the link and get the same profile back. On a phone, tap the name instead of holding it.
  • Right-click a file or folder in the Files panel to show it in Finder (or File Explorer), copy its full or relative path, or add it to the chat as an @ reference (DOR-1032)
  • Agents now know what was said in a room while they were not answering. When an agent takes a turn, it is shown the messages it has not seen yet — not only the one that woke it up — so an agent pulled into a busy channel arrives knowing what the conversation is about instead of reading one line out of fifty. Listening still costs nothing: a message that addresses nobody starts no turn (DOR-665)
  • Copy and paste files in the Files panel — from the right-click menu or with Cmd/Ctrl+C and Cmd/Ctrl+V. A copy that would land on an existing name is renamed the way your file manager does it (notes copy.md), and Duplicate makes one beside the original in a single step (DOR-1032)
  • Hold Alt while dropping a file in the tree to copy it instead of moving it, and drop one in the empty space below the tree to move it to the top level (DOR-1032)
  • Drag a file or folder from the Files panel into the chat box to add it to your message as an @ reference. Files dragged in from your desktop still upload as before (DOR-1032)
  • Paste tells you when a folder cannot go where you asked, and the menu greys it out where it would not work, instead of looking like nothing happened (DOR-1032)
  • Send files in a room. Click the paperclip, drag a file onto the message box, or paste one in, then send it with your message. Pictures show up right in the conversation; everything else shows up as a chip you can click to download. Only the people and agents in that room can open them. The agents in the room get your files along with the message, with nothing to approve.
  • Extensions can now pass visibleWhen when they add a section, so a section can hide itself on the days it has nothing to say instead of showing an empty card.
  • Click into the empty box on Home and the last few things you were in float up above it: chats with your agents, channels, and direct messages, newest first. Press the arrow keys to move through them and Enter to open one, or just click. Escape puts the list away, and so does typing — once you start writing, it stays out of your way until you come back to the box.
  • The list is the same one in the sidebar, so the two can never tell you different stories about where you left off. Rooms you have muted stay out of both, and a direct message shows the same agent's face in both.
  • DorkOS now keeps one record of where you have read up to, for every kind of conversation you have — rooms, chats with your agents, and your inbox. It is yours alone, and it tells your other open screens the moment it moves, so nothing waits on a refresh. Your agents keep their own separate place in a room, and nothing they do there moves yours
  • Every install now gets a #team channel: you and DorkBot are in it from the start, and each new agent you make joins it automatically, ready to answer when the room is talking to it
  • Nobody but you can rename or archive #team. Agents in the room can change its topic and talk in it, but they cannot take your home room away. You can still mute it
  • What needs you stays at the top of Home. Approvals an agent is waiting on, and anything that broke — a stalled session, a failed run, an agent you cannot reach — now sit pinned above the Home feed instead of scrolling away with it. When there is nothing waiting and nothing wrong, there is no header at all: no "all clear" box, no empty strip.
    • Answer where you are. Allow or refuse a request and the card ticks and clears on the spot. Nothing jumps, nothing reloads, and the page underneath does not move. If an answer cannot go through, the buttons come back rather than leaving a tick over a request that is still waiting.
    • It gets out of the way when you type. Tap the message box on a phone and the header shrinks to one line — "2 waiting · 1 needs attention" — so the keyboard does not push what you are writing off the screen. Tap that line to open it back up.
    • Keyboard and phone. Answering a card moves you to the next one instead of dropping you nowhere. On a phone the small buttons are easier to hit without getting bigger, and a screen reader hears what arrived.
    • A failure still speaks up. If DorkOS cannot read the approval list, it says so and offers to try again — an approval you never see is an agent stuck waiting on you.
  • Type in #team without naming anybody and your default agent answers. No @ needed, and the rest of your team stays quiet instead of all piling on
  • Name somebody with @ and only they answer — and they stay the only one, including when they write back. Your default agent steps back rather than doubling up on a question you already handed to someone else, unless you named it too or you were already talking to it
  • Setting an agent to "Everything" from a room's member list still means everything. Only the default agent's seat steps back, and changing your default agent never touches a choice you made yourself
  • Pick a different default agent in Settings and the next thing you type in #team goes to the new one — no restart. The old one goes back to only answering when you address it
  • If the agent named in Settings isn't on this machine any more, DorkBot picks up what you type instead of it going nowhere
  • See who is working, and look over their shoulder. One line at the bottom of the Home header shows the agents working right now — "tangerines · replying in #release-train", "DorkBot · working in a session" — and clicking one takes you there to watch. Watching is all it does: it never takes over the conversation, never interrupts the turn, and never stops the agent mid-thought.
    • It stays one line, however busy things get. Past five agents it shows the first few and counts the rest, so a busy morning never pushes your feed down the screen.
    • It would rather say less than say something untrue. An agent DorkOS cannot put a name to does not appear at all, and work it can name but cannot place shows the name with nothing invented after it.
    • When nobody is working there is no line. No "all quiet" strip, no empty space held open — the header simply is not there.
  • Your first morning in #team starts with something to say. Four openers sit above the message box, and pressing one writes it into the box for you to edit or send. They go away as soon as there is a real conversation to read.
  • A morning where nothing happened now says so: "All quiet." If a scheduled run is coming, it names the run and the time. If there is nothing real ahead, it stops after those two words instead of making something up.
  • The first time you open Home each day, the room fades in rather than snapping on. Every other visit that day is instant, and so is every visit if you have asked your system for less motion.
  • The chat message box now formats as you type. **bold** turns bold as you close the second pair of asterisks, - starts a bullet list, # makes a heading, and `code` becomes code. Enter still sends your message — except inside a list, where it starts the next bullet, and an empty bullet ends the list. Anything the box does not preview, like quotes, code blocks, links and tables, stays as you typed it and still renders when the message is sent. If you would rather see the plain markdown characters, there is a switch in Settings → Advanced → Format text as you type. This applies to chat for now (DOR-948)
  • Settings → Tools has a new Background systems section with one switch for scheduled runs and one for agent messaging. Turning a switch off stops DorkOS from starting that system, and its tools go quiet with it. Until now the only way to do that was to hand-edit your config file. DorkOS starts these systems once, when it starts, so the row says plainly that your change takes effect the next time DorkOS starts rather than pretending it already has. If a DORKOS_TASKS_ENABLED or DORKOS_RELAY_ENABLED variable is set in the server's environment, the switch says so and stays locked, because that variable is what decides.
  • Your team room marks the moments that matter. #team now says when something real happens: an agent joining ("tangerines joined your team"), your first schedule, your first connection, the first run that finished overnight, a week or a month with an agent, and a week where something ran every single day. Each one shows up as its own kind of post in the feed, with the face of whoever it is about.
  • Every moment is read from your own records, so the numbers in one are counted rather than guessed, and each lands once and never again — restarting DorkOS does not repeat it. The room marks at most one an hour, so an afternoon of setting things up does not fill your feed with milestones.
  • On a quiet morning, DorkBot may add one gentle suggestion under "All quiet." — something you don't use yet, like setting up a schedule. One line, quieter than the line above it, and only when it fits what you actually have set up: you won't be offered scheduling if you already schedule. Dismissing it is a single press, and it's remembered — the same suggestion doesn't come back, on home or in the sidebar (team-room-home 4.5).
  • Come back to a summary instead of a scroll. After a few hours away, each agent that actually did something while you were gone leaves one line in #team saying what it worked on and when it last changed. Agents that did nothing new stay quiet, and at most three lines land however many agents qualify.
  • The lines are read from your own sessions, so they say what happened and nothing more. No agent is woken up to write one, so coming back costs you nothing, and work an agent already posted in the room is left out because you have read it.
  • You decide whether this happens at all. The switch is in Settings → Preferences, and turning it off means no notes and no looking, not fewer notes. It is stored on your server, so it follows you to every device you open DorkOS on. Four hours is what counts as being away, and three is the most notes one return can produce; both are settings in your config file if you want different numbers: dorkos config set welcomeBack.absenceThresholdMinutes 720.
  • Every session's current tool now rides the fleet-wide status stream, so anything watching your agents — not just the chat you have open — can say what each one is working on (DOR-1053)
  • A link can bring the question with it. Add ?prompt= to a session address and DorkOS opens a new chat with those words already in the box — yours to read, change, or send. Add &send=1 and it sends them for you, so the agent is already working by the time you look at the screen.
  • It sends once. Refreshing the page or pressing Back will not send it a second time, because the address drops both settings the moment they are used. And it only ever starts a conversation: pointed at a chat that already has messages, or at a box you have started typing in, the link does nothing at all.
  • ⌘K now finds your conversations. Type a few words from a chat's title and it comes up, whichever agent it belongs to and whenever you last touched it. Press Enter to go back to it, or ⌘Enter to start a fresh chat with the same agent. Both shortcuts are written on the row you have highlighted, so you never have to be told about them.
  • Each conversation reads the way it does in the sidebar: the agent's face, the agent's name, then the title — plus a small mark when the chat started somewhere other than with you (a scheduled run, a message from Telegram, a room), and when it last moved.
  • ⌘K searches what things are called — chats, agents, channels, actions — and never what was said inside them. Searching your messages stays a separate thing.
  • Sidebar rows can now say what an agent is actually doing — "Editing RoomRow.tsx…", "Running pnpm test…", "waiting on you" — and say nothing at all when a session is idle. The rule is deliberately honest: if we do not know which tool is running, the row says "Working…", and if the turn is over it says nothing rather than leaving an old phrase up. A verb that outlives its turn is just a lie in a small font.
  • The session switcher. When an agent has more than one conversation going at once, its sidebar row shows a small "2 live" chip. Click it — or find the agent in ⌘K and pick "Browse sessions…" — and you get every conversation that agent has, in three groups: the ones running right now, each saying what it is doing ("Editing RoomRow.tsx…"); the ones you finished, each with the last thing that happened in it; and everything that started without you — scheduled runs, messages from Telegram — tucked away until you ask for them. The one you have open is marked. Press Enter to jump into a conversation, ⌘Enter to start a fresh one, or Shift+Enter to branch off a copy and leave the original alone. It opens as a panel on a computer and slides up from the bottom on a phone (DOR-1071)
  • The top of the sidebar is now a Heads up zone: the things that are actually waiting on you. Only four things are allowed in — an agent asking permission, an agent asking a question, a session that stopped with an error, and one gentle nudge about a session that went quiet. Mentions, unread channels, direct messages and background work never appear there, so a Heads up zone with something in it always means something (DOR-1067)
  • Heads up shows at most three things plus a "+ N more" row that takes you to the home page, where the full list already lives. It never scrolls, and agents that are busy working are summed into a single "N working" line instead of a row each. That line counts the conversations you started — a scheduled run working away in the background is not something that needs you, so it stays where it belongs and is never counted here. If one of your scheduled runs does get stuck or asks you something, it still comes to Heads up like anything else
  • When the last thing needing you is done, Heads up says "All clear" for a moment and then folds away. If you have asked your system for less motion, it simply disappears
  • A new Getting started zone takes the place of Heads up on a fresh install. It suggests what you have not done yet — add your first agent, ask DorkBot something — and each suggestion retires for good once you have done it, even if the thing it was about goes away again later
  • Ask DorkBot opens a fresh conversation with DorkBot that already knows the situation: which page you were on, how many agents you run, which version you are on and which conversations just failed. None of it is typed for you — the box you land in is empty and waiting, and DorkBot simply starts out knowing where you came from. If something cannot be worked out, it is left unsaid rather than guessed (DOR-1070)
  • Come back after a few hours away and your agents already leave a short note about what moved. Now a note can also end with one thing the agent wants you to decide — "want me to open the PR?". There is no way to know an agent has a next step without asking it, and asking runs that agent for a turn, so it has its own switch that says so: Settings → Preferences → Next-step offers. Only the agents that already left you a note are asked, and each of them only once. An agent with nothing to offer says nothing; an agent that is busy or runs into trouble stays quiet too, and you still get the notes either way (DOR-1046)
  • When an OpenCode agent hands work to one of its subagents, you can now see it happening. The subagent shows up in the activity feed with its own card, the "working" line counts it while it runs, and the card keeps a running tally of the tools the subagent has used. Before this, a turn that delegated looked exactly like one that did not. Stop the turn partway, or stop the parent OpenCode agent while the subagent is still working, and the subagent is marked stopped, not failed — instead of ending with a shrug, marked as something DorkOS lost track of (DOR-1109)
  • Next-step offers start on. When your agents leave you a welcome-back note, the note can end with one thing the agent wants you to decide, and you do not have to go and find a switch first. It is the one part of coming back that costs anything — the only way to know an agent has a next step is to ask it, and asking runs that agent for a turn — so the switch says that in plain words right next to it: Settings → Preferences → Next-step offers. Turn it off and it stays off. Nothing puts it back: not an update, not starting your settings over (DOR-1121)
  • Today is the middle of the sidebar now: the conversations, channels, direct messages and threads you have actually been in. It is ordered by when you last touched each one — so your recent conversations stay put while your agents work. An agent starting a turn, finishing one, or posting a message moves nothing.
  • The conversation you have open is always Today's first row, and it shows what that agent is doing right there. When you switch conversations it scrolls into view; it will not scroll for anything else, and it never opens a section you folded away.
  • Rows also refuse to reorder while your pointer is inside Today or a row has your keyboard focus. If the order legitimately changed while you were reading, it applies the moment you move away — so the row under your cursor is still the row you meant to click.
  • Scheduled runs, room turns and other work you did not start sit behind one + N automated row. Press it to see them, press it again to put them away. If one of them needs you, it still appears in Heads up like anything else.
  • Threads sit in Today as conversations of their own, showing the message they hang off, and clicking one opens that thread beside its channel rather than just the channel.
  • After you have been away, Today can open with a single While you were away… row that takes you to what your agents got done. It appears at most once a day, only when something actually finished, and only if you have welcome-back notes switched on. Opening any conversation dismisses it.
  • Anything you have not touched since 4am quietly leaves Today the next morning — except the conversation you have open and anything addressed to you by name. Nothing is deleted: it is all still one ⌘K away (DOR-1068)
  • Send a message to an agent that is already working and it is taken right away, with no error bouncing it back at you. It waits in a queue and goes the moment the current turn finishes. The queue lives on the server, so it survives a page refresh and a server restart, and every window you have open sees the same one: open the session in a second tab or on another device and your queued messages are there. Any window can reword one, move it earlier, send it next, or take it off the line, and a message queued from somewhere else is marked as coming from another window. Nothing you type is lost on the way — your words stay in the message box until they are safely in the queue (DOR-1131, DOR-1132, DOR-1133)
  • ⌘K can now search inside one agent or one channel. Type @ or #, land on the one you want, and press Tab — it becomes a chip in the search box, and what you type next only looks at that agent's or that channel's conversations. Backspace with the cursor at the start puts the chip down again and keeps what you typed. There is no search syntax to memorise: the chip is on screen the whole time, so you can always see what you are looking inside (DOR-1075).
  • ⌘K now says when something it found is no longer current. A conversation where nothing has happened since early this morning, and a channel somebody has closed, both carry a small Archived label. You can still find them by name and still open them — the label is only there so a row cannot look like part of today's work when it is not (DOR-1076).
  • Press and hold any row on your phone to get the same list of things you can do that a right-click gives you on a computer — mute a channel, move an agent into a group, rename, archive. It rises from the bottom of the screen with everything in one list, so nothing is hidden behind a second menu. A press that turns into a scroll never opens it, and it never opens the conversation you were only trying to scroll past.
  • "Catch up" at the top of Today clears every unread conversation in one tap. It only shows up on a phone, and only when there is something to clear.
  • Approvals now appear in Home on your phone, with Allow and Don't allow right on the card. You can unblock an agent from the queue for coffee without opening anything. If DorkOS cannot check whether something is waiting, it says so and offers to try again rather than showing you an empty screen.
  • A page that explains your sidebar. "Your sidebar", in the docs under Concepts, says what Heads up, Today and Library are each for, why the first two are worked out for you and the third is yours to arrange, and where the things that used to be in the sidebar went. It ends with the four tabs on your phone and the three things that work differently under a thumb. We chose to write this instead of a pop-up tour, because a page is there the second time you wonder (DOR-1079)
  • Claude Code chats can now keep their agent running between messages. Normally every message you send starts the agent up again and shuts it down when the reply is done; with this on, the agent stays running in between, so your next message reaches one that is already awake. Turn it on with runtimes.claudeCode.persistentSession. It ships off, and it applies to the next message you send in each chat — nothing you have open changes underneath you. An agent that has been sitting idle is shut down for you after a few quiet minutes, and you will not notice: your next message picks the conversation up exactly where it left off (DOR-1175)

Changed

  • list_capabilities now returns a short, filterable list instead of the whole catalog at once. A plain call gives you one compact line per capability (id, title, tier, and a summary), so discovering what a DorkOS can do no longer floods an agent's context. Narrow it with domain (e.g. mcp) or a query, ask for detail: "full" to see the input and output schemas, and page with limit and cursor. A search only expands to full detail once it narrows to a handful of results, a page that leaves something out says how many and how to see the rest, and a search that finds nothing says so plainly (DOR-940).
  • Each MCP server now shows its status in plain words (Connected, Needs sign-in, Failed, or Disabled), not a color dot with no label. Testing a server that needs a sign-in now says so and points you to the Sign in button, instead of showing a raw error (DOR-943).
  • Sending messages between agents stays fast as message history grows — the rate limiter now looks up a sender's recent messages through an index instead of scanning the whole list every time.
  • Agents now look like agents everywhere in the cockpit. Tell an avatar what an identity is — an agent, a person, the room's own voice — and it draws the right shape, fill and corner mark on its own, instead of each screen deciding for itself. Agents are filled squares with a small bot mark; people stay round, with a platform mark when they are writing in from somewhere like Telegram. (DOR-967)
  • An agent that is busy now pulses the same green dot everywhere, in your theme's own colour, and the dot stays put (without the pulse) if you have asked your system to reduce motion. (DOR-967)
  • The chat message list and the hover card that opens over a name now share one rule for drawing agents and people, so an agent always looks like an agent everywhere you see it. (DOR-969)
  • The agent picker in a room's add-agent dialog now draws every row as a filled square, the same shape agents get everywhere else, instead of a round dot. (DOR-969)
  • The avatar next to an approval request now looks like an agent, too, whenever DorkOS can confirm one made the request. (DOR-969)
  • A server DorkOS holds a sign-in for, but has not talked to yet, now reads "Signed in" rather than "Connected". "Connected" means the server actually answered.
  • Display names no longer work as addresses. Typing @Ana Reyes used to reach whoever the room happened to list first. Now only a handle reaches somebody, and each handle belongs to one agent or person. Messages you sent before this change are untouched.
  • Changing a handle is safe. Every message already sent still reaches the right agent, and the handle you leave behind stays yours to take back. Nobody else can claim it.
  • Every MCP server on an agent is now a card instead of a cramped row. The card says the server's name, where it came from, how it is doing, and one plain sentence about what to do next — with the single button for that one thing right underneath. Everything else lives behind a "⋯" menu. Long names no longer get chopped to "plugin:cont…" (DOR-1005).
  • Each card says where its server came from: added to this agent, from this project, from a plugin, or from your computer-wide setup. Hover the badge and it explains itself. A server a plugin brought with it shows its clean name, with the raw one kept in Details. When DorkOS cannot tell where a server came from, it says nothing rather than guessing (DOR-1005).
  • The cards are sorted when you open the panel — anything that needs you goes to the top — and then they hold still. A card you are in the middle of signing in to will never slide out from under you. The next time you open the panel, it sorts again. The sort waits for everything DorkOS knows about your servers to arrive first, so a server that cannot be reached always makes it to the top instead of getting stranded at the bottom (DOR-1005).
  • Plain words replace the system's own: "Needs sign-in", "Can't reach", "Setup problem", "Uses your key", "Off". A server nothing has checked yet now says "Not checked yet" instead of spinning on "Connecting…" forever. The exact error a broken server gave has moved into Details, where you can read it when you want it (DOR-1005).
  • Signing in shows a short, calm note first: your sign-in stays on this computer, the key is kept here, and the agent never sees it. It is said once, in one box, whether you are signing in from settings or from a card your agent put in the chat. There is now a Cancel button if you change your mind (DOR-1005).
  • Cards have a Details section. It says how the server signs in, where it lives — the web address for a remote one, the command for one on your computer — and, for a broken one, the exact error. It only shows what it actually knows, and a card with nothing to show does not offer Details at all (DOR-1005).
  • The on/off switch is on every card now, not just some. A server you have turned off is dimmed with its switch off, and flipping it back on is all there is to it (DOR-1005).
  • Adding a server the project already had now says what you get — "Manage it here to enable, disable, or sign in from DorkOS" — instead of talking about bringing it under management (DOR-1005).
  • When a sign-in cannot get started, you now get a sentence you can act on instead of an OAuth error. "This server doesn't let DorkOS register itself." "This server doesn't offer sign-in the way DorkOS expects." "Couldn't reach the server." The exact technical error is still there, tucked behind Details for when you want it (DOR-982).
  • /agents now takes you to /team. Old bookmarks, docs links, and saved desktop tabs keep working, and they land on whichever view you had open.
  • The message box in a room now sits in the same rounded card as the one in chat, instead of a strip ruled off with a line. Rooms and the home screen used to draw their own version of the box; there is one box now, in one place, so it looks the same everywhere you type. Typing, sending, drafts and shortcuts all work exactly as they did. (DOR-946)
  • The Codex runtime is running a newer version under the hood. Its connections to outside tools (MCP servers) now recover on their own instead of stalling a turn. No visible change in what you do; just fewer rough edges when Codex is running. (DOR-1012)
  • The engine behind your Claude Code sessions moved up to a newer version. It carries about two months of fixes from Anthropic, listed below. (DOR-1014)
  • Pinning a session to one exact model now gets you that model's real abilities. Before, DorkOS only knew the abilities of the short names like "sonnet", so a session pinned to a full model id fell back to generic defaults. Thinking and effort settings now match the model you actually picked. (DOR-1014)
  • The menu item that opens an agent's panel on the right is now called "Agent hub" instead of "Agent profile". It still opens the same panel. Two things one click apart were both called "profile", and only one of them is.
  • Faces, names, and cards now answer when you point at them. A card on the Team page lifts a little and picks up a hint of that agent's own color. An avatar you can click rings itself in its color. A mention in a room gains a touch more color. Before this, most of these just sat there, and you found out something was clickable by clicking it.
  • Clickable faces no longer fade when you hover them. Fading is how the whole app says "you can't use this", so your own avatar and every agent lockup were quietly reading as switched off. They use color now instead.
  • You can reach all of it with a keyboard. Anything that responds to the mouse now responds to Tab the same way — a Team card lights up the whole tile when you Tab to it, not just the name — including the agent chip above the chat box, which had no keyboard highlight at all.
  • On a Team card, pointing at "by @name" calms the card down, so it is clear you are about to filter the roster rather than open a profile.
  • A profile panel carries a thin line in that person or agent's own color when there is something under the header, so you can tell whose panel you have open at a glance.
  • "View profile" on a hover card no longer looks like a button on the surfaces where it does not work yet. It only wears the accent color where pressing it actually opens something.
  • If you have asked your system for less motion, none of this moves. You get the finished state right away.
  • Cards on the Team page now slide to their new spots instead of jumping. Flip "Group: manager" and every card travels to its owner's cluster, so you can see where each one went. Narrow to People or Agents and the cards leaving fade out without shoving the ones that stay. On a very large team — more than 120 cards — they go back to appearing in place, because a hundred things moving at once is not something you can follow.
  • Pointing at "by @name" on a Team card now tells you how many agents that person has, right beside their name. It answers the question the card was making you count for yourself. Tab to it and you get the same thing.
  • The profile panel opens faster. It used to take half a second to slide in, which you noticed every single time — especially when you only opened it to read a project path. Now it is there in a third of a second.
  • Point at an agent's card and its little robot mark leans in. Only where the face belongs to something you can actually press, so the long list of agents in the sidebar stays still.
  • All of the above still respects "reduce motion": cards stop travelling, the robot mark stays upright, and the agent count appears without a fade. Nothing you need is hidden behind movement.
  • An agent is never shown messages from before it joined the room, and one turn catches up on at most the last 30 messages, so the first turn in a long-running channel no longer replays the whole history. When older messages are left out, the agent is told so
  • A turn no longer sees the same message twice. The agent's place in the conversation moves the moment its turn starts, so a turn that runs and then breaks does not repeat itself on the next one. If the turn never started — the agent was already busy, or nothing could reach it — the messages stay unread and are waiting on its next turn instead
  • Read a room on your laptop and your phone catches up straight away. The unread dot on the other screen used to hang around for up to half a minute, so a room you had just finished reading still looked like it wanted you. The room now says so the moment your place in it moves, and every screen you have open agrees — including the count in the browser tab. Only your own reading counts: an agent working through a room never clears your dot.
  • Home, Activity, Scheduled and Workspaces are one screen now, switched with a tab bar across the top instead of four separate stops in the sidebar. Every link you already have still works: the addresses have not changed, and a saved link with filters on it lands on the right tab with those filters still applied. The tab that opens your scheduled runs is called Scheduled, and the title above it now says the same word. The page that used to be called Dashboard is called Home.
  • The sidebar's "Recent" list is now "Jump back in", and it covers everything you were last in — your channels and direct messages as well as your agent chats, newest first. Each row says what last happened there: how many messages are waiting, who is working, or the last thing said. A room shows up once, as the room; the turns your agents took answering in it no longer sit beside it as separate rows. Rooms you have muted stay out of the list, and the row you are already looking at is marked as the one you are on.
  • Home is quieter. The promo card grid, the "Your agents" grid, and the System Status row are gone. Nothing they told you is lost: your team lives on the Team page and in the sidebar, schedules on the Scheduled tab, messaging health under Connections, and how busy the week has been now sits at the top of the Activity tab with its sparkline.
  • Sections added by extensions now appear under "From your extensions" at the top of the Activity tab. Extension authors do not need to change anything — it is the same slot, in the same order, and the heading only shows up when you actually have an extension contributing a section.
  • The sidebar is down to four places: Home, Team, Connections, and Marketplace, plus Search. Activity, scheduled work, and workspaces have not gone anywhere. They are tabs on Home now, and Home stays lit while you are on any of them.
  • The main page is called Home everywhere it is named: "Go home" in the command palette (searching "dashboard" still finds it), "Back to Home" on the error and page-not-found screens, and on the way back from the Marketplace.
  • DorkBot's tours point at the page instead of the sidebar, so they work the same on a phone as on a desktop. "Show me around" is now the composer and the tabs above it, and the tour you get on your second agent opens your Team page and shows you the roster.
  • Your place in a room is now kept in the same place as your place in everything else you read. Nothing looks different: the unread dot in the sidebar, the count in the browser tab and the "New messages" line all sit exactly where they did, and reading a room on your laptop still clears it on your phone straight away. What changed is underneath — a room no longer keeps its own separate copy of where you are, so there is one answer to "have I read this" instead of one per surface. Rooms you had already read stay read when you upgrade
  • An agent working through a room can never move your unread mark, and you can never move its own. An agent keeps its own record of what it has been shown, which is what lets it catch up on a busy channel without repeating itself — that is a different thing from what you have looked at, and the two are now kept apart on purpose
  • Your unread marks in a chat now follow you between devices. The "New messages" line used to be remembered by the browser you were sitting at, so reading a conversation on your laptop left it looking unread on your phone. It is now kept with your account, alongside the same mark rooms use: read to the end in one place and the line is gone in the other, straight away, without a refresh. Opening a conversation still holds the line where you left off until you leave, so it does not vanish before you have read what is under it.
  • In Obsidian there is no DorkOS server behind the plugin to hold that mark, so your unread line still works there and stays local to the vault you are reading in.
  • The old per-browser mark is cleared out the next time you open a chat, so nothing stale is left behind to disagree with what your account says.
  • There is now exactly one way to mark anything read. Rooms used to have a mark-read address of their own, kept working while the app moved onto the shared one; everything uses the shared one now, so the old room-only address is gone. Nothing changes for you — the same badges clear at the same moment — but if you wrote a script against PUT /api/rooms/{id}/read-cursor, point it at PUT /api/read-cursors/room/{id} instead.
  • Agents were never able to mark a room read by asking, and now they cannot ask at all. What an agent has been shown is tracked as entries are actually handed to it, which is the only honest record of it.
  • Home is a conversation now. Open DorkOS and you land in #team — the room you and every agent you run share — instead of a dashboard of cards. Type in the box and your agents can answer, right there: nothing navigates away, and no throwaway session is created.
  • What actually needs you sits above the conversation and stays there while it scrolls: approvals waiting on a decision, and anything that broke. Answer an approval where it stands and it clears without moving the room under you. Nothing waiting and nothing wrong shows nothing at all.
  • Under those, a line of whoever is working somewhere else, so you can follow along without taking over. Work happening in #team is announced by the room itself, once.
  • Put the caret in the empty box and the last few threads you were in float up, the same list the sidebar shows.
  • Pages now share one width system. Before, every screen picked its own width: chats with an agent were narrower than channel rooms, the Activity page had no side padding, and Tasks stretched edge to edge while Workspaces sat in a narrow column. Now there are three named sizes — full, wide, and reading — and every page uses one of them, so moving between screens no longer makes the content jump around.
  • Chatting with an agent now looks the same as chatting in a channel: the message list uses the whole pane, long messages stay at a comfortable reading width, and the composer spans the pane.
  • Sessions that never got an auto-generated title now derive a cleaner one from your first message — on every runtime (Claude Code, Codex, OpenCode). Filler openers like "please can you" are dropped, the title caps at six words, and it gets a capital letter — so "please can you review the help and feedback submission options" shows up as "Review the help and feedback submission…" in the sidebar. Titles the assistant already generated are untouched.
  • While an agent is working, the status strip now tells you what it is doing — "Running pnpm verify…", "Editing router.tsx…", "Using Slack…" — instead of a random catchphrase. When DorkOS does not know, it says so: "Working…", and nothing more. The reading is cleared the moment the turn ends, so a label you see is always about something still running (DOR-1053)
  • The skull that used to appear at random while permissions were bypassed now shows for as long as the session is in that mode, because it is a warning rather than a joke (DOR-1053)
  • Every live dot in the app now says the same thing in the same colour: green and pulsing for working, amber for waiting on you, red for a failed turn, blue for output you have not read. They were four different greens and three different ambers, spread across the sidebar, the tab strip, the group headers and the agent panel.
  • Only the working dot moves. A tab waiting for your approval used to pulse too, which read as a turn still running when it was actually stopped, waiting for you.
  • Health moved to where it is actually useful: "Online" or "Offline" in the agent panel, and a labelled dot on the mesh map, which also gained a colour for agents it cannot reach at all and a legend entry explaining it.
  • In the agent panel, the pencil that appears when you hover no longer covers the little robot mark on the avatar. It moved next to the name it renames, it now shows up for keyboard users too, and the avatar answers your pointer with a ring in the agent's own colour instead.
  • Activity, Workspaces, Connections, and Feedback Requests now use the same wide layout as the Marketplace. On a large monitor they used to sit in a narrow column while every other page filled the screen; now all the main pages feel the same width.
  • The sidebar is being rebuilt, and the settings behind it moved house. Everything you had set comes with you: the sections you had folded shut stay folded, the way you had your agents sorted and filtered stays put, your pins, groups and muted conversations are untouched, and a tip you dismissed stays dismissed. There is nothing to do — it happens the first time DorkOS starts on the new version.
  • Agents that read or change your settings can no longer see which sidebar sections are folded. Nothing sensitive was there; it is simply a shape the settings snapshot has no way to describe yet, and DorkOS leaves out anything it cannot describe precisely.
  • The sidebar is tighter and quieter. It is now 272 pixels wide instead of 320, every row starts 16 pixels from the edge instead of 30, and section names read as words ("Direct messages") rather than as SHOUTING. Rows are 13px on a 28px line, so more of your work fits on screen without anything feeling cramped.
  • Sections and rows no longer have hairlines between them. Where there used to be a line under the header and above the footer, there is now a faint tint and a soft shadow that appears only when there is more to scroll to — so the panel reads as one surface instead of three stacked boxes. The tint works the same way in light and dark mode.
  • Nothing is drawn until you reach for it. A section's own icon turns into a collapse arrow when you hover it or tab to it, and the "more" menu on a row is a small vertical ⋮ that appears on hover and on keyboard focus — so everything the menu offers is reachable without a mouse, and on a device with no right-click.
  • Every row in the sidebar is now built from the same template: a mark, who it belongs to, what it is called, and its badges. A session says which agent it belongs to ("Scout › fix the flaky test"); a channel or a conversation does not, because it is the place itself. Long agent names can no longer squeeze out the title, and the full name is always in the tooltip. A row only grows a second line when there is something real to put on it.
  • Opening ⌘K without typing now shows a command center instead of a menu. First Continue — the chats your agents are working in right now, each saying what it is doing ("Editing strip-state.ts…", "waiting on you"). Then Recent — the last things you were in, whether they were chats, channels or agents, with anything unread on top. Then New, for starting a chat or making an agent. Continue is simply absent when nothing is running, rather than an empty heading.
  • Settings, Tasks, Toggle Theme and the rest are no longer listed before you type. They are one keystroke away: start typing and they come back.
  • The chat status strip and the sidebar now get their words from the same place. They could drift apart before, and briefly did: the strip used to make up a joke verb while the sidebar said nothing, so two parts of the same screen described one agent two ways.
  • The coloured dot on an agent's face now says what it means out loud, so a screen reader announces "needs you" rather than nothing at all. Colour on its own was never enough, and a dot is nothing but colour.
  • /compact waits for the current reply to finish instead of interrupting it. Before, running it mid-reply quietly took the conversation out from under the agent that was still typing.
  • Your sidebar has three parts now: Heads up, Today and Library. Heads up is what needs you. Today is what you were working on, in the order you last touched it. Library is the structure you built yourself — and nothing in it moved. Your pins, your channels, your direct messages, your agents and your groups are all exactly where you put them, in the order you put them, with the same names. The only new thing above them is a short list of what has changed since you looked away.
  • Sections open and close by clicking anywhere on their name — you no longer have to hit a small arrow. Hold Alt (or Option on a Mac) while you click and every section opens or closes at once.
  • A closed section keeps telling you what is inside it. Fold away your conversations and the unread count and the "someone is working" dot move up onto the section name, so you never lose a signal by tidying up.
  • Sections appear when you have something to put in them. There is no "Direct messages" heading until you have a conversation, and no "Pins" until you pin something. Grouping shows up once you are running eight agents or two different kinds. There is no settings toggle for any of it, and there never will be.
  • Because the "Direct messages" heading now waits until you have a conversation, starting your first one moved: it is "New message…" under the + beside Agents. Once you have one, the + beside Direct messages works as it always did.
  • Dragging still works everywhere it used to — reordering pins, moving an agent or a channel into a group, reordering inside a group. Dragging a row into Heads up or Today is the one thing that does not, because those two lists are worked out for you rather than arranged by hand. If you try, DorkOS says so and tells you what to do instead: pin it to Library and it stays put.
  • Everything in the sidebar is reachable from the keyboard. Tab moves between sections, the arrow keys move within one, and the ⋮ menu on every row appears on focus as well as on hover — so every action is available without a mouse, and on a device with no right-click.
  • Clicking an agent in the sidebar now opens the conversation you were having with it, the way clicking a person in a chat app opens your messages with them. It used to unfold a little panel underneath showing three of that agent's sessions, which meant two clicks to get anywhere and no way to see the other eleven. That panel is gone (DOR-1071)
  • There is one place to make things now. Starting a session, a channel, a direct message, an agent or a group used to mean finding the right + in the right part of the sidebar — three menus, four buttons, and no way to guess which one. They are all one New button at the top of the sidebar. Press ⌘N in the desktop app and it starts a session straight away, with the agent you were last talking to. The + on a section still works: it opens the same New menu with the matching item already picked out.
  • The top of the sidebar says whose cockpit this is — "Dorian's team", from the name in your profile. Press it for workspace settings, your account, and which version you are running, with a "Check for updates" beside it that asks the server and tells you what it found. It is one menu, and it is the menu that will hold your other teams when shared spaces arrive.
  • A "Jump to anything…" pill sits under it, opening the same ⌘K search you already had — now visible instead of remembered.
  • Settings and your profile each have one door. The footer's ⋯ menu used to offer both as well; it keeps what only it has — who you are signed in as, sign out, the theme, and help — and leaves the rest to the menu at the top.
  • Zone headings in the sidebar are a little darker, so they meet the readable-contrast bar in the light theme as well as the dark one
  • The bottom of the sidebar is one slim strip now. It used to spend three rows on a logo, a row of icons and a version number; it spends one on the four places DorkOS goes — Home, Team, Marketplace, Connections — and a new ✦ Ask DorkBot button. Your account, Settings, the theme switch, help and feedback, and the developer tools all moved one press away, into the … menu beside them.
  • The version number left the chrome. When a new version is genuinely waiting, a small "Update ready" pill appears above the strip and disappears once you have it — and it never shows up in the Heads up zone, which is for agents that need you (DOR-1070)
  • ⌘K now puts the best match first. Typing gives you one list, ordered by how well each thing matches what you typed, how much you use it, and how fresh it is — so a channel called #shipping comes before an agent that only nearly matches, instead of always sitting below it. When one row is clearly the one you meant, it gets its own "Best match" line on top (DOR-1074).
  • ⌘K now remembers how often you open a conversation or a channel, not just an agent. It used to keep a separate note of the agents you use, so a channel you live in could never rank as highly as an agent you open every day. There is one memory for all three of them now, and the sidebar and ⌘K both write to it — so it no longer matters which door you came through. Your existing agent history moves across, so the agents you already reach for stay where they are (DOR-1075).
  • The sidebar's Today list puts a conversation where your own attention left it: writing in one counts, not just opening it. So a conversation you typed in this morning stays near the top even if you opened something else since. When we cannot tell when you last wrote — some agent runtimes do not report it — the order falls back to when you last opened it, rather than guessing (DOR-1081).
  • A quiet conversation now sits below a busy one when they match what you typed equally well. It is not pushed to the bottom of the list, though: something you go back to constantly still comes up first, whatever day it last moved. A closed channel is the one thing that always ranks below everything still going (DOR-1076).
  • On your phone, DorkOS now has four tabs along the bottom instead of a slide-out menu. Home shows what needs you and what you were working on today, with a count on the tab when your agents are waiting. Library is your channels, direct messages, agents and pins, and it never shows a count — it is the quiet one. DorkBot opens a conversation with the assistant that knows how DorkOS works. You holds your account and the rest of the app. The hamburger button is gone: nothing has to be swiped away before you can use what is underneath, and switching tabs keeps your place in each one.
  • Everything you tap on a phone is now big enough to tap. Rows, section headings, the menu buttons, "New", the search bar and the four places DorkOS goes are all at least 44 pixels tall. Two small controls that could not grow without covering the row's own words — the face that opens an agent's profile and the "N live" chip — moved into the press-and-hold menu instead, along with a new way to switch between an agent's conversations.
  • The You tab now says what each thing is. The four destinations were unlabelled icons whose only names appeared when you hovered over them, which never happens on a touch screen. They are named rows now, and your account sits among them instead of behind a "…".
  • The tab you are on is easier to see: it was marked with a shade of grey almost identical to the others.
  • The DorkOS panel in Obsidian now looks like the app. Its list of conversations is drawn with the same rows the cockpit sidebar uses: sentence-case group names instead of shouty capitals, a coloured dot when a chat is working, waiting on you or has gone wrong, and one "⋮" menu per row holding Rename, Fork and Details, so everything you could reach by hovering is now also reachable from the keyboard. Arrow keys walk the list; Tab steps past it in one press instead of one per conversation. The dividing lines are gone, replaced by the same soft shading the app uses. Colours follow your Obsidian theme, so the rows highlight the way the file explorer beside them does. The Obsidian plugin is still an early, lightly tested surface, and none of this has been confirmed in a real vault yet (DOR-1080)

Removed

  • The dashboard. Its composer became the room's, its two useful sections moved above the feed, and the recent-activity preview is the Activity tab, which was always the fuller version of it.
  • The old dashboard's promo grid is gone for good, along with the wide card layout only it used. Feature suggestions now live in the sidebar and in that one quiet line.
  • Agent faces no longer draw a second, competing ring. A coloured health ring sat two pixels outside the dot, both fed by the same hour-old signal — one fact drawn twice, on every list row in the app.

Fixed

  • An agent's profile Sessions tab and the command-palette preview now show that agent's conversations even when the current window is pointed at a different project. Before, they read only the window's own directory, so every agent except the one this window had open looked like it had no conversations — an agent could appear to be working while claiming none (DOR-929)
  • When the app updates while a tab is open, the error screen now offers a one-click reload instead of a dead Retry (DOR-936)
  • dorkos call stops claiming a real capability does not exist. When the catalog was too big for the command to read in one go, it quietly stopped early and then reported perfectly valid ids as unknown. It now says plainly that the app and the command are out of step (DOR-988)
  • One agent, one silhouette. The member list in a room's details and the row of faces at the top of the room used to draw the same agent two different ways — a bot mark on one and none on the other, both of them round, and two different colours for anyone the app could not look up. They agree now: same shape, same corner mark, and the same colour for anyone the app cannot look up. (DOR-968)
  • Direct messages wear the agent they are with. In the sidebar, the room header and the ⌘K palette, a one-to-one now shows that agent's own square mark instead of a round one that made it look like a person. (DOR-968)
  • The green "working now" dot on the identity card was being drawn twice for one fact. There is one dot now, on the avatar, where it is everywhere else. (DOR-968)
  • Updating a marketplace package that you installed into a single project now works. Before, the updater only looked at packages installed for your whole machine, so it answered "Package not installed" for anything that lived in one project — even though it would have installed the new version right there. When the same package is installed both ways, the project's copy is the one that gets updated.
  • OpenCode sessions now show messages in the order they actually happened, including after a revert, a fork, or a long conversation that got summarized. MCP tool connections also reconnect more reliably when a session runs for a while (DOR-1013).
  • The tool servers you connect to an agent, called MCP servers, are now ready before your first message runs. Before, an agent could start too early and type a tool call out as plain text instead of running it. (DOR-1014)
  • Two projects with very long folder paths no longer share each other's chat history. This mostly hit people who work in many git worktrees at once. (DOR-1014)
  • A very long session no longer repeats tool results after about a thousand tool calls. (DOR-1014)
  • If you stop a turn in the moment a tool is being checked before it runs, that one tool no longer slips through and runs anyway. (DOR-1014)
  • DorkOS now updates its managed OpenCode helper when a new version ships, instead of quietly keeping the old one (DOR-1034)
  • The Workspaces page now scrolls. Before, anything past the first screenful was cut off and there was no way to reach it (DOR-1036)
  • After you add a file to the chat from the Files panel, the cursor is in the message box, ready to type (DOR-1038)
  • Restore focus when a focus-moving action moves none
  • The Workspaces page and docs no longer say DorkOS creates workspaces automatically. Today a workspace is created only when a tool or script asks the server for one. The empty state, the guide, and the glossary now say so plainly.
  • Workspace retention cleanup now honors your retentionCap setting: it keeps your most recently used checkouts and skips any workspace a session is still using, instead of trying to remove every unpinned workspace. DorkOS does not yet run this cleanup on its own.
  • The Marketplace no longer shrinks when you switch to the Installed tab. The page kept its width only when it had enough cards to fill it; now it holds its width no matter how little is on it. Same fix for the Sources page.
  • The Connections page and the Marketplace Sources page now scroll when their content is taller than the window. Before, anything below the fold was simply cut off.
  • Rows in the Cmd+K palette that did nothing now do something. Four kinds of row let you highlight them, press Enter, and watch the palette close with nothing else happening: slash commands, the "Continue: …" suggestion, the recent conversations under an agent, and any row an extension added.
  • Picking a slash command takes you to the conversation it would run in and types it into the message box for you. It does not send it — you press Enter when you are ready. Commands like /clear are not ones to fire off from across the app with one keystroke. Anything you had already typed is kept, as the command's instructions: a half-written "focus on the API changes" plus /compact becomes /compact focus on the API changes. If you had already typed a different command, the new one takes its place.
  • "Continue: …" and an agent's recent conversations now open the conversation they name, in the right project.
  • The palette lists the commands your agent actually has. It used to ask without saying which conversation you were in, so it always got the default runtime's list — you could be talking to Codex and be offered Claude Code's commands.
  • A channel you archived can be found again. Archived channels were gone from the whole app. They now turn up in the palette when you search for one, marked "Archived", and only there — your sidebar and everything else stay free of them.
  • A green dot now means one thing: an agent is working right this second. It used to light up whenever DorkOS had heard from an agent in the last hour, so faces all over the cockpit pulsed as if mid-turn when nothing was running. Agents that are simply alive show nothing at all, which is what makes the ones that do light up worth looking at.
  • The amber "needs you" dot got darker in the light theme, so it stands out against a pale background instead of washing into it.
  • A row that is showing a live verb keeps its second line even when the reading behind it goes quiet for a moment. It used to collapse and grow back under your pointer.
  • Rows no longer lose their one-line preview. A quiet session and a busy channel both keep the last thing that happened there, instead of showing an empty line where it should be.
  • Agents no longer wrongly believe you stopped them. When a background agent finished at the exact moment the main agent asked permission to use a tool, the runtime cancelled that tool call with a message that read as if you had refused. The agent would halt, apologize, and sometimes throw away finished work. DorkOS now catches that false signal, tells the agent it was a system hiccup and not you, and flashes a short note in the status line so you know what happened (DOR-1087)
  • A chat now runs one turn at a time. A message you had queued up could be sent while the agent was still working on the previous one, which started a second copy of the agent on the same conversation. The two wrote over each other, and the box you type in went quiet and unresponsive while replies were still coming in. A queued message now simply waits its turn and goes the moment the agent finishes.
  • Stopping an agent works again in the cases where that second copy had taken over. When one of the two finished, it took the controls with it, so Stop had nothing left to talk to and the other kept running.
  • The same protection now holds for a brand-new chat. A chat gets its permanent name a moment after it starts, and messages sent under the new name used to slip past the check entirely — which is exactly when it mattered, because that is your first reply in a new conversation.
  • A chat whose agent crashed without a word no longer strands your next message. The wait has a ceiling: past it, your message gets the same answer anyone else would get, rather than queueing forever behind something that is never coming back.
  • The chat no longer goes quiet while your agent is still working. When a background task finished, the agent would wake up and carry on — writing, running tools — but DorkOS had already decided the turn was over. The screen said idle, the reply streamed nowhere, and none of that work was saved to the conversation. DorkOS now notices the agent has started talking again, picks the conversation back up, and keeps the words and the tool calls where you can see them. Your finished reply stays on screen while it happens, and you only get one "finished" chime per message you send, not one per wake-up (DOR-1100)
  • The status line now tells you when background tasks are still running after your agent has stopped talking, so a session that looks finished but isn't says so instead of just going quiet. The count clears itself when those tasks end — or when the agent stops for any reason and they end with it — so it can never sit there claiming work that is no longer happening (DOR-1100)
  • Clicking an agent no longer drops you into a job it ran on its own. If you @-mentioned an agent in a channel, that run became the newest thing in its history — so clicking the agent opened that instead of the conversation you were having with it, and because automatic runs are deliberately kept out of your recent list, there was no row to get you back. DorkOS now opens the last conversation the two of you actually had, and starts a fresh one if you have never spoken (DOR-1071)
  • A long chat with a sign-in card still waiting for you no longer grows without limit. DorkOS caps how much of an in-progress reply it holds in the browser. That cap stopped working whenever a sign-in card sat at the top of the reply, so a tab left open while an agent woke itself up over and over kept piling on and slowly got heavier. The cap now holds in that case too, and the sign-in link you walked away to use still stays on screen (DOR-1107)
  • When /compact says it failed, it really did not run. If you typed /compact while your agent was still working, it waited its turn behind the reply in progress. After 30 seconds DorkOS gave up on the request and showed you an error — but the compaction was still sitting in line, and it went ahead minutes later anyway. You would come back to a conversation that had been shortened without your say-so, after being told nothing had happened. Now DorkOS stops waiting first and tells you the chat is busy, and the compaction is dropped for good. Run /compact again once the reply is done (DOR-1101)
  • When an agent asks to change a setting only you may change, the refusal now says what that setting really is. It used to tell every agent the same thing — that the setting decides who can reach your instance, where your keys go, and what leaves your machine — which is true of your login switch and untrue of a room's reply limit or the welcome-back greeting cap. Those bounds are about how often your agents speak on their own and what that spends, so that is what the refusal says now, and a request touching several kinds of setting gets one honest line for each (DOR-1044)
  • Rename an agent, or watch someone leave a room, and every @mention of them already on screen now updates to match. They used to keep whatever name the roster had the moment the message was first drawn, so a room left open could go on calling somebody by a name they no longer had (DOR-989)
  • The line above your Activity feed now counts sessions your agents started across your whole machine, which is the same ground the feed below it covers. It used to count only the project you happened to have open, so the two quietly described different things. It also says plainly what it counts now — "Your agents started 12 sessions this week" — and if a runtime can't be reached, it says "at least" instead of passing a smaller number off as the whole story (DOR-1039)
  • A background task that never reported back could leave your session saying "still working in the background" forever. Nothing in DorkOS could clear it, so the count sat there for the life of the session. Now a task that has gone quiet for fifteen minutes, on a session that has finished talking, stops counting. Tasks that keep checking in keep their place however long they run (DOR-1104)
  • DorkOS no longer says a background task stopped when all it knows is that it can no longer see it. When your agent finishes, anything it started inside itself is gone with it — but something it launched to keep running on its own, like a dev server, carries on, and DorkOS cannot tell the two apart. It now says it lost track of the task and that it may still be running, instead of reporting a stop that may never have happened. These tasks are not marked as finished or failed, because DorkOS did not see either one happen (DOR-1108)
  • Settings that live inside a list — your saved MCP servers, your Claude accounts — now get the same only-you-can-change-them protection as every other protected setting. An agent asking to rewrite one of those lists is turned down and told which settings are yours to pick. Changing them yourself in Settings works exactly as before.
  • The little running figure on the background task bar now shows how its task ended. It used to burst into confetti and then just keep running, so the tick for a task that finished, the cross for one that failed, and the dash for one DorkOS lost sight of never appeared — the figure ran until the task faded from the bar. The figure now settles into its mark after the burst, and a task that is already finished when it shows up on the bar opens on its mark instead of pretending to run (DOR-1119)
  • Reloading the page or following a link straight into a conversation used to leave that conversation missing from the sidebar entirely. It is now always there, at the top, even before the rest of the list has loaded.
  • On day one, an agent could be working and the sidebar would never say so — the Getting started suggestions took the space the "N working" line needed. Now working wins that space, and Getting started comes back when the work finishes.
  • Conversation rows in the sidebar reserved a line for a live status and then left it blank. They now say what the agent is doing, matching the status shown in the conversation itself (DOR-1068)
  • Running /compact no longer leaves the session stuck looking busy. Before, a finished compact never said it was done, so every later message waited on a turn that had already ended (DOR-1130)
  • OpenCode sessions now show the approval card when the agent wants to run a command, edit a file, or fetch a page. Before, the question never reached you: the turn simply stopped and sat there with nothing on screen, sometimes for many minutes. Approve or deny and the turn carries on, and a decision you make in OpenCode's own app clears the card here too.
  • When an OpenCode agent hands work to a subagent and that subagent needs permission to run a command or change a file, the ask now reaches you. It appears in the session with the subagent's name on it, and answering it lets the subagent carry on. Before, the question was raised somewhere nothing could show it: the turn went quiet and waited, sometimes for many minutes, with nothing on screen to answer. Stop the turn while a subagent is waiting on you and the ask is taken down instead of sitting there unanswerable.
  • An OpenCode subagent you stopped while it was waiting for permission now says it was stopped. It used to say it failed, right when there was nothing else on screen to tell you otherwise.
  • Resume a session after a restart and change only its model, effort, or title, and it now keeps the trust level you gave it. Doing this used to quietly drop the session back to the default "ask before every action" mode — the sidebar and session settings kept showing your real choice, but the agent was actually running with less trust than you'd granted it, until you re-toggled the dial.
  • When a background task finished at an awkward moment, the agent was told its own work had been cancelled — in wording that reads like you refusing it. DorkOS spotted that and sent a correction, but the correction never landed in the one kind of turn where this happens: turns running background tasks. So the agent kept believing you had said no, and sometimes told you so. The correction now reaches it, and it carries on with the work instead of stopping.
  • When the runtime cut off a helper the agent had running, the helper often reported back that you had declined something or blocked it from saving. The agent believed the helper and gave up on that work. DorkOS now tells the agent what actually happened — the runtime stopped it, you did not — and to redo the work instead of taking the helper's word for it.
  • A sidebar section's menu is reachable on a phone again. Rename, sort, mute and delete-group sat behind a button that only appeared when you hovered — so on a touch screen there was no way to reach them at all.
  • Answering an OpenCode approval card somewhere else — its own terminal window, another DorkOS window — now shows up in the transcript as Approved or Denied, the same as answering it here. Before, it just cleared with no record of which way it went.

Security

  • Live-update connections now require the same scheme (http or https) as the page that opened them when no reverse proxy declares one. This closes a gap where an unusual proxy setup could let a plain http page open a secure cockpit's stream. If you run a custom TLS-terminating proxy, set the X-Forwarded-Proto header on it — a proxy that omits it will now have its upgrade requests rejected instead of silently accepted (DOR-932)

[0.58.0] - 2026-08-06

DorkOS 0.58.0 brings the outside world into one place. Connections is now a page where you decide who can reach your agents and which accounts they act under; a Telegram or Slack chat or group can become a channel your agents read and answer in; you can manage each agent's tools without leaving the app; and several DorkOS windows finally stay responsive at once.

Added

  • Connections is a page now, with two halves. Messaging is where people and platforms reach your agents. Accounts is the services your agents can act on for you. They sit on one page, one scroll, because they ask two different things of you: who may write to your agents, and what your agents may do under your name.
  • You can see who is trying to reach a bot nobody set up. A Telegram or Slack bot can be found by anyone. When a stranger writes to one, DorkOS now shows you a card at the top of the page: who wrote, and how many times. It never shows what they wrote, because it never reads it. Pick an agent to answer, ignore the chat, or block it outright. The bot stays quiet until you decide, and no agent runs, so nothing is spent.
  • An account you give an agent stays given. Switch on Gmail for an agent and every session it starts gets Gmail, today and after a restart. A single session can still add or drop an account just for itself.
  • A fresh install shows you what is possible. The Accounts half used to be an empty box until you set up a carrier, which made it look broken. It now names the services and tells you the truth about what stands in the way: Gmail and the rest connect through Composio, a one-time setup of about two minutes, and your sign-ins live in Composio's vault rather than on this machine.
  • The getting-started card has a new "Connect a service" row that takes you straight to the Accounts area of the Connections page.
  • Manage an agent's MCP servers right inside DorkOS. Open an agent and go to its Toolkit tab to add a server (a local command or a remote URL), turn it on or off, test the connection, and see at a glance whether it's connected — no terminal and no config files to edit. Before a new server can run, DorkOS shows you the exact command it will start and asks you to approve it. Available for Claude Code agents now.
  • Codex agents can now use managed MCP servers too, the same way Claude Code agents already can. Add one from a Codex agent's Toolkit tab: point it at a local command or a remote URL, turn it on or off, and DorkOS makes it available to the agent on its next turn. Codex doesn't support the third kind of server (a persistent streaming link, SSE), so that option isn't offered when you're adding a server to a Codex agent.
  • You can now add and manage MCP servers for an OpenCode agent right from the Agent Hub, the same way you already can for Claude and Codex agents. DorkOS connects the servers you turn on to the agent at the start of each session, and shows whether each one is working. It also surfaces any MCP servers you set up in OpenCode itself, as a read-only status view (DOR-893).
  • Bring an MCP server DorkOS found in a project's config under DorkOS management in one click. When an agent's Toolkit tab shows a "discovered" server (one read from the project's .mcp.json), a Manage button now promotes it to a managed server you can turn on or off, test, and edit here — after the same quick approval step as adding one by hand. Available for Claude Code agents.
  • You can turn a connected Telegram chat into a channel. Its messages are set up to land in one shared log your agent reads before it answers, it is set up so you can speak into the chat from the cockpit, and everyone writing in from outside your machine is clearly marked. A new Bridged Channels guide walks through it and is honest about the trade: bridging lets people you may not know put text in front of your agent, the permission mode is the real bound, and the channel log is your audit trail. (DOR-881)
  • The Bridge to a channel action lives in a messaging connection's settings. The same screen turns bridging back off (after telling you what that archives), lets you choose whether the chat hears about a failed or stopped turn, and says plainly why a chat can't be bridged when it can't, instead of a greyed-out button. (DOR-878)
  • You can now set up a group chat to become a channel, not just a one-to-one. Turning on Bridge to a channel for a group creates a channel where the group's messages land in a shared log your agent reads, and the agent stays quiet until it's mentioned. A broadcast channel still can't be bridged, and now says exactly that ("a broadcast channel, not a two-way conversation") instead of the old catch-all reason. A chat connected before this change carries no record of what kind it is, so it stays a one-to-one-only bridge until a new message comes through. (DOR-907)
  • When someone messages a bot you haven't set up yet, the claim card now offers two ways to answer: "Answer in a channel" sets up a room for that chat in one step, or "Answer privately" keeps it as a single chat, same as before. Choosing an agent still never happens automatically — nothing runs, and nothing is spent, until you decide. If a channel can't be set up (for example, the chat turns out to be a broadcast), the chat is still answered privately and the card says why. (DOR-882)
  • Adding your bot to a Telegram group now shows up right away as its own card on the Connections page, naming who added it and to which group. Pick an agent and choose Join, and that agent answers the group from a new channel. Ignore hides the card without changing anything; Leave actually removes the bot from the group on Telegram, not just from the list. (DOR-883)
  • If the bot gets added to a broadcast channel instead of a group, the card says so and only offers Ignore or Leave. A broadcast channel is one-way, so there is nobody in it for an agent to answer. (DOR-883, DOR-907)
  • A bridged Telegram channel's header now shows whether your agent sees every message there or only the ones that mention it, taken straight from Telegram's own privacy setting for the bot. Tap it to see why, and how to change it on Telegram's side. (DOR-879)
  • Anyone bridged in from Telegram is marked with the platform they're on, next to their name in the room's member list and beside every message they send, so you can always tell a person on your own machine apart from someone joining in from outside it. (DOR-879)
  • In rooms and chats, agents now look different from people at a glance. An agent's avatar is a square with a small robot badge; a person's stays round. Someone posting in from another chat app, like Telegram, gets a small icon too, so you can see where their message came from.
  • @mentions in room messages now show up as colored tags. Hover one to see who it is, agent or person. A mention of someone who has since left the room still shows, just as plain text.
  • Feedback, bug reports, and ideas you send from DorkOS are now trackable. Open "Feedback & requests" from the help menu to see everything this install has sent and where it stands: Received, Triaged, In progress, or Shipped with the version it went out in.
  • Add your email to a report and DorkOS emails you twice: once to confirm it arrived, and again when it ships. Nothing in between, and never anything else.
  • Sending feedback from the cockpit is richer and clearer. The dialog leads with your message, shows who it will be sent as (with a one-click "Send anonymously" that really withholds your name and email), and tucks diagnostics and the recent conversation behind an "Attachments & details" panel. You can open a full preview to see exactly what will be sent before you press Send — nothing leaves your machine until you do, and home paths and secrets are removed first. Bug reports include the recent conversation and a scrubbed slice of server logs so the team can see what led to the problem.
  • New ways to reach feedback: a "Send feedback" command in the command palette, a "Report" button on error toasts, and a "Report this crash" button on the crash screen — each opens the dialog ready to send.
  • Marketplace cards for messaging and service adapters now tell you what they become once installed: a messaging adapter reads "Adds a new way to reach your agents", and a service connector reads "Adds a new service your agents can act on", matching the two halves of the Connections page.
  • After you install one of these, the confirmation gives you a one-tap way in: "Open Messaging" or "Open Accounts" takes you straight to the right part of the Connections page to finish setting it up.
  • Channels and conversations can now go in sidebar groups alongside your agents. Drag one in, reorder it, or use "Move to group" in its right-click menu, and it stays where you put it (DOR-581)
  • Mute a channel or conversation from that same menu to dim it and stop it asking for your attention (DOR-581)
  • Right-click a sidebar section header, or press the "…" beside it, to see what you can do with that whole section. Channels and Direct messages can start a new one, mark everything read, and collapse. Recent can start a session. Agents can add an agent or a group, and finally gives you the sort and show settings that had nowhere to click before. Every header uses the same words for the same actions (DOR-601)
  • A group's own "…" menu can now collapse or expand that group, so every section in the sidebar folds away from the same place (DOR-601)

Changed

  • Everything that links your agents to the outside world now lives under one word: Connections. The session badge, the per-agent settings, the session panel, and the add and edit dialogs all say "Connection" now, instead of the old mix of "Integration", "Connector", and "Adapter".
  • Status messages about your network no longer say "Connection" — a word we're saving for the Connections page. The live-sync indicator now says "Live updates" (or "Offline" when it's down), a lost server link says "Server link lost. Check your network.", a stalled fetch says "Can't reach DorkOS", adapter tests say "Reachable" or "Not reachable" while trying to reach it, and tunnel and install errors name what actually failed instead of saying "Connection" (DOR-855)
  • Setting up Telegram or Slack asks who should answer first. It used to ask last, and let you skip. Skipping left you with a bot that reached nobody and no sign that anything was wrong. The agent and the connection are now saved together, and if the agent cannot be set, nothing is saved at all.
  • A chat that already reaches an agent says so. Pointing it at someone else now asks once — "This chat reaches DorkBot. Move it to security-auditor?" — instead of quietly creating a second route that never fires.
  • Slack asks what you want it for. It can be a place you talk to your agents, or an account they act on as you. Those are different things, so it asks which, and tells you where an account sign-in is kept before you pick.
  • Session strategy is in plain words. "One conversation per chat", "One conversation per person", or "A fresh start every message", each saying what it means.
  • The Slack setup form names Slack directly ("Slack channel settings", "respond in Slack channels?"), so its channels never get confused with your Channels list.
  • When you filter which chats reach an agent, the field reads in plain language: "Chat type", with options like "Direct message" and "Broadcast channel".
  • Old links still work. Anything that used to open the messaging pop-up, including the Settings link, now lands on the messaging half of the Connections page.
  • Cleared up copy that used "agent" for two different things at once. The sidebar's "Add more agents" row that actually opens the Runtimes tab now says "Connect more runtimes"; first-run setup, the Runtimes settings tab, and the status bar now name Claude Code, Codex, and OpenCode (or say "runtime") instead of "agent" there. Background-task labels for helper subagents now say "subagent" instead of "agent" too. Nothing about your fleet of named agents changed (DOR-853)
  • The Settings Runtimes page now shows one card per runtime instead of a single shared form. Each card shows what a new conversation with that runtime will start with, at a glance.
  • You can now set the model and thinking effort for every runtime, not just your default one. Before, only the default runtime's model and effort could be changed at all.
  • Pick your default runtime by clicking Make default on its card.
  • Claude Code's billing accounts and OpenCode's power source now live on their own runtime's card instead of somewhere else in Settings.
  • One shared control, "Where new conversations stop for you," sits below the cards and covers every runtime at once.
  • The Runtimes page now works on your phone: cards expand in place instead of needing a wider screen.
  • The Runtimes page now calls the three trust levels "Asks before acting," "Pauses at big steps," and "Full autonomy," so the words describe what each level actually does.
  • Settings is shorter and grouped. It went from twelve tabs to ten, sorted under plain headings: Agents & sessions, Access & privacy, System, and Add-ons. Appearance and Preferences stay at the top, and Remote Access stays a button at the bottom. The window, and the sidebar button that opens it, are titled "Settings" now, not "App Settings".
  • The default agent moves to the Agents page. It used to be its own Settings tab. Now you open an agent's menu on the Agents page and choose "Set as default" — right next to the "Default" badge that already tells you which one it is.
  • Integrations left Settings for the Connections page. Everything that tab did lives on the Connections page now, and old links to it still land there.
  • The Tools tab names what the tools do. The groups you can switch on and off are Messaging, Agent discovery, Connection management, and Scheduling, instead of the names of the parts under the hood.
  • Settings now opens at nearly the size of your window instead of a small box, so long pages like Runtimes have room to breathe and you scroll less (DOR-917)
  • Choosing where OpenCode gets its models is a shorter read: each choice shows its name and one line, and the extra detail (including the honest trade-off) appears once you pick a path, before you set anything up (DOR-917)
  • The arrow on a runtime card now opens and closes the card when you click it, the way it always looked like it should (DOR-917)
  • The Settings → Tools card that lets outside apps (Claude Code, Cursor, Windsurf) use DorkOS as an MCP server is now named "Connect other apps to DorkOS" — the old "External MCP Server" label didn't say which direction the tools flowed.
  • That card and an agent's Toolkit tab (where you give an agent tools from other MCP servers) now point at each other, so wherever you land you can find the other one.
  • The agent map (Discovery → topology graph) no longer says "Integration" anywhere: the edge label, the "Remove" button, the drag-to-connect hint, and the remove-connection dialog all say "Connection" now, matching the rest of the app.
  • A binding's chat-type badge on the graph now reads in plain language ("Direct message", "Group", "Broadcast channel", "Thread") instead of the raw platform value.
  • The help menu now leads with "Send feedback" and "Report a bug", adds "Feedback & requests", and keeps the GitHub option available but tucked below. Reporting on GitHub is no longer in the command palette.
  • Cmd+K now closes a dialog you opened from the sidebar, not just one you reached by a link. Before, opening the command palette left that window sitting behind it (DOR-839)
  • Rooms can now carry three new status notes for a bridged channel (a message that could not be delivered, a delivery blocked by your reply or start settings, and messages arriving faster than the channel can record them). This widens the set of note types a room may hold. The DorkOS cockpit ships in lockstep and understands them, but an older client pinned to the previous set will fail to read a room that contains one of the new notes until it is updated. This is the one part of the change that is not backward-compatible; everything else is additive. (DOR-881)
  • If you reach DorkOS through a reverse proxy, check that it passes WebSocket connections through — live output now uses them. The setup pages have working config for nginx and Caddy (DOR-927)
  • Running the Docker image and reaching it by a name rather than an IP (http://dorkos.lan:4242)? Add DORKOS_TRUSTED_HOSTS=dorkos.lan. Without it the page loads and the live updates never arrive — the Docker page explains why (DOR-927)

Fixed

  • Fixed the sidebar session list going empty for a runtime whose permission-mode names sit outside DorkOS's shared list — new sessions and status updates for it were silently dropped instead of shown (DOR-851)
  • Two people could end up messaging the same Telegram or Slack chat and quietly land on two different agents, with no warning either had happened — whoever connected the chat second had no idea their connection was silently going nowhere. Connecting a chat to an agent is now exclusive: trying to connect an already-connected chat tells you which agent already has it, instead of quietly losing the newer connection with no error.
  • Creating a new agent now reliably opens a working chat. The agent's opening turn runs in the new agent's own folder instead of whichever folder you were in a moment before, so its first message is saved where the chat looks for it. Before, the greeting could land in the wrong place: the chat showed "No conversation found" or the conversation seemed to vanish, and the new session sometimes appeared under the agent you had open just before.
  • Clicking an agent in the sidebar now opens the conversation you left off in. Before, it usually opened a blank chat instead, even while the sidebar showed that agent working. You only got the real conversation back if you had already opened that agent in the same browser tab, so a second window or a fresh reload almost always lost it. An agent with no conversations yet still starts a new one (DOR-928)
  • Click two agents quickly and you land on the second one, not whichever one happened to load first. The same holds if you click an agent and then open a channel, a thread, or a recent conversation: you stay where you last clicked (DOR-928)
  • If DorkOS cannot reach the server while opening an agent, it now says so and leaves you where you are, instead of dropping you into a blank chat (DOR-928)
  • "New Session" in the command palette starts a new conversation again, on the agent you are actually on. It had been reopening the agent's most recent conversation, which is what "Open Here" does (DOR-928)
  • Opening Settings or Tasks right after clicking an agent no longer cancels the click. Going somewhere real still does: click an agent, then open a different channel, and you stay in the channel (DOR-928)
  • You can keep several DorkOS windows open at once. Opening a third window used to make the whole app stop responding — activity dots froze, replies looked stuck halfway, reloads never finished, and a fourth window would not open at all. Those were all one problem, and it is fixed (DOR-927)
  • The Send button now greys out whenever it will not send: while your agent is still answering, or in a conversation you can only read. It used to look ready to press and quietly do nothing (DOR-850).
  • The "set up messaging" buttons on an agent's page led nowhere useful. One opened a Settings tab with no messaging controls; the other opened a tab that no longer exists. Both now open the Messaging section of the Connections page.
  • On a phone, the sidebar now closes as soon as you tap a conversation, an agent, or a link, so you land on the thing you picked instead of staring at the sidebar again (DOR-610)
  • "Replay setup" now clears the screen for the setup flow it restarts. If you reached Settings from the "Setup skipped" message, the Settings window used to stay open on top of the welcome screen (DOR-839)
  • Fixed a screen reader announcing "1 more subagents running" for the subagent overflow badge; it now says "1 more subagent running" (DOR-890)
  • Screen readers now get exactly one panel per Settings tab: switching tabs briefly created a hidden second copy of the panel with the same id, which could confuse assistive tech (DOR-693)
  • When you set up Telegram or Slack, required fields (like DM Access or an API key) show a red asterisk next to the label. Screen readers used to read that asterisk out loud as part of the field's name, like "DM Access star". Now they just read the plain field name, and the asterisk still shows for sighted users (DOR-651).
  • Opening a channel or a direct message now shows its name at the top of the screen, instead of always saying "Dashboard" (DOR-587)
  • Workspaces, Connections, and Feedback & requests now show their own name at the top of the page instead of "Dashboard" (DOR-919)
  • Settings panels no longer print their own title twice. Appearance, Preferences, Tools, Security, Privacy & Data, and DorkOS account each showed the same heading a second time just under the first one (DOR-918)
  • When a new message reorders the command palette while it is open, the highlight now stays on the top row until you move it yourself. It used to ride the old row down the list, so Enter opened something other than the row now sitting on top (DOR-699)
  • The keyboard shortcuts panel no longer lists Cmd/Ctrl+Shift+D (Dev Playground) in a production build, where pressing it did nothing (DOR-567).
  • "Move to group" no longer offers smart groups as a destination. Filing an agent into one made the row disappear from the sidebar, because smart groups only show members their rules pick (DOR-581)
  • In Shapes, pressing Escape to back out of "Make your own version" now puts your keyboard focus back on the button you opened it from, so the next Tab carries on from there instead of jumping to the top of the Shape list (DOR-513)

Security

  • Links your agent fetched now clear the same safety check as every other link in DorkOS before a chip can open them (DOR-921)

[0.57.0] - 2026-08-03

DorkOS 0.57.0 makes rooms a first-class way for you and your agents to work together, and puts every trust and permission decision in plain sight.

Added

  • Your agents can now browse and install marketplace packages from inside a session. The same marketplace tools an external client had (search, get, list, recommend, install, uninstall, create a package) now work for the agent you are chatting with, with the same approval step before anything is installed (DOR-429)

  • Your agents can now help run DorkOS itself. From inside a session, an agent can edit its own personality (traits, conventions, SOUL.md and NOPE.md), read the activity feed, see which agents were active recently, read and change your settings, and check whether a DorkOS update is available. System agents like DorkBot still refuse to have their identity changed, and settings changes only happen when you ask for them. These tools work for both your in-session agent and external MCP clients (DOR-430)

  • Setting up local models is now guided. When Ollama isn't installed, DorkOS explains what it is (a free, open-source app that runs AI models right on your computer, so nothing you type ever leaves it) and offers the simplest way to get it: a one-click install on macOS (Homebrew) and Windows (winget), or the official command to copy on Linux. DorkOS never asks for your password, and it checks that Ollama is actually running before saying it worked (DOR-439).

  • Drive DorkOS from the command line: new dorkos agent, dorkos task, dorkos activity, and dorkos version --check commands. List, inspect, and create agents; list, create, and trigger scheduled tasks; read the activity feed; and check the running server's version against the latest release (it still answers from a local cache when no server is running). Every command takes --json for clean, machine-readable output, so an agent in any runtime can operate DorkOS through the terminal. Run any command with --help for its options (DOR-434)

  • New agents now come with built-in knowledge of how to run DorkOS for you. Every agent you create, and DorkBot itself, gets a set of first-party skills that explain the dorkos command line and the in-session tools for making agents, scheduling tasks, installing marketplace packages, reading activity, and changing settings. The skills update themselves when you upgrade, and any skill you have edited by hand is left untouched (DOR-433)

  • New guide: how to ask your agents to run DorkOS for you. It walks through what you can ask an agent to do (create agents, schedule tasks, install packages, change settings, read your activity) and lists the dorkos commands that do the same from a terminal (DOR-436)

  • Your agents can now ask a running DorkOS "what can I do here?" and get a live answer. A new dorkos capabilities command (add --json for raw output), a list_capabilities tool inside sessions and for external clients, and a dorkos://capabilities resource all return the same up-to-date catalog: every capability the registry carries, with a short description and how risky it is. Agents no longer have to guess from static docs (DOR-442)

  • The API reference now documents capabilities from the registry automatically. The live capability catalog (GET /api/capabilities/catalog) and the activity feed (GET /api/activity) show up in the API docs at /api/docs, each with its request and response shape. As more capabilities move onto the registry, their endpoints appear in the docs on their own, with no separate step to keep in sync (DOR-444)

  • New dorkos call <capability-id> command: invoke any DorkOS capability by id from the command line and get the result as JSON. Pair it with dorkos capabilities to discover what's available, then call one with --input '{...}' (or --input-file). Unknown ids and invalid input come back as clear errors. This gives an agent in any runtime a single, uniform way to drive DorkOS (DOR-443)

  • The Activity feed now names which agent did what. When one of your agents changes a setting, updates another agent, or installs a package, the entry shows that agent's name instead of leaving you to guess. DorkOS hands each agent its own identity when it starts a session, and nothing about how your agents work changes.

  • Save the setup you are working in as your own Shape. The Shape switcher now has Make your own version next to Reset to defaults: name your copy, and it keeps the extensions you have turned on and the way your workspace is arranged. Anything DorkOS cannot see stays exactly as the original Shape had it — it will never erase a setting nobody changed, like panels closed by a page reload — so your copy only records what you actually chose. Escape backs out one step at a time: it closes Name your version first, the switcher second. And if you walk away while a copy is still saving, DorkOS still tells you how it went (DOR-402, DOR-453)

  • End a line with a backslash and press Enter to keep typing on the next line — the backslash disappears. It works anywhere in the message, not just at the end, and two backslashes in a row still send (DOR-452).

  • Option+Enter (Alt+Enter on Windows) now starts a new line instead of sending (DOR-452).

  • The keyboard shortcuts panel now lists what the message box does: new line, keep typing on the next line, clear, and what one Escape does first when several things could happen at once (DOR-452).

  • A Session panel behind the ⋯ at the end of the status line, on click or Cmd+Shift+.. It lists everything about the session with its live value — directory, git, runtime, model, context, cache, usage, permissions — plus sound and background refresh, and diagnostics: connection, how far the live link has caught up, how many messages are waiting, and the session id. On a phone it opens as a bottom sheet, most urgent first (DOR-452).

  • Copy diagnostics in the Session panel puts everything above on your clipboard as one block of readable JSON — the thing to paste into a bug report (DOR-452).

  • Pin any session row to keep it in the status line even when it has nothing to report, and Reset pins to clear them all. Your pins are saved with the rest of your settings rather than in one browser, so they follow you to your other windows, the desktop app, and Obsidian — and you can just ask an agent to pin something for you (DOR-452).

  • When the conversation window passes 85% full and your agent is not mid-answer, a one-click Compact appears right beside the percentage instead of on a row of its own. It waits for the turn to finish, because compacting cannot start while your agent is still working (DOR-452).

  • DorkOS can now ask you before an agent does something you cannot undo. When an agent requests approval, a card appears on your dashboard saying what would happen in plain words, with Allow and "Don't allow" buttons and how long you have to decide. The card shows up in every window you have open and disappears everywhere as soon as you answer (DOR-447). The countdown bar reaches the browser, including after a reload or in a second window.

  • A Session tab in the right panel, next to Agent Profile. It shows everything about the session you are in and stays open while you work: whether the live connection is healthy, how long it has been since anything arrived, the full project folder, which model actually answered you, how full the conversation window is and what is filling it, how much came from cache, what your plan or spend looks like, and which helper agents are running or have finished this turn. Handy when a reply seems stuck and you want to see whether the problem is the connection or the agent. Copy diagnostics puts the whole picture on your clipboard for a bug report.

  • Agents now have to ask before anything they cannot take back. Every DorkOS action an agent can run through the capability catalog carries a size: read only, ordinary change, or cannot be undone. Reading is free, ordinary changes go ahead and get logged, and anything that cannot be undone stops and waits for you, with plain-words instructions for the agent on what to do next. The check runs on every path an agent can reach: the API, the tools inside a session, and the tools an outside app like Claude Code or Cursor uses. Tools that are not in the catalog are not covered by this check (DOR-448).

  • Your approval card now names the agent that asked and how consequential the action is, so you can tell who wants what before you answer (DOR-448).

  • The activity feed now records what an agent tried and was not allowed to do, not only what it did (DOR-448).

  • dorkos call takes an --approval <token> option, so an agent working from the command line can finish the same ask-and-retry flow (DOR-448).

  • New guide, Action Approvals, explaining when DorkOS asks you before an agent does something that cannot be undone: what the card on your dashboard shows, why an agent cannot skip the question by leaving its name off, why an approval works once and runs out after two hours, and how the activity feed names which agent did what (DOR-451).

  • See when an agent is waiting on you, from any screen. A marker in the top bar says how many requests need your approval, and clicking it opens them right there so you can answer without leaving what you were doing.

  • Requests clear themselves once they run out of time, so you are never looking at one you can no longer answer.

  • Three new pages on dorkos.ai describe what shipped: Action Approvals, Agent Attribution, and the Capability Catalog (DOR-428)

  • Press Escape once while you have something typed in a chat and a quiet note now appears just above the composer: Press Esc again to clear. Pressing Escape twice has always wiped a draft, but the first press did nothing you could see, so nobody ever tried the second one. The note shows up only while that second press would really work, and it is gone the moment it would not (DOR-479)

  • Standing permissions now work. When you answer an approval with "and stop asking about this", DorkOS remembers it for one agent doing one action, for as long as your trust window says, and lets that agent get on with it without interrupting you. Every time it does, your activity feed says so, and one line tells you which permission let it through (DOR-501)

  • You now decide which extensions may run their code inside DorkOS. That covers both halves of an extension: the part that runs on your computer, which can reach anything DorkOS can reach, and the part that runs on the DorkOS page in your browser, signed in as you. Until you say yes, neither one runs. The first time an extension tries, it waits: Settings → Extensions shows it with an Allow it to run button. One click and you are done. After that, editing, testing, and reloading that extension all work with nothing further to click, and turning it off and on again does not ask you again. Stop it on the same card takes the permission back and stops the extension right away. Extensions that ship with DorkOS never ask, because you already installed DorkOS.

  • Your agents can see which extensions you have allowed, but they cannot add to the list. An agent that could allow its own extension would be approving its own code, so that answer is yours alone, alongside your other protected settings. The same limit applies as to those: with Require login off, which is the default, this holds against any agent that says who it is, and turning Require login on closes the rest.

  • Updating or reinstalling an extension asks you again. New code is a new decision, even under a familiar name. Editing an extension you already allowed never re-asks, so building your own is still one click, once.

  • A web page you visit cannot allow an extension for you. Requests to allow or stop an extension now have to come from DorkOS itself.

  • Tell DorkOS to stop asking about one thing. An approval card now carries a third button, "Allow, and stop asking about this for 8 hours", that covers one agent doing one action, for a stretch of time you choose. Turn it on in Settings, under Security (DOR-501)

  • Find and end a standing permission from either of two places: Settings under Security, or the approvals marker in the header, which now shows a quiet count when trust is live. Each one has a Stop trusting button (DOR-501)

  • Choosing a trust level that skips prompts now says what it does not cover: actions on DorkOS itself, like removing packages, still ask. The line appears wherever a level is picked: the session picker, a channel binding, and a scheduled task (DOR-501)

  • Group conversations now have somewhere to live. A room holds several people and several agents in one running conversation, keeps every message forever, and remembers where each member left off reading (DOR-524)

  • Rooms come in two shapes: channels for a topic and direct messages for one-to-one. A side conversation hangs off the message it answers rather than taking the room over (DOR-524)

  • An agent keeps the same name on everything it has ever said, even after DorkOS rebuilds its records in the background (DOR-524)

  • Refuse to start a second DorkOS against the same data directory, and say which one already has it. Two servers sharing one directory used to corrupt each other's agents and history (DOR-532)

  • Channels and Direct messages now sit in the left sidebar, beside your agents. Click one to open it and read what has been said. Both sections collapse, and DorkOS remembers whether you left them open (DOR-525)

  • Make a channel straight from the sidebar: hit the + beside Channels, type a name, press Enter. Start a one-to-one conversation the same way — hit + beside Direct messages and pick an agent (DOR-525)

  • A room shows who is in it, groups messages by who is talking, marks where one day ends and the next begins, and draws a line at the first thing you have not read. Open the room and the line stays put while you catch up; the unread count beside it clears (DOR-525)

  • Where you left off reading is remembered by DorkOS, not by your browser — so it is the same on your laptop and your phone (DOR-525)

  • Anything posted into a room you have open appears straight away, with no reload (DOR-525)

  • The desktop app keeps running when you close its window, so your agents carry on working (DOR-538)

  • A DorkOS icon in the macOS menu bar shows how many agents are working, and brings the window back (DOR-538)

  • The first time you close the window, DorkOS tells you it is still running, and offers to quit if that is what you meant (DOR-538)

  • Quitting while agents are mid-task now asks first: "3 agents are still working. Quit anyway?" (DOR-538)

  • "Open in New Tab" opens a second DorkOS window instead of sending you to your web browser (DOR-538)

  • Open your agents in tabs in the desktop app, the way you already work in a browser or an editor. The tab strip runs across the top of the window, and the + button opens another one (DOR-540)

  • Those tabs tell you what your agents are doing while you are looking somewhere else. A tab lights up when its agent starts working, needs an answer from you, or hits a problem. You can leave five agents running and glance at the strip to see which one wants you

  • Keyboard shortcuts for the desktop app's tabs: Cmd/Ctrl+T opens a tab, Cmd/Ctrl+1 through 9 jump to one, and Cmd/Ctrl+Shift+[ and ] step between them. Cmd/Ctrl+W closes the tab you are on, and closes the window once it is the last tab. You can also reach the strip with Tab, move with the arrow keys, and close a tab with Delete. The × on a tab closes it too

  • Your desktop tabs come back after a reload, and each window keeps its own set

  • "Open in New Tab" in the command palette opens an agent without losing the one you were reading. In the desktop app that is a DorkOS tab; in a browser it is a browser tab, which you can bookmark or drag onto a second screen yourself

  • The desktop app's command palette also has "Open in New Window", which opens a second DorkOS window on the agent you picked. Handy for a second screen. A browser has no separate answer to that, so the choice is not offered there

  • See the address DorkOS is running on in Settings → Server, with a button to copy it and a button to open it in your browser. The MCP endpoint is right below it, ready to paste into Claude Code, Cursor, or Windsurf (DOR-539)

  • Agents now answer in rooms. Post in a channel or a direct message and every agent the message is meant for takes a turn and replies, right there in the conversation. Each agent keeps its own thread of context per room, so what you say in #backend stays separate from your one-to-one chat with the same agent (DOR-526)

  • A new setting, rooms.maxAgentDepth, caps how many replies in a row agents may send each other before a room stops them and says so in the conversation. Messages from you start the count over, so a room that has gone quiet is one message away from running again. Set it to 0 to turn automatic replies off (DOR-526)

  • Two more settings put a ceiling on what automatic replies can cost you: rooms.maxAutomaticTurnsTotalPerHour (240 by default) caps how many DorkOS runs in an hour across every room you have, and rooms.maxAutomaticTurnsPerRoomPerHour (60) stops any single room using up that whole allowance. Both count no matter who the message looked like it came from, and the room says so when it stops. These are the ones that hold if Require login is off — see the note below (DOR-526)

  • Agents in a room now show their emoji and colour, the same way they do everywhere else in DorkOS (DOR-526)

  • Say something in a channel or a direct message. Rooms used to be read-only from the cockpit — the line at the bottom said so — and now there is a message box: Enter sends, Shift+Enter starts a new line, and everyone in the room, agents included, sees what you wrote (DOR-526)

  • Your words are never thrown away. The box empties as soon as you press Enter, so you can start the next sentence right away; if a message can't be sent, it comes back into the box — above whatever you've typed since — with a note saying what went wrong. That holds even if you've moved to another conversation in the meantime, or sent another message after it: the words go back to the room you wrote them in, and are waiting there when you return (DOR-526)

  • Half-written messages keep. Start typing in one channel, go read another, come back — your sentence is where you left it. Each channel and DM keeps its own (DOR-526)

  • A direct message can hold several agents. The "+" beside Direct messages now lets you pick more than one: type a name and press Enter to add it, then keep going. Everyone you pick shows as a tag, so you can see who is in the conversation before you open it. One agent gives you a one-to-one; two or more give you a group named after the people in it. Backspace takes back the last agent you added, and Escape closes without opening anything (DOR-571)

  • Channels and direct messages now have a docs page. It explains what a room is, how a channel differs from a direct message, and how both differ from a session, plus how to create each one (DOR-565)

  • Channels and direct messages now have a menu, on right-click and on the "…" button beside the row: mark as read, add agents, members, rename, edit topic (channels), and archive. It matches the menu agent rows already have.

  • A members panel shows who is in a room, lets you add or remove agents, and — for the first time — lets you choose when each agent replies there: to everything, when spoken to, only when @mentioned, or not at all. Until now that setting was fixed the moment an agent joined.

  • On a one-to-one conversation, the menu has a shortcut straight to that agent's profile.

  • When you add agents to a room, each one drops off the list the moment it is in. If one doesn't make it, it stays picked so you can try that one again without adding the others twice.

  • See the exact commands a package sets up before you install it. The install preview now lists each one, word for word, next to a plain description of when it would run (DOR-635)

  • See the jobs a package will schedule, when they run, whether they start switched on, and how much each one may do without asking you. Shapes used to create timed jobs that no preview mentioned at all (DOR-635)

  • You can now pick the agents when you make a channel. The + next to "Channels" opens a dialog that asks for a name and who's in it, instead of just a name. A channel with nobody in it has nobody to answer you, so this is now one step rather than a thing you couldn't do at all. If you really want an empty one, "Create it without agents" is still there (DOR-599)

  • You can add agents to a channel any time afterwards, from three places: the row of faces at the top of an open channel, the "Add agents" button in a channel with nothing in it yet, or a right-click on the channel in the sidebar. All three open the same panel, which is also where you remove someone and set how each agent decides when to reply in that channel (DOR-600)

  • Two new settings for rooms: rooms.replyWaitMinutes (how long a room waits for an answer, 10 minutes by default) and rooms.lateReplyCeilingMinutes (when it gives up and says the agent could not finish, 60 minutes by default). (DOR-621)

  • Your channels and direct messages are now in the command palette. Press Cmd+K and, before you type anything, you see what is unread, most pressing first. Type # to jump to a channel by name, or @ to open a conversation with an agent. The palette now tells you what each of those keys does, so you do not have to know already.

  • Sidebar groups can now hold channels and direct messages alongside your agents. Put the channel, the conversation and the agent for one project in the same group, sorted and filtered together. Grouped rooms move out of the Channels and Direct messages lists, so each one shows up in exactly one place.

  • Type @ in a channel or a direct message and a list of everyone in it appears — people first, then agents. Pick one and the message is addressed to them: an agent you name will answer, a person you name just gets told. Arrow keys move through the whole list, Enter takes the highlighted one, and typing narrows it down.

  • The picker writes the name that actually reaches someone, which is not always the name on screen. An agent called "Mio Clicker PM" answers to @mio-clicker-pm, and typing its full name by hand reaches nobody at all. Pick it from the list and the right thing gets written for you.

  • An agent that no @ name can reach still shows up in the list, greyed out and saying so, instead of quietly going missing.

  • Ask an agent how DorkOS works and it looks the answer up instead of guessing. Agents now come with a skill that searches the DorkOS documentation. It reads the one page that answers your question, then tells you which page it came from. When the docs do not cover something, it says so plainly rather than inventing an answer. DorkBot picks this up the next time DorkOS starts. Every agent you create from now on has it too (DOR-661)

  • Connector packages now stand out in the Marketplace. Packages that connect your agents to services like Gmail or Slack get their own CONNECTOR badge, and a new "Connectors" filter in the sidebar shows only them. The plain "Adapters" filter still includes them (DOR-704)

  • The features page on dorkos.ai now lists Connections, marked alpha: connect a service once, and you always see where your sign-in lives (DOR-704)

  • DorkBot now asks what kind of work you do, right after you pick its personality during setup. Answer with a tap or type your own, or skip it and never be asked again. Your answer stays on this machine: it goes to your own agents so they know who they work for, and it is never included in any telemetry payload. Tests hold that line. Every agent session now opens knowing your name, your work, and your tools, once you have shared them. If you set up DorkOS before this question existed, DorkBot asks once in the sidebar, with a one-tap "Don't ask again". (DOR-705)

  • After you answer, DorkBot suggests a couple of services that fit your work, like Gmail and Greenhouse for hiring. One line, no setup pushed on you. (DOR-705)

  • Saving your Composio or Nango key now turns that connector on instantly — no restart. Delete the key and it switches off the same way (DOR-371)

  • Your agent can now connect services when you ask. Say "connect my Gmail" and it replies with the sign-in link and a plain sentence about where your login lives; attaching the account to a session still asks you first (DOR-371)

  • Accounts connected through your own Nango server now give your agent a tool that can call that service's API — your logins stay in your database the whole time (DOR-415)

  • Offer a remote tool server as something you can connect to, by listing it in your config file under connectors.rawMcpServers (DOR-371)

  • A new Connections screen lets you link Gmail, Slack, and other services to DorkOS. Paste your provider key once, click Connect on a service, sign in, and the account appears with a plain sentence about where your sign-in lives. You can hold two accounts of the same service — "Gmail (work)" and "Gmail (personal)" — and disconnect any of them anytime (DOR-708)

  • Sessions grew a quiet Connectors section in the Session panel: attach a connected account to the session you're in (you see the custody sentence again before you confirm), detach it with one click, and get told plainly when an attached account has expired and needs a reconnect (DOR-708)

  • Do you use more than one Claude Code account on the same computer, maybe one per client? You can now choose which account DorkOS runs your work on, and switch any time. Your session list shows work from all of your accounts together, and each session is labeled with the account it belongs to. Reopening an older session always runs it on the account that created it. This setting only changes DorkOS. Your terminal and the claude command keep working exactly as before.

  • Agents in a channel now stay in the conversation after you talk to them, instead of needing an @mention on every message. Ask one something and it keeps answering your follow-ups for about ten minutes, or until five messages from other people have gone by — whichever happens first. Talking to it again starts both over

  • This is a new setting — Engaged, on the room's quiet-to-loud scale — and you pick it per agent in the room sheet. The other settings are all still there

  • Two settings control how long that lasts: rooms.engagedWindowMinutes (10) and rooms.engagedWindowPosts (5). Set either to 0 and an agent goes back to needing an @mention every time

  • You can now see when an agent is working on your message in a room, and when it's taking longer than usual. A line under the message box names whoever picked it up and counts how long they have been at it — "Kai is working on it · 42s". Past three agents it counts them instead, and you can tap it for the names

  • The line is honest by design. It shows only while an agent really has your message in hand, and it goes the moment the answer lands or the room explains why there isn't one. Nothing an agent decides can switch it on or keep it on

  • It survives a bad connection. The room repeats the signal every 10 seconds, so opening a room in the middle of a long reply — or coming back after your connection dropped — tells you what is happening within 10 seconds instead of showing you a room that looks empty. If the server stops, the line clears itself rather than sitting there saying "working" forever, and if your browser loses the room's live connection the line goes instead of freezing

  • You can now reply to a single message in a room instead of answering into the whole conversation. Hover a message and a small toolbar appears on it with "Reply in thread" — your reply gathers under the message it answers, where everyone in the room can follow it without it burying the conversation around it. Threads have always shown up in the cockpit; until now the only way to add to one was through the API

  • Right-click a message for the same actions, or press and hold on a phone for them to slide up from the bottom. It is the same short menu either way, and the same one the sidebar already uses. On a touch screen the press-and-hold is the only way in — tapping a message reads it, it doesn't offer you a menu

  • Alongside replying, the menu copies a message's text — telling you it did, or that it couldn't — and offers to mention whoever wrote it, dropping the exact name that reaches them into the message box so you can be sure it will land. Mentioning is left out when nothing would come of it: on your own messages, and on anyone an @ cannot reach

  • The menu works without a mouse, and it stays out of your way. Tab moves between messages, one press each, however many actions a message has. On the message you're on, an arrow key or Enter steps into its actions, arrows move along them, and Escape comes back. Choosing "Reply in thread" puts the cursor straight in the message box, pointed at that thread

  • While the box is pointed at a thread it says so, right above where you type, with a way to point it back at the room. It stays pointed there after you send, so a back-and-forth inside a thread does not mean choosing "Reply" again for every sentence

  • Replying to a reply keeps you in the same thread rather than starting a new one under it. Rooms stay one level deep on purpose, so the conversation reads the same way for everyone

  • A reply reaches the agents you name in it, exactly as a message to the room does. Say @ana in a thread and Ana picks it up, and answers in that same thread

  • One line at the top of the sheet says what the room will actually do — "Two agents will answer you here", "Only @mentions get an answer here", "There is nobody here to answer you" — with a small meter beside it. It names the odd one out when there is exactly one worth naming.

  • Taking an agent out of a room can be undone, the way archiving a whole room already could. Putting it back restores how loud it was, rather than resetting it to what a brand-new arrival gets. Take two out in a row and you are offered Undo for each of them.

  • A one-to-one says what a second agent would do to it — "Adding a second agent turns this into a group conversation" — before you add one, instead of leaving you to work it out from the faces afterwards.

  • Agents arrive and leave instead of blinking in and out. An agent you add opens into place and glows once, so you can see where it went. One you remove collapses its row, so the Undo offer refers to something you watched happen. Opening a scale slides it open. An agent that is working has a pulsing dot rather than a still one. All of it stops moving — without anything disappearing — if your system is set to reduce motion.

  • You can react to any message in a room. Hover it and the toolbar now starts with your three most-used emoji — one click to say "got it" to an agent without spending a message. The 🙂+ beside them opens a searchable picker for everything else, and on a phone a long press brings the same row up in the drawer.

  • Reactions show up under the message as small pills. Yours are outlined in orange, and clicking one again takes it back. Hover a pill to see who reacted, by name. New ones pop in as they land, and they arrive live — someone reacting in another window shows up in yours without a reload.

  • Your reaction reaches the agent quietly. It lands in the agent's memory of the room as an acknowledgment: no reply, no new turn, nothing to pay for.

  • Choose which model new chats start on, and how hard they think. Each runtime gets its own pair of settings, because a model name only means something to the runtime that offers it — so Claude Code, Codex and OpenCode each have their own. Leave them alone and nothing changes: every runtime keeps picking for itself, exactly as before. Set one and every new chat on that runtime starts there, while chats you already have keep what they are running with. OpenCode gets a model setting but no thinking setting, because OpenCode gives no way to ask for more or less thinking and we would rather say so than pretend. Room agents benefit most: until now a room reply had no way to say which model it should run on. You choose them in Settings → Runtimes; on disk they live in ~/.dork/config.json.

  • Threads now open in a panel beside the room. A message with replies shows one quiet line under it — "↳ 3 replies · last 9:45 AM" — and clicking it opens the whole thread next to the conversation, with its own box to write in. The room's own scroll stays the room's, however long a thread gets. On a phone the thread takes the screen and a Back button returns you.

  • A thread with replies you have not read shows that line in colour, with a count of what is new. It is worked out from where you left off in the room, so it agrees with the "New messages" line a few pixels above it.

  • The waiting line follows you in. When an agent is working on something inside a thread, "Kai is working on it" appears in the panel rather than under the room, so the wait is shown where the work is happening.

  • A thread has an address. The link in your browser bar now names the open thread, so a refresh keeps it open and a link you paste to somebody opens the same thread you were reading.

  • Give one agent its own model and its own thinking level, instead of one answer for the whole machine. The agent that reviews your diffs can run on the big model while the one watching a room runs on the quick one. What an agent says about itself wins; anything it leaves unsaid falls back to your default for that runtime, and an agent that says nothing keeps working exactly as it did today. Room agents get the most out of this: a room reply now starts on whatever the agent it addressed asked for. You choose them in that agent's Config tab; on disk they live in its own .dork/agent.json.

  • Settings → Runtimes now lets you choose what a new chat starts with: which runtime, which model, and how hard it thinks. The runtime setting has been in DorkOS all along with nowhere to change it — this is its first screen. Model and effort are per runtime, because a model name only means something to the runtime that offers it. Change anything and DorkOS tells you the truth about when it takes effect: new chats start with it, chats already running keep what they have.

  • Under that card, every agent that runs on something else. Agents that are simply set up differently are listed plainly; agents whose setup has stopped working — a runtime you have not connected, a model that is no longer offered, a thinking level on a runtime that has none — come first, in amber. Click any of them to land in that agent's own settings. When every agent is on your defaults, the list isn't there at all.

  • Model and thinking level joined the runtime dropdown in an agent's Config tab, each wearing a small chip that says where the value came from: "server default · Opus", or "set here" when this agent picked its own. The chip is also the undo — click a "set here" chip and the one thing it offers is going back to your default. On a phone the rows open a sheet from the bottom with the same choice at the foot.

  • Where a thinking level cannot work, DorkOS says so instead of hiding the row: "Not supported by OpenCode", or "This model doesn't take an effort setting". If one is already saved there, it says that too, and lets you clear it.

  • A Threads list in the sidebar, above your channels. Every thread you started or replied in is there, whichever room it lives in, with the most recently answered at the top. Each row shows what the thread was about, which room it is in, and how many replies it has — so finding your way back to a conversation no longer means remembering which channel it happened in and scrolling for it.

  • A thread with replies you have not read shows the count beside it, the same way an unread channel does. Reading the room clears it, because a thread shares its room's place-marker.

  • Clicking a row opens that room with the thread already open beside it, on the exact thread you clicked. The section collapses like the others, and DorkOS remembers whether you left it open.

    You are in a thread because you wrote it or answered in it — there is nothing to follow or unfollow, and nothing to keep tidy. The section only appears once you are in a thread, so a fresh install is not given a heading it cannot fill.

  • A small dot beside a room in the sidebar while an agent is working in it. Ask a question in one channel, go and read another, and you can still see that the first one is busy — without opening it and without wondering whether anything happened. The dot appears the moment an agent picks the work up and goes out when the answer lands.

  • It is honest about how many: a screen reader hears "2 agents working" when two of them are on it.

    The dot is never a guess. It exists exactly as long as real work does, so if DorkOS stops running mid-answer, every dot goes out within half a minute rather than sitting there claiming something is still happening.

  • dorkos doctor now finds the problems that used to only show up as strange behaviour later: a room whose saved conversation has gone missing from disk (the reason an agent sometimes answers as if it has never met you), agent messaging rules DorkOS could not read, saved chat integrations whose settings are unreadable, chat connections pointing at an agent or an integration that no longer exists, and the same agent id claimed by two different folders.

  • Those checks need DorkOS to be running, so they live behind dorkos doctor --deep. If DorkOS is not running, it says so and skips them — that is not a problem with your setup.

  • dorkos doctor --json prints the same results as plain JSON, so you can pipe them into another tool.

  • dorkos doctor now also checks how many files your system lets DorkOS keep open at once. Too few, and DorkOS starts failing in ways that never mention files.

  • Rooms now tell you when an agent has gone quiet because it is waiting on you. If it stops to ask permission for a tool, or asks a question, and nobody has answered a minute later, the room says so and points you at its session — instead of sitting there looking busy until the request quietly expires. Quick approvals stay quiet, so a room does not fill up with notes about pauses that lasted seconds.

  • Every room has a Stop button in its header while agents are working. It stops the work; it is not something you can ask for in a message, because an agent stuck in a loop will just reply to that.

  • When your agent asks permission and you answer, the card now settles into the conversation as a receipt — a one-line record of the ask and your answer, right where it happened. Allowed and denied requests say so by name; a request nobody got to says it expired and how long it waited. Answering several at once leaves one line with the details a click away.

  • When DorkOS decides not to do something — an agent skips a message, a room runs out of automatic replies, a prompt times out with nobody watching — it now writes one line saying exactly why. The ones you were never told about are recorded as warnings, so they stand out instead of blending into the ordinary chatter. That is what makes "the room just went quiet and I don't know why" a question with an answer.

  • New: dorkos debug answers the questions you can only ask while DorkOS is running. Which agents are working right now and for how long, what was recently declined and why, which conversations have a live connection, and whether a room's agents still have their history on disk. It reads ids, counts and times — never the text of anything anyone wrote — and stores nothing. Run dorkos debug --help to see the subjects.

  • Reopening a conversation now shows the permission asks and answers, right where they happened. What you allowed, what you denied, and what ran out of time before anyone got to it are kept with the turn they belong to, so the record is still there tomorrow — not just for as long as the tab stays open.

  • Turning on Full autonomy now asks you to acknowledge what it means — once, if you tell it to stop asking. Tick Don't show this again and DorkOS writes down the date and stops asking; leave it unticked and it asks again in your next conversation, as before.

  • Settings → Security shows the date you acknowledged it, with a Reset button. Resetting brings the confirmation back the next time you reach for Full autonomy, and takes effect everywhere within about half a minute — a tab you left open can skip it once more before it catches up. It changes nothing about a conversation that is already running — only the asking comes back.

  • Tell DorkOS how much new sessions may do — once. Settings, in the card that already holds the model and effort a new chat starts with, now asks where new chats should start: Ask first, Act, or Full autonomy. One choice covers every agent you run — the three words mean the same thing whichever one you are talking to — and underneath, a line per runtime says what that choice actually means for it, including where a runtime cannot pause to ask. Ask first stays the out-of-the-box default, and chats you already have keep what they are running with. Changing model, effort, or trust level before your first message no longer silently locks the chat to Claude Code: the runtime you actually start on is what applies.

  • Something different for one agent? "Customize per runtime" opens a row for each, with the same dial and a way back to the shared setting.

  • Make it the default right where you decided it. After you change a chat's trust level, a quiet line appears under the dial for a few seconds — Start every new session in Act? Make default · Dismiss — so the habit is caught where it happens instead of costing you a trip to Settings. It stays quiet when that stop is already where new chats start, and it takes no for an answer for the rest of the conversation.

  • Full autonomy is a choice you acknowledge once, in Settings or right where you just made it. DorkOS asks what it means at the moment you choose it and writes down that you read it; from then on new chats start without asking, and Settings keeps a quiet note saying so with a link to change it back — naming the agent, when it is only set for one.

  • Say why you said no. When an agent asks permission and you want to refuse, the approval card now offers Add a reason — one line, entirely optional. What you type goes to the agent with the refusal, so instead of trying the same thing again it can take another route. Deny on its own still works exactly as before: click Deny, press Esc, and nothing slows down.

  • The transcript says whether the agent heard you. A denial you explained reads You denied rm -rf node_modules — agent was told why. A denial you did not explain says only that you denied it, and a request that ran out its ten minutes still reads Expired — denied, because a clock explains nothing. The line only claims the agent was told when the reason actually reached it.

  • DorkOS now tells you when something is running without asking and nobody is there to answer. If a chat integration or a scheduled task is set to Full autonomy, a quiet amber line sits under the header on every page: The Deploys integration and the Nightly cleanup task run without asking. Nobody is watching, so nothing waits for your approval. It names them rather than counting them, and puts a button beside the words that takes you to the integration or the task so you can change it in a couple of clicks.

    This is the one place that fact had no home. A chat you are sitting in front of shows its trust level in the status strip, right where you are looking. A schedule that fires at 3am and an integration that answers a message from your phone show it only on the screen that configures them — the screen you are not on. The banner appears the moment you turn one on, stays while it is true, and disappears on its own when you dial the last one back. There is nothing to dismiss and nothing new to configure.

  • See every file and link your agent touches, live. Each reply now carries a row of small chips — one per file, page, or command the agent handled — and each one moves the way its job moves: reading sweeps across the name, searching passes a beam through it, editing scribbles and counts the lines as they land, a new file draws its own outline, a deleted one is swallowed by the bin and stays behind, struck through, so a deletion is never invisible. The moment a job finishes, its chip goes still. Nothing you can see moving is over.

  • The row stays short, and nothing gets lost. Only the four newest chips stay out front; older ones slide into a small pile beside them that counts what it holds. When the reply is done, the whole thing folds into one quiet line — 📖 21 · ✏️ 3 +34 −11 · 🌐 9 — and show all opens the full list, which you can filter by what happened and read either grouped or in the order it happened. A file that was read and then changed does not get a second chip: the one already there turns into the edited one where it stands.

  • Click a chip to open that file or page beside the chat. Hovering one tells you the whole story of it — every time it was touched, in order.

Changed

  • When your agent's sign-in stops working, chat now shows a clear message with a "Fix sign-in" button that takes you straight to Settings to sign in again, instead of a raw error. Works for Claude, Codex, and OpenCode.

  • You can now change how OpenCode is powered without disconnecting first. A connected OpenCode shows a Change link that reopens the power-source picker with your current source labeled ("Currently: On your computer (Ollama)"), so switching from your own computer to the cloud, or the other way, is one clear choice (DOR-427).

  • The model menu for local (Ollama) models now offers only the models that are actually on your computer, so you never pick one that isn't installed and watch the turn fail. Add more models from the local panel as before (DOR-427).

  • Status bar settings now sync, and your agents can change them for you. What the status line shows used to be saved only in the browser you set it in. Now it lives with the rest of your settings, so a choice you make in one window shows up in your others and in the desktop app, and you can just ask an agent to change it. In this same release the ten per-item on/off switches became a single list of pinned items, so read the status line entry for what that means and what carries over (DOR-431)

  • A runtime that shows "Ready" now still lets you fix its sign-in. "Ready" only checks that a key or login exists, so a stale key or an expired login can still read Ready. Open Settings, then Runtimes, and use the quiet "Fix sign-in" link (or "Change" for OpenCode) to sign in again or paste a fresh key, without disconnecting first.

  • The message box no longer greys out while the session is busy, so your cursor and your place in the text stay put. Sending is still held until the session is free (DOR-452).

  • Opening a session on a phone or tablet no longer pops the keyboard and scrolls the page — the message box only takes focus on desktop (DOR-452).

  • The hints under the message box now teach the backslash trick and stop rotating after you have seen them three times through. "Press Esc twice to clear" is gone; we would rather not advertise the destructive one (DOR-452).

  • The status line is now quiet by default: it shows who you are talking to, which model is answering, and which folder it can touch — and stays silent about everything else until there is something to say. Context appears at 70% full, git when the tree is dirty or you are off the default branch, permissions when they are not the default, runtime when it is not the usual one, usage when you are near a limit, and connection when the live link drops. A number that always reads 34% is wallpaper, so the 91% that matters would not register either (DOR-452).

  • The status line is one row with two sides at every screen size: who and where on the left, state and numbers on the right. Nothing is centred on a phone and left-aligned on desktop any more, and no separator is ever left floating in the gap between the two (DOR-452).

  • The status strip above the message box — "Waiting for your approval", the thinking verbs, the post-turn summary — no longer re-centres itself on narrow screens (DOR-452).

  • The status line now measures the space it actually has and fits itself to it, instead of guessing from the screen size. On a narrow window it keeps the things most likely to be a real problem — a dropped connection, a nearly-full context window, a usage limit — and shows how many it left out as a small +2 beside the ⋯. Everything it left out is still in the Session panel, one tap away (DOR-452).

  • Status items are easier to hit on a phone: every one of them, and the ⋯, now has a touch-sized target (DOR-452).

  • Chat now shows who sent each message, with day and unread separators.

  • Every message has an avatar and a name on the left, and a run of messages from the same sender groups under one header — the layout you already know from Slack. This replaces the old right-aligned bubbles for your own messages, which could only ever show two sides of a conversation.

  • The list separates itself by day, so you can tell at a glance when something happened. If a conversation moved on while you were away, a "New messages" line marks where you left off.

  • On a narrow window the status line now says things in fewer words. The runtime drops the model name the item next to it already shows, the model drops its effort and Fast tags, and a long trust level gets shortened — all of it still spelled out in full in the Session panel. "Default (recommended)" now reads "Default" everywhere: the parenthetical is advice for picking a model, not news about the one you picked (DOR-452).

  • Anything still too long for the row now ends in an ellipsis you can see, instead of being cut off where nothing hinted it was there (DOR-452).

  • Marketplace installs, uninstalls, and new packages requested by an outside agent now go through the same approval card as everything else, so there is one place to look and one way to answer. You get two hours to decide instead of 5 minutes (DOR-447).

  • The Agents page now shows your fleet in attention order: whatever needs you leads, instead of an alphabetical inventory list. Rows group into Needs you, Working, and Quiet. Pick a different sort, by name for example, and the groups flatten.

  • Working now reflects chats across your whole fleet, not just the project you happen to have open. An agent counts as working when a chat in its folder is live, or was live within the last hour, even while you are looking somewhere else.

  • Each row now says what the agent last did, in plain words: "Finished a reply", "Got a message", "Cannot be reached". The time it happened sits underneath. If a chat with the agent is waiting on you — for a permission you have not answered, or after an error — the row says so and moves to the top.

  • A new Scheduled column shows how many scheduled tasks are waiting on each agent. An agent that has gone quiet for a day with tasks still scheduled is flagged as needing you, because those runs are failing.

  • The Status and Sessions columns are gone. Health now shows in the group a row sits in, the ring around the agent's avatar, and the row's own wording — three quieter signals instead of the same word repeated down the page. You can still filter by status. The old session count was never a count of open chats, so nothing replaces it.

  • The agent's runtime and project moved under its name, which frees up room and makes the page much easier to read on a phone.

  • A long request on an approval card is trimmed to two lines, so the Allow and "Don't allow" buttons stay where you expect them (DOR-448).

  • If DorkOS cannot check what is waiting for your approval, the dashboard says so and offers to try again. Before, a failed check looked exactly like having nothing to answer, which could leave an agent waiting on you with nothing on screen (DOR-448).

  • Uninstalling a marketplace package now asks you once, not twice (DOR-448).

  • When a conversation has to be restarted under a new id — which can happen when an older chat is reopened and cannot be picked up where it left off — the list now shows only the one you would actually land in. Before, the old entry stayed in the sidebar and quietly opened the newer conversation instead, showing the older one's trust level. If a chat you remember seems to have vanished, look for the newer entry with the same conversation in it; nothing is deleted.

  • The relay_inbox tool now says plainly that ack destroys the messages it hands back. The content is deleted and cannot be recovered, so an agent that wants to look without clearing should leave ack off. (DOR-506)

  • The tool approval guide used to say DorkOS agent tools skip the approval card "because these tools cannot modify state". That was not true of relay_inbox, which deletes messages when it acknowledges them. The guide now gives the real reason: these tools carry their own permission checks, and an agent polling its inbox all day would bury you in cards you would soon dismiss without reading. (DOR-506)

  • Standing permissions need Require login on. Without it DorkOS cannot tell you apart from an agent running on the same computer, so the control is shown but switched off, with the reason and the fix right above it. Turning the feature off ends every permission that is live, and says so before it does (DOR-501)

  • When DorkOS turns down an answer you gave on an approval card, it now tells you what actually happened instead of "Action failed". The case that matters most: if the action went ahead but the permission could not be saved, it says so plainly, so you never repeat something that cannot be undone (DOR-501)

  • If DorkOS cannot check which standing permissions are live, both places that list them say so and offer to try again, rather than showing an empty list that reads as "nothing is trusted" (DOR-501)

  • The Settings tab where you set up Telegram, Slack, and webhooks is now called "Integrations" instead of "Channels" — same setup, clearer name now that "Channels" means something else in DorkOS (Slack-style conversations, which now sit in the sidebar).

  • Each agent's "Channels" section, where you link it to Telegram, Slack, or a webhook, is now called "Integrations" too.

  • A session badge that used to read "Channel" for messages arriving from Telegram, Slack, or a webhook now reads "Integration".

  • Our own documentation described a few protections DorkOS does not have, and oversold some it does. The protections were never missing; the writing was wrong. Fixed:

    • Three things an agent cannot take back, not one. The docs said removing an installed package was the only action that stops and asks you. Deleting a scheduled task and removing an agent stop and ask too, and have since the permission gate was widened. One page even said an agent could delete a scheduled task without asking, which was the opposite of what happens.
    • Bypass permissions does not turn everything off. It skips the prompts inside a session, so an agent edits files and runs commands without stopping. The three actions above still wait for your answer.
    • Tool group switches are guidance, not a lock. Turning a group off changes what an agent is told about, so it stops reaching for those tools. It does not take the tools away. The pages that called this "controlling which tools an agent can access" now say what it does.
    • Every protection now names the login it depends on. With Require login off, which is how DorkOS starts, DorkOS refuses the agent that asked for something but cannot tell you apart from other software running as you on the same computer. With login on, only your signed-in account can answer. Both are real, and the docs used to state only the stronger one.
    • "Secure by default" is gone. In its place, the narrow claim that is actually true: DorkOS listens only on your own machine by default. We deliberately did not replace it with "sign-in required the moment you expose it", because that is not true of our Docker image: the image binds to every network address and switches off the guard that would otherwise refuse to start without a login, which our Docker guide already told you.
    • Tool group switches are per-agent, but permission is not. One thing genuinely is per-agent: a standing permission you grant from an approval card covers one agent doing one action, so two agents can meet the same gate and get different answers.
  • The Security page has a new section on what an agent cannot do without asking you, including the limit, and the Threat Model now explains the three permission labels, where the approval gate sits, and the two ways traffic can reach DorkOS without passing the bind guard.

  • The 0.8.0 release post carried the strongest version of the tool-switch claim. Rather than quietly rewrite a dated announcement, we left the wording and added a correction note at the top of it.

  • The desktop app keeps only the tab you are looking at connected to its agent. Background tabs let go, then pick the conversation back up with nothing missed the moment you return. A window full of tabs costs no more than one

  • On the desktop app, the Window menu now says "Close Tab" for Cmd/Ctrl+W, because that is what it does. "Close Window" still closes the whole window

  • The desktop app now runs on http://localhost:4242, the same address as the command line, instead of a new random one every time you open it. Bookmarks and MCP setups keep working from one launch to the next. If something else already has that port, DorkOS takes the next free one and Settings shows you where it landed (DOR-539)

  • You can pin the desktop app to a port of your own with dorkos config set server.port 5000, the same setting the command line reads. A port you pick this way is one DorkOS stays on: if it's taken, the app says so instead of quietly answering somewhere else and breaking whatever you pointed at it (DOR-539)

  • Settings → Server now says when it can't reach the server, and offers to try again, instead of showing an empty panel (DOR-539)

  • Changing who is in a room, or how an agent behaves in one, is now something only you can do. Agents used to be able to do both, which was harmless when nothing acted on it — now that a message makes agents reply, an agent could have used it to start a conversation nobody asked for (DOR-526)

  • Asking for a conversation you already have opens that one instead of making a second copy. DorkOS now recognises a direct message by exactly who is in it, so picking the same people again takes you back to the same place, history and all — and if you had archived it, it comes back out. It keeps its name and its place in the list, because opening a conversation is not the same as something happening in it. "You and Ana" and "You, Ana and Kai" are still different conversations, so every agent stays available whether or not it already has one (DOR-571)

  • If you drive DorkOS through the API, POST /api/rooms now answers 201 when it made a room and 200 when it handed you one that already existed. The two replies look identical otherwise, so this is the only way to tell a brand-new conversation from one with a month of history in it (DOR-571)

  • DorkOS now sends us nothing unless you turn it on. The daily heartbeat, marketplace install counts, and feature-usage events used to be on by default. All three are off, and they stay off until you say yes in the Privacy & Data settings tab or with dorkos telemetry enable. If you already chose to keep sharing, your choice is kept exactly as it was and nothing changes for you. If you never answered, sharing stops

  • The first-run notice now explains what you could share and how to turn it on, instead of telling you sharing is about to begin. On a machine you set up for someone else, DO_NOT_TRACK=1 still keeps everything off no matter what the settings say

  • A chat integration binding that never had a trust level picked for it now prompts, instead of quietly auto-accepting. Bindings you already configured keep the setting they had. If a channel of yours starts asking about shell commands it did not ask about before, that is this change, and you can set the binding to "Bypass permissions" if that channel is one you trust (DOR-604)

  • Renaming a channel now changes its #name too. Before, the new name was saved but the sidebar kept showing the old one.

  • Archiving a room asks first, and the confirmation comes with an Undo so you can bring it straight back. If the Undo can't work — someone took the name meanwhile — it now says so instead of a blank "Action failed".

  • A channel you archived can come back under a different name when something else took its old one. Before, it could not come back at all.

  • Deleting a task now also deletes its run history, and that is permanent. Before this, deleting a task with any run history simply failed with an error, so nothing was lost — and nothing was deleted either. Two knock-on effects worth knowing: the runs are gone from the task's history for good, and any chat session that task started will no longer show that it came from a task.

  • Naming a new task "Templates" is now refused, with a message asking for a different name. That folder name is reserved for the starter tasks.

  • To pause a task, switch it off. Marking a task "paused" directly is no longer accepted, because it never lasted — DorkOS uses that mark for its own purposes, such as noting that a task's file has gone missing.

  • If you already have a Telegram bot in a group chat, it will now be quieter. It used to reply to every single message. Now it replies when someone mentions it by name (@yourbot), when someone replies to one of its messages, and when someone sends it a command. It stays quiet the rest of the time.

  • One-on-one chats have not changed. Your bot still replies to everything you send it directly.

  • You can change this. Open Settings, go to Integrations, click Configure on your Telegram bot, and continue to the second step. Under "Replies in Groups", choose "Every message" to get the old behavior back.

  • Anonymous group admins still get replies. Telegram sends their messages in a way that looks like a bot, but they are people, so your bot treats them like anyone else in the group.

  • Your agent's instructions now explain the marketplace tools (search, install, and the rest) the same way they already explain relay, mesh, adapters, and scheduled tasks. Marketplace was the only one missing this, so an agent had less to go on when deciding how to search for or install a package (DOR-529)

  • The install preview describes what a scheduled job may do in plain words, like "can run any command without asking you", instead of showing a setting name only a developer would recognise (DOR-635)

  • If a package declares commands in a form DorkOS cannot read, the preview says so. It used to show nothing, which looked exactly like a package that runs no commands (DOR-635)

  • An agent answering in a channel or a DM now knows who else is there, and which of them are people rather than other agents. It also gets the room's topic, the messages it has not read yet, what it said there recently, and how many automatic replies are left. Before this it got the one message and nothing else, so it could not tell a colleague from a bot and had no way to follow the room's etiquette rules. (DOR-622)

  • The message an agent receives is now exactly what the person typed. DorkOS used to wrap a sentence of its own around it, which then showed up in the session transcript as words nobody wrote. (DOR-622)

  • A name nobody in the room has stays ordinary text. @99 in "refunded @99" is a number, and an email address is an email address — neither is a failed mention, so neither is treated as one. Pressing Enter sends the message as usual.

  • Replies in a channel now gather under the message they answer, behind a small "3 replies" line. Threads used to be separate rooms you opened on their own, so following one meant leaving the channel and coming back; now you read the whole conversation in one place.

  • When the message a reply answers is older than the history that has loaded, the reply says "Replying to an earlier message" rather than reading like a new remark. Old links that pointed straight at a thread still open the channel it lived in.

  • The command palette lists your channels, not every thread inside them.

  • Threads finished moving into the channel they came from. If you ever started one, its messages are now replies under the message they answer, in that channel, instead of sitting in a room of their own — so there is one conversation to read and one unread count instead of two. If you were caught up before the upgrade you are still caught up. If you were behind, your unread count can come out a little high — it may include a reply you had already read inside the thread — and one visit to the channel clears it; erring that way is deliberate, because hiding something you have not read is the mistake you cannot undo. Most installs have never started a thread, and for those this changes nothing at all. (DOR-634)

  • New agents joining a channel now get the new mode instead of "only when @mentioned". Agents you add to a direct message are unchanged

  • Existing channels were switched over too. Every channel this changed gets one message in it explaining what happened, so nothing widens quietly — and an archived channel, which cannot be given that message, was left alone entirely. Any agent you had deliberately set to something else — always, never, or direct messages only — was left exactly as you set it

  • Being asked something inside a thread keeps an agent in that thread, not in the whole channel. And talking to it in the channel does not pull it into every thread you have open

  • If an agent posts to the room while it is still working on a slow reply, that post now counts as part of the same conversation. A question it asks another agent there gets picked up, where before it was quietly dropped. This can mean one extra reply in a conversation that used to end early

  • You can finally see and understand when each agent speaks. The members panel is now a room sheet, and it holds everything about the room in one place: its name and topic at the top, one line saying what the room will actually do, everyone who is in it — you included — a row that adds an agent, and when the room was made. Archiving is at the foot.

  • How loud an agent is has become a scale you point at. It used to be five sentences that all began with "Replies", in an order nobody could work out. Now each agent has a spot on a quiet-to-loud scale — Silent, @only, Engaged, Everything — and pressing it opens the scale with the real rule written underneath, including the actual number of minutes and messages your DorkOS keeps an agent talking after you mention it, read from your own settings rather than guessed.

  • A one-to-one gets the same four settings a channel does. Engaged — answers when you say its name, then keeps answering for a while — is offered in a direct message too. Add a second agent and it is still a direct message, and it is exactly the room where you want an agent that answers when spoken to and then goes quiet.

  • Point at a setting and the room tells you what it would become. Move the mouse across the scale, or arrow through it, and the line at the top of the sheet shows what the whole room would do if you chose that — tinted to say it is a "what if". Stop pointing and it goes back. Nothing is saved until you actually pick one, and an archived room shows no such preview, because nothing would be true.

  • A change lands the moment you make it. The meter moves straight away instead of waiting for the server. While it saves, the setting dims; if the save is refused it goes back to what is really stored and says why — so you are never looking at a value that was never saved.

  • Each person or agent is a line, not a card, with its face, what it is doing right now or the last thing it did here, and its loudness on the right. Agents carry a small robot mark; people carry none.

  • A room's name and topic are edited where you read them. Press the line, type, press Enter — Escape puts it back. A channel with no topic says "Add a topic" instead of leaving a gap.

  • Adding an agent is the last row of the list of who is in the room, rather than a second panel with its own heading. Press it and it becomes the picker, cursor already in it.

  • An archived room stops pretending. Every meter goes grey, the scales cannot be changed, and there is no way to add or remove an agent — nothing is triggered in an archived room, so its members and their settings are on hold until you bring it back. The settings are still shown, because they are what each agent will do the moment you do, and the sheet says so where a screen reader will read it too.

  • Opening the sheet for a room with nobody in it opens the picker straight away. A room with nobody in it does nothing, so putting somebody in it is the only thing worth offering. "You have not added any agents yet" now comes with a Create agent button, and a roster that could not be read now offers Try again instead of asking you to close the sheet and open it again.

  • Rows in the roster are taller on a touch screen, so a face and two lines read as a person rather than as a dot with a caption.

  • Every agent picker now shows who it is offering. Choosing agents — for a new channel, a new conversation, or a room you are already in — used to be a plain alphabetical list of every project folder you own, with no faces at all. Each agent now carries the same face it has everywhere else in DorkOS, and, where you have written one, its own description on a second line. Two agents can share a name; that line is what tells them apart by what they do. An agent you have not described simply has no second line, and an agent DorkOS cannot read gets a plain letter rather than a made-up face that would match nothing else on screen.

  • Starting a conversation when you have no agents yet offers a Create agent button instead of telling you to go and add one somewhere else.

  • A conversation has one place to be read. Replies never pile up inside the room; they live in the thread panel, so however long a thread gets it cannot push the room off screen. Every reply is in the panel, including every reply written before this release.

  • "Reply in thread" opens the thread and puts the cursor in it. It used to quietly re-point the room's own box at a thread, with a small banner above as the only sign of where your next sentence was going. Now you type in the thread, so there is nothing to misread.

  • An agent taking a turn inside a thread is told its answer lands in the thread rather than in the room's main flow, so it writes for the conversation it is actually in.

  • OpenCode chats no longer carry a thinking level anywhere. OpenCode gives no way to ask for more or less thinking, so the setting was only ever handing you back what you typed — it is no longer saved, shown, or inherited from an agent. We would rather say it is not supported than pretend it does something.

  • An agent set up to run on a runtime you have not connected — or to think harder on a runtime with no such setting — now shows up under Needs attention in the sidebar, next to the chats waiting on you. You should not have to open Settings to find out that an agent cannot start. A model that is no longer offered is a quieter problem and stays in the list under your defaults, where checking it does not cost a lookup per agent.

  • The very first chat DorkBot starts during setup now runs on your default runtime. It used to always say Claude Code, even if you had chosen something else.

  • First-run setup now points new chats at the coding agent you actually have. If Codex is the only one connected when the setup check finishes, DorkOS starts new chats with Codex instead of quietly assuming Claude Code. The sentence on that screen says which one it picked — "Codex is connected. New chats will start with it." — and a Change link right under it switches to any other agent in one tap — including one you have not connected yet, in which case the screen tells you which agent your chats will use in the meantime.

  • It waits for the check to finish rather than deciding the moment DorkOS opens, because you can connect an agent from that very screen and the answer changes when you do.

  • The pick happens once, on your first run, and never again. Reopening setup, refreshing halfway through, or installing another coding agent later will not move the setting behind your back. From then on it is yours, and Settings → Runtimes is where you change it.

  • Slack now shows you when an agent has actually picked your message up. Your message gets an 👀 reaction the moment an agent starts working on it, and loses it when the answer lands or the attempt fails. Before, the reaction was an hourglass added the instant your message arrived — which meant a message nobody ever picked up still looked like it was being worked on. Now the mark means somebody is on it.

  • Nothing is added when the work finishes — no green tick, no red cross. The reply is the answer, and the error message is the failure.

  • If an agent stops to ask you something mid-answer, the reaction comes off while it waits and goes back on the same message when it carries on.

    Setting the working indicator to None still turns all of this off, and still makes zero calls to Slack.

  • Cross a room a message at a time with Page Down and Page Up. A busy channel used to take a Tab press for every message, plus another for every thread, before you reached the box to type in. Now the history is a feed: Page Down and Page Up move message to message however many buttons, reactions and replies each one carries, and Ctrl+End jumps straight to the composer. Every message also says who wrote it and where it sits — "12 of 30, Ana" — so a screen reader reads a room as a conversation instead of one long wall (DOR-757).

  • Messages now say who wrote them everywhere they appear, threads included, so a screen reader can find its way around one without reading everything either side of it first.

  • Arrow keys scroll a long message again. Up and down used to be taken by the message's own action buttons, so a message taller than the window could not be read through without moving off it first. The buttons are still one press away with Enter or the right arrow.

  • Cross an open thread the same way you cross a room. The thread panel is now a feed of its own: Page Down and Page Up move from the first message to each reply, Ctrl+End jumps to the box you reply in, and Ctrl+Home goes back to the button that closes the panel — so leaving the thread never drops you into the room behind it. Each message says where it sits in the thread, and the panel says it is still loading when you open a link straight to one (DOR-780).

  • Cross a session's conversation a message at a time with Page Down and Page Up. A long chat used to be one press per message and everything in it before you got anywhere; now the transcript is a feed, so one press moves to the next message however much it carries, and Ctrl+End jumps out to what is below it. Every message says who wrote it, when, and where it sits — "12 of 30, DorkBot" — so a screen reader reads a conversation instead of one long wall (DOR-779).

  • An answer that is still being written is now read out as it arrives, sentence by sentence, instead of the whole answer being repeated on every word. When the turn finishes, only the last few words that were not yet spoken are — the message is never read from the top a second time.

  • Waiting for a conversation to load is now announced rather than silent.

  • An unreadable chat integration now says out loud that any bot token inside it is still sitting in the file in plain text, rather than leaving the file looking protected when it is not.

  • The relay's Activity panel counts honestly. A message sent to something nobody is listening for is now "No listener" rather than a failure, so a quiet machine stops showing a wall of red; failures carry the reason they failed; the dead-letter count reads from the actual queue instead of always showing zero; and connecting or reconnecting an integration no longer counts as delivered traffic.

  • Auto works again on models that support it. The same lost flag had been quietly running "auto" sessions at the default trust level and hiding "auto" from the picker; both now behave as selected.

  • The fast-mode toggle appears for models that support it — the flag that showed it was lost the same way.

  • Starting DorkOS prints less. A healthy start used to write eleven near-identical lines about routes being set up; now it writes one that names what came up. Nothing else about starting changed — there is just less to scroll past before the part you were looking for.

  • Every trust level a runtime offers now says what it actually does — when it stops to ask you, how far it can reach, and one plain sentence about the consequence. Warnings on screen are worked out from that instead of from a list of mode names kept in the app, so a mode a new agent invents is described correctly the day it arrives. Nothing looks different yet, with one exception: Claude's Auto mode is no longer tinted red. It still raises an approval card for the risky calls, and red is now reserved for the one setting that never asks about anything, anywhere. Your pick is validated against that runtime's own declared mode list, not a fixed set.

  • Choosing how much your agent may do is now one dial with three honest stops — Ask first, Act, and Full autonomy — instead of a list of six engineering words. Under it, one line says what that stop means for the agent you are actually talking to, in its own words. Where an agent cannot keep the stop's promise, the line says so in amber rather than quietly hoping you find out later: on Codex, "Act" runs shell commands without asking, because Codex has no way to pause and ask.

  • A stop an agent cannot take simply is not offered, and a session sitting at a setting the agent no longer has now says which setting that is instead of showing an empty dial.

  • Full autonomy asks once before it takes effect, and says what that means for the agent in front of you. Every other stop applies straight away — this is the one you cannot walk back, so it is the one that asks. Arrow keys stop at the ends of the dial instead of wrapping around to it.

  • Plan moved out of the permission list and next to the composer, where you can switch it on for a stretch of work and off again. Turning it off puts you back at the stop you were on — or to the agent's normal setting if the old one is no longer available. It appears only for agents that can plan, and it is in the Session panel too, so a narrow window cannot take it away.

  • Auto is no longer a setting of its own. It is a switch inside Act, on the models that can run it — the same one-time confirmation as before.

  • Choosing what an agent may do looks the same everywhere now — and always tells the truth for the runtime it runs on. Integration bindings and scheduled tasks used to ask this question with their own hand-written lists; both now use the same three-stop dial as a chat session, with the same honest line underneath about what the stop means for that agent.

  • The integration binding's list said "asks before running shell commands" for every agent, which is false for agents that cannot pause to ask, and offered Plan as a level of trust — which it is not. Both are gone.

  • Turning on Full autonomy for an integration or a schedule now asks first, and says what stops happening on that surface: an integration gives up the answer it would have waited for, and a scheduled run gives up the approval it would have raised.

  • A schedule that still stops to ask now says so plainly: nobody is watching a scheduled run, so anything it stops to ask about is refused after 10 minutes and the run carries on without it.

  • Both screens say what they are set to and why there is nothing to pick, when DorkOS hasn't heard from the agent behind them yet — instead of showing a picker built on nothing.

  • Install previews describe a package's schedule in words that hold for every agent, instead of describing Claude Code and hoping the reader is on it.

  • The confirmation is no longer something a screen can skip. DorkOS itself now turns down any attempt to put a conversation into Full autonomy without your acknowledgement, so a second tab, a stale window, or a stray keystroke lands on the same question instead of quietly getting through. If that happens, the confirmation opens rather than an error you cannot do anything about.

    This is a confirmation for you, not a lock against your agents: it makes sure a person cannot arrive in Full autonomy without having been told what it means. Scheduled tasks, chat bindings and rooms are unaffected — they never used this setting and keep their own, stricter rules.

  • Reset takes the Full-autonomy default with it. The note DorkOS keeps of you reading what Full autonomy means is what lets new chats start without asking, so pressing Reset in Settings → Security now also turns that default off. Otherwise new chats would keep opening without asking while DorkOS had no record that anybody agreed to it — and the first time you tried to change one, it would ask you to confirm something you thought you had just switched back on. Chats you already have are untouched, and a gentler default (Ask first, Act) is left exactly as you set it.

    This is for the chats you open yourself. Scheduled runs, chat integrations and rooms keep their own settings and their own, stricter rules — nothing here reaches them.

  • The button on a running job says Stop, matching what it does and what DorkOS says back when you press it. (DOR-808)

  • Any setting that stops the asking now asks you first — not just Full autonomy. Some agents cannot pause mid-turn to ask permission. On those, the middle setting ("Act") still edits files and runs commands in your project, it just never checks with you first. Until now only the top setting stopped to confirm, so you could land in a mode that asks nothing without ever being told. Now DorkOS confirms before it turns on any setting that will not stop to ask and can do more than read — in a chat, on a chat integration, and on a scheduled task alike.

    The confirmation says what is true of the setting you picked rather than borrowing the loudest words: it keeps the name you pressed, adds the one sentence that matters ("This stop never pauses to ask. Whatever it decides to do, it does."), and shows your agent's own description underneath. It also carries the line that was previously only shown for Full autonomy — that this covers tools inside the chat, and DorkOS's own actions, like removing a package, still ask you. A read-only setting is left alone: it never asks because there is nothing to ask about, and a confirmation in front of the safest choice is how confirmations stop being read.

    If you have already ticked Don't show this again, nothing changes: that one answer covers all of it, and you can bring the question back any time from Settings.

Removed

  • The "Show shortcut chips" setting and the / and @ chips below the message box are gone. The rotating hints already teach both, and the agent you are talking to still shows there (DOR-452).
  • The Configure status bar panel and the Status Bar tab in Settings are gone, along with their ten on/off switches and the right-click "Hide this item" menu. Pins in the Session panel replace them: one thing that adds, instead of ten that only ever subtract. Diagnostics rows deliberately have no pin (DOR-452).
  • Heads up: those ten show/hide choices are cleared, once, by this release — they are not carried over as pins. The two settings mean opposite things, so there is no honest way to convert one into the other: everything used to show unless you hid it, and now nothing shows unless it has something to say or you pinned it. Carrying "shown" over as "pinned" would have pinned all ten items for anyone who never touched the switches, which is exactly the noisy status bar this release removes. Pin what you want back from the Session panel (DOR-452).
  • Swipe-to-collapse on the status area is gone, along with its drag handle and the "Swipe to collapse" hint. It existed because the status area used to be up to five rows tall; it is now one row of at most a few items, so there is nothing left to collapse (DOR-452).
  • Installing a marketplace package always waits for you to say yes, and there is no longer a way to switch that off. A setting called MARKETPLACE_AUTO_APPROVE used to skip the question for scripts and CI runs. It is gone. If you install packages from a script, have the script answer the request the way the app does: read GET /api/approvals/pending, then POST /api/approvals/:id/grant, and retry the install. If you have Require login turned on, that script needs a per-user API key (from the Security tab in Settings) to make those calls at all. If you have cloned the DorkOS repository, contributing/external-agent-marketplace-access.md walks through it step by step.
  • Dropped three keyboard shortcuts from the shortcuts panel (⌘1, ⌘2, ⌘3) that were listed but never did anything — the sidebar tabs they pointed at no longer exist (DOR-534)
  • The separate topic dialog. "Edit topic…" now opens the room sheet with the topic line ready to type in, instead of a window holding one text box.
  • The app-wide "all permissions bypassed" banner that sat above every page while the session you were looking at ran with permissions bypassed. The session's own status line already carries the word and the colour, for as long as the session is in that mode, and two alarms about one fact teach people to read neither.

Fixed

  • When a session's saved model is no longer available (you switched where models come from, or removed one), the model menu now marks it "not available" and asks you to pick another, instead of silently failing (DOR-427).
  • If a turn does run against a model that isn't available, you now get a plain message pointing you to the model menu instead of a raw error from behind the scenes (DOR-427).
  • First-run setup no longer snaps back to the Welcome screen partway through. Meeting DorkBot and settling its personality now carries you straight to the handoff instead of dropping you at the start.
  • The first-run setup check no longer says Claude is connected when it isn't. If the Claude Code tool is installed but you haven't signed in, DorkOS now shows the sign-in step instead of a green checkmark, so your agents can actually start work. Signing in with your Claude account or adding an Anthropic API key both count as connected.
  • Install and download spinners now actually spin instead of sitting frozen, so it's clear when something is working (DOR-439).
  • Pressing Enter to accept a Japanese, Chinese, or Korean candidate no longer sends the half-typed message (DOR-452).
  • Pressing Escape to close the command or file list no longer stops the agent mid-answer, and no longer arms a second Escape that wipes your draft. Clearing now takes two plain Escapes (DOR-452).
  • Hiding a status item and bringing it back no longer leaves it with a stray dot in front of it (DOR-452).
  • Opening a status item's menu no longer closes it the instant another item appears or disappears (DOR-452).
  • The "Compact now" nudge now animates away instead of vanishing (DOR-452).
  • The keyboard shortcuts panel called Cmd+. "Toggle canvas"; it toggles the right panel (DOR-452).
  • Status items that did not fit used to be genuinely unreachable on a phone — the row looked scrollable and faded at the edge, but a gesture on the row above ate the swipe. The line no longer scrolls or wraps at all, so nothing can hide there (DOR-452).
  • A screen reader now announces what the strip above the message box says — "Waiting for your approval", a finished turn's summary — instead of staying silent. The parts that tick every second, like the thinking verbs and the timer, stay quiet so the announcement is not drowned out (DOR-452).
  • Changing the model or trust level from the status line now updates every part of the screen at once. Before, one place showed the new value while another kept the old one until the server replied.
  • The Tasks page now sorts by which task runs next when you first open it, and the sort button says so. It used to show "Sort:" with nothing after it.
  • CLI commands work again when your DorkOS asks you to sign in. dorkos agent, dorkos task, dorkos activity, dorkos call, and dorkos version --check sent nothing to prove who you were. On an instance with login turned on, every one of them stopped with a bare "Unauthorized". Your agents in Codex and OpenCode lost their only way to act. The CLI now sends your API key, read from DORKOS_API_KEY or from ~/.dork/api-key. When no key is set up, the error names what is missing and where in the cockpit to create one. If you have not set up a key, nothing changes (DOR-428)
  • In first-run setup, "Skip" no longer throws away the rest of setup. Choosing a personality for DorkBot now has its own "Skip this step" button that moves you to the next thing, and the button that leaves setup for good says so: "Skip all setup". If you do leave, a note tells you where to start setup again (Settings → Preferences) (DOR-472)
  • The session list now shows the trust level a session is really running at. The sidebar used to call almost everything "Default", so a session left to act on its own looked exactly like one that asks before every step, and a session running without approvals could appear with no warning icon at all. It also went stale: a level changed in another window or by a scheduled task did not reach the list, and a refresh that arrived a second late could quietly undo a change you had just made. Every place a session appears now reads the same value, updates the moment it changes, and your newer choice always wins.
  • Lined-up messages no longer disappear. If you typed a follow-up while your agent was working and it then stopped to ask you to approve something, your message could vanish without a trace — the "Queued (1)" mark went away and the text was gone. Lined-up messages now wait their turn properly, and if one can't be sent for any reason it goes straight back in the line instead of being thrown away.
  • Every lined-up message now has a "send now" button. If a reply fails partway through, the messages waiting behind it used to be stuck there with no way to send them — and the only trick people found for getting the text back deleted it. Each one can now be sent on its own, and when sending genuinely isn't possible the button says why.
  • Visiting other conversations no longer deletes messages you lined up — or a message you started typing. DorkOS keeps the last 20 conversations in memory, and used to drop the oldest one whether or not it still held your words. A conversation with something waiting to send, or half-typed in the box, is now kept regardless.
  • Picking a slash command keeps the rest of your line. Typing /deploy staging, clicking back to just after /deploy, then pressing Enter used to delete staging and send nothing at all.
  • A file that fails to upload now says so, and offers to try again. The chip showed a small red icon with no words, and sending anyway delivered your message with no file attached — so you sat waiting for an answer about something your agent never received. DorkOS now holds the message until you retry the upload or remove the file.
  • Typing a command into a message that's waiting in line now just runs it. Commands like /compact or /rename do something right away rather than getting sent to your agent, so one sitting in the line used to jam it — everything queued behind it waited forever. Now it runs when you press Enter, and if it can't run (a missing name, say) your text stays put so you can fix it.
  • Rewriting a message that's waiting in line no longer loses the rewrite. Moving to another one, or switching to a different conversation and back, keeps what you typed.
  • Coming back to a conversation no longer sends a duplicate. If you left while editing a message that was waiting in line, its text stayed behind in the box and pressing Enter sent a second copy.
  • The "Your Agents Can Operate DorkOS" guide promised two safety checks DorkOS does not perform: that an agent checks with you before editing a different agent, and that it changes settings only when you ask. Both are instructions we give the agent, not locks. The guide now says so, and points you at your activity feed, which does record the change (DOR-428)
  • The MCP server page listed 48 tools and left out everything the operator surface added. It now lists all 55, says which 15 carry a risk level, and counts the capability catalog resource it had been missing (DOR-428)
  • The message box only grew when you typed. Anything else that filled it — clicking a queued message to edit it, pressing Up to reach the queue, Escape putting a draft back, a re-run pre-filling a prompt, tapping a suggestion — left a six-line message showing one line, in a box with no scrollbar to tell you the rest was there. The box now fits whatever it is holding, however it got there (DOR-479)
  • Editing a queued message and deleting all the text left you stuck: the banner still said "Editing message", and every button vanished. On a phone, with no Escape key, the only way out was the row's X, which deletes the message. The box now offers a plain "Cancel edit" (DOR-479)
  • Pressing Escape twice wipes your draft, and it used to be gone for good. Cmd+Z now brings it back (DOR-479)
  • Opening a session on a phone popped the on-screen keyboard and scrolled the page every single time. It doesn't any more (DOR-479)
  • While an attachment uploaded, the box claimed the agent was replying: the send button turned into a red Stop that did nothing when you pressed it, and if the upload hung, the box stayed stuck in that state forever. It now shows the upload in progress, and waits for it to finish before anything else happens (DOR-479)
  • If an attachment failed to upload, your message was deleted along with it. Your words stay in the box so you can try again (DOR-479)
  • The dashboard and the welcome conversation showed a greyed-out X for clearing the box that did nothing when clicked. It's gone — pressing Escape twice still clears the box on those screens, and Cmd+Z still brings the text back (DOR-479)
  • Typing your very first message on the dashboard and pressing Enter did nothing at all while DorkOS was still finding your agent, with nothing on screen to say why. It now says "Getting your agent ready…" (DOR-479)
  • Typing something like /zzz that matches no command left "No commands found." on screen and swallowed your Enter, so the message needed two presses to send. One press is enough, and the card goes away when the message sends (DOR-479)
  • Making a desktop window narrow — say, to sit beside your editor — quietly changed Enter from "send" to "new line". Enter now depends on the device rather than the window size: it sends anywhere you have a mouse, trackpad, or stylus (including a tablet with a keyboard case), and inserts a line break on a phone or a bare tablet (DOR-479)
  • Running /compact focus on the API changes while the agent was still replying deleted your instructions and then told you the agent was busy. The text now stays put unless the compaction actually starts, and the box waits for it rather than letting a second Enter run the same thing twice. If the request never comes back, it gives up after 30 seconds and says so, instead of leaving the box stuck (DOR-479)
  • When an agent asked you to approve something, the "Queued (N)" panel disappeared for as long as the question was up. The messages were always safe, but nothing said so. A quiet line now tells you how many are waiting (DOR-479)
  • The composer said "Editing message —" with nothing after the dash. It now tells you which one you are rewriting: "Editing message 2 of 3" (DOR-479)
  • "Session is busy. Please wait..." named nobody and gave no idea how long. It now says "Your agent is still finishing the last message. Try again in a moment." (DOR-479)
  • The list of waiting messages told you how many there were but never when they would go out. It now says so: "Queued (2) — Waiting for the reply to finish", or "Will send next" once nothing is holding them up (DOR-479)
  • A follow-up suggestion too long for its chip was cut off with no way to read the rest. Hover it and you get the whole line (DOR-479)
  • While you edit a message that is waiting to send — the one mode where Enter saves instead of sends — the writing box had no name at all for a screen reader. It now announces "Edit queued message 2 of 3 — press Enter to save" (DOR-479)
  • A file search that matched nothing could point a screen reader at a list that was not on the page (DOR-479)
  • The paperclip and the clear (×) button showed no outline when you reached them with the keyboard (DOR-479)
  • The list of waiting messages popped out of existence the instant the last one sent, instead of sliding away, and the extra stop button did the same. Both settle properly again (DOR-479)
  • The composer's right edge jumped sideways the moment you typed your first character, and a waiting message shifted two pixels when you clicked to edit it. Neither moves now (DOR-479)
  • A photo you attached rebuilt its little preview many times a second the whole time it was uploading. It is built once (DOR-479)
  • Setting up an agent in a folder you already have can no longer delete that folder. If setup stops partway, such as when the disk is full, DorkOS takes back only the files and folders it just made, leaves everything of yours alone, and tells you if anything is left over (DOR-507)
  • Agents can no longer turn off the safety prompts on a scheduled task, or approve one. A task runs later on its own with nobody watching, so how much it may do without asking, and whether it is allowed to run at all, are now yours to decide in DorkOS. A task an agent creates waits for your approval however it was made, including from the command line, where it used to go live right away. If an agent tries to change either setting, the whole change is refused and nothing at all is saved, so it never ends up half applied. Setting these yourself in the cockpit works exactly as before.
  • Scanning for agents from outside DorkOS can now show the agents it already knows about. The scan tool always supported asking for them, but the outside connection did not offer the option, so there was no way to ask for it. It also said it looks three folders deep by default when it really looks five.
  • The Tools screen was underselling what your agents can always do. It listed six tools that are on no matter what, leaving out the three that let an agent read its own preview window. All nine were always available; now the screen says so.
  • Reloading an extension you had turned off no longer quietly turns it back on. Asking DorkOS to reload a switched-off extension used to start it up again, routes and all, while the switch in Settings still showed it as off. DorkOS now says it is off and leaves it alone.
  • A folder in your project can no longer take the place of an extension DorkOS ships, or of one you already allowed. DorkOS decides what counts as its own code by where that code sits on disk, not by the name inside it.
  • A bookmark or shared link to the old Settings "Channels" tab now still opens the Integrations tab instead of silently opening nothing.
  • The adapter setup wizard and a couple of "Add" buttons in the Relay panel and onboarding preview still said "channel" after the rename above; they now say "integration" too.
  • Your agents were being given wrong information about which actions stop to ask you. The built-in instructions every agent is set up with said that deleting a scheduled task "carries no gate of its own", and the tool catalog that agents read to learn what they can do said that a whole group of DorkOS tools carries no permission level at all. Neither was true. Deleting a scheduled task and removing an agent have both stopped and asked you since they were classified, and every tool in that group has a permission level. The protection was never missing; the description of it was wrong (DOR-509)
  • An agent that believed those descriptions would not warn you before an action it could not undo, and would read your refusal as something broken rather than as your answer. The instructions now say plainly which actions wait for you, how to ask, and that a refusal is the answer. Existing agents pick up the corrected version automatically the next time DorkOS sets them up; a copy you edited yourself is left alone, as always (DOR-509)
  • The same instructions had three other details wrong: they named only two of the three actions that stop to ask you, they said removing an agent could only be done one way, and they said every command accepts the --json option when several reject it. All three are corrected (DOR-509)
  • Moving between DorkOS pages no longer reloads the whole app. Links that stay inside DorkOS switch pages instantly, so an agent that is mid-answer keeps streaming while you look around (DOR-534)
  • Links that belong outside DorkOS — the docs, GitHub, a sign-in page — now reliably open in your browser, including the ones an agent or a connected tool puts in front of you (DOR-534)
  • DorkOS now opens only ordinary web and mail links, and tells you when it turned one down instead of leaving you to guess. A tool that asks you to sign in through a link DorkOS won't open can no longer show you a "Done" button for a sign-in that never happened (DOR-534)
  • Stop the Restart and Reset buttons from leaving the desktop app with no server. Restart now tells you to quit and reopen the app, which does the same thing. Reset tells you plainly that nothing was deleted, and names the folder to remove if you really want to start over (DOR-532)
  • The Mac app now tells you when the background server it runs has stopped, and offers to start it again. Before, the window stayed open but quietly stopped working — most noticeably right after "Reset All Data" — with nothing on screen to explain why (DOR-533)
  • When that server won't start, the Mac app now tells you what the server said about why, then closes. If you already have DorkOS running in a terminal, for instance, it says so — instead of showing a bare error code and leaving the real explanation in a log file (DOR-533)
  • If the server keeps failing — whether it won't start at all, or starts and dies again moments later — the Mac app stops offering a button that isn't working and offers to open its logs instead (DOR-533)
  • Quitting the Mac app no longer pauses for several seconds when its server has already stopped (DOR-533)
  • The desktop app no longer flashes a white rectangle before it loads (DOR-538)
  • A window left on a monitor you then unplug comes back to a screen you can see, without a restart (DOR-538)
  • Quitting while full screen no longer brings the window back jammed under the menu bar (DOR-538)
  • Sending two messages in a row no longer gives an agent two separate conversations with itself. Both replies used to start from scratch, and the second one quietly forgot everything — including what you had just said (DOR-526)
  • Agents talking normally in a shared room no longer fill it with notices claiming somebody hit a reply limit they never came near (DOR-526)
  • Starting a direct message is one step again. It used to create the room and then add the agent, so if the second half failed you were left with a conversation named after an agent that was not in it — and starting it again did not help. Now it either works or nothing is created (DOR-526)
  • The "New direct message" menu no longer hides two agents at once when they happen to share a name (DOR-526)
  • Closed two ways agents could keep replying to each other forever. An agent writing to a room itself — rather than answering through it — started a brand-new conversation every time, so the reply limit never counted anything and never stopped them. Messages from you are what start the count over now (DOR-526)
  • A room now reconnects on its own when its live feed drops — after a laptop wakes up, or a restart — and picks up exactly the messages it missed. A sleeping laptop leaves a connection that looks open but is dead, so a room that hears nothing at all for 45 seconds now stops waiting and reconnects instead. If it can't get back after several tries it says so at the bottom of the room, with a Reconnect link, instead of sitting there looking quiet (DOR-526)
  • A message you were part-way through typing no longer follows you into the next conversation (DOR-526)
  • Reading back through a room no longer yanks you to the bottom every time a new message lands. Scroll up and you stay put; you're only carried along while you're already at the newest message (DOR-526)
  • Your privacy choice now survives a config reset. If your settings file was damaged and DorkOS had to rebuild it, or you reset your settings, the answer you gave about sharing data used to be thrown away and replaced with the sharing-on defaults. It is now kept, along with anything else you had made stricter: a login requirement you switched on, a limit you tightened, and the record that revoked your standing permissions. Preferences like your theme still go back to defaults, as a reset should (DOR-584)
  • Resetting one section by name, like dorkos config reset telemetry, still does exactly what it says. Naming the section is the clear request that a blanket reset is not (DOR-584)
  • Limits you tightened are kept too, not just switches you turned off. A smaller upload size or file count, a lower rate limit, a shorter room reply depth: all of these used to quietly go back to the shipped value after a repair or a reset (DOR-584)
  • DorkOS starts even when the settings it rescued no longer fit. A setting kept from a damaged file is now checked against the rules before it is written back, so an out-of-range value is dropped instead of stopping the server from starting. When that happens, the log names the setting so you know which one went back to its default (DOR-584)
  • DorkOS checks your task files against its own records every five minutes. That check gave up on the first deleted task it met, so deleted tasks lingered and edits you made outside the app stopped showing up. It now finishes.
  • Deleting a task now works even if that task has run before. It used to fail with an error.
  • Before removing a task, DorkOS now double-checks that its file is really gone. Tasks whose folder is a shortcut to somewhere else were being removed while the file sat there untouched.
  • A typo in a task file no longer costs you the task. A file DorkOS cannot read is left alone, so fixing the typo picks up where you left off, run history intact.
  • Tasks in a project folder DorkOS is not currently watching are no longer cleared out. This hit tasks you added for an agent connected after startup, and tasks belonging to an agent you disconnected.
  • Two tasks with the same name in different projects no longer interfere. One losing its file used to pause the other.
  • A task paused because its file went missing now runs again once the file is back.
  • Stopped the repeated log warning about a missing file in your tasks/templates folder. That folder holds the starter tasks DorkOS ships with, so it is not a task itself. A task folder of yours that really is missing its file is still reported.
  • A task file placed loose in your tasks/templates folder no longer turns into a task. It became one that ran on a schedule, and deleting it took every one of your templates with it.
  • Tasks in a project folder that has been deleted or unmounted are no longer cleared out. DorkOS could not tell an empty folder from one that is not there any more, so a checkout you moved took its tasks and their history with it.
  • Updating no longer fails if your database holds run records whose task is already gone. Those leftovers would have stopped DorkOS from starting at all, with no way to fix it from inside the app. They are tidied up during the update.
  • Your settings now survive a busy moment on your computer. When a computer has too many files open at once, reading a file can fail even though the file is perfectly fine. DorkOS used to read that as damage. It renamed your settings file and started over with defaults. One person lost their pinned status bar items that way. The riskiest moment was the first launch after an update, which is when DorkOS reads your settings the most.
  • DorkOS now waits a moment and tries again. If it still cannot read your settings, it stops and tells you why, and it does not replace or delete them. Start DorkOS again once your computer is less busy and your settings come back.
  • A settings file that really is broken is still backed up and rebuilt, and your privacy and safety choices still carry over to the new one. If this already happened to you, your old settings are in ~/.dork/config.json.bak.
  • When DorkOS does stop, it now tells you what to do about the actual problem. A full disk says to free up space. A file you are not allowed to open gives you the command to fix that, on Mac, Linux, or Windows. It no longer tells you to wait for a problem that will not pass on its own.
  • Fix an extension staying broken forever after a brief glitch on your machine — like running low on memory or disk space for a moment during startup. DorkOS used to remember that one-time hiccup as if the extension itself were broken, and would repeat the same error on every restart even after the glitch was long gone. Now it only remembers a real problem with the extension's own code; anything else gets a fresh try next time.
  • Fix one extension hitting a brief startup glitch from blocking every other extension from starting too. Each extension now starts on its own, so one hiccup no longer holds up the rest.
  • Quiet down a harmless background message that was showing up as a warning dozens of times a day. It's a safety check working exactly as intended, not a sign of trouble.
  • The first-run setup screen now has a way out. If DorkOS did not find a coding agent on your machine, the screen used to leave you stuck: nothing to continue with, and no Skip or Back to press. It now offers "Skip all setup" and Back, so you can look around the app first and set up an agent when you are ready — the Getting started card will still offer it (DOR-481)
  • Buttons that say they will take you to a setting now take you to that setting. "Add more agents", "Open Relay settings", "Add an integration" and the guided tours all opened Settings on the Appearance tab instead of the one they named, leaving you to hunt for it yourself (DOR-484)
  • Your permission choice now sticks to a chat for good. Claude Code gives a new chat its real ID partway through the first reply, and settings you picked before that were left behind under the old ID. If the chat then sat idle for a while, or you restarted DorkOS, the next message quietly ran at the default setting instead of the one you chose — so an agent you had set to act on its own might start asking again, or the reverse. The setting now moves with the chat, and every screen reads it from the same place.
  • Change a session's permissions from the status line and its sidebar row updates right away, instead of taking up to half a minute to catch up.
  • Fixed a crash that could hit the sidebar's Recent list the moment a brand-new session picked up its real id.
  • Scheduled tasks accept every trust level DorkOS offers, not just two. Set a task to anything else and the task file DorkOS wrote was one it could no longer read: the task kept running, but the file on disk and the task in the app quietly disagreed from then on, and every edit to the file was ignored. Every stop on the dial now survives a save (DOR-607)
  • Building a Shape? The setting that says whether one of its timers starts running is now called startEnabled, and it is off unless you turn it on. If your setup file still uses the old startDisabled, applying the Shape tells you so and points at the new name, instead of leaving you with a timer that never fires and nothing to explain it (DOR-607)
  • Your Telegram bot no longer replies to other bots. If two bots that both answer messages ended up in the same group, they could talk to each other forever and fill the chat. Your bot now ignores anything another bot says, and there is no setting that turns this off.
  • Buttons that open Settings work again in the Obsidian plugin. A recent change made "Add more agents", "Open Relay settings" and "Add an integration" do nothing at all there instead of opening Settings. They open it again (DOR-484)
  • A link to a Settings tab that no longer exists now opens Settings on its first tab instead of showing an empty panel. An old bookmark or a renamed tab used to leave you looking at a blank window with nothing selected (DOR-484)
  • Rooms now say something when an agent cannot answer. If the agent was busy with another task, or its turn hit an error, the room posts a short line telling you so, instead of leaving your message sitting there with no reply. A busy agent used to just say nothing, which looked exactly like a broken one. You get one line, not one per message you sent. (DOR-621)
  • A slow answer is no longer thrown away or cut off. If an agent takes longer than the room's wait, the room stops waiting but the agent keeps working, and its full answer is posted when it lands, quoting the message it answers and saying how long it took. Before this, the room either went quiet or posted whatever half-sentence the agent had written so far as if it were the finished answer. (DOR-621)
  • Sending a second message to an agent that is still working no longer posts a stray fragment of its first answer. (DOR-621)
  • Slack and Telegram settings that the setup screens never showed you are now on screen, in the add flow and behind Configure. The most important ones decide who is allowed to approve an action: when your agent asks permission to run something, only the people you list under Approvers can say yes. That list was impossible to fill in before, so nothing could be approved from Slack or Telegram at all. Slack also gains its DM controls: who may message your bot, which channels behave differently, and when the bot joins in.
  • A setting that no setup screen claims now appears under its own heading on the last screen. Nothing can go missing again just because it was left off every screen.
  • Lists and per-channel rules you had already saved now show up the way you wrote them: one entry per line, and readable settings instead of [object Object]. Editing one of these and saving used to run your existing entries together into a single broken one, which quietly took away everyone's permission to approve.
  • If the Channel Overrides box is not valid JSON, saving now stops and tells you, and your existing rules stay put. It used to accept the save and erase them.
  • Nothing changed value. Every setting opens on what it was already set to, including the ones you are seeing for the first time.
  • A direct message now shows the face of the agent you are talking to, instead of a plain letter. A conversation with several agents shows all of them.
  • The Channels, Direct messages and Agents lists no longer say "create your first one" when the reason they look empty is that everything is filed into a group. They say that instead.
  • Every agent ships with a small set of built-in skills that teach it how to run DorkOS. Those skills were being written to a place the default runtime does not look, so agents never actually learned them. They now land where the agent can read them, for new agents and for DorkBot (DOR-659).
  • Agents that DorkOS set up for you are repaired the next time you start it. Nothing to click, and it does not slow startup down. Agents that live in your own project folders are left alone, because starting DorkOS is not a reason to write files into your projects (DOR-659).
  • DorkBot re-checks its own skills on every start, so if the links are ever lost it puts them back on its own (DOR-659).
  • New agents now land in the DorkOS folder the running copy is actually using. If you point DorkOS at a different folder — a second copy, a container, a checkout you are working on — creating an agent used to build it in your main ~/.dork/agents instead, so folders appeared in your everyday setup that you never asked for. Setting your own agents folder still means exactly what you typed.
  • Setup saves the personality you pick for DorkBot to that same copy's DorkBot. It used to edit the DorkBot in your main folder.
  • The create-an-agent screen now shows the real folder the agent will be created in, and checks that folder for a conflict. It used to show ~/.dork/agents, which was not always where the agent went.
  • Point your agents at your own copy of the docs. DorkOS hands your agents a link to the docs, and until now that link always went to dorkos.ai. Set DORKOS_DOCS_BASE_URL to your own site and your agents read that one instead. It has to be an http:// or https:// web address, or DorkOS will not start. Leave it unset and nothing changes (DOR-660)
  • OpenCode sessions no longer go missing once a project has more than 100 of them. Older ones used to drop off the list quietly — nothing failed and nothing said anything was hidden, so the list just looked short. The background sessions your agent starts for its own subtasks counted toward that 100 as well, so you could lose sight of your own sessions even sooner. Opening one of the hidden ones could also fail with a message saying the session did not exist, when it did. They are all listed and openable again, and if a project ever holds more sessions than OpenCode can hand over at once, DorkOS reports a problem loading the list instead of quietly showing you a shorter one. (DOR-673)
  • dorkos harness sync --check no longer creates a file. Check is the mode that only reports, and the docs called it safe to run any time — but run it somewhere that has no harness manifest and it quietly wrote one, into whatever folder you happened to be standing in. It now stops, names the folder it searched, and leaves everything exactly as it found it (DOR-678).
  • Three other ways into the same write are closed too. Plain dorkos harness sync with no flags, narrowing the run to one tool with --harness, and even naming a tool that does not exist all created that file first — so a command that went on to reject your input still left something behind. None of them write now.
  • --fix still creates a manifest when a folder has none, which is what --fix is for. The built-in help now says plainly which mode writes and which never does, and reminds you that sync always acts on the folder you run it in — so if it cannot find a manifest, the usual answer is that you are one directory away from where you meant to be.
  • Your agents now keep up with the built-in DorkOS skills. Until now only DorkBot did, and every other agent kept the skills it was handed on the day you made it. That matters when we correct a skill. One correction taught agents to warn you before deleting a task, and agents made before that fix never found out. Now DorkOS refreshes the built-in skills every time it starts, and puts them where the agent can actually read them (DOR-671)
  • Your own work survives the refresh. A skill you wrote is left alone, and so is a built-in skill you have edited. Deleting a built-in skill does not stick, though: it comes back the next time DorkOS starts, so edit it instead if you want it out of the way. Agents you registered from a folder of your own are not touched at all.
  • Saving from two places at once no longer loses one of the saves (DOR-697). If you had DorkOS open in two tabs, or an extension saved in the background while you changed a setting, two saves to the same file could collide: one would fail with an unexplained error, and the other could quietly store the wrong content. Sign-in details for your agent runtimes, your marketplace sources, and your agent templates were all stored this way — a collision could drop a saved key or source, and in the worst case wipe your whole template list. Saves to the same file now take turns, and each one keeps its own content.
  • An agent that takes a long time to answer in a room no longer counts as finished. A room waits 10 minutes for a reply. After that, the other agents in the room used to be told it was free, so two of them could start the same job. It now counts as working until its answer lands
  • A room no longer names the same agent twice while it is working. One agent can have two replies going at once in a busy room, and each one was listed separately
  • When a slow answer fails on its way into the room, the room now says the turn failed. Before, it went quiet and left you waiting for an answer that was never coming
  • Press-and-hold menus no longer interrupt you mid-gesture. Starting a scroll or dragging to select text used to be able to open the menu under your finger; a press that travels now leaves your gesture alone
  • A room with a lot of agents in it no longer grows the sheet off the top of the screen. It stops at a readable height and the middle scrolls, the way every other panel in DorkOS does.
  • Opening the sheet on a phone no longer pops the keyboard at you. The search box is still the first thing under the heading, and still one tap away — you just get to look at the list first.
  • The × that takes an agent back off the list while you are choosing was a few pixels too small to hit reliably on a phone. It is now comfortably thumb-sized.
  • On Telegram, "typing…" now means an agent is actually working. It used to appear the moment your message arrived — before anything had picked the message up, and even when nothing ever would, so a chat that was never going to get an answer sat there watching a bot pretend to type. Now it starts when the turn starts, and stops when the reply lands, when the turn fails, or when the agent pauses to ask you something — a question, or a tool it wants approved. The old 60-second cutoff is gone too: a long job keeps typing for as long as it keeps working, instead of going quiet a minute in while the work carries on. And if an agent goes silent without ever finishing, the typing stops by itself after a minute rather than running forever.
  • Choosing a default runtime other than Claude Code no longer silences your agents on chat platforms. dorkos config set runtimes.default opencode is a documented setting, but it also reached the relay — the part of DorkOS that carries messages between your agents and Telegram, Slack, and the like. The relay only knows how to talk to Claude Code, so a different default left it with nothing it could use, and it switched message routing off during startup with nothing you would ever see in the app. The server looked healthy, the chat connection looked connected, and messages went nowhere. The relay now uses Claude Code directly whatever your default is, and where it genuinely has to make a choice it writes that choice to the log instead of going quiet.
  • Keep a long conversation's memory when Claude Code renames it a second time. Claude Code can give a session a new name when it picks it back up, and after the second rename DorkOS lost track of which conversation was which — the agent started over with no memory of what you had been talking about. A session now answers to every name it has ever had (DOR-774).
  • An agent that stops to ask your permission no longer gets cut off as stuck. If a second reply started on the same chat while the first was still waiting on your answer, DorkOS could decide the waiting agent had frozen and end its turn ten minutes later. The turn now stays open while it waits on you. (The permission request itself still expires after 10 minutes, as before.)
  • Long jobs keep their chat to themselves. A turn that ran longer than five minutes — normal for room agents and for anything that reads a lot of files — used to become fair game for another browser tab or device, which could start a second reply on top of it. A turn that is still working, or still waiting on you, now holds the chat for as long as it needs. One that has genuinely gone quiet is still handed back after five minutes.
  • Sessions started in a linked folder, a folder with accented characters in its name, or a very deeply nested one now find their earlier history instead of starting from scratch.
  • When the same chat opened twice at once, one of the two views could go permanently silent — connected, but never receiving anything again. It now reconnects and catches up.
  • If DorkOS can't stop a frozen agent, it no longer waits forever trying. It gives up after 30 seconds, closes the turn, and says what happened in the log.
  • Telegram private chats now use an allowlist, the same way Slack DMs do. A bot handle is public, and a private message starts a real agent turn on your machine, so a new integration answers only the people you name. If a message is ever turned away, the log says who it was, their user ID, and the setting to change (DOR-788).
  • A Telegram bot you already set up still answers anyone who messages it. Changing that automatically would have taken a working bot off the air, so the old behaviour is kept and DorkOS warns about it by name at every startup. Open that integration, set DM Access to "Allowlist only", and add the people you want.
  • Slack says the same thing out loud. Turning someone away used to be silent, which looks identical to a broken bot — especially right after setup, when the allowlist is still empty. It is now one clear line per conversation, not one per message.
  • "Let this agent start conversations here" is now a permission for that one agent on that one channel. Before, once you granted it, any agent on your machine could message that chat as your bot.
  • If the part of DorkOS that decides who may message whom fails to start, chat integrations no longer start either. They used to connect, look healthy, and answer nobody — with the permission checks quietly switched off.
  • If your relay access rules become unreadable, DorkOS now stops delivering and says which file to fix, instead of behaving as though you had never written a rule.
  • One unreadable integration in your settings no longer hides all of them, and adding a new integration can no longer delete the ones DorkOS could not read. An unreadable one is kept exactly as written — so if it holds a password, that password stays in plain text until you fix or delete it, and DorkOS now says so. You can delete it by name, and re-creating an integration under the same name clears the broken copy.
  • Group chats set to "a separate session per person" now really do give each person their own session. Everyone in the room was sharing one, so a conversation could be read by whoever spoke next.
  • A message from a chat platform can no longer impersonate DorkOS's own instructions to your agent. Code and prose you paste into chat still arrive exactly as written.
  • Custom webhook headers can be set at all now — saving them used to fail every time — and they are treated as secrets: stored encrypted, hidden when read back, and never written to a log. An API key put there used to sit in a plain settings file (DOR-796).
  • A Telegram integration that loses its connection now reports the problem and reconnects, instead of retrying in silence forever while reporting itself connected.
  • A webhook pointed back at DorkOS now stops after a few laps instead of talking to itself indefinitely. If your service answers DorkOS through the inbound endpoint, pass the X-Relay-Hop-Count and X-Relay-Max-Hops headers back unchanged.
  • An agent in a room no longer forgets the conversation. Its replies used to get filed under one name while the room remembered another, so the next message started the agent over from nothing. It happened quietly: no error, no notice, just an agent that had lost the thread. The room now keeps up with the name the moment it changes.
  • On startup, DorkOS checks every agent in every room and writes a line in the log for any whose saved conversation it cannot find, naming the room and the agent. Nothing is deleted, so a conversation that went missing can still be tracked down by hand. If DorkOS cannot read your saved conversations at all, it says that too, instead of finishing quietly and looking like all is well.
  • When a message you send from Telegram or Slack cannot reach its agent, the chat now tells you so in one line — instead of going quiet in a way that looks exactly like an agent thinking. It says which thing to change: the chat is paused, it is set not to reach its agent, the agent is not available, a session would not start, or the agent is at capacity. If you send the same message five times, you are told once. These lines only ever appear in a chat you connected to an agent yourself; DorkOS never speaks in a chat you haven't set up.
  • A turn that ends without saying anything now says so, rather than leaving your question sitting there. It stays quiet when the agent already answered, already showed an approval card, or already reported an error — so you never get "the agent finished without sending anything back" underneath a real reply.
  • A long answer no longer arrives with its beginning missing. Any reply that took more than five minutes used to lose everything written before that point; on Slack it also split into a second message halfway through. Both now wait for a stream to actually go quiet, however long the answer takes.
  • Mail waiting in an agent's inbox is no longer deleted an hour after it arrives. An agent that was switched off for an afternoon came back to an empty mailbox with nothing to say a message had ever arrived. Unread mail is now kept for a week, and when it finally does expire it is set aside where you can still read it.
  • Task-completion notices go to the conversation you were actually using, not to whichever one happened to be listed last — which was often a channel nobody had touched in weeks. Under the one-session-per-person setting, a group's notice can no longer end up in somebody's private messages.
  • Changing an integration's settings while it is refusing to shut down no longer starts a second copy of it. That is what made a bot answer everything twice, and bill twice for one question.
  • On Slack, the 👀 mark now lands on the message being answered. When a message was dropped before it reached an agent, the mark used to shift onto the next person's message instead.
  • A task problem that sticks around no longer repeats in your log every five minutes. DorkOS checks your task files on a timer, so one bad file used to write the same line twelve times an hour, all day, burying anything else that went wrong. You now get the full message the first time it happens, then one reminder an hour that says how many times it has repeated. A different problem always shows up right away.
  • When an agent asks to use a tool and nobody answers, it gives up after ten minutes. That used to happen in complete silence. DorkOS now writes a line saying which agent gave up and what it was asking about, so you can find out afterwards why it stopped.
  • An agent in several rooms at once no longer starts a separate job for each one in the same project folder. It finishes what it is doing first, and the other rooms say it is busy elsewhere rather than going silent.
  • A room could mistake somebody else's work on the same agent for its own answer and post it. It now tracks exactly which piece of work it asked for.
  • The agent's thinking shows up again. It streams in while the agent is thinking and stays in the conversation afterward — a lost capability flag had been leaving every thinking block empty.
  • A scheduled task that runs past its time limit now actually stops, even when it is sitting on a permission prompt waiting for an answer. Before, the limit only took effect the next time the agent said something — so a task parked on a prompt nobody answered kept running, held onto one of your run slots, and made shutting DorkOS down slow. This works whichever way your tasks are dispatched.
  • A task run that was stopped now records why — you cancelled it, or it ran out of time — instead of reporting both the same way. Cancelling a run also shows up once in your activity feed instead of twice.
  • A task file on disk can no longer set a scheduled task to run without approvals. If one asks for it, DorkOS quietly turns the task back down to the normal prompts and notes why in the log. Choosing "Full autonomy" yourself, in the cockpit, still works exactly as before — and if that task's file is later rewritten behind your back, or reappears after the task was paused, it drops back to the normal prompts instead of carrying your permission over to work you never approved. The install preview now shows the setting a package's task will really get, not the one it asked for.
  • Editing a scheduled task no longer widens what it may do. A task set to a mode the edit form does not offer — like plan mode — keeps that mode when you save, and the form now says in plain words what it is instead of quietly switching it to "Allow file edits".
  • A session can no longer be set to a trust level its agent cannot actually run. A Codex session set to a stop Codex does not have used to be accepted and displayed everywhere while Codex quietly kept running read-only. The setting is now refused, with a message naming the ones that agent does support. Sessions already saved that way still open and run as before.
  • A Claude session set to "Auto" no longer fails to send when DorkOS has not confirmed that the chosen model supports Auto — right after a restart, for instance. The turn runs in Default and says it could not confirm, and your Auto setting is kept, so it applies again as soon as the model is confirmed.
  • Approving or denying a tool in an OpenCode session now clears the card right away. It used to wait for OpenCode to confirm the answer, and if that confirmation never arrived the card sat there and the session stayed stuck as "waiting on you", blocking the next message.
  • An integration or a task saved at a setting the dial does not offer keeps that setting instead of being quietly widened to a broader one. It says which setting it is, and saving leaves it alone until you pick something else on purpose.
  • Stopping a scheduled run now works. On a normal install, DorkOS hands a scheduled run to its message bus, and the Stop button in a task's run history did not know how to reach a run that had gone that way — it answered "run not found" for a run that was plainly still working, and the only way out was to wait or restart. Stop now reaches the run wherever it is running: the agent is told to finish the turn it is on, and the run is recorded as cancelled. (DOR-808)
  • DorkOS no longer claims to have stopped something it could not reach. If nothing picks up the stop, you are told so in plain words — including when the hold-up is DorkOS's own message limits rather than a silent agent — and the run is left as it is, instead of being marked cancelled while the agent keeps working. Pressing Stop on a run that has already finished says so, and does nothing else. (DOR-808)
  • A run that finished its work is never recorded as one you stopped. Pressing Stop in the same instant a run was ending filed the finished run as cancelled, output and all. Whichever happened first now wins honestly, on both the scheduled and the direct path. (DOR-808)
  • A scheduled run that hit its time limit is no longer also reported as failed. The run's own record said "cancelled" while your activity feed said the task failed. Only the run's record was ever right. (DOR-808)
  • Only DorkOS itself can stop your scheduled runs. Stop requests travel over the same message bus your agents use, and an agent that guessed a run's id could have ended somebody else's work. Anything that is not DorkOS asking on your behalf is now refused. (DOR-808)
  • The names DorkOS reserves for its own messages are now protected everywhere. Anything reaching your DorkOS port could claim a mailbox at an address DorkOS uses for its own traffic — including agents' own addresses, and the channel that carries a Stop — which quietly intercepted messages meant for someone else. Those addresses are refused now, whoever asks. (DOR-808)
  • The soft pulse that says work is happening — on the thinking line, on loading placeholders, on connection dots — had never actually been drawn. About twenty places in the app asked for it and got nothing. They breathe now.
  • Changing how much a Claude Code session asks before acting, right as its first message was being sent, could be quietly undone a moment later — putting the agent back on the setting you had just moved away from, including "act without asking". Your newer choice now always wins.
  • A hiccup in the settings database while a session was picking up its permanent name no longer ends the message you were in the middle of. It gets logged, and the turn carries on.
  • If you had set a server-wide default for how much new sessions ask before acting, that default could overwrite the choice you made for one particular session, moments after you made it. Your choice for a session now always beats the default.
  • Sending a second message while a brand-new session was still answering the first no longer counts as starting a whole second session.
  • An attachment that got stuck uploading used to freeze the whole message box — the send button spun forever and the Enter key stopped working, with no way out but a page reload. Now you can stop an upload: click the spinner where the send button sits, press Escape, or click the X on the file. And if the connection dies mid-upload, DorkOS gives up after 30 seconds and tells you on the file itself, so you can try again or drop it and carry on. A big file on a slow connection is left alone — only silence counts as trouble, not slowness. (DOR-494)
  • Some wifi networks answer for you — the hotel or cafe sign-in page that appears before you're online. When one of those replied to an attachment upload, DorkOS took it for an answer it could not read and sat on a spinner that never stopped, with the Cancel button unable to help. It now says the upload got an unexpected reply, so you can sign in to the network and try again. (DOR-494)
  • DorkOS watches files in the background so it can notice when your sessions, tasks, agent rules, and integration settings change on disk. When one of those watchers failed — usually because the machine ran out of file handles — it went quiet and nothing said so. Now each one writes a single clear line naming what it was watching and why it stopped. Repeats of the same failure are folded into that one line, and the line says so, so a quiet log afterwards is on purpose rather than a second thing to worry about. A watcher that stops does not restart itself: it keeps serving what it already loaded, but changes in that folder go unnoticed until you restart DorkOS.
  • On a machine that had run out of file handles, DorkOS could get stuck partway through starting up and never finish — no window, no error, nothing in the log. It now starts, tells you which watcher failed, and runs with that one part degraded instead of not running at all.
  • Scheduled tasks stay in sync again: the background sync that runs every five minutes no longer fails, and a problem that won't go away now writes one log line an hour instead of a flood (#667)

Security

  • An approval now only covers the exact thing you approved. Saying yes to uninstalling one package cannot be reused to uninstall a different one, to delete that package's saved data when you agreed to keep it, or to change a different project. Each approval works once, only a person can answer one, and approvals are never stored in a form anything could reuse (DOR-447).

  • Agent identity tokens now expire. A token stops working after a week of not being used, and after a month no matter what. Before, a token handed out for a five-minute session last month still worked today, which mattered much more now that DorkOS records who an agent is (DOR-448).

  • An approval covers one exact action, and the check happens before anything runs. An agent that changes even one detail of what it asked for has to ask again (DOR-448).

  • Hiding does not help. An agent that leaves its name off a request still cannot run a catalog action that cannot be undone without your approval, and the card tells you plainly that DorkOS does not know who asked (DOR-448).

  • When an agent presents an identity DorkOS does not accept, that now shows up in the debug log so you can see an agent with an expired or rejected token still trying. The token itself is never written down (DOR-448).

  • Closed an information leak in the config_get tool. It returned your whole settings file with only four fields held back. What came through included pointers to where your provider keys live. That means an environment variable name, a keychain entry, or the path to a key file on your disk. It also included the name of the DorkOS account this install is linked to. That tool answers without asking for a token, so any program running on your machine could read all of it. Your keys themselves were never in there. Now the tool shares a fixed list of settings. Anything key-related comes back as a plain yes or no instead of a value. Adding a new setting to DorkOS now means deciding whether it belongs on that list, so nothing new can slip in unnoticed (DOR-428)

  • An agent could approve its own request. When an agent asked to do something that cannot be undone, the reply carried the code needed to retry, and nothing stopped the agent from answering the request itself. Now the agent that asked, and anything holding that retry code, is refused, and the request keeps waiting for you (DOR-428)

  • The approval card could be worded to hide what would really happen. An agent could put punctuation in a package name so the card read "keeping saved data" while the real setting was "delete saved data", and pad it so the true setting scrolled out of view. Details an agent supplies now appear in quotes, each one is kept short, and a card for something that cannot be undone is never cut off (DOR-428)

  • Approval cards no longer show anything that looks like a password or a code. Your agents can read the waiting list, so a card that echoed a secret back was publishing it. Cards now show only the details the action needs, and hiding a code no longer depends on where it sits in the text or how long the text is (DOR-428)

  • The docs now say plainly what the approval question does and does not protect against. With no login required (the default), it stops mistakes and it stops an agent that follows the rules but was talked into something bad. It cannot stop a program that already has full run of your computer. Turn on Require login in Settings, under Security, and answering a request needs a real account (DOR-428)

  • Through DorkOS's own tools, agents can no longer turn off your login. The config_patch tool let an agent change any setting, and nothing asked you first. That included the login switch. Turning login off is the one change that undoes every other protection, because approving a risky action is what a signed-in person does. An agent could switch that off and then approve its own work. The tool now refuses the settings that decide who can reach your instance, what it can touch, and what leaves your machine: login, the public tunnel, the MCP endpoint and its key, telemetry choices, where your provider keys come from, extensions, the runtime programs DorkOS runs, and the folders DorkOS reads and writes. Ask an agent to change one and it is told plainly to ask you instead. You still change all of these yourself in Settings, exactly as before. Adding a new setting to DorkOS now means deciding whether an agent may write it, so nothing new can slip through unnoticed. To be clear about the limit: a program running on your machine as you, including an agent with a terminal, can still reach these settings directly, the same way it can reach any tool you run. That is the trust boundary described in the threat model, and turning on login is what moves it (DOR-488)

  • Uninstalling a package now asks you first, whichever way an agent reaches for it. The dorkos uninstall command used to remove packages with no approval at all, and it was the command your agents were taught to use. Now an agent gets an approval card and waits for your answer, and you can hand it the go-ahead with dorkos uninstall <name> --approval <token>. Clicking Uninstall yourself in DorkOS works exactly as before (DOR-467). With Require login on, the approval must be granted by a signed-in person in the browser; dorkos uninstall then prints the command to finish once you've said yes.

  • Agents can no longer change the settings that protect your instance through the settings API. Turning off sign-in, widening which folders DorkOS may touch, and changing where its credentials go are yours to choose. Your own changes in Settings are unaffected (DOR-467).

  • Ask you first before an agent deletes one of your scheduled tasks. Deleting a task cannot be undone, so it now waits for your approval like removing a package does (DOR-468)

  • Ask you first before an agent removes another agent. That one call used to take three things at once: the agent, its setup file on disk, and its scheduled tasks (DOR-468)

  • Sort every tool an agent can reach into read-only, changes-something, and cannot-be-undone, so a new tool cannot arrive without somebody deciding which it is. Only the two above wait for you; everything else runs exactly as before (DOR-468)

  • Refuse extension names that would put a new extension outside your extensions folder (DOR-507)

  • With Require login on, the settings screen now insists on a person, not just an account. Changing the settings that protect your instance (whether login is required, the key for the tool endpoint, the folder DorkOS may touch, the programs it may start, your privacy choices) now needs someone actually signed in to DorkOS. A program holding one of your API keys is refused, where before a key was enough to turn login itself back off. Nothing else about signing in changed (DOR-505).

  • Three of those settings can also be changed from their own buttons elsewhere, and those paths are not guarded yet at all: connecting a model provider, starting your public web address, and linking this instance to a DorkOS account. They do not check who is calling, so this is unchanged whether Require login is on or off. The approvals guide says which is which, and we are closing them separately (DOR-505).

  • Worth knowing if you leave Require login off, which is the default: nothing changes there, and nothing can. A program on your own computer that hides the fact it is an agent looks exactly like you clicking a toggle in Settings, so DorkOS has nothing left to tell the two apart. Turning on Require login is what closes it. The approvals guide now spells out which of the two you have (DOR-505).

  • Agents can now only read a Relay inbox that belongs to them: their own address, an inbox handed to them when they sent a background message, or one they set up themselves. Before, an agent could name any other agent's address and read its waiting messages, and polling with ack deleted those messages for good. The same rule now guards removing an endpoint, which throws away its whole mailbox. Asking for someone else's inbox is refused, and says so. (DOR-506)

  • An inbox keeps belonging to the agent that set it up, even after DorkOS restarts. Ownership used to live only in memory, so the first agent to ask for an address after a restart became its owner, could read mail meant for someone else, and locked out the real owner. (DOR-506)

  • Two inbox names that differ only in capital letters can no longer both exist. On macOS and Windows they shared one mailbox on disk, so an agent could wipe another's messages by registering a differently-capitalized copy of its address and then removing it. (DOR-506)

  • Agents can no longer claim the addresses DorkOS manages itself (relay.agent.*, relay.system.*, relay.human.*). Claiming another agent's address would have quietly intercepted its incoming messages, not just read them. An agent's own inboxes live under a set of addresses of its own (relay.inbox.*). (DOR-506)

  • A standing permission cannot outgrow what you agreed to. It covers one agent and one action, never a group of either. Its clock is set the moment you grant it and using it never extends the clock, so an agent cannot keep itself trusted by staying busy. It stops working the instant you end it, the instant you switch standing permissions off, and the instant you turn off Require login. And nothing an agent can do creates one: opening a permission needs a person signed in to DorkOS, so answering a single approval is not enough (DOR-501)

  • Your agents cannot read the list of what they are allowed to do without being asked. Knowing which irreversible action goes through silently right now, and the minute the window shuts, is a map worth keeping to yourself, so that list needs the same proof of a person as answering an approval does. And when DorkOS starts, any permission left over from a time when it was not allowed to exist is ended, whether that is because standing permissions were switched off or because Require login was, so turning either back on never wakes an old one (DOR-501)

  • No trust level can switch off the questions about DorkOS itself. Running a session at a level that skips prompts still leaves removing packages, deleting scheduled tasks, and the rest of the actions that cannot be undone behind the same question. That is now something DorkOS tests for rather than something that happens to be true (DOR-501)

  • Only you can change where DorkOS gets packages from. A marketplace source is a place DorkOS will download and run code from, so an agent that tries to add or remove one is now turned down with a plain refusal telling it to ask you instead. There is no card and no way for it to say yes. Adding and removing sources still works normally from your own terminal and from the Marketplace sources screen, and agents can still list, refresh, and validate sources and install from the ones you already added (DOR-502)

  • Close a hole where a web page you visit could drive your agents. A page can point its own domain at your own machine, which makes your browser treat it as if it came from DorkOS. DorkOS now answers only to the address you actually use, so that page gets turned away (DOR-532)

  • Reach DorkOS by another name, like dorkos.example.com behind a proxy? Set DORKOS_TRUSTED_HOSTS=dorkos.example.com and it works again. Turning on login skips the check entirely, and the official Docker image is unchanged (DOR-532)

  • Stop a stranger from installing software on your machine through DorkOS. The buttons that install Ollama, Codex, and OpenCode are meant for you, sitting at your own computer. They trusted headers that any caller can set, so anyone who could reach your instance could start an install. DorkOS now checks the network connection itself, which nobody can fake. Docker is unaffected, because there the container already controls who gets in (DOR-532)

  • Worth knowing if you leave Require login off, which is the default. Two of the rules above work out who is writing: the reply limit that your messages reset, and the rule that only you change who is in a room. Both need DorkOS to tell you apart from a program running on your own computer, and with login off it cannot — a program that simply does not mention it is an agent looks exactly like you. Read those two as shaping how a room behaves, not as limits on what it can spend.

    The hourly limits are the ones that hold either way, because they never ask who is calling. The per-room limit caps what any one room runs; on its own that is not a cap on your bill, because a program that keeps making new rooms gets a fresh allowance each time. The total limit is the real ceiling: 240 automatic replies an hour across everything, however many rooms exist. Both reset if DorkOS restarts.

    None of this gives a program on your machine anything it did not already have — anything that can send these messages can run an agent directly. What these limits are really for is stopping well-behaved agents from talking each other in circles by accident, which is the common case and worth having on its own. Turning on Require login is what tells you and a program apart (DOR-526, DOR-505)

  • A settings block that was missing the feature-usage entry no longer counts as permission to send those events. A missing answer is never treated as a yes (DOR-584)

  • A message from Slack or Telegram can no longer run a shell command on your machine without asking you. A chat message started an agent turn, that turn landed at a trust level nobody had chosen, and at that level every tool — including the one that runs shell commands — was approved automatically. Now anything that reaches DorkOS for a decision asks you first, whatever level the turn is at. The one exception is Full autonomy, which is what that setting means and says (DOR-604)

  • "Accept edits" now does what it always said it did: accept edits. It promised "auto-accept file edits; still prompt for other tools" and then approved everything, shell commands included. It also no longer waves through a file edit that tried to write outside the folder the agent was working in — something like your ~/.ssh keys or your shell profile — which is exactly the case worth stopping to look at (DOR-604)

  • Only people you name can approve a tool call from chat. When your agent asks permission to run something, it posts an Approve/Deny card into the conversation — and anyone who could see that card could press Approve, including the person whose message set the whole thing off. Now Slack and Telegram integrations each have an "Approvers" list, and only the people on it can answer. It starts empty, which means nothing gets approved from chat until you say who may — and it is deliberately a separate list from who can message your agent, because talking to it and letting it run a command on your machine are not the same permission (DOR-609)

  • A new Slack integration only answers direct messages from people you name. It used to accept a DM from anyone in the workspace, and a DM starts an agent turn on your machine. Integrations you already set up keep working exactly as they did, and DorkOS now says so at startup if one of them is open to your whole workspace, so it stays your choice rather than an accident (DOR-604)

  • The timers a Shape sets up can no longer start themselves, or hand themselves a free pass. A Shape's setup file lists recurring tasks it wants for you, and until now that list could say two things nobody had agreed to: start the moment this Shape is applied, and run with every approval prompt turned off. Both are the kind of thing you should decide, not the package. Now one of those timers arrives turned off unless the Shape's author asks for it to start, and a request to skip all approvals is refused: DorkOS sets the task up asking, and leaves you a note saying the Shape wanted more than it got. You can still turn the timer on, or raise what it may do, on the task itself once you have read what it does. This covers the timers a Shape asks for in its setup file; a package that ships a task file of its own is separate work, still to come (DOR-607)

  • Ask before an installed package adds commands to your coding agent. Some marketplace packages ship hooks: commands your agent runs on its own, before or after it does things. Until now, installing one was enough to put those commands in place, with nothing shown and nothing to click. DorkOS now shows you each command and when it would run, and waits for your answer. Say yes and they go in; say no and the rest of the package still works. Your answer is remembered per package and per project, and DorkOS asks again if a later version wants to run something different, or wants to run the same thing at a different moment (DOR-522).

  • Stop an agent package from taking over the folder you install it into. Installing an agent package into a project treated the whole project folder as the package: DorkOS moved your folder aside, put the package in its place, and deleted the folder it had moved. It also meant the package could drop files anywhere, including places DorkOS reads. An agent package now installs into .dork/agents/<name>/, the same way plugins do, and everything already in your project stays where it is (DOR-522).

  • Your agent can no longer set up recurring background jobs on your machine without asking you. Switching to a Shape does more than rearrange the cockpit: it turns on every scheduled job that Shape comes with, and each one runs later, on its own timer, with nobody watching. A Shape can also say that its jobs should skip every safety prompt. Because switching Shapes was filed under "moving things around on screen", an agent could do all of that in one step and you would never see a prompt. Now an agent that wants to switch Shapes has to ask you first, and you see which Shape before you answer. Clicking a Shape yourself is unchanged: no extra prompt, it just switches (DOR-625)

  • The rest of what an agent can do to the cockpit is untouched. Opening a panel, showing a file, throwing confetti, switching which project you are looking at: all still instant, no prompt. Only the one action that reaches past the browser and onto your machine asks (DOR-625)

  • Messages other members wrote now reach an agent inside a clearly marked block that says they are information, never instructions. The markers around that block carry a one-time code, so nobody can end it early by typing the closing line into a message and having the rest read as trusted. (DOR-622)

  • Names, room topics and agent handles are cleaned before an agent sees them, using the same check that already protects messages arriving from Telegram and Slack. Someone cannot use their own display name, or the message a thread was started from, to slip an extra instruction into what an agent reads. (DOR-622)

Note for people upgrading

  • Extensions you installed before this update start out not allowed, and they wait for you the first time. This is deliberate: DorkOS will not treat "you switched this on once" as "you read this code". Open Settings → Extensions and allow the ones you want. It is one click each, once. Until then an extension you have not allowed will not show up in DorkOS at all, so if something you use has gone missing, that is where it went.
  • Nothing changes until you choose an account. Until then DorkOS works the way it always has. Before this release, DorkOS used whichever account the terminal you launched it from happened to point at. That meant sessions from your other accounts were quietly missing from your list.

[0.56.0] - 2026-07-22

First-run setup becomes a real conversation with DorkBot, the dashboard grows hands so you can start work straight from it, and connecting OpenCode begins with one plain choice about where your models run.

Added

  • A conversation entry point after setup: the sidebar "Getting started" card leads with a "Talk to DorkBot" row that opens DorkBot (DOR-416).
  • Hear each personality before you choose it: as you pick how DorkBot should sound during setup, DorkBot posts a short line back in that exact voice (DOR-417).
  • Open a chat that already carries your first message, so it sends the moment the session opens and your words show up as your own (DOR-417).
  • Start a session right from the dashboard. The top of the page now asks "What are we building today?" with a message box; send a message and it opens a session with your default agent, with your words already sent as your first turn (DOR-418).
  • See and message your agents from the dashboard. A "Your agents" row shows your agents as cards, each with a plain-language status like "Working now" or "Idle since yesterday". Click a card to open a session with that agent (DOR-418).
  • DorkBot now shows you around the app at the moments it matters. Ask "Show me around" any time to walk the dashboard, and the first time you schedule a task, connect a channel, or add a second agent, DorkBot offers to point out where that lives. Tours run on your real screen, never a mockup, and you can leave any time by pressing Escape or clicking outside. Say "Later" once and it will not ask again (DOR-419).
  • Open 3D models, audio, and video files right in the canvas, plus every text file a project contains. New audio/video viewers play inline, and the 3D viewer now loads 3MF/PLY/FBX/DAE models alongside glTF/GLB, STL, and OBJ (DOR-420).
  • Audio and video are new media types that stream from the server, so playback can seek to any point mid-file without downloading the whole clip (this uses HTTP Range requests). An unsupported binary shows a friendly in-canvas message instead of breaking the canvas (DOR-420).
  • OpenCode's model list now comes back grouped into Frontier, Solid coders, and Quick helpers, and sorted for you. Models that run on your own computer are marked as local, and frontier models stay cloud-only (DOR-422).
  • You can now pull any Ollama model by name, not just a short preset list. For each model DorkOS gives an honest read on whether it will run well, may be slow, or is too large for your hardware (DOR-422).
  • On Windows and Linux machines with an NVIDIA graphics card, those hardware reads now count your GPU memory, not just your system memory (DOR-422).
  • Start a new agent right from the dashboard: the Your agents section now has a New agent button next to its heading.

Changed

  • First-run setup is now a conversation with DorkBot instead of a stack of forms. DorkBot introduces itself, helps you pick how it sounds, offers to look around for projects you already have, and then hands you a real chat box. Your first message drops you straight into a live session, so setup ends by getting to work rather than on a "you're all set" screen (DOR-417).
  • The dashboard status cards now say what they mean for you. Instead of "1 adapter" or "0 schedules", they read "Connected to Telegram", "Nothing scheduled yet", "2 agents ready", and "Quiet this week" (DOR-418).
  • Connecting OpenCode now starts with one clear choice: where your models come from. Instead of Local, Gateway, and Direct tabs, you pick a power source in plain language: best models with zero setup (in the cloud, via OpenRouter), private and free on your own computer, or your own API key for Anthropic, OpenAI, or any OpenAI-compatible server. Each option says its one honest trade-off up front, and connecting ends on a clear "you're connected" moment with a Done button. Your session switches to OpenCode automatically, so you can send your first message right away (DOR-423).
  • The model menu is now searchable and grouped by what a model is good for: Frontier, Solid coders, Quick helpers, and More models. Models that run on your own machine are marked "private" so it's obvious what never leaves your computer. Short lists (like Claude Code and Codex) look exactly as before (DOR-423).
  • The private, on-your-computer option is now a small manager: it shows the models you already have with an honest read on how well each fits your hardware, a short shelf of good coding models you can add in one click with a live download bar, and a box to pull any model by name. Prefer LM Studio or another local server? A link takes you straight to connecting it directly (DOR-423).
  • Commands and file paths shown in the app now use one consistent inline style, so code you can copy is easy to spot.
  • The setup screen now shows a friendly "We'll install it for you" note with the exact command one tap away, instead of a raw terminal line, and the button to start chatting reads "Meet DorkBot".
  • Setup details now list each coding agent's name on its own line, so long names and their descriptions are both fully readable.
  • When you connect Codex or Claude, signing in is now the first thing you see. Prefer a key? "Use an API key instead" reveals the key field, and you can switch back anytime.
  • The first-run setup screens now work with your browser's back and forward buttons, and a refresh keeps you on the same screen instead of starting over.
  • The personality step in onboarding now sits in its own card with a bigger, centered radar, and DorkBot previews its voice in a quote right inside the card instead of as a stray chat message.

Fixed

  • The setup finish screen keeps the completion screen up until you act. It used to close on its own a second or two after appearing, dropping you on the dashboard before you could click "Start your first session" (DOR-416).
  • Never-active agents show as new, not dead. A DorkBot you just set up reads "New" instead of "Stale" or "Never active", and it stays visible in the sidebar instead of hiding under "inactive agents" (DOR-416).
  • The finish-screen confetti stops on exit: it clears after a few seconds and when you move on, instead of drifting across the screen long after setup (DOR-416).
  • One broken file can no longer take down the whole canvas. When a document fails to open, only that tab shows a short "This tab hit a problem" message with a Retry button. Your other tabs and the tab strip keep working. If the app updated while the tab was open, the message offers a one-click reload (DOR-420).
  • 3D models degrade gracefully. If your device can't open a 3D view, the tab shows a plain message instead of breaking the canvas (DOR-420).
  • Opening and closing 3D files over and over no longer piles up graphics memory. When you close a model, the viewer now frees its geometry, material, and texture resources, and an unused material fallback was removed (DOR-420).
  • Markdown files open ready to edit again. Click the pencil on a Markdown file in the canvas and it turns editable right away, keeping your place. Your typing autosaves as before (DOR-420).
  • The canvas now matches the theme you picked in DorkOS. Markdown, code files, and change diffs all follow your light or dark choice, so a light app stays light and a dark app stays dark even when your computer's own setting disagrees. And if you leave DorkOS set to follow your computer, it now reads that setting correctly too. Switching themes updates every open document instantly, no reload needed (DOR-420).
  • DorkOS now remembers your OpenCode connection. Once you connect OpenCode (through OpenRouter, your own API key, or local models on your computer), it stays ready across page reloads and restarts. You are no longer asked to sign in again when you already had (DOR-422).
  • Dialogs now open in place instead of flying in from the top-left corner.
  • The guided tour's highlight now glides smoothly from one spot to the next instead of jumping in from the corner.

[0.55.0] - 2026-07-22

Smart groups keep a fleet of agents organized, a new connectors foundation brings outside services into your agents, and first-run setup gets shorter and more honest.

Added

  • The file tree now remembers where you were. Open a file, switch panel tabs, or reload the page, and the Files panel comes back exactly as you left it — the same folders open, the same file highlighted, scrolled to the same place. Each working directory keeps its own spot, so moving between projects picks up right where each one was (DOR-404).
  • Give each agent group its own "Show" filter (All, Active, or Needs attention), so a busy fleet collapses to just the agents actually waiting on you. Agents that have been quiet for a week tuck themselves behind an honest "N inactive agents" count instead of cluttering the list; click it to see them. (DOR-339)
  • Mute a noisy agent or an entire group from its right-click menu. A muted agent dims, drops its activity badge, and never lights up a group's activity dot, but it always stays in place and clickable. Unmuting a group restores each member's own mute setting. (DOR-339)
  • Sessions that were not you talking to the agent directly (an automated scheduled run, another agent messaging in, or a message that came through Slack or Telegram) now show a small, quiet icon so you can tell them apart from your own conversations.
  • Your own recent conversations show first in the sidebar. A quiet "+ N automated" line lets you reveal the rest when you want to see them.
  • Opening a session shows the same information at the top of the chat, so you always know where it came from.
  • Build a sidebar group that fills itself in: pick "Active now" or "By runtime · Codex" from the "+" menu, or write your own rule (runtime, namespace, status, how recently active, folder path), and DorkOS keeps the group's members current on its own as agents start work, go idle, or switch projects. Only shows up once you're running 8+ agents or 2+ runtimes, so a small fleet's sidebar looks exactly like it did before. (DOR-338)
  • A smart group always tells you what it's showing: a plain-English rule summary in its menu, and an honest "No agents match these rules" instead of vanishing when nothing qualifies. You can't drag an agent into one, dropping on it shows a reminder to edit the rule instead, and matching agents still show up in their usual group too. (DOR-338)
  • Change your mind any time: "Edit rules" reopens the same rule form, and "Convert to manual group" freezes today's members into a regular group you manage by hand. (DOR-338)
  • Agents now know who they're talking to on Telegram and Slack: the sender's name and the chat title ride along with each incoming message. Session lists and headers show it too — "Telegram · Dorian" or "Slack · #incidents" instead of just the platform name.
  • dorkos package init now takes --categories, so new packages start with the right marketplace categories instead of an empty list. (DOR-373)
  • Sort the Marketplace by Popular again: packages now show real community install counts, and the sort orders the most-installed first. When you are offline, the Popular option grays out instead of quietly doing nothing.
  • Install the Codex CLI for you with one click. When Codex is set up but not yet on your machine, DorkOS can download it for you and turn the check green, the same way it already handles OpenCode.
  • Sort the Marketplace by Recent again: the sort now orders packages by when they were last updated, read from the registry's real change history, so the most recently touched packages come first. When you are offline, the Recent option grays out instead of quietly doing nothing.
  • New connector setup guides you can read before you turn anything on. They show how to connect a service like Gmail through Composio, or point at your own tool server, and each one says in plain words where your login is kept. Connectors are still in alpha (DOR-371).

Changed

  • Reading an agent's Relay inbox now shows only its real, deliverable messages by default. Before, a message the budget gate rejected could show up right next to real ones, with nothing telling a script apart. Pass ?status=failed to see rejected messages, or ?status=all to see everything. (DOR-337)
  • Coming back to the Files panel is now instant: folders you've already opened reappear straight away instead of loading again.
  • Refresh now reloads every folder you have open, not just the top level — so a file added deep in the tree shows up the moment you hit Refresh (DOR-404).
  • The show-hidden-files choice now sticks across a page reload, not only a tab switch.
  • The Shape switcher tidies up after itself: when it takes you to a new agent, it steps aside instead of leaving a dead panel over the view, and it drops the extra "Open" button for the place you're already standing in. "Set up agent" now starts pre-filled from the Shape's own template. (DOR-378)
  • The attention badge now updates the moment a run fails or a message bounces, instead of waiting up to 30 seconds for the next check. When the system notices an agent has gone offline, the badge reflects that right away too.
  • Setup during onboarding now lets you get started the moment one coding agent is ready, instead of waiting until every runtime is connected. If Claude Code is set up, you'll see "You're ready" and a single "Get started" button, with the other agents tucked into a quiet "more agents available" section you can open anytime (or skip and add later from the status bar).
  • Connecting an agent now does the work for you. Instead of copying terminal commands, you sign in right in the app or install an agent with one click. A small line under each button always tells you exactly what runs on your machine, so nothing happens behind your back.
  • If no agent is set up yet, onboarding leads with a warm "Connect your first agent" step instead of a wall of red errors. The moment you connect one, it flips straight to the ready screen.
  • The setup screen now scrolls on short windows and phones, so the connect cards and buttons are always reachable.
  • The Obsidian panel now opens the same Inspector side panel as the web app. It holds Pulse, your agent's profile, and the file tree in one place, and slides in as an overlay so it fits the narrow panel. The terminal tab shows only where it's supported, so it stays hidden in Obsidian.
  • First-run setup is shorter and more honest. It only shows the "import your projects" step when there is actually something on your machine to import, and it drops the separate task-scheduling step (you can still set up scheduled tasks any time from the Tasks page). Once you finish, DorkOS remembers, so setup never pops back up after a refresh. The finish screen now celebrates only what you actually did, with no list of skipped steps. A new "Getting started" card in the sidebar links straight to creating an agent, scheduling a task, or adding more agents. Changed your mind? "Replay setup" in Settings walks you through it again.

Fixed

  • Relay pulses in the mesh topology view no longer pile up when you're zoomed out or have reduced motion on, then burst out all at once the moment you zoom back in. Pulses that can't be shown are dropped right away instead of queuing up for a later flurry. (DOR-342)
  • The mesh network map no longer lists an agent's teammates as if they were external connections (Slack, webhooks, and so on). With two or more agents in the same project, the map used to show each agent's siblings as "adapters" by mistake.
  • The network map now shows the access rules that actually protect your projects from each other, not just the ones you added by hand. Before, the map said there were no rules at all, even though agents in different projects were already blocked from talking to each other by default.
  • Session lists no longer show noise rows: sessions with no conversation in them (like "Session 3f2a…") and agents' internal helper transcripts are now hidden. Opening one directly by its link still works.
  • Selection reveal no longer fights scroll restore on remount (DOR-404).
  • Local folder marketplace sources now work with the standard Claude Code layout, where marketplace.json lives in a .claude-plugin folder.
  • Installing a Shape through the API or an agent tool now tells you when your project choice was ignored: Shapes always install for all projects.
  • Agents checking their relay inbox now see only messages waiting for them by default, even when they poll through the built-in relay_inbox tool instead of the HTTP endpoint. Before, that tool showed everything, so a message the budget gate rejected could sit right next to real ones with nothing telling them apart. Pass status: "failed" to see rejected messages, or status: "all" to see everything. (DOR-406)
  • The setup screen no longer shows the same command twice. Each check now gives its own step: one line to install the CLI, a separate line to sign in. Before, a machine that had the CLI but wasn't signed in showed the full "install and sign in" command in both places for Codex and OpenCode.
  • The connector recommendation flow no longer hangs when a provider is unresponsive: it bounds the wait and surfaces a warning instead of stalling silently. (DOR-371)
  • In first-run setup, pressing Enter while typing in a connect field no longer skips you ahead to the next step before you're done.
  • DorkBot setup works when DorkOS is limited to a workspace folder. When you run DorkOS with agents scoped to a single folder (for example the Docker setup that pins agents to /workspace), the "Meet DorkBot" step no longer fails with an access-denied error. DorkOS's own agents — DorkBot and anything you install from the Marketplace — live in DorkOS's data folder, and agent actions now treat that folder as always allowed. Reading and writing your own project files stays limited to the folder you chose.

[0.54.0] - 2026-07-21

Added

  • A single global banner slot now shows the app's notices just below the header, one at a time — banners take turns by priority (a queue), never a pile. (#367)
  • Extension authors can now scaffold a right-panel tab in one step: create_extension offers a right-panel-tab template that ships a labelled inspector tab with its own icon. The authoring guide and the built-in extension API reference now document the tab label and icon options, so a tab can carry a real name and glyph instead of the default puzzle-piece. (#368)
  • After you install a Shape, you can apply it straight away — the "Installed" toast now has an Apply button, and every Shape in your installed list has one too. Both open the Shape switcher, where the change actually happens. (#372)
  • Your installed list now shows an "Active" badge on the Shape you're currently in, so you can tell at a glance which one is running. (#372)
  • When a Shape offers you an agent, the switcher now spells out that agent's schedule in plain words (like "Every weekday at 9:00 AM") instead of leaving it unsaid. (#372)
  • Right after you create an agent, its first chat now shows the newborn agent waking up — its face and name, with a soft pulse — instead of a generic empty screen. The moment it says hello, the greeting takes over. (#374)
  • The right-panel button now keeps a running count of what needs your attention — the same items Pulse surfaces, like stalled sessions and failed runs — and updates it while the panel is closed, so you notice without opening anything. No items, no badge.

Changed

  • That notice leads with a plain one-line summary and tucks the exact data it sends behind a "See what's sent" link — there when you want the details, out of the way when you don't. The same "See what's sent" control now shows the payload in onboarding and in Privacy & Data too, so it reads the same everywhere. (#367)
  • Pulse's Activity feed now updates the moment something happens, off the live event stream instead of waiting on a timer.
  • When the panel is showing only one thing, its header now names that tab (icon + title) instead of sitting there blank.
  • Pulse hides a "View all" link when you're already on the page it points to — no more clicking a link that goes nowhere.
  • Switching from one Shape to another now turns off the previous Shape's extensions (unless the Shape you're switching to also uses them), instead of leaving every Shape's extensions piled on. Uninstalling the Shape you're currently in also turns its extensions back off. (#369)

Fixed

  • The "we share a little anonymous data" notice no longer hides behind the sidebar or shoves the app header down the screen. It now sits in its own row just under the header, where you can actually read it. (#367)
  • When a newborn agent can't say hello — the opening greeting never arrives, or stops halfway through — it now tells you plainly ("couldn't say hello just now — send a message to get started") instead of leaving you on the generic "Start a conversation" screen.
  • Three cockpit papercuts, one per surface: real Marketplace names (with a matching A–Z sort), Cmd+. and Cmd+Shift+A handed back to Obsidian, and the arrival card's emoji face.
  • Marketplace cards, dialogs, and messages now show each package's real name instead of its code-style ID — you see "Security Scanner", not "security-scanner". This covers the browse cards, the install and detail windows, the installed list, and the install, update, and uninstall messages, and the "A–Z" sort now orders by those same names.
  • In Obsidian, two keyboard shortcuts that did nothing there — Cmd+. and Cmd+Shift+A — no longer swallow those keys, so they stay free for Obsidian to use.
  • The "Meet your new agent" card now shows the agent's emoji face — the same one you pick in the picker and see in the live preview — instead of just the first letter of its name.
  • Fixed a case where a Shape's scheduled task — created while its agent didn't exist yet — would never switch on after you added the agent, if the task's name wasn't already lowercase-with-dashes. It now links up and starts running as intended. (#372)
  • Uninstalling a Shape now removes the scheduled tasks it created. Before, those schedules kept firing forever after the Shape was gone, with no trace in the app to find or stop them. (#369)
  • Updating a Shape now cleans up any scheduled tasks the new version dropped or renamed, so an old task can't keep running next to its replacement. (#369)

[0.53.0] - 2026-07-20

Added

  • The right-side panel now opens to Pulse — a quick read on what needs you. On the dashboard, agents, tasks, and every page away from a chat, the inspector panel used to sit empty; now it shows Pulse: a short list of anything that needs attention (a stalled chat, a failed run, an undelivered message, an agent that dropped offline) and a peek at recent activity, each linking through to the full view. When there's nothing to report, it says so calmly instead of going blank. In a chat, your last-used tab still opens first, exactly as before — Pulse just waits as the first tab in the strip. Open a panel where an agent you were inspecting has since been deleted and its profile tab now quietly steps aside rather than lingering on a "not found" message.

Changed

  • The sidebar in the web cockpit is now just your list of agents — the old per-chat "session" view and its row of sidebar tabs have been retired. Opening a chat keeps your agent list in place; everything about that chat lives in the inspector panel on the right, so the sidebar never swaps out from under you. Agents that drive the interface get an honest answer now, too: the web cockpit has no sidebar tabs, so asking to switch one does nothing there — and the agent is told that, instead of it quietly pretending to work. (The tab strip still lives in the Obsidian plugin, where those requests keep working.)

Fixed

  • The inspector panel on the right no longer disappears, and no longer shows an agent you never picked. Its toggle now stays in the top bar on every page — including the Marketplace, where it used to vanish. Open it anywhere and there's always something worth seeing — the new Pulse tab keeps it from ever being a blank gap. Away from a chat, the Agent Profile tab only appears once you actually open an agent, so the panel never fills itself with the ambient project it happened to start in. And a panel tab added by an extension that ships no icon now falls back to a default icon instead of breaking the whole panel.
  • Stopped a confusing sign-in advisory from printing on every server start.
  • Directory-boundary messages now tell the truth about folders outside your home directory, instead of mislabeling them.
  • Docker packaging is more reliable: the release tarball is guarded against missing files, docker:run works out of the box, and smoke:npm can be pinned to a specific version.
  • Fixed a blank cockpit when the host port is remapped (Docker -p, an SSH tunnel, or a reverse proxy).

[0.52.0] - 2026-07-20

Shapes install a whole working setup in one step, creating an agent is a real moment that ends with the agent saying hello, and DorkOS docs now speak the markdown that AI tools read.

Added

  • Shapes: install a whole setup, not just a tool. Shapes are a new kind of marketplace package (DOR-355). A plugin adds one capability; a Shape describes a complete working setup: which extensions to turn on, how the dashboard and sidebar are arranged, a suggested agent, and the schedules that keep it running.
    • Install a Shape from the marketplace like any other package, with the same safety net as plugins: a failed install cleans up after itself completely. (DOR-355)
    • Apply an installed Shape through the API (POST /api/shapes/:name/apply). Applying is idempotent, and anything missing (an extension, an agent, an API key) never blocks the rest — it shows up as an honest warning instead. (DOR-355)
    • Fork a Shape to make your own version, with a "forked from" lineage trail, using the new dorkos shape fork command. (DOR-355)
    • Shape-aware conflict detection, validator coverage for Shape manifests, and a scaffold command that generates a valid starter skeleton to build your own Shape from. (DOR-355)
  • Switch Shapes from inside the cockpit. Open the command palette and pick "Switch Shape" to see every Shape you've installed and apply one in a click (DOR-355). Applying a Shape rearranges your workspace, turns on its extensions live with no reload, and offers its suggested agent for you to bring in or skip. If a piece is missing, you get an honest note about it instead of a silent gap.
  • A brand-new agent says hello first. The moment you bring an agent to life, its first session opens with a quiet birth line — its name, the day it was born, where it lives, and the runtime it runs on — and then the agent speaks, without you typing a thing. A ready-made agent introduces itself in its own voice and offers a first action (it waits for your go-ahead). A blank "Design your own" agent says a warm hello and asks what you'd like it to take care of. The greeting is genuinely the agent's — the prompt that sparks it never shows up as if you had typed it. (DOR-355)
  • Browse the marketplace by category. The Marketplace page now shows a row of category chips — click one (like Security or Code Review) to narrow the grid, and share the filtered view as a link. New category pages on dorkos.ai, one per category, list the packages in each and link back to the full marketplace. (DOR-356)
  • See what a package does before you install it — the marketplace detail panel now shows each package's README right below its permissions.
  • Extensions can now add their own tabs to the sidebar. An extension that contributes a sidebar.tabs view shows up as a real tab alongside the built-in Overview, Sessions, Schedules, and Connections — so the Linear Ops shape's Linear tab actually appears once you enable it. A contributed tab opens its own panel, keeps its place across reloads, and quietly steps aside back to Overview if you later remove the extension.
  • Extensions can now tell which agent they're running beside: the app resolves the agent registered in the current project folder and hands its id to the extension, updating live when you switch folders. (DOR-362)
  • Extension panels can now show or hide based on the agent and project folder you're working in — a right-panel tab can be scoped to appear only for a specific agent, or only in a certain folder. (DOR-364)
  • AI tools can now ask any docs page for a markdown version: send Accept: text/markdown to a normal docs URL, or add .md to the end (like /docs/getting-started/quickstart.md), and you get clean markdown instead of the full web page. (DOR-345)
  • A markdown sitemap at /sitemap.md gives agents one plain-text list of every docs, feature, blog, and marketplace page. (DOR-345)
  • New "Open in Perplexity" and "Open in Claude Desktop" shortcuts on docs pages, alongside the existing Claude, ChatGPT, Cursor, and Scira links. (DOR-345)
  • A context7.json file so DorkOS docs get indexed by Context7, a common docs source for coding agents. (DOR-345)
  • Every docs page now has its own link-preview image and describes itself to search engines and AI answer tools, so a shared docs link shows a real card and the page is easier to surface as a source. (DOR-346)
  • Search engines and AI tools now see DorkOS as one connected entity: the site tells them who makes DorkOS (with a logo), that it is open source, and where the code lives, all linked to the app itself. (DOR-347)
  • The DorkOS blog feed is now advertised on every page across the site, so a feed reader can find it from anywhere. (DOR-347)
  • Added a web app manifest and app icons, so saving DorkOS to a phone home screen shows the DorkOS mark and name instead of a generic thumbnail. (DOR-347)
  • The install page now has its own share image with platform badges (macOS, npm/CLI, and the Windows alpha), so links to it preview the ways to get DorkOS. (DOR-347)
  • Added a script to notify Bing and Yandex when pages change, so their search and AI answers pick up updates faster. (DOR-347)

Changed

  • Creating an agent is a real moment now. "New agent" opens a fullscreen gallery that asks one thing — what will your agent do? Start from a ready-made agent, shown like a job listing with a face, what it does, and how it connects, or choose Design your own and describe the job in your own words. The naming screen shows a live preview of your agent taking shape: type a name (or pick a suggestion and reroll for more), give it a face, and tuck the details behind a single "Details" toggle. When it's ready, Bring it to life. (DOR-355)
  • A "Design your own" agent now writes its own personality, live in your first chat. Instead of a plain hello, the new agent runs a short interview: it asks what you'd like it to take care of, asks at most a couple of sharp follow-ups, then writes its own personality file right in front of you. When it's done, it sums up what it understood and offers one first thing it could do. It waits for your go-ahead and never starts the real work on its own. Give a one-word answer, or say "just figure it out," and it won't grill you. (DOR-355)
  • One entry to create agents. Every path now leads to the same welcome: when your first-run scan finds no projects, DorkOS offers "Create your first agent" and opens the real agent gallery — no more bare fill-in-the-blanks form. Installing a ready-made agent from the Marketplace introduces it first — meet it, name it, give it a face — and brings it to life through the standard creation flow, so it always lands in its own place and can never overwrite an agent you already have. (DOR-355)
  • Import becomes its own flow, with a real finish. Bring in existing projects from the gallery, the sidebar's add menu, or the command palette: scan your machine, add the projects you want, and see a clear "N projects joined" summary with a Done button instead of a dead end. (DOR-355)
  • "Set up" a Shape's suggested agent, and it arrives ready — not blank. When a Shape offers an agent you don't have yet, the switcher's "Set up" opens a single confirm card: meet the agent, read what it does in its own words, and see plainly what turns on, where it will live, and which skills it uses. One click creates it, already carrying its personality and its runtime. "Customize first" still lets you rename it before it's born. (DOR-355)
  • Marketplace filters moved into the sidebar. Opening the Marketplace now hands the sidebar over to a filter panel: pick a package type or check off one or more categories — each row shows how many packages match — and the grid updates as you go. Category filters combine, so you can browse Security and Code Review at once. Your filters still live in the URL, so a filtered view is shareable and survives a refresh. (DOR-379)
  • Switching agents now live-remounts the extension slots for the new folder instead of reloading the whole page — your open session, scroll position, and unsent message survive the switch. (DOR-363)
  • Social preview images now use the real DorkOS brand font and share one set of building blocks, so previews look consistent across the blog, marketplace, and feature pages. (DOR-344)
  • Blog post previews now show a reading-time estimate and when the post was last updated, not just when it was first published. (DOR-344)
  • The security, privacy, terms, cookies, and telemetry pages now carry the same link-preview and canonical-URL details as the rest of the site. (DOR-344)
  • Named every welcome AI crawler in robots.txt (OpenAI, Anthropic including Claude Code, Perplexity, and Meta) with a clear, explicit invitation instead of relying on the catch-all rule. (DOR-345)

Fixed

  • Shapes you install now show up in the marketplace's Installed view, where you can uninstall or update them just like plugins and agents.
  • Updating the Shape you're currently in keeps you in it: the new version is re-applied automatically, instead of the update silently dropping your cockpit back to no Shape.
  • Uninstalling the Shape you're currently in now clears it cleanly, instead of leaving your cockpit pointed at a Shape that's no longer there.
  • The install preview for a Shape now shows the real folder its files will land in (shapes/), not a plugins/ path.
  • Installing a Shape no longer offers the agent scope choice that was silently ignored — Shapes set up your whole cockpit, so they install once for you.
  • A schedule that comes with a Shape — like a tick that checks your Linear inbox every 15 minutes — now switches on by itself the moment its agent exists. Before, a schedule set up ahead of its agent was left switched off for good. Schedules you made yourself are never touched, and one you turned off yourself stays off.
  • Agents can now switch which agent you're viewing: when an agent runs the "switch agent" command, the cockpit jumps to that agent's folder and chat, instead of quietly doing nothing. (DOR-354)
  • A Marketplace package whose README has a fenced code-block no longer risks crashing the whole page. If the code-block viewer fails to load, the README is replaced by a short note and the package stays open — and a chat message with code survives a broken chunk instead of taking down the transcript.
  • The README preview reads package files safely — a symlinked or oversized README can't leak your local files or eat memory (the read is capped at 200 KB and symlinks are rejected).
  • The dorkos.ai marketplace page adds back its missing "Shape" filter tab, so you can browse Shapes the way you can Agents, Plugins, Skill Packs, and Adapters.
  • The Featured rail on the marketplace page was always empty because it read the featured flag from the wrong place. It now shows featured packages of every type and steps out of the way the moment you search or pick a filter.
  • The 16 marketplace category pages are now listed in the sitemap so search engines can find them.
  • Marketplace browse now labels its two filter rows — "Type" and "Category" — so they no longer read as two identical rows, and the category filter drops its redundant "All" chip for a small ✕ you click to clear it.
  • The Marketplace browse sort menu drops "Popular" and "Recent" — both quietly did nothing — leaving an honest choice between Featured and A–Z.
  • The right panel (terminal, files, agent profile) now opens at a comfortable width instead of a squished sliver, and always keeps a readable minimum width. (DOR-388)
  • The sidebar no longer spills past its edge while you switch views. The panel that slides in or out now stays neatly clipped inside the sidebar, and slide-out panels, dialogs, and menus animate open and closed instead of popping into place — including the marketplace package details sheet.
  • Docs pages now point search engines at a single canonical address and set their own preview title and description instead of falling back to the sitewide default. (DOR-346)
  • Link previews on X now match the rest of the page: every page sets its own title and description instead of a generic fallback, and the sitemap reports honest "last updated" dates. (DOR-344)
  • Link previews and structured data now show a page's edit date only when it actually has one, instead of inventing a change date. (DOR-344)
  • Docs pages now advertise their plain-markdown version, so tools know they can fetch the .md alternate. (DOR-345)

[0.51.0] - 2026-07-17

Watch messages reach your agents in real time on the topology map, and find every way to install DorkOS on one page at dorkos.ai/install.

Added

  • Watch inbound messages arrive at your agents on the topology map — each message delivered from a connected app sends a quiet pulse along its wire. (DOR-167)
  • New install page at dorkos.ai/install with every way to get DorkOS in one place: the Mac app, the one-line terminal install, npm, the Windows early alpha, and Docker, plus how to update. The same address still works with curl | bash, and dorkos.ai/download now sends you there. The site's "Get started" button and homepage link to it.

Changed

  • The left sidebar now starts open on desktop for new installs, so your agents are visible from the first launch. Your own toggle still wins: close it once and it stays closed. On phones it still starts closed to save space.

Fixed

  • The dorkos.ai marketing pages and blog no longer break when your computer is set to dark mode. Before, the install commands on the homepage showed as dark text on a dark pill, and the blog's email signup box had a muddy gray fill. These pages are light by design; the docs keep their dark mode.
  • Code examples in blog posts have their padding back, so commands no longer touch the edge of the box (a leftover from the docs engine upgrade).
  • Release posts now get their Install / Update section from one shared template instead of hand-written copies in all 55 posts, so install guidance stays current everywhere.
  • Blog dates no longer show one day early for readers west of UTC.
  • Same-day releases now list in the right order on the blog (0.45.1 above 0.45.0).
  • Opening a Markdown document in the canvas no longer hides the left sidebar or breaks the app layout.

[0.50.0] - 2026-07-17

Organize your agents into sidebar groups that follow you across devices, see at a glance which sessions are running low on context room, and rest easier: the DorkOS tools that can change your machine are now token-protected.

Added

  • Universal command intents (foundation): DorkOS now has one shared registry for the three everyday slash actions — compact the conversation, start a fresh session, and show context usage and cost — plus each agent's words for them (/compress, /summarize, /new, /usage, /status, and more). This groundwork lets the same command work on whichever runtime your session uses.
  • Organize your agents into named groups in the sidebar (DOR-329). Make a group for a project, a client, or however you think about your work. Create, rename, delete, and drag agents in and out. Every drag has a menu and keyboard path too, so you are never stuck. Each group can sort by hand, by name, or by most recent activity.
  • See your latest work at a glance with a new "Recent" section (DOR-329). It shows your most recent sessions across all your agents. One click takes you back to what you were just doing.
  • Pin an agent and it now stays in its group as well (DOR-329). A pinned agent shows up in both places, so pinning no longer pulls it out of the group you put it in.
  • Your sidebar setup now saves to your DorkOS server instead of one browser (DOR-329). Your groups, pins, and sort choices follow you across every browser and the desktop app.
  • When a session's context is nearly full, a quiet chip now offers one-click compaction before things slow down (DOR-112)
  • Relay metrics now include real delivery-latency percentiles (p50/p95/p99) instead of a placeholder (DOR-166)
  • New desktop app guide: install DorkOS as a native Mac app (Windows early alpha included) (DOR-284)
  • See at a glance how full each agent's context is, right in the session list. Every session row now shows a small gauge, and the sessions view sums up how many are near full or just auto-compacted — so you can jump into the right agent before it runs out of room. Claude Code sessions show a reading even when they're closed; other runtimes show it once you open the session. (DOR-113)
  • Read any doc as clean markdown, or pull the whole docs set into your agent in one fetch. Every docs page is now fetchable as markdown (add .mdx to any docs URL), a new /llms-full.txt gives your agent the whole hand-written corpus in one request, and a quiet action row above each page lets you copy the markdown or open the page in Claude. "Open in Claude" opens claude.ai in your browser — it's not a Claude Code link. (DOR-165)
  • Marketplace installs now remember where each package came from — the source repo, the version you asked for, and the exact commit that was installed. This lays the groundwork for safe reinstalls and contributing changes back. (DOR-147)

Changed

  • External MCP and A2A clients now need your local token when login is off. Health checks and listing tools still work without one, and there is no grace period: paste the token into any client you already set up to keep using the tools that change things. Click "Reveal token" in Settings → Tools → External MCP Server to copy it, or read it from the mcp-local-token file in your DorkOS data folder. (DOR-278)
  • We no longer auto-pin your default agent (DOR-329). A small set of agents shows as one clean list, and pinning stays something you choose.
  • The Windows desktop app now has a standard Windows-style menu (File, Edit, View, Window, Help) instead of a Mac-shaped one (DOR-310)
  • Upgraded the docs site's engine (Fumadocs 16.10 and its OpenAPI renderer v11), keeping the docs and API reference on current, supported tooling. (DOR-165)
  • Removed a leftover "rate limited" status banner from the chat UI that could never actually appear. (DOR-201)
  • Simplified the server's error handling to use Express 5's built-in support for async errors. No behavior change — the same errors are caught the same way, with less wrapper code. (DOR-161)

Removed

  • Removed the per-agent message and hourly-call limits from agent settings — they were shown as editable controls but never actually limited anything. Runaway protection still comes from the per-message budget, which is enforced. (DOR-265)

Fixed

  • Fixed crashed package installs leaving behind backup folders that could show up as duplicate agents. (DOR-175)
  • Chat no longer loses its scroll position when you switch away from its tab and back, and it stays pinned to the newest message more reliably while a reply streams in (DOR-163)
  • Fixed new development worktrees starting with stale package builds, which caused false type errors until you rebuilt by hand. (DOR-117)
  • Pushes that only delete branches no longer run the full pre-push test gate. (DOR-116)

Security

  • The DorkOS tools that change things on your machine — creating agents, sending messages, installing packages — and agent-to-agent calls now need a token when login is off. Before, any program on your computer could call them with no token at all. This closes that open door, the same way Jupyter protects its local server. One honest limit: while login is off, a program running on your computer can still ask DorkOS for the token, the same way the app does. Turning on login is what closes that last door. (DOR-278)
  • The activation page now shows the device code on the confirm screen, so you can check it matches what your DorkOS instance is displaying before you approve — even when the code arrives pre-filled from a link. (DOR-200)

[0.49.0] - 2026-07-14

DorkOS is easier to run on a server and safer in Docker. You can try it in one command with npx dorkos@latest, and start a server from a ready-made Compose file. The published Docker image now runs as a regular user instead of root, checks its own health, and shuts down cleanly.

Added

  • Try DorkOS without installing anything: npx dorkos@latest downloads it, starts it, and opens the cockpit in your browser. The first run takes a minute or two; a regular install skips that wait next time.
  • Starting DorkOS on a server got simpler: download a ready-made Docker Compose file from dorkos.ai/compose.yml and run docker compose up -d. The deployment guide now also explains when to pick Docker and when a direct install fits better.

Changed

  • BREAKING: The published Docker image now runs as a regular, unprivileged user instead of root, so a compromised agent or a bug can't touch the rest of the container as easily. Its data directory moved from /root/.dork to /home/node/.dork.
    • Migration: before starting the new image, fix ownership of your existing data with docker run --rm -v dorkos-data:/data alpine chown -R 1000:1000 /data (swap dorkos-data for your own volume or host path), then change every -v ...:/root/.dork to -v ...:/home/node/.dork. See the Docker guide for the full walkthrough.
  • Shrink the published Docker image by dropping the build toolchain it no longer needs at runtime.
  • Add tini to the image so DorkOS starts, shuts down, and cleans up child processes properly, no --init flag needed.

Fixed

  • The desktop app no longer fails to launch with "Server exited with code 1" when a connected messaging service is slow to respond. Before, if a service like Telegram took too long to answer during startup, the whole app gave up and showed an error. Now the app starts right away and connects your messaging services in the background. The app also waits longer for slow first-time startups instead of giving up after 10 seconds.
  • Checking for updates in the desktop app right after a new release no longer shows an error. During the few minutes it takes a release's installer to finish building and upload, "Check for updates…" now tells you the new version is still being prepared instead of showing a confusing error message.
  • Fix the Docker image's health check, which never actually worked: the setup guides told you to add a curl-based check, but the image has no curl, so it silently failed forever. The image now runs its own built-in check every 30 seconds, so docker ps correctly reports the container as healthy or unhealthy.

[0.48.0] - 2026-07-13

You can now download DorkOS for Windows as an early alpha, alongside the Mac app. This release also moves every bit of analytics onto DorkOS's own site, so no third-party tracker is ever bundled into the app, and it hands you real controls: a Privacy & Data settings tab, command-line switches, and two kill switches that force everything off. A small anonymous heartbeat and usage count are now on by default, but DorkOS shows you the exact data on first run and sends nothing until you have seen it. You can also send your own traces to any observability tool, get crash reports through DorkOS instead of a third party, and send feedback right from the app.

Added

Desktop app

  • Download the macOS desktop app straight from dorkos.ai, no terminal required. On a Mac, the install section now shows a "Download for Mac" button (Apple Silicon); the recommended one-line terminal install is still right there for everyone, and Intel Macs use it too.
  • Windows desktop app (early alpha). DorkOS can now be built as a Windows installer for 64-bit PCs, with the bundled Claude Code, the built-in terminal, and dorkos:// links all wired up the same way they are on Mac. It hasn't been confirmed on a real Windows machine yet, so treat it as experimental until we've tested it end to end. (#268)
  • Download DorkOS for Windows from dorkos.ai. On a Windows PC, the install section now leads with a "Download for Windows" button and the top navigation offers the download too; the one-line terminal install stays a click away, and other machines see a link to the Windows installer under "Other ways to install." This is an early alpha: the installer is unsigned, so Windows may show a "Windows protected your PC" warning on first launch, and we haven't yet confirmed it end to end on a real Windows machine. (#267)

See and control your data

  • See and control what anonymous data DorkOS sends. A Privacy & Data tab in settings lets you flip each channel on or off, and the first-run onboarding shows you the exact data before anything is sent (DOR-312).
  • dorkos telemetry status, dorkos telemetry enable, and dorkos telemetry disable let you check and change telemetry from the command line. Use --channel install|heartbeat|usage|errors to change just one.
  • Two environment kill switches, DO_NOT_TRACK and DORKOS_TELEMETRY_DISABLED, force every channel off no matter what your config says. Set either to 1 and DorkOS sends nothing.
  • A debug mode: set DORKOS_TELEMETRY_DEBUG=1 and DorkOS prints the exact JSON it would send to your terminal instead of sending it, so you can read every field for yourself.
  • DorkOS now shares a short list of anonymous feature-usage events so we can see which parts of the app get used and make the right things better. Like the heartbeat and install counts, the channel is on by default and sends nothing until the first-run notice has been shown; if you answered a telemetry prompt on an older version, it stays off for you. Only two events ship today: one when the server starts and one when you begin a new agent session. They carry counts and coarse facts (your platform, how many runtimes you have on, which runtime a session uses) and never your prompts, code, file paths, or anything from your sessions. Everything flows through dorkos.ai, so no tracking library is ever bundled into the app. You can see the full list on the telemetry page, preview the exact events with DORKOS_TELEMETRY_DEBUG=1, and turn the channel off in the Privacy & Data settings, with dorkos telemetry disable --channel usage, or with DO_NOT_TRACK=1 (DOR-315).
  • Signed-in, opted-in analytics for DorkOS accounts (DOR-316). When you are signed in to your DorkOS account and have analytics turned on, we now tie your website activity to a random account ID (never your name or email) so we can see how signed-in people use DorkOS. If analytics is off, declined, or you are signed out, nothing is tied to you. Deleting your account also erases the analytics record tied to it.
  • When you link this install to a DorkOS account, you can now also connect its anonymous usage counts to your account, so you can see them when you are signed in on dorkos.ai. It is off by default: a checkbox in the account-link flow (Settings, DorkOS account) turns it on right before you link. No new data is collected, and the DO_NOT_TRACK / DORKOS_TELEMETRY_DISABLED kill switches turn it off too. It only takes effect at link time, so if you turn it on after linking, the connection happens the next time you link (DOR-320).

Bring your own observability

  • Send DorkOS traces to your own observability stack (DOR-313). Set the standard OTEL_EXPORTER_OTLP_ENDPOINT and DorkOS ships its session, runtime, relay, and task spans to your own Jaeger, Grafana Tempo, Honeycomb, or any OTLP-compatible tool. The spans stay sanitized (durations and counts, never prompts, code, or file paths), and nothing goes to DorkOS: it is your data going to your tools. OTEL_SDK_DISABLED=1 turns all tracing off. See the new observability guide.
  • See AI run details in your own traces (DOR-319). When tracing is on, every agent turn's span now carries standard OpenTelemetry gen_ai.* metadata: which model ran, the token counts, and the cost. Any tool that reads LLM traces picks it up automatically, and it stays your data going to your own tools.
  • New opt-in setting to share AI run metadata with DorkOS (DOR-319). Turn on Share AI run metadata in the Privacy & Data tab (off by default) and DorkOS sends a small summary of each agent turn: the model, the runtime, token counts, timing, and cost. Never your prompts, your code, or your conversations.

Feedback

  • Send feedback from the app. A new Send feedback button in the help menu opens a small form to tell the DorkOS team what works, what does not, or what you wish it did: general feedback, a bug, or an idea. It goes straight to us and is sent only when you press Send. The Report a bug on GitHub and Request a feature on GitHub options are still there for when you want a public thread (DOR-317).
  • A matching feedback form on the website at dorkos.ai/feedback, linked from the footer.
  • Feedback is not telemetry: it is a message you choose to send, so it ignores the DO_NOT_TRACK and telemetry switches. Those turn off tracking, not the Send button.

Changed

  • On a Mac, the dorkos.ai install section and the top navigation now lead with the desktop app download. The terminal one-liner stays one step away, still front and center and one click to copy, and a new "Other ways to install" section holds npm and the Windows and Linux notes. On other machines, nothing changes: the terminal install still leads, with the Mac download a subtle link away.
  • DorkOS now shares a little anonymous data by default so we can see roughly how many people run it: a small heartbeat (now once a day instead of once a week) and anonymous marketplace install counts. It is anonymous, not personal. It only ever sends a random install id, the version, your OS and chip type, which runtimes you have on, whether the tunnel and cloud link are enabled, and rough counts, never your prompts, code, file paths, or session content. The first time you start DorkOS it prints a plain notice explaining this and sends nothing on that first run; if you do nothing, sharing begins on the next launch. Turn it off any time with dorkos telemetry disable, by setting DO_NOT_TRACK=1, or in the new Privacy & Data settings tab. If you had already made a telemetry choice, we keep it exactly as it was. Crash reporting is unchanged: it stays off until you turn it on. See exactly what's collected at dorkos.ai/telemetry (DOR-314).
  • The dorkos.ai analytics now respect where you are and count everyone privately by default (DOR-311). In the EU, EEA, UK, and Switzerland you still get a banner and nothing is counted with cookies until you accept. Everywhere else, basic visit counting is on by default, and you can turn it off in one click on the Privacy page. Either way, if you decline or turn it off, we still count your visit anonymously: no cookies, no stored ID, and no way to link today's visit to tomorrow's. Do Not Track and Global Privacy Control browser signals are honored automatically, and the cookie banner no longer hides behind the bottom navigation.
  • Crash reports, if you turn them on, now go to dorkos.ai instead of a third-party service. They are scrubbed the same way as before (no error messages, no file paths, no code, no session content) and stay off until you switch them on. There is no longer anything to set up: the old SENTRY_DSN step is gone, so the single telemetry.errorReporting switch is all it takes. Crashes in the cockpit itself are now reported too, and you can preview a report any time with DORKOS_TELEMETRY_DEBUG=1 (DOR-318).

Fixed

  • Playing a game inside a widget now works the way you'd expect. Tapping one square marks only that square, instead of filling the whole board at once. A board stays playable even after the agent sends a follow-up message: only a newer board takes its place. And when the agent sends a fresh board (in the chat, the canvas, or the floating panel) it accepts your next move again rather than freezing. Widget buttons and game boards in your existing chats also keep working after the app's server restarts, instead of failing with "Couldn't send the move" until you type something. When you ask for a game or widget in the floating picture-in-picture view, the agent can now pop it out there directly instead of putting it in the side panel (DOR-302).

[0.46.0] - 2026-07-12

The Mac desktop app finally works end to end and ships with its own downloadable installer. A new floating panel lets you pop a live widget or an MCP app out of the chat and keep it in view while you work elsewhere. You can review an agent's edits change by change, and your agent can now see its own preview (console errors, network requests, and a screenshot) to fix its own mistakes. Telemetry, crash reporting, and debug tracing are all new, and all opt-in. A security-hardening pass closes several real gaps, and the docs got a full plain-language rewrite.

Added

Desktop app

  • There's now a stable download link for the DorkOS desktop app on Mac.
  • You can drag the desktop app window from the top of the sidebar and the header. The sidebar no longer hides behind the Mac window buttons, whether it's expanded or collapsed. Links you click in the app now open in your regular browser instead of popping up a broken, chrome-less extra window (DOR-253)

Pop things out into a floating window

  • Pop an interactive app or a live widget, like a tic-tac-toe board, out of the chat into a small floating window that stays on top while you move around DorkOS. It keeps working there, even after you switch sessions, until you close it. Use the pop-out button, or let the app open itself that way (DOR-296, DOR-297, DOR-298)
  • On phones, popped-out widgets and apps dock to a bottom sheet instead: it opens at half height so you can glance at it, drags up for more room, and drags down to a small bar you can tap to bring it back or close (DOR-299)

Review your agent's edits

  • Review your agent's edits change by change. When an agent edits a file, the workbench now opens a diff showing exactly what changed, and you can accept or reject each block on its own. Reject undoes just that block on disk and leaves the rest; accept keeps it. There's a reject-all, a mark-reviewed, a side-by-side view on wide screens, and a toggle to compare against your last commit instead. If the file changes while you're reviewing, you get a calm refresh notice, never a silent overwrite. Text diffs work in the web app and the Obsidian plugin; turn off the automatic open with workbench.autoOpenDiff (DOR-212)
  • Changed images get the same treatment, GitHub-style: see before and after side by side, drag a divider across them, or blend between them with a slider. Restore the previous image with one click, or mark the new one reviewed. A brand-new image says so honestly instead of pretending there's something to compare (DOR-212)

Your agent can see its own preview

  • Your agent can now check its own work in the workbench browser. After it opens a page, it can read the console errors and failed network requests and take a screenshot of the rendered page, so it can catch a broken layout, a stray error, or a blank screen and fix it, all without you describing what went wrong (DOR-213)

Get notified

  • Get a message when a scheduled task finishes, so you don't have to sit and watch it. Connect a channel like Telegram to the agent, then turn on "Message me when tasks finish." Failures always reach you; turn the switch off to skip the runs that succeed. One-time setup: message your bot once so it's allowed to text you back, and turn on "Agent can start conversations."

Opt-in telemetry, crash reports, and diagnostics

  • DorkOS can now send an anonymous weekly heartbeat so the project can roughly count how many people are actively running it. It's off by default and asks once, on first run, showing you the exact data before you choose. It only ever sends a random install id, the version, your OS and chip type, which runtimes you have on, whether the tunnel and cloud link are enabled, and rough counts, never your prompts, code, file paths, or session content. See exactly what's collected at dorkos.ai/telemetry (DOR-293)
  • DorkOS can send a crash report to your own Sentry or self-hosted GlitchTip project when something breaks, so a bug can get fixed without anyone asking for your log files. It's off by default and is its own separate choice, never turned on by the telemetry banner. It sends only the error type and a cleaned-up stack trace (which function, file, and line), never the error message, your file paths, tokens, or anything from your sessions. Turn it on by setting SENTRY_DSN and flipping telemetry.errorReporting (DOR-293)
  • A new dorkos --debug-trace mode writes a local timing file you can send when reporting a bug. It records how long session turns, agent calls, relay messages, and task runs take, durations and counts only, never your prompts, file paths, or anything you typed. It's off unless you ask for it, and the file stays on your machine (DOR-294)

Setup and support

  • New: dorkos doctor checks your setup and tells you what's wrong in plain words. It checks your Node version, whether your data folder is writable, whether the port is free, whether the Claude Code CLI is installed, whether extensions can compile, and whether your login and tunnel settings make sense. It reads your config and changes nothing.
  • Report a bug or ask for a feature without hunting down your setup details. Open the command palette (Cmd/Ctrl+K) and pick "Report an issue," use the new help menu at the bottom of the sidebar, or run dorkos feedback in your terminal. DorkOS opens a prefilled GitHub issue with your version, operating system, runtimes, and on/off settings already filled in. You see and edit everything before you submit; only safe on/off values are included, never tokens, file paths, or anything from your sessions (DOR-292)

Docs and pricing

  • New docs pages: a plain-language "What is DorkOS?" intro for people who don't code, a troubleshooting and FAQ page, a glossary, a guide to the workbench (files, terminal, and browser next to your chat), and a guide to publishing your own marketplace packages. The Generative UI guide also picked up a real recording of tic-tac-toe in action.
  • New: a Pricing page that spells out our money plan before anything actually costs money. Everything DorkOS ships as free stays free, forever; money will only ever come from a future cloud service, and we'll always announce a real price here before you see a bill.

Small stuff

  • Navigate tab strips with the keyboard: arrow keys move between tabs, Home/End jump to the ends, Delete closes the focused tab.
  • Celebrations now come in six styles instead of one: a bigger multi-stage burst, aerial fireworks, side cannons, a calm confetti drizzle, a golden star pop, or an emoji shower with any glyph you like. Agents can trigger any of them, and the Dev Playground has a new Celebrations showcase to try each one.
  • The workbench browser now keeps each document's back-and-forward history separate, so switching between browser tabs doesn't scramble your navigation history (DOR-252)

Changed

  • In the desktop app, most of the interface now reads like an app instead of a document: text in the sidebar and navigation is no longer selectable. Chat messages, code blocks, and other content you'd actually want to copy still are (DOR-253)
  • The little faces agents use to show how things are going got a real glow-up. Every face now has eyebrows and its own body language: a happy face bobs gently and breaks into a closed-eye smile every so often, a sad one sits heavy with a slow tear, a determined one furrows its brow while tiny steam wisps rise, a sheepish one blushes as a sweat bead slides down, a surprised one startles with its brows shooting up as its mouth pops open, a thinking face glances around while its dots ripple, heart-eyes pulse each to their own beat, and the celebrating face bounces with a happy squash on every landing. Blinks are more human too, with the occasional double-blink. Everything still matches your theme in light and dark; if you prefer reduced motion, the faces hold still but stay just as expressive.
  • X and O now have their own colors in board games like tic-tac-toe, X in blue and O in amber, so you can read the board at a glance. The colors stay distinct for colorblind players in both light and dark themes. If the agent styles a square itself, that styling still wins.
  • Friendlier wording on old game boards and buttons: an out-of-date board now says "This board is from an earlier turn, play on the newest one," and an old button says "This one's from an earlier message," instead of the jargon-y "Superseded" label.
  • The docs got a full makeover. Every page was rewritten in plain language, checked against the code, and organized around what you're trying to do. The sidebar now groups guides by activity (daily driving, making it yours, going autonomous, scaling to a fleet), and the landing page routes you by who you are instead of listing every page. Stale docs are gone: pages no longer describe commands, methods, or behaviors that don't exist anymore (#207)
  • The dorkos.ai privacy and cookie pages now spell out exactly what analytics would collect if we ever turn them on: page visits and a few clicks, no session recording, nothing until you accept the cookie banner. Analytics stays off, and with no key configured the site makes zero requests to PostHog (DOR-268)
  • The remote-access screens and the tunnel guide now tell you up front what setup takes: about 2 minutes, one time, to create your owner login and paste a free ngrok token. After that, approving from your phone really is one tap (DOR-244)
  • Your Telegram and Slack bot tokens are no longer saved as plain text. DorkOS now moves each token into your computer's encrypted store and keeps only a pointer to it in the settings file, so a leaked or shared config file no longer exposes your bots. Bots you already connected keep working; their tokens are moved for you the first time DorkOS starts, with nothing to reconfigure (DOR-280)
  • Telemetry consent is now one clear choice covering both the new heartbeat and the existing marketplace install stats, instead of a marketplace-only banner. Everything stays off until you say yes, and you can change your mind anytime in settings (DOR-293)
  • When an agent compacts its context to free up room, the status strip now shows a clean progress bar that starts when compaction begins and clears when it finishes, and it works the same way across every coding agent, not just one. If a compaction fails, you see the reason inline instead of a stuck indicator (DOR-110)

Fixed

Desktop app

  • The desktop app now starts correctly when installed from the DMG. Before, its built-in server was missing from the package, so the app sat in the Dock with no window and no error; if the server ever fails to start now, the app tells you what went wrong instead of silently doing nothing. App updates now install correctly, and the embedded terminal works in the installed app.
  • The Mac desktop app now includes everything it needs to run Claude Code out of the box: the Claude Code program ships inside the app and starts up right away, so your agents can run without a separate install.
  • Extensions, including the built-in Linear dashboard and sidebar, now load in the desktop app. Before, every extension request went to the desktop window itself instead of the DorkOS server, so the extension system silently gave up on startup (DOR-243, DOR-255)
  • The update card no longer tells you to run npm update -g dorkos, a terminal command that updates the CLI, not the app you're using. When the desktop app has downloaded a new version, the sidebar now shows a simple "Update ready, restart to install" card, and the button restarts the app to finish the update.

Game boards (tic-tac-toe and friends)

  • A very fast double-click, or any burst of clicks, on a game board can no longer send more than one move. The first click wins instantly; the rest are ignored. Before, clicks landing in the same instant could all slip through and corrupt the game.
  • Boards no longer treat a blank space as a real mark. Some agents write a space character for an empty square, which used to draw a phantom dot in every empty cell, garble the square's screen-reader name, and, on a completely empty board, declare victory with a stroke through a row of nothing. Blank squares are now truly blank.
  • The victory stroke is now what it was meant to be: a thin, softly translucent line through the winning squares, colored to match the win. It used to render as a thick black bar that buried the marks beneath it.
  • The board now always matches the agent's actual moves: it works out the new game state first, then draws from that state, so the two can't drift apart. If the agent's game record and what's drawn on screen ever disagree, even over a bit of padding or a stray blank line in how the agent wrote it down, the board trusts the record, draws any mark that's missing, and locks that square, without ever erasing or changing a mark you can already see.
  • Widgets no longer flash a "couldn't be rendered" error while they're still arriving. When the agent streams a widget, like a game board, the reply sometimes paused at just the wrong spot, showing an error card for a split second before the widget popped in. Now a widget that's mid-arrival keeps its calm loading shimmer until it's truly done; the error card only appears if the finished widget is genuinely broken.
  • Clicking a game-board square now keeps your mark on the board while the agent replies. Before, the mark vanished the instant you clicked and the whole widget flickered through its entrance animation again.

Claude Code, Codex, and OpenCode sessions

  • Stop the stray "No response requested." reply that could appear before your message in a Claude Code session. Your messages now always run as the next turn, with nothing slipped in first.
  • DorkOS now finds your Claude Code sessions even when you use a custom Claude config folder (CLAUDE_CONFIG_DIR); sessions used to run and bill normally but never show up in your session list (DOR-250)
  • Installing a Claude Code plugin now actually puts its commands and skills where your agents can use them. Before, a project install would report success but quietly project zero files, so neither DorkOS sessions nor the claude CLI could see the plugin. The pre-configured official Anthropic marketplace works now too, and real published plugins like hookify are no longer rejected over a harmless naming quirk that Claude Code itself accepts.
  • Codex and OpenCode conversations now keep their history when the DorkOS server restarts. Every completed reply is saved to disk the moment its turn finishes, so the full conversation is right where you left it.
  • OpenCode sessions keep the same id after you restart the DorkOS server. Before, a restart quietly re-keyed every OpenCode conversation under a new id, so bookmarks and open tabs hit a dead "session not found" page while the same conversation reappeared in the list as a stranger (DOR-251)
  • Codex sessions no longer slowly fill your disk with logs; the Codex engine no longer writes endless debug records to its log database (DOR-188)
  • Sessions that don't belong to any project no longer get announced to every open cockpit. Before, a Codex or OpenCode session with no working directory could show up as a nameless ghost row under agents it had nothing to do with (DOR-202)
  • Enabling a coding agent whose command-line tool isn't installed no longer stops DorkOS from starting; that agent is skipped with a warning and everything else works.

Scheduled tasks and usage

  • Scheduled task history now shows the truth: finished runs stay finished, even after a restart. Runs used to get stuck showing "running" forever even though they'd actually succeeded, and a server restart could rewrite that entire successful history to "failed" (DOR-248, DOR-249)
  • Creating a scheduled task now shows its next run time right away, instead of only after refreshing the task list.
  • The usage item in the status bar now actually shows your Claude subscription usage, including a less common weekly usage window some accounts have. It updates at the end of every reply with how much of your rate-limit window you've used and when it resets. Before, it stayed empty unless you were about to hit a limit (DOR-99)
  • The Marketplace card in Settings > Extensions now says "Required" instead of showing an on/off switch that did nothing. If you flipped that dead switch in the past, Marketplace turns itself back on (DOR-122)
  • A brand-new install no longer prints a scary "initial scan failed" warning at startup. Having no Claude Code sessions yet is normal, and the log now treats it that way (DOR-247)

Sign-in, working directories, and setup

  • Signing in after dorkos auth enable now works on a fresh install. Before, turning on login and then signing in failed with a server error unless you happened to set a secret environment variable by hand, and nothing told you it was needed. DorkOS now creates and remembers that secret for you the first time you enable login, so sign-in just works. This also unblocks exposing your instance over a tunnel, which requires login first (DOR-242)
  • DorkOS installed from npm or the one-liner now correctly sets up its built-in extensions (Marketplace, Linear, Hello World) on first run, and the Marketplace tab itself now loads instead of failing; the published package was silently missing the files it needed (DOR-245, DOR-256)
  • Fixed the default working directory sometimes pointing outside the allowed folder, which could block opening a terminal or starting a new session. The git status panel now falls back to your workspace's real default folder when none is picked, instead of wherever the server process happened to start (DOR-266)
  • Building DorkOS from a fresh checkout now works on the first try; a naming collision between the root project and the CLI package used to make the build trip over its own files (DOR-190)
  • The docs, the install script, and the website now all correctly say DorkOS requires Node.js 22 or later, instead of the outdated "18 or later" that printed a wall of warnings on install (DOR-246)
  • Opening the same terminal in a second window no longer silently kills it in the first; the first window now shows a note that the session moved. Reconnecting after being away also tells you when some output was dropped (DOR-257)
  • The status bar no longer shows a stray thin scrollbar under its fade edge, and the chat message list hides its scrollbar the standard way (DOR-164)

Agent messaging safety

  • Agent-to-agent call budgets now actually stop the spending, not just the mailbox copy. Before, a message that had run out of budget was correctly refused delivery, but the target agent still ran a full, paid turn anyway. The budget check now happens once, up front: an out-of-budget message is dead-lettered, no agent turn starts, and a caller waiting on a reply is told immediately instead of timing out (DOR-260)
  • The "agent can start conversations" switch on a channel now controls every way an agent could message you, not just the built-in "notify me" action. Before, an agent could still reach you on Telegram or Slack by addressing the raw channel directly even with the switch off. Replying to something you sent first, and your task-done notifications, keep working exactly as before (DOR-239, DOR-277)
  • Installing a marketplace package can no longer plant a shortcut that reaches outside where it's installed. A package could previously ship a symlink that, once copied and synced, let it read or write files outside its own folder. Every symlink is now dropped while the package is being staged, and each one is noted in the install log. Real packages are unaffected; they're plain files and folders, never shortcuts (DOR-279)

Docs media pipeline

  • Product videos and screenshots in the docs now fill their frame edge to edge; before, they showed a gap at the top and were cut off at the sides.
  • Video previews in the docs and release notes now show the finished widget instead of a loading skeleton, and a botched capture can no longer publish a set with missing files. The capture pipeline itself now starts and stops cleanly between runs instead of occasionally hanging or recording against the wrong server.

Security

  • Hardening pass on the parts of DorkOS that decide what a package can do and who can reach it: marketplace installs can no longer be tricked into running a command through a booby-trapped source link, your login secret and any chat-bot tokens are now kept private on disk and readable only by you, and the key that protects the tool endpoint is checked in a way that gives nothing away. Full write-up in research/20260711_security-hardening-audit.md.
  • Sign-in and sign-up now slow down after too many tries from the same place, so no one can sit there guessing your password. A few mistyped tries still work fine (DOR-281)
  • Cleared the last critical security warning in our test tooling; npm audit on the DorkOS source no longer reports any critical findings (DOR-168)

[0.45.1] - 2026-07-09

A same-day fix for widget interactions: clicks and form submits with bigger payloads no longer lose their data.

Fixed

  • Fixed widget clicks and form submits losing their data when the payload spanned multiple lines, both live and when a session reloads. A protocol change in 0.45.0 left the payload parser behind. (#185)

[0.45.0] - 2026-07-09

The right panel grows into a real workbench (terminal, file explorer, embedded browser), agents can answer with interactive widgets you can click, Codex and OpenCode join Claude Code in one cockpit, and DorkOS accounts replace tunnel passcodes with real login.

Added

Run Claude Code, Codex, and OpenCode side by side

  • Run Codex and OpenCode agents next to Claude Code, all in one cockpit. Every session shows which runtime it belongs to, and the session list keeps working even when one runtime is down.
  • Switch runtimes right from the chat composer: pick Claude Code, Codex, or OpenCode for a new session, and DorkOS remembers the choice per session.
  • Connect a runtime account without leaving DorkOS: guided connect flows check what's installed, walk you through login, and store credentials as secure references (never plaintext).
  • DorkOS detects which runtimes are installed on your machine and offers the ones that are ready, so getting a second runtime running takes one click instead of a config file.
  • See what a session is costing you while it runs: token usage and cost now show in the status strip for every runtime that reports them.
  • Give each agent its own isolated workspace: DorkOS can create and manage git worktrees (or clones) with their own ports, so parallel agents never trample each other's checkout. Browse and manage them on the new Workspaces page.

Generative UI: widgets in chat and canvas

  • Agents can render real, interactive widgets in chat instead of walls of text: stat cards, tables, lists, charts, progress bars, images, and forms. A malformed widget degrades to a small error card instead of breaking the chat.
  • Click a widget's button, pick from a list, or submit a form, and the agent picks up exactly where you left off: it sees what you did and answers in its next turn.
  • Four more widgets: a timeline for sequenced events, a checklist that reports back what you checked, a compare table that highlights the best option, and a star rating.
  • Three playful widgets: a mood face that blinks and emotes, a board for turn-based games like tic-tac-toe you can play right in chat, and a reveal that flips a coin, rolls a die, or shakes a magic 8-ball. Agents can also fire confetti on their own.
  • Widgets feel alive: they rise into place, numbers count up, progress bars fill, and charts draw themselves in. Turn on reduced motion and every widget appears instantly instead.
  • Skills can ship reusable widget templates with fill-in-the-blank placeholders, so agents don't hand-build the same widget JSON every time.
  • MCP servers can ship full interactive apps that render right in chat or pop out to the canvas (the MCP Apps standard, SEP-1865). The first app from a server always asks permission before it renders, and apps can never reach your files, cookies, or credentials.
  • View images and PDFs right in the agent canvas, with click-to-zoom on images.

The workbench (right panel)

  • Run a real shell in the cockpit: open a Terminal tab in your session's working directory without leaving DorkOS (web only).
  • Open more than one terminal at once, with tabs to switch between them; your open terminals survive a page refresh.
  • Browse, open, and edit your project's files without leaving DorkOS: a file explorer with create, rename, delete, and drag-to-move, a code editor, a 3D model viewer, a CSV viewer, and image zoom, all in one multi-document canvas.
  • Open an embedded browser in the canvas with back, forward, reload, and an address bar, for any URL, local HTML file, or dev server.
  • Agents can drive the workbench for you: open a file, reveal the terminal, or navigate the embedded browser, on both Claude Code and Codex.
  • The right panel remembers which tab was open, per agent, so it's where you left it next time.

Your DorkOS account and cloud

  • Create a DorkOS account at dorkos.ai with email and password, GitHub, or Google. It's your identity, separate from any one DorkOS install.
  • Link a self-hosted DorkOS to your account from Settings > DorkOS account (or dorkos cloud login): approve a short code at dorkos.ai/activate, then see and revoke linked instances anytime.
  • Turn on owner login for a self-hosted instance from Settings > Security. It's off by default; once on, DorkOS requires an owner account before anyone can reach it, with no email server needed.
  • Give MCP clients, scripts, and agents their own scoped API keys instead of one shared key (Settings > Security). Existing global keys migrate automatically.
  • Recover a lost password or create the owner account from the command line with dorkos auth enable and dorkos auth reset-password, no running server or email required.
  • Manage cloud accounts from a new admin console: view accounts, and let people self-serve delete or export their data, with every admin action logged.
  • Sign up for the DorkOS newsletter right from the site, with double opt-in confirmation.

Desktop app

  • Open the desktop app straight to a page with dorkos:// links.
  • A real Mac menu: Cmd+comma opens Settings, and there's a proper About window and Help links.
  • The desktop app checks for updates on its own, or you can check anytime; you choose when to restart.

Extensibility and platform

  • Extensions can subscribe to live session, turn, tool, and relay events instead of polling, declared right in their manifest. Events never carry your conversation content.
  • The external MCP server (/mcp) now lists browsable resources for sessions, agents, and skills, and every tool says whether it's read-only, destructive, or reaches the network, so MCP clients can be careful without asking you first.
  • See and manage everything installed from the Marketplace, across global and per-agent installs, in one Manage Installed view; get a warning before an extension-bearing package affects every agent; and share a Marketplace search or filter as a URL.
  • Installed plugins now project their commands, skills, and hooks to Cursor and GitHub Copilot too (Gemini support isn't there yet), and re-sync automatically whenever you install or uninstall one.
  • Scheduled tasks now have real safety rails: they only fire in production, one leader owns dispatch, and a task can't fire twice for the same run.

Docs and legal

  • Documentation guides now show the same real product screenshots and video clips as the marketing site.
  • Plain-English privacy, terms, and cookie pages.

Changed

  • Rewrote the npm README, root README, Mesh concepts guide, Generative UI guide, and MCP feature page in plain language, so you can tell what DorkOS does before you dig into the reference details.
  • Rewrote the dorkos.ai feature catalog and FAQ in plain language, and reframed the homepage around "You, multiplied": one thesis section, plainer problem cards, and a real origin story in the closing section.
  • Renamed the in-app marketplace from "Dork Hub" to "Marketplace."
  • The right panel's tab strip can no longer disappear out from under a panel.
  • Product-media recordings can now run in parallel (capture:record --shards N) instead of one long serial pass.
  • You can edit one canvas document while agents keep updating the others.
  • Relay (the message bus between agents) now cleans up after itself: expired messages, stuck deliveries, and abandoned mailboxes are swept on a schedule instead of piling up forever.

Removed

  • Breaking: Tunnel passcode protection is gone. Better Auth login is now the only way to protect DorkOS. If you expose DorkOS (start a tunnel or bind to a non-loopback address), you must turn on login and create an owner account first. Old passcode settings are dropped automatically on upgrade, not migrated.
  • /flow no longer ships inside the DorkOS repo. Install it from the Marketplace instead; it works the same way.

Fixed

  • Agent-to-agent messages and A2A tasks now report a real failure instead of a fake success when an agent's turn crashes or times out.
  • Fixed several ways relay messages could go missing: adapter start-up races, silent delivery failures, and Slack/Telegram formatting and reconnect issues.
  • Recover agents that go unreachable, and clean up properly when one is unregistered.
  • Ghost Codex sessions no longer show up under every agent; sessions without a working directory now belong to no project, and untitled sessions show "Untitled session" instead of a blank row.
  • get_ui_state and control_ui now tell agents the truth: current state instead of stale data, and a clear error instead of a fake success when no client is attached.
  • Generative UI widgets now tolerate the natural, slightly-off-spec values agents actually write (pixel numbers, percentages over 100, alternate wording) instead of failing outright.
  • Fixed widgets flickering between their loading skeleton and final content while a reply streams in, fixed gaps in chart lines on certain slopes, and fixed images not refreshing when their source changes.
  • Clicking a widget (like a tic-tac-toe square) now always gets a response from the agent, the board can't drift out of sync, and a widget locks the moment you play so a stray double-tap or a stale reload can't corrupt it.
  • Fixed the Terminal tab sometimes failing to reopen, and hardened the terminal's WebSocket connection with an origin allowlist.
  • Closing a terminal tab the instant it was created no longer leaks a hidden shell process: a terminal that finishes starting after its tab is gone is cleaned up (or kept for re-attach when grace applies).
  • Renaming or moving a file in the workbench no longer conflicts when two names collide, and file/folder deletes can no longer escape the project through a symlink.
  • The canvas file viewer now shows your latest edits right away, and a refresh button reloads the newest version from disk.
  • Every embedded webpage in the canvas now has real browser controls (back, forward, reload, address bar); before, agent-opened pages had none.
  • Fixed the desktop app opening a second window when launched twice, and fixed it forgetting its window position after a monitor change.
  • Fixed the desktop app showing a black window in development: its pages were blocked from talking to its own server.
  • Fixed CORS so the browser correctly sends credentials to allowed origins.
  • Marketplace pages (browse, package detail, install privacy) now show the site header and footer instead of dead-ending.
  • Fixed several marketplace install bugs: replaced an unsafe git-branch rollback with a safer file-scoped transaction, made package downloads concurrency-safe, and added toast feedback when an install or update fails.
  • Site fixes: no more stale claims or dead links, PostHog analytics only run after you consent, the feature-card layout no longer has gaps or cropped screenshots, and pages render correctly on first paint.
  • Connecting a runtime now selects and launches it right away, and Codex sessions now match Claude Code for models, MCP tools, and slash commands.
  • Linking a self-hosted instance to your DorkOS account no longer fails on device-link.

Security

  • Agent-to-agent messages now carry a verified sender identity, and DorkOS enforces that agents in different namespaces can't message each other unless you allow it.
  • The external MCP server's mesh tools now enforce the same directory boundaries as the HTTP API, so a caller can't register agents outside the allowed folders.

[0.44.0] - 2026-06-16

Your messages now reach the agent exactly as written — per-turn context (git status, UI state, queued-message notes) travels alongside them instead of being injected into the text — and the chat status strip gains live feedback for session hooks and context compaction. Plus a Core Extensions tier, a smarter command palette (ranking + alias provenance), and in-chat output for local slash commands.

Added

  • Agent context (git status, UI state, queued-message notes) now travels alongside your message instead of inside it — your message reaches the agent exactly as written, and that context never shows up as if you had typed it (#258)
  • Agents no longer receive git status twice per turn, trimming redundant prompt context (DOR-132)
  • Surface session hook progress ("Running hook X…") in the chat status strip, clearing when the model resumes (DOR-125)
  • Tiered command/file palette ranking + alias provenance (DOR-119, DOR-120)
  • Render local slash-command output in chat (DOR-126)
  • Introduce Core Extensions tier (rename builtin → core)
  • Match slash commands by their aliases in the palette, and refresh the command list when the agent changes it mid-session (DOR-108)
  • Persist a context-compaction row in chat ("Context compacted · N tokens · manual/auto") sourced from the durable transcript, plus a live "Compacting context…" strip that resolves and an inline failed-compaction notice (DOR-118)

Fixed

  • Chat status strip was starved of live system_status events (the projected turn dropped them), so "Compacting context…" and hook progress only appeared after the durable history reload — now retained live (DOR-125, completes DOR-118)
  • Open the canvas when an agent pushes content (DOR-97, DOR-104)
  • Apply enable/disable live instead of requiring a page reload

[0.43.1] - 2026-06-13

A maintenance release: the Claude Agent SDK moves to 0.3.177 — restoring background-agent and MCP task state on session resume — the Obsidian model and subagent catalog now derives from the SDK like every other surface, plus fixes for worktree dev ports, slash-command dispatch, session titles, and canvas scrolling.

Changed

  • Upgrade Claude Agent SDK to 0.3.177 (restores background-agent and MCP task state on session resume)
  • Derive Obsidian model/subagent catalog from the SDK
  • Codify "one checkout, one writer" worktree strategy

Fixed

  • Give the marketing site a worktree-unique dev port
  • Dispatch slash commands as bare prompts so the CLI parses them (DOR-107)
  • Read SDK-persisted session titles, drop in-memory overlay (DOR-101)
  • Establish flex column root so tall canvas documents scroll (DOR-96)

[0.43.0] - 2026-06-11

Runtime-agnostic session streaming with durable reconnection, permission prompts that survive session switches, and a model-gated auto permission mode — plus the SDK 0.3.168 native-binary upgrade.

Added

  • Docs/ADRs + consolidated dead-code retirement (task #18 — spec complete)
  • Stateless EventLog-backed test-mode runtime — runtime-agnosticism proof (task #15)
  • Live-turn fidelity events + task/status-strip wiring (#19)
  • Restore chat send via trigger-only POST + durable /events (Phase 5)
  • Live sidebar + session list via global stream, drop poll (Phase 4)
  • Client streaming foundation — StreamManager, hydration, flag removal (Phase 3)
  • Runtime-agnostic session streaming — server foundation (Phases 1-2)
  • Integrate worktrees into spec execution and Linear loop
  • Batch 9 — browser acceptance PASS; implementation complete (DOR-73)
  • Batch 7 — resolve recovered cards on result + countdown-zero (DOR-73)
  • Batch 6 — Path-B sync routing + server cross-cutting tests (DOR-73)
  • Batch 5 — Path A fetch-on-mount, single-resolve verification, docs (DOR-73)
  • Batch 4b — Path B re-emit pending interactions on /stream connect (DOR-73)
  • Batch 4a — Path A GET /pending-interactions endpoint + transport (DOR-73)
  • Batch 3 — getPendingInteractions on the runtime abstraction (DOR-73)
  • Batch 2 — pending-interactions selector + idempotent client renderers (DOR-73)
  • Batch 1 — pending-interaction snapshots + shared remainingMs/DTO (DOR-73)
  • SDK-native breakdown via held-open prompt (A1)
  • Runtime auto-mode guard + plain-language confirm copy (#253 follow-ups)
  • Adopt auto as a model-gated permission mode (#253 Phase 2)
  • Persist per-session settings; allow instant live bypass
  • Stream subagent text into the background-task block
  • Adopt SDK 0.3.168 native binary, refusal & error surfacing

Changed

  • Triage-type states are never dispatchable
  • Evidence-on-close convention — proof, not claims
  • Adopt Linear Method conventions + dispatch policy
  • Regenerate API docs for GET /pending-interactions (DOR-73)
  • Batch 8 — client cross-cutting tests (DOR-73)
  • Document Composio CLI as a fallback Linear access path
  • Drop orphaned makeUserPrompt
  • Guard the generated OpenAPI spec against schema drift
  • Correct Claude Code install guidance for the SDK 0.3.168 native binary
  • Reconcile developer guides with the past week's changes
  • Remove the no-op autoMode toggle and disableAutoMode plumbing (#253 Phase 1)
  • Relocate the sdk-event-mapper streaming tests, drop dead mock
  • Group claude-code/ into domain subdirs
  • Split sdk-event-mapper into focused per-category mappers
  • Document granular npm token for 2FA-bypass publish

Fixed

  • Follow-the-rekey continuity (NF-2) + rail row resolution (NF-3) + cross-client pins (task #17)
  • F2 identity-seed rekey + test-mode e2e rescue — acceptance re-run fixes (task #16)
  • Client quality pass — one /events connection, trigger latch, honest liveness (task #6 batch B)
  • Fleet-wide session discovery + server quality pass (task #6 batch A)
  • Transport seam — embedded send, real stream methods, baseUrl-aware StreamManager (CLI-C2)
  • Sidebar liveness via session_status fanout + hide SDK resume-bootstrap messages
  • First-turn id split-brain + interaction-cancel ghosts (acceptance F1/F2/F4/F5)
  • Repair command drift, harden checks, probe port collisions
  • Harden resume protocol + live approvals (review blockers)
  • Report the last request's window, not the turn's cumulative usage
  • Report accurate context-window usage in the status bar
  • Prune orphan API-reference MDX and repair the docs CI guard
  • Don't mutate session mode in the auto-mode guard (self-review)
  • Restore streamed thinking on Opus 4.8/4.7
  • Harden answer formatting and extract the answer summary
  • Stack multi-question answers and remove answered-row flicker
  • Deliver structured-question answers to the agent and persist them in the UI
  • Address review — reconcile validation docs, echo all settings in PATCH
  • Match agent display name in fleet-page search
  • Sort agent lists by resolved display name

[0.42.0] - 2026-06-05

Memory recall transparency and per-session runtime ownership — see which memory files shaped each reply, gate capabilities per session, and upgrade SDK runtimes with a dedicated workflow.

Added

  • Surface SDK memory recall events in assistant bubbles
  • Render calm status copy from system_status.status
  • Enhance SDK event handling with memory recall and terminal reason support
  • Surface SDK terminal_reason as informational chip
  • Chat: Memory recall indicator — see which memory files shaped each response
  • Sunset deferred items from spec 244 prework
  • Per-session runtime ownership + capability gating + runtime-neutral relay
  • Add /app:runtime-upgrade command for strategic SDK upgrades
  • Add new shared skills for Linear workflows

Changed

  • Polish memory recall indicator per code review
  • Move shared skills to .agents/skills/ with symlinks
  • Add pnpm dev:dogfood to run the dev preview and built CLI cockpit side by side

Fixed

  • Downgrade fumadocs-openapi 10.7.1 → 10.6.8 to fix api-doc generation
  • Address code review on spec 244 implementation

[0.41.0] - 2026-04-15

Plugin installation polish and chat input reliability — responsive dialogs, personality picker enhancements, and critical fixes for agent discovery and server stability.

Added

  • Enhance plugin activation and refresh mechanism
  • Responsive install dialog and agent picker
  • Enhance PersonalityPicker and onboarding flow
  • Add PersonalityPicker showcase and integrate into FeaturesPage
  • Introduce new chat input components and enhance functionality

Changed

  • Enhance RightPanelContainer styling and transitions
  • Streamline imports and enhance ChatInput styling

Fixed

  • Resolve PluginSource objects to giget-compatible strings
  • Eliminate spurious 404 and 400 errors on agents page load
  • Prevent unhandled errors from crashing Express process
  • Prevent AgentPicker dropdown clipping in install dialog
  • Show all registered agents in install dialog
  • Update project management copy for clarity
  • Fix playground registry slug and agent management copy
  • Improve agent management action descriptions for clarity

[0.40.0] - 2026-04-14

Agent personality and sidebar polish — verbosity-based traits, lifecycle management actions, scoped marketplace installs, and refined animations across the Agent Hub, sidebar, and session components.

Added

  • Add agent lifecycle management actions and split navigation
  • Enhance sidebar functionality and UI components
  • Add polished avatar picker with micro-interactions and transitions
  • Enhance agent trait management and UI components
  • Update personality traits from tone-based to verbosity-based system
  • Improve PersonalityRadar component for light/dark mode adaptability
  • Implement AgentChipContextMenu and enhance ShortcutChips for agent actions
  • Update PersonalityRadar component for improved light/dark mode support
  • Add nebula theme utilities and PresetPill component
  • Polish AgentListItem expand/collapse with spring animations and loading states
  • Implement context menu and compact/full session row components
  • Enhance AgentHub with loading skeleton and animation transitions
  • Add scoped installs and skills-first Toolkit tab
  • Add dev tools dropdown menu with unified TanStack devtools panel

Changed

  • Update agent management actions and enhance UI components
  • Streamline RightPanelHeader and enhance AgentHubHero UI
  • Replace hardcoded default traits with DEFAULT_TRAITS constant
  • Remove 'active' status from session indicators and update related tests
  • Replace SessionItem with SessionRow components in sidebar and features sections
  • Enhance AgentListItem animation and expand/collapse logic
  • Fix stale JSDoc referencing removed Sessions drill-down
  • Simplify AgentListItem interactions and visual container

Fixed

  • Add success toasts for deny/unblock actions
  • Address code review findings in AgentListItem
  • Wire route projectPath param and address review findings

[0.39.0] - 2026-04-12

Agent Hub reimagined — immersive hero design, Cosmic Nebula personality visualization, shell-level right panel infrastructure, and smooth panel animations across the platform.

Added

  • Animate right panel open/close and unify sidebar transition timing
  • Redesign Agent Hub with immersive hero, inline pickers, and shared panel header
  • Add Cosmic Nebula visualization to personality radar and onboarding
  • Redesign Agent Hub with Personality Theater and 3-tab layout
  • Add unified Agent Hub right-panel replacing AgentDialog modal
  • Add shell-level right panel infrastructure with canvas migration
  • Add displayName field to decouple display label from slug

Changed

  • Remove orphaned session.canvas slot and add right-panel to ExtensionPointId
  • Update extension slot references to include right-panel
  • Merge duplicate imports from @dorkos/marketplace

Fixed

  • Remove dead onClose prop from CanvasHeader and unused TabBar import
  • Sync animRef state when animated=false and rename stale testid
  • Register agent-hub right-panel contribution and fix 13 broken tests
  • Merge DorkOS sidecar in server aggregation and unify shared logic

[0.38.0] - 2026-04-11

Agent creation polish and chat input reliability — new session navigation after agent creation, improved directory picker, and three fixes that ensure the textarea is always focused and typeable after switching agents.

Added

  • Navigate to new session after creating an agent
  • Add PathInput component, improve ConfigureStep layout, allow existing dirs

Fixed

  • Include session param in setDir navigation to fix chat input
  • Ensure session param on agent switch so textarea gets focus
  • Resolve textarea focus loss after interactive mode exit

[0.37.0] - 2026-04-11

Mesh discovery and agent creation — pre-scan landing states, 7 new AI agent strategies, an instant-advance creation wizard, and a unified /agents page streamline onboarding and daily management.

Added

  • Enhance DiscoveryView with pre-scan state and illustration
  • Add discovery strategies for 7 new AI coding agents
  • Redesign dialog as instant-advance wizard
  • Consolidate mesh panel dialog into /agents page
  • Add marketplace-dev skill for package authoring
  • Redesign Marketplace with trust signals, animations, and progressive disclosure

Changed

  • Reconcile 8 guides with recent mesh, tool-approval, state, and API changes
  • Use ResponsiveDialog, extract sub-components, optimize for mobile

Fixed

  • Use actual emoji character instead of escaped surrogate pair
  • Accept template name in handleTemplateSelect, remove unused prop
  • Preserve search params when switching view tabs
  • Fix sidebar add-agent buttons not opening creation dialog

[0.36.0] - 2026-04-11

Agent sidebar redesign — stable alphabetical ordering, pinning, context menus, and activity badges replace the old LRU-shuffling 8-agent cap, alongside a tool approval overhaul and SDK-driven model discovery.

Added

  • Redesign agent list with stable ordering, pinning, and context menu
  • Unify dashboard and session sidebars with expandable agents
  • Comprehensive tool approval system overhaul
  • SDK-driven model discovery with disk cache, warm-up, and universal schema
  • Add opensrc skill for fetching dependency source code
  • Channels tab functionality — pause, test, activity metadata
  • Channels tab visual polish — brand icons, progressive disclosure, humanized copy

Changed

  • Use bg-secondary for selected model card
  • Use ResponsivePopover for model config, fix card width

Fixed

  • Synthesize DorkOS manifest from CC plugin.json for CC-only packages
  • Prevent popover drift during status bar content changes
  • Preserve model selection during effort/mode changes
  • Prevent model popover overflow and blank state on config change
  • Migrate stagePackage to fetchPackage dispatcher for relative-path sources
  • Prevent stale ToolApproval card after input-zone approval
  • Align ModelConfigPopover with Design B mockup
  • Filter internal adapters from channels tab and inline setup wizard

[0.35.0] - 2026-04-09

Release tooling and configuration robustness — schema validation gates, migration automation, and marketplace stability converge to prevent upgrade breakage.

Added

  • /system:release now detects config schema changes without a paired migration and offers to scaffold one inline before the tag is cut. Catches the class of "shipped a schema change, forgot the migration, broke upgrades for existing users" bugs before they reach npm.
  • New adding-config-fields skill walks contributors through the full Zod → migration → docs → test lifecycle when adding, renaming, removing, or retyping a user-config field. Model-invoked — activates automatically when editing UserConfigSchema.
  • Agent discovery guide now distinguishes marketplace-installed agents (in ~/.dork/{plugins,agents}) from agents discovered anywhere on disk via the mesh scanner. The two-registry split is no longer implicit — GET /api/marketplace/installed and GET /api/agents answer different questions and the docs now say so plainly.
  • New context-isolator subagent for running data-heavy read-and-summarize operations (release analysis, schema-diff classification, large searches) in an isolated context window. Ported from a sibling project and wired into /system:release Phase 3, which was silently missing the agent before.

Changed

  • Persistent user config now sources its migration projectVersion from SERVER_VERSION automatically — no more hardcoded stub. Migration keys tie to real release boundaries for the first time, so future schema migrations actually fire on upgrade.
  • Corrupt-config recovery path now preserves the migration chain. Previously, users who hit corrupt-recovery on any prior build would silently stop running migrations on subsequent upgrades — the fallback Conf instance was missing projectVersion and migrations. Both the primary and recovery branches now use a single shared options object.
  • Schema migration process is now documented first-class in contributing/configuration.md with the full conf projectVersion model, append-only rule, step-by-step procedure, real examples, and anti-patterns. Previously covered in one sentence.
  • CI/CD: All JavaScript-based GitHub Actions workflows opt into the Node 24 runtime ahead of GitHub's September 2026 Node 20 deprecation. Preempts the forced-upgrade disruption.

Fixed

  • The Marketplace now loads correctly. Previously it showed zero packages because the default community source URL pointed at github.com/dorkos/marketplace (an org that doesn't exist — the real repo is at dork-labs/marketplace) AND the upstream parser rejected the real Anthropic claude-plugins-official catalog entirely because of a strict reserved-name check and a kebab-case regex that couldn't handle the wordpress.com plugin. Existing users' ~/.dork/marketplaces.json files get auto-migrated to the correct URL on first read — no manual editing required. End-to-end verified: 8 plugins from the Dork Labs community marketplace + 126 from the Anthropic catalog now load successfully.

[0.34.1] - 2026-04-09

Emergency patch — unblocks npm install -g dorkos / npm update -g dorkos and restores the Docker image publish pipeline after the v0.34.0 release shipped broken.

Fixed

  • Fix npm install -g dorkos and npm update -g dorkos failing with E404 '@dorkos/marketplace@0.0.0' is not in this registry. The v0.34.0 package mistakenly listed a private workspace package as a runtime dependency — v0.34.1 removes it from the published tarball entirely. The marketplace validator and install commands are unaffected because the code was already bundled into the CLI binary at build time, so nothing is actually missing from the runtime. If you hit the 404 on v0.34.0, run npm install -g dorkos@0.34.1 to recover.
  • Restore the Docker image publish pipeline. The v0.34.0 release failed CI because of a cross-environment TypeScript resolution drift in the server build, which blocked ghcr.io/dork-labs/dorkos:v0.34.0 from being published. v0.34.1 pins @types/node deterministically so CI reproduces the local tsc behavior exactly.

[0.34.0] - 2026-04-08

The marketplace lands — install pipeline, in-app Marketplace, public web catalog, and strict Claude Code superset format all ship together, plus external MCP agent access and a redesigned agent Settings Tools tab.

Changed

  • Marketplace: Converted marketplace.json to a strict superset of the Claude Code marketplace format. Schema now supports 5 source types (relative-path, github, url, git-subdir, npm), owner / metadata / author object shapes, .claude-plugin/ file location, and a sidecar dorkos.json for DorkOS-specific extensions. The dorkos-community/marketplace repo is renamed to dork-labs/marketplace and uses the same-repo monorepo layout. Plugin runtime activation now goes through the Claude Agent SDK options.plugins API so DorkOS owns install and the SDK owns runtime. Empirically verified against claude plugin validate (CC 2.1.92). See spec marketplace-05-claude-code-format-superset and ADRs 0236–0239. (marketplace-05-claude-code-format-superset)

Added

  • Unify validate CLI + add source reachability check
  • Add Settings page and sections to the dev playground
  • URL deep links for Settings, Agent, Tasks, Relay, Mesh dialogs
  • CLI validators, telemetry, seed fixture, docs (marketplace-05 Batches 5-8)
  • Strict CC superset — schema, install, runtime, site (marketplace-05 Batches 1-4)
  • Add MCP server surface (marketplace-05-agent-installer) + in-flight WIP
  • Marketplace as MCP server. The DorkOS marketplace is now exposed as an MCP server at /mcp, alongside the existing DorkOS tools. Any AI agent that speaks MCP — Claude Code, Cursor, Codex, Cline, ChatGPT, Gemini — can search the marketplace, get package details, install packages (with user confirmation), and scaffold new packages on the fly. See contributing/external-agent-marketplace-access.md for setup instructions. (marketplace-05-agent-installer)
  • Personal marketplace. A per-user local marketplace at ~/.dork/personal-marketplace/ is now created on first server boot. Agents can scaffold new packages here via marketplace_create_package without leaving their tool of choice. (marketplace-05-agent-installer)
  • 8 new MCP tools: marketplace_search, marketplace_get, marketplace_list_marketplaces, marketplace_list_installed, marketplace_recommend, marketplace_install, marketplace_uninstall, marketplace_create_package. (marketplace-05-agent-installer)
  • Add /marketplace browse page on dorkos.ai with hourly registry refresh from dorkos-community/marketplace (marketplace-04-web-and-registry)
  • Add per-package detail pages with README rendering, install instructions, related packages, and OG images (marketplace-04-web-and-registry)
  • Add /marketplace/privacy page documenting the install telemetry contract (marketplace-04-web-and-registry)
  • Add opt-in install telemetry endpoint (/api/telemetry/install) backed by Neon Postgres + Drizzle ORM as the single source of truth (marketplace-04-web-and-registry)
  • Add telemetry consent banner in the in-product Marketplace (off by default) (marketplace-04-web-and-registry)
  • Add dorkos package validate-marketplace and dorkos package validate-remote CLI commands for the dorkos-community submission workflow (marketplace-04-web-and-registry)
  • Include all marketplace packages in sitemap.xml and llms.txt (marketplace-04-web-and-registry)
  • Ship Marketplace browse UI as built-in extension (marketplace-03-extension)
  • Add Marketplace — in-app marketplace browse experience for discovering and installing agents, plugins, skill packs, and adapters without leaving the app, shipped as the built-in @dorkos-builtin/marketplace extension (marketplace-03-extension)
  • Add featured agents rail and type filters (agents, plugins, skills, adapters) with debounced search across the catalog (marketplace-03-extension)
  • Add package detail sheet with rendered README and permission preview (marketplace-03-extension)
  • Add install confirmation dialog with blocking conflict detection before any write (marketplace-03-extension)
  • Add installed packages view for updating and uninstalling from the Hub (marketplace-03-extension)
  • Add marketplace sources management for adding and removing git registries from the Hub (marketplace-03-extension)
  • Add "From Marketplace" tab to TemplatePicker so agent creation can pull directly from marketplace agents (marketplace-03-extension)
  • Complete install/uninstall/update pipeline (Batches 4-9 of marketplace-02-install)
  • Add dorkos install <name> to install plugins, agents, skill packs, and adapters from configured marketplaces — atomic transactions with rollback on failure and permission preview before install (marketplace-02-install)
  • Add dorkos uninstall <name> with --purge flag for full data removal (marketplace-02-install)
  • Add dorkos update [<name>] advisory update notifications, with --apply to perform upgrades (marketplace-02-install)
  • Add dorkos marketplace add/remove/list/refresh to manage marketplace sources (marketplace-02-install)
  • Add dorkos cache list/prune/clear to manage the local marketplace cache (marketplace-02-install)
  • Add /api/marketplace/* HTTP endpoints for sources, packages, install/uninstall/update, and cache (marketplace-02-install)
  • Implement foundation package, CLI commands, and kind field addendum
  • Show MCP servers in Tools tab
  • Add external MCP access controls — toggle, API key, rate limiting, and setup instructions
  • Use official brand logos for agent runtimes
  • Redesign Tools tab with tool inventories, init errors, and override counts
  • Make Settings, Tasks, Relay, Mesh, and Agent dialogs URL-addressable via search params — share links like ?settings=tools to deep-link teammates to a specific dialog and tab; browser back closes dialogs and reload preserves dialog state. Note: deep links containing ?agentPath=... include your local project path.
  • Add @dorkos/marketplace package with schemas, parser, validator, scanner, and scaffolder (spec 1 of 5)
  • Add dorkos package init <name> CLI command for scaffolding new marketplace packages
  • Add dorkos package validate [path] CLI command for validating package manifests
  • Add optional kind field to SkillFrontmatterSchema (addendum to ADR-0220)

Changed (other)

  • Extract TabbedDialog widget primitive — SettingsDialog and AgentDialog now consume it as thin declarative wrappers (491 → 54 lines and 177 → 75 lines respectively)
  • Split four oversized dialog files under 300 lines
  • Reconcile developer guides for marketplace-init branch
  • Restructure dialog tabs — replace Capabilities with Tools
  • Redesign PersonalityTab with extracted TraitSliders and response mode
  • Redesign IdentityTab with hero preview and extract useDebouncedInput
  • Move warning to top, multi-line endpoint, Remove on generated key, dorkmcp prefix
  • Redesign ExternalMcpCard with sectioned layout and better visual hierarchy
  • Nest scheduler config inside Tasks tool group expansion

Fixed

  • Address code review findings on dialog URL deep links
  • Convert RateLimitSection to SwitchSettingRow
  • Address code review feedback from 413d74d3
  • Close 4 critical install-pipeline gaps from Session 2 review
  • Close code-review gaps from 6fdd065c
  • Repair .gtrconfig format and assign unique dev ports
  • Add error handling for API key lifecycle and restart hint for rate limits

[0.33.0] - 2026-04-05

Intelligent channel binding and dependency awareness — adapters become channels, runtime requirements surface during onboarding, and system configuration becomes discoverable.

Added

  • Rename relay adapters to channels, add adapter runtime cards and agent-first channel binding
  • Enhance ServerTab with subsystem configuration and relocated adapter settings
  • Add system requirements check to onboarding with adapter dependency checking
  • Add Remote Access shortcut to settings sidebar

Changed

  • Add agent runtime landscape research covering Codex, ACP, Pi Agent, Gemini CLI, and Aider
  • Add guidelines for capturing design decisions in visual companion sessions
  • Reconcile guides with v0.32.0 changes

[0.32.0] - 2026-04-04

Chat refinement and architectural cleanup — interrupt running queries with Escape, see agent activity at a glance with colored borders, and benefit from a cleaner, better-organized codebase under the hood.

Added

  • Add server-side query interrupt and Escape-to-stop
  • Replace activity dot with colored border indicator

Changed

  • Add pre-commit directory size check for codebase hygiene
  • Organize oversized directories and expand dir-size allowlist
  • Organize ui/ into domain subdirectories
  • Decompose ChatPanel and reduce ChatInputContainer prop surface
  • Remove unused Transport import and add onStop prop to ChatInput

Fixed

  • Add horizontal padding to chat scroll area for improved layout

[0.31.0] - 2026-04-03

Refining agent UX through redesigns and standards adoption — clearer palettes, transparent context usage, and portable skill definitions bring polish and portability to the operator platform.

Added

  • Redesign CommandPalette and FilePalette for clarity and reusability
  • Add cache hit rate and usage status bar items, refactor context to per-message
  • Redesign tool/thinking blocks for clarity and visual cohesion
  • Redesign onboarding copy and project discovery UX
  • Adopt SKILL.md file-first architecture for task system
  • Add @dorkos/skills package implementing SKILL.md open standard
  • Introduce maintaining-dev-playground skill documentation
  • Allow disabling tunnel passcode for open or trusted environments

Fixed

  • Include legacy .claude/commands/ in command list after SDK session starts
  • Make SDK command and subagent caches per-cwd instead of global
  • Resolve all lint warnings across server, client, and CLI
  • Serve SPA on tunnel requests so PasscodeGate renders instead of raw JSON

[0.30.0] - 2026-03-31

Discovery and documentation refinement — unified scan actions, onboarding polish, and a full contributing guide refresh bring consistency to both the agent discovery experience and developer documentation.

Added

  • Unify Skip/Deny actions and add scan options to onboarding

Changed

  • Update contributing guides, external docs, and AGENTS.md
  • Fix review issues — FSD compliance, DRY extractions, resetActed
  • Unify scan UI — fix DiscoveryView parity, extract shared utilities
  • Complete Pulse→Tasks terminology migration and improve docs infrastructure
  • Update CLI README and config guide for Tasks rename and new features

Fixed

  • Add resetActed to handleRescan dependency array
  • Surface existing agents during onboarding scan
  • Update SettingsDialog tests after Remote indicator relocation

[0.29.0] - 2026-03-30

Agent fleet management and UI refinement — DataTable-powered agent lists, command palette agent settings, breadcrumb navigation, and a streamlined dashboard bring polish and power to the operator experience.

Added

  • Enhance command palette with agent settings dialog
  • Convert agents list to DataTable with responsive column hiding
  • Auto-focus prompt textarea on session change
  • Add Table primitives, DataTable, and Dev Playground showcase
  • Add AgentIdentity to shortcut chips row
  • Add dedicated Onboarding page to dev playground

Changed

  • Consolidate agent identity to chat input, add breadcrumb nav
  • Reorganize Dev Playground sidebar into domain-oriented groups
  • Relocate Remote indicator from status bar to sidebar footer
  • Streamline dashboard — remove Active Sessions, fix status alignment, unify activity feed
  • Polish onboarding flow UI and extract OnboardingNavBar

Fixed

  • Remove unused AgentVisual type import from AppShell
  • Remote-access promo opens TunnelDialog directly
  • Align sidebar back chevron with content below
  • Use dynamic agent name in chat input placeholder
  • Improve dev playground overview card layout
  • Expand tilde paths in boundary validation and add startup diagnostics
  • Cast spawn proc through EventEmitter to fix CI type resolution
  • Remove unnecessary ChildProcess cast that fails in CI Node 20

[0.28.0] - 2026-03-30

Tasks redesign, DorkBot system agent, and the extensibility platform matures — file-based task definitions, manifest-driven settings, extension hooks, session forking, and MCP elicitation bring DorkOS closer to a fully autonomous coordination layer.

Added

  • Redesign Tasks system — rename Pulse→Tasks, add file-based definitions, and make scheduling optional for on-demand tasks
  • Replace Damon with DorkBot as the sole system agent
  • Add MCP elicitation UI for auth flows and form inputs
  • Add session forking via SDK forkSession() and session rename via renameSession()
  • Add server-side extension hooks with encrypted secrets and Linear reference extension
  • Add manifest-driven settings forms with placeholder hints and grouped sections
  • Auto-generate settings UI from extension manifests
  • Add plugin hot-reload via reloadPlugins()
  • Show available subagents via supportedAgents()
  • Evolve linear-issues into Loop-aware dashboard
  • Add commands for product management and issue handling
  • Add 5-level error handling hierarchy with Dev Playground showcase
  • Display context usage meter with category breakdown tooltip for token visibility
  • Decouple chat state from React lifecycle into session-keyed Zustand store
  • Add openBlank() to task template dialog store
  • Fix prompt suggestions, add api_retry events, and effort level controls
  • Add spec manifest management system

Changed

  • Extract PageHeader for consistent top-level route headers
  • Extract SessionStore, RuntimeCache, and constants from ClaudeCodeRuntime
  • Extract extension-manager into focused collaborators
  • Extract setting field renderers to separate file
  • Document getSubagents() across architecture, API, and data-fetching guides
  • Update docs and templates for auto-generated settings tabs

Fixed

  • Eliminate setState-during-render errors on session and tasks pages
  • Resolve all 15 client lint warnings
  • Update stale test mocks after Tasks rename (Pulse→Tasks)
  • Tighten activity filter bar chip sizing and spacing
  • Exclude archived issues and fix query complexity in Linear queries
  • Unify dashboard section styling for visual consistency
  • Add padding to collapsible settings groups and vertical layout for wide controls
  • Expose React globally for extension runtime and fix Linear example import
  • Clean up lint warnings and fix site build frontmatter
  • Fork UX feedback, tests, and tooltip accessibility
  • Spread process.env in SDK env option to prevent code 127
  • Load local settings so project-level plugin MCP servers are discovered

[0.27.0] - 2026-03-28

Canvas as a first-class surface — persistent, toggleable, and mobile-ready.

Added

  • Add canvas toggle button in session header with Cmd+. keyboard shortcut and command palette action
  • Persist canvas state (open/closed, content, panel width) per session in localStorage — survives page refreshes and session switches
  • Show dot indicator on canvas toggle when content is available but panel is closed

Changed

  • Remove "New Session" and "Schedule" buttons from dashboard header to reduce clutter

Fixed

  • Match canvas background to sidebar color (bg-sidebar) for visual consistency
  • Replace chunky 6px resize handle with a subtle 1px line and 8px hit target
  • Render canvas as a full-width Sheet on mobile instead of an unusable side panel

[0.26.0] - 2026-03-28

Network resilience and operator onboarding — faster SSE streams with custom headers and a welcoming first-time experience.

Added

  • Upgrade to fetch-based SSE transport with custom headers, HTTP/2 multiplexing, and retry backoff for more reliable streaming
  • Consolidate all SSE connections into a unified /api/events stream for simpler client integration and improved sync reliability
  • Add splash screen with onboarding flow and command palette quick-launch entry for faster agent discovery

Changed

  • Update architecture guide to reflect fetch-based SSE transport implementation

[0.25.0] - 2026-03-27

Extensibility platform and composable filtering — agents can now build and install extensions, and every list surface gets URL-synced, filterable, sortable data views.

Added

  • Build extensions that agents install, configure, and run — the extensibility platform spans agent UI control, extension point registry, extension system core, and agent-built extensions (Phases 1–4)
  • Filter and sort agent lists with a composable filter system — text search, enum pills, date ranges, boolean toggles, and URL-synced state
  • Redesign Remote Access dialog with progressive disclosure
  • Show the default agent in the dashboard sidebar
  • Add AgentAvatar and AgentIdentity primitives for consistent agent visual identity
  • Add /adr:review command for ADR lifecycle management
  • Absorb superpowers plugin into first-party skills and agents
  • Add dedicated Feature Promos page to dev playground

Changed

  • Migrate agents list to the composable filter system
  • Consolidate agent display to use shared AgentAvatar primitive
  • Simplify AgentNode, extract sidebar hooks, update session list
  • Unify dev playground with PAGE_CONFIG and shared layout
  • Extract resolveAgentVisual for consistent agent visual identity
  • Update README screenshot to dark mode with real chat session
  • Reconcile contributing and doc guides for extensions and FilterBar

Fixed

  • Wire UI tools to session and align sidebar tab schema
  • Harden extension system security and fix flaky tests
  • Display human-readable labels for dateRange, boolean, and numericRange filters
  • Fix dynamic enum deserialize and color dot rendering in FilterBar
  • Resolve workspace packages in electron-vite renderer build
  • Alias @dorkos/shared subpaths to source for CI compat
  • Add better-sqlite3 as direct dependency for packaging
  • Update SchedulesView tests to match rewritten component
  • Provide TanStack Router context in DevPlayground

[0.24.0] - 2026-03-25

Desktop app, tunnel security, and resilience — native macOS distribution, passcode-gated remote access, and SSE auto-reconnect harden the operator experience.

Added

  • Add 6-digit passcode gate for remote access
  • Add Electron desktop app for native macOS distribution
  • Add status bar inline management with scroll and configure popover
  • Generalize subagent system to background task model with stopTask support
  • Add rotating placeholder hints in chat input
  • Move version display from status bar to sidebar footer
  • Add declarative feature promo system with contextual discovery
  • Add SSE resilience infrastructure with connection health UI
  • Display friendly tool names in ToolApproval
  • Add relay outbound awareness for agent-initiated messaging

Changed

  • Remove unnecessary border from SidebarFooterBar component
  • Reconcile harness inventory counts with actual files

Fixed

  • Target arm64, externalize manifest, skip codesign discovery
  • Remove postinstall electron-rebuild, add dual-mode server spawning
  • Exclude desktop from default dev, approve electron builds

[0.23.0] - 2026-03-23

Task visibility and execution awareness — progress bars, dependencies, and animated background indicators bring your agent fleet to life.

Added

  • View task dependencies and progress at a glance — TaskListPanel now displays real-time progress bars, dependency-aware sorting (blocked tasks dimmed), and click-to-expand detail view with description, owner, elapsed time, and dependency links
  • See running background agents with animated indicator showing active subagent execution
  • Poll tasks automatically when background refresh is enabled — subagent todo updates appear without manual reload

Changed

  • Extract shared useTabVisibility hook for consistent tab-aware polling across features
  • Decompose TaskListPanel into focused sub-components (TaskProgressHeader, TaskRow, TaskDetail, TaskActiveForm)

Fixed

  • Fix indicator bar exit animation and always-render pattern
  • Fix Rules of Hooks violation in TaskListPanel where useCallback was called after conditional return

[0.22.0] - 2026-03-23

TodoWrite task system, speculative sessions, and brand icon refresh

Added

  • Add TodoWrite support to task system — recognize the SDK's new batch todo tool with snapshot semantics so tasks appear in the TaskListPanel during streaming and on reload
  • Eliminate null sessionId with speculative UUID pattern — sessions get a client-generated ID immediately, avoiding null guards and 404s during the first message
  • Replace emoji adapter icons with real brand SVG logos for Slack, Telegram, and other adapters

Fixed

  • Preserve session state across SDK remaps and inline errors — model, permission mode, and cost survive session ID transitions and tool validation failures

[0.21.0] - 2026-03-23

Agent creation pipeline, fleet management surface, and A2A gateway

Added

  • Create agents from a guided dialog with name validation, directory resolution, personality sliders, and workspace template picker
  • Overhaul tool call display with MCP server parsing, streaming state tracking, and classified output rendering
  • Redesign agents page as a fleet management surface with health monitoring, filtering, and session launch
  • Improve Slack adapter with 8 enhancements including message threading, reaction management, and format fidelity
  • Implement A2A external gateway for cross-platform agent interoperability
  • Improve ConnectionsTab UX with decomposed components and actionable deep-links to adapter setup
  • Adopt TanStack Form for submit-lifecycle forms with validation and error handling
  • Add Telegram typing indicator during agent processing for real-time feedback

Fixed

  • Resolve architectural debt from agent creation review — consolidate duplicated route/service logic, fix FSD cross-feature import, add auth token redaction
  • Restore result border separator and clean up OutputRenderer imports
  • Make dashboard responsive on mobile with proper viewport handling
  • Fix Chat SDK HTML rendering, port splitMessage utility, and deprecate legacy adapter
  • Update server integration tests for new validation and convention-files patterns

[0.20.0] - 2026-03-22

Adapter ecosystem expansion — Chat SDK Telegram integration, A2A gateway spec, and agent personality conventions

Added

  • Improve adapter binding validation, routing, and instance-aware codecs
  • Add A2A external gateway spec and drop Channels from scope
  • Add Chat SDK Telegram adapter and PlatformClient architecture
  • Add SOUL.md and NOPE.md convention files for agent personality

Changed

  • Reconcile guides after chat-sdk-relay-adapter-refactor spec

Fixed

  • Add StreamEvent buffering to Chat SDK Telegram adapter
  • Normalize Chat SDK thread IDs before relay subject encoding
  • Eliminate visible scroll animation on session load
  • Improve binding row UX with consistent icons and clearer overflow
  • Add missing traits_json and conventions_json migration

[0.19.0] - 2026-03-21

Fleet management dashboard — dedicated agents page, mission control, and client-side routing

Added

  • Browse and manage agents from a dedicated fleet management page with health monitoring, filtering, and session launch
  • Access mission control dashboard with needs-attention alerts, active sessions, system status, and activity feed
  • Navigate between dashboard, sessions, and agents with animated sidebar and header transitions
  • Add TanStack Router with code-based route definitions and URL search params
  • Browse features by product and category on SEO-optimized catalog pages
  • Monitor chat status at a glance with a unified status strip combining inference and system indicators
  • Toggle multi-window sync and background refresh from the status bar
  • Experience smoother chat with per-word text animation and spring-based scroll physics

Changed

  • MCP tools require agent context for session counts and use clearer naming (get_agent)
  • Relay tools renamed for clarity: relay_send_and_wait (was relay_query), relay_send_async (was relay_dispatch)
  • Relay mailboxes use human-readable subject strings instead of SHA-256 hashes
  • Feature catalog split into product and category dimensions for richer filtering
  • Clean up routing migration — remove dead code, fix test/code consistency
  • Move scan line effect to chat input area with subtle edge fade

Fixed

  • Resolve all ESLint warnings across the monorepo (0 errors, 0 warnings)
  • Code review fixes for mesh discovery, MCP tools, and schema validation
  • Adapter setup pipeline protected with timeout guards and diagnostic logging
  • Relay and Pulse enabled by default on fresh installations
  • Fix llms.txt feature categories formatting
  • Fix Stop hook hanging and add auto-format on file write
  • Fix dashboard navigation router context and auto-select suppression
  • Fix DoneEventSchema missing messageIds and export SubagentStatus

[0.18.0] - 2026-03-19

Chat simulator, interactive tool fixes, and developer guide refresh

Added

  • Add chat simulator to Dev Playground for testing streaming, tool approval, and question flows without a live agent

Changed

  • Reconcile developer guides and external docs with recent architecture changes
  • Add test-results directory to .gitignore

Fixed

  • Fix stuck input bar and 404 errors in AskUserQuestion flow
  • Fix createPulseRouter missing dorkHome parameter
  • Fix tunnel CORS test using hardcoded port instead of dynamic assignment

[0.17.2] - 2026-03-19

Dev port convention update and test reliability fixes

Changed

  • Update dev port convention from 4xxx to 6xxx for simultaneous dev/production operation
  • Move tunnel port resolution to call time so tests can override VITE_PORT
  • Move createTestDb to @dorkos/test-utils/db subpath to avoid pulling Node.js-only db into jsdom tests

Fixed

  • Fix 153 client test failures caused by NODE_ENV=production leaking into jsdom environment
  • Fix error handler and tunnel tests failing when shell has NODE_ENV=production
  • Fix getCommands test finding real .claude/commands/ from repo root

[0.17.1] - 2026-03-19

Streaming message integrity and reliability fixes

Added

  • Document Claude Agent SDK Message History and Session Listing API for research library

Fixed

  • Prevent session remap flash and merge consecutive assistant JSONL entries
  • Eliminate message flash and disappearing errors on stream completion
  • Pause background-tab polling for always-on query hooks
  • Add hourglass reaction immediately and clean up orphaned reactions

[0.17.0] - 2026-03-18

CLI polish, Apple-style field grouping, and relay hardening

Added

  • Improve CLI UX with clickable URLs, unknown option handling, and browser open prompt
  • Add FieldCard primitives and apply Apple-style field grouping

Changed

  • Move platform formatting rules into adapters
  • Eliminate DRY violations, enforce file size limits, and instance-scope mutable state

Fixed

  • Populate sender on index rebuild and fix stale TSDoc
  • Fix second hasStarted bug in updateSession and add resume diagnostics
  • Fix per-sender rate limiting, add publish rejection logging and inbound result checks
  • Prevent new sessions from crashing with invalid SDK resume ID
  • Enhance Slack inbound message handling with improved reaction management
  • Add inbound typing reaction with FIFO cleanup on stream completion
  • Improve ConfigFieldInput layout, error UX, and password toggle
  • Persist session map across restarts for Slack DM continuity
  • Extract binding permissionMode in CCA agent handler
  • Clear pending approval timeouts on SlackAdapter stop

[0.16.0] - 2026-03-18

Interactive tool approval, standardized form fields, and resilient streaming

Added

  • Standardize form fields with Shadcn Field, SettingRow, and PasswordInput
  • Add interactive tool approval for Slack and Telegram adapters
  • Add dedicated Forms page and split registry into per-page section files
  • Add data path debug toggles for cross-client sync and message polling
  • Add unified input zone for interactive cards
  • Add 4 sidebar component showcases to dev playground

Fixed

  • Flush stream buffer before posting tool approval cards
  • Move empty-stream and retry-depth tests into sendMessage() describe block
  • Break infinite SDK retry loop and surface errors to adapters
  • Prevent tool_call_end from overwriting pending status on interactive tool calls

[0.15.0] - 2026-03-17

Multi-client awareness, extended thinking visibility, and dev playground overhaul

Added

  • Add multi-client presence indicator, subagent/hook lifecycle visibility, and tool call enhancements
  • Implement tool-approval-timeout-visibility, prompt-suggestion-chips, multi-client-session-indicator
  • Add transport error categorization and retry affordance
  • Truncate tool results at 5KB with raw JSON fallback for large payloads
  • Surface SDK system status messages and compact boundary events in chat UI
  • Implement result-error-distinction, extended-thinking-visibility, and tool-progress-streaming
  • Add rate-limit countdown UI and prop threading
  • Add subagent lifecycle visibility to chat UI
  • Redesign QuestionPrompt and unify compact final states
  • Add scrollspy TOC, Cmd+K search, and overview landing page to Dev Playground
  • Implement navigation overhaul for Dev Playground with improved sidebar and routing
  • Add 14 missing component showcases to dev playground
  • Add slugify, copyable names, and responsive viewport toggle to dev playground
  • Add multi-select and 3-tab question showcases to design system
  • Add hook lifecycle showcase and refactor stream-event-handler
  • Add ClientsItem presence indicator showcase to design system
  • Add ToolApproval countdown timer showcases to design system
  • Add truncated tool result showcase to design system
  • Add SystemStatusZone to design system showcase
  • Add ErrorMessageBlock and ThinkingBlock showcases
  • Add rate-limit states to InferenceIndicator showcase
  • Add SubagentBlock to design system showcase

Changed

  • Unify ToolApproval and QuestionPrompt container styling
  • Extract shared primitives from duplicated chat UI components
  • Reconcile contributing guides with recent commits (37 commits since 2026-03-12)
  • Improve playground UX with demo wells and DRY cleanup

Fixed

  • Add setSystemStatusWithClear to useMemo deps
  • Stabilize ThinkingBlock tests — remove motion mock, add cleanup

[0.14.0] - 2026-03-16

Binding-level permissions, relay panel redesign, and SDK command discovery

Added

  • Configure permission modes per adapter-agent binding so headless sessions (Slack, Telegram) use the right tool approval level instead of stalling
  • Redesign the Relay panel with a 2-tab layout, semantic health indicators, inline permissions, and aggregated dead letter management
  • Discover slash commands via the SDK supportedCommands() API for more reliable command availability

Changed

  • Derive binding working directory from the agent registry instead of storing a separate path

Fixed

  • Prevent dead letter panel from re-opening after the user explicitly collapses it
  • Fix relay panel follow-up issues with health bar rendering, empty states, and label consistency
  • Discover root-level commands and fix SDK command cache returning stale results

[0.13.1] - 2026-03-14

Fixed

  • Fix CLI crash on startup caused by duplicate createRequire declaration in ESM bundle
  • Fix relay build script failing on non-Bash shells by using POSIX-compatible substitution

[0.13.0] - 2026-03-14

Slack integration, Docker containerization, and adapter system unification

Added

  • Publish Docker images automatically to GHCR via GitHub Actions for easy containerized deployment
  • Add dorkos cleanup command to safely remove stored agent data and sessions
  • Add Slack adapter with Socket Mode support, message streaming, and format conversion
  • Add streaming toggle and typing indicators for real-time Slack message updates
  • Add layered adapter documentation system with per-field setup guides and help text
  • Unify discovery UI with shared candidate cards and consistent approve/skip workflows

Changed

  • Unify adapter system with BaseRelayAdapter base class, shared callbacks, and DRY utilities
  • Add upgrade guidance, rollback instructions, and breaking-change callouts to docs
  • Add dedicated Docker guide with install tabs for containerized setup
  • Fix documentation drift — update AGENTS.md, API reference, and correct broken links

Fixed

  • Harden onboarding gate validation, error handling, logging, and documentation clarity
  • Harden Slack adapter with throttled streaming updates, bounded caches, and better error surfaces
  • Fix adapter setup wizard scrollability when forms exceed viewport height

[0.12.0] - 2026-03-13

Marketing storytelling, topology intelligence, and Pulse schedule management

Added

  • Add /story page with dual-mode presentation support for brand storytelling
  • Add ScanLine component with three-layer composited animation responding to text streaming
  • Enhance Pulse with agent filtering, inline enable/disable toggle, delete with confirmation, and edit-from-sidebar
  • Add presentation mode with keyboard navigation, progress indicators, and incremental step reveal
  • Add story sections: Hero, Monday Morning Dashboard, How It Was Built, Just Prompts equation, Future Vision, and Close
  • Implement agent filtering and caps in ConnectionsView with motion animations
  • Filter agent connections to reachable-only so the connections panel only shows agents you can actually reach
  • Cap MCP servers list at 4 and agents at 3 with overflow links
  • Introduce Pulse presets management and UI components
  • Add structured debug logging across chat flow layers
  • Add smooth LOD transitions, adapter labels, and ghost node tests to topology
  • Redesign AdapterCard with bindings display and CCA treatment
  • Implement adapter-binding UX overhaul with ghost adapter placeholders
  • Add BaseRelayAdapter, compliance suite, API versioning, and adapter template
  • Add useUpdateBinding hook and BindingList component for managing adapter-agent bindings
  • Add NavigationLayout sidebar navigation for polished dialog navigation

Changed

  • Remove relay message path from web client, use direct SSE only for more reliable streaming
  • Humanize raw IDs and technical jargon across Relay/Mesh UI
  • Reconcile contributing guides against relay removal, pulse presets, and ConnectionsView changes
  • Document test simulation infrastructure and fix mock proxy routing

Fixed

  • Fix LayoutGroup layout animation to eliminate timeline item jumps
  • Fix presentation mode keyboard nav, progress bar, header hiding, and animation replay
  • Replace pendingUserContent with optimistic messages in virtualizer
  • Disable model/permission selectors before first message, fix post-remap PATCH
  • Filter adapter list to agent-bound adapters only
  • Prevent form revert and fix AnimatePresence key warnings
  • Restore scroll in tabpanel views by adding h-full
  • Use text-foreground for node name text consistency
  • Filter CCA adapter nodes and always show namespace groups
  • Use correct logo SVG paths in OG share card
  • Resolve createRequire duplicate declaration in server bundle
  • Add missing Fumadocs frontmatter title to spec and plan docs

[0.11.0] - 2026-03-11

Shortcut discoverability, design system refinements, and UX fixes

Added

  • Add centralized shortcut registry and discoverability panel
  • Add design system showcase playground
  • Integrate brand orange into client design system
  • Replace custom gradient button with Aceternity HoverBorderGradient

Changed

  • Replace custom gradient button with HoverBorderGradient

Fixed

  • Deduplicate remote access toast notifications
  • Filter schedules by agent and show adapter display names
  • Handle empty roots array in scan endpoint
  • Fix toast notifications rendering with transparent backgrounds

[0.10.0] - 2026-03-11

Tabbed sidebar navigation, agent identity chip, ScheduleBuilder, and always-editable chat input

Added

  • Navigate between Sessions, Schedules, and Connections from tabbed sidebar views
  • Build schedules with progressive disclosure — pick frequency, then refine timing
  • Pick agents from a direct-selection list when creating schedules
  • Switch active agent from the identity chip in the top navigation bar
  • See agent emoji in the identity chip at a glance
  • Open the command palette directly from the header
  • Keep typing while agents stream — messages queue and send when ready
  • Auto-hide scrollbars in sidebar and message list until hover
  • Detect dev builds and dismiss upgrade prompts with persistent version display

Changed

  • Replace cron presets and visual builder with unified ScheduleBuilder
  • Replace AgentCombobox dropdown with AgentPicker direct-selection list
  • Restructure StatusLine as a compound component

Fixed

  • Fix agent picker combobox behavior, dialog layout, and default cron expression
  • Fix Enter and Cmd+Enter not working in command palette agent sub-menu
  • Fix sidebar content overflow caused by Radix ScrollArea table layout
  • Fix queued messages not appearing until animation completes
  • Fix message loss during streaming and model selector flicker
  • Fix scrollbar overlay obscuring sidebar content

[0.9.1] - 2026-03-10

Chat UX refinements — file attachments rendered inline, message bubbles right-aligned, and relay directory fixes

Added

  • See attached files as inline thumbnails and styled chips in chat message bubbles
  • Distinguish your messages at a glance with right-aligned chat bubbles

Fixed

  • Fix relay messages losing working directory context
  • Fix agent messages running in wrong directory when sent via relay
  • Fix sidebar logo color not adapting to light/dark mode

[0.9.0] - 2026-03-09

MCP server integration, file uploads, chat UX overhaul, and SSE reliability fixes

Breaking changes: The POST /sessions endpoint has been removed — API consumers must use message-first session creation (send a message to create a session implicitly). Pulse and agent MCP tool names have been renamed to follow the domain_verb_noun convention (e.g., pulse_create_schedule). Update any scripts or integrations that reference the old names.

Added

  • Embed MCP server with Streamable HTTP transport — external agents (Claude Code, Cursor, Windsurf) can connect via /mcp
  • File uploads in chat — drag-and-drop, paperclip, and paste to attach files
  • Redesign chat message theming — semantic tokens, TV variants, MessageItem decomposition
  • Add chat microinteraction polish — spring physics, layoutId, session crossfade
  • Unify discovery scanners and fix onboarding scan root
  • Add endpoint types, dispatch TTL sweeper, and relay_send_and_wait progress accumulation
  • Add /chat:self-test slash command
  • Add relay_send_async fire-and-poll for long-running tasks

Changed

  • Message-first session creation — eliminate POST /sessions
  • Extract ChatInputContainer from ChatPanel
  • Split http-transport.ts into transport/ subdirectory (742 → 7 files)
  • Extract 4 hooks + 1 component from ChatPanel (617 → 267 lines)
  • Clean up URL query params — remove dead code, add pushState, fix setTimeout hack
  • Unify page title and favicon system, remove dead code
  • Update MessageItem typography to use font-light for improved readability
  • Tighten chat typography to text-sm (14px)
  • Decompose root eslint.config.js into per-package configs with shared @dorkos/eslint-config
  • Extract AgentRuntime interface and RuntimeRegistry abstraction
  • Replace text branding with DorkOS logo linking to dorkos.ai
  • Rename pulse and agent tools to follow domain_verb_noun convention

Fixed

  • Create MCP server per request to avoid connect() reuse
  • Update stale tests and add pre-push test gate via lefthook
  • Eliminate ghost messages via per-message correlation IDs
  • Improve message history retrieval and error handling in session routes
  • Resolve streaming vs history inconsistencies via queueMicrotask and scroll-intent tracking
  • Prevent relay-mode polling storm and tool-call spinner regression
  • Upgrade streamdown to ^2.4.0 to fix inline code truncation
  • Resolve history gaps, SSE session mismatch, and done event loss
  • Export health thresholds to eliminate fragile hardcoded test values
  • Resolve SSE delivery pipeline causing ~40-50% message freezes
  • Apply SSE backpressure handling to session broadcaster relay writes
  • Resolve SSE freeze, blank refresh, and relay metadata leaks
  • Remove acted candidates from discovery list after approve/deny

[0.8.0] - 2026-03-04

Agent-centric control, enhanced discovery UX, and critical infrastructure hardening

Added

  • Per-agent tool filtering via enabledToolGroups in AgentManifest — configure which tool domains each agent can access; cascade disable propagates to dependent tools
  • relay_send_and_wait blocking MCP tool for synchronous inter-agent request/reply
  • get_current_agent MCP tool returning agent identity for the session's working directory
  • CapabilitiesTab in agent settings dialog with per-agent Tool Groups toggles showing 3-state display (inherited/overridden)
  • Command palette rebuilt with Fuse.js fuzzy search, agent preview panel, Slack bucket frecency, sub-menu drill-down, and spring animations (features/command-palette/)
  • Shadcn Sidebar component migration for agent-centric sidebar layout
  • Tool context injection into SDK system prompt with global and per-agent configurable toggles
  • Mesh always-on mode — no environment variable required for continuous agent discovery
  • Responsive touch targets and explicit size variants for shared UI primitives

Changed

  • Improve developer guides documenting domain-grouped services and agent tool elevation patterns
  • Update README and CLI documentation to reflect complete DorkOS feature set

Fixed

  • Fix critical agent-to-agent routing bug causing CWD mismatches and harden CCA pipeline
  • Improve Mesh agent health detection with auto-stamping and widened thresholds
  • Fix mobile sidebar sheet close behavior, transparency issues, and remove stale cookie code
  • Improve command palette search with keyword inclusion for better path/ID matching
  • Clean up command palette cmdk prop usage and @ filtering logic
  • Enforce file-first write-through storage pattern for agent identity (ADR-0043)
  • Improve onboarding step completion logic to handle rapid user interactions
  • Register relay_send_and_wait in tool filter and add test coverage

[0.7.0] - 2026-03-02

Brand refresh, CI hardening, and marketing site overhaul

Added

  • Add full-app Docker integration testing and runnable container
  • Enforce dorkHome parameter usage in server code via ESLint rule
  • Add Docker and GitHub Actions smoke testing for CLI installs
  • Add GitHub Actions CLI smoke test workflow for npm package install validation
  • Add Dockerfile and .dockerignore for isolated CLI smoke testing
  • Add smoke:docker convenience script for local Docker smoke tests
  • Add DorkLogo to onboarding welcome screen
  • Add FAQ accordion section before install CTA on marketing site
  • Align site copy with pro-human positioning
  • Rewrite IdentityClose copy to celebrate human ambition
  • Rewrite PivotSection with "intelligence doesn't scale" metaphor
  • Upgrade timeline beam with Aceternity-inspired SVG tracing
  • Replace dorkian logos with new dork logos and update references
  • Enhance WelcomeStep with dynamic gradient effects
  • Add agent discovery scroll fix image and enhance CLI build configuration

Changed

  • Migrate domain from dorkos.dev to dorkos.ai
  • Add DORKOS_HOST, Docker workflow, and discovery endpoint to guides

Fixed

  • Use cd for CLI version bump and gitignore tarballs
  • Resolve Docker runtime and npm publishing issues
  • Support dark mode in favicon SVG
  • Gate shouldShowOnboarding on config loading state
  • Send partial patches to prevent skip dismiss race condition
  • Fix missing better-sqlite3 dependency in CLI package that crashed on npm install -g dorkos
  • Adjust beam visibility range in TimelineSection

[0.6.0] - 2026-03-02

First-time user experience, remote access overhaul, and research library curation

Added

  • Walk through first-time setup with guided agent discovery, Pulse presets, and animated onboarding flow
  • Overhaul remote access with multi-tab sync, UX redesign, and CLI QR code
  • Add curl install script, tabbed UI, Homebrew tap, and CLI check
  • Reset all data and restart server from the Advanced settings tab
  • Add research library curation with file reduction phases
  • Replace static llms.txt with dynamic route handler
  • Add header, breadcrumb, prev/next nav, tags, RSS link, and SEO improvements to blog
  • Wire research library into agent and main context

Changed

  • Remove standalone roadmap app and all references
  • Rename apps/web to apps/site for clarity
  • Codify plans/ as canonical location and migrate from docs/plans/
  • Update all contributing guides based on 30 recent specs

Fixed

  • Target registered agents in Pulse presets step instead of server default directory
  • Unify onboarding nav bar, select all agents by default, reduce spacing
  • Fix scroll containment and improve agent discovery UX
  • Reset stale tunnel status fields on stop and broadcast changes to other tabs
  • Restore code block padding after opting out of fumadocs dark theme
  • Update debug commands for .dork directory and fix ADR/README inventory

[0.5.0] - 2026-03-01

Human-readable Relay messaging, marketing site overhaul, and 125+ code quality fixes

Added

  • Rebuild marketing homepage with narrative-driven design, approachable language, and new imagery
  • Improve social share cards, SEO metadata, and AI readability for the marketing site
  • Browse, install, and configure external adapters from a built-in catalog
  • Route external messages to specific agents with visual binding management in topology
  • Group related messages into threaded conversations in the Relay activity feed
  • Display human-readable names for endpoints, adapters, and message subjects throughout Relay
  • Monitor Relay health at a glance with status bar, message filters, and smooth animations
  • Test Telegram adapter connections before going live
  • Choose from all available Claude models dynamically instead of a hardcoded list
  • See available updates at a glance with a version indicator and details popover
  • Access agent settings and start chats directly from topology graph nodes

Changed

  • Standardize logging across all packages with structured, parseable output
  • Rename "Tunnel" to "Remote" throughout the UI for clarity

Fixed

  • Fix critical Relay publish pipeline bug where adapter delivery was silently skipped, blocking all Relay-routed chat messages and Pulse dispatches
  • Return detailed delivery results from adapters instead of discarding status information
  • Add 30-second timeout protection for adapter delivery
  • Include adapter-delivered messages in the SQLite audit trail
  • Return real trace IDs for Relay messages instead of placeholder values
  • Fix Telegram feedback loop that caused duplicate messages
  • Send properly formatted messages through Telegram instead of raw JSON chunks
  • Resolve CWD resolution and MCP transport reuse issues
  • Show correct sender names on delivered conversation messages
  • Track message delivery end-to-end through the Relay publish pipeline
  • Fix header overlap on marketing homepage hero section
  • Fix Vercel deployment failures for the marketing site
  • Handle console endpoint registration errors gracefully
  • Resolve 125+ code quality issues across server, relay, mesh, client, and shared packages

[0.4.0] - 2026-02-26

Multi-agent infrastructure — Relay message bus, Mesh discovery, Agent Identity, and unified database

Breaking changes: Three separate SQLite databases have been consolidated into a single dork.db — this is handled automatically on first startup, but back up your ~/.dork/ directory before upgrading if you want to preserve the originals. The package manager for self-hosted installs has changed from npm to pnpm — run pnpm install instead of npm install after pulling.

Added

  • Elevate topology chart with ELK.js layout, zoom LOD, and enriched nodes
  • Add agent identity as first-class entity
  • Add fullscreen toggle, min-height, and overflow fixes to ResponsiveDialog
  • Add registry integrity with reconciliation, idempotent upserts, and orphan cleanup
  • Improve sidebar UX with shortcut, persistence, tooltips, and mobile fixes
  • Consolidate three SQLite databases into single Drizzle-managed dork.db
  • Wire edges and namespace grouping into topology graph
  • Disciplined env var handling with per-app Zod validation
  • Enable Relay, Mesh, and Pulse by default
  • Env-aware data dir, mesh panel UX overhaul, web lint fixes
  • Enhance browser testing methodology and documentation
  • Add AI-driven browser testing system with Playwright
  • Add Mesh agent discovery with registry, topology graph, health monitoring, and MCP tools
  • Add Relay inter-agent message bus with delivery tracing, dead-letter handling, and MCP tools
  • Add Relay external adapter system for Telegram and webhook channels
  • Add unified adapter system with plugin loading and Claude Code runtime adapter
  • Add Access tab to Mesh panel for managing agent permissions
  • Add standalone roadmap management app with table, kanban, MoSCoW, and Gantt views
  • Add visual cron builder, directory picker integration, and calm tech notifications to Pulse
  • Add interactive clarification to ideation and recommendation discipline

Changed

  • Replace raw HTML elements with shadcn Button/Input primitives
  • Add agent identity documentation across internal and external guides
  • Migrate from npm to pnpm for faster installs and stricter dependency resolution
  • Route Pulse jobs and console output through Relay transport for unified message delivery and tracing
  • Comprehensive Relay & Mesh release preparation
  • Redesign Pulse scheduler UI with filtering, accessibility, and navigation improvements
  • Rebrand homepage modules and create DorkOS litepaper
  • Rename Vault module to Wing with updated brand positioning
  • Replace triangles logo with DORK monogram

Fixed

  • Prevent agent node overlap in topology expanded view
  • Pass consolidated db to RelayCore and add init error diagnostics
  • Restore migration journal timestamp for 0004_ambitious_spectrum
  • Resolve unused variable warnings across server package
  • Resolve @dorkos/shared subpath imports in esbuild bundle
  • Correct Relay documentation to match implementation
  • Correct Mesh documentation to match implementation
  • Correct Pulse documentation to match implementation
  • Replace julianday() with strftime() in TraceStore latency metric
  • Correct access rule directionality, endpoint, and add priority scheme
  • Resolve React Flow zero-height error in topology tab
  • Surface API errors in MeshPanel and harden MeshCore init
  • Aggregate manifest reporter counts per spec file, not per test case
  • Wire live health data into Mesh topology graph and fix aggregate SQL boundary
  • Support array subjectPrefix in Relay and wire adapter context builder
  • Fix 7 critical wiring bugs in Relay convergence implementation
  • Resolve four completion gaps in Pulse scheduler — runs now correctly persist state, handle timeouts, and clean up on cancellation
  • Declare runtime env vars in turbo.json globalPassThroughEnv
  • Fix docs search, add blog footer and TOC sidebar

[0.3.0] - 2026-02-18

Added

  • Add Pulse scheduler for autonomous cron-based agent jobs with web UI, REST API, MCP tools, and SQLite persistence
  • Add runtime tunnel toggle with QR code sharing from the sidebar
  • Add blog infrastructure with Fumadocs
  • Add ADR draft/archived lifecycle with daily auto-curation and auto-extraction from specs
  • Add context builder for SDK system prompt injection
  • Add activity feed hero and marketing page sections

Changed

  • Refactor agent-manager to use modular context-builder pattern
  • Redesign landing page with new hero variants and content sections
  • Complete documentation overhaul — fill all stubs, add concepts section, rewrite stale guides

[0.2.0] - 2026-02-17

Breaking change: The default server port changed from 6942 to 4242. Update any hardcoded port references in scripts, reverse proxies, bookmarks, or DORKOS_PORT environment variables.

Added

  • Add marketing website and documentation site with Fumadocs integration
  • Add logging infrastructure with request middleware and CLI integration
  • Add directory boundary enforcement for API endpoint security
  • Add versioning, release, and update system
  • Add git worktree runner (gtr) for parallel development workflows
  • Add persistent config file system at ~/.dork/config.json
  • Add ngrok tunnel integration for remote access
  • Add ESLint 9 and Prettier with FSD layer enforcement
  • Add Architecture Decision Records (ADR) system
  • Add TSDoc documentation standards for public API

Changed

  • Migrate client to Feature-Sliced Design architecture
  • Rename guides/ to contributing/ for self-documenting audience
  • Extract hardcoded values into centralized constants
  • Split oversized files into focused modules
  • Change default server port from 6942 to 4242
  • Centralize .env loading via dotenv-cli at monorepo root

Fixed

  • Fix shell eval error in release command backticks
  • Fix OpenAPI JSON generation for Vercel builds
  • Fix API docs generation when openapi.json is missing
  • Resolve React Compiler and ESLint warnings
  • Fix barrel and import paths after FSD migration

[0.1.0] - 2025-02-08

Added

  • Web-based chat UI for Claude Code sessions
  • REST/SSE API powered by the Claude Agent SDK
  • Tool approval and deny flows
  • AskUserQuestion interactive prompts
  • Slash command discovery from .claude/commands/
  • Cross-client session synchronization via file watching
  • Obsidian plugin with sidebar integration
  • ngrok tunnel support for remote access
  • OpenAPI documentation at /api/docs (Scalar UI)
  • CLI package (dorkos) for standalone usage
  • Keyboard shortcuts for navigation
  • Directory picker for working directory selection

On this page

[0.115.0] - 2026-10-15AddedChangedFixedNote for people upgrading[0.114.1] - 2026-10-14AddedChangedFixed[0.114.0] - 2026-10-13AddedChangedRemovedFixed[0.111.0] - 2026-10-12AddedChangedFixedSecurity[0.110.0] - 2026-10-12AddedChangedRemovedFixed[0.109.0] - 2026-10-11AddedChangedFixedSecurityNote for people upgrading[0.103.0] - 2026-10-10AddedChangedRemovedFixedSecurityNote for people upgrading[0.101.0] - 2026-10-08AddedChangedFixedSecurityNote for people upgrading[0.98.0] - 2026-10-05AddedChangedFixedSecurityNote for people upgrading[0.97.0] - 2026-10-03AddedChangedFixedSecurity[0.96.0] - 2026-10-03AddedChangedFixedSecurity[0.95.0] - 2026-10-01AddedChangedFixedSecurity[0.94.0] - 2026-09-30AddedChangedFixed[0.93.0] - 2026-09-29AddedChangedFixedSecurity[0.92.0] - 2026-09-29AddedChangedFixedSecurity[0.89.0] - 2026-09-28AddedChangedFixedSecurity[0.88.0] - 2026-09-27AddedChangedFixedSecurityNote for people upgrading[0.87.0] - 2026-09-27AddedChangedRemovedFixedSecurityNote for people upgrading[0.83.0] - 2026-09-24AddedChangedRemovedFixedSecurity[0.82.0] - 2026-09-23AddedChangedFixedSecurity[0.81.0] - 2026-09-22AddedFixedNote for people upgrading[0.76.0] - 2026-09-20AddedChangedRemovedFixedNote for people upgrading[0.75.1] - 2026-09-14Fixed[0.75.0] - 2026-09-14AddedChangedFixedSecurityNote for people upgrading[0.74.0] - 2026-09-07AddedChangedFixedSecurity[0.73.0] - 2026-09-03AddedChangedRemovedFixedSecurity[0.66.0] - 2026-08-29AddedChangedRemovedFixedSecurity[0.65.0] - 2026-08-26AddedChangedRemovedFixedSecurity[0.64.0] - 2026-08-24AddedChangedFixedSecurity[0.63.0] - 2026-08-22AddedChangedFixedSecurity[0.62.0] - 2026-08-18AddedChangedFixedSecurity[0.61.0] - 2026-08-17AddedChangedFixed[0.60.0] - 2026-08-16AddedChangedFixed[0.59.0] - 2026-08-12AddedChangedRemovedFixedSecurity[0.58.0] - 2026-08-06AddedChangedFixedSecurity[0.57.0] - 2026-08-03AddedChangedRemovedFixedSecurityNote for people upgrading[0.56.0] - 2026-07-22AddedChangedFixed[0.55.0] - 2026-07-22AddedChangedFixed[0.54.0] - 2026-07-21AddedChangedFixed[0.53.0] - 2026-07-20AddedChangedFixed[0.52.0] - 2026-07-20AddedChangedFixed[0.51.0] - 2026-07-17AddedChangedFixed[0.50.0] - 2026-07-17AddedChangedRemovedFixedSecurity[0.49.0] - 2026-07-14AddedChangedFixed[0.48.0] - 2026-07-13AddedChangedFixed[0.46.0] - 2026-07-12AddedChangedFixedSecurity[0.45.1] - 2026-07-09Fixed[0.45.0] - 2026-07-09AddedChangedRemovedFixedSecurity[0.44.0] - 2026-06-16AddedFixed[0.43.1] - 2026-06-13ChangedFixed[0.43.0] - 2026-06-11AddedChangedFixed[0.42.0] - 2026-06-05AddedChangedFixed[0.41.0] - 2026-04-15AddedChangedFixed[0.40.0] - 2026-04-14AddedChangedFixed[0.39.0] - 2026-04-12AddedChangedFixed[0.38.0] - 2026-04-11AddedFixed[0.37.0] - 2026-04-11AddedChangedFixed[0.36.0] - 2026-04-11AddedChangedFixed[0.35.0] - 2026-04-09AddedChangedFixed[0.34.1] - 2026-04-09Fixed[0.34.0] - 2026-04-08ChangedAddedChanged (other)Fixed[0.33.0] - 2026-04-05AddedChanged[0.32.0] - 2026-04-04AddedChangedFixed[0.31.0] - 2026-04-03AddedFixed[0.30.0] - 2026-03-31AddedChangedFixed[0.29.0] - 2026-03-30AddedChangedFixed[0.28.0] - 2026-03-30AddedChangedFixed[0.27.0] - 2026-03-28AddedChangedFixed[0.26.0] - 2026-03-28AddedChanged[0.25.0] - 2026-03-27AddedChangedFixed[0.24.0] - 2026-03-25AddedChangedFixed[0.23.0] - 2026-03-23AddedChangedFixed[0.22.0] - 2026-03-23AddedFixed[0.21.0] - 2026-03-23AddedFixed[0.20.0] - 2026-03-22AddedChangedFixed[0.19.0] - 2026-03-21AddedChangedFixed[0.18.0] - 2026-03-19AddedChangedFixed[0.17.2] - 2026-03-19ChangedFixed[0.17.1] - 2026-03-19AddedFixed[0.17.0] - 2026-03-18AddedChangedFixed[0.16.0] - 2026-03-18AddedFixed[0.15.0] - 2026-03-17AddedChangedFixed[0.14.0] - 2026-03-16AddedChangedFixed[0.13.1] - 2026-03-14Fixed[0.13.0] - 2026-03-14AddedChangedFixed[0.12.0] - 2026-03-13AddedChangedFixed[0.11.0] - 2026-03-11AddedChangedFixed[0.10.0] - 2026-03-11AddedChangedFixed[0.9.1] - 2026-03-10AddedFixed[0.9.0] - 2026-03-09AddedChangedFixed[0.8.0] - 2026-03-04AddedChangedFixed[0.7.0] - 2026-03-02AddedChangedFixed[0.6.0] - 2026-03-02AddedChangedFixed[0.5.0] - 2026-03-01AddedChangedFixed[0.4.0] - 2026-02-26AddedChangedFixed[0.3.0] - 2026-02-18AddedChanged[0.2.0] - 2026-02-17AddedChangedFixed[0.1.0] - 2025-02-08Added