Skip to content

Settings tabs' cards fill the pane, and thin scrollbars - #75

Merged
WillTDA merged 2 commits into
masterfrom
pane-scrollbars
Oct 26, 2026
Merged

WillTDA merged 2 commits into
masterfrom
pane-scrollbars

Conversation

@WillTDA

@WillTDA WillTDA commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

Closes #68. Closes #70.

Cards fill the pane (#68)

.update-tab loses its max-width: 36rem, so the Update tab's two cards fill the pane edge to edge, as the tab bar above them does. The channel's select keeps its 16rem. docs/shell.md now says a tab's cards fill the pane (an app's own tabs too), and that a readable width, where one is wanted, is the text inside a card. No other Settings tab had a cap: Credits and an app's own tab already fill the pane.

Thin scrollbars (#70)

Every element that scrolls gets a thin scrollbar: 6px, no arrow buttons, and the thumb is the theme's text colour at half on a track that isn't drawn. It's stronger while hovered.

  • Why not scrollbar-width: thin: measured in the demo's Electron 44, Chromium's thin bar (10px) still draws an arrow button at each end, on Windows and on Linux. So the bar is drawn through ::-webkit-scrollbar instead. Chromium ignores those pseudo-elements on any element that sets scrollbar-width or scrollbar-color, so kit.css sets neither. An app that sets one on an element gets Chromium's own bar there, as docs/theming.md (Scrollbars) says.
  • Contrast: the thumb measures 3.12:1 in light and 4.07:1 in dark against the page, both computed and as drawn (4.04:1). The issue's 30% would have been 1.87:1 and 2.35:1.
  • Tokens: --scrollbar-width stays 6px. --scrollbar-thumb and --scrollbar-thumb-hover are now rgba(var(--bs-body-color-rgb), 0.5) and 0.7, set on each theme's root (:root, [data-bs-theme]), so a part of the page in the other theme gets its own.

Tests

  • test/kit-css.test.js: the tokens, the theme rule, the four ::-webkit-scrollbar rules, no arrow-button rule, no standard scrollbar property anywhere, and no cap on a Settings tab except the channel's select (321 unit tests).
  • e2e/scrollbars.spec.js checks the Settings pane, a card grid and the bottom bar's panel in both themes. It checks the computed values: the standard properties auto, the bar 6px each way, its track transparent, its thumb the text colour at half. It also checks what the window draws down the bar's middle: the thumb from the very top and nothing under it (a run with thin forced fails here), and 3:1 or more through testing/contrast. A last test proves that an element setting scrollbar-width gets Chromium's bar.
  • e2e/update-tab.spec.js: the Update cards are as wide as the pane at 760px and at 1400px. e2e/shell.spec.js: every Settings tab's content (General, Update, Credits) fills the pane at 1400px.

Visual baselines

26 images changed, the Queue's four states in each accent and theme where they're pictured: its cards, three selected, the form over it, and the dot on the collapsed rail. The Queue scrolls, so these images show the thin bar, and the cards take the width the old bar held. They came from the hand-run job (run 40365482901). That job also redrew 5 images that still match locally, and those are put back, so 60 of the 86 are unchanged. The Update tab's images don't change: at the spec's 760px the pane is already narrower than the old cap.

The Update tab's cards no longer stop at 36rem: they fill the pane, edge
to edge, as the tab bar above them does. The docs say a tab's cards fill
the pane, and a readable width, where one is wanted, is the text inside a
card.

Every element that scrolls has a thin scrollbar: 6px, no arrow buttons,
the thumb the theme's text colour at half on a track that isn't drawn,
3:1 or more against the page in both themes, and stronger while hovered.
It's drawn through ::-webkit-scrollbar: the standard scrollbar-width:
thin still draws an arrow button at each end on Windows and Linux, and
setting it would switch the pseudo-elements off, so kit.css sets neither
standard property. The thumb's tokens are set on each theme's root.
The Queue scrolls in its four states (its cards, three selected, the form over it, the dot on the collapsed rail), so its 26 images show the thin bar and the cards take the width the old one held. The rest are unchanged.
@WillTDA
WillTDA merged commit fc6e113 into master Oct 26, 2026
9 checks passed
@WillTDA
WillTDA deleted the pane-scrollbars branch October 26, 2026 17:30
@WillTDA WillTDA mentioned this pull request Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Thin scrollbars in every app, in place of Chromium's own Settings tabs' cards fill the pane (the Update tab's 36rem cap)

1 participant