Skip to content

Refine reader navigation with separate translation and passage pickers - #11

Merged
Llewellynvdm merged 3 commits into
mainfrom
feat/reader-passage-navigation
Oct 12, 2026
Merged

Llewellynvdm merged 3 commits into
mainfrom
feat/reader-passage-navigation

Conversation

@Llewellynvdm

@Llewellynvdm Llewellynvdm commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

The combined navigation dropdowns made ordinary book/chapter changes cumbersome and mixed them with infrequent translation and appearance choices. This implements the maintainer's bot mini-app navigation pattern across the shared Flutter reader (Android, iOS/iPadOS, web, Windows, macOS and Linux).

  • Tap the passage heading for a compact searchable book grid, then choose a published chapter. Extended books, introduction nodes and sparse numbering remain available.
  • Change translations separately: search by name/language/abbreviation, inspect the selected translation's details, then explicitly open it. Keep the current book/chapter where available; partial Bibles ask for an available passage.
  • Move search and chapter controls toward the left. Appearance, sizing, backups and downloads remain in Reader options; Reference preview has its own heading icon.
  • Keep browsing/cancellation read-only, preserve unsaved-note guards and reject results after dismissal. No other Bible is downloaded while previewing candidates.
  • Use the same native widgets in compact keyboard-aware sheets and desktop dialogs. Fix a confirmed short-landscape overflow while preserving inline-note keyboard resizing.

Validation on the final implementation:

  • 542 Flutter tests passed, including 23 standalone picker checks, 7 composed navigation cases, and the shared native journey's new selector checkpoints.
  • Flutter analyzer clean; 258 Dart files formatted; 444-message locale inventory and fixture/branding checks passed.
  • 83 developer-tool tests, 64 release-tool tests and 6 browser-harness tests passed.
  • Production Web compilation, both resource workers and the validated offline shell passed locally.
  • Actual widget captures reviewed for phone/desktop, RTL, 200% text and short keyboard layouts.

The delayed Search Open regression now checks immediate request invalidation and accepts only the new query after its legitimate debounce. This fixes a timing-sensitive assertion without changing search behavior.

Hosted Flutter CI run #80 passed on final head 22b758f38073938378e0fb4db4eac71ba0d25cb7: all 15 applicable jobs succeeded. This includes Android APK/AAB, unsigned iOS device/simulator, Web, Windows, macOS and Linux packages; native acceptance on Android phone/tablet, iPhone/iPad, Windows, macOS and Linux; and all six Chromium/Firefox/WebKit journeys across standard and isolated hosting. The browser harness uses the new accessible passage heading and retains its persistence/offline assertions. Five signing-related jobs were skipped as configured. Physical-device touch, VoiceOver/TalkBack, human language review and signing/store distribution remain separate gates. Details are in docs/TESTING.md. The React reference was inspected at 555008554d46e174dfdfb41e3bdc578d2a62a66e; this PR changes only the requested Flutter app repository.

@Llewellynvdm
Llewellynvdm marked this pull request as ready for review October 12, 2026 17:44
@Llewellynvdm
Llewellynvdm merged commit 4a4633d into main Oct 12, 2026
20 checks passed
@Llewellynvdm
Llewellynvdm deleted the feat/reader-passage-navigation branch October 12, 2026 18:04
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