Roman Zeyde
8fbe005186
refactor(core): wrap coverage data map with spin::RwLock
...
It allows us to avoid the `unsafe` blocks (due to `static mut` references).
[no changelog]
2025-06-17 17:09:30 +03:00
Roman Zeyde
365116be52
refactor(core): use Qstr
instead of StrBuffer
in coverage::Key
...
It allows `coverage::Key` to be `Send` & `Sync` - otherwise,
wrapping coverage data with a `spin::Mutex` will fail due to:
```
error[E0277]: `*const u8` cannot be sent between threads safely
--> src/coverage/mod.rs:49:23
|
49 | static COVERAGE_DATA: Mutex<FnvIndexMap<Key, u64, { 1024 * 1024 }>> =
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `*const u8` cannot be sent between threads safely
|
= help: within `IndexMap<Key, u64, hash32::BuildHasherDefault<hash32::fnv::Hasher>, 1048576>`, the trait `Send` is not implemented for `*const u8`
note: required because it appears within the type `StrBuffer`
```
[no changelog]
2025-06-17 17:09:30 +03:00
cepetr
275fe3f17d
feat(core): enable bkram retention in vbat mode
...
[no changelog]
2025-06-17 15:34:07 +02:00
Roman Zeyde
f1a4120878
fix(core): re-add logging level filtering
...
[no changelog]
2025-06-17 12:46:37 +03:00
kopecdav
b159269ce4
refactor(core): fix tamper RSOD label
...
[no changelog]
2025-06-17 10:28:54 +02:00
tychovrahe
dc0877a70d
fix(core): remove charging enable hysteresis when 100% SOC limit is set
...
[no changelog]
2025-06-16 20:53:15 +02:00
tychovrahe
41c361babb
fix(core): fix full battery detection
...
[no changelog]
2025-06-16 20:53:15 +02:00
Roman Zeyde
f4e65fd8e3
fix(core): don't enter/exit menu via horizontal swipe on Delizia
...
Following #5189 .
2025-06-16 18:29:56 +03:00
Roman Zeyde
0d87266bfc
fix(core): don't enter/exit menu via horizontal swipe on Bolt
2025-06-16 18:29:56 +03:00
Roman Zeyde
6d35f047b8
chore(core): inline SwipeFlow::render_state
...
[no changelog]
2025-06-16 17:35:07 +03:00
Roman Zeyde
6eb0458b7c
chore(core): remove unused SwipeFlow
field
...
[no changelog]
2025-06-16 17:35:07 +03:00
M1nd3r
3d8eab3515
chore(core): remove DebugLinkToggleThpPairingDialog
...
[no changelog]
2025-06-16 14:53:13 +02:00
cepetr
2b41fbd6bf
fix(core): enable backup ram ECC
...
[no changelog]
2025-06-16 11:52:17 +02:00
cepetr
29cd9c1d92
feat(core): power-fail-safe backup ram driver
...
[no changelog]
2025-06-16 11:52:17 +02:00
Roman Zeyde
2a29e4ea47
fix(core): correct a small typo in screen_update()
...
[no changelog]
2025-06-16 10:52:58 +03:00
obrusvit
107960ebbe
fix(emu): use same key for screenshots
...
- firmware emu uses `p` for power button and `s` for screenshot. So use
`s` also for bootloader and prodtest emu screenshots.
[no changelog]
2025-06-13 21:52:25 +02:00
obrusvit
af02e5e6a2
feat(eckhart): improve Homescreen styling
...
- correct Homebar icons
- colors and gradients
- LED usage
- Hint changes: add pad and cleanup some unused code
[no changelog]
2025-06-13 19:36:51 +02:00
obrusvit
2196a5f785
refactor(core): cleanup homescreen params
...
- rename FirmwareUI::show_homescreen param name from `hold` to
`lockable` because hold or hold_to_lock no longer covers all layouts
- cleanup uPy notification params
[no changelog]
2025-06-13 19:36:51 +02:00
Lukas Bielesch
5104872010
chore(core/eckhart): extend pin/pp touch area
...
[no changelog]
2025-06-13 19:15:26 +02:00
Martin Milata
200eac6384
refactor(core): exclude THP related string identifiers from non-THP builds
...
[no changelog]
2025-06-13 15:58:33 +02:00
Martin Milata
95ecbbed8b
feat(common): add Trezor Host Protocol protobuf definitions
...
[no changelog]
2025-06-13 15:58:33 +02:00
tychovrahe
b83889457b
feat(core): introduce IWDG driver
...
[no changelog]
2025-06-13 13:59:10 +02:00
cepetr
ff2d4edaef
fix(core): remove unnecessary non-secure variant of irq_lock/unlock
...
[no changelog]
2025-06-13 11:23:54 +02:00
Lukas Bielesch
ecbb71232e
chore(rust): increase max text ops
...
[no changelog]
2025-06-13 11:22:55 +02:00
Lukas Bielesch
023c8fc140
chore(core/eckhart): update check recovery flow
...
[no changelog]
2025-06-13 11:22:55 +02:00
Roman Zeyde
acbace7c3e
fix(core): use correct size in STMPE811 touch_init()
...
[no changelog]
2025-06-12 18:17:55 +03:00
Roman Zeyde
7f5a8b29c6
fix(core): use correct size in workflow_ifaces_init()
...
[no changelog]
2025-06-12 18:17:55 +03:00
tychovrahe
a67ccb8c40
refactor(core): refactor nrf, disable uart in booloader to save flash space
...
[no changelog]
2025-06-12 15:36:31 +02:00
Lukas Bielesch
3fa185703e
feat(core): use OpTextLayout::add_ functions to reduce stack usage
2025-06-12 10:07:23 +02:00
obrusvit
f0865e3b10
feat(eckhart): fuel gauge UI
...
- fuel gauge (battery state) with icons for charging/discharging state
and soc percentage
- on attach on Homescreen ActionBar
- permanently on the first DeviceMenu subscreen
- temporarily in the Header on charging state update
[no changelog]
2025-06-11 23:39:28 +02:00
obrusvit
17d6dd4a55
chore(core): remove battery from show_device_menu
...
- the battery status changes are now propagated into Components by
Event::PM
[no changelog]
2025-06-11 23:39:28 +02:00
obrusvit
f04edf3a28
feat(core): battery updates in FW event loop
...
[no changelog]
2025-06-11 23:39:28 +02:00
cepetr
765fe76b44
fix(core): fix write to otp memory (U5 only)
...
[no changelog]
2025-06-11 12:21:29 +02:00
kopecdav
5729416c4f
fix(core): Update more accurate battery model + fuel gauge config tral v2.
...
[no changelog]
2025-06-11 12:15:12 +02:00
cepetr
2a50a58b92
fix(core): handle nmi, hard fault and bus fault in secure mode
...
[no changelog]
2025-06-11 11:49:42 +02:00
cepetr
3d2a9c93a9
feat(core): add details for fault and fatal error RSOD
...
[no changelog]
2025-06-11 11:49:42 +02:00
cepetr
e8a5d11e5d
fix(core): fix rsod message alignment on bolt
...
[no changelog]
2025-06-11 11:49:42 +02:00
cepetr
09a4b2dca0
feat(core): add pc to systask_postmortem_info
...
[no changelog]
2025-06-11 11:49:42 +02:00
tychovrahe
ce3eae95a4
feat(core/bootloader): menu item reboot always active
2025-06-11 09:57:47 +02:00
tychovrahe
2f24d1f022
fix(core/bootloader): turn off led when leaving charging signalization
...
[no changelog]
2025-06-11 09:57:47 +02:00
cepetr
dc69976a99
feat(core): move backup_ram driver to secmon
...
[no changelog]
2025-06-11 09:48:19 +02:00
cepetr
6bea09bbe7
fix(core): fix firmware hash calculation
...
[no changelog]
2025-06-11 09:46:37 +02:00
Roman Zeyde
4095add475
fix(core): expose logging functions also on non-debug builds
...
[no changelog]
2025-06-11 10:26:09 +03:00
Roman Zeyde
30840d7cbf
perf(core): rewrite trezor.log
and trezor.wire_log
in Rust
...
Requires https://github.com/trezor/micropython/pull/26 .
[no changelog]
2025-06-11 10:26:09 +03:00
Roman Zeyde
90bd4735c2
perf(core): benchmark log
...
[no changelog]
2025-06-11 10:26:09 +03:00
Roman Zeyde
a9f59f6dd6
style(core): fix a few Rust lints
...
[no changelog]
2025-06-11 09:58:08 +03:00
tychovrahe
f2564573eb
fix(core/prodtest): fix prodtest emulator build
...
[no changelog]
2025-06-11 08:39:49 +02:00
Roman Zeyde
0cf22ece39
test(core): don't call clear_gc_info()
when PYOPT=1
...
[no changelog]
2025-06-10 18:33:16 +03:00
M1nd3r
dd76266de5
chore: add THP FailureTypes
...
[no changelog]
2025-06-10 17:00:06 +02:00
Roman Zeyde
6f28b96733
test(core): collect GC statistics via new debug RPC
...
[no changelog]
2025-06-10 12:16:12 +03:00
Roman Zeyde
a7849ab838
perf(core): use 16-bit duration for Button
long-press duration
...
Also, use zero duration to disable long-press mechanism.
[no changelog]
2025-06-09 20:27:09 +03:00
Roman Zeyde
0b4c44e32f
refactor(core): use an enum
for Button
's radius/gradient
...
[no changelog]
2025-06-09 20:21:28 +03:00
Roman Zeyde
a6f99a65b4
perf(core): don't use Option<Insets>
to save memory
...
Otherwise, the compiler adds 2 bytes per `Button` struct.
[no changelog]
2025-06-09 20:21:28 +03:00
Roman Zeyde
5dbf726160
perf(core): change TextAndSubtext::subtext_style
to a reference
...
It should significantly reduce the size of `heapless::Vec<ui::layout_eckhart::component::button::Button, 100>`.
[no changelog]
2025-06-09 20:21:28 +03:00
obrusvit
018330f3c2
chore(eckhart): remove hold to lock animation
...
- hold to lock animation will not be used on the Homescreen
- the locking functionality is kept for debug purposes and is increased
to 3 seconds
[no changelog]
2025-06-09 17:59:47 +02:00
tychovrahe
3324af7b50
refactor(core): unify CommonUI screen definition
...
[no changelog]
2025-06-09 17:48:56 +02:00
Roman Zeyde
14909e37ed
style(core): prefix unused parameters with _
...
[no changelog]
2025-06-09 17:20:05 +02:00
tychovrahe
01465aac7c
feat(core): update NRF application from firmware
...
[no changelog]
2025-06-09 17:12:31 +02:00
tychovrahe
deac4dc099
chore(core): add rust to kernel
...
[no changelog]
2025-06-09 17:12:31 +02:00
tychovrahe
2b79302d03
feat(ble): include image hash in info message
...
[no changelog]
2025-06-09 17:12:31 +02:00
tychovrahe
776767326a
fix(core): fix nrf get info
...
[no changelog]
2025-06-09 17:12:31 +02:00
tychovrahe
f144bcd2a6
fix(core): fix nrf reboot to bootloader
...
[no changelog]
2025-06-09 17:12:31 +02:00
tychovrahe
ccb28f4aab
refactor(core): move c string conversion out of UI code
...
[no changelog]
2025-06-09 17:12:31 +02:00
tychovrahe
4e31a9e20a
fix(core/rust): make rust crate compilable without UI
...
[no changelog]
2025-06-09 17:12:31 +02:00
tychovrahe
dda281e78a
chore(core): fix clippy errors
...
[no changelog]
2025-06-09 17:12:31 +02:00
tychovrahe
6aa981da45
chore(core): update rust
...
[no changelog]
2025-06-09 17:12:31 +02:00
obrusvit
2dfae34b39
fix(eckhart): aligned screen border top arc
...
[no changelog]
2025-06-09 17:09:19 +02:00
Lukas Bielesch
8cfa6a3693
chore(eckhart): update shamir wallet creation
...
[no changelog]
2025-06-09 08:52:32 +02:00
Lukas Bielesch
468ddaab9d
chore(eckhart): simplify updatable info screen
...
[no changelog]
2025-06-09 08:52:32 +02:00
Lukas Bielesch
13a020202e
chore(eckhart): update pin flows for Eckhart UI
...
[no changelog]
2025-06-08 18:19:32 +02:00
obrusvit
7730e4c63b
feat(eckhart): map foreign glyphs fonts
...
[no changelog]
2025-06-07 16:44:19 +02:00
tychovrahe
e3639fe195
fix(core/bootloader): eckhart - fix menu button not showing on some screens
...
[no changelog]
2025-06-06 17:47:49 +02:00
tychovrahe
0c3ae03d39
feat(core/prodtest): add radio test command
...
[no changelog]
2025-06-06 16:58:22 +02:00
Ioan Bizău
334079e453
feat(eckhart): allow buttons without multiline text
...
[no changelog]
2025-06-06 15:34:22 +02:00
Ioan Bizău
9d91c7a69c
chore(eckhart): check button subtitle overflow
...
[no changelog]
2025-06-06 15:34:22 +02:00
Ioan Bizău
3f3fd4a021
feat(eckhart): allow multiline text in buttons
...
[no changelog]
2025-06-06 15:34:22 +02:00
Lukas Bielesch
0bff79e0e9
chore(tests): check the correct keyboard category
...
[no changelog]
2025-06-05 23:59:19 +02:00
Lukas Bielesch
9494ba8896
fix(core/eckhart): fix passphrase keyboard bug
...
- when multi tab key timer expires, the buttons are resetted only if the passphrase reached the max length
- when the passphrase keyboard layout is swapped, the buttons are resetted
[no changelog]
2025-06-05 23:59:19 +02:00
Lukas Bielesch
26a52a5ed4
chore(core/eckhart): change button content vertical aligment implementation
...
- previous impl. using allcase_height wasn't properly centering the text
[no changelog]
2025-06-05 23:59:19 +02:00
Roman Zeyde
f6f1471774
refactor(core): convert translation strings to str
once
...
Instead of doing it on every `TranslationStringsChunk::get()` call.
[no changelog]
2025-06-05 21:08:14 +03:00
Roman Zeyde
d6b1cff024
feat(core): support new translation blob format
...
It supports multiple translations strings chunks and allows total
container size to be above 64kB.
Previous format is also supported by firmware.
2025-06-05 20:55:56 +03:00
Roman Zeyde
96fd484c2f
chore(core): use .into()
to convert from u16
to usize
...
It would fail to compile in case there is a possible truncation,
since using `as` will result in silent truncation.
[no changelog]
2025-06-05 20:55:56 +03:00
Roman Zeyde
880ee5af7a
chore(core): remove unused MAGIC
constant
...
[no changelog]
2025-06-05 20:55:56 +03:00
Martin Milata
26d66251a5
refactor(core): get_context raises NoWireContext if not found
...
[no changelog]
2025-06-05 15:53:23 +02:00
Martin Milata
99f56a09d0
refactor(core/ui): parametrize show_pairing_code
...
[no changelog]
2025-06-05 15:53:23 +02:00
Martin Milata
2c45bac81a
refactor(core): ignore BLE exceptions on boot
...
[no changelog]
2025-06-05 15:53:23 +02:00
Martin Milata
24279a60c0
refactor(core): drain the BLE event queue whenever layout is running
...
[no changelog]
2025-06-05 15:53:23 +02:00
Martin Milata
c3afe4c67b
feat(core): BLE pairing flow
...
[no changelog]
2025-06-05 15:53:23 +02:00
Martin Milata
f077f2d1c1
feat(core/ui): eckhart: BLE event handling
...
[no changelog]
2025-06-05 15:53:23 +02:00
Martin Milata
6d0bcca70c
fix(core): emulator build with PYOPT=1
...
[no changelog]
2025-06-05 15:29:27 +02:00
Roman Zeyde
5c49084a16
perf(core): wrap AddressDetails
in a GcBox
...
[no changelog]
2025-06-04 21:01:25 +03:00
Roman Zeyde
a0ab4963f0
fix(core): close previous homescreen before changing it
...
Otherwise, it will fail due to double `ImageBuffer` locking.
Also, add a test to reproduce the locking issue.
[no changelog]
2025-06-04 21:00:38 +03:00
Roman Zeyde
bdc75e295d
chore(core): improve ImageBuffer
locking error message
...
Usually `AllocationFailed` is due to GC OOM errors,
while here it's more "deadlock-like" scenario.
[no changelog]
2025-06-04 20:52:55 +03:00
cepetr
8a115eff03
chore(core): reformat FEATURES_WANTED list for readability
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
bbb74c03a4
feat(core): introduce secure monitor
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
e66f4f2d83
refactor(core): simplify unprivileged SAES execution
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
37b608827c
feat(core): allow execution of syscalls in thread mode
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
a133a01a1f
feat(core): support mpu region setup per applet
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
a48abdb577
refactor(core): move tropic i/o definitions to t3w1 board
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
820a3c5ba2
refactor(core): remove redundant SYSCALL_DISPATCH definition
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
1cf9dc4d62
refactor(core): simplify linker scripts II
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
aa5ba7aba6
refactor(core): simplify linker scripts
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
5b537103bd
feat(core): improve post mortem info for secure fault
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
05acc1599b
fix(core): enable SecureFault handling
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
a7466298ff
refactor(core): prepare for secure/non-secure memory layout
...
[no changelog]
2025-06-04 16:58:15 +02:00
cepetr
1a372b5019
feat(core): allow passing postmortem info in bootargs
...
[no changelog]
2025-06-04 16:58:15 +02:00
Lukas Bielesch
cafed0d02b
chore(core/eckhart): Unify usage of ParagraphVecShort
...
[no changelog]
2025-06-04 12:47:50 +02:00
Lukas Bielesch
3f14cd1d27
chore(eckhart): replace-by-fee update
...
[no changelog]
2025-06-04 12:47:50 +02:00
Lukas Bielesch
17f2d05baa
fix(core): clippy warning
...
[no changelog]
2025-06-04 12:47:50 +02:00
tychovrahe
ec4e6de040
fix(core/prodtest): fix bolt welcome screen without power manager
...
[no changelog]
2025-06-04 08:12:48 +02:00
tychovrahe
7294cc62fb
feat(core/prodtest): separate prodtest UI implementation for Eckhart
...
[no changelog]
2025-06-04 08:12:48 +02:00
tychovrahe
d5a9b7ee58
fix(core/prodtest): show homescreen after fuel gauge monitor ends
...
[no changelog]
2025-06-04 08:12:48 +02:00
Lukas Bielesch
d91923b999
chore(core/eckhart): Update passphrase-related flows
...
[no changelog]
2025-06-03 18:59:37 +02:00
Lukas Bielesch
41a852c675
chore(core/eckhart): Update ConfirmAction button styling logic
2025-06-03 18:59:37 +02:00
Lukas Bielesch
1f69975ba9
chore(core/eckhart): Allow TextScreen to be used without a header
...
[no changelog]
2025-06-03 18:59:37 +02:00
Roman Zeyde
c01b56a5a0
fix(core): Eckhart doesn't have a separate confirm page
...
[no changelog]
2025-06-03 18:10:35 +03:00
Lukas Bielesch
9643253630
feat(eckhart): implement FW update UI trait function
...
[no changelog]
2025-06-03 17:02:20 +02:00
kopecdav
32a830da1c
fix(core/prodtest): fix vcp jamming when USB unplugged.
...
[no changelog]
2025-06-03 15:11:15 +02:00
Ioan Bizău
98aa195443
fix(core/ui): confirm_output subtitle
...
[no changelog]
2025-06-03 15:06:29 +02:00
Ioan Bizău
d65b4f0e86
fix(core): warnings in device build
...
[no changelog]
2025-06-03 14:18:47 +02:00
tychovrahe
0081788d48
fix(core/prodtest): fix prodtest emulator build for T3W1
...
[no changelog]
2025-06-03 09:24:57 +02:00
tychovrahe
0ac3dec433
fix(core): fix pm_get_state syscall stub
...
[no changelog]
2025-06-03 09:24:40 +02:00
Lukas Bielesch
fea8031c96
chore(translations): drop turkish translations
2025-06-02 11:42:34 +02:00
tychovrahe
9683efb5b9
feat(core/prodtest): add prodtest emulator
...
[no changelog]
2025-06-02 09:16:53 +02:00
tychovrahe
9e8f989c80
fix(core): implement reboot_to_bootloader for unix
...
[no changelog]
2025-06-02 09:16:53 +02:00
tychovrahe
fb61ea0ce8
feat(core/unix): add board capabilities basic implementation for unix
...
[no changelog]
2025-06-02 09:16:53 +02:00
tychovrahe
803baf7fcd
feat(core/unix): implement USB VCP emulation
...
[no changelog]
2025-06-02 09:16:53 +02:00
tychovrahe
c0c5003e08
chore(core): replace itoa with portable function
...
[no changelog]
2025-06-02 09:16:53 +02:00
tychovrahe
1bd4d17d0e
refactor(core): implement cpuid as separate module
...
[no changelog]
2025-06-02 09:16:53 +02:00
tychovrahe
5a3156d782
refactor(core/unix): use unix common files in scons
...
[no changelog]
2025-06-02 09:16:53 +02:00
Roman Zeyde
cec282993a
refactor(core): simplify per-model imports using cfg-if
macro
...
[no changelog]
2025-06-01 14:31:43 +03:00
tychovrahe
baa6317113
fix(core): fix lockable bootloader logic in secret and MPU
...
Also, fix firmware build with `DISABLE_OPTIGA=1`.
[no changelog]
2025-05-30 19:28:46 +03:00
Roman Zeyde
64241033cb
chore(core): move coverage-related Rust code into a separate module
...
Also, exclude it from non-debug builds.
[no changelog]
2025-05-30 19:26:51 +03:00
Roman Zeyde
1b8116129a
chore(core): add a missing Map
import for obj_module
macro
...
[no changelog]
2025-05-30 19:26:51 +03:00
Roman Zeyde
7f5b71817f
fix(core): fix DeprecationWarning
for datetime.datetime.utcnow()
...
[no changelog]
2025-05-30 18:55:08 +03:00
obrusvit
341cc54071
chore: regenerate langs/signatures/qstr/fixtures
2025-05-30 17:38:16 +02:00
obrusvit
1efdad0aab
feat(eckhart): port recent functionaliy
...
- ETH approve, #4958
- success screens after BR, #4882 and #5068
- do not confirm known SOL token, #5086
- fail on text overflow, #4767
2025-05-30 17:38:16 +02:00
obrusvit
0f695b55a9
refactor(core): fn plural_form will never panic
...
- also minor adjustment where the function is used in Eckahrt
2025-05-30 17:38:16 +02:00
obrusvit
10e88c870e
chore(eckhart): improve DeviceMenu
...
- show BackupFailed correctly based on storage conditions
- separate autolock duration formatting to a separate function in
`trezor/strings.py`
2025-05-30 17:38:16 +02:00
obrusvit
d73f0dc79d
perf(core/eckhart): constructing MenuItems
...
- self-referential builder pattern is easier on the stack memory usage
than consuming builder pattern
- store ButtonStyleSheet as a static ref
2025-05-30 17:38:16 +02:00
obrusvit
bd89e13493
refactor(core): return uPy Obj from DeviceMenu
...
[no changelog]
2025-05-30 17:38:16 +02:00
Roman Zeyde
3aab117046
refactor(core): unify menu
and about
Eckhart screens into an enum
...
[no changelog]
2025-05-30 17:38:16 +02:00
obrusvit
482b442c8e
feat(eckhart): remove label shadow on default hs
2025-05-30 17:38:16 +02:00
Lukas Bielesch
a57fc3f8ed
feat(core): update number input screen
...
- add time-handling functions
- add option to show time units
- add hold functionality to increment/decrement buttons
- add new device-menu actions
2025-05-30 17:38:16 +02:00
Lukas Bielesch
b8f018a419
fix(eckhart): fix failing tests: homescreen, fido, solana
2025-05-30 17:38:16 +02:00
obrusvit
12e1c456c7
feat(eckhart): port bootloader ble handling
2025-05-30 17:38:16 +02:00
obrusvit
0afc97227f
fix(eckhart): a few alignment and style issues
...
- fix pyright
2025-05-30 17:38:16 +02:00
Lukas Bielesch
c66b435212
fix(eckhart): fix unstable click tests
...
- Differentiate input vectors for Eckhart due to different screen size
- paginate, where possible
2025-05-30 17:38:16 +02:00
Lukas Bielesch
2963065afc
feat(eckhart): confirm_signverify, confirm_blob, ethereum, solana and nostr support
2025-05-30 17:38:16 +02:00
Lukas Bielesch
b45865a808
chore(eckhart): use dedicated function for menu buttons creation
2025-05-30 17:38:16 +02:00
Lukas Bielesch
40d9b049b8
chore(eckhart): update show_mismatch, confirm_output and confirm_value and progress_screen functions
2025-05-30 17:38:16 +02:00
Lukas Bielesch
4eb872e1c8
feat(eckhart): implement trait functions: confirm_value_intro,
...
confirm_modify_output, confirm_modify_fee, confirm_with_menu,
show_info_with_cancel and confirm_props
2025-05-30 17:38:16 +02:00
Lukas Bielesch
edfec4f407
feat(eckhart): update request number trait function
...
add request number flow instead of screen only
add updatable info screen to show extra information
2025-05-30 17:38:16 +02:00
Lukas Bielesch
da319daccb
chore(eckhart): update get_address flow to use xpubs
...
- remove line ending hyphens from mono fonts
- update test to scroll through an entire page
2025-05-30 17:38:16 +02:00
Lukas Bielesch
b77db55330
chore(eckhart): TextScreen improvements
...
update page count for the content,
add page limit,
enable subtitle to have two lines
2025-05-30 17:38:16 +02:00
obrusvit
04b61ea6af
feat(eckhart): render_loader and ProgressScreen
...
- `render_loader` shows classic circular loader going around the
display, implemented by rendering `ScreenBorder` and hiding it by 5
black rectangles which progressively diminish
- `render_loader_indeterminate` shows progress loader without known
duration, implemented by rendering `ScreenBorder` in clip which travels
around the SCREEN in an octagonal shape. This achieves an effect of a
constant length line going around the screen shape
- implement `show_progress` and `show_progress_coinjoin` FirmwareUI
functions
chore(eckhart): remove animation code from Header
2025-05-30 17:38:16 +02:00
obrusvit
843ef7d441
feat(eckhart): extract tile pattern constants
2025-05-30 17:38:16 +02:00
obrusvit
ad94f5e0a5
feat(core): animate ProgressLayout in Python
...
- the commit allows for smoother animation of the `ProgressLayout` by
stepping through the reported progress
2025-05-30 17:38:16 +02:00
obrusvit
f77ca411b2
chore(eckhart): re-export new Close icon
2025-05-30 17:38:16 +02:00
Lukas Bielesch
11d780a337
feat(eckhart): add FIDO2 support
...
- enable vertical menu swipe without animations
- FidoCredential component, confirm_fido flow and icons
- Fix show_error action bar and header colors
- Implement AllowedTextContent for FidoCredential
- Add new return type for VerticalMenuScreen
- provide short and long vertical menu
2025-05-30 17:38:16 +02:00
Lukas Bielesch
b3a114ee67
chore(eckhart): Implement new struct for word-selection menu
...
This simplifies the implementation of the verical menu
2025-05-30 17:38:16 +02:00
Lukas Bielesch
7e7015734d
core(eckhart): Update Vertical Menu
...
Leave event processing to the Vertical Menu
Disable scrolling when the menu fits the screen
2025-05-30 17:38:16 +02:00
obrusvit
ae02d77852
feat(eckhart): use gradients in ActionBar
2025-05-30 17:38:16 +02:00
obrusvit
c48e8f8a90
feat(eckhart): fix hint padding
2025-05-30 17:38:16 +02:00
Lukas Bielesch
994b61e38b
fix(eckhart): fix failing gen_check and rust tests
2025-05-30 17:38:16 +02:00
Martin Milata
39a1c81154
refactor(core): device menu modules
...
[no changelog]
2025-05-30 17:38:16 +02:00
Ioan Bizău
b1dce3974f
feat(eckhart): introduce the device menu
...
- also add layouts for device pairing
- send device name and version to the device menu
2025-05-30 17:38:16 +02:00
obrusvit
6a208e9efa
feat(eckhart): gradient buttons
2025-05-30 17:38:16 +02:00
obrusvit
5f13250963
chore(eckhart): remove Hint animation code
2025-05-30 17:38:16 +02:00
Lukas Bielesch
418ae5d4cd
fix(eckhart): Fix behavior of set brightness screen:
...
Do not confirm brightness by releasing finger, but by pressing the cross button.
2025-05-30 17:38:16 +02:00
obrusvit
19b116894e
feat(eckhart): improve confirmations
2025-05-30 17:38:16 +02:00
obrusvit
0bc1f2f44d
feat(eckhart): auto PaginateOnly for TextScreen
...
- make sure that TextScreen has at least PaginateOnly ActionBar if the
content doesn't fit
2025-05-30 17:38:16 +02:00
obrusvit
53fbe51595
feat(eckhart): improve pagination of ActionBar
...
- Single mode now handles pagination with the right_button shown at the
last page
- new PaginateOnly mode to only render navigation buttons without
cancel/confirm buttons
2025-05-30 17:38:16 +02:00
Lukas Bielesch
3f1b5a9e28
chore(eckhart): minor improvements
...
- update trace function for firmware components
- add missing button requests
- update get address flow
- require long press to lock even with disabled animations
2025-05-30 17:38:16 +02:00
Lukas Bielesch
fa8e93d64a
fix(eckhart): fix last pending char for max len passphrase
2025-05-30 17:38:16 +02:00
Lukas Bielesch
43cd9b4c10
feat(eckhart): set brightness screen
2025-05-30 17:38:16 +02:00
Lukas Bielesch
ad9002307e
chore(eckhart): Update warnings title
2025-05-30 17:38:16 +02:00
Lukas Bielesch
51147804c9
feat(eckhart): confirm summary and output
2025-05-30 17:38:16 +02:00
Lukas Bielesch
5ac9457b0c
chore(eckhart): TextScreen improvements
...
- add mono light font + remove trailing hyphen from mono style
- text screen subtitle
2025-05-30 17:38:16 +02:00
Lukas Bielesch
aee3b2b6ac
fix(eckhart): minor fixes for recovery and reset screens
...
correct placement of numbers on the keypad,
fix number input screen for double-digit numbers,
remove unused menu button, use double action bar instead,
fix inconsistent hint use
update warning titles
2025-05-30 17:38:16 +02:00
Lukas Bielesch
0f4a64eea6
feat(eckahrt): continue_recovery and show_success
...
- make recovery notifications layout-specific
2025-05-30 17:38:16 +02:00
Lukas Bielesch
a465bfdb2e
chore(eckhart): implement checklist screen & flow
2025-05-30 17:38:16 +02:00
obrusvit
24b4048916
feat(eckhart): default homescreen
...
- make homescreen hold to lock, lock the device by long-pressing the homescreen anywhere but the
action bar
2025-05-30 17:38:16 +02:00
obrusvit
9e92a23190
feat(eckhart): implement several FirmwareUI fns
...
- confirm_emphasize
- show_error
- homescreen ButtonContent
- homescreen and lockscreen
- HomeScreen, ConfirmHomescreen full-screen components
- confirm_set_new_pin
- fix clippy and style
2025-05-30 17:38:16 +02:00
obrusvit
7da1f732d8
feat(eckhart): implement BootloaderUI
...
- skimmed variants of Header, ActionBar, TextScreen, Menu
- implement ErrorScreen
- implement WelcomeScreen
- implement bootloader loader
- the implementation sits in the separate file `ui_bootloader.rs`
2025-05-30 17:38:16 +02:00
obrusvit
73ccb96fe6
chore(eckhart): cleanup code
...
- feature-gate non-bootloader fonts
- delete old bootloader components
- cleanup theme module
2025-05-30 17:38:16 +02:00
Lukas Bielesch
c777caf087
feat(eckhart): receive address flow
...
- add new action bar mode
- full-screen QR screen component
- show danger flow
- update address warnings
2025-05-30 17:38:16 +02:00
Lukas Bielesch
5cc3a0dfdb
refactor(eckhart): update fonts and disabled button style
...
- Fix translation pattern
2025-05-30 17:38:16 +02:00
obrusvit
fee5624590
refactor(eckhart): ignore empty description
...
- don't show empty text in confirm_action
2025-05-30 17:38:16 +02:00
obrusvit
f6c0d0e87d
feat(eckhart): improve ActionBar content
...
- button content is moved towards the center a bit
- shrink left button at the last page of paginated component
- change the order of render in `TextScreen` to account for Header
overlay. If the main content reaches the Header area, we do not want to
overlay it during Hold to Confirm animation
2025-05-30 17:38:16 +02:00
obrusvit
7a364fa215
refactor(eckhart): separate FW comps and theme
2025-05-30 17:38:16 +02:00
Lukas Bielesch
72640f3518
feat(eckhart): full-screen input number component
2025-05-30 17:38:16 +02:00
Lukas Bielesch
c9d8203fa4
chore(eckhart): update existing components accordint to new design
2025-05-30 17:38:16 +02:00
Lukas Bielesch
cf29524525
feat(eckahrt): implement show info UI trait function
2025-05-30 17:38:16 +02:00
Lukas Bielesch
cff6a498a2
feat(eckhart): prompt backup flow
...
- implement provisional show progress UI trait function
2025-05-30 17:38:16 +02:00
Lukas Bielesch
714e09383f
feat(eckhart): confirm reset flow
2025-05-30 17:38:16 +02:00
Lukas Bielesch
fac1979d64
chore(eckhart): VerticalMenuScreen improvements
...
- implement Swipable trait for vertical menu screen
- add warning text styles
2025-05-30 17:38:16 +02:00
Lukas Bielesch
7663a3a20d
core(eckhart): Fix failing unit test and warnings
2025-05-30 17:38:16 +02:00
Lukas Bielesch
57fe0e3e39
feat(eckhart): Full-screen get count component
2025-05-30 17:38:16 +02:00
obrusvit
66ecccda54
feat(eckhart): add easing and rollback to HtC anim
...
- also switch corner icons to 4px width
2025-05-30 17:38:16 +02:00
obrusvit
a2f618bd94
feat(eckhart): add alpha to ScreenBorder
2025-05-30 17:38:16 +02:00
obrusvit
d109a5b352
chore(eckhart): fix some clippy warnings
2025-05-30 17:38:16 +02:00
Lukas Bielesch
db8e8cd2b8
feat(eckhart): Add mnemonic input component
...
- BIP39 & SLIP39
2025-05-30 17:38:16 +02:00
Lukas Bielesch
f859c0bc6c
feat(eckhart): full-screen mnemonic component
2025-05-30 17:38:16 +02:00
Lukas Bielesch
b95aebd2fc
feat(eckhart): full-screen passphrase component
...
- and flow
2025-05-30 17:38:16 +02:00
Lukas Bielesch
547a4c357e
feat(eckhart): full-screen PIN keyboard component
2025-05-30 17:38:16 +02:00
Lukas Bielesch
106b16191b
feat(eckhart): keypad component
2025-05-30 17:38:16 +02:00
Lukas Bielesch
d1ad96426c
feat(ui): Add visibility-checking function to Maybe struct
2025-05-30 17:38:16 +02:00
Lukas Bielesch
4a7148b349
feat(ui): Add function for expanding Button touch area
2025-05-30 17:38:16 +02:00
Lukas Bielesch
d3015dc2aa
feat(eckhart): Add common keyboard functionality
...
- plus keyboard button styles
2025-05-30 17:38:16 +02:00
Lukas Bielesch
76ee57dd6c
feat(eckhart): Add parametrized content offset to Button
2025-05-30 17:38:16 +02:00
Lukas Bielesch
36d1d6c4c3
chore(eckhart): Add dynamic padding option to vertical menu. Update rendering of separarators in vertical menu.
2025-05-30 17:38:16 +02:00
Lukas Bielesch
d270e3192a
feat(eckhart): full-screen select word component
2025-05-30 17:38:16 +02:00
Lukas Bielesch
ced03df91a
chore(eckhart): Remove redundant code
2025-05-30 17:38:16 +02:00
Lukas Bielesch
1992d41b00
chore(eckhart): Add dynamic padding option to vertical menu.
...
Update rendering of separarators in vertical menu.
2025-05-30 17:38:16 +02:00
Lukas Bielesch
da8effa3a3
chore(eckhart): fix button text and subtext rendering
...
- add new Button 'is_pressed' function
2025-05-30 17:38:16 +02:00
Lukas Bielesch
d7745d3d55
feat(eckhart): button styles for select word component
2025-05-30 17:38:16 +02:00
Lukas Bielesch
fa806f27eb
feat(eckhart): ShareWords screen and flow
2025-05-30 17:38:16 +02:00
Lukas Bielesch
20a86432ce
chore(eckhart): improve HTC animation
2025-05-30 17:38:16 +02:00
obrusvit
c74223ae88
feat(eckhart): expand touch area of ActionBar
2025-05-30 17:38:16 +02:00
obrusvit
f1e23d2e97
feat(eckhart): implement hold to confirm anim
...
- HoldToConfirmAnim is driven by the ActionBar in case the right_button
is configured with `long_press`
- HoldToConfirmAnim optionally draws an Header overaly with custom text
- disabling animations is respected
- easing function is not yet finalized
- a few minor fixes along the way
2025-05-30 17:38:16 +02:00
obrusvit
00ec83af5e
feat(eckhart): implement ScreenBorder overlay
...
- a static "custom shape" for eckhart layout which displays screen
overlay around the borders
2025-05-30 17:38:16 +02:00
Lukas Bielesch
4480a8ba59
feat(eckhart): Update vertical menu components
2025-05-30 17:38:16 +02:00
Lukas Bielesch
38613dbf46
feat(eckhart): Add new Back Header message type
2025-05-30 17:38:16 +02:00
Lukas Bielesch
1d8fa6930e
feat(eckhart): VerticalMenuScreen improvements
...
- Add vertical menu button styles
- Add battery icons
- Add MenuItem button content type
2025-05-30 17:38:16 +02:00
obrusvit
1c0429f932
feat(eckhart): full-screen vertical menu component
2025-05-30 17:38:16 +02:00
obrusvit
0696090691
feat(eckhart): implement basic UiFirmware fns
...
- confirm_action, confirm_value
- few show_xyz
- provisional homescreen
2025-05-30 17:38:16 +02:00
obrusvit
ea4d704a8a
feat(core): add color op to FormattedText
...
[no changelog]
2025-05-30 17:38:16 +02:00
obrusvit
9b25644c17
feat(eckhart): full-screen textual component
...
- TextScreen is a full-screen component for (paginated) texts
- it's supposed to wrap FormattedText or Paragraphs
2025-05-30 17:38:16 +02:00
obrusvit
17ba44d8c1
feat(eckhart): componets
...
- Header
- Hint
- ActionBar
2025-05-30 17:38:16 +02:00
obrusvit
c96dc29bff
feat(eckhart): stylekit
...
- icons
- textstyles
- fonts
2025-05-30 17:38:16 +02:00
obrusvit
62933d2d62
feat(eckhart): initial commit
...
- build
- directory structure
- bootloader UI and assets copied from delizia
- FirmwareUI trait functions are empty
- Python layout functions are copied from delizia except some of more
complicated ones which raise NotImplemented for now
2025-05-30 17:38:16 +02:00
tychovrahe
80a18f1156
fix(core/prodtest): fix backlight setting in prodtest
...
[no changelog]
2025-05-30 14:39:10 +02:00
tychovrahe
b8b2d7cf13
feat(core/bootloader): add separate bootloader-entry haptic effect
...
[no changelog]
2025-05-30 14:38:56 +02:00
tychovrahe
a688bae64b
fix(core/bootloader): fix entering bootloader on battery powered devices
...
[no changelog]
2025-05-30 14:38:56 +02:00
kopecdav
7d3d2e877f
refactor(core): add power manager api comments
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
b97d05247c
fix(core/prodtest): fix power off led signalization
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
378b81b663
feat(core/prodtest): add command to adjust SOC limit
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
7de6e438eb
fix(core/prodtest): adjust power manager command documentation
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
33b8b2c8f7
fix(core): fix kernel power manager initialization
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
b634eaca91
feat(core/bootloader): adjust boot sequence for battery devices
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
a4eaf4dc27
feat(core): respect manufacturing mode in power on sequence
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
2e23349419
feat(core/prodtest): limit charging in prodtest to 70% SOC
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
278a09f4c5
fix(core): improve robustness of device power on check
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
e01edaad4a
feat(core/prodtest): add fuel gauge to prodtest welcome screen
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
26dc39b941
feat(core/bootloader): add power management to bootloader
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
c63ff3bf44
feat(core): implement reboot command to bypass button check
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
7fa4e2d510
fix(core/prodtest): fix power management initialization in prodtest
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
c89ca35bbc
feat(core): event polling for power manager
...
[no changelog]
2025-05-30 14:04:45 +02:00
tychovrahe
e3be94d599
feat(core): add pm_get_events syscall
...
[no changelog]
2025-05-30 14:04:45 +02:00