Skip to content

Move split-view maps into sidebar status slots#862

Merged
brsbl merged 2 commits into
mainfrom
bb/move-splitview-icon-thr_cfzadac59y
Jul 23, 2026
Merged

Move split-view maps into sidebar status slots#862
brsbl merged 2 commits into
mainfrom
bb/move-splitview-icon-thr_cfzadac59y

Conversation

@brsbl

@brsbl brsbl commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Move thread split mini-maps into the trailing status slot.
  • Shimmer split maps whenever native or plugin work is active without losing higher-priority status semantics.
  • Place non-thread split maps directly beside their labels.
  • Add focused regression tests and Ladle acceptance stories.

Validation

  • pnpm exec turbo run test --filter=@bb/app -- --run src/lib/thread-activity.test.ts src/components/sidebar/ThreadRow.test.tsx src/components/sidebar/SidebarThreadSearchPanel.test.tsx src/components/plugin/plugin-slot-mounts.test.tsx src/components/sidebar/SplitPaneMiniMap.test.tsx — 150 passed.
  • pnpm exec turbo run typecheck --filter=@bb/app — passed.
  • git diff --check origin/main...HEAD — passed.
  • Independent P0–P2 review — SHIP.

Final candidate: 22bfd4f68605854c8e16aa68770b6e9709824e94.

Final-candidate visual evidence

  • Isolated bb desktop: opened the real thread row action menu, selected Open in split, and verified the mini-map in the sidebar row's trailing slot.
  • Ladle thread state: verified idle and working/shimmer states in light and dark themes, including accessible status names.
  • Ladle non-thread state: verified New thread and plugin page mini-maps directly beside their labels in light and dark themes.
  • Five distinct artifacts are recorded in the release thread with SHA-256 digests in evidence-manifest-22bfd4f68.json.

@brsbl
brsbl marked this pull request as ready for review July 23, 2026 01:03
@brsbl
brsbl merged commit 9e9f000 into main Jul 23, 2026
10 checks passed
@brsbl
brsbl deleted the bb/move-splitview-icon-thr_cfzadac59y branch July 23, 2026 01:03
SawyerHood added a commit that referenced this pull request Jul 23, 2026
)

## 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](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
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