| author | |
| committer | |
| log | a0bf1eee48d1537ec38e0f1fa5243f10ffd4e870 |
| tree | 90a2b645f7bdaa4d310f12555354ead7890ef6d7 |
| parent | 44b49650170a76e6171642d6f8de946cf1d1c821 |
| signature | Signed by PGP key B5690EEEBB952194 |
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>3 files changed, 15 insertions(+), 6 deletions(-)
apps/mobile/src/features/threads/ThreadDetailScreen.tsx+2-1| ... | ... | @@ -474,11 +474,12 @@ export const ThreadDetailScreen = memo(function ThreadDetailScreen(props: Thread |
| 474 | 474 | } |
| 475 | 475 | if (pendingBackgroundWork !== null && contentPresentationKind === "ready") { |
| 476 | 476 | return { |
| 477 | kind: "waiting", | |
| 477 | kind: "background", | |
| 478 | 478 | label: pendingBackgroundWork.title, |
| 479 | 479 | accessibilityLabel: `${pendingBackgroundWork.title}: ${pendingBackgroundWork.items |
| 480 | 480 | .map((item) => item.label) |
| 481 | 481 | .join(", ")}`, |
| 482 | waiting: pendingBackgroundWork.waiting, | |
| 482 | 483 | }; |
| 483 | 484 | } |
| 484 | 485 | return null; |
apps/mobile/src/features/threads/floating-working-control.tsx+5-3| ... | ... | @@ -385,16 +385,18 @@ function FloatingStatusLabel(props: { |
| 385 | 385 | </StatusLabelRow> |
| 386 | 386 | ); |
| 387 | 387 | } |
| 388 | if (props.status.kind === "waiting") { | |
| 388 | if (props.status.kind === "background") { | |
| 389 | 389 | return ( |
| 390 | 390 | <StatusLabelRow |
| 391 | key="waiting" | |
| 391 | key="background" | |
| 392 | 392 | accessibilityLabel={props.status.accessibilityLabel} |
| 393 | 393 | className="gap-2" |
| 394 | 394 | onLayout={props.onLayout} |
| 395 | 395 | > |
| 396 | {/* A dev server can run for hours after the agent is done, so only work | |
| 397 | that will wake the agent gets the bolt. */} | |
| 396 | 398 | <SymbolView |
| 397 | name={{ ios: "bolt", android: "bolt" }} | |
| 399 | name={props.status.waiting ? { ios: "bolt", android: "bolt" } : "terminal"} | |
| 398 | 400 | size={13} |
| 399 | 401 | tintColorClassName="foreground" |
| 400 | 402 | type="monochrome" |
apps/mobile/src/features/threads/floating-working-status.ts+8-2| ... | ... | @@ -9,8 +9,14 @@ export type FloatingWorkingStatus = |
| 9 | 9 | | { readonly kind: "working"; readonly startedAt: string } |
| 10 | 10 | | { readonly kind: "syncing"; readonly label: string } |
| 11 | 11 | | { readonly kind: "compacting" } |
| 12 | // The turn settled while background work it started still runs. | |
| 13 | | { readonly kind: "waiting"; readonly label: string; readonly accessibilityLabel: string } | |
| 12 | // The turn settled while background work it started still runs. `waiting` | |
| 13 | // is false when only commands remain, such as a dev server: the agent is done. | |
| 14 | | { | |
| 15 | readonly kind: "background"; | |
| 16 | readonly label: string; | |
| 17 | readonly accessibilityLabel: string; | |
| 18 | readonly waiting: boolean; | |
| 19 | } | |
| 14 | 20 | // A task whose thread the server has not created yet: the worktree may |
| 15 | 21 | // still be checking out, so there is no turn to time. |
| 16 | 22 | | { readonly kind: "preparing"; readonly label: string } |