diff --git a/releases/ChangeLog.md b/releases/ChangeLog.md index 09be8f5f..57e4d554 100644 --- a/releases/ChangeLog.md +++ b/releases/ChangeLog.md @@ -17,12 +17,13 @@ - Enhancement: Allow passphrase via USB if passphrase already set - operates on master seed. - Enhancement: Improve BIP39 Passphrase UX when temporary seed is active and applicable. - Enhancement: Continuation of removal of obsolete Mk2/Mk3 code-paths from master branch. +- Bugfix: Confusing first-time UX replaced with simple welcome screen. - Bugfix: One instant retry on SE1 commumication failures - Bugfix: Handle any failures in slot reading when loading settings - Bugfix: Add missing "First Time UX" for extended key import as master seed - Bugfix: Hide `Upgrade Firmware` menu item if temporary seed is active (it cannot work) - Bugfix: Disallow using master seed as temporary seed -- Bugfix: Do not allow `APPLY` of empty BIP-39 passphrase +- Bugfix: Do not allow `APPLY` of empty BIP-39 passphrase. Use "Restore Master" instead. - Bugfix: Fix yikes in `Clone Coldcard` (thanks to AnchorWatch) ## 5.2.0 - 2023-10-10 diff --git a/shared/ftux.py b/shared/ftux.py index fc486990..860148cf 100644 --- a/shared/ftux.py +++ b/shared/ftux.py @@ -2,55 +2,32 @@ # # ftux.py - First Time User Experience! A new ride at the waterpark. # -import version +import version, ckcc from glob import settings -from ux import ux_show_story, the_ux, ux_dramatic_pause -from actions import change_nfc_enable, change_virtdisk_enable, change_usb_disable - -COMMON = '''\ -\n -You can change this later under Settings > Hardware On/Off.''' +from ux import ux_show_story, the_ux +from actions import change_usb_disable class FirstTimeUX: async def interact(self): # Help them enable the good stuff. # - they might have already enabled things - # - some features not on mk3 - if version.has_nfc and not settings.get('nfc', 0): - msg = '''Enable NFC/Tap?\n\n\ -Lets you Tap your mobile phone on the COLDCARD and \ -transfer data easily via NFC.''' + COMMON - ch = await ux_show_story(msg) - if ch == 'y': - settings.set('nfc', 1) - await change_nfc_enable(1) - await ux_dramatic_pause('Enabled.', 1) - - # Disabled for now, because limited audience and - # extra barrier to "just getting started" - if 0: # if not settings.get('vidsk', 0): - msg = '''Enable USB Drive?\n\n\ -Connect your COLDCARD directly as a USB flash drive \ -to your phone or desktop. You will be able to drag-n-drop or \ -save PSBT files like other drives/volumes.''' + COMMON - ch = await ux_show_story(msg) - if ch == 'y': - # put them into full-auto mode: 2 - settings.set('vidsk', 2) - await change_virtdisk_enable(2) - await ux_dramatic_pause('Enabled.', 1) - - if not settings.get('vidsk', 0) and not settings.get('du', 0): - msg = '''Disable USB port?\n\n\ -If you intend to operate in Air-Gap mode, where this COLDCARD \ -is never connected to anything but power, then this will disable the USB port.''' + COMMON - ch = await ux_show_story(msg) + await ux_show_story(''' +Your COLDCARD has been configured for \ +best security practises: - if ch == 'y': - settings.set('du', 1) - await change_usb_disable(1) - await ux_dramatic_pause('Disabled.', 1) +- USB disabled +- NFC disabled +- VDisk disabled + +You can change these under Settings > Hardware On/Off.''', title="Welcome!") + + if not ckcc.is_simulator(): + settings.set('du', 1) # disable USB + await change_usb_disable(1) + + #settings.set('nfc', 0) # default already + #settings.set('vidsk', 0) # same as default # done the_ux.pop() diff --git a/testing/conftest.py b/testing/conftest.py index ec3f0d00..3cd028ab 100644 --- a/testing/conftest.py +++ b/testing/conftest.py @@ -344,7 +344,7 @@ def cap_menu(sim_exec): @pytest.fixture(scope='module') def is_ftux_screen(sim_exec): - "are we presenting a view from ftux.py" + "are we presenting a view from ftux.py??" def doit(): rv = sim_exec('from ux import the_ux; RV.write(repr(' 'type(the_ux.top_of_stack())))') @@ -361,15 +361,7 @@ def expect_ftux(cap_menu, cap_story, need_keypress, is_ftux_screen): _, story = cap_story() if not story: break - # XXX test more here - if 'Enable NFC' in story: - need_keypress('x') - elif 'Enable USB' in story: - need_keypress('y') - elif 'Disable USB' in story: - need_keypress('x') - else: - raise ValueError(story) + need_keypress('y') m = cap_menu() assert m[0] == 'Ready To Sign'