Skip to content

fix: improve accessibility semantics in CreateGameWidget#3406

Merged
veloce merged 1 commit into
lichess-org:mainfrom
madhaviGit:fix/accessibility-create-game-semantics
Jul 2, 2026
Merged

fix: improve accessibility semantics in CreateGameWidget#3406
veloce merged 1 commit into
lichess-org:mainfrom
madhaviGit:fix/accessibility-create-game-semantics

Conversation

@madhaviGit

@madhaviGit madhaviGit commented Jun 29, 2026

Copy link
Copy Markdown

Problem
With VoiceOver enabled, the create game panel announces labels and values separately due to geometric traversal order:

❌ "Time Control" → "Variant" → "10+0" → "Standard"

Each label is completely separated from its corresponding input, which is confusing for blind users.
Solution
Wrapped each label+button pair in a Semantics widget so VoiceOver and TalkBack announce each field as a single grouped element with its current value:

✅ "Time control: 10+0" → "Variant: Standard" → "Game mode: Casual" → "Rating filter: -500 / +500"

This follows the existing pattern already established in SettingsListTile (lib/src/widgets/settings.dart:36).
Fixes #3328

Wrap each label+button pair in a Semantics widget with container, button,
label, and excludeSemantics properties so VoiceOver and TalkBack announce
each field as a single grouped element with its current value.

Fixes lichess-org#3328
@veloce veloce merged commit d1fc5c6 into lichess-org:main Jul 2, 2026
1 check passed
@veloce

veloce commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Thanks for this!

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.

Accessibility VoiceOver: "Time control" and "Variant" labels are not grouped with their inputs on the CreateGame screen

2 participants