Skip to content

Improve accessibility semantics for wallet flows#66

Open
Jim8y wants to merge 2 commits into
neoorder:masterfrom
Jim8y:codex/accessibility-semantics
Open

Improve accessibility semantics for wallet flows#66
Jim8y wants to merge 2 commits into
neoorder:masterfrom
Jim8y:codex/accessibility-semantics

Conversation

@Jim8y

@Jim8y Jim8y commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add semantic descriptions and hints for core wallet transfer, receive, scan, address book, new contact, settings row, and spinner button controls.
  • Hide decorative icon, image, and activity indicator elements from the accessibility tree where they create noisy output.
  • Add localized accessibility-only action labels for copy address and flashlight toggle across all 15 existing locale resource files.

Scope

  • Accessibility semantics only.
  • No wallet business logic, routing, storage, dApp, Gaming, Home dashboard, or design-system style changes.

Validation

  • Resource parity check passed for CopyAddress and ToggleFlashlight across every Strings*.resx locale file.
  • git diff --check passed.
  • iOS simulator build passed with DEVELOPER_DIR=/Applications/Xcode-26.5.0.app/Contents/Developer and RuntimeIdentifier=iossimulator-arm64.
  • Android emulator build passed with RuntimeIdentifier=android-arm64.
  • iOS simulator verified Send, Receive, Address Book, and New Contact accessibility labels.
  • Android emulator verified Send, Receive, Address Book, and New Contact UI trees.
  • Android crash buffer was empty after the verified flow.

Known Observation

  • During one forced Android activity restart, the emulator showed a transient startup ANR. The trace subject was Process org.neoorder.onegate failed to complete startup; the app recovered, and the same installed build then completed the Wallet to Send flow with an empty crash buffer. This does not appear tied to the XAML accessibility changes, but I am noting it explicitly.

Screenshots

A screenshot comment with iOS and Android simulator captures is attached below. Screenshots are hosted as release assets and are not committed to the repository.

Copilot AI review requested due to automatic review settings June 21, 2026 13:46
@Jim8y

Jim8y commented Jun 21, 2026

Copy link
Copy Markdown
Contributor Author

Simulator screenshots

iOS Simulator

iOS Send
iOS Receive
iOS New Contact

Android Emulator

Android Send
Android Receive
Android New Contact

Screenshots are hosted as temporary PR evidence release assets and are not committed to this repository.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves accessibility semantics across core wallet flows by adding screen-reader friendly descriptions/hints, hiding decorative elements from the accessibility tree, and introducing new localized accessibility-only action labels.

Changes:

  • Added new localized string resources for ToggleFlashlight and CopyAddress across all locale .resx files and updated Strings.Designer.cs.
  • Updated wallet-related XAML pages (Send/SendNFT/Scan/Receive/Contacts/NewContact) to provide semantic descriptions and reduce noisy accessibility output (decorative icons/images).
  • Updated shared UI components (SpinnerButton, SettingsView) to expose clearer semantic labels and hide non-informative activity indicators/icons from the accessibility tree.

Reviewed changes

Copilot reviewed 23 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
OneGateApp/Properties/Strings.resx Adds ToggleFlashlight and CopyAddress strings (base locale).
OneGateApp/Properties/Strings.de.resx Adds ToggleFlashlight and CopyAddress strings (de).
OneGateApp/Properties/Strings.es.resx Adds ToggleFlashlight and CopyAddress strings (es).
OneGateApp/Properties/Strings.fr.resx Adds ToggleFlashlight and CopyAddress strings (fr).
OneGateApp/Properties/Strings.id.resx Adds ToggleFlashlight and CopyAddress strings (id).
OneGateApp/Properties/Strings.it.resx Adds ToggleFlashlight and CopyAddress strings (it).
OneGateApp/Properties/Strings.ja.resx Adds ToggleFlashlight and CopyAddress strings (ja).
OneGateApp/Properties/Strings.ko.resx Adds ToggleFlashlight and CopyAddress strings (ko).
OneGateApp/Properties/Strings.nl.resx Adds ToggleFlashlight and CopyAddress strings (nl).
OneGateApp/Properties/Strings.pt-BR.resx Adds ToggleFlashlight and CopyAddress strings (pt-BR).
OneGateApp/Properties/Strings.ru.resx Adds ToggleFlashlight and CopyAddress strings (ru).
OneGateApp/Properties/Strings.tr.resx Adds ToggleFlashlight and CopyAddress strings (tr).
OneGateApp/Properties/Strings.vi.resx Adds ToggleFlashlight and CopyAddress strings (vi).
OneGateApp/Properties/Strings.zh-Hans.resx Adds ToggleFlashlight and CopyAddress strings (zh-Hans).
OneGateApp/Properties/Strings.zh-Hant.resx Adds ToggleFlashlight and CopyAddress strings (zh-Hant).
OneGateApp/Properties/Strings.Designer.cs Adds strongly-typed accessors for ToggleFlashlight and CopyAddress.
OneGateApp/Pages/SendPage.xaml Adds semantic descriptions/hints and hides decorative icons/images from accessibility.
OneGateApp/Pages/SendNFTPage.xaml Hides decorative NFT icon and adds semantic labels for address/scan/contact controls.
OneGateApp/Pages/ScanPage.xaml Adds semantic descriptions for camera view and scan/flashlight buttons.
OneGateApp/Pages/ReceivePage.xaml Adds semantic description for QR code container and copy-address button label.
OneGateApp/Pages/NewContactPage.xaml Adds semantic labels for address/label entries and scan button.
OneGateApp/Pages/ContactsPage.xaml Improves toolbar item accessibility text, hides decorative empty-state image, and adds semantic labels for contact items/copy button.
OneGateApp/Controls/Views/SpinnerButton.xaml Adds semantic label to button and hides activity indicator from accessibility.
OneGateApp/Controls/Views/SettingsView.xaml Makes settings rows accessible with description/hint and hides decorative chevron/value labels from accessibility.
Files not reviewed (1)
  • OneGateApp/Properties/Strings.Designer.cs: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread OneGateApp/Pages/ScanPage.xaml
Comment thread OneGateApp/Pages/ReceivePage.xaml
@Jim8y

Jim8y commented Jun 21, 2026

Copy link
Copy Markdown
Contributor Author

Latest review follow-up: addressed the two duplicate accessibility announcement comments in 406aeba.

Changes:

  • Removed the duplicate SemanticProperties.Description from CameraBarcodeReaderView; the visible scan instruction label remains exposed.
  • Removed the duplicate SemanticProperties.Description from the receive QR container; the visible receive QR title remains exposed.

Validation:

  • git diff --check passed.
  • Conflict-marker scan passed.
  • iOS simulator build/install/Receive UI verified. Scan entry was tapped and showed the simulator camera-unavailable toast without crash.
  • Android emulator build/install/Receive UI verified with empty crash log.
  • Android emulator Scan UI verified through the runtime camera permission flow.

Screenshots:

Screenshots are GitHub release assets only and are not committed to the repository. Ready for re-review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants