Skip to content

fix(network-panel): speed test contrast - #6529

Merged
dhh merged 3 commits into
basecamp:quattrofrom
heyssh:fix/network-overlay-scrim-contrast
Aug 5, 2026
Merged

fix(network-panel): speed test contrast#6529
dhh merged 3 commits into
basecamp:quattrofrom
heyssh:fix/network-overlay-scrim-contrast

Conversation

@heyssh

@heyssh heyssh commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Network Panel — Speed Test Contrast Fix

The Problem

Opening the speed test from the Network panel, the floating dial cluster showed almost nothing on some themes: no digits, no "DOWNLOAD"/"UPLOAD" labels, no tick marks around the dials — only the glowing blue arc and needle were visible. Switching to Tokyo Night, the exact same overlay looked correct, with every label and digit clearly legible.

Root Cause

The speed test overlay is designed with no card and no border — just the two dials floating on a deep, near-black scrim laid over the whole screen. That scrim is fixed and doesn't change with the theme, on purpose: it's meant to guarantee readable contrast no matter what wallpaper is behind it.

The text and tick colors inside the overlay, though, weren't fixed — they followed the bar's own theme color, the same color used to keep text legible against the bar itself. That color is designed to flip between light and dark depending on the theme, since the bar's background does too. On themes where that color comes out dark, it was being drawn on top of the equally dark scrim, and the two nearly disappeared into each other. Only the accent-colored arc and needle stayed visible, since those were never tied to that color in the first place.

The Fix

The speed test overlay now uses its own fixed, theme-independent color for everything drawn on the scrim — a light color for the main text and a softer, dimmed version of it for secondary labels and tick marks. Since the scrim itself never changes, this pairing is guaranteed to stay legible on every theme, including the one that was previously broken. The one exception left alone is the error-state color, which is a deliberate warning color already designed to read clearly against a dark background regardless of theme.

Test

before:
screenshot-2026-08-03_12-43-59

After:
image

Result

The speed test dials now display all their text, numbers, and tick marks clearly on every theme — not just Tokyo Night.

SpeedTestPanel and WifiQrPanel both draw over a hardcoded near-black
scrim, but their text/tick colors came from bar.foreground -- a color
themed to contrast with the *bar's* own background, which flips
dark/light per theme. On themes with a dark bar.foreground, digits
and labels went invisible against the black scrim, leaving only the
accent-colored arc/needle (Color.accent) visible.

Add a fixed white-based on-scrim palette (onScrim/onScrimDim) to both
overlays and route all text/tick colors through it, independent of
theme. bar.urgent stays theme-driven since it's a semantic color
already legible on near-black.
Copilot AI balanced review requested due to automatic review settings August 3, 2026 09:45

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Pins network overlay text and dial colors to a light palette for reliable contrast against the fixed dark scrim.

Changes:

  • Adds fixed primary and dimmed on-scrim colors.
  • Applies them to QR text, speed-test controls, labels, readings, and ticks.

Tip

If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
WifiQrPanel.qml Uses fixed colors for QR overlay text.
SpeedTestPanel.qml Uses fixed colors for dial and overlay content.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

: root.passwordVisible ? root.password
: "Show password"
color: root.passwordError !== "" ? root.bar.urgent : root.bar.foreground
color: root.passwordError !== "" ? root.bar.urgent : root.onScrim
// so everything drawn on it needs a fixed light-on-dark palette too.
// `bar.foreground` is themed to contrast against the *bar's* own
// background, which flips dark/light independently of this scrim -- on
// light-foreground themes that made every label, tick, and digit here
// Same fix as SpeedTestPanel: the scrim below is fixed near-black
// regardless of theme, so text on it needs a fixed light palette instead
// of `bar.foreground` (which flips dark/light with the bar's own theme
// and was going near-invisible on light-foreground themes).
@heyssh heyssh changed the title fix(network): pin overlay text to a fixed on-scrim palette fix(network-panel): Speed Test Contrast Fix Aug 3, 2026
@heyssh heyssh changed the title fix(network-panel): Speed Test Contrast Fix fix(network-panel): speed test contrast Aug 3, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 5, 2026 15:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

Suppressed comments (1)

shell/plugins/panels/network/WifiQrPanel.qml:31

  • This also changes the Wi-Fi QR overlay’s visual palette, but the PR’s verification only demonstrates the speed-test overlay. Shell visual changes require inspection in the running UI; please open the QR overlay on the affected theme and capture/inspect its updated states (including loading, success/password, and error) before merging.
  // The scrim below is a fixed near-black regardless of theme, so text on
  // it needs a fixed light palette, not the themed bar.foreground.
  readonly property color onScrim: "white"
  readonly property color onScrimDim: Qt.rgba(1, 1, 1, 0.55)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 5, 2026 18:04
@dhh
dhh merged commit 5d13b53 into basecamp:quattro Aug 5, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

Suppressed comments (2)

shell/plugins/panels/network/WifiQrPanel.qml:32

  • The PR is scoped and tested as a speed-test contrast fix, but this new palette also changes every Wi-Fi QR overlay label, status, password, and error color. This is an unverified behavior change outside the stated scope; please either revert the QR-panel edits or document and visually verify this overlay as part of the PR.
  // The scrim below is a fixed near-black regardless of theme, so text on
  // it needs a fixed light palette, not the themed bar.foreground.
  readonly property color onScrim: "white"
  readonly property color onScrimDim: Qt.rgba(1, 1, 1, 0.55)
  readonly property color onScrimUrgent: "#ff6b6b"

shell/plugins/panels/network/SpeedTestPanel.qml:40

  • The description says the error-state color is deliberately left unchanged, but this property replaces the existing themed bar.urgent color with a hard-coded value. If that stated exception is intentional, keep this palette entry bound to bar.urgent; otherwise the description and visual verification need to cover the newly fixed error color.
  readonly property color onScrimUrgent: "#ff6b6b"

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.

3 participants