Skip to content

Filter active and archived palette results - #3938

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

brsbl wants to merge 37 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

Thread search could not narrow active and archived results or include archived threads before typing.

What changed

  • Filter Active and Archived results using the shared control and an independent synced palette preference.
  • Load bounded archived recents only when selected; preserve expansion, split opening, and message anchors.
  • Offer Active and Archived only; there is no Drafts filter or separate draft-thread API.

Palette-only queries retain the existing lazy boundary. Archived recents use explicit updated ordering through SDK threads.list({ sort: "updated" }) and CLI bb thread list --sort updated; omitted sort preserves existing ordering. SDK/CLI guides are updated.

How you verified

Current main integration

  • Candidate: 91020e66dd2a6a7f3dbb2afd13f5dfeb43100bb5, above sidebar parent 73692f4884d6fb8741b765c514c286b9b2bfb089.
  • Exact-head CI passed all 13 jobs after inheriting the sidebar’s background-only button focus treatment; no palette source changed.
  • PR merge-preview CI also passed.
  • Current-head CI passed the existing startup budget.
  • The closed saved-message search and draft-save guard layer is excluded from this stack.
  • Current-head palette user QA and refreshed screenshots are pending, after the sidebar layer. Evidence below is historical, not final-head verification.

Compact combined filter label

  • Selecting Active and Archived shows All on the trigger; individual options remain in the dropdown.
  • Chrome for Testing 153.0.8010.36: desktop and compact labels switch correctly between All, Active, and Archived.
  • Exact-source CI passed all 13 jobs. PR CI also passed.

Before: parent fa8c241c7eb1d3f9eec5b632a43786a70582b149 · After: b8d60aded25ec1ad1e15fd00b310e51f49c755bc · Same fixture, route, theme, viewport and 2× density. The parent has no palette filter, so before shows the preceding search view. Other comparison states below retain their historical pins. User QA remains pending.

State Before After
Desktop · 1440×900 Before desktop All filter Open before After desktop All filter Open after
Mobile · 390×844 Before mobile All filter Open before After mobile All filter Open after

Prior filter wording evidence

  • Heading, compact drawer title, and accessible names now use Filter.
  • Chrome for Testing 153.0.8010.36: desktop and compact copy verified at 8f26f24a27966f5de8ac39add0ff4665b426c556.
  • Prior wording CI passed. Exact-source CI also passed. No selection or preference behavior changed.

These are prior-head after captures at 2×, not a replacement for the historical comparison tables below. The complete exact-parent/head comparison refresh and user sign-off remain pending.

Current after state Screenshot
Desktop · 1440×900 Filter menu Open image
Compact · 390×844 Filter drawer Open image
  • Exact-source CI passed all 13 jobs at 744fd8ac5b0e59c6c0b497ea48e60be42a852ae1; PR CI passed.
  • Chrome for Testing 153.0.8010.36 passed saved-message matching, selection, persistence, independent preferences, and compact checkmark behavior.
  • Chrome for Testing 153.0.8010.36 passed current-source saved-message search and selection on desktop/compact; the selected owning thread opened.

Startup is 1679.7 KB raw / 412.7 KB Brotli, within unchanged limits. Source SDK/CLI archived ordering passed. The live server returns only Active/Archived groups and normalizes older Drafts preferences to Active.

Review and follow-ups

The cumulative Slop Cop review covered 963171ce1f38032e34bdd41c17a7454815504174..723fe1c753f7249d45c604b017f78a8b237e53e6: no P0/P1 findings. Subsequent approved changes remove draft classification and make recent ordering explicit. No second review ran.

Slim PR retained shared filter items and the existing lazy query boundary. Sidebar pagination and bounded palette recents remain separate because they serve different loading behavior. The archive-only hook now states its actual scope; no generic lifecycle query remains.

The inherited compact filter can return focus to BODY while keeping the palette open. User QA is pending; native iOS Safari remains unverified. Nothing merged.

Screenshot evidence

These screenshots retain their original revision pins. Current-head evidence refresh remains pending after the approved nonvisual lifecycle cleanup.

Before: 4b4bc3aaeccbfda7b5d832c6a586b43d60dedaaa · After: a5d91b15ad40308e5911c75a7d494a7e3ddd525b · 2× PNGs.

Same fixture, route, theme, and viewport. Before has no filter or archived recents, so those rows show the preceding search view. Saved-message indexing is already present in the parent.

Screen / state Viewport Before After
Before typing · Active and Archived Desktop · 1440×900 Before Before typing · Active and Archived Open before After Before typing · Active and Archived Open after
Filter · Active selected Desktop · 1440×900 Before Filter · Active selected Open before After Filter · Active selected Open after
Matching saved messages · Juniper Desktop · 1440×900 Before Matching saved messages · Juniper Open before After Matching saved messages · Juniper Open after
Archived only · before typing Desktop · 1440×900 Before Archived only · before typing Open before After Archived only · before typing Open after
Before typing · Active and Archived Mobile · 390×844 Before Before typing · Active and Archived Open before After Before typing · Active and Archived Open after
Filter · Active selected Mobile · 390×844 Before Filter · Active selected Open before After Filter · Active selected Open after
Matching saved messages · Juniper Mobile · 390×844 Before Matching saved messages · Juniper Open before After Matching saved messages · Juniper Open after
Archived only · before typing Mobile · 390×844 Before Archived only · before typing Open before After Archived only · before typing Open after

BB-Thread-ID: thr_igw6sh3963

AGENT GENERATED

…o bb/palette-thread-lifecycle-filters-thr_igw6sh3963

# Conflicts:
#	docs/configuration.md
…o bb/palette-thread-lifecycle-filters-thr_igw6sh3963
…o bb/palette-thread-lifecycle-filters-thr_igw6sh3963
@brsbl brsbl changed the title Filter palette thread search by lifecycle Filter active and archived palette results Sep 21, 2026
@brsbl
brsbl removed this pull request from stack #3934 September 21, 2026 04:59
@brsbl
brsbl added this pull request to stack #3980 September 21, 2026 04:59
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