1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-12 09:28:10 +00:00
Commit Graph

826 Commits

Author SHA1 Message Date
obrusvit
d15ecfb859 refactor(core/mercury): self-updating footer
This commit enables registering function for updating footer and header
based on the content. This eliminates the need to create wrappers around
Frame to update them.

[no changelog]
2024-09-12 21:26:45 +02:00
Ioan Bizău
f6aa7cbb08 fix(core): tweak swipes in ETH staking flow 2024-09-12 11:45:30 +03:00
Ioan Bizău
ba8f0ea4bc feat(core): use new ETH send flow also for staking 2024-09-03 18:59:53 +03:00
obrusvit
c5f9fadbd1 fix(core/mercury): show remaining shares
This commit enables showing "Remaining shares" from the context menu
during recovery process. This is only shown during super-shamir.
2024-09-03 14:20:34 +02:00
tychovrahe
d334b92073 feat(core): add bootloader unlocking functionality to U5 optiga models 2024-09-03 13:07:34 +02:00
tychovrahe
b8c27d5fd6 feat(core/bootloader): only allow confirm-less firmware installation for full-trust images 2024-09-03 08:39:42 +02:00
Martin Milata
7db1529533 refactor(core/ui): alternative multipage footer 2024-09-02 19:36:25 +02:00
Martin Milata
2572705d1f refactor(core/ui/mercury): delete CancelInfoConfirm
[no changelog]
2024-09-02 19:36:25 +02:00
Martin Milata
7c8be6f0ea fix(core/ui/mercury): FIDO2 layouts 2024-09-02 19:36:25 +02:00
tychovrahe
6caafd6642 fix(core/bootloader): fix T3B1 bootloader UI - unsafe screen, boot image 2024-09-02 15:50:51 +02:00
obrusvit
9e18e72a2c feat(core): ask for 20/33 words to unlock backup
Unlocking repeated backup is only possible with SLIP-39 extendable
backup which contains shares of 20 or 33 words. It is UI bug to have the
user choose from all options (12, 18, 20, 24, 33). This commit reduces
the choices when unlocking repeated backup to (20, 33) for all models.
2024-08-29 16:01:13 +02:00
tychovrahe
384615c047 fix(core): fix button alignment in T3T1 bootloader
[no changelog]
2024-08-29 10:49:32 +02:00
obrusvit
f0989e20b8 fix(core/ui): fix persistent word during recovery
Remove the current word from recovery progress if a user goes to
previous word.

[no changelog]
2024-08-28 14:33:02 +02:00
obrusvit
65d3fd00f1 fix(core/ui): fix mnemonic keys availability
This commit disables keys of mnemonic keyboard if their press cannot
lead to a valid word if the keyboard is initialized with a pre-filled
word. This is useful to get valid keyboard state when going to a
previous word during recovery.

[no changelog]
2024-08-28 14:33:02 +02:00
obrusvit
e2022db8fa feat(core/mercury): use less severe icon color
Not using danger color during onboarding.

[no changelog]
2024-08-28 14:21:07 +02:00
Andrew Kozlik
2a567f3a0c feat: Remove display_random feature. 2024-08-27 19:33:23 +02:00
Ioan Bizău
b747a5bcc9 refactor(core): merge confirm_summary flow into confirm_output flow 2024-08-27 16:21:03 +03:00
Ioan Bizău
692eee3e07 feat(core): add progress to Ethereum transaction signing 2024-08-27 16:21:03 +03:00
Ioan Bizău
09d3301785 feat(core): improve ETH send flow 2024-08-27 16:21:03 +03:00
obrusvit
e19138cdc8 chore(core): remove unused mercury ButtonContent
[no changelog]
2024-08-22 08:58:10 +02:00
obrusvit
50dc265162 feat(core/mercury): impl flow_request_passphrase
This commit replaces request_passphrase with flow_request_passphrase.
The added benefit is that the user is prompted for confirmation if they
want to proceed with an empty passphrase.
2024-08-22 00:47:15 +02:00
obrusvit
60ad7219fe refactor(core): use PromptMsg instead of Option<>
PromptScreen now uses dedicated PromptMsg with Confirmed and Cancelled
values instead of empty Option<>. This change affects only mercury code.

This is more explicit and enables "yes" or "no" prompts screens.
Otherwise, the "no" option was handled by the 'x' button handled by
Frame.

[no changelog]
2024-08-22 00:47:15 +02:00
obrusvit
2b4d6eb798 feat(core/mercury): passphrase confirm empty btn
[no changelog]
2024-08-22 00:47:15 +02:00
obrusvit
15526343c9 feat(core/mercury): introduce binary_selection
This commit adds a Component which prompts a user with a pair of two
buttons - left and right. The Component is parametrized by the buttons
contents and styles.

[no changelog]
2024-08-22 00:47:15 +02:00
obrusvit
d99a94758b feat(core/mercury): allow passphrase in FlowStore
[no changelog]
2024-08-22 00:47:15 +02:00
obrusvit
2203d9be1a feat(core/ui): introduce FlowMsg::Text option
This commit allows flows to work with ShortString which can be converted
to micropython as str.

[no changelog]
2024-08-22 00:47:15 +02:00
tychovrahe
5417ec15df fix(core): introduce ui_overlay feature - fixes T3T1 bootloader compilation with new rendering
[no changelog]
2024-08-19 12:17:11 +02:00
tychovrahe
182f8d9774 chore(core): fix unused warning
[no changelog]
2024-08-01 16:17:12 +02:00
tychovrahe
effd81ed3b chore(core): fix xframebuffer conditionals
[no changelog]
2024-08-01 16:17:12 +02:00
obrusvit
fbf380caba refactor(core/mercury): init Paragraphs from Vec
[no changelog]
2024-07-31 11:52:47 +02:00
obrusvit
71b2c986f8 feat(core/ui): send BR from rust during recovery
[no changelog]
2024-07-31 11:36:32 +02:00
obrusvit
510230628b feat(core): allow BR from rust on every Attach
This commit allows creating a rust flow in which a component sends the
configured ButtonRequest repeatedly on every Event::Attach.

This is necessary in recovery homescreen flow where we want to send
ButtonRequest also after restarting the device.

[no changelog]
2024-07-31 11:36:32 +02:00
obrusvit
11308f578d feat(core/ui): T3T1 instruction screens between shares
Changes the content and visual appearance of the screens between shares
during multi-share (shamir) recovery. Context menu with the option to
cancel is added to the screen.
2024-07-31 11:36:32 +02:00
Ioan Bizău
5188dfc83d feat(core): deal with non-breaking spaces
[no changelog]
2024-07-30 18:48:01 +03:00
Ioan Bizău
33f5d47330 chore(core): rename "hidden wallet" -> "passphrase wallet"
[no changelog]
2024-07-29 17:45:28 +03:00
tychovrahe
79feb690ad fix(core/mercury): prefer vertical swipes over horizontal 2024-07-29 15:47:24 +02:00
Ioan Bizău
6f96585d4b feat(core): make brightness an u8
[no changelog]
2024-07-29 13:30:34 +03:00
tychovrahe
a15dd6598f fix(core/mercury): improve share words swiping animation 2024-07-29 09:07:35 +02:00
obrusvit
008490bf4b refactor(core/mercury): unify confirm TOS
[no changelog]
2024-07-28 23:14:12 +02:00
obrusvit
f41176af02 feat(core/mercury): change FW update UI
This commit changes the UI of confirming interaction-less firmware
update.
2024-07-28 22:11:30 +02:00
Martin Milata
888e384f79 refactor(core/mercury): remove unnecessary Child
[no changelog]
2024-07-25 21:09:43 +00:00
obrusvit
c6df2179d6 fix(core): show correct word count in more info
Make translated strings describing recovery shares templated so that we
can show correct number of words (i.e. 20 or 33) in more info.
2024-07-22 12:09:16 +02:00
obrusvit
0d987a68f4 fix(core/mercury): multi-share backup more info
The commit fixes More Info screen hidden behind context menu during a
prompt for number of shares and shares threshold. It removes wrong title
and enables changing the info text based on currently selected number.
2024-07-22 12:09:16 +02:00
obrusvit
958d08cc91 fix(core/mercury): small copy change in tutorial
[no changelog]
2024-07-19 15:05:36 +02:00
Ioan Bizău
522d33a71f refactor(core): send out ButtonRequest name
[no changelog]
2024-07-19 11:28:07 +03:00
obrusvit
108d9c737e feat(core/mercury): add rounded overlay to keypads
Make the corner keys of passphrase and mnemonic keyboards rounded by an
overlay, similarly to PIN keyboard.

