fix(client): keep the right-sidebar tab's own scroller on dsh 0.1.7+

The 0.1.7 sidebar wraps every tab body in a definite-height `.tabBody`
whose `overflow: hidden` clips the grown tab root out of reach, while the
dockkit pane body above it never sees the overflow — the Context pane in
the right Sidebar could not scroll at all. The sidebar-scoped root now
keeps its own scroller (the shared `height: 100%` + `overflow-y: auto`
chrome, inset aside): the height resolves against the 0.1.7 tab body or
the 0.1.5 pane body alike, and degrades to the pane scrolling wherever
neither height resolves — one scroller either way.
This commit is contained in:
bowenliang123 committed 2026-09-25 03:49:50 +08:00
1 parent cbf02e1524
commit 0f9d2fba2f
2 files changed
+16 -11

No files matched your search

+3 -2
View File
@@ -2,8 +2,9 @@
* Scroll an element's nearest scrollable ancestor so the element tops that
* scrollport. The jump's landing reveal needs this host-agnostic: the
* conversation tab scrolls the shared `[data-conversation-scroll]` container
* while the right Sidebar scrolls dockkit's pane body (a CSS-module class,
* no stable attribute of its own), so the walk takes whichever ancestor
* while the right Sidebar's scroller differs per generation (dockkit's pane
* body — a CSS-module class with no stable attribute — on the 0.1.5 line, the
* tab root itself on the 0.1.7 line), so the walk takes whichever ancestor
* actually scrolls — the rect delta lands the anchor flush regardless of the
* container's current position. `document.body` ends the walk: the page
* itself never scrolls. False — never a throw — when no ancestor scrolls (the
+13 -9
View File
@@ -8,17 +8,21 @@
*/
.lc-root { padding: 16px 20px 32px; overflow-y: auto; height: 100%; box-sizing: border-box; color: var(--dsw-alias-label-primary); font-size: 13px; }
/*
Right Sidebar panel (dsh 0.1.5-rc.1+): the dockkit pane body scrolls and
its `.pane` clips overflow — so the tab root drops its own scroller and lets
the pane own both. The body draws NO padding of its own (dockkit leaves each
tab its own insets), so the root keeps a 12px frame on all four sides — the
harness's own body inset — instead of the wide shared chrome. Scoped by the
panel's own markers, which exist only inside the right column (the open panel
and the float host that carries a tab dragged out of it); the conversation tab
and the /context modal are unaffected.
Right Sidebar panel (dsh 0.1.5-rc.1+): the body draws NO padding of its own
(dockkit leaves each tab its own insets), so the root keeps a 12px frame on
all four sides — the harness's own body inset — instead of the wide shared
chrome. The root KEEPS its own scroller: the 0.1.5 line renders the tab
straight into the scrolling dockkit pane body, while the 0.1.7 line wraps it
in a definite-height `.tabBody` whose `overflow: hidden` would clip a grown
root out of reach — `height: 100%` resolves against whichever definite-height
host the running generation provides (and degrades to the root growing under
an auto-height one, where the pane scrolls instead: one scroller either way).
Scoped by the panel's own markers, which exist only inside the right column
(the open panel and the 0.1.5 float host that carries a tab dragged out of
it); the conversation tab and the /context modal are unaffected.
*/
[data-sidebar-right-open] .lc-root,
[data-sidebar-right-float-host] .lc-root { height: auto; overflow: visible; padding: 12px; }
[data-sidebar-right-float-host] .lc-root { padding: 12px; }
/* The Context tab chip's emblem: held at its drawn size in the title's flex
line (dockkit's `.tabTitle`; the files chip's own titleIcon idiom). */
.lc-title-icon { flex: none; }