a11y: Hide decorative Config-screen glyphs from VoiceOver#2120
Conversation
|
Warning Review limit reached
Next review available in: 59 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
garthvh
left a comment
There was a problem hiding this comment.
Approved after detailed review (accessibility correctness verified; CI green). Part of the a11y series.
What changed?
A conservative VoiceOver pass over the Settings → Config screens: 4 standalone decorative
Image(systemName:)glyphs that sit beside an already-labeled control are marked.accessibilityHidden(true)so VoiceOver no longer announces an opaque symbol name (e.g. "checkmark seal fill").antenna.radiowaves…icon before the Transmit-Power Stepper.eyedropperbefore the ColorPicker anddirectcurrentbefore the Current Stepper.Why did it change?
Auditing the Config screens showed that nearly every glyph is already inside
Label(text, systemImage:), where SwiftUI exposes the title as the accessibility label and treats the symbol as decorative — so those rows already read correctly and need no change. The only real gaps were these 4 standalone glyphs, where VoiceOver would otherwise read a meaningless symbol name. Hiding (not labeling) is correct because each is adjacent to already-spoken text; labeling would produce redundant announcements.How is this tested?
Built the
Meshtasticscheme for iOS Simulator (iPhone 17 Pro, Xcode 26) →** BUILD SUCCEEDED **. SwiftLint clean. Passed a focused Swift/SwiftUI review (approve, no nits) confirming the licensed-band description is state-branched so hiding the glyph loses no information, and that.accessibilityHiddenscopes only to the decorative Image without affecting sibling controls.Screenshots/Videos (when applicable)
N/A — no visual change; affects spoken VoiceOver output only.
Checklist
docs/user/ordocs/developer/. No doc update is needed (non-visual a11y annotation) — please apply theskip-docs-checklabel.