[no changelog]
2024-07-18 23:57:13 +02:00
tychovrahe
a700ff8dff refactor(core): extract non-generic code from SwipeContent
[no changelog]
2024-07-18 09:12:35 +02:00
tychovrahe
df018a2af8 refactor(core/mercury): extract non-generic code from confirm action
[no changelog]
2024-07-17 20:57:58 +02:00
tychovrahe
873658104d refactor(core/mercury): extract non-generic code from frame component
[no changelog]
2024-07-17 20:23:19 +02:00
tychovrahe
f2bdd6e189 fix(core/mercury): change status screen - display message in center after animation
Because some messages didn't fit the title
2024-07-17 20:23:19 +02:00
tychovrahe
747303fd39 fix(core/mercury): fix trace impl for TapToConfirm and HoldToConfirm
[no changelog]
2024-07-17 20:23:19 +02:00
tychovrahe
905beb6ede refactor(core/mercury): extract swipe cover rendering from frame
[no changelog]
2024-07-17 20:23:19 +02:00
tychovrahe
e6a2a3b263 refactor(core/mercury): extract frame header to separate component
[no changelog]
2024-07-17 20:23:19 +02:00
Ioan Bizău
7d90552d81 refactor(core/ui): new Mercury design for number input slider 2024-07-17 17:10:05 +03:00
Ioan Bizău
7404436305 refactor(core/ui): optimize brightness settings for Mercury 2024-07-17 17:10:05 +03:00
tychovrahe
2994317dcd fix(core/mercury): homescreen attach animation, resume animations after an interrupt from workflow 2024-07-16 23:12:32 +02:00
tychovrahe
ff869dd864 feat(core/mercury): pin entry animation
[no changelog]
2024-07-16 23:12:32 +02:00
tychovrahe
b99325a764 feat(core/mercury): menu animation 2024-07-16 23:12:32 +02:00
Martin Milata
7e26e1df15 chore(core/rust): drop unused ui_bounds
[no changelog]
2024-07-16 16:23:19 +00:00
matejcik
3884abde64 chore(core/rust): remove warnings in translations 2024-07-16 13:29:56 +02:00
matejcik
3fcb0acaff refactor(core/rust): refactor SwipeFlow
* remove SwipeStore in favor of Vec<dyn FlowComponent>
* unify state and controllers
* implement tighter coupling between controller/states and pages of the
flow
2024-07-16 13:29:56 +02:00
matejcik
4c10a4f643 chore(core/rust): publish the ConcreteRenderer types for each renderer version
we need them to be able to spell out a concrete type of the argument to
`render()`
2024-07-16 13:29:56 +02:00
matejcik
863dee1a43 refactor(core/rust): reorganize LayoutObj
* move most actual functionality to LayoutObjInner
* subsume features of top-level Root and Child into LayoutObjInner
(saving ~7 kB of flash because LayoutObjInner is not generic)
* make use of GcBox to drop the top-level component
2024-07-12 09:46:50 +02:00
matejcik
2a896c44f6 feat(core/rust): introduce GcBox 2024-07-12 09:46:50 +02:00
tychovrahe
3bc9e23260 feat(core): add support for 32bit colors in UI
[no changelog]
2024-07-09 11:44:21 +02:00
obrusvit
4fe4bb0bed chore(core): remove some unused assets and code
Removing model_t leftovers from mercury code.

