trezor-firmware icon indicating copy to clipboard operation
trezor-firmware copied to clipboard

Easy to get "stuck" in recovery mode

Open matejcik opened this issue 1 year ago • 7 comments

On TT, when the user gets to the "select number of words" screen, there is no Cancel button. By that time, the recovery mode is already on, and if you unplug and replug your Trezor, you jump straight back into "select number of words".

The thing the user can do is select a number to move on into the recovery homescreen, which has a Cancel button.

Solutions:

  • add a Cancel button to the "select number of words" screen -- very slightly nonpreferred because that's a design change
  • do not go to recovery mode before number is selected (so if the user unplugs at this screen, they go back to normal Trezor homescreen)

matejcik avatar Jan 26 '24 12:01 matejcik

The part where you plug in a Trezor, enter PIN, and go straight to "select number of words", is bad UX. At minimum, there should be the recovery homescreen asking you to click a button to go to the "select number of words" screen. (that would also solve this issue, though the only "true" solution is a Cancel button on the select number screen)

matejcik avatar Jan 26 '24 12:01 matejcik

IMHO, not entering "recovery mode" before the number of words is chosen is the best solution.

obrusvit avatar Aug 16 '24 13:08 obrusvit

After looking into this a little bit, the 2 suggested solutions:

  1. add a Cancel button to the "select number of words" screen

    • this would mean adding some way to close the window for TT and TS5 emu00000000 emu00000000
    • TS3 already has this choice separated into two screens and the first one has option to cancel
  2. do not go to recovery mode before number is selected

    • this would require either setting up a parameter for default homescreen, something like this:
    async def recovery_device(msg: RecoveryDevice) -> Success:
        # ... 
        word_count = await request_word_count(recovery_type)   
        workflow.set_default_with_args(recovery_homescreen, word_count)
    
    • or setting it into storage for later retrieval, something like this:
    async def recovery_device(msg: RecoveryDevice) -> Success:
        # ... 
        word_count = await request_word_count(recovery_type)
        storage_recovery.set_word_count(word_count)
    

Currently, it's bad UX because

  • you are greeted with this screen after turning on the device
  • even if you select the number of words and then you turn off and on, you have to select the number of words again

WDYT, @Hannsek @matejcik

obrusvit avatar Aug 18 '24 17:08 obrusvit

Cannot we "put the checkpoint" to the first screen rather than this screen with the numbers?

image

Hannsek avatar Aug 19 '24 05:08 Hannsek

Cannot we "put the checkpoint" to the first screen rather than this screen with the numbers?

how about dry-run recovery?

matejcik avatar Aug 19 '24 09:08 matejcik

We put an additional screen before the "number of words" screen in dry-run recovery.

Hannsek avatar Aug 19 '24 09:08 Hannsek