Skip to content

Releases: pungme/superagent-desktop

1.7.24

Choose a tag to compare

@pungme pungme released this 01 Sep 18:58
The switch says what the Mac is doing, not "Off"

Text beside a checkbox is that checkbox's label — that is the convention
everywhere — so an unticked box with the word "Off" next to it reads as "the
Off option is not selected", which is the exact opposite of the truth. It was
misread that way on sight.

A verb has no such ambiguity: "Staying awake" or "Sleeps when idle" can only be
a description of what this Mac does. The input gets a real aria-label too,
since the visible text is now a readout rather than a name.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

1.7.23

Choose a tag to compare

@pungme pungme released this 01 Sep 18:37
A conversation keeps its own agent

Switching one conversation to Codex moved every conversation that had never
run. The provider was worked out lazily — the chat's own column, else the app's
current default — and switching a chat writes that default. So one switch
reached backwards into chats made weeks earlier and silently moved them, which
is how a Computer conversation from three weeks ago ended up on Codex and then
would not start.

A conversation's agent is decided when it is made and written down. The default
still follows your last choice, so the next NEW chat lands where you just were —
it just no longer touches the ones that already exist.

Three tests: a conversation records what it was made with, switching one leaves
the others alone, and one made afterwards gets the new default.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Superagent 1.7.22

Choose a tag to compare

@pungme pungme released this 01 Sep 17:15

An old conversation stops growing an unread dot on its own. A conversation's timestamp is read everywhere as "when something was last said here" — the sidebar sorts by it, Activity orders by it, and the unread dot compares it against when you last had the conversation open. But it was bumped every time the transcript was saved, and the window saves it back on opening a conversation, after a reload, and while a chat is kept alive in the background for work it left running. Nothing had been said; the row had merely been touched. So a conversation from three weeks ago climbed to the top of the list wearing a dot. The clock now moves only when the transcript actually changed.

The × on a conversation is reachable again. Hovering a conversation widens its branch chip to show the whole name, and a long one — add-codex-support-alongside-claude-code — filled the row and pushed the delete button out from under your pointer. The chip stops short of it now. Introduced in 1.7.21; sorry about that.

A process Codex leaves running shows up in the runs strip, the same as one from Claude Code.

Superagent 1.7.21

Choose a tag to compare

@pungme pungme released this 01 Sep 16:19

Codex runs alongside Claude Code, switchable per conversation. Each chat remembers which agent it is on, so one project can have a Claude conversation and a Codex one open at the same time.

The page stays where its pane is. A native pane is placed in the window's pixels while the app measures its slot in CSS pixels — the same number only at 100% zoom. Since ⌘+ and ⌘− are easy to hit by accident, a zoomed window drew the page up and to the left of its pane and smaller than it, by exactly the zoom factor, and nothing ever put it back. Three fixes: the conversion itself, a re-measure on every moment that moves a pane (resize, move, fullscreen, maximise, pinch-zoom, a display with a different scale), and a backstop that checks four times a second that the page is still where the pane is and corrects it if not — so a cause nobody has met yet heals in a quarter second.

Clearing a conversation actually empties it. It emptied the transcript the window reads but not the event log your phone replays from, so everything came back the moment a phone subscribed — and the rows actually taking the space stayed. It clears both now. And the conversation that works in the project folder can finally be cleared at all: it has no row of its own, so the action is on the project row, which is why the one conversation that grows forever was the one nothing could empty.

Drag a conversation to reorder it within its project. Branch rows are left alone — their place comes from git.

The unread dot survives quitting, and covers every project rather than only the one you are in.

Smaller: the branch chip on a conversation widens on hover instead of showing a tooltip, and Hide sits in the corner of the "running in background" strip.

Superagent 1.7.20

Choose a tag to compare

@pungme pungme released this 01 Sep 15:43

One line, and it is the one that has been wasting your time:

return { tree: getTree(), workspaceId: createWorkspace(groupId, name, path) }

Object properties are evaluated in order, so the project list was read before the project was created. The window was handed the sidebar as it looked a moment earlier — the project was in the database and not on screen. Adding it again showed the first one, because by then the list included it, and quietly made a second one at the same time.

That is the whole of "I had to add the folder twice". It is also why deleting sometimes took two goes, and why a project could appear twice in a group: the second add had made a real second project.

If you already have a duplicate, deleting one of them is safe — they are separate projects pointing at the same folder.

Nothing else is in this release. It is cut from 1.7.19 with only this change.

Superagent 1.7.19

Choose a tag to compare

@pungme pungme released this 01 Sep 13:27

Adding a project did nothing until you did it twice. The Computer, Chats, the dashboard and Settings are full-window surfaces that cover your projects completely, and the only thing that dismissed them was clicking a row in the sidebar. Creating a project made it the active one without leaving that surface — so the folder you added became the active project behind the screen that hides projects, and nothing appeared to happen. Adding it a second time looked like the fix; clicking the row the first attempt had already made was the actual fix. Every way of creating a project now leaves the surface, and a brand new project opens with a conversation in it rather than an empty pane.