[no changelog]
2024-07-03 14:16:10 +02:00
tychovrahe
23d31cc8b3 fix(core): fix lockscreen Not connected label hiding
[no changelog]
2024-07-01 09:07:07 +00:00
Martin Milata
106edd4309 feat(core/ui): T3T1: tutorial flow
[no changelog]
2024-07-01 09:35:11 +02:00
tychovrahe
d08f5d05aa fix(core/mercury): improve handling and visual of swipes when displaying words 2024-07-01 09:33:40 +02:00
tychovrahe
e5fc1e1d42 fix(core/mercury): fix swipe animation when repeatedly touching display while the transition is already in effect 2024-07-01 09:33:40 +02:00
tychovrahe
56385f79c7 fix(core/mercury): disallow swipes when touch starts too close to an edge of the display 2024-07-01 09:33:40 +02:00
tychovrahe
bfbcecc085 fix(core/mercury): fix swipe effect duration when swipe is cancelled 2024-07-01 09:33:40 +02:00
tychovrahe
272b668feb fix(core/mercury): remove instant lock-trigger swipe behavior
[no changelog]
2024-07-01 09:33:40 +02:00
tychovrahe
a0e33d61bd fix(core/mercury): fix share words hold to confirm swipe effect 2024-07-01 09:33:40 +02:00
tychovrahe
e89ae8246d fix(core/mercury): do not block swipe on button press, abort press on swipe lock instead 2024-07-01 09:33:40 +02:00
tychovrahe
a4ff76e840 fix(core/mercury): adjust swipe effect direction when animating transition through python 2024-07-01 09:33:40 +02:00
obrusvit
c73115df7b feat(core/ui): add PageCounter to T3T1 Footer
PageCounter sub-component is used within Footer to indicate progress in
screens, rendered e.g. as "1 / 20" for the first word in wallet backup.
2024-06-30 12:07:09 +02:00
obrusvit
aaa2ece3ba feat(core/ui): highlight repeated words on T3T1
ShowShareWords flow now informs the user if the word is repeated. The
most typical usecase in 1-of-1 shamir (SingleShare) where 3rd and 4th
word is "academic".
2024-06-30 12:07:09 +02:00
tychovrahe
95c2cb2008 fix(core/mercury): show coinjoin authorized notification 2024-06-24 21:43:08 +02:00
tychovrahe
60add32e3b fix(core): T2B1 - left align title when changing homescreen
[no changelog]
2024-06-24 21:43:08 +02:00
tychovrahe
9ab2ba9157 feat(core/mercury): animated device label on homescreen/lockscreen 2024-06-24 21:43:08 +02:00
tychovrahe
3a3259b574 feat(core/mercury): change homescreen flow 2024-06-24 21:43:08 +02:00
cepetr
a8f808822c fix(core/rust): shorten the ANIM_FRAME_TIMER deadline
[no changelog]
2024-06-19 16:40:23 +02:00
obrusvit
ed624e1cb8 feat(core/ui): use numerals in T3T1 checklist
[no changelog]
2024-06-19 16:02:24 +02:00
cepetr
3460c4b891 refactor(core/embed): prepare touch drivers for low power mode
[no changelog]
2024-06-19 14:03:38 +02:00
obrusvit
a01a787113 refactor(core): remove StringType
This commit removes the last usage of StringType. In the future, we use
TString.

