Repository navigation
a11y(presets): GUI3 preset accessibility (#2338 #2339 #2345 #2350 #2352) - #2357
Conversation
…chip/AutoOpt/card state #2338 — Add htmlFor/id labels to all Preset parameter controls (temperature, top_p, context size, top_k, repeat penalty, steps, CFG scale, engine hint, AutoOpt result, llamacpp_args, sdcpp_args); aria-label on image width/height. #2339 — llamacpp_backend and llamacpp_device converted from plain text inputs to input[list] + datalist, exposing selectable known values (backends: auto, cpu, cuda, vulkan, kompute, metal, rpc, opencl, mmap; devices: Auto, CPU, CUDA0, CUDA1, Vulkan0, Vulkan1, Metal) while staying free-text for custom values. #2345 — PresetCard overlay button gains aria-describedby pointing to a sr-only span that includes: starter/manual-args state, applies_to capabilities, parameter summary, prompt name, and tools state. #2350 — Capability chip container gains role=radiogroup + aria-label; each chip button gains role=radio + aria-checked to expose single-select state to AT. #2352 — AutoOpt run buttons gain aria-pressed={selectedAutoRunId === run.id} so AT announces selected/not-selected on each run card. Tests: 50 → 61 passed, 7 skipped, 0 failed (11 new tests A35–A45). Refs #2338 #2339 #2345 #2350 #2352 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Internal review: CHANGES SUGGESTED (advisory — human approval required) Authored by Mattingly; reviewed by Lovell. Reviewer lockout in effect — Mattingly may NOT self-revise; a different agent must address the blocking issue. [BLOCKER] #2350 — Test gap — no ArrowKey coverage (tests/a11y.spec.ts A41–A43) All other items — no blocking issues
Action required: Assign a different agent (not Mattingly) to add arrow-key navigation to the capability chip radiogroup and a corresponding Playwright |
…fix review) Addresses review on #2350 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Internal review (re-review): LGTM (advisory — human approval required)Reviewer: Lovell | Re-review date: 2026-06-22 The fix correctly resolves the WCAG 2.1.1 keyboard gap I flagged in the first pass. Findings:
One minor advisory note (non-blocking): A41 checks No blocking issues. Cleared for human approval. |
…) (#2357) * a11y(presets): label params, add combobox for backend/device, expose chip/AutoOpt/card state #2338 — Add htmlFor/id labels to all Preset parameter controls (temperature, top_p, context size, top_k, repeat penalty, steps, CFG scale, engine hint, AutoOpt result, llamacpp_args, sdcpp_args); aria-label on image width/height. #2339 — llamacpp_backend and llamacpp_device converted from plain text inputs to input[list] + datalist, exposing selectable known values (backends: auto, cpu, cuda, vulkan, kompute, metal, rpc, opencl, mmap; devices: Auto, CPU, CUDA0, CUDA1, Vulkan0, Vulkan1, Metal) while staying free-text for custom values. #2345 — PresetCard overlay button gains aria-describedby pointing to a sr-only span that includes: starter/manual-args state, applies_to capabilities, parameter summary, prompt name, and tools state. #2350 — Capability chip container gains role=radiogroup + aria-label; each chip button gains role=radio + aria-checked to expose single-select state to AT. #2352 — AutoOpt run buttons gain aria-pressed={selectedAutoRunId === run.id} so AT announces selected/not-selected on each run card. Tests: 50 → 61 passed, 7 skipped, 0 failed (11 new tests A35–A45). Refs #2338 #2339 #2345 #2350 #2352 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * a11y(presets): use aria-pressed toggle buttons for capability chips (fix review) Addresses review on #2350 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Summary
Addresses all 5 NVDA screen-reader issues against the Presets UI 3 beta. No behaviour or visual regressions. One reviewer (Lovell) required.
Changes per issue
Closes #2338 — Preset parameter controls programmatic labels
All interactive controls now have programmatic accessible names via htmlFor/id (temperature, top_p, context size, top_k, repeat penalty, steps, CFG scale, engine hint, AutoOpt result, llamacpp_args, sdcpp_args). Image width/height use aria-label since they share one visual label.
Closes #2339 — Advanced backend/device fields discoverable
llamacpp_backend and llamacpp_device converted from plain text inputs to input[list] + datalist, exposing known selectable values (9 backends, 7 devices) while keeping free-text for custom values.
Closes #2345 — Preset card richer accessible description
Card overlay button gains aria-describedby pointing to a sr-only span with: starter/manual-args status, applies_to capabilities, parameter summary, prompt name, tools state.
Closes #2350 — Capability chip radio semantics
Capability chip container gains role=radiogroup. Each chip button gains role=radio + aria-checked. Radio chosen over aria-pressed because toggleCap is single-select.
Closes #2352 — AutoOpt run selection state
Each AutoOpt run button gains aria-pressed={selectedAutoRunId === run.id}. NVDA announces pressed/not-pressed state.
Test results
61 passed / 7 skipped / 0 failed (was 50/7/0). 11 new tests A35-A45.
Review notes
Needs human reviewer (not author). Arrow key navigation for radiogroup is a follow-up enhancement.