Skip to content

Filter palette thread search by lifecycle - #3938

Open
brsbl wants to merge 9 commits into
bb/sidebar-thread-lifecycle-filters-thr_cevdspix6jfrom
bb/palette-thread-lifecycle-filters-thr_igw6sh3963
Open

brsbl wants to merge 9 commits into
bb/sidebar-thread-lifecycle-filters-thr_cevdspix6jfrom
bb/palette-thread-lifecycle-filters-thr_igw6sh3963

Conversation

@brsbl

@brsbl brsbl commented Sep 19, 2026

Copy link
Copy Markdown
Collaborator

Human comments

What was wrong

Palette thread search mixed saved drafts into ordinary threads and had no lifecycle selector. Its recent list could hide older drafts behind newer active threads.

What changed

  • Filter palette threads by Active, Drafts, and Archived, with Active selected by default.

  • Persist palette selection independently from the sidebar through palette.threadLifecycles, also documented for bb settings ui.

  • Fetch selected populations within server bounds and group results with six initial rows plus existing per-group Show more.

  • Load palette recent-query code only when thread search mode opens.

How you verified

  • Exact-source CI passed all 13 jobs at 85b3eed6c6d9a2d65345ec94a9af613ab0f7891f. Run
  • Boot measured 1683.3 KB raw / 413.4 KB Brotli against unchanged 1683.5 / 419.0 KB limits.
  • All 13 remote CI jobs passed on a2ff5dc900cb579d8b4c7450a3d36bb06f22e7dd. CI run
  • Earlier QA at a2ff5dc90: Chrome for Testing 153.0.8010.52 passed desktop/mobile filtering, persistence, keyboard, split actions, message anchors, and no-match checks.
  • Earlier source CLI checks confirmed lifecycle filtering precedes limits and counts; palette preferences remained independent of sidebar preferences.
Focused acceptance evidence and follow-up
  • Active-only startup made no draft/archive list request. Selected Drafts and Archived each requested their own lifecycle with limit=20.
  • Older drafts remained discoverable with 25 newer active fixtures. Initial rows were 6 for one group, 3 each for two, and 2 each for three.
  • Show more expanded only its group. Existing selection survived a filter change when its result remained available.
  • A draft-only search with limit 1 returned 1 of 9 drafts; excluded groups had totals of 0. Active/Archived returned 1 each with totals 25/8.
  • Palette selection survived reload and source CLI updates. Sidebar stayed Active throughout.
  • Keyboard access reached the filter. Desktop Escape returned focus to its trigger while keeping thread search open.
  • Open in split and Meta+Enter opened additional panes. A message result preserved searchMessageSeq: 42 during navigation.
  • Compact results had no shortcut chips. The empty result state offered no creation action.
  • Inherited compact drawer follow-up: Escape keeps the palette open but focus returns to BODY. Shared primitives remain unchanged, as requested by the coordinator.

Startup-only repair: the existing recent-query hook moved behind the palette mode's existing lazy boundary. Requests, cache keys, subscriptions, enablement, and stale time are preserved.

The screenshots below are historical evidence from the labeled revisions. They predate later A2 integrations and the startup-only repair; current-head screenshot freshness and user QA remain pending. No browser QA was repeated for this repair.

Compared the same synthetic fixture, route, query palette, light theme, and viewport at 2× density. Before: fc608d81b1402e9b3c59af589173a8a9489638dd. After: a2ff5dc900cb579d8b4c7450a3d36bb06f22e7dd, with all three lifecycles selected. Uploaded PNG bytes were verified against their public URLs.

Surface Before After
Desktop web · 1440 × 900 Before: desktop palette After: desktop palette lifecycle groups
Mobile web · 390 × 844 Before: mobile palette After: mobile palette lifecycle groups

BB-Thread-ID: thr_igw6sh3963

AGENT GENERATED

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