The unread dot survives quitting the app. It was set by the chat component noticing a turn finish while you were looking elsewhere — which needs that component mounted, and it is only mounted for the project you are in. A conversation that moved in another project left no mark, and quitting counted as reading everything. Beside that flag there is now a durable mark: when you last had each conversation open, checked against the conversation's own timestamp. Every project, across restarts, and the same rule your phone uses — so the two now agree.

Drag a conversation where you want it. The order of a project's conversations was the order they happened to be made in and nothing could change it. Branch rows are left alone: their place comes from git, not from you.

Hide sits in the corner of the "running in background" strip instead of wrapping onto a line of its own underneath the jobs, where it read as a third job.

Superagent 1.7.18

Choose a tag to compare

@pungme pungme released this 01 Sep 12:44

Adding a folder to a group showed nothing. The new project became the active one and then sat there as an empty pane, because a project with no conversations has nothing to draw and clicking it deliberately does not create one. Adding a project is not looking at a project — it is asking to work on it — so it now opens with a conversation, and you land in it. Clicking a project you already have still never makes one.

The relay's daily usage is in Settings → Phone. "12 MB of 500 MB. Resets at midnight UTC," with a bar that reddens near the ceiling and a line saying what spends it: mirroring a page or the simulator, not the conversation. The relay has been sending this every megabyte for two days; the Mac was throwing it away. It matters because reaching that ceiling stops everything reaching the Mac, and until now the only symptom was your phone saying it could not find it.

Activity, in the sidebar. The same switch the phone has. Projects is the tree you know; Activity is every conversation on this Mac in one flat list, newest first, with the project as a subtitle. The tree answers "where is that conversation"; this answers "what happened while I was away".

Also: one reload button in the browser toolbar instead of two lookalikes, back/forward/reload drawn as icons rather than punctuation, and the iOS Simulator can be turned on its side.

Superagent 1.7.17

Choose a tag to compare

@pungme pungme released this 01 Sep 11:26

The reload button is a reload button. The browser toolbar had two circular arrows side by side: one reloaded the page, the other toggled whether the page reloads itself when Claude finishes a turn. Only a tooltip told them apart. There is one now. The behaviour stays and stays on by default — a page that refreshes itself when the agent finishes is the whole point of watching it work — and a right-click on the reload button turns it off.

Back, forward and reload are icons, not punctuation. They were ‹ › ⟳, characters drawn for a line of prose: hairline, three different sizes, three different weights. Three proper icons now, one stroke, one box.

A conversation you send to from your phone remembers itself. When a chat's session cannot be resumed — the file cleaned up, the app reinstalled — a fresh agent takes its place, remembering nothing while the transcript above it still shows everything. The Mac has always compensated by putting a recap of the last two dozen turns in front of your next message. That recap was built in the window, and a message from your phone never passes through it, so it arrived at an agent with no memory and no catch-up. It now lives on the one path both take.

Superagent 1.7.16

Choose a tag to compare

@pungme pungme released this 31 Aug 16:45

Writing in a project's own chat no longer moves it onto a branch. The Mac had two rules for which conversation cuts itself a copy of the project, and they disagreed. The window branches only a chat you opened with "+ New chat"; the companion could not see that rule, so it branched any chat that had no copy yet — and the conversation that lives in the project folder has no copy either, by definition. Sending a message from your phone therefore lifted that conversation out from under the project row, and the next tap on the project left an empty chat in its place. It looked, from the phone, like writing a message created a second chat. The rule now lives in one place and both surfaces read it.

Clicking a project opens its conversation. It never makes one. With no conversation in the folder it opens the project with none, and "+ New chat" is the only thing that starts one. Clicking a project to look at it used to leave an empty chat behind every time.

Your phone knows which conversation belongs to the folder. The chat list it receives now says which copy of the project each conversation is in, and which are still waiting to cut their branch — so tapping a project opens the folder's conversation rather than whichever was touched most recently, which on a project with branches was often the wrong one.

Pairing reaches the Mac again after you remove your last phone. The Mac only dials the relay while a phone is paired or being paired, and reopening the pairing sheet had stopped telling it to dial. The code on screen was real and the link was fine; there was simply nothing at the other end, which the phone reported as "Mac unreachable".

Superagent 1.7.15

Choose a tag to compare

@pungme pungme released this 31 Aug 14:45

Delete works, and branches have names

Deleting a chat sticks. Deleting your only conversation used to recreate one on the spot, so it looked like nothing happened. A project with no chats now stays that way — click the project row when you want one.

Delete from the row. Hover any conversation and there's an ×. If it has work you haven't kept, you're asked whether to keep it or throw it away first.

Deleting from your phone does the same thing. iOS was dropping the chat but leaving its copy of the project and its branch behind, so the Mac kept showing a row for a conversation that no longer existed.

Branches are named like names. Asking "can u fix this please and deploy" made a branch called exactly that. The politeness and filler are dropped and the name kept short — fix-deploy.

One row highlighted at a time. A chat that hadn't sent anything yet was mistaken for the folder's own conversation, so its row and the project row both lit up.