Temporary Seed Names does not fit as menu item on Mk4 & Mk5
What changed, and why it matters
This commit shortens a menu label on older COLDCARD devices (Mk4 and Mk5) because the original text 'Temporary Seed Names' was too long to display on their smaller screens. It is a user-interface fix with no security relevance.
No security action needed; treat as a normal UI/UX fix.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change in shared/flow.py conditionally uses ‘Tmp Seed Names’ instead of ‘Temporary Seed Names’ on non-QWERTY devices (Mk4/Mk5) so the ToggleMenuItem label fits the screen. The test file is updated to navigate using the correct label per device type and to set the ‘tsn’ setting through the UI rather than directly. There is no cryptographic, access-control, or firmware-integrity change.
Changed components
shared/flow.pytesting/test_ephemeral.pyInspect captured patch +14 / −4
### shared/flow.py
@@ -175,7 +175,7 @@ async def goto_home(*a):
'Master seed is displayed as <XFP>, temporary seeds as [XFP].'),
predicate=has_real_secret,
on_change=goto_home),
- ToggleMenuItem('Temporary Seed Names', 'tsn', ['Use XFP', 'Use Names'],
+ ToggleMenuItem('Temporary Seed Names' if version.has_qwerty else 'Tmp Seed Names', 'tsn', ['Use XFP', 'Use Names'],
story=("Show a temporary seed's Seed Vault name instead of its XFP "
"at the top of the home menu. If the name is too long to "
"fit, the XFP is shown."),
### testing/test_ephemeral.py
@@ -1768,6 +1768,18 @@ def test_home_menu_xfp(name_fits, goto_home, pick_menu_item, press_select, cap_s
assert m[0] == "<" + xfp2str(settings_get("xfp")) + ">"
assert m[1] == "Ready To Sign"
+ original_tsn = master_settings_get("tsn")
+ pick_menu_item("Settings")
+ pick_menu_item("Buried Settings")
+ pick_menu_item("Temporary Seed Names" if has_qwerty else "Tmp Seed Names")
+ time.sleep(.1)
+ _, story = cap_story()
+ if "Show a temporary seed's Seed Vault name" in story:
+ press_select()
+ pick_menu_item("Use Names")
+ time.sleep(.2)
+ assert master_settings_get("tsn") == 1
+
goto_eph_seed_menu()
pick_menu_item("Generate Words")
pick_menu_item(f"12 Words")
@@ -1783,18 +1795,16 @@ def test_home_menu_xfp(name_fits, goto_home, pick_menu_item, press_select, cap_s
press_select() # do not save
press_select() # new tmp seed
- time.sleep(.2)
+ time.sleep(.3) # allow temporary settings to save before modifying master settings
m = cap_menu()
assert m[1] == "Ready To Sign"
tmp_xfp = xfp2str(settings_get("xfp"))
assert m[0] == "[" + tmp_xfp + "]"
original_seeds = master_settings_get("seeds") or []
- original_tsn = master_settings_get("tsn")
sim_exec("from seed import SecretStash; from pincodes import pa; "
"encoded = SecretStash.storage_serialize(pa.tmp_value); "
"settings.master_set('seeds', %r + [(%r, encoded, 'Travel', 'test')]); "
- "settings.master_set('tsn', True); "
"from actions import goto_top_menu; goto_top_menu()" % (original_seeds, tmp_xfp))
goto_home()
assert cap_menu()[0] == "[Travel]"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.