Restore the focus ring that #181 made invisible #198

Merged
robbertbos merged 1 commit from restore-focus-ring into main 2026-07-26 18:37:16 +00:00
Owner

PR #196 retired Waggle's --focus-ring and mapped it onto --semantics-focus-ring-box-shadow by name. That token is not the ring.

It resolves to 0 0 0 3px var(--semantics-surfaces-base-background-color): the gap NLDD paints between an element and its outline, so the ring stays legible over busy content. Applied on its own it draws the page background onto the page background, so every element relying on the global rule lost its focus indicator (WCAG 2.4.7). Before #196 the same declaration used --focus-ring, a translucent blue, and was visible.

NLDD applies the three declarations together - -outline, -outline-offset, -box-shadow - in 113 of its own components. This does the same, in base.css and in the four places that restate the recipe locally (Toast.vue, MentionProfilePopover.vue, ImportPanel.vue, and the .mm-mention rule).

No CHANGELOG entry: the regression never reached a release, so the fix nets to zero for users.

Verified

  • vue-tsc clean, 533 tests green, build green, eslint 0 errors
  • Resolved values: was 0 0 0 3px <page background>, now additionally 1px solid var(--primitives-color-accent-600) at a 1px offset

Not in scope

The eight sites using outline: 2px solid var(--color-focus) are a second, working recipe. Unifying them onto NLDD's triple is a consistency improvement, not a defect, and follows separately.

PR #196 retired Waggle's `--focus-ring` and mapped it onto `--semantics-focus-ring-box-shadow` by name. That token is not the ring. It resolves to `0 0 0 3px var(--semantics-surfaces-base-background-color)`: the gap NLDD paints between an element and its outline, so the ring stays legible over busy content. Applied on its own it draws the page background onto the page background, so every element relying on the global rule lost its focus indicator (WCAG 2.4.7). Before #196 the same declaration used `--focus-ring`, a translucent blue, and was visible. NLDD applies the three declarations together - `-outline`, `-outline-offset`, `-box-shadow` - in 113 of its own components. This does the same, in `base.css` and in the four places that restate the recipe locally (`Toast.vue`, `MentionProfilePopover.vue`, `ImportPanel.vue`, and the `.mm-mention` rule). No CHANGELOG entry: the regression never reached a release, so the fix nets to zero for users. ## Verified - `vue-tsc` clean, 533 tests green, build green, eslint 0 errors - Resolved values: was `0 0 0 3px <page background>`, now additionally `1px solid var(--primitives-color-accent-600)` at a 1px offset ## Not in scope The eight sites using `outline: 2px solid var(--color-focus)` are a second, working recipe. Unifying them onto NLDD's triple is a consistency improvement, not a defect, and follows separately.
Restore the focus ring this PR made invisible
All checks were successful
CI / pre-commit (pull_request) Successful in 1m22s
CI / frontend-test (pull_request) Successful in 4m50s
CI / release-scripts (pull_request) Successful in 10s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 58s
security-scan / Python SAST (bandit) (pull_request) Successful in 37s
CI / backend-test (pull_request) Successful in 7m2s
security-scan / JS SCA (npm audit) (pull_request) Successful in 40s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 23s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Successful in 1m57s
CI / backend-test-postgres (pull_request) Successful in 9m44s
test-build / build (frontend) (pull_request) Successful in 2m13s
test-build / build (pull_request) Successful in 0s
CI / e2e (pull_request) Successful in 8m32s
eea87ac909
Retiring --focus-ring mapped it onto --semantics-focus-ring-box-shadow by name.
That token is not the ring: it resolves to a 3px shadow in
--semantics-surfaces-base-background-color, the gap NLDD paints between an
element and its outline so the ring stays legible over busy content. Applied
alone it draws the page background onto the page background, so every element
relying on the global rule lost its focus indicator (WCAG 2.4.7). Before this
PR the same declaration used Waggle's own --focus-ring, a translucent blue.

NLDD applies all three together - outline, outline-offset, box-shadow - in 113
of its own components. Do the same, in base.css and in the four places that
restate the recipe locally.
robbertbos deleted branch restore-focus-ring 2026-07-26 18:37:17 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robbertbos/waggle!198
No description provided.