1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-05-11 19:38:48 +00:00
Commit Graph

1990 Commits

Author SHA1 Message Date
matejcik
87b7eccb6a fix(core): do not use local import for RecoveryAborted
This side-steps a double-import problem that is triggered when we
perform an unimport in a particularly unfortunate order. (don't ask)

The root cause of the problem still exists: we can get into a situation
where a live recovery_homescreen is running from an unimported module,
meaning that any new import of anything from the recovery_device
namespace will _also_ be a double-import. We don't have a fix for that
situation yet, so instead we avoid this particular local import, which
would cause homescreen_dialog to have its own copy of the `recover`
module.
2025-02-20 16:09:14 +01:00
matejcik
2ee0f7028c fix(core): update exception name in layout shutdown reporting
also return after the exception branch, so that the "value" is not
reported twice, once as an exception and a second time as a "non-none
return"
2025-02-20 16:09:14 +01:00
Ioan Bizău
609e14264f fix(core/ui): back button
[no changelog]
2025-02-19 16:14:08 +01:00
Roman Zeyde
f4ebc0d9d8 docs(core): fix get_bytes_as_str docstring
[no changelog]
2025-02-18 11:56:42 +01:00
obrusvit
c69d2c9aff Merge branch 'release/25.02' into obrusvit/merge-release-25.02 2025-02-13 11:42:08 +01:00
Ioan Bizău
b8e2709ca8 fix(core): fix br_code inconsistency in sign-tx
[no changelog]
2025-02-11 16:10:58 +01:00
Ioan Bizău
c8210056da fix(core/ui): fix back button
[no changelog]
2025-02-11 16:10:58 +01:00
Ioan Bizău
d487f97ecf feat(core): show ETH account info on model T 2025-02-11 16:10:58 +01:00
Roman Zeyde
061e71213e test(core): don't fetch full DebugLinkState by default
In case the main workflow is restarting after a `DebugLinkDecision`,
sending the response of `DebugLinkGetState` may get interrupted.

We are making the state fetching explicit, in order to avoid the
"restart" race condition (as described in #4401).

Following the above change, text-based layout recording is removed.

[no changelog]
2025-02-07 11:21:44 +01:00
obrusvit
cf5b89f90a refactor(core): get rid of font IDs in micropython
- application layer should not deal with fonts at all
- distinction between MONO and others is preserved by bool argument in
`should_show_more` interpreted as `is_data`

[no changelog]
2025-02-06 13:32:29 +01:00
tychovrahe
566f82ccd8 refactor(core): make homescreen max size model dependent
[no changelog]
2025-02-06 12:40:23 +01:00
obrusvit
fa9e5338c3 chore(common): set definition timestamps
[no changelog]
2025-01-29 11:55:35 +01:00
tomasklim
78768950fd chore(core): use label for evm networks generation 2025-01-28 14:17:46 +01:00
obrusvit
15967a312b fix(core): explicitly delete keyboard layout
- seems that keyboard LayoutObj was not properly deallocated resulting
in MemoryError. Fix by calling the dunder `del` method explicitly fixes
the issue
- the problem was on Model T (Bolt), but applying it for all layouts to
prevent similar problem
2025-01-27 23:43:33 +01:00
tychovrahe
69a61e98e0 feat(core): adjust codec_v1 to work with differently sized RX and TX packets
[no changelog]
2025-01-23 16:46:12 +01:00
tychovrahe
5fd773757c fix(core): fix fading issues 2025-01-23 15:24:00 +01:00
Ioan Bizău
5a13b4560d fix(core): get rid of colon in some TS5 descriptions
[no changelog]
2025-01-23 12:46:54 +01:00
Ioan Bizău
e99beaf486 refactor(core): merge confirm_blob and confirm_value
[no changelog]
2025-01-23 12:46:54 +01:00
obrusvit
00740b560c refactor(core): consistent naming of UI layouts
- follow-up on 862c987779
- layout_bolt stays the same
- layout_samson -> layout_caesar
- layout_quicksilver -> layout_delizia
- use super for importing rust modules in layout code

[no changelog]
2025-01-20 12:29:24 +01:00
matejcik
38e362cd5b fix(core): improve ButtonRequest.name in backup confirmation
[no changelog]
2025-01-17 11:28:12 +01:00
matejcik
8b6d8e7572 fix(all): make more protobuf fields required
[no changelog]
2025-01-17 11:28:12 +01:00
tychovrahe
b2a4db1463 feat(core): expose BLE functionality to micropython
[no changelog]
2025-01-14 09:15:12 +01:00
tychovrahe
eef2f4113f refactor(core): improve USB events handling, more extensible implementation
[no changelog]
2025-01-13 18:46:11 +01:00
tychovrahe
e4f4985584 refactor(core): split polling can_read and reading from USB
[no changelog]
2025-01-13 17:42:30 +01:00
obrusvit
862c987779 refactor(core): consistent naming of UI layouts
- UI layouts name changes:
  - model_tt -> layout_bolt
  - model_tr -> layout_samson
  - model_mercury -> layout_quicksilver
- rust features `model_xyz` freed for different use, now it's
`layout_xyz`
- input_flow function names are based on UI layout and not internal
model name (i.e. quicksilver instead of t3t1)
- directory names and commentary changed accordingly

[no changelog]
2025-01-09 22:57:14 +01:00
matejcik
e0b4cab2db fix(core): retry creation of homescreen layout
For reasons unknown, a previous homescreen layout can sometimes survive
a GC cycle in main's unimport loop. Two homescreen layouts can't exist
simultaneously, so creating a new one would fail.

It _seems_ that after restarting the session, the homescreen object
still exists but is not reachable anymore, so a second GC cycle properly
disposes of it.

So what we do is simply catch the possible MemoryError, invoke GC
explicitly, and try again.
2025-01-03 14:15:14 +01:00
Ondřej Vejpustek
1a62cc8a59 fix(core): fix serialization of signatures and witnesses in multisig
[no changelog]
2025-01-02 15:07:25 +01:00
Andrew Kozlik
01a1f479a0 feat(core): Implement entropy check workflow in ResetDevice. 2025-01-02 13:44:36 +01:00
Andrew Kozlik
df97d8d958 feat(common): Add messages for entropy check workflow.
[no changelog]
2025-01-02 13:44:36 +01:00
obrusvit
e9ecbbc5e8 refactor(core): consistent use of confirm_address
- use `confirm_address` trait fn in both `confirm_output` and
`confirm_address` layout functions

[no changelog]
2024-12-19 00:09:20 +01:00
obrusvit
0e1696b3ed chore(core): cleanup warnings and clippy errors
[no changelog]
2024-12-19 00:09:20 +01:00
obrusvit
9caf540e16 refactor(core): remove trezorui2 module
- also remove "check" scripts which seem outdated

[no changelog]
2024-12-19 00:09:20 +01:00
obrusvit
dd9ac038d0 refactor(core): port functions to FirmwareUI
- keyboards
- standalone functions
  - disable_animations
  - check_homescreen_format
- confirm_action
- selectors
- confirm_firmware_update
- show_homescreen/lockscreen
- confirm_homescreen
- confirm_homescreen of mercury changed according to Figma
- set_brightness
- show_wait_text
- show_progress
- request_number
- show_checklist
- show_mismatch
- confirm_reset
- tutorial
- confirm_coinjoin
- confirm_modify_output/fee
- show_group_share_success
- show_remaining_shares
- show_success/warning/error/danger
- show_simple
- continue_recovery
  - confirm_recovery of model_t and model_r merged with
flow_continue_recovery of mercury into a continue_recovery_homepage
trait function, parameters renamed to be more descriptive
- show_share_words moved and refactored
  - model_t version was moved from using plain Paragraph to a dedicated
component `ShareWords` so that it's consistent with other models. This
allowed to move formatting to Rust and allowed the trait function to
have `words` parameter of type `Vec<TString, 33>`
  - model_r ShareWords::render slightly refactored to be consistent with
the new model_t version
  - mercury uses a unique version. The reason is that mercury SwipeFlow
contains also the initial screen with instructions and prompt screen at
the end.
- confirm_with_info
- show_info_with_cancel
- confirm_blob
- confirm_value
- confirm_properties
- confirm_more
- confirm_address
- prompt_backub
- confirm_emphasized
- show_address_details
- confirm_summary
- TR removed:
  - confirm_output_address and confirm_output_amount replaced with
confirm_blob. UI diff is minimal.
  - confirm_joint_total, replaced a TR-specific function with a generic
`confirm_properties` with no UI changes
- confirm_multiple_pages_texts
  - the function is TR specific and is used only in confirm_set_new_pin,
it would be better to use something different
- remaining mercury flows with no counterpart
  - confirm_blob_intro
  - flow_confirm_set_new_pin
  - flow_confirm_output
  - flow_get_address

[no changelog]
2024-12-19 00:09:20 +01:00
obrusvit
b2c6b09bfc feat(core): introduce FirmwareUI trait
- the commit introduces a trait defining high level UI building blocks,
common for all models.
- trezorui_api module exposes these functions to MicroPython world.
- `show_info` is implemented as a first function.

[no changelog]
2024-12-19 00:09:20 +01:00
obrusvit
091a0e8550 feat(core): introduce trezorui_api
- the new module is the place for type definitions of the interface
between rust and micropython world.
- the new module will replace `trezorui2` with `trezorui_api`

[no changelog]
2024-12-19 00:09:20 +01:00
Lukas Bielesch
6de0e5de0f chore(core): change display orientation labels [no changelog] 2024-12-09 15:03:57 +01:00
obrusvit
61ebb19515 refactor(core): mercury confirm_summary
- old confirm_total removed
- flow_confirm_summary refactored to confirm_summary

[no changelog]
2024-12-04 14:47:53 +01:00
obrusvit
af6240b52c refactor(core): model_r confirm_summary
- altcoin_tx_summary removed and replaced with confirm_summary

[no changelog]
2024-12-04 14:47:53 +01:00
obrusvit
6e94748e92 refactor(core): model_t confirm_summary
- model_t confirm_total refactored to confirm_summary
- parameter set changed to pave the way for unification across models

[no changelog]
2024-12-04 14:47:53 +01:00
matejcik
331e07b1e0 feat(core): disable animations in debug firmware by default
This makes it possible to run HW tests on the T3T1 where animations mess
things up. It also speeds up HW tests on other models slightly.

export TREZOR_DISABLE_ANIMATION=0 to build a debug firmware with
animations enabled
2024-12-03 11:02:17 +01:00
Ioan Bizău
13df961317 refactor(core/ui): introduce show_danger
This is a unified interface for flow_warning_hi_prio,
which was available only on Mercury before.

[no changelog]
2024-12-02 22:28:00 +01:00
Ioan Bizău
5c8ee873c6 chore(core/ui): remove new_confirm_address on Mercury
[no changelog]
2024-12-02 19:52:56 +01:00
M1nd3r
01cf58f2a1 docs(core): add and modify docs to context and cache
[no changelog]
2024-12-02 12:39:15 +01:00
M1nd3r
b1f07fec4f chore(core): update core to reflect cache and context refactor
[no changelog]
2024-12-02 12:39:15 +01:00
M1nd3r
8eb62fdeca refactor(core): abstract cache and context
[no changelog]
2024-12-02 12:39:15 +01:00
M1nd3r
0643d95a67 style: fix article
[no changelog]
2024-12-02 12:39:15 +01:00
Ondřej Vejpustek
ae32a23002 fix(core): disallow per-node paths in change outputs 2024-12-02 12:21:24 +01:00
Ondřej Vejpustek
45a029edcc fix(core): disallow per-node paths in getaddress 2024-12-02 12:21:24 +01:00
Ondřej Vejpustek
adc7cef49c feat(core): display sortedmulti 2024-12-02 12:21:24 +01:00
Ondřej Vejpustek
4dce3d0099 feat(core):: support sortedmulti 2024-12-02 12:21:24 +01:00
Ondřej Vejpustek
94cf3a29a0 feat(core,python,rust): add autogenerated files 2024-12-02 12:21:24 +01:00
Ondřej Vejpustek
0a9c4ba4ec feat(core)): forbid multisig to singlesig change outputs 2024-12-02 12:21:24 +01:00
Ondřej Vejpustek
53b5d62623 fix(core): make sorting of pubkeys fully deterministic 2024-12-02 12:21:24 +01:00
Ondřej Vejpustek
f3983486d1 feat(core): remove deprecated path 2024-12-02 12:21:24 +01:00
Ondřej Vejpustek
fa39d895b8 refactor(change): factor out ChangeDetector 2024-12-02 12:21:24 +01:00
obrusvit
2a0bdbe044 fix(core/mercury): remove info btn in show passphr 2024-12-02 11:48:19 +01:00
Ioan Bizău
f408cdbc4d fix(core/ui): fix paginated data size mismatch 2024-11-26 22:38:06 +01:00
Ioan Bizău
bdb4c51084 fix(core/ui): rename button
[no changelog]
2024-11-26 22:38:06 +01:00
Ioan Bizău
dbd5b62272 feat(core/ui): continue after viewing all data 2024-11-26 22:38:06 +01:00
Ioan Bizău
04c89555cd chore(core/ui): use different copy on TS3 and TT
[no changelog]
2024-11-26 22:38:06 +01:00
Ioan Bizău
9c918aaeb8 feat(core/ui): tweak blob first page appearance
This commit adds a margin and footer description to the first page of
the paginated blobs to be confirmed on Mercury. It also extracts the
part of confirm_blob that deals with the first page to a separate
function in order to keep confirm_blob simple.
2024-11-26 22:38:06 +01:00
Ioan Bizău
929ffa73bd feat(core/ui): add cancel button to paginated blobs 2024-11-26 22:38:06 +01:00
Ioan Bizău
97c9f84f8d feat(core/ui): add page counter to paginated blobs 2024-11-26 22:38:06 +01:00
obrusvit
6f7fccaac2 fix(core/mercury): info at bitcoin signmessage 2024-11-26 16:23:50 +01:00
matejcik
313e9e5c48 fix(core): properly send the resume signal to homescreen layouts 2024-11-26 12:55:29 +01:00
Fabien
85471d4d36 feat(core): Add coin definition for eCash 2024-11-25 12:02:13 +01:00
Ioan Bizău
7f19166c83 refactor(core): get rid of description_font_green
[no changelog]
2024-11-19 13:36:01 +02:00
Ioan Bizău
777907ab3b refactor(core): drop confirm_blob_with_optional_pagination
Commit c300576d6c introduced
`confirm_blob_with_optional_pagination` which proved to be unpopular and
impractical. This commit brings back the old behaviour of having the
`ask_pagination` parameter on `confirm_blob`. It also reverts back to
using the old way of paginating `confirm_blob` on model R, which the
aforementioned commit ignored and re-implemented from scratch.

[no changelog]
2024-11-19 13:36:01 +02:00
Ioan Bizău
487d7c4776 refactor(core): use warning_hi_prio in ETH flow
Commit c300576d6c introduced the
`default_cancel` parameter to `show_warning` and `confirm_blob` rather
using the already existing `flow_warning_hi_prio` which was doing the
same thing. This commit reverts all the nonsense.

[no changelog]
2024-11-19 13:36:01 +02:00
cepetr
089db2cadf refactor(core): restructure embed folder
[no changelog]
2024-11-18 09:41:02 +01:00
Martin Milata
c101cdfcbe Merge branch 'release/24.11.01' 2024-11-15 18:37:16 +01:00
M1nd3r
780d41e27f chore(core): remove loop.chan
[no changelog]
2024-11-15 16:29:52 +01:00
M1nd3r
e434aabc77 chore(core): remove unused session_id from codec_v1
[no changelog]
2024-11-15 08:47:24 +01:00
M1nd3r
cce2335965 refactor(core): use if TYPE_CHECKING instead of direct import and fix style of ignore statement
[no changelog]
2024-11-15 08:47:24 +01:00
M1nd3r
4c009539c7 docs(core): fix docs indentation and correct a few typos
[no changelog]
2024-11-15 08:47:24 +01:00
Lukas Bielesch
a4da695430 chore(core): Use enum for for dealing with device rotations 2024-11-13 11:08:56 +01:00
matejcik
3769024920 fix(core): patch over problems with confirm_blob_pagination 2024-11-12 16:55:17 +01:00
matejcik
8fb41ee290 feat(core): enforce return type annotations 2024-11-12 16:55:17 +01:00
matejcik
34d97ee942 feat(core): log ButtonRequests with names for easier debugging 2024-11-12 16:55:17 +01:00
matejcik
35be52e31e fix(tests): patch over confirm_blob buttonrequest problems 2024-11-12 16:55:17 +01:00
Martin Milata
87a01a9bfb test(core): fix T3T1 U2F test
[no changelog]
2024-11-12 16:55:17 +01:00
obrusvit
69770a42f4 fix(tests): fix click tests race condition 2024-11-12 16:55:17 +01:00
matejcik
8d2f0a6566 style: make style_check passing 2024-11-12 16:55:17 +01:00
matejcik
0a6c5504ef fix(core): fix cancel behavior in SignMessage 2024-11-12 16:55:17 +01:00
matejcik
e1b4a4a79a fix(core): allow Ping while locked
same behavior as on Trezor One
2024-11-12 16:55:17 +01:00
matejcik
adc3516ac6 feat(core): drop support for after-step-hook
This was necessary for hooking display.refresh() with the old UI toolkit.
With the new one, we explicitly refresh the display after every paint, so
implicit after-step refresh seems no longer necessary.
2024-11-12 16:55:17 +01:00
matejcik
9e911605da refactor(core/ui): reusable timers 2024-11-12 16:55:17 +01:00
matejcik
adc9b523be tests: fix small irregularities 2024-11-12 16:55:17 +01:00
matejcik
cd25071a29 refactor(core): improve recovery_enter_share 2024-11-12 16:55:17 +01:00
matejcik
e3a478044d docs(core): Layout lifecycle documentation 2024-11-12 16:55:17 +01:00
matejcik
84d7597d52 feat(core): show progress before starting to wipe device
This doesn't actually advance the progress while device erase is ongoing, but at least the user sees a loader.
2024-11-12 16:55:17 +01:00
matejcik
0e8dcbb498 feat(core): unify RustLayout, implement single global layout 2024-11-12 16:55:17 +01:00
matejcik
1fc7d41b8d fix(core): set default value for do_not_restart
otherwise if _handle_single_message raises an exception (which is
fortunately not something that should generally happen), the
finally-block would fail on "referenced before assignment"
2024-11-12 16:55:17 +01:00
matejcik
98dde40729 feat(core): add mailbox as a simplified version of chan 2024-11-12 16:55:17 +01:00
matejcik
7617bc8c25 refactor(core): remove debuglink support from main handle_session
It is being moved into a custom handler for the debug app.
2024-11-12 16:55:17 +01:00
matejcik
0334b42c8e refactor(core): remove unused features from loop.race 2024-11-12 16:55:17 +01:00
matejcik
b7b09b8836 feat(core): introduce timeout to loop.wait() 2024-11-12 16:55:17 +01:00
tychovrahe
1efb684544 refactor(core): expose USE_TOUCH and USE_BUTTON to uPy
[no changelog]
2024-11-12 16:55:17 +01:00
Lukas Bielesch
7a61d8e858 chore(core) Translate hard-coded 'Enable labeling' string 2024-11-06 18:34:05 +01:00
Jack
e30a343095 feat: support Unchained p2wsh path
fix: move unchained paths to bitcoin multisig SPENDWITNESS

chore: add changelog
2024-11-05 11:26:28 +01:00