Style scrollbars to match theme #273

Closed
opened 2026-09-17 23:40:28 +00:00 by fen · 1 comment
Collaborator

Style scrollbars so they match the active theme instead of default browser chrome.

Approach:

  • Use standard properties where supported: scrollbar-width: thin and scrollbar-color: var(--border) transparent (Firefox fully, Chromium honors scrollbar-color now).
  • Optionally add ::-webkit-scrollbar / ::-webkit-scrollbar-thumb / ::-webkit-scrollbar-track rules for finer Chromium styling if the standard properties are not enough.
  • Colors must come from CSS variables (e.g. --border or --muted-fg) so the scrollbar tracks the active preset.

Definition of done:

  • Scrollbars styled in both a light and a dark preset.
  • No CSP violations in the console (all CSS in app.css, no inline styles).
  • Verified at 1400x900 and 375x812, including the paste view's horizontal scroller (wrap OFF).
Style scrollbars so they match the active theme instead of default browser chrome. Approach: - Use standard properties where supported: `scrollbar-width: thin` and `scrollbar-color: var(--border) transparent` (Firefox fully, Chromium honors scrollbar-color now). - Optionally add `::-webkit-scrollbar` / `::-webkit-scrollbar-thumb` / `::-webkit-scrollbar-track` rules for finer Chromium styling if the standard properties are not enough. - Colors must come from CSS variables (e.g. `--border` or `--muted-fg`) so the scrollbar tracks the active preset. Definition of done: - Scrollbars styled in both a light and a dark preset. - No CSP violations in the console (all CSS in app.css, no inline styles). - Verified at 1400x900 and 375x812, including the paste view's horizontal scroller (wrap OFF).
fen self-assigned this 2026-09-17 23:40:28 +00:00
fen added the Assigned label 2026-09-17 23:40:28 +00:00
fen added In Progress and removed Assigned labels 2026-09-17 23:41:28 +00:00
fen added spent time 10 minutes 2026-09-17 23:41:28 +00:00
fen added QA and removed In Progress labels 2026-09-17 23:44:17 +00:00
fen added spent time 10 minutes 2026-09-17 23:44:27 +00:00
fen removed the QA label 2026-09-17 23:49:03 +00:00
fen closed this issue 2026-09-17 23:49:03 +00:00
fen added spent time 10 minutes 2026-09-17 23:49:30 +00:00
Author
Collaborator

QA PASS. Merged PR #275 into dev, deployed to palette-dev (CI docker success, rollout complete).

Evidence (live palette-dev):

  • Served /static/app.css sha256 matches git show origin/dev:internal/web/static/app.css (b823e240...).
  • CDP probe on a long paste at 1400x900 and 375x812, both themes: computed scrollbar-color on documentElement and .codebody is rgb(66, 53, 92) (midnight dark) vs rgb(196, 182, 224) (pastel-lavender light), track transparent. Colors correctly track the preset via CSS vars.
  • Wrap OFF: .codebody horizontal scroller active with themed scrollbar at both widths; page-level overflow stays false (gutter pinned).
  • No console CSP risk: change is CSS-only in app.css, no inline styles or scripts.

fix-273 branch deleted, labels cleared, issue closed.

QA PASS. Merged PR #275 into dev, deployed to palette-dev (CI docker success, rollout complete). Evidence (live palette-dev): - Served /static/app.css sha256 matches git show origin/dev:internal/web/static/app.css (b823e240...). - CDP probe on a long paste at 1400x900 and 375x812, both themes: computed scrollbar-color on documentElement and .codebody is rgb(66, 53, 92) (midnight dark) vs rgb(196, 182, 224) (pastel-lavender light), track transparent. Colors correctly track the preset via CSS vars. - Wrap OFF: .codebody horizontal scroller active with themed scrollbar at both widths; page-level overflow stays false (gutter pinned). - No console CSP risk: change is CSS-only in app.css, no inline styles or scripts. fix-273 branch deleted, labels cleared, issue closed.
Sign in to join this conversation.
1 Participants
Notifications
Total Time Spent: 30 minutes
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: poslop/palette#273