Repository navigation
3.2.1: a second quick tap no longer empties the screen or creates a second note - #43
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
onBackcalledpopBackStack()unguarded; the editor, still drawn during its exit transition, tookthe 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 throughdepuis(entry)— it happens only if that entry isstill
currentBackStackEntry. NotdropUnlessResumed: it would also drop what the editor navigateson 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 throughdropUnlessResumed.HomeViewModel.createNote: one creation at a time, like import and export.Proof
DoubleToucherTestdrives the whole app with Compose's clock paused between the two gestures: fourtests, 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.
picker); backup, vault and menu actions (already guarded); trash and list gestures.
0.15 s → the list.
empty file the picker created is deleted, the cache is clean.
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.mdD-035.🤖 Generated with Claude Code