Skip to content

feat(mobile): see an all-done summary when every agent finishes - #28380

Closed
ndycode wants to merge 2 commits into
pingdotgg:mainfrom
ndycode:live-activity-done-summary
Closed

ndycode wants to merge 2 commits into
pingdotgg:mainfrom
ndycode:live-activity-done-summary

Conversation

@ndycode

@ndycode ndycode commented Oct 31, 2026 •

Copy link
Copy Markdown

Problem

When every agent finishes, the Live Activity looks the same as when work is in progress. Nothing says you're done, and the Island still shows "Failed" text.

Change

When nothing is in flight, the Live Activity becomes a summary.

  • Header: "All done", or "Finished · 1 failed · 1 done". It shows on the Lock Screen and at the top of the expanded Island.
  • Leading thread: a failure leads, even when a completion is newer. Otherwise the newest finished thread leads. Tapping opens it.
  • Compact and minimal Island: just the octagon or the check.
  • VoiceOver: "All agents finished. Fix login redirect failed, Update snapshots is done".
  • Dismissal is unchanged. The relay already keeps finished rows for 15 minutes, then ends the activity. Changing that would be a relay behavior change.

Scope and approval

Stacked on #28233; please review the last commit. Proposed as a follow-up in #28232. Maintainer approval is pending. One widget file plus tests and showcase fixtures (agent-activity:all-done, agent-activity:done-with-failure).

Verification

  • (cd apps/mobile && vp test run --project unit src/widgets src/features/showcase src/features/agent-awareness): 54 passed. Each new test fails when its behavior is removed.
  • vp run typecheck, vp lint and vp fmt --check pass.

iOS 27 Simulator, iPhone 17 Pro. The Island shots are frames from device recordings. "Lock Screen" is the pulled-down cover sheet.

One failed, one done Before After
Compact
Expanded
Lock Screen
Two done Before After
Compact
Expanded
Lock Screen

Working, then one fails: the compact ›_ becomes the octagon, the Island expands to the summary, and tapping the card opens the failed thread.

Videos: working → failure · all done

Not checked:

  • Island taps: on the simulator, tapping the Island itself opened the thread list rather than the thread. The Lock Screen tap, which uses the same link, opened the right thread every time.
  • The in-place 0.3 s swap: the showcase restarts the activity per scene.
  • Real relay pushes, including the 15-minute end.
  • Always-On and a physical device.

Claude Opus 5.5 via Claude Code, run from T3 Code.

@github-actions github-actions Bot added vouch:unvouched Author is not yet trusted in the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Oct 31, 2026
@ndycode
ndycode marked this pull request as ready for review October 31, 2026 23:01
@coderabbitai

coderabbitai Bot commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between f3b7ba2 and f79315b.

Files selected for processing: 5
  • apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx
  • apps/mobile/src/features/showcase/stageShowcaseAgentActivity.test.ts
  • apps/mobile/src/features/showcase/stageShowcaseAgentActivity.ts
  • apps/mobile/src/widgets/AgentActivity.test.ts
  • apps/mobile/src/widgets/AgentActivity.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.

Walkthrough

The mobile showcase now supports named agent-activity fixtures. The Agent Activity widget classifies and sorts rows, derives status summaries, and uses revised layouts and accessibility descriptions.

Changes: Agent Activity Showcase and Widget

