From 69268a6f76addff608db5ae326428ad7063f2f51 Mon Sep 17 00:00:00 2001 From: SandObserver <260779319+SandObserver@users.noreply.github.com> Date: Sun, 23 Aug 2026 09:40:59 -0400 Subject: [PATCH 1/5] Fix accessibility defects across settings, widgets and the dashboard Name the settings toggles from the row label they sit beside, rather than from an aria-label on the wrapping label element, where ARIA discards it. Link each inline-edit field to its row label, and resolve an inline-edit placeholder on use so a translated one is read after the catalog loads. Raise the type pills and the unselected filter chip above 4.5:1 on both the pane and a card in both themes, and the digital clock's date line above it in both of its modes. Teach the contrast test to resolve color-mix() and to composite a translucent fill over a backdrop, and pin those pairs. Wrap the settings content in a main landmark and make the dashboard pager a navigation landmark. Number repeated widget frame titles. Build the books shelf as a real list, inset its hover panel from the tile edge, and raise the panel's type. Translate the accessible names in the GitHub, Disk Health, Now Playing, Connections and Dashboard Switch widgets. --- CHANGELOG.md | 19 +++ ui/admin/index.html | 20 ++-- ui/css/admin.css | 26 ++-- ui/index.html | 4 +- ui/js/admin-app-form.js | 4 +- ui/js/admin-auth.js | 2 +- ui/js/admin-color-control.js | 2 +- ui/js/admin-settings.js | 2 +- ui/js/admin-shared.js | 19 ++- ui/js/admin-widget-form.js | 4 +- ui/js/admin.js | 14 +-- ui/js/dashboard.js | 10 +- ui/js/ui.js | 6 +- ui/js/widget-config-form.js | 4 +- ui/js/widget-types.js | 10 ++ ui/test/books-list-semantics.test.mjs | 71 +++++++++++ ui/test/contrast.test.mjs | 98 +++++++++++++++- ui/test/control-names.test.mjs | 111 ++++++++++++++++++ ui/test/landmarks.test.mjs | 37 ++++++ ui/test/pagination.test.mjs | 9 +- ui/widgets/books/index.html | 38 +++--- ui/widgets/clock/digital.html | 4 +- ui/widgets/connections/connections-map.html | 2 +- ui/widgets/connections/i18n/de.json | 3 +- ui/widgets/connections/i18n/en.json | 3 +- ui/widgets/connections/i18n/es.json | 3 +- ui/widgets/connections/i18n/fa.json | 3 +- ui/widgets/connections/i18n/fr.json | 3 +- ui/widgets/connections/i18n/zh-Hans.json | 3 +- ui/widgets/dashboard-switch/i18n/de.json | 3 +- ui/widgets/dashboard-switch/i18n/en.json | 3 +- ui/widgets/dashboard-switch/i18n/es.json | 3 +- ui/widgets/dashboard-switch/i18n/fa.json | 3 +- ui/widgets/dashboard-switch/i18n/fr.json | 3 +- ui/widgets/dashboard-switch/i18n/zh-Hans.json | 3 +- ui/widgets/dashboard-switch/index.html | 2 +- ui/widgets/disk-health/i18n/de.json | 4 +- ui/widgets/disk-health/i18n/en.json | 4 +- ui/widgets/disk-health/i18n/es.json | 4 +- ui/widgets/disk-health/i18n/fa.json | 4 +- ui/widgets/disk-health/i18n/fr.json | 4 +- ui/widgets/disk-health/i18n/zh-Hans.json | 4 +- ui/widgets/disk-health/index.html | 4 +- ui/widgets/github/contributions.html | 3 +- ui/widgets/github/i18n/de.json | 4 +- ui/widgets/github/i18n/en.json | 4 +- ui/widgets/github/i18n/es.json | 4 +- ui/widgets/github/i18n/fa.json | 4 +- ui/widgets/github/i18n/fr.json | 4 +- ui/widgets/github/i18n/zh-Hans.json | 4 +- ui/widgets/github/pullrequests.html | 4 +- ui/widgets/nowplaying/i18n/de.json | 3 +- ui/widgets/nowplaying/i18n/en.json | 3 +- ui/widgets/nowplaying/i18n/es.json | 3 +- ui/widgets/nowplaying/i18n/fa.json | 3 +- ui/widgets/nowplaying/i18n/fr.json | 3 +- ui/widgets/nowplaying/i18n/zh-Hans.json | 3 +- ui/widgets/nowplaying/index.html | 2 +- 58 files changed, 528 insertions(+), 105 deletions(-) create mode 100644 ui/test/books-list-semantics.test.mjs create mode 100644 ui/test/control-names.test.mjs create mode 100644 ui/test/landmarks.test.mjs diff --git a/CHANGELOG.md b/CHANGELOG.md index 228a3302..da27d5c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- Settings content is now a main landmark, and the dashboard pager is a + navigation landmark. + +- Repeated widgets of one type now get distinct frame names. + +### Fixed + +- Toggles and inline-edit fields in Settings now carry an accessible name. + +- Type pills, filter chips and the digital clock's date line now meet the WCAG + contrast minimum in both themes. + +- The password field's placeholder now renders its translation. + +- Accessible names in the GitHub, Disk Health, Now Playing, Connections and + Dashboard Switch widgets are now translated. + ## [1.8.0] - 2026-08-23 ### Added diff --git a/ui/admin/index.html b/ui/admin/index.html index 4ede3b57..7f3cbf7b 100644 --- a/ui/admin/index.html +++ b/ui/admin/index.html @@ -11,7 +11,7 @@ - +
@@ -48,7 +48,7 @@ -Errors shows warnings and errors only. Security events are always logged.
@@ -100,7 +100,7 @@Sets the appearance of the Settings pages. It is stored in this browser, applies to this device only, and takes effect at once.
Stops the screen dimming or locking while the dashboard is open. Browsers only allow this over HTTPS, so it has no effect on a plain HTTP address.
@@ -260,7 +260,7 @@