What changed, and why it matters
This commit only updates a text file documenting the device's on-screen menu structure and a small test script that prints that menu tree. It adds new menu entries (like 'Restore Seed XOR', 'Key Expression', 'Nuke Device'), reorganizes some settings under a 'Buried Settings' submenu, and updates shortcut labels. There are no firmware code changes, no cryptographic changes, and no changes to how the device protects secrets or handles transactions.
No security action required. This is a documentation/test-utility update. Treat as routine maintenance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff touches two files: docs/menu-tree.txt (a documentation-only menu map) and testing/devtest/menu_dump.py (a developer test helper that dumps the menu tree). The Python change imports ShortcutItem and maps KEY_NFC/KEY_QR to printable labels so the dump script can render shortcut items. The text file changes are purely descriptive reorganizations and additions to the documented menu hierarchy. No runtime firmware logic, security policy, or secret-handling code is modified.
Changed components
docs/menu-tree.txttesting/devtest/menu_dump.pyInspect captured patch +42 / −28
diff --git a/docs/menu-tree.txt b/docs/menu-tree.txt
index 8a9dea5..f910131 100644
--- a/docs/menu-tree.txt
+++ b/docs/menu-tree.txt
@@ -49,6 +49,7 @@
Import XPRV
Tapsigner Backup
Coldcard Backup
+ Restore Seed XOR
Upgrade Firmware [IF NOT TMP SEED]
Show Version
From MicroSD
@@ -157,12 +158,14 @@
Delete PSBTs
Default Keep
Delete PSBTs
- Menu Wrapping
- Default Off
- Enable
- Home Menu XFP [IF SECRET AND NOT TMP SEED]
- Only Tmp
- Always Show
+ Buried Settings
+ Home Menu XFP [IF SECRET AND NOT TMP SEED]
+ Only Tmp
+ Always Show
+ Menu Wrapping
+ Default
+ Always Wrap
+ [QR key shortcut] [IF QR SCANNER]
---
[NORMAL OPERATION]
@@ -173,13 +176,7 @@
[3A14F788]
Restore
Delete
- Edit Phrase [IF QWERTY]
- Add Word [IF NOT QWERTY]
- [SEED WORD MENUS]
- Add Numbers [IF NOT QWERTY]
- Clear All [IF NOT QWERTY]
- APPLY [IF NOT QWERTY]
- CANCEL [IF NOT QWERTY]
+ Edit Phrase
Scan Any QR Code [IF QR SCANNER]
Start HSM Mode [IF HSM POLICY]
Address Explorer
@@ -267,6 +264,7 @@
P2WPKH/P2SH (BIP-49)
Master XPUB
Current XFP
+ Key Expression
Dump Summary
Upgrade Firmware [IF NOT TMP SEED]
Show Version
@@ -298,6 +296,7 @@
P2WPKH/P2SH (BIP-49)
Master XPUB
Current XFP
+ Key Expression
Dump Summary
Sign Text File
Batch Sign PSBT
@@ -351,8 +350,9 @@
Import XPRV
Tapsigner Backup
Coldcard Backup
+ Restore Seed XOR
Key Teleport (start)
- Spending Policy
+ Spending Policy [IF SECRET AND NOT TMP SEED]
Single-Signer [IF SECRET AND NOT TMP SEED]
Co-Sign Multisig (CCC) [IF NOT TMP SEED]
HSM Mode [IF HSM AND SECRET]
@@ -410,6 +410,7 @@
MCU Key Slots
Bless Firmware
Wipe LFS
+ Nuke Device
Settings
Login Settings
Change Main PIN
@@ -484,9 +485,7 @@
View Descriptor
Export
Bitcoin Core
- Import from File
- Import from QR [IF QR SCANNER]
- Import via NFC [IF NFC ENABLED]
+ Import
Export XPUB
Create Airgapped
Trust PSBT?
@@ -541,17 +540,18 @@
Delete PSBTs
Default Keep
Delete PSBTs
- Menu Wrapping
- Default Off
- Enable
- Home Menu XFP [IF SECRET AND NOT TMP SEED]
- Only Tmp
- Always Show
Keyboard EMU
Default Off
Enable
+ Buried Settings
+ Home Menu XFP [IF SECRET AND NOT TMP SEED]
+ Only Tmp
+ Always Show
+ Menu Wrapping
+ Default
+ Always Wrap
Secure Logout
- SHORTCUT [IF NFC ENABLED]
+ [NFC key shortcut] [IF NFC ENABLED]
Sign PSBT
Show Address
Sign Message
@@ -647,6 +647,7 @@
P2WPKH/P2SH (BIP-49)
Master XPUB
Current XFP
+ Key Expression
Dump Summary
Verify Sig File
NFC File Share [IF NFC ENABLED]
@@ -677,6 +678,7 @@
P2WPKH/P2SH (BIP-49)
Master XPUB
Current XFP
+ Key Expression
Dump Summary
Teleport Multisig PSBT [MAYBE]
View Identity
@@ -690,6 +692,7 @@
Import XPRV
Tapsigner Backup
Coldcard Backup
+ Restore Seed XOR
Paper Wallets
NFC Tools [IF NFC ENABLED]
Sign PSBT
@@ -699,10 +702,11 @@
Verify Address
File Share
Push Transaction [IF PUSHTX ENABLED]
- Destroy Seed
+ Show Firmware Version
+ Destroy Seed [IF SECRET AND NOT TMP SEED]
Secure Logout
EXIT TEST DRIVE [MAYBE]
- SHORTCUT [IF NFC ENABLED]
+ [NFC key shortcut] [IF NFC ENABLED]
Sign PSBT
Show Address
Sign Message
diff --git a/testing/devtest/menu_dump.py b/testing/devtest/menu_dump.py
index d10be3c..a3a5ded 100644
--- a/testing/devtest/menu_dump.py
+++ b/testing/devtest/menu_dump.py
@@ -9,7 +9,7 @@
async def doit():
import version
async def dump_menu(fd, m, label, indent, menu_item=None, menu_idx=0, whs=False):
- from menu import MenuItem, ToggleMenuItem, MenuSystem, NonDefaultMenuItem
+ from menu import MenuItem, ToggleMenuItem, MenuSystem, NonDefaultMenuItem, ShortcutItem
from seed import WordNestMenu, EphemeralSeedMenu, SeedVaultMenu, not_hobbled_mode
from trick_pins import TrickPinMenu
from users import UsersMenu
@@ -17,9 +17,15 @@ async def doit():
from flow import hsm_policy_available, is_not_tmp, has_real_secret
from flow import has_se_secrets, hsm_available, qr_and_has_secrets, has_pushtx_url
from flow import sssp_related_keys, sssp_allow_passphrase, sssp_allow_notes, sssp_allow_vault
+ from charcodes import KEY_NFC, KEY_QR
print("%s%s"% (indent, label), file=fd)
+ KEYMAP = {
+ KEY_NFC: 'NFC',
+ KEY_QR: 'QR',
+ }
+
if label == 'PIN Options':
# n/a for mk4
m = []
@@ -61,7 +67,11 @@ async def doit():
if isinstance(mi, str):
here = mi
elif isinstance(mi, MenuItem) or isinstance(mi, NonDefaultMenuItem):
- here = mi.label
+
+ if isinstance(mi, ShortcutItem):
+ here = "[%s key shortcut]" % KEYMAP[mi.shortcut_key]
+ else:
+ here = mi.label
if here == "Trick PINs" and not whs:
# trick pins are not available in EmptyWallet
Why this scored 15/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.