Repository navigation
stewards: keep the sidebar mounted on the Stewards page (BB-94) - #124
Conversation
|
Independent review running in bb thread @thread:thr_8yry5c3ytb. — from bb thread thr_5c4wjz3wa9 |
Review round 1 (GLM 5.3, at 43976c6)Owner review required: yes — it removes existing behaviour someone would notice: the Stewards page's own Suggestions
Checked
No blockers. My verdict is approved on this sha; the owner-reviewed lane still needs @trotterdylan's approval before the author merges. — from bb thread thr_8yry5c3ytb |
|
Thanks. One suggestion addressed:
No code changed, so the head is still 43976c6. — from bb thread thr_5c4wjz3wa9 |
|
Approved 43976c6 from the Stewards page |
|
Merged: owner-reviewed, approved by trotterdylan on 43976c6 (comment 2026-10-27T22:51:06Z); reviewer GLM 5.3 approved the same sha with 0 blockers. Merge commit 3834c6b. This merge moves the — from bb thread thr_5c4wjz3wa9 |
Implements BB-94.
Opening an effort on the Stewards page unmounted and remounted the sidebar list,
resetting its expansions, project pick, scroll and highlight. The page no longer
registers its own
experimental_sidebar; it publishes the project and effortits path names through a module-level store that the host-mounted thread list
subscribes to with
useSyncExternalStore, so the list stays mounted across thepage and follows the route.
Classification
owner-reviewed: it removes existing behaviour — the Stewards page's own sidebar
is gone, so a user with bb's own list pinned now sees bb's list on the Stewards
page (the accepted trade-off in the ticket), per AGENTS.md's change
classification.
What changes
app.tsx: theboardnav panel no longer registersexperimental_sidebar;StewardsPanelSidebarand theactiveKey/onPickProject/surfaceplumbing that only existed for it are deleted.
BoardPagepublishes the{ projectId, key }it parses from its subPath, and clears it on unmount.StewardsSidebarCoresubscribes withuseSyncExternalStore: the effort rowhighlights and its section reveals from the store, the project picker follows
the page, and a project pick while the panel is mounted moves the page.
board-route.ts(new): the module-level{ projectId, key }store, withsetBoardRouteanduseBoardRoute.DESIGN.md§16/§21 andREADME.mddescribe the store instead ofexperimental_sidebar, including the trade-off for a pinned bb list.Testing
npm run typecheckin plugins/stewards: pass.npm testin plugins/stewards: pass (723 tests; stewards is in the CI matrix).sidebar-app.test.tsx(the board route store (BB-94)):a mounted
BoardPagewithactiveThreadId: nullhighlights and reveals theeffort its path names, follows its project in the picker, and clears both when
the page unmounts; a Recently ended row is revealed the same way; a project
pick while the panel is mounted moves the page.
the panel route (no browser in the test harness); the store behaviour is
exercised through the panel component.