Replace the compact right drawer with full-page tool tabs - #2752
Closed
brsbl wants to merge 10 commits into
Closed
Conversation
Both compact drawers could be engaged at once. Opening the sidebar while the right panel was open left the panel at data-state="shelf" and visible at x=110 while the page translated the other way to +320, so the panel sat on top of the displaced page and the thread was no longer reachable without backing out of two overlapping drawers. The earlier guard only hid the panel while it was closed, which is why this survived: an open panel has nothing to hide it when the sidebar takes over the page transform. Closing the panel on the sidebar's own visibility signal keeps exactly one drawer engaged and returns the user to the canonical thread page. Desktop is unaffected; the effect is gated on the compact drawer path.
Going full page translates the page inset fully off screen, which exposes the sidebar underneath. The sidebar trigger does not live in that inset: it sits in a position:fixed chrome layer at z-50, so it kept painting while the panel at z-0 slid under it. The trigger's PanelLeft glyph at x=18 and the panel's Info glyph at x=23 then drew on top of each other as one merged icon. Raising only the full page state above that layer restores occlusion. elementFromPoint(20, 24) now resolves to the shelf instead of the chrome. The 299px shelf state stays at z-0 so the chrome remains usable over the page, and no overlap exists there anyway: the shelf starts at x=110.
The stories drew a fake page header and grey placeholder blocks instead of bb, so they demonstrated the shelf geometry against something that does not exist in the product. They now mount the real ThreadSecondaryPanel with its real fixed tabs and thread metadata, over the real compact home behind it, so the shelf and full page states are shown against the surfaces they actually cover. Presentation follows the active tab exactly as the app derives it, so selecting Info collapses to the shelf and opening the file tab expands to full page.
CompactShelfTabs rendered the real ThreadSecondaryPanel inside a plain 299px box and labelled it "compact shelf". The panel was real but the shelf was not, and now that a real CompactSecondaryPanelShelf story exists the label pointed readers at the wrong thing. Renamed to PhoneWidthTabs and relabelled as what it is: the panel body at shelf width, isolating tab-strip behavior. The shelf story gains ManyTabs so overflow, truncation, and the pinned slot are also exercised inside the real shelf at real shelf geometry.
…to bb/compact-panel-full-page-tabs-thr_3f2n4iexkr
…to bb/compact-panel-full-page-tabs-thr_3f2n4iexkr
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
Stack outcome relative to
mainThe compact right panel no longer rises as a dimmed 92dvh bottom drawer. The stack replaces it with a right-side system: Info uses a compact shelf that translates the live page left, while every tool tab—including New Tab—expands from the right to a full-width surface. New Tab also selects and renders its own production content instead of leaving the prior Info content visible.
Layer 1 also contains the compact-home/recents redesign, sticky
Recentheader, left-sidebar shelf, route-progress feedback, cold-navigation placeholders, provider-health caching, and immutable provider-logo caching. This PR is the focused second layer that adds full-page non-Info tabs and fixes the New Tab selection/content transition.What was wrong in this layer
Layer 1 moved the right panel from the bottom drawer to a right shelf, but all tabs were still constrained to the shelf's 298.67px width. Selecting New Tab could change the tab strip without changing the rendered Info content, leaving file search and other tool surfaces without a usable phone-width canvas.
What changed
CompactSecondaryPanelShelf,ThreadSecondaryPanel,FilePreview,RootComposeCompactHome,SidebarProvider, andSidebarInsetcomposition; no substitute file markup or generic product wrapper remains.No wire changes;
HOST_DAEMON_PROTOCOL_VERSIONis unchanged.Screenshots
Chrome for Testing 151.0.7922.71, 393×852 at DPR 2, using the same dev database, route, viewport, interaction, and settled-content state.
Cumulative behavior versus
mainBefore is the stack merge base (
f4bbc2fe8); after is this PR head (6d031d265).main— New Tab in a dimmed bottom drawerThis layer's New Tab fix
Before is the final parent head (
04d18307f); after is this PR head (6d031d265).How you verified
top=68.17,width=393,height=783.83with an 80% black backdrop—the old bottom-drawer presentation.state=open,width=298.671875; headstate=full,width=393, withnew-tab-actionspresent after the content skeleton cleared.left=0; shelf translates the production page by-298.68px; Full page fills 393px; Many tabs selectssidebar.tsxand renders realFilePreviewcontrols.BB-Thread-ID: thr_wftu7bh9ez