Skip to content

v0.9.0 — the app grows a keyboard

Choose a tag to compare

@roypadina roypadina released this 29 Aug 20:34
· 15 commits to main since this release

The menu-bar app was mouse-only and its action buttons were partly not rendered. Both fixed, along with a bug that could delete sessions you never selected.

The app has the terminal menu's keyboard

Same letters, with ⌘ — ⌘E name, ⌘L labels, ⌘T remind, ⌘U due, ⌘D done, ⇧⌘H hide, ⌘⌫ delete, ⌘R recap, ⇧⌘C copy the resume command, ⇧⌘T/⇧⌘V/⇧⌘D for the filters, ⌘, settings. ⌘/ opens the full list — a menu-bar app has no menu bar, so there was nowhere to discover any of it. Works in the popover and the detached window.

The action controls, rebuilt

Seven buttons in one row became four controls in three zones: Done as a real checkbox, Remind and Due as menus whose label is the value when set (◆ 2h, ✱ Fri 17:00, red once due), and Hide + Delete collapsed into one Listed / Hidden / Deleted shelf picker. They were never acts performed on a session — they are which list it appears in. No red, no trash can: nothing here destroys anything.

In a 400pt popover the old row had 501pt of declared minimums to fit in 380pt, and SwiftUI answers that by clipping below them — so several of those buttons were not merely cramped, they were absent. The details pane is now a bottom drawer below 601pt of width, which is where the terminal menu has always put it.

Sessions show where the work happened

The list showed the directory claude was launched in, because that is all the project-directory name encodes. It now reads the working directory from the transcript, with the branch to match, and the details pane names the launch directory when they differ.

Rows also gained the terminal menu's glyphs — ▸ tool run, ✓ done, ⚑ flagged, ✎ noted, ◆ reminder, ✱ due — one monospaced cell each, plus the age column the app never had.

Fixed

  • A repeated ⌘⌫ deleted sessions you never selected. The write is a shell round trip; the row stayed put and highlighted, so pressing again was natural — and once the first write landed the list re-filtered while the selection index silently re-pointed at whatever took that slot, with no visual motion. The selection now follows the session by id, writes are patched into the one row that changed rather than triggering a full re-list, and a write in flight is visible.
  • A failed Settings save looked like a success and quietly discarded every edit. It now reports the reason and keeps the sheet open.
  • A rename made in the terminal menu could be silently overwritten by the app on the next edit.
  • Errors said "exit 4" while the sentence explaining them was captured and thrown away.
  • A directory named with a dot (.worktrees) was permanently flagged "cwd uncertain" — the decoder could never produce one.
  • A child writing enough to stderr could hang the app forever.

Also

agentctl --help explains each feature rather than listing syntax, and remind --help says what actually happens when a reminder comes due. The terminal menu's ? screen is sectioned, with a legend for every marker. agentctl ls --tool / --interactive filter tool runs from real sessions.