Skip to content

Agent: distinguish sidebar task activity states - #1213

Merged
AnthonyRonning merged 4 commits into
masterfrom
ux/sidebar-status
Oct 31, 2026
Merged

AnthonyRonning merged 4 commits into
masterfrom
ux/sidebar-status

Conversation

@doowta

@doowta doowta commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Tasks waiting on a question previously looked the same as running tasks, and an unseen failure had no sidebar marker. This change gives those states distinct indicators across connected computers.

  • Waiting for an answer: coral dot.
  • Running: coral ring with a breathing center.
  • Failed while unseen: red alert icon.
  • Completed while unseen: green dot.

Markers clear when their task is seen, archived or deleted; cancellation adds no marker. Question resolution restores the appropriate running state. The activity model preserves current paging, task placement and bounded navigation snapshots.

Validation:

  • Formatting and all-targets app Clippy passed in the pinned macOS environment.
  • Retained regressions for question priority and resolution, failed/unread lifecycle, and identical task IDs on different computers.
  • GitHub CI passed on this head: agent-lint, agent-test, agent-macos, agent-windows and ci-ok.

Stack: layer 2 of 2, based on #1373 (sidebar-spacing). Layout and cross-computer task controls are reviewed in the lower layer. The four original indicator commits remain separate, with their authorship preserved.

In each image, one task waits on a question and the other is running.

Sidebar rows Indicators (zoomed) Recording
Before Two rows with identical spinners Identical spinners, zoomed Recording, before
After Coral ring for running, coral dot for waiting Ring and dot, zoomed Recording, after

Scroll sideways to compare. Click an image for full size.

Full-size images Two rows with identical spinners Identical spinners, zoomed Recording, before Coral ring for running, coral dot for waiting Ring and dot, zoomed Recording, after

@doowta
doowta marked this pull request as draft October 22, 2026 16:02
@doowta doowta changed the title Agent: show which sidebar tasks wait on you, run, or failed Proposal: show which sidebar tasks wait on you, run, or failed Oct 22, 2026
@marksftw

Copy link
Copy Markdown
Collaborator

I'm picking this up to work on it.

@marksftw marksftw self-assigned this Oct 29, 2026
@marksftw
marksftw changed the base branch from master to sidebar-spacing October 29, 2026 21:23
@marksftw
marksftw added this pull request to stack #1375 October 29, 2026 21:23
@marksftw

Copy link
Copy Markdown
Collaborator

Video of it implemented.

maple-activity-indicator.mov

doowta and others added 4 commits October 29, 2026 17:32
A task paused on an ask_user question looked the same as one still
running, and a run that failed off screen left no trace in the list.
The row indicator now has four states: a coral dot while a question
waits, the spinner while a run goes, an alert once a run failed
unseen, and the green dot once one completed unseen.

The screen pushes them as one TaskActivity. A question outranks the
run it paused; a run outranks how the previous one ended. The failed
marker follows the unread one: a failure off screen sets it, opening
or archiving the task clears it, and a stop sets nothing. Questions
arriving, answered, skipped, resolved, or dropped with their run now
update the row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The turning arc steps visibly at the shared clock's low frame rate. A
running task's row now shows a coral ring whose center dot fades in and
out on that same clock, which reads as smooth at the same cost. Only
the sidebar row changes; the loading spinner elsewhere stays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rows for another computer's tasks only knew running and unread, so a
task waiting on a question or one that failed looked idle there. The
computer snapshot now carries the same task activity as this
computer's sidebar, and a question arriving or going away refreshes
it.

Deleting a task or archiving its project also left a failed marker
behind, so both now clear it along with the unread one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Archiving a project clears its tasks' unseen markers, but no test
checked the failed one, or that another project's markers stay. The
project removal test now seeds both markers in each project and checks
both sides. The queued questions test also checks the sidebar row goes
from needs-you to idle once the last question is answered, like the
skip test does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@marksftw marksftw changed the title Proposal: show which sidebar tasks wait on you, run, or failed Agent: distinguish sidebar task activity states Oct 29, 2026
@marksftw
marksftw marked this pull request as ready for review October 29, 2026 22:42
@AnthonyRonning
AnthonyRonning removed this pull request from stack #1375 October 31, 2026 01:33
Base automatically changed from sidebar-spacing to master October 31, 2026 01:33
@AnthonyRonning

Copy link
Copy Markdown
Contributor

Approving. Thanks Michael and Mark. Telling "needs you" apart from "running" at a glance is a real improvement.

I tested it the way it merges now: current master (with #1373) plus this PR, against master, using real builds, the Pro test account and a second computer paired as agent-mac.

Sidebar task states before and after

Seen live:

  • Waiting on a question: a coral dot, on a local task and an agent-mac task at the same time. On master both showed the running spinner.
  • Running: the coral ring.
  • Finished while unseen: a green dot, local and on agent-mac. Opening the task cleared it.
  • Failed: I couldn't make a run fail locally (model calls still succeeded with the local proxy and API stopped), so the red marker is covered by the PR's tests only.

The code is UI only: no protocol, settings or persisted-state changes. The breathing ring uses the same shared clock the spinner used, so idle repaint cost is unchanged. Clippy and all 1,175 app tests pass on the merged tree.

Not blocking, noted in case they come up later

  1. Paired computer offline: when it drops offline, its rows keep their last markers until it reconnects. That includes a "needs you" dot you can't answer yet. Running already behaved this way.
  2. Selected task: a task that finishes or fails while it's the one selected gets no marker, even if Maple is behind another window (visible && selected). This matches how completed works today.
  3. Screen readers: the indicator has no label, so VoiceOver can't tell the states apart. This was already true for running and unread; the PR adds two more states.
  4. Same color for two states: "needs you" and "running" share the coral color. With motion paused (Reduce Motion or an inactive window), the ring rests close to the dot at sidebar size. Worth a look in dark mode.
  5. Untested path: no test covers answering a question locally (answer_question) putting the task back to running.

🤖 Generated with Claude Code

@AnthonyRonning AnthonyRonning left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved; details and screenshot in the comment above.

@AnthonyRonning
AnthonyRonning merged commit 7819243 into master Oct 31, 2026
21 of 40 checks passed
@AnthonyRonning
AnthonyRonning deleted the ux/sidebar-status branch October 31, 2026 20:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants