Skip to content

Show the pending-question glyph while a thread's runtime is active#864

Merged
SawyerHood merged 1 commit into
mainfrom
bb/thr_nuehv6qr47
Jul 23, 2026
Merged

Show the pending-question glyph while a thread's runtime is active#864
SawyerHood merged 1 commit into
mainfrom
bb/thr_nuehv6qr47

Conversation

@SawyerHood

Copy link
Copy Markdown
Collaborator

Summary

A thread blocked on AskUserQuestion keeps its runtime active for as long as the question is open. #828 made isRuntimeActive the top of resolveThreadListIndicator, so the spinner won that race every time and the CircleQuestion glyph became unreachable — the sidebar never showed that a thread was waiting on you.

Verified against real data rather than inferred: for thr_zqfgksiw39, pending interaction pint_h2mmtg9wpb (kind: user_question) was open from 1784843793813 to 1784843949375, and a screenshot taken at 1784843844010 — inside that window, with the thread at status: active / displayStatus: active — shows a spinner on the row.

This restores the pre-#828 ordering and demotes only the three ambient work signals below the spinner, which is the narrower fix #828 was reaching for:

# indicator
1 unread-error
2 waiting-for-input
3 working-draft
4 plan-mode
5 goal
6 runtime
7 workflow
8 background-agent
9 background-command
10 draft
11 unread-success

Net effect versus pre-#828 is only that workflow, background-agent, and background-command moved from above the spinner to below it.

Behavior reverted from #828

Both were asserted by tests #828 added, so those tests are rewritten here:

  • A thread working with an unsubmitted draft shows the shimmering pencil again, not the spinner.
  • A thread working in plan mode or with an active goal shows ListTodo/Target again, not the spinner. Both use animate-shine-icon, so the row still reads as working.

Test changes

9 tests across 5 files encoded #828's spinner-first order. The three "uses shared runtime precedence" tests (collapsed-section rollup, thread search, mobile recents) keep their fixtures and just flip which glyph wins — they still prove those surfaces defer to the shared helper. Added a ThreadRow test for the actual reported case: pending interaction + active runtime renders CircleQuestion.

Known gap (not addressed)

SplitPaneMiniMap (#862) replaces the entire trailing glyph slot for a thread open in a split, so a pending question there still shows no question mark.

Tests

  • pnpm exec turbo run test --filter=@bb/app --force — 283 files, 2079 tests passing
  • pnpm exec turbo run typecheck lint --filter=@bb/app — typecheck clean, lint 0 errors (151 pre-existing warnings)

🤖 Generated with Claude Code

A thread blocked on AskUserQuestion keeps its runtime `active` for as long
as the question is open, so ranking "runtime" first in
`resolveThreadListIndicator` made the spinner win every time and left the
CircleQuestion glyph unreachable in the sidebar.

Restore the pre-#828 ordering and demote only the three ambient work
signals — workflow, background-agent, and background-command — below the
spinner. That keeps #828's intent (the spinner beats work the row can't
otherwise explain) while attention states, working-draft, plan, and goal
sit above it again as they did before.

Co-Authored-By: Claude <noreply@anthropic.com>
@SawyerHood
SawyerHood merged commit 2ab682d into main Jul 23, 2026
10 checks passed
@SawyerHood
SawyerHood deleted the bb/thr_nuehv6qr47 branch July 23, 2026 22:20
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.

1 participant