Skip to content

TalkBack, 3 of 10: Improve asset file accessibility - #6159

Draft
eliotcougar wants to merge 6 commits into
2dust:masterfrom
eliotcougar:fix/accessibility-asset-rows
Draft

eliotcougar wants to merge 6 commits into
2dust:masterfrom
eliotcougar:fix/accessibility-asset-rows

Conversation

@eliotcougar

@eliotcougar eliotcougar commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Part 3 improves the Asset files list and asset-source editor without changing asset downloads, notification policy, or storage operations.

  • Each asset is one informational accessibility group containing its name, localized file size, and “Updated on” date/time, or the existing File not found message.
  • Rows have no activation action. Edit and Delete are ordered custom actions on the row; Edit is omitted for locked and file-imported assets. Visible icon buttons remain usable by touch and keyboard, with their duplicate accessibility semantics cleared.
  • The source editor's Delete control and confirmation identify the saved asset, even while its name is being edited. The list retains its existing named file-deletion question.
  • Date/time formatting uses the app's configured locale and the user's 12/24-hour preference, omitting seconds both visually and audibly. Android's file-size formatter supplies localized numbers and units for both presentations; its standard SI units on Android 8+ replace the old binary-scaled traffic units.
  • Preserve the four feature strings in all nine locale catalogs and the existing scoped Bakhtiari corrections. No XML catalogs are split.

State and structure

Built-in assets have deterministic, filename-derived UI IDs rather than a new UUID on each reload. Persisted assets keep their existing GUIDs. These built-in IDs are not written to storage.

The pending list deletion stores only its saveable ID and resolves the current asset/name from the latest list. The source editor's draft and delete-confirmation visibility also survive recreation. No manual focus requests or custom announcements are added.

Metadata has one present/missing branch instead of repeated nullable checks. Redundant icon descriptions and unused list indices are removed; the row composable is private again. The existing list-building function is module-internal for two focused JVM regression tests, without adding another production helper.

The original 93-line Android instrumentation harness is removed. There are no new or retained Part 3 src/androidTest files.

The editor keeps its scrollable, IME-aware form and consumed scaffold insets. Custom actions follow the documented Compose container-action pattern:

Validation — f09e52b7b

  • Two targeted JVM regressions pass: stable/unique built-in IDs across reload and source changes; saved assets retain their GUIDs and replace matching built-ins without duplicates.
  • All 59 Play Store debug JVM tests pass; Kotlin compilation and debug APK assembly pass.
  • All four feature keys are present exactly once with matching placeholders in all nine catalogs.
  • Merge simulations with each of the other nine focused PRs and current upstream pass in both orders with identical trees.
  • Pixel 9 Pro / API 37.1 emulator: matching-signature install; required x86_64 native libraries present; English and Russian metadata; 12-hour and 24-hour output; seconds omitted; missing-file state; native Edit/Delete controls; named list deletion survives rotation; new/editor drafts and the named editor deletion dialog survive rotation; confirmation names the saved asset rather than an unsaved replacement name.
  • The built-in deletion was cancelled. The single temporary asset source was removed without downloading a file. Existing assets and the lab subscription were preserved. Original APK, locale, clock, orientation, and accessibility settings restored.

Not run / not established: direct custom-action invocation and spoken-label/focus-order checks with TalkBack. TalkBack bound, but injected keyboard shortcuts did not open its Actions menu; this is not reported as successful accessibility interaction. Full keyboard/D-pad activation, IME/inset, theme/dynamic-color, and process-death matrices were not completed. No fresh native-speaker translation review was performed.

Scope boundaries

Toast/snackbar/live-region policy stays in Part 1. No subscription, routing, server-list, native-core, or persisted-field changes are included.

The adjacent pre-existing asset-save validation-order bug is fixed separately in #6190. That single-file fix and this branch merge cleanly in either order with identical resulting trees; it is not bundled into this accessibility PR.

@eliotcougar eliotcougar changed the title TalkBack, 3 of N: Improve asset file accessibility TalkBack, 3 of 10: Improve asset file accessibility Aug 30, 2026
@eliotcougar
eliotcougar marked this pull request as ready for review August 30, 2026 17:47
@eliotcougar
eliotcougar marked this pull request as draft August 31, 2026 19:08
@eliotcougar
eliotcougar marked this pull request as ready for review September 2, 2026 00:38
@eliotcougar
eliotcougar marked this pull request as draft September 5, 2026 11:12
eliotcougar and others added 6 commits September 10, 2026 11:07
Group each asset file's informational text into one non-actionable semantics node while retaining native Edit and Delete buttons with contextual labels. Replace only the compact size and timestamp semantics with localized spoken text, and keep the visible row unchanged. Name asset sources in their delete action and confirmation, and make the touched editor form scroll safely above the IME.
Take only acc_add_asset and acc_download_file from Hossein Abaspanah's translation update (39725a4). Leave the broader translation changes in 2dust#6169. Play Store debug resource compilation and APK assembly pass.

Co-authored-by: Hossein Abaspanah <63148255+hosseinabaspanah@users.noreply.github.com>
Remove Edit and Delete from accessibility swipe traversal while preserving direct touch and keyboard behavior. Present the available operations as ordered custom actions on the inert asset row without adding a row activation action.
Adopt the overlapping terminology corrections from PR 2dust#6169 and carry them into branch-only plural and accessibility resources. This keeps later merge resolution from restoring stale Bakhtiari wording.
Keep feature-specific additions away from the common translated lines changed by neighboring accessibility PRs. Preserve every resource name, value and placeholder in the existing catalog.
Use stable filename-derived IDs for built-in rows so reloads no longer replace their accessibility identity. Retain a pending deletion by saveable ID and resolve its current name; preserve editor drafts and confirmation visibility across recreation.

Use the configured app locale and user 12/24-hour preference for minute-only dates, and Android localized file-size formatting consistently for visible and spoken metadata. Simplify missing metadata handling, unused list indices, and descriptions hidden by row-owned custom actions.

Remove the standalone Android-test harness and keep two focused JVM identity regressions. All 59 JVM tests, Kotlin compilation, debug assembly, nine-locale checks, and both-order companion/upstream merge simulations pass. Emulator checks cover localized metadata, native controls and rotation; direct TalkBack actions and speech remain unverified. Asset storage operations and notification behavior are unchanged.
@eliotcougar
eliotcougar force-pushed the fix/accessibility-asset-rows branch from f09e52b to 8d0c3ec Compare September 10, 2026 09:37
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.

1 participant