Skip to content

Accessibility: TalkBack improvements — contentDescription, semantics, liveRegion - #89

Open
AbdulAziz-Hatem wants to merge 21 commits into
kitsumed:mainfrom
AbdulAziz-Hatem:main
Open

Accessibility: TalkBack improvements — contentDescription, semantics, liveRegion#89
AbdulAziz-Hatem wants to merge 21 commits into
kitsumed:mainfrom
AbdulAziz-Hatem:main

Conversation

@AbdulAziz-Hatem

@AbdulAziz-Hatem AbdulAziz-Hatem commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

TalkBack Accessibility Improvements

What this does

Adds contentDescription, semantics, and liveRegion annotations across the Compose UI so TalkBack users can navigate and interact with the app effectively.

Why needed

The app had zero uses of Modifier.semantics and almost no contentDescription on interactive elements. TalkBack users could not:

  • Know what the recording overlay button does (it always said "Control Recording")
  • Hear that recording was active (the blinking red dot was invisible to TalkBack)
  • Understand permission status icons (✓/✗ had no description)
  • Navigate by headings in the sponsor screen

Files changed

File Change
values/strings.xml +12 accessibility string resources (a11y_overlay_*, a11y_permission_*, a11y_contact_photo)
RecordingOverlay.kt Dynamic contentDescription per state, liveRegion + stateDescription semantics, localized drag handle
PermissionsScreen.kt contentDescription on status icons, CircularProgressIndicator, dialog icons
ContactSelectionDialog.kt contentDescription on contact photos and search icon
SponsorScreen.kt Heading semantics on BioCard title
SettingsScreen.kt Semantic role on folder/template ListItems and contact options, localized WarningCard icon
ci-build.yml GitHub Actions CI workflow for automated build verification

Build verification

CI build passes ✅ — assembleDebug + Upload Debug APK both succeed.

Android documentation references

Note on translations

New strings were added only to values/strings.xml (English). Weblate will handle translation to other languages automatically.

AI disclosure

This PR was created with AI assistance (RikkaHub Agent). All code was reviewed for correctness before submission. CI build was verified passing.

Assisted-by: RikkaHub Agent

…ircularProgressIndicator semantics, dialog icons
…ems, Role.RadioButton on contacts options, localized WarningCard contentDescription
@kitsumed
kitsumed self-requested a review August 5, 2026 22:39
@kitsumed

kitsumed commented Aug 5, 2026

Copy link
Copy Markdown
Owner
  1. Please update main branch to reflect latest changes
  2. There are some unrelated changes in the PR like adding a CI. Please ensure that ONLY change for accesibility are there.

@kitsumed kitsumed left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Look comment before

# Conflicts:
#	app/src/main/java/com/kitsumed/shizucallrecorder/ui/screens/PermissionsScreen.kt
@AbdulAziz-Hatem

Copy link
Copy Markdown
Contributor Author

Thanks for the feedback! Both points are addressed:

  1. Main branch updated ✅ — I synced my fork's main with the latest upstream (including the merged fix(ui): handle edge-to-edge system bars and icon contrast #90). The PR now merges cleanly (mergeable: true).

  2. Only accessibility changes remain ✅ — I removed the CI workflow and re-checked every file. The PR now contains strictly TalkBack/accessibility improvements:

    • RecordingOverlay.kt — dynamic contentDescription, liveRegion + stateDescription
    • PermissionsScreen.kt — contentDescription on status icons, progress indicator, dialog icons
    • SettingsScreen.kt — semantics on ListItems/radio rows, localized WarningCard icon
    • ContactSelectionDialog.kt — contentDescription on search icon + contact photos
    • SponsorScreen.kt — heading semantics
    • FileNameFormatDialog.kt — input label
    • values/strings.xml — 12 a11y string resources (English only, Weblate handles translations)

Diff is now +91/−13 across 7 files, all accessibility-related. CI is verified passing.

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.

2 participants