Layer / File(s) Summary
Fixture definitions and native request parsing
apps/mobile/src/features/showcase/showcaseAgentActivity.ts, apps/mobile/src/features/showcase/nativeShowcaseScene.ts
Named fixtures cover store, handoff, completion, failure, and individual phases. Native scene requests can include a fixture name, which defaults to store when it is missing or unrecognized.
Fixture-driven capture and staging
apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx, apps/mobile/src/features/showcase/stageShowcaseAgentActivity.ts, apps/mobile/src/features/showcase/stageShowcaseAgentActivity.test.ts, apps/mobile/src/features/showcase/showcaseCaptureModel.ts, apps/mobile/src/features/showcase/showcaseCaptureModel.test.ts, scripts/mobile-showcase-environment.ts
Capture builds activity rows from the selected fixture and passes a cancellation check to staging. Staging checks for cancellation and supplies a stale date when a row is stale. Thread routes remain in the agent-activity scene, and the showcase environment adds two settled thread records.
Widget phase status and row selection
apps/mobile/src/widgets/AgentActivity.tsx
Phase signals determine marks, status, ordering, counts, summaries, accessibility descriptions, and the selected deep link. Unknown phases resolve to stale.
Widget layouts and behavior tests
apps/mobile/src/widgets/AgentActivity.tsx, apps/mobile/src/widgets/AgentActivity.test.ts
Widget layouts display a hero row, additional rows, summaries, and hidden-thread counts. Tests cover sorting, stale and finished states, marks, counts, and accessibility.

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant NativeShowcaseScene
  participant ShowcaseCaptureCoordinator
  participant buildShowcaseAgentActivity
  participant stageShowcaseAgentActivity
  participant startAgentLiveActivity
  ShowcaseCaptureCoordinator->>NativeShowcaseScene: Read scene and fixture selection
  ShowcaseCaptureCoordinator->>buildShowcaseAgentActivity: Build activity rows from the selected fixture
  ShowcaseCaptureCoordinator->>stageShowcaseAgentActivity: Stage activity with a cancellation check
  stageShowcaseAgentActivity->>startAgentLiveActivity: Start activity with an optional stale date
Loading

Suggested reviewers: juliusmarminge, maria-rcks, t3dotgg

Merge Risk: Minimal · up to f7931

The reviewed changes are mergeable after normal checks; no demonstrated issue remains that requires a fix before merge.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title "feat(mobile): see an all-done summary when every agent finishes" matches the main change. The PR replaces the Live Activity presentation with a summary shown when no agents are in flight. T…
Description check Passed The description follows the Problem, Change, Scope and approval, and Verification structure of the template. It states the problem and the change clearly. It names the approval dependency: it says it …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title "feat(mobile): see an all-done summary when every agent finishes" matches the main change. The PR replaces the Live Activity presentation with a summary shown when no agents are in flight. The changeset also adds showcase fixtures and a phase-ranked thread summary in AgentActivity.tsx, which the title covers as part of the same feature. The title is a single, specific conventional-commit sentence.

Full details: Description check

Explanation

The description follows the Problem, Change, Scope and approval, and Verification structure of the template. It states the problem and the change clearly. It names the approval dependency: it says it is stacked on #28233 and that maintainer approval is pending, and it links the proposed follow-up in #28232. Verification lists the focused test command, the test count, and the typecheck, lint, and format results. It also gives before/after screenshots and recordings, and lists what it did not check. The description does not state a linked triaged bug issue or an approval comment, so the Scope and approval section is incomplete under the template. The template says a PR without maintainer approval needs a linked issue or discussion. The description also acknowledges approval is pending, so the gap is real but does not make the description largely incomplete.

Resolution

Consider linking the triaged issue or the discussion that records maintainer approval of direction and scope, with the approval comment. Note that approval is still pending. The description already names the stacked dependency on #28233 and the follow-up in #28232.

Finishing Touches
Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@ndycode
ndycode force-pushed the live-activity-done-summary branch from f3b7ba2 to f79315b Compare November 1, 2026 03:50
@t3dotgg

t3dotgg commented Nov 1, 2026

Copy link
Copy Markdown
Member

Note

🤖 GPT-6.1 Terra [1m] responding on behalf of Theo

Closing because there is no prior maintainer approval for changing the Dynamic Island summary and spoken thread list. Obtain agreement on that scope in Ideas before requesting reconsideration under the contribution policy. #3768 AgentActivity.tsx

@t3dotgg t3dotgg closed this Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL 500-999 changed lines (additions + deletions). vouch:unvouched Author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants