What changed, and why it matters
This commit fixes two minor user-interface navigation bugs in a Bitcoin seed-signer device app. In one screen, pressing the hardware back button after entering a mnemonic incorrectly dumped the user at the main menu instead of going back. In another screen, the back-button response was checked too late, after normal menu choices, which could make the back button behave oddly. These are usability fixes, not security fixes.
No security action required; treat as a routine UI/UX fix. Reviewers may verify that back navigation now behaves consistently across seed creation flows.
Security signals we found
No security-relevant keywords in commit title or message
No changes to cryptography, key handling, or authentication
Change is purely UI navigation flow
No CVE, advisory, or vendor security disclosure referenced
Evidence from the diff
In SeedMnemonicEntryView, when the user cancels word entry (ret == None) and no words have been entered yet, the code now returns Destination(BackStackView) instead of Destination(MainMenuView), restoring expected back-stack navigation. In SeedFinalizeView, the RET_CODE__BACK_BUTTON check is moved above the button_data[selected_menu_num] comparisons so the back action is handled before any normal menu-item logic. No cryptographic, storage, or authentication code is touched.
Changed components
src/seedsigner/views/seed_views.py: SeedMnemonicEntryViewsrc/seedsigner/views/seed_views.py: SeedFinalizeViewInspect captured patch +4 / −4
diff --git a/src/seedsigner/views/seed_views.py b/src/seedsigner/views/seed_views.py
index e938da4..fe29568 100644
--- a/src/seedsigner/views/seed_views.py
+++ b/src/seedsigner/views/seed_views.py
@@ -230,7 +230,7 @@ class SeedMnemonicEntryView(View):
return Destination(BackStackView)
else:
self.controller.storage.discard_pending_mnemonic()
- return Destination(MainMenuView)
+ return Destination(BackStackView)
# ret will be our new mnemonic word
self.controller.storage.update_pending_mnemonic(ret, self.cur_word_index)
@@ -332,6 +332,9 @@ class SeedFinalizeView(View):
button_data=button_data,
)
+ if selected_menu_num == RET_CODE__BACK_BUTTON:
+ return Destination(BackStackView)
+
if button_data[selected_menu_num] == self.FINALIZE:
seed_num = self.controller.storage.finalize_pending_seed()
return Destination(SeedOptionsView, view_args={"seed_num": seed_num}, clear_history=True)
@@ -339,9 +342,6 @@ class SeedFinalizeView(View):
elif button_data[selected_menu_num] == self.PASSPHRASE:
return Destination(SeedAddPassphraseView)
- elif selected_menu_num == RET_CODE__BACK_BUTTON:
- return Destination(BackStackView)
-
class SeedAddPassphraseView(View):
Why this scored 19/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.