[no changelog]
2024-06-19 09:14:51 +02:00
matejcik
4e788aa2f5 fix(core/rust): more careful management of ShortString capacity 2024-06-19 09:14:51 +02:00
matejcik
8cf039740f style(core/rust): rustfmt 2024-06-19 09:14:51 +02:00
matejcik
8e52081d8a refactor(core/rust): unify String usage 2024-06-19 09:14:51 +02:00
matejcik
da37bce59d refactor(core/rust): drop ui::macros
removing inttostr!, build_string!, and relocating include_res!
2024-06-19 09:14:51 +02:00
matejcik
8134490e2e feat(core): introduce uformat!, use uDebug in favor of Debug
now that we have ufmt, this is just much nicer
2024-06-19 09:14:51 +02:00
matejcik
b406fc22f3 refactor(core/rust): clean up macro namespace 2024-06-19 09:14:51 +02:00
matejcik
567de6579e chore(core/rust): drop cstr_core dependency
now that we have c"..." literals in Rust
2024-06-19 09:14:51 +02:00
cepetr
0f1cac9695 refactor(core): optimize assert/fatal_error for reduced flash footprint
[no changelog]
2024-06-17 16:57:33 +02:00
cepetr
06faae8f82 refactor(core/rust): replace panic! by fatal_error!
[no changelog]
2024-06-17 16:57:33 +02:00
cepetr
f5203011c5 feat(core/rust): introduce dbg_print and improve errors printing
[no changelog]
2024-06-17 16:57:33 +02:00
cepetr
5fc3c6e617 refactor(core): improve and simplify error handling
[no changelog]
2024-06-17 16:57:33 +02:00
tychovrahe
dfe6826101 fix(core): add missing swipe right to address QR screen - mercury ui 2024-06-10 14:50:28 +02:00
tychovrahe
84c182fdac fix(core): reduce animation frame requests when swiping
[no changelog]
2024-06-10 14:49:52 +02:00
Ioan Bizău
b28e29cf4f chore(core): update copy and translate
[no changelog]
2024-06-06 21:29:29 +02:00
Martin Milata
3760dd307c fix(core/ui): T3T1: wrong XPUB title
[no changelog]
2024-06-06 14:43:51 +00:00
Martin Milata
e0dfa15e89 fix(core/ui): T3T1 confirm_action: hold implies prompt_screen 2024-06-06 14:00:13 +02:00
obrusvit
7b291725e2 fix: TypeError from SwipeUpScreen
This allows cancellable homescreen.

This commit also adds cancel to recovery homescreen.
2024-06-06 14:00:13 +02:00
obrusvit
e30de62adc tests: fix input_flows
Reset/recovery tests after adding Wallet created screen and separate
backup intro.

Regen signatures.json after rebase.

[no changelog]
2024-06-06 14:00:13 +02:00
obrusvit
fd59c2ce88 feat(core/ui): T3T1 backup cannot be skipped
This commit disallows the user to exit backup flow once initiated.

It also ensurer the  intro screen is shown when initiating backup via
protobuf msg after it was previously skipped during wallet creation.

[no changelog]
2024-06-06 14:00:13 +02:00
obrusvit
25a9ef3cf5 feat(core/ui): info screens before ShareWords
Inform the user about possible repeated words in 1-of-1 SLIP39.

Instruct the user to "repeat for all shares".

[no changelog]
2024-06-06 14:00:13 +02:00
obrusvit
dd70b438d3 feat(core/ui): default button active style
[no changelog]
2024-06-06 14:00:13 +02:00
obrusvit
5bd6996ae4 feat(core/ui): show success screens between shares
This commit also adds minor improvements to reset flow.

[no changelog]
2024-06-06 14:00:13 +02:00
Martin Milata
6911870654 fix(core/ui): T3T1: ethereum signtx hold
[no changelog]
2024-06-06 14:00:13 +02:00
Martin Milata
b567d15732 perf(core/ui): T3T1: reduce ParagraphSources to save flash
[no changelog]
2024-06-06 14:00:13 +02:00
Martin Milata
b64c8ef6a2 perf(core/ui): remove Child from T3T1 Frame
[no changelog]
2024-06-06 14:00:13 +02:00
Martin Milata
320fa06122 fix(core/ui): T3T1: prompt screen for confirm_action
[no changelog]
2024-06-06 14:00:13 +02:00
Martin Milata
4d6af487f4 fix(core/ui): T3T1: remove ButtonPage, Dialog, IconDialog
[no changelog]
2024-06-06 14:00:13 +02:00
Martin Milata
e268f79749 fix(core/ui): T3T1: improve passphrase prompt
[no changelog]
2024-06-06 14:00:13 +02:00
tychovrahe
9ee670a440 feat(core): change default homescreen image for mercury
the default homescreen is rendered algorithmically, when changing homescreen to default we now use text message due to lack of scaling

