Skip to content

3.2.1: a second quick tap no longer empties the screen or creates a second note - #43

Merged
gitubpatrice merged 2 commits into
mainfrom
fix/double-tap-navigation
Oct 30, 2026
Merged

gitubpatrice merged 2 commits into
mainfrom
fix/double-tap-navigation

Conversation

@gitubpatrice

Copy link
Copy Markdown
Owner

3.2.1 — a second quick tap no longer empties the screen or creates a second note

The defect, published in 3.1.1 and 3.2.0: two taps on a note's back arrow less than ~0.5 s apart
left a white screen (measured on the published 3.2.0: 0.4 s → blank, 0.7 s → normal). Every
onBack called popBackStack() unguarded; the editor, still drawn during its exit transition, took
the second tap and popped the note list too — an empty NavHost. Back closed the app; nothing was lost.

Same family, measured: a double tap on a note stacked it twice; a double tap on "New note" stacked two
editors (Galaxy S9) and created two notes, the second one left empty.

Fix

  • NotesTechNavHost: every navigation goes through depuis(entry) — it happens only if that entry is
    still currentBackStackEntry. Not dropUnlessResumed: it would also drop what the editor navigates
    on its own (a deletion done, the unlock sheet dismissed, a linked note created) while its entry is not
    resumed yet, and the note would stay on screen.
  • HomeRoute: the "New note" tap goes through dropUnlessResumed.
  • HomeViewModel.createNote: one creation at a time, like import and export.

Proof

  • DoubleToucherTest drives the whole app with Compose's clock paused between the two gestures: four
    tests, each seen red (the arrow and the note on the 3.2.0 code, the two "New note" ones without the
    screen's guard). The ViewModel guard has no test: on the emulator the creation ends before any second
    tap; it is kept for slow phones.
  • Measured without defect: two quick system Backs; the arrow then Back; a double tap on Import (one
    picker); backup, vault and menu actions (already guarded); trash and list gestures.
  • Real taps on the 3.2.1 debug build (emulator): double "New note" → one note, one Back; double arrow at
    0.15 s → the list.
  • Process killed while the backup picker is open: the app restarts with "could not be completed", the
    empty file the picker created is deleted, the cache is clean.
  • Local gate (build, unit tests, detekt, ktlint, lint) green; full instrumented suite on the emulator:
    547 tests, the usual 12 environment failures (software Keystore, no biometrics, no Whisper model).

Release

versionCode base 504 (5040 universal, 5041/5042/5043), changelogs in five languages, READMEs and
SECURITY (EN/FR), docs/13-VERSION-3.2.md D-035.

🤖 Generated with Claude Code

gitubpatrice and others added 2 commits October 30, 2026 15:31
…reates a second note

On 3.1.1 and 3.2.0 as published, two taps on a note's back arrow less than ~0.5 s
apart left a WHITE screen: every onBack called popBackStack() unguarded, and the
editor, still drawn during its exit transition, took the second tap and popped the
note list too. A double tap on a note stacked it twice; a double tap on "New note"
stacked two editors and created two notes, the second one left empty.

- NotesTechNavHost: every navigation goes through depuis(entry) and happens only if
  that entry is still the current one. Not dropUnlessResumed: it would also drop what
  the editor navigates on its own (a deletion done, the unlock sheet dismissed, a
  linked note created) while its entry is not resumed yet.
- HomeRoute: the "New note" tap goes through dropUnlessResumed, so a tap during the
  editor's opening transition creates nothing.
- HomeViewModel.createNote: one creation at a time, like import and export (kept for
  slow phones; no test can open that window on the emulator).

DoubleToucherTest drives the whole app with Compose's clock paused between the two
gestures. Each test was seen red: the arrow and the note on the 3.2.0 code, the two
"New note" ones without the screen's guard. Measured without defect: two quick system
Backs, the arrow then Back, a double tap on Import (one picker), backup/vault/menu
actions (already guarded), trash and list gestures (a second run finds nothing to do).
Full instrumented suite on the emulator: 547 tests, the usual 12 environment failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
versionCode base 504 (APKs 5040 universal, 5041/5042/5043 per ABI). Changelogs in five
languages (223 to 280 characters). README and SECURITY in English and French: what's
new in 3.2.1, "no security change". docs/13-VERSION-3.2.md: D-035, the double tap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gitubpatrice
gitubpatrice merged commit 5423ea8 into main Oct 30, 2026
11 checks passed
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