You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Confirmed the analysis line by line on main (589e5803a) — every claim holds:
Close button is a sibling of the tab button, inside the same wrapper: WorkPanel.tsx:890-899 (the <button className="work-panel-tab-close"> sits after </button> of the tab itself).
The scroll-into-view targets only the tab button: WorkPanel.tsx:313-319 (tabButtonRefs.current[activeTabId]?.scrollIntoView({ block: "nearest", inline: "nearest" })). With inline: "nearest", a tab button already visible scrolls zero pixels — and the sibling close button sitting to its right stays clipped.
The strip is overflow-x: auto with width: max-content; max-width: 100% and a hidden scrollbar: work-panel.css:190-210. Tabs are 92–180px wide (:212-225), so a narrow panel plus long labels does put the right edge outside the viewport.
Two things that would make the fix robust rather than a nudge:
Scroll the wrapper, not the button. Give the tab wrapper (the element that contains both the tab button and its close button) a ref, and scrollIntoView that instead — then inline: "nearest" accounts for the close button's width. That is a two-line change at :313-319 plus a ref map keyed like tabButtonRefs.
scroll-padding-inline currently only reserves 2px (work-panel.css:204). Even with (1), a 1px rounding difference can still clip the last pixel; bumping the end padding to the close button's width (or setting scroll-padding-inline-end from a CSS variable shared with the button size) makes the guarantee hold structurally.
Optional but worth considering: the report notes the scrollbar is hidden (::-webkit-scrollbar { display: none }), so when the strip does overflow there is no affordance that more tabs exist. A subtle fade or edge shadow when scrollWidth > clientWidth would tell the user to scroll — separate from this bug, but the same narrow-panel scenario.
Activity
muzimu217 commentedon Oct 19, 2026
Confirmed the analysis line by line on
main(589e5803a) — every claim holds:WorkPanel.tsx:890-899(the<button className="work-panel-tab-close">sits after</button>of the tab itself).WorkPanel.tsx:313-319(tabButtonRefs.current[activeTabId]?.scrollIntoView({ block: "nearest", inline: "nearest" })). Withinline: "nearest", a tab button already visible scrolls zero pixels — and the sibling close button sitting to its right stays clipped.overflow-x: autowithwidth: max-content; max-width: 100%and a hidden scrollbar:work-panel.css:190-210. Tabs are92–180pxwide (:212-225), so a narrow panel plus long labels does put the right edge outside the viewport.Two things that would make the fix robust rather than a nudge:
scrollIntoViewthat instead — theninline: "nearest"accounts for the close button's width. That is a two-line change at:313-319plus a ref map keyed liketabButtonRefs.scroll-padding-inlinecurrently only reserves 2px (work-panel.css:204). Even with (1), a 1px rounding difference can still clip the last pixel; bumping the end padding to the close button's width (or settingscroll-padding-inline-endfrom a CSS variable shared with the button size) makes the guarantee hold structurally.Optional but worth considering: the report notes the scrollbar is hidden (
::-webkit-scrollbar { display: none }), so when the strip does overflow there is no affordance that more tabs exist. A subtle fade or edge shadow whenscrollWidth > clientWidthwould tell the user to scroll — separate from this bug, but the same narrow-panel scenario.fix(work-panel): keep active tab close action visible
fix(work-panel): keep the active tab's close button inside the strip
fix(work-panel): keep the active tab's close button inside the strip
vastsa commentedon Oct 22, 2026
已通过 PR #1769 合入修复:激活标签的关闭按钮会在标签栏缩窄后重新滚入视口;悬停部分可见的非激活标签时也会显示并滚入关闭按钮。Electron 几何回归覆盖窄屏、同一标签下缩窄到 80px、以及悬停三种状态,并验证按钮位于滚动视口内且命中目标正确。谢谢你提供复现步骤和量测结果。
perf(sessions): cache file-derived session summaries by file identity (…