[no changelog]
2024-06-06 14:00:13 +02:00
tychovrahe
0cd36cd41b fix(core): fix lockscreen animation cutting from right and bottom
[no changelog]
2024-06-06 14:00:13 +02:00
tychovrahe
2f6ade5911 feat(core): word quiz enter animation
[no changelog]
2024-06-06 14:00:13 +02:00
tychovrahe
6ad41aa06e feat(core): improve hold to confirm animation
[no changelog]
2024-06-06 14:00:13 +02:00
tychovrahe
a66dd78ef7 fix(core): fix missing hold to confirm screen
[no changelog]
2024-06-06 14:00:13 +02:00
Martin Milata
9cd933b88e perf(core/ui): save flash by forbidding some inlining
[no changelog]
2024-06-06 14:00:13 +02:00
matejcik
d1cf36097a refactor(core): optimize repeated code for swipe directions 2024-06-06 14:00:13 +02:00
matejcik
fbfb000d62 refactor(core): optimize copyabilitity in swipe_detect 2024-06-06 14:00:13 +02:00
tychovrahe
a67bc19bac feat(core) screen transitions for mercury UI
[no changelog]
2024-06-06 14:00:13 +02:00
Ioan Bizău
ed58409888 chore(core): update tests 2024-06-05 12:35:09 +03:00
Ioan Bizău
8870869f93 chore(core): rename recovery type & kind and tweak feature flags 2024-06-05 12:35:09 +03:00
Ioan Bizău
8ef7dfab0d feat(core): implement repeated backup 2024-06-05 12:35:09 +03:00
matejcik
4e1e3bc550 fix(core): revert bad renderer lifetime changes
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
f793e6d509 refactor(core): move mercury loader to cshape module
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
51c1ff728d refactor(core): remove lockscreen lifetimes
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
e03d404dca fix(core): ensure drop is called on layout objects
[no changelog]
2024-06-03 19:43:08 +02:00
matejcik
813d9b7687 feat(core/rust): add option to Gc-allocate with finaliser
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
288c855868 fix(core): prevent negative circle rendering
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
88078db700 feat(core): mercury ui homescreen
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
429a558d78 fix(core): mercury ui animations only ask for frame on timer event
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
e53e7cc13b refactor(core): mercury ui: downgraded homescreen module to file
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
a34c2cb9dd feat(core): animated lockscreen for mercury UI
[no changelog]
2024-06-03 19:43:08 +02:00
tychovrahe
17072faa65 feat(core): animate status screen in mercury ui
[no changelog]
2024-06-03 14:26:25 +02:00
tychovrahe
47a2661736 feat(core): respect disable animations in hold to confirm
[no changelog]
2024-06-03 14:26:25 +02:00
tychovrahe
c8c7001301 feat(core): implement tap to confirm in mercury UI
[no changelog]
2024-06-03 14:26:25 +02:00
tychovrahe
491aeaa0f5 feat(core): add value info to brightness dialog in mercury
[no changelog]
2024-06-03 14:26:25 +02:00
tychovrahe
3a8595b43a fix(core): ensure circles with radius zero are not rendered
[no changelog]
2024-06-03 14:26:25 +02:00
tychovrahe
67fe334dc2 feat(core): add hold-to-confirm animation to mercury UI
[no changelog]
2024-06-03 14:26:25 +02:00
cepetr
1f01150e7c feat(core): introduce a stopwatch
[no changelog]
2024-06-03 14:26:25 +02:00
cepetr
212391fc37 feat(core): add pareen & easer crates
[no changelog]
2024-06-03 14:26:25 +02:00
tychovrahe
2e10d440fa fix(core): add subtitle to confirm action
[no changelog]
2024-06-03 14:26:25 +02:00
matejcik
9bed793f68 refactor(core): provide backlight values from Rust 2024-06-03 14:26:25 +02:00
tychovrahe
a65511846b feat(core): added user adjustable brightness setting 2024-06-03 14:26:25 +02:00
matejcik
5ec8b58772 style(core/rust): remove unreachable statement 2024-05-31 15:49:29 +02:00
matejcik
dd0fe3d878 test(core/ui): fix Rust paragraph splitting unit tests on T3T1 2024-05-31 15:49:29 +02:00
matejcik
9a6f6c6b75 fix(core/ui): fix build of Rust unit tests on T3T1 2024-05-31 15:49:29 +02:00