Filter and restore archived sidebar threads - #3933
Merged
Merged
Conversation
…ar-thread-lifecycle-filters-thr_cevdspix6j
…ar-thread-lifecycle-filters-thr_cevdspix6j
…ar-thread-lifecycle-filters-thr_cevdspix6j
brsbl
added this pull request to stack #3934
September 19, 2026 03:52
This was referenced Sep 19, 2026
brsbl
removed this pull request from stack #3934
September 21, 2026 04:59
brsbl
changed the base branch from
bb/draft-lifecycle-thr_82jtfaq8eq
to
main
September 21, 2026 04:59
brsbl
added this pull request to stack #3980
September 21, 2026 04:59
brsbl
deleted the
bb/sidebar-thread-lifecycle-filters-thr_cevdspix6j
branch
September 21, 2026 23:00
brsbl
added a commit
that referenced
this pull request
Sep 22, 2026
## 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 through the shared dropdown; selecting both shows All. - Fetch up to 20 recently archived threads before typing, only when Archived is selected. - Remember the palette filter locally, independently of the sidebar, without a new filtering API. Archived recents use existing most-recently-archived ordering. Typed search, expansion, split opening, and message anchors retain their existing contracts. Palette queries remain lazy-loaded. No SDK, plugin API, server contract, CLI, or database changes. ## How you verified - Candidate `bb2024ca6cd9808d55715e13d2554132237b0ec3` on merged main `46f0c8eb7168e05a087a62a1100c8f35cce9afa9`. - [Exact-source CI](https://github.com/get-bb/bb/actions/runs/35665673844): all 13 jobs passed. [PR CI](https://github.com/get-bb/bb/actions/runs/35665677434): passed. - Chrome for Testing 153.0.8010.52 passed desktop/compact filtering, 6/3 cutoffs, expansion, no matches, and keyboard result navigation. - Reload retained the palette selection independently of the sidebar. Compact hides split shortcuts and keeps the palette open after Filter Escape. ### Review and user QA The earlier cumulative source review found no P0/P1 findings; no repeat review ran. Slim PR keeps shared filter items and the lazy query boundary. Only documentation conflicts needed resolution after #3933 merged. User QA is pending. The inherited compact filter can return focus to BODY while keeping the palette open. Native iOS Safari is unverified. Saved-message indexing and draft-save guards remain excluded. ## Screenshot evidence Before: main `46f0c8eb7168e05a087a62a1100c8f35cce9afa9` · After: `bb2024ca6cd9808d55715e13d2554132237b0ec3` · 2× capture density. Same isolated fixture, route, light theme, viewport, and scroll. Before has no filter or archived recents, so those rows show the preceding search view. Two synthetic titles retain an “archived” suffix after the restoration check; they are active in both revisions. Relative timestamps advance naturally between captures. | Screen / state | Viewport | Before | After | | --- | --- | --- | --- | | Before typing · Active | Desktop · 1440×900 | [](https://github.com/user-attachments/assets/53f423fe-b698-496a-ae2d-eef0e5e35330) [Open before](https://github.com/user-attachments/assets/53f423fe-b698-496a-ae2d-eef0e5e35330) | [](https://github.com/user-attachments/assets/a0e5bc99-8047-4d43-9d84-d390894f861e) [Open after](https://github.com/user-attachments/assets/a0e5bc99-8047-4d43-9d84-d390894f861e) | | Filter dropdown | Desktop · 1440×900 | [](https://github.com/user-attachments/assets/53f423fe-b698-496a-ae2d-eef0e5e35330) [Open before](https://github.com/user-attachments/assets/53f423fe-b698-496a-ae2d-eef0e5e35330) | [](https://github.com/user-attachments/assets/8eb33479-a23e-4800-9f91-7a691ed9e14e) [Open after](https://github.com/user-attachments/assets/8eb33479-a23e-4800-9f91-7a691ed9e14e) | | Before typing · All | Desktop · 1440×900 | [](https://github.com/user-attachments/assets/53f423fe-b698-496a-ae2d-eef0e5e35330) [Open before](https://github.com/user-attachments/assets/53f423fe-b698-496a-ae2d-eef0e5e35330) | [](https://github.com/user-attachments/assets/827f65d4-3849-4c75-bea4-35b618294d9c) [Open after](https://github.com/user-attachments/assets/827f65d4-3849-4c75-bea4-35b618294d9c) | | Before typing · Archived | Desktop · 1440×900 | [](https://github.com/user-attachments/assets/53f423fe-b698-496a-ae2d-eef0e5e35330) [Open before](https://github.com/user-attachments/assets/53f423fe-b698-496a-ae2d-eef0e5e35330) | [](https://github.com/user-attachments/assets/21f62372-5954-42b0-83c8-5d011561ebf5) [Open after](https://github.com/user-attachments/assets/21f62372-5954-42b0-83c8-5d011561ebf5) | | Matching results · All | Desktop · 1440×900 | [](https://github.com/user-attachments/assets/49781f08-1ee4-454f-b1cb-4c4fedce9076) [Open before](https://github.com/user-attachments/assets/49781f08-1ee4-454f-b1cb-4c4fedce9076) | [](https://github.com/user-attachments/assets/94857651-3f40-4e3a-894c-7e68c8ae406c) [Open after](https://github.com/user-attachments/assets/94857651-3f40-4e3a-894c-7e68c8ae406c) | | No matches | Desktop · 1440×900 | [](https://github.com/user-attachments/assets/d3b6c680-6ba5-4548-900e-b37c61b33ca1) [Open before](https://github.com/user-attachments/assets/d3b6c680-6ba5-4548-900e-b37c61b33ca1) | [](https://github.com/user-attachments/assets/b1b3bdff-8d8f-421b-9d84-df9bee33baea) [Open after](https://github.com/user-attachments/assets/b1b3bdff-8d8f-421b-9d84-df9bee33baea) | | Before typing · Active | Mobile · 390×844 | [](https://github.com/user-attachments/assets/dadb7538-9c52-4e89-92a4-1de544ab28ae) [Open before](https://github.com/user-attachments/assets/dadb7538-9c52-4e89-92a4-1de544ab28ae) | [](https://github.com/user-attachments/assets/32941ca6-ca11-4140-a45c-9406925edfaf) [Open after](https://github.com/user-attachments/assets/32941ca6-ca11-4140-a45c-9406925edfaf) | | Filter dropdown | Mobile · 390×844 | [](https://github.com/user-attachments/assets/dadb7538-9c52-4e89-92a4-1de544ab28ae) [Open before](https://github.com/user-attachments/assets/dadb7538-9c52-4e89-92a4-1de544ab28ae) | [](https://github.com/user-attachments/assets/1d586ba8-5f34-46ba-9147-c99145e6e3ed) [Open after](https://github.com/user-attachments/assets/1d586ba8-5f34-46ba-9147-c99145e6e3ed) | | Before typing · All | Mobile · 390×844 | [](https://github.com/user-attachments/assets/dadb7538-9c52-4e89-92a4-1de544ab28ae) [Open before](https://github.com/user-attachments/assets/dadb7538-9c52-4e89-92a4-1de544ab28ae) | [](https://github.com/user-attachments/assets/126cabfe-b028-4844-ac5a-57ffaf4a8523) [Open after](https://github.com/user-attachments/assets/126cabfe-b028-4844-ac5a-57ffaf4a8523) | | Before typing · Archived | Mobile · 390×844 | [](https://github.com/user-attachments/assets/dadb7538-9c52-4e89-92a4-1de544ab28ae) [Open before](https://github.com/user-attachments/assets/dadb7538-9c52-4e89-92a4-1de544ab28ae) | [](https://github.com/user-attachments/assets/589eb063-ca3f-4024-ad56-7173f71f72ad) [Open after](https://github.com/user-attachments/assets/589eb063-ca3f-4024-ad56-7173f71f72ad) | | Matching results · All | Mobile · 390×844 | [](https://github.com/user-attachments/assets/43f3b665-be2c-4d2a-a16a-e60828f7ebe3) [Open before](https://github.com/user-attachments/assets/43f3b665-be2c-4d2a-a16a-e60828f7ebe3) | [](https://github.com/user-attachments/assets/2e6d19a4-4acc-4f7c-9510-f094598063f0) [Open after](https://github.com/user-attachments/assets/2e6d19a4-4acc-4f7c-9510-f094598063f0) | | No matches | Mobile · 390×844 | [](https://github.com/user-attachments/assets/f114111c-a460-4f08-be8e-974f9171e03e) [Open before](https://github.com/user-attachments/assets/f114111c-a460-4f08-be8e-974f9171e03e) | [](https://github.com/user-attachments/assets/234d6406-a438-4d8f-bf01-7cd3ef268820) [Open after](https://github.com/user-attachments/assets/234d6406-a438-4d8f-bf01-7cd3ef268820) | BB-Thread-ID: thr_igw6sh3963 > AGENT GENERATED
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human comments
What was wrong
Archived threads were absent from the sidebar hierarchy and could not be restored directly from their rows.
What changed
Keyboard focus uses the shared thin ring. Menu contents and customization remain lazy-loaded within the existing startup budget.
How you verified
73b10b3b38ab769ccc505daa110f22f0d76772d0, based one06c73571506052b5543472a494def311f3724a3.Whole-build verification is complete at
73b10b3b38. Historical comparisons retain their actual SHAs below; the final slimming commit changes tests only.Review and follow-ups
The explicitly requested #3933 Slop Cop source review at
c2f3cbd1bfound zero P0/P1 and three P2 follow-ups. Security and performance found none; architecture and correctness findings were deduplicated.These P2s were recorded, not implemented. The known compact-menu owner-removal focus issue and native iOS verification gap remain.
Slim PR removes 130 net test lines across three files by consolidating menu/filter transitions and duplicate rollback coverage. Restore, hierarchy metadata, paging, local persistence, cold keyboard loading, and compact navigation remain covered. Production code and public APIs are unchanged by this pass.
Earlier sidebar user QA was approved at
3fc3fdbc4. The user explicitly authorized merging #3933 after final validation.Historical keyboard-focus evidence
Before: main baseline
699f2f1a8bfb0f22337ec30a0d5d53548baf56b9· After:706650ed60db0de8710a512fbd13cd3d31095907. Same fixture, route, focus target, scroll, theme, viewport and 2× density; full viewport, no cropped upper context. Mobile is compact web with hardware-keyboard focus, not native iOS.Historical sidebar filter and hierarchy evidence
Before: main baseline
699f2f1a8bfb0f22337ec30a0d5d53548baf56b9· After:706650ed60db0de8710a512fbd13cd3d31095907. Same synthetic fixture, route, light theme, viewport and 2× density. Main has no Filter submenu, so those before images show its preceding combined menu. Archived comparisons show main’s active hierarchy with the same stored archived threads.BB-Thread-ID: thr_cevdspix6j