diff --git a/common/protob/messages-debug.proto b/common/protob/messages-debug.proto index 08f0f30e5f5..9028b8168a4 100644 --- a/common/protob/messages-debug.proto +++ b/common/protob/messages-debug.proto @@ -40,7 +40,7 @@ message DebugLinkDecision { } /** - * Structure representing model R button presses + * Structure representing button presses of UI samson */ // TODO: probably delete the middle_btn as it is not a physical one enum DebugPhysicalButton { diff --git a/core/Makefile b/core/Makefile index 8138e35b101..90e428a9a9d 100644 --- a/core/Makefile +++ b/core/Makefile @@ -53,23 +53,23 @@ OPENOCD_TRANSPORT ?= hla_swd ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T)) MCU = STM32F4 OPENOCD_TARGET = target/stm32f4x.cfg -MODEL_FEATURE = model_tt +LAYOUT_FEATURE = layout_bolt else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),R)) MCU = STM32F4 OPENOCD_TARGET = target/stm32f4x.cfg -MODEL_FEATURE = model_tr +LAYOUT_FEATURE = layout_samson else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3T1)) MCU = STM32U5 OPENOCD_TARGET = target/stm32u5x.cfg -MODEL_FEATURE = model_mercury +LAYOUT_FEATURE = layout_quicksilver else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3B1)) MCU = STM32U5 OPENOCD_TARGET = target/stm32u5x.cfg -MODEL_FEATURE = model_tr +LAYOUT_FEATURE = layout_samson else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3W1)) MCU = STM32U5 OPENOCD_TARGET = target/stm32u5x.cfg -MODEL_FEATURE = model_tt +LAYOUT_FEATURE = layout_bolt else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC1)) MCU = STM32F4 OPENOCD_TARGET = target/stm32f4x.cfg @@ -188,7 +188,7 @@ test: ## run unit tests test_rust: ## run rs unit tests export BUILD_DIR=$(abspath $(UNIX_BUILD_DIR)) ; \ cd embed/rust ; cargo test $(TESTOPTS) --target=$(RUST_TARGET) \ - --no-default-features --features $(MODEL_FEATURE),test \ + --no-default-features --features $(LAYOUT_FEATURE),test \ -- --test-threads=1 --nocapture test_emu: ## run selected device tests from python-trezor diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 83ecdc4b6e7..47eeb50aa99 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -6,11 +6,11 @@ edition = "2021" build = "build.rs" [features] -default = ["model_tt"] +default = ["layout_bolt"] crypto = ["zeroize"] -model_tt = ["jpeg"] -model_tr = [] -model_mercury = ["jpeg", "dma2d"] +layout_bolt = ["jpeg"] +layout_samson = [] +layout_quicksilver = ["jpeg", "dma2d"] micropython = [] protobuf = ["micropython"] ui = [] diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index f03823eed0e..6a5501861d7 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -53,7 +53,7 @@ const DEFAULT_BINDGEN_MACROS_COMMON: &[&str] = &[ "-DUSE_RGB_LED", ]; -#[cfg(feature = "model_tt")] +#[cfg(feature = "layout_bolt")] const DEFAULT_BINDGEN_MACROS_T2T1: &[&str] = &[ "-DSTM32F427", "-DTREZOR_MODEL_T", @@ -63,10 +63,10 @@ const DEFAULT_BINDGEN_MACROS_T2T1: &[&str] = &[ "-DDISPLAY_RESY=240", "-DTREZOR_BOARD=\"T2T1/boards/t2t1-unix.h\"", ]; -#[cfg(not(feature = "model_tt"))] +#[cfg(not(feature = "layout_bolt"))] const DEFAULT_BINDGEN_MACROS_T2T1: &[&str] = &[]; -#[cfg(feature = "model_tr")] +#[cfg(feature = "layout_samson")] const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[ "-DSTM32F427", "-DTREZOR_MODEL_R", @@ -76,10 +76,10 @@ const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[ "-DDISPLAY_RESY=64", "-DTREZOR_BOARD=\"T2B1/boards/t2b1-unix.h\"", ]; -#[cfg(not(feature = "model_tr"))] +#[cfg(not(feature = "layout_samson"))] const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[]; -#[cfg(feature = "model_mercury")] +#[cfg(feature = "layout_quicksilver")] const DEFAULT_BINDGEN_MACROS_T3T1: &[&str] = &[ "-DSTM32U5", "-DTREZOR_MODEL_T3T1", @@ -89,7 +89,7 @@ const DEFAULT_BINDGEN_MACROS_T3T1: &[&str] = &[ "-DDISPLAY_RESY=240", "-DTREZOR_BOARD=\"T3T1/boards/t3t1-unix.h\"", ]; -#[cfg(not(feature = "model_mercury"))] +#[cfg(not(feature = "layout_quicksilver"))] const DEFAULT_BINDGEN_MACROS_T3T1: &[&str] = &[]; fn add_bindgen_macros<'a>(clang_args: &mut Vec<&'a str>, envvar: Option<&'a str>) { diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 3197b9ff120..a6afb178f02 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -648,7 +648,7 @@ static void _librust_qstrs(void) { MP_QSTR_show_progress_coinjoin; MP_QSTR_show_remaining_shares; MP_QSTR_show_share_words; - MP_QSTR_show_share_words_mercury; + MP_QSTR_show_share_words_quicksilver; MP_QSTR_show_simple; MP_QSTR_show_success; MP_QSTR_show_wait_text; diff --git a/core/embed/rust/src/ui/api/firmware_micropython.rs b/core/embed/rust/src/ui/api/firmware_micropython.rs index e47b9145ef3..3cc636cd604 100644 --- a/core/embed/rust/src/ui/api/firmware_micropython.rs +++ b/core/embed/rust/src/ui/api/firmware_micropython.rs @@ -927,7 +927,7 @@ extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_show_share_words_mercury( +extern "C" fn new_show_share_words_quicksilver( n_args: usize, args: *const Obj, kwargs: *mut Map, @@ -947,7 +947,7 @@ extern "C" fn new_show_share_words_mercury( let words: Vec = util::iter_into_vec(words)?; - let layout = ModelUI::show_share_words_mercury( + let layout = ModelUI::show_share_words_quicksilver( words, subtitle, instructions, @@ -1280,7 +1280,7 @@ pub static mp_module_trezorui_api: Module = obj_module! { /// items: Iterable[tuple[int, str | bytes]], /// ) -> LayoutObj[UiResult]: /// """Confirm long content with the possibility to go back from any page. - /// Meant to be used with confirm_with_info on model TT and TR.""" + /// Meant to be used with confirm_with_info on UI bolt and samson.""" Qstr::MP_QSTR_confirm_more => obj_fn_kw!(0, new_confirm_more).as_obj(), /// def confirm_properties( @@ -1338,7 +1338,7 @@ pub static mp_module_trezorui_api: Module = obj_module! { /// items: Iterable[tuple[int, str | bytes]], /// ) -> LayoutObj[UiResult]: /// """Confirm given items but with third button. Always single page - /// without scrolling. In mercury, the button is placed in + /// without scrolling. In Quicksilver, the button is placed in /// context menu.""" Qstr::MP_QSTR_confirm_with_info => obj_fn_kw!(0, new_confirm_with_info).as_obj(), @@ -1348,7 +1348,7 @@ pub static mp_module_trezorui_api: Module = obj_module! { /// subtext: str | None, /// button: str | None, /// recovery_type: RecoveryType, - /// show_instructions: bool = False, # unused on TT + /// show_instructions: bool = False, # unused on bolt /// remaining_shares: Iterable[tuple[str, str]] | None = None, /// ) -> LayoutObj[UiResult]: /// """Device recovery homescreen.""" @@ -1378,7 +1378,7 @@ pub static mp_module_trezorui_api: Module = obj_module! { /// """Confirm the recipient, (optionally) confirm the amount and (optionally) confirm the summary and present a Hold to Sign page.""" Qstr::MP_QSTR_flow_confirm_output => obj_fn_kw!(0, new_flow_confirm_output).as_obj(), - // TODO: supply more arguments for Wipe code setting (mercury) + // TODO: supply more arguments for Wipe code setting (quicksilver) /// /// def flow_confirm_set_new_pin( /// *, @@ -1625,7 +1625,7 @@ pub static mp_module_trezorui_api: Module = obj_module! { /// """Show mnemonic for backup.""" Qstr::MP_QSTR_show_share_words => obj_fn_kw!(0, new_show_share_words).as_obj(), - /// def show_share_words_mercury( + /// def show_share_words_quicksilver( /// *, /// words: Iterable[str], /// subtitle: str | None, @@ -1635,7 +1635,7 @@ pub static mp_module_trezorui_api: Module = obj_module! { /// ) -> LayoutObj[UiResult]: /// """Show mnemonic for wallet backup preceded by an instruction screen and followed by a /// confirmation screen.""" - Qstr::MP_QSTR_show_share_words_mercury => obj_fn_kw!(0, new_show_share_words_mercury).as_obj(), + Qstr::MP_QSTR_show_share_words_quicksilver => obj_fn_kw!(0, new_show_share_words_quicksilver).as_obj(), /// def show_simple( /// *, @@ -1668,9 +1668,9 @@ pub static mp_module_trezorui_api: Module = obj_module! { /// value: str = "", /// description: str = "", /// allow_cancel: bool = True, - /// danger: bool = False, # unused on TT + /// danger: bool = False, # unused on bolt /// ) -> LayoutObj[UiResult]: - /// """Warning modal. TT: No buttons shown when `button` is empty string. TR: middle button and centered text.""" + /// """Warning modal. bolt: No buttons shown when `button` is empty string. samson: middle button and centered text.""" Qstr::MP_QSTR_show_warning => obj_fn_kw!(0, new_show_warning).as_obj(), /// def tutorial() -> LayoutObj[UiResult]: diff --git a/core/embed/rust/src/ui/constant.rs b/core/embed/rust/src/ui/constant.rs index 3237db67aa6..fa6eef8e283 100644 --- a/core/embed/rust/src/ui/constant.rs +++ b/core/embed/rust/src/ui/constant.rs @@ -2,12 +2,12 @@ //! current feature (Trezor model) #[cfg(all( - feature = "model_mercury", - not(feature = "model_tr"), - not(feature = "model_tt") + feature = "layout_bolt", + not(feature = "layout_quicksilver"), + not(feature = "layout_samson") ))] -pub use super::model_mercury::constant::*; -#[cfg(all(feature = "model_tr", not(feature = "model_tt")))] -pub use super::model_tr::constant::*; -#[cfg(feature = "model_tt")] -pub use super::model_tt::constant::*; +pub use super::layout_bolt::constant::*; +#[cfg(all(feature = "layout_quicksilver", not(feature = "layout_bolt")))] +pub use super::layout_quicksilver::constant::*; +#[cfg(feature = "layout_samson")] +pub use super::layout_samson::constant::*; diff --git a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs b/core/embed/rust/src/ui/layout_bolt/bootloader/intro.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/bootloader/intro.rs rename to core/embed/rust/src/ui/layout_bolt/bootloader/intro.rs index f65b74b59b0..90cd2b72c1f 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs +++ b/core/embed/rust/src/ui/layout_bolt/bootloader/intro.rs @@ -5,7 +5,7 @@ use crate::{ constant::screen, display::Icon, geometry::{Alignment, Insets, Point, Rect}, - model_tt::{ + layout_bolt::{ component::{Button, ButtonMsg::Clicked}, constant::WIDTH, theme::bootloader::{ diff --git a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs b/core/embed/rust/src/ui/layout_bolt/bootloader/menu.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/bootloader/menu.rs rename to core/embed/rust/src/ui/layout_bolt/bootloader/menu.rs index 98383813403..c8c9a61b714 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs +++ b/core/embed/rust/src/ui/layout_bolt/bootloader/menu.rs @@ -5,7 +5,7 @@ use crate::{ constant::{screen, WIDTH}, display::Icon, geometry::{Insets, Point, Rect}, - model_tt::{ + layout_bolt::{ component::{Button, ButtonMsg::Clicked, IconText}, theme::bootloader::{ button_bld, button_bld_menu, text_title, BLD_BG, BUTTON_HEIGHT, CONTENT_PADDING, diff --git a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs b/core/embed/rust/src/ui/layout_bolt/bootloader/mod.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/bootloader/mod.rs rename to core/embed/rust/src/ui/layout_bolt/bootloader/mod.rs index b55bea3355d..a68129f0a8c 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs +++ b/core/embed/rust/src/ui/layout_bolt/bootloader/mod.rs @@ -26,7 +26,7 @@ use super::{ }, FG, }, - UIModelTT, + UIBolt, }; use crate::ui::{ui_bootloader::BootloaderUI, CommonUI}; @@ -56,9 +56,9 @@ pub type BootloaderString = String<128>; const RECONNECT_MESSAGE: &str = "PLEASE RECONNECT\nTHE DEVICE"; -const SCREEN: Rect = UIModelTT::SCREEN; +const SCREEN: Rect = UIBolt::SCREEN; -impl UIModelTT { +impl UIBolt { fn screen_progress( text: &str, progress: u16, @@ -133,7 +133,7 @@ impl UIModelTT { } } -impl BootloaderUI for UIModelTT { +impl BootloaderUI for UIBolt { fn screen_welcome() { let mut frame = Welcome::new(); show(&mut frame, true); diff --git a/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs b/core/embed/rust/src/ui/layout_bolt/bootloader/welcome.rs similarity index 98% rename from core/embed/rust/src/ui/model_tt/bootloader/welcome.rs rename to core/embed/rust/src/ui/layout_bolt/bootloader/welcome.rs index 6eea6e8eeac..d1aaffbe48d 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/layout_bolt/bootloader/welcome.rs @@ -3,7 +3,7 @@ use crate::ui::{ constant::screen, display::{toif::Toif, Font}, geometry::{Alignment, Alignment2D, Offset, Rect}, - model_tt::theme::{ + layout_bolt::theme::{ bootloader::{START_URL, WELCOME_COLOR}, GREY_MEDIUM, WHITE, }, diff --git a/core/embed/rust/src/ui/model_tt/component/address_details.rs b/core/embed/rust/src/ui/layout_bolt/component/address_details.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/address_details.rs rename to core/embed/rust/src/ui/layout_bolt/component/address_details.rs diff --git a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs b/core/embed/rust/src/ui/layout_bolt/component/bl_confirm.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/bl_confirm.rs rename to core/embed/rust/src/ui/layout_bolt/component/bl_confirm.rs index cd66ef34f5b..cce2bb37944 100644 --- a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/bl_confirm.rs @@ -6,7 +6,7 @@ use crate::{ constant::screen, display::{Color, Icon}, geometry::{Alignment2D, Insets, Offset, Point, Rect}, - model_tt::{ + layout_bolt::{ component::{Button, ButtonMsg::Clicked, ButtonStyleSheet}, constant::WIDTH, theme::{ diff --git a/core/embed/rust/src/ui/model_tt/component/button.rs b/core/embed/rust/src/ui/layout_bolt/component/button.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/button.rs rename to core/embed/rust/src/ui/layout_bolt/component/button.rs diff --git a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs b/core/embed/rust/src/ui/layout_bolt/component/coinjoin_progress.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs rename to core/embed/rust/src/ui/layout_bolt/component/coinjoin_progress.rs diff --git a/core/embed/rust/src/ui/model_tt/component/dialog.rs b/core/embed/rust/src/ui/layout_bolt/component/dialog.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/dialog.rs rename to core/embed/rust/src/ui/layout_bolt/component/dialog.rs diff --git a/core/embed/rust/src/ui/model_tt/component/error.rs b/core/embed/rust/src/ui/layout_bolt/component/error.rs similarity index 95% rename from core/embed/rust/src/ui/model_tt/component/error.rs rename to core/embed/rust/src/ui/layout_bolt/component/error.rs index 8f638b143e3..a70f2d52043 100644 --- a/core/embed/rust/src/ui/model_tt/component/error.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/error.rs @@ -9,7 +9,7 @@ use crate::{ }, }; -use crate::ui::model_tt::{ +use crate::ui::layout_bolt::{ component::{ResultFooter, ResultStyle}, constant::WIDTH, theme::{FATAL_ERROR_COLOR, ICON_WARNING40, RESULT_FOOTER_START, RESULT_PADDING, WHITE}, @@ -20,7 +20,7 @@ const TITLE_AREA_START: i16 = 70; const MESSAGE_AREA_START: i16 = 116; #[cfg(feature = "bootloader")] -const STYLE: &ResultStyle = &crate::ui::model_tt::theme::bootloader::RESULT_WIPE; +const STYLE: &ResultStyle = &crate::ui::layout_bolt::theme::bootloader::RESULT_WIPE; #[cfg(not(feature = "bootloader"))] const STYLE: &ResultStyle = &super::theme::RESULT_ERROR; diff --git a/core/embed/rust/src/ui/model_tt/component/fido.rs b/core/embed/rust/src/ui/layout_bolt/component/fido.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/fido.rs rename to core/embed/rust/src/ui/layout_bolt/component/fido.rs index 84fcd3c7015..a8f1a67dfa8 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/fido.rs @@ -4,7 +4,7 @@ use crate::{ component::{image::Image, Child, Component, Event, EventCtx, Label}, display, geometry::{Insets, Rect}, - model_tt::component::{ + layout_bolt::component::{ fido_icons::get_fido_icon_data, swipe::{Swipe, SwipeDirection}, theme, ScrollBar, diff --git a/core/embed/rust/src/ui/layout_bolt/component/fido_icons.rs b/core/embed/rust/src/ui/layout_bolt/component/fido_icons.rs new file mode 100644 index 00000000000..1f9c59b57ce --- /dev/null +++ b/core/embed/rust/src/ui/layout_bolt/component/fido_icons.rs @@ -0,0 +1,84 @@ +//! generated from webauthn_icons.rs.mako +//! (by running `make templates` in `core`) +//! do not edit manually! + + +use crate::strutil::TString; +use crate::ui::util::include_res; + + +const ICON_APPLE: &[u8] = include_res!("layout_bolt/res/fido/icon_apple.toif"); +const ICON_AWS: &[u8] = include_res!("layout_bolt/res/fido/icon_aws.toif"); +const ICON_BINANCE: &[u8] = include_res!("layout_bolt/res/fido/icon_binance.toif"); +const ICON_BITBUCKET: &[u8] = include_res!("layout_bolt/res/fido/icon_bitbucket.toif"); +const ICON_BITFINEX: &[u8] = include_res!("layout_bolt/res/fido/icon_bitfinex.toif"); +const ICON_BITWARDEN: &[u8] = include_res!("layout_bolt/res/fido/icon_bitwarden.toif"); +const ICON_CLOUDFLARE: &[u8] = include_res!("layout_bolt/res/fido/icon_cloudflare.toif"); +const ICON_COINBASE: &[u8] = include_res!("layout_bolt/res/fido/icon_coinbase.toif"); +const ICON_DASHLANE: &[u8] = include_res!("layout_bolt/res/fido/icon_dashlane.toif"); +const ICON_DROPBOX: &[u8] = include_res!("layout_bolt/res/fido/icon_dropbox.toif"); +const ICON_DUO: &[u8] = include_res!("layout_bolt/res/fido/icon_duo.toif"); +const ICON_FACEBOOK: &[u8] = include_res!("layout_bolt/res/fido/icon_facebook.toif"); +const ICON_FASTMAIL: &[u8] = include_res!("layout_bolt/res/fido/icon_fastmail.toif"); +const ICON_FEDORA: &[u8] = include_res!("layout_bolt/res/fido/icon_fedora.toif"); +const ICON_GANDI: &[u8] = include_res!("layout_bolt/res/fido/icon_gandi.toif"); +const ICON_GEMINI: &[u8] = include_res!("layout_bolt/res/fido/icon_gemini.toif"); +const ICON_GITHUB: &[u8] = include_res!("layout_bolt/res/fido/icon_github.toif"); +const ICON_GITLAB: &[u8] = include_res!("layout_bolt/res/fido/icon_gitlab.toif"); +const ICON_GOOGLE: &[u8] = include_res!("layout_bolt/res/fido/icon_google.toif"); +const ICON_INVITY: &[u8] = include_res!("layout_bolt/res/fido/icon_invity.toif"); +const ICON_KEEPER: &[u8] = include_res!("layout_bolt/res/fido/icon_keeper.toif"); +const ICON_KRAKEN: &[u8] = include_res!("layout_bolt/res/fido/icon_kraken.toif"); +const ICON_LOGIN_GOV: &[u8] = include_res!("layout_bolt/res/fido/icon_login.gov.toif"); +const ICON_MICROSOFT: &[u8] = include_res!("layout_bolt/res/fido/icon_microsoft.toif"); +const ICON_MOJEID: &[u8] = include_res!("layout_bolt/res/fido/icon_mojeid.toif"); +const ICON_NAMECHEAP: &[u8] = include_res!("layout_bolt/res/fido/icon_namecheap.toif"); +const ICON_PROTON: &[u8] = include_res!("layout_bolt/res/fido/icon_proton.toif"); +const ICON_SLUSHPOOL: &[u8] = include_res!("layout_bolt/res/fido/icon_slushpool.toif"); +const ICON_STRIPE: &[u8] = include_res!("layout_bolt/res/fido/icon_stripe.toif"); +const ICON_TUTANOTA: &[u8] = include_res!("layout_bolt/res/fido/icon_tutanota.toif"); +/// Default icon when app does not have its own +const ICON_WEBAUTHN: &[u8] = include_res!("layout_bolt/res/fido/icon_webauthn.toif"); + +/// Translates icon name into its data. +/// Returns default `ICON_WEBAUTHN` when the icon is not found or name not +/// supplied. +pub fn get_fido_icon_data(icon_name: Option>) -> &'static [u8] { + if let Some(icon_name) = icon_name { + icon_name.map(|c| match c { + "apple" => ICON_APPLE, + "aws" => ICON_AWS, + "binance" => ICON_BINANCE, + "bitbucket" => ICON_BITBUCKET, + "bitfinex" => ICON_BITFINEX, + "bitwarden" => ICON_BITWARDEN, + "cloudflare" => ICON_CLOUDFLARE, + "coinbase" => ICON_COINBASE, + "dashlane" => ICON_DASHLANE, + "dropbox" => ICON_DROPBOX, + "duo" => ICON_DUO, + "facebook" => ICON_FACEBOOK, + "fastmail" => ICON_FASTMAIL, + "fedora" => ICON_FEDORA, + "gandi" => ICON_GANDI, + "gemini" => ICON_GEMINI, + "github" => ICON_GITHUB, + "gitlab" => ICON_GITLAB, + "google" => ICON_GOOGLE, + "invity" => ICON_INVITY, + "keeper" => ICON_KEEPER, + "kraken" => ICON_KRAKEN, + "login.gov" => ICON_LOGIN_GOV, + "microsoft" => ICON_MICROSOFT, + "mojeid" => ICON_MOJEID, + "namecheap" => ICON_NAMECHEAP, + "proton" => ICON_PROTON, + "slushpool" => ICON_SLUSHPOOL, + "stripe" => ICON_STRIPE, + "tutanota" => ICON_TUTANOTA, + _ => ICON_WEBAUTHN, + }) + } else { + ICON_WEBAUTHN + } +} diff --git a/core/embed/rust/src/ui/model_tt/component/fido_icons.rs.mako b/core/embed/rust/src/ui/layout_bolt/component/fido_icons.rs.mako similarity index 84% rename from core/embed/rust/src/ui/model_tt/component/fido_icons.rs.mako rename to core/embed/rust/src/ui/layout_bolt/component/fido_icons.rs.mako index 6b95c7689ab..4a8e6a07a69 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido_icons.rs.mako +++ b/core/embed/rust/src/ui/layout_bolt/component/fido_icons.rs.mako @@ -17,10 +17,10 @@ for app in fido: %>\ % for icon_name, var_name in icons: -const ICON_${var_name}: &[u8] = include_res!("model_tt/res/fido/icon_${icon_name}.toif"); +const ICON_${var_name}: &[u8] = include_res!("layout_bolt/res/fido/icon_${icon_name}.toif"); % endfor /// Default icon when app does not have its own -const ICON_WEBAUTHN: &[u8] = include_res!("model_tt/res/fido/icon_webauthn.toif"); +const ICON_WEBAUTHN: &[u8] = include_res!("layout_bolt/res/fido/icon_webauthn.toif"); /// Translates icon name into its data. /// Returns default `ICON_WEBAUTHN` when the icon is not found or name not diff --git a/core/embed/rust/src/ui/model_tt/component/frame.rs b/core/embed/rust/src/ui/layout_bolt/component/frame.rs similarity index 98% rename from core/embed/rust/src/ui/model_tt/component/frame.rs rename to core/embed/rust/src/ui/layout_bolt/component/frame.rs index 68a550cc4c8..245336c0477 100644 --- a/core/embed/rust/src/ui/model_tt/component/frame.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/frame.rs @@ -7,7 +7,7 @@ use crate::{ }, display::Icon, geometry::{Alignment, Insets, Offset, Rect}, - model_tt::component::{Button, ButtonMsg, CancelInfoConfirmMsg}, + layout_bolt::component::{Button, ButtonMsg, CancelInfoConfirmMsg}, shape::Renderer, }, }; diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen.rs b/core/embed/rust/src/ui/layout_bolt/component/homescreen.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/homescreen.rs rename to core/embed/rust/src/ui/layout_bolt/component/homescreen.rs index efdcfece81c..368c877bcda 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/homescreen.rs @@ -14,7 +14,7 @@ use crate::{ event::{TouchEvent, USBEvent}, geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, layout::util::get_user_custom_image, - model_tt::{constant, theme::IMAGE_HOMESCREEN}, + layout_bolt::{constant, theme::IMAGE_HOMESCREEN}, shape::{self, Renderer}, }, }; diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs b/core/embed/rust/src/ui/layout_bolt/component/keyboard/bip39.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs rename to core/embed/rust/src/ui/layout_bolt/component/keyboard/bip39.rs index 651d5bf7e23..8be2648377f 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/keyboard/bip39.rs @@ -3,7 +3,7 @@ use crate::{ ui::{ component::{text::common::TextBox, Component, Event, EventCtx}, geometry::{Alignment2D, Offset, Rect}, - model_tt::{ + layout_bolt::{ component::{ keyboard::{ common::{render_pending_marker, MultiTapKeyboard}, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/common.rs b/core/embed/rust/src/ui/layout_bolt/component/keyboard/common.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/keyboard/common.rs rename to core/embed/rust/src/ui/layout_bolt/component/keyboard/common.rs diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/layout_bolt/component/keyboard/mnemonic.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs rename to core/embed/rust/src/ui/layout_bolt/component/keyboard/mnemonic.rs index 9651bc95b56..6c7b378005c 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/keyboard/mnemonic.rs @@ -3,7 +3,7 @@ use crate::{ ui::{ component::{Child, Component, Event, EventCtx, Label, Maybe}, geometry::{Alignment2D, Grid, Offset, Rect}, - model_tt::{ + layout_bolt::{ component::{Button, ButtonMsg, Swipe, SwipeDirection}, theme, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mod.rs b/core/embed/rust/src/ui/layout_bolt/component/keyboard/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/keyboard/mod.rs rename to core/embed/rust/src/ui/layout_bolt/component/keyboard/mod.rs diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/layout_bolt/component/keyboard/passphrase.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs rename to core/embed/rust/src/ui/layout_bolt/component/keyboard/passphrase.rs index e66d01871d9..a26ddbc1c11 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/keyboard/passphrase.rs @@ -6,7 +6,7 @@ use crate::{ }, display, geometry::{Grid, Offset, Rect}, - model_tt::component::{ + layout_bolt::component::{ button::{Button, ButtonContent, ButtonMsg}, keyboard::common::{render_pending_marker, MultiTapKeyboard}, swipe::{Swipe, SwipeDirection}, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/layout_bolt/component/keyboard/pin.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs rename to core/embed/rust/src/ui/layout_bolt/component/keyboard/pin.rs index a430e279d36..4417d4a27cf 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/keyboard/pin.rs @@ -12,7 +12,7 @@ use crate::{ display::Font, event::TouchEvent, geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, - model_tt::component::{ + layout_bolt::component::{ button::{ Button, ButtonContent, ButtonMsg::{self, Clicked}, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs b/core/embed/rust/src/ui/layout_bolt/component/keyboard/slip39.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs rename to core/embed/rust/src/ui/layout_bolt/component/keyboard/slip39.rs index 7c9517aa6bb..05ee3fe5b44 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/keyboard/slip39.rs @@ -9,7 +9,7 @@ use crate::{ Component, Event, EventCtx, }, geometry::{Alignment2D, Offset, Rect}, - model_tt::{ + layout_bolt::{ component::{ keyboard::{ common::{render_pending_marker, MultiTapKeyboard}, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs b/core/embed/rust/src/ui/layout_bolt/component/keyboard/word_count.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs rename to core/embed/rust/src/ui/layout_bolt/component/keyboard/word_count.rs index 8ca34fc6c55..110589d2ed2 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/keyboard/word_count.rs @@ -1,7 +1,7 @@ use crate::ui::{ component::{Component, Event, EventCtx}, geometry::{Grid, GridCellSpan, Rect}, - model_tt::{ + layout_bolt::{ component::button::{Button, ButtonMsg}, theme, }, diff --git a/core/embed/rust/src/ui/model_tt/component/loader.rs b/core/embed/rust/src/ui/layout_bolt/component/loader.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/loader.rs rename to core/embed/rust/src/ui/layout_bolt/component/loader.rs index 33868948f3a..dae236ca71a 100644 --- a/core/embed/rust/src/ui/model_tt/component/loader.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/loader.rs @@ -11,7 +11,7 @@ use crate::{ component::{Component, Event, EventCtx, Pad}, display::{self, toif::Icon, Color, LOADER_MAX}, geometry::{Alignment2D, Offset, Rect}, - model_tt::constant, + layout_bolt::constant, shape::{self, Renderer}, util::animation_disabled, }, diff --git a/core/embed/rust/src/ui/model_tt/component/mod.rs b/core/embed/rust/src/ui/layout_bolt/component/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/mod.rs rename to core/embed/rust/src/ui/layout_bolt/component/mod.rs diff --git a/core/embed/rust/src/ui/model_tt/component/number_input.rs b/core/embed/rust/src/ui/layout_bolt/component/number_input.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/number_input.rs rename to core/embed/rust/src/ui/layout_bolt/component/number_input.rs diff --git a/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs b/core/embed/rust/src/ui/layout_bolt/component/number_input_slider.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/number_input_slider.rs rename to core/embed/rust/src/ui/layout_bolt/component/number_input_slider.rs diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/layout_bolt/component/page.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/page.rs rename to core/embed/rust/src/ui/layout_bolt/component/page.rs index b1e623e85ee..d4cd8356917 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/page.rs @@ -487,7 +487,7 @@ mod tests { component::text::paragraphs::{Paragraph, Paragraphs}, event::TouchEvent, geometry::Point, - model_tt::constant, + layout_bolt::constant, }, }; diff --git a/core/embed/rust/src/ui/model_tt/component/progress.rs b/core/embed/rust/src/ui/layout_bolt/component/progress.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/progress.rs rename to core/embed/rust/src/ui/layout_bolt/component/progress.rs index 5995f33f2d4..d31a3f9274f 100644 --- a/core/embed/rust/src/ui/model_tt/component/progress.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/progress.rs @@ -15,7 +15,7 @@ use crate::{ }, display::{Font, LOADER_MAX}, geometry::{Insets, Offset, Rect}, - model_tt::constant, + layout_bolt::constant, shape::Renderer, util::animation_disabled, }, diff --git a/core/embed/rust/src/ui/model_tt/component/result.rs b/core/embed/rust/src/ui/layout_bolt/component/result.rs similarity index 98% rename from core/embed/rust/src/ui/model_tt/component/result.rs rename to core/embed/rust/src/ui/layout_bolt/component/result.rs index 50509ffb223..29058cdedfb 100644 --- a/core/embed/rust/src/ui/model_tt/component/result.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/result.rs @@ -5,13 +5,13 @@ use crate::{ constant::screen, display::{Color, Font, Icon}, geometry::{Alignment2D, Insets, Offset, Point, Rect}, - model_tt::theme::FG, + layout_bolt::theme::FG, shape, shape::Renderer, }, }; -use crate::ui::model_tt::{ +use crate::ui::layout_bolt::{ constant::WIDTH, theme::{RESULT_FOOTER_START, RESULT_PADDING}, }; diff --git a/core/embed/rust/src/ui/model_mercury/component/scroll.rs b/core/embed/rust/src/ui/layout_bolt/component/scroll.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/scroll.rs rename to core/embed/rust/src/ui/layout_bolt/component/scroll.rs diff --git a/core/embed/rust/src/ui/model_tt/component/set_brightness.rs b/core/embed/rust/src/ui/layout_bolt/component/set_brightness.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/set_brightness.rs rename to core/embed/rust/src/ui/layout_bolt/component/set_brightness.rs diff --git a/core/embed/rust/src/ui/model_tt/component/share_words.rs b/core/embed/rust/src/ui/layout_bolt/component/share_words.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/share_words.rs rename to core/embed/rust/src/ui/layout_bolt/component/share_words.rs index f05e379c2ec..3f387039927 100644 --- a/core/embed/rust/src/ui/model_tt/component/share_words.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/share_words.rs @@ -4,7 +4,7 @@ use crate::{ component::{Component, Event, EventCtx, Never, Paginate}, display::Font, geometry::{Offset, Rect}, - model_tt::theme, + layout_bolt::theme, shape::{self, Renderer}, }, }; diff --git a/core/embed/rust/src/ui/model_tt/component/simple_page.rs b/core/embed/rust/src/ui/layout_bolt/component/simple_page.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/simple_page.rs rename to core/embed/rust/src/ui/layout_bolt/component/simple_page.rs diff --git a/core/embed/rust/src/ui/model_tt/component/swipe.rs b/core/embed/rust/src/ui/layout_bolt/component/swipe.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/component/swipe.rs rename to core/embed/rust/src/ui/layout_bolt/component/swipe.rs index ce8476fcc2e..f845fa7c423 100644 --- a/core/embed/rust/src/ui/model_tt/component/swipe.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/swipe.rs @@ -3,7 +3,7 @@ use crate::ui::{ display, event::TouchEvent, geometry::{Point, Rect}, - model_tt::theme::backlight, + layout_bolt::theme::backlight, shape::Renderer, }; diff --git a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs b/core/embed/rust/src/ui/layout_bolt/component/welcome_screen.rs similarity index 95% rename from core/embed/rust/src/ui/model_tt/component/welcome_screen.rs rename to core/embed/rust/src/ui/layout_bolt/component/welcome_screen.rs index 6fef82e1ec0..f3b7f031924 100644 --- a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/layout_bolt/component/welcome_screen.rs @@ -1,12 +1,12 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never}, geometry::{Alignment2D, Offset, Rect}, - model_tt::theme, + layout_bolt::theme, shape, shape::Renderer, }; #[cfg(feature = "bootloader")] -use crate::ui::{display::toif::Toif, model_tt::theme::bootloader::DEVICE_NAME}; +use crate::ui::{display::toif::Toif, layout_bolt::theme::bootloader::DEVICE_NAME}; const TEXT_BOTTOM_MARGIN: i16 = 24; // matching the homescreen label margin const ICON_TOP_MARGIN: i16 = 48; diff --git a/core/embed/rust/src/ui/model_tt/component_msg_obj.rs b/core/embed/rust/src/ui/layout_bolt/component_msg_obj.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component_msg_obj.rs rename to core/embed/rust/src/ui/layout_bolt/component_msg_obj.rs diff --git a/core/embed/rust/src/ui/model_tt/constant.rs b/core/embed/rust/src/ui/layout_bolt/constant.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/constant.rs rename to core/embed/rust/src/ui/layout_bolt/constant.rs diff --git a/core/embed/rust/src/ui/model_tt/cshape/loader.rs b/core/embed/rust/src/ui/layout_bolt/cshape/loader.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/cshape/loader.rs rename to core/embed/rust/src/ui/layout_bolt/cshape/loader.rs diff --git a/core/embed/rust/src/ui/model_tt/cshape/mod.rs b/core/embed/rust/src/ui/layout_bolt/cshape/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/cshape/mod.rs rename to core/embed/rust/src/ui/layout_bolt/cshape/mod.rs diff --git a/core/embed/rust/src/ui/model_tt/mod.rs b/core/embed/rust/src/ui/layout_bolt/mod.rs similarity index 92% rename from core/embed/rust/src/ui/model_tt/mod.rs rename to core/embed/rust/src/ui/layout_bolt/mod.rs index 370c9bc695c..f70b9fe821d 100644 --- a/core/embed/rust/src/ui/model_tt/mod.rs +++ b/core/embed/rust/src/ui/layout_bolt/mod.rs @@ -7,7 +7,7 @@ pub mod constant; pub mod theme; #[cfg(feature = "backlight")] -use crate::ui::model_tt::theme::backlight; +use crate::ui::layout_bolt::theme::backlight; #[cfg(feature = "micropython")] pub mod component_msg_obj; @@ -15,15 +15,15 @@ pub mod cshape; use crate::ui::{ layout::simplified::show, - model_tt::component::{ErrorScreen, WelcomeScreen}, + layout_bolt::component::{ErrorScreen, WelcomeScreen}, }; -pub struct UIModelTT; +pub struct UIBolt; #[cfg(feature = "micropython")] pub mod ui_firmware; -impl CommonUI for UIModelTT { +impl CommonUI for UIBolt { #[cfg(feature = "backlight")] fn fadein() { crate::ui::display::fade_backlight_duration(backlight::get_backlight_normal(), 150); diff --git a/core/embed/rust/src/ui/model_tt/res/arrow-right16.toif b/core/embed/rust/src/ui/layout_bolt/res/arrow-right16.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/arrow-right16.toif rename to core/embed/rust/src/ui/layout_bolt/res/arrow-right16.toif diff --git a/core/embed/rust/src/ui/model_tt/res/back_btn_tall.toif b/core/embed/rust/src/ui/layout_bolt/res/back_btn_tall.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/back_btn_tall.toif rename to core/embed/rust/src/ui/layout_bolt/res/back_btn_tall.toif diff --git a/core/embed/rust/src/ui/model_tt/res/bg-back40.toif b/core/embed/rust/src/ui/layout_bolt/res/bg-back40.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/bg-back40.toif rename to core/embed/rust/src/ui/layout_bolt/res/bg-back40.toif diff --git a/core/embed/rust/src/ui/model_tt/res/bg-back52.toif b/core/embed/rust/src/ui/layout_bolt/res/bg-back52.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/bg-back52.toif rename to core/embed/rust/src/ui/layout_bolt/res/bg-back52.toif diff --git a/core/embed/rust/src/ui/model_tt/res/bg.jpg b/core/embed/rust/src/ui/layout_bolt/res/bg.jpg similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/bg.jpg rename to core/embed/rust/src/ui/layout_bolt/res/bg.jpg diff --git a/core/embed/rust/src/ui/model_tt/res/caret-down24.toif b/core/embed/rust/src/ui/layout_bolt/res/caret-down24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/caret-down24.toif rename to core/embed/rust/src/ui/layout_bolt/res/caret-down24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/caret-left24.toif b/core/embed/rust/src/ui/layout_bolt/res/caret-left24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/caret-left24.toif rename to core/embed/rust/src/ui/layout_bolt/res/caret-left24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/caret-right24.toif b/core/embed/rust/src/ui/layout_bolt/res/caret-right24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/caret-right24.toif rename to core/embed/rust/src/ui/layout_bolt/res/caret-right24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/caret-up24.toif b/core/embed/rust/src/ui/layout_bolt/res/caret-up24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/caret-up24.toif rename to core/embed/rust/src/ui/layout_bolt/res/caret-up24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/check16.toif b/core/embed/rust/src/ui/layout_bolt/res/check16.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/check16.toif rename to core/embed/rust/src/ui/layout_bolt/res/check16.toif diff --git a/core/embed/rust/src/ui/model_tt/res/check24.toif b/core/embed/rust/src/ui/layout_bolt/res/check24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/check24.toif rename to core/embed/rust/src/ui/layout_bolt/res/check24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/check40.toif b/core/embed/rust/src/ui/layout_bolt/res/check40.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/check40.toif rename to core/embed/rust/src/ui/layout_bolt/res/check40.toif diff --git a/core/embed/rust/src/ui/model_tt/res/circle48.toif b/core/embed/rust/src/ui/layout_bolt/res/circle48.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/circle48.toif rename to core/embed/rust/src/ui/layout_bolt/res/circle48.toif diff --git a/core/embed/rust/src/ui/model_tt/res/coinjoin16.toif b/core/embed/rust/src/ui/layout_bolt/res/coinjoin16.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/coinjoin16.toif rename to core/embed/rust/src/ui/layout_bolt/res/coinjoin16.toif diff --git a/core/embed/rust/src/ui/model_tt/res/device_name_T.toif b/core/embed/rust/src/ui/layout_bolt/res/device_name_T.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/device_name_T.toif rename to core/embed/rust/src/ui/layout_bolt/res/device_name_T.toif diff --git a/core/embed/rust/src/ui/model_tt/res/down.toif b/core/embed/rust/src/ui/layout_bolt/res/down.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/down.toif rename to core/embed/rust/src/ui/layout_bolt/res/down.toif diff --git a/core/embed/rust/src/ui/model_tt/res/download32.toif b/core/embed/rust/src/ui/layout_bolt/res/download32.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/download32.toif rename to core/embed/rust/src/ui/layout_bolt/res/download32.toif diff --git a/core/embed/rust/src/ui/model_tt/res/erase.toif b/core/embed/rust/src/ui/layout_bolt/res/erase.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/erase.toif rename to core/embed/rust/src/ui/layout_bolt/res/erase.toif diff --git a/core/embed/rust/src/ui/model_tt/res/error.toif b/core/embed/rust/src/ui/layout_bolt/res/error.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/error.toif rename to core/embed/rust/src/ui/layout_bolt/res/error.toif diff --git a/core/embed/rust/src/ui/model_tt/res/error_fg.toif b/core/embed/rust/src/ui/layout_bolt/res/error_fg.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/error_fg.toif rename to core/embed/rust/src/ui/layout_bolt/res/error_fg.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fg-check48.toif b/core/embed/rust/src/ui/layout_bolt/res/fg-check48.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fg-check48.toif rename to core/embed/rust/src/ui/layout_bolt/res/fg-check48.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fg-error48.toif b/core/embed/rust/src/ui/layout_bolt/res/fg-error48.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fg-error48.toif rename to core/embed/rust/src/ui/layout_bolt/res/fg-error48.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fg-info48.toif b/core/embed/rust/src/ui/layout_bolt/res/fg-info48.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fg-info48.toif rename to core/embed/rust/src/ui/layout_bolt/res/fg-info48.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fg-user48.toif b/core/embed/rust/src/ui/layout_bolt/res/fg-user48.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fg-user48.toif rename to core/embed/rust/src/ui/layout_bolt/res/fg-user48.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fg-warning48.toif b/core/embed/rust/src/ui/layout_bolt/res/fg-warning48.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fg-warning48.toif rename to core/embed/rust/src/ui/layout_bolt/res/fg-warning48.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_apple.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_apple.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_apple.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_apple.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_aws.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_aws.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_aws.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_aws.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_binance.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_binance.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_binance.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_binance.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_bitbucket.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_bitbucket.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_bitbucket.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_bitbucket.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_bitfinex.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_bitfinex.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_bitfinex.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_bitfinex.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_bitwarden.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_bitwarden.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_bitwarden.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_bitwarden.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_cloudflare.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_cloudflare.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_cloudflare.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_cloudflare.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_coinbase.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_coinbase.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_coinbase.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_coinbase.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_dashlane.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_dashlane.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_dashlane.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_dashlane.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_dropbox.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_dropbox.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_dropbox.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_dropbox.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_duo.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_duo.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_duo.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_duo.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_facebook.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_facebook.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_facebook.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_facebook.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_fastmail.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_fastmail.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_fastmail.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_fastmail.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_fedora.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_fedora.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_fedora.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_fedora.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_gandi.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_gandi.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_gandi.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_gandi.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_gemini.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_gemini.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_gemini.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_gemini.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_github.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_github.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_github.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_github.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_gitlab.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_gitlab.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_gitlab.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_gitlab.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_google.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_google.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_google.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_google.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_invity.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_invity.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_invity.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_invity.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_keeper.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_keeper.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_keeper.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_keeper.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_kraken.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_kraken.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_kraken.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_kraken.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_login.gov.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_login.gov.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_login.gov.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_login.gov.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_microsoft.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_microsoft.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_microsoft.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_microsoft.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_mojeid.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_mojeid.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_mojeid.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_mojeid.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_namecheap.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_namecheap.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_namecheap.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_namecheap.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_proton.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_proton.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_proton.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_proton.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_slushpool.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_slushpool.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_slushpool.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_slushpool.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_stripe.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_stripe.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_stripe.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_stripe.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_tutanota.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_tutanota.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_tutanota.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_tutanota.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_webauthn.toif b/core/embed/rust/src/ui/layout_bolt/res/fido/icon_webauthn.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_webauthn.toif rename to core/embed/rust/src/ui/layout_bolt/res/fido/icon_webauthn.toif diff --git a/core/embed/rust/src/ui/model_tt/res/finger24.toif b/core/embed/rust/src/ui/layout_bolt/res/finger24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/finger24.toif rename to core/embed/rust/src/ui/layout_bolt/res/finger24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fire24.toif b/core/embed/rust/src/ui/layout_bolt/res/fire24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fire24.toif rename to core/embed/rust/src/ui/layout_bolt/res/fire24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fire32.toif b/core/embed/rust/src/ui/layout_bolt/res/fire32.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fire32.toif rename to core/embed/rust/src/ui/layout_bolt/res/fire32.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fire40.toif b/core/embed/rust/src/ui/layout_bolt/res/fire40.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fire40.toif rename to core/embed/rust/src/ui/layout_bolt/res/fire40.toif diff --git a/core/embed/rust/src/ui/model_tt/res/info.toif b/core/embed/rust/src/ui/layout_bolt/res/info.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/info.toif rename to core/embed/rust/src/ui/layout_bolt/res/info.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/info32.toif b/core/embed/rust/src/ui/layout_bolt/res/info32.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/info32.toif rename to core/embed/rust/src/ui/layout_bolt/res/info32.toif diff --git a/core/embed/rust/src/ui/model_tt/res/info_small.toif b/core/embed/rust/src/ui/layout_bolt/res/info_small.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/info_small.toif rename to core/embed/rust/src/ui/layout_bolt/res/info_small.toif diff --git a/core/embed/rust/src/ui/model_tt/res/left.toif b/core/embed/rust/src/ui/layout_bolt/res/left.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/left.toif rename to core/embed/rust/src/ui/layout_bolt/res/left.toif diff --git a/core/embed/rust/src/ui/model_tt/res/lock16.toif b/core/embed/rust/src/ui/layout_bolt/res/lock16.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/lock16.toif rename to core/embed/rust/src/ui/layout_bolt/res/lock16.toif diff --git a/core/embed/rust/src/ui/model_tt/res/lock24.toif b/core/embed/rust/src/ui/layout_bolt/res/lock24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/lock24.toif rename to core/embed/rust/src/ui/layout_bolt/res/lock24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/lock_empty.toif b/core/embed/rust/src/ui/layout_bolt/res/lock_empty.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/lock_empty.toif rename to core/embed/rust/src/ui/layout_bolt/res/lock_empty.toif diff --git a/core/embed/rust/src/ui/model_tt/res/lock_full.toif b/core/embed/rust/src/ui/layout_bolt/res/lock_full.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/lock_full.toif rename to core/embed/rust/src/ui/layout_bolt/res/lock_full.toif diff --git a/core/embed/rust/src/ui/model_tt/res/magic.toif b/core/embed/rust/src/ui/layout_bolt/res/magic.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/magic.toif rename to core/embed/rust/src/ui/layout_bolt/res/magic.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/menu32.toif b/core/embed/rust/src/ui/layout_bolt/res/menu32.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/menu32.toif rename to core/embed/rust/src/ui/layout_bolt/res/menu32.toif diff --git a/core/embed/rust/src/ui/model_tt/res/next.toif b/core/embed/rust/src/ui/layout_bolt/res/next.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/next.toif rename to core/embed/rust/src/ui/layout_bolt/res/next.toif diff --git a/core/embed/rust/src/ui/model_tt/res/octagon48.toif b/core/embed/rust/src/ui/layout_bolt/res/octagon48.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/octagon48.toif rename to core/embed/rust/src/ui/layout_bolt/res/octagon48.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/page-next.toif b/core/embed/rust/src/ui/layout_bolt/res/page-next.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/page-next.toif rename to core/embed/rust/src/ui/layout_bolt/res/page-next.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/page-prev.toif b/core/embed/rust/src/ui/layout_bolt/res/page-prev.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/page-prev.toif rename to core/embed/rust/src/ui/layout_bolt/res/page-prev.toif diff --git a/core/embed/rust/src/ui/model_tt/res/receive.toif b/core/embed/rust/src/ui/layout_bolt/res/receive.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/receive.toif rename to core/embed/rust/src/ui/layout_bolt/res/receive.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/refresh24.toif b/core/embed/rust/src/ui/layout_bolt/res/refresh24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/refresh24.toif rename to core/embed/rust/src/ui/layout_bolt/res/refresh24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-active.toif b/core/embed/rust/src/ui/layout_bolt/res/scroll-active.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/scroll-active.toif rename to core/embed/rust/src/ui/layout_bolt/res/scroll-active.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-inactive-half.toif b/core/embed/rust/src/ui/layout_bolt/res/scroll-inactive-half.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/scroll-inactive-half.toif rename to core/embed/rust/src/ui/layout_bolt/res/scroll-inactive-half.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-inactive-quarter.toif b/core/embed/rust/src/ui/layout_bolt/res/scroll-inactive-quarter.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/scroll-inactive-quarter.toif rename to core/embed/rust/src/ui/layout_bolt/res/scroll-inactive-quarter.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-inactive.toif b/core/embed/rust/src/ui/layout_bolt/res/scroll-inactive.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/scroll-inactive.toif rename to core/embed/rust/src/ui/layout_bolt/res/scroll-inactive.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-small.toif b/core/embed/rust/src/ui/layout_bolt/res/scroll-small.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/scroll-small.toif rename to core/embed/rust/src/ui/layout_bolt/res/scroll-small.toif diff --git a/core/embed/rust/src/ui/model_tt/res/space.toif b/core/embed/rust/src/ui/layout_bolt/res/space.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/space.toif rename to core/embed/rust/src/ui/layout_bolt/res/space.toif diff --git a/core/embed/rust/src/ui/model_tt/res/start.toif b/core/embed/rust/src/ui/layout_bolt/res/start.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/start.toif rename to core/embed/rust/src/ui/layout_bolt/res/start.toif diff --git a/core/embed/rust/src/ui/model_tt/res/success.toif b/core/embed/rust/src/ui/layout_bolt/res/success.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/success.toif rename to core/embed/rust/src/ui/layout_bolt/res/success.toif diff --git a/core/embed/rust/src/ui/model_tt/res/success_bld.toif b/core/embed/rust/src/ui/layout_bolt/res/success_bld.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/success_bld.toif rename to core/embed/rust/src/ui/layout_bolt/res/success_bld.toif diff --git a/core/embed/rust/src/ui/model_tt/res/trezor_empty.toif b/core/embed/rust/src/ui/layout_bolt/res/trezor_empty.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/trezor_empty.toif rename to core/embed/rust/src/ui/layout_bolt/res/trezor_empty.toif diff --git a/core/embed/rust/src/ui/model_tt/res/trezor_empty_white.toif b/core/embed/rust/src/ui/layout_bolt/res/trezor_empty_white.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/trezor_empty_white.toif rename to core/embed/rust/src/ui/layout_bolt/res/trezor_empty_white.toif diff --git a/core/embed/rust/src/ui/model_tt/res/warn-icon.toif b/core/embed/rust/src/ui/layout_bolt/res/warn-icon.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/warn-icon.toif rename to core/embed/rust/src/ui/layout_bolt/res/warn-icon.toif diff --git a/core/embed/rust/src/ui/model_tt/res/warn_bld.toif b/core/embed/rust/src/ui/layout_bolt/res/warn_bld.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/warn_bld.toif rename to core/embed/rust/src/ui/layout_bolt/res/warn_bld.toif diff --git a/core/embed/rust/src/ui/model_tt/res/warning16.toif b/core/embed/rust/src/ui/layout_bolt/res/warning16.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/warning16.toif rename to core/embed/rust/src/ui/layout_bolt/res/warning16.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/warning40.toif b/core/embed/rust/src/ui/layout_bolt/res/warning40.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/warning40.toif rename to core/embed/rust/src/ui/layout_bolt/res/warning40.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/x24.toif b/core/embed/rust/src/ui/layout_bolt/res/x24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/x24.toif rename to core/embed/rust/src/ui/layout_bolt/res/x24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/x32.toif b/core/embed/rust/src/ui/layout_bolt/res/x32.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/x32.toif rename to core/embed/rust/src/ui/layout_bolt/res/x32.toif diff --git a/core/embed/rust/src/ui/model_mercury/theme/backlight.rs b/core/embed/rust/src/ui/layout_bolt/theme/backlight.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/theme/backlight.rs rename to core/embed/rust/src/ui/layout_bolt/theme/backlight.rs diff --git a/core/embed/rust/src/ui/model_tt/theme/bootloader.rs b/core/embed/rust/src/ui/layout_bolt/theme/bootloader.rs similarity index 88% rename from core/embed/rust/src/ui/model_tt/theme/bootloader.rs rename to core/embed/rust/src/ui/layout_bolt/theme/bootloader.rs index c132c54f327..0d099bbbd35 100644 --- a/core/embed/rust/src/ui/model_tt/theme/bootloader.rs +++ b/core/embed/rust/src/ui/layout_bolt/theme/bootloader.rs @@ -3,7 +3,7 @@ use crate::ui::{ constant::{HEIGHT, WIDTH}, display::{Color, Font}, geometry::{Offset, Point, Rect}, - model_tt::{ + layout_bolt::{ component::{ButtonStyle, ButtonStyleSheet, ResultStyle}, theme::{BLACK, FG, GREY_DARK, GREY_LIGHT, WHITE}, }, @@ -56,21 +56,21 @@ pub const BUTTON_AREA_START: i16 = HEIGHT - 56; pub const BUTTON_HEIGHT: i16 = 50; // BLD icons -pub const X24: &[u8] = include_res!("model_tt/res/x24.toif"); -pub const X32: &[u8] = include_res!("model_tt/res/x32.toif"); -pub const FIRE24: &[u8] = include_res!("model_tt/res/fire24.toif"); -pub const FIRE32: &[u8] = include_res!("model_tt/res/fire32.toif"); -pub const FIRE40: &[u8] = include_res!("model_tt/res/fire40.toif"); -pub const REFRESH24: &[u8] = include_res!("model_tt/res/refresh24.toif"); -pub const MENU32: &[u8] = include_res!("model_tt/res/menu32.toif"); -pub const INFO32: &[u8] = include_res!("model_tt/res/info32.toif"); -pub const DOWNLOAD32: &[u8] = include_res!("model_tt/res/download32.toif"); -pub const WARNING40: &[u8] = include_res!("model_tt/res/warning40.toif"); -pub const CHECK24: &[u8] = include_res!("model_tt/res/check24.toif"); -pub const CHECK40: &[u8] = include_res!("model_tt/res/check40.toif"); +pub const X24: &[u8] = include_res!("layout_bolt/res/x24.toif"); +pub const X32: &[u8] = include_res!("layout_bolt/res/x32.toif"); +pub const FIRE24: &[u8] = include_res!("layout_bolt/res/fire24.toif"); +pub const FIRE32: &[u8] = include_res!("layout_bolt/res/fire32.toif"); +pub const FIRE40: &[u8] = include_res!("layout_bolt/res/fire40.toif"); +pub const REFRESH24: &[u8] = include_res!("layout_bolt/res/refresh24.toif"); +pub const MENU32: &[u8] = include_res!("layout_bolt/res/menu32.toif"); +pub const INFO32: &[u8] = include_res!("layout_bolt/res/info32.toif"); +pub const DOWNLOAD32: &[u8] = include_res!("layout_bolt/res/download32.toif"); +pub const WARNING40: &[u8] = include_res!("layout_bolt/res/warning40.toif"); +pub const CHECK24: &[u8] = include_res!("layout_bolt/res/check24.toif"); +pub const CHECK40: &[u8] = include_res!("layout_bolt/res/check40.toif"); -pub const DEVICE_NAME: &[u8] = include_res!("model_tt/res/device_name_T.toif"); -pub const START_URL: &[u8] = include_res!("model_tt/res/start.toif"); +pub const DEVICE_NAME: &[u8] = include_res!("layout_bolt/res/device_name_T.toif"); +pub const START_URL: &[u8] = include_res!("layout_bolt/res/start.toif"); pub fn button_confirm() -> ButtonStyleSheet { ButtonStyleSheet { diff --git a/core/embed/rust/src/ui/model_tt/theme/mod.rs b/core/embed/rust/src/ui/layout_bolt/theme/mod.rs similarity index 89% rename from core/embed/rust/src/ui/model_tt/theme/mod.rs rename to core/embed/rust/src/ui/layout_bolt/theme/mod.rs index da8e73d8fe0..50e7fc3ff11 100644 --- a/core/embed/rust/src/ui/model_tt/theme/mod.rs +++ b/core/embed/rust/src/ui/layout_bolt/theme/mod.rs @@ -50,67 +50,70 @@ pub const QR_SIDE_MAX: u32 = 140; // UI icons (greyscale). // Button icons. -include_icon!(ICON_CANCEL, "model_tt/res/x24.toif"); -include_icon!(ICON_CONFIRM, "model_tt/res/check24.toif"); -include_icon!(ICON_SPACE, "model_tt/res/space.toif"); -include_icon!(ICON_BACK, "model_tt/res/caret-left24.toif"); -include_icon!(ICON_FORWARD, "model_tt/res/caret-right24.toif"); -include_icon!(ICON_UP, "model_tt/res/caret-up24.toif"); -include_icon!(ICON_DOWN, "model_tt/res/caret-down24.toif"); -include_icon!(ICON_CLICK, "model_tt/res/finger24.toif"); - -include_icon!(ICON_CORNER_CANCEL, "model_tt/res/x32.toif"); -include_icon!(ICON_CORNER_INFO, "model_tt/res/info32.toif"); +include_icon!(ICON_CANCEL, "layout_bolt/res/x24.toif"); +include_icon!(ICON_CONFIRM, "layout_bolt/res/check24.toif"); +include_icon!(ICON_SPACE, "layout_bolt/res/space.toif"); +include_icon!(ICON_BACK, "layout_bolt/res/caret-left24.toif"); +include_icon!(ICON_FORWARD, "layout_bolt/res/caret-right24.toif"); +include_icon!(ICON_UP, "layout_bolt/res/caret-up24.toif"); +include_icon!(ICON_DOWN, "layout_bolt/res/caret-down24.toif"); +include_icon!(ICON_CLICK, "layout_bolt/res/finger24.toif"); + +include_icon!(ICON_CORNER_CANCEL, "layout_bolt/res/x32.toif"); +include_icon!(ICON_CORNER_INFO, "layout_bolt/res/info32.toif"); // Checklist symbols. -include_icon!(ICON_LIST_CURRENT, "model_tt/res/arrow-right16.toif"); -include_icon!(ICON_LIST_CHECK, "model_tt/res/check16.toif"); +include_icon!(ICON_LIST_CURRENT, "layout_bolt/res/arrow-right16.toif"); +include_icon!(ICON_LIST_CHECK, "layout_bolt/res/check16.toif"); // Homescreen notifications. -include_icon!(ICON_WARN, "model_tt/res/warning16.toif"); -include_icon!(ICON_WARNING40, "model_tt/res/warning40.toif"); -include_icon!(ICON_LOCK, "model_tt/res/lock16.toif"); -include_icon!(ICON_LOCK_BIG, "model_tt/res/lock24.toif"); -include_icon!(ICON_COINJOIN, "model_tt/res/coinjoin16.toif"); -include_icon!(ICON_MAGIC, "model_tt/res/magic.toif"); +include_icon!(ICON_WARN, "layout_bolt/res/warning16.toif"); +include_icon!(ICON_WARNING40, "layout_bolt/res/warning40.toif"); +include_icon!(ICON_LOCK, "layout_bolt/res/lock16.toif"); +include_icon!(ICON_LOCK_BIG, "layout_bolt/res/lock24.toif"); +include_icon!(ICON_COINJOIN, "layout_bolt/res/coinjoin16.toif"); +include_icon!(ICON_MAGIC, "layout_bolt/res/magic.toif"); // Text arrows. -include_icon!(ICON_PAGE_NEXT, "model_tt/res/page-next.toif"); -include_icon!(ICON_PAGE_PREV, "model_tt/res/page-prev.toif"); +include_icon!(ICON_PAGE_NEXT, "layout_bolt/res/page-next.toif"); +include_icon!(ICON_PAGE_PREV, "layout_bolt/res/page-prev.toif"); // Large, three-color icons. pub const WARN_COLOR: Color = YELLOW; pub const INFO_COLOR: Color = BLUE; pub const SUCCESS_COLOR: Color = GREEN; pub const ERROR_COLOR: Color = RED; -include_icon!(IMAGE_FG_WARN, "model_tt/res/fg-warning48.toif"); -include_icon!(IMAGE_FG_SUCCESS, "model_tt/res/fg-check48.toif"); -include_icon!(IMAGE_FG_ERROR, "model_tt/res/fg-error48.toif"); -include_icon!(IMAGE_FG_INFO, "model_tt/res/fg-info48.toif"); -include_icon!(IMAGE_FG_USER, "model_tt/res/fg-user48.toif"); -include_icon!(IMAGE_BG_CIRCLE, "model_tt/res/circle48.toif"); -include_icon!(IMAGE_BG_OCTAGON, "model_tt/res/octagon48.toif"); +include_icon!(IMAGE_FG_WARN, "layout_bolt/res/fg-warning48.toif"); +include_icon!(IMAGE_FG_SUCCESS, "layout_bolt/res/fg-check48.toif"); +include_icon!(IMAGE_FG_ERROR, "layout_bolt/res/fg-error48.toif"); +include_icon!(IMAGE_FG_INFO, "layout_bolt/res/fg-info48.toif"); +include_icon!(IMAGE_FG_USER, "layout_bolt/res/fg-user48.toif"); +include_icon!(IMAGE_BG_CIRCLE, "layout_bolt/res/circle48.toif"); +include_icon!(IMAGE_BG_OCTAGON, "layout_bolt/res/octagon48.toif"); // Non-square button backgrounds. -include_icon!(IMAGE_BG_BACK_BTN, "model_tt/res/bg-back40.toif"); -include_icon!(IMAGE_BG_BACK_BTN_TALL, "model_tt/res/bg-back52.toif"); +include_icon!(IMAGE_BG_BACK_BTN, "layout_bolt/res/bg-back40.toif"); +include_icon!(IMAGE_BG_BACK_BTN_TALL, "layout_bolt/res/bg-back52.toif"); // Welcome screen. -include_icon!(ICON_LOGO, "model_tt/res/lock_full.toif"); -include_icon!(ICON_LOGO_EMPTY, "model_tt/res/lock_empty.toif"); +include_icon!(ICON_LOGO, "layout_bolt/res/lock_full.toif"); +include_icon!(ICON_LOGO_EMPTY, "layout_bolt/res/lock_empty.toif"); // Default homescreen -pub const IMAGE_HOMESCREEN: &[u8] = include_res!("model_tt/res/bg.jpg"); +pub const IMAGE_HOMESCREEN: &[u8] = include_res!("layout_bolt/res/bg.jpg"); // Scrollbar/PIN dots. -include_icon!(DOT_ACTIVE, "model_tt/res/scroll-active.toif"); -include_icon!(DOT_INACTIVE, "model_tt/res/scroll-inactive.toif"); -include_icon!(DOT_INACTIVE_HALF, "model_tt/res/scroll-inactive-half.toif"); +include_icon!(DOT_ACTIVE, "layout_bolt/res/scroll-active.toif"); +include_icon!(DOT_INACTIVE, "layout_bolt/res/scroll-inactive.toif"); +include_icon!( + DOT_INACTIVE_HALF, + "layout_bolt/res/scroll-inactive-half.toif" +); include_icon!( DOT_INACTIVE_QUARTER, - "model_tt/res/scroll-inactive-quarter.toif" + "layout_bolt/res/scroll-inactive-quarter.toif" ); -include_icon!(DOT_SMALL, "model_tt/res/scroll-small.toif"); +include_icon!(DOT_SMALL, "layout_bolt/res/scroll-small.toif"); pub const fn label_default() -> TextStyle { TEXT_NORMAL diff --git a/core/embed/rust/src/ui/model_tt/ui_firmware.rs b/core/embed/rust/src/ui/layout_bolt/ui_firmware.rs similarity index 99% rename from core/embed/rust/src/ui/model_tt/ui_firmware.rs rename to core/embed/rust/src/ui/layout_bolt/ui_firmware.rs index 4f9b0c5085e..a6e7764fb09 100644 --- a/core/embed/rust/src/ui/model_tt/ui_firmware.rs +++ b/core/embed/rust/src/ui/layout_bolt/ui_firmware.rs @@ -40,10 +40,10 @@ use super::{ PassphraseKeyboard, PinKeyboard, Progress, SelectWordCount, SetBrightnessDialog, ShareWords, SimplePage, Slip39Input, }, - theme, UIModelTT, + theme, UIBolt, }; -impl FirmwareUI for UIModelTT { +impl FirmwareUI for UIBolt { fn confirm_action( title: TString<'static>, action: Option>, @@ -1024,7 +1024,7 @@ impl FirmwareUI for UIModelTT { Ok(layout) } - fn show_share_words_mercury( + fn show_share_words_quicksilver( _words: heapless::Vec, 33>, _subtitle: Option>, _instructions: Obj, @@ -1330,7 +1330,7 @@ mod tests { ui::{ component::{text::op::OpTextLayout, Component}, geometry::Rect, - model_tt::constant, + layout_bolt::constant, }, }; diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs b/core/embed/rust/src/ui/layout_quicksilver/bootloader/intro.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/bootloader/intro.rs rename to core/embed/rust/src/ui/layout_quicksilver/bootloader/intro.rs diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs b/core/embed/rust/src/ui/layout_quicksilver/bootloader/menu.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/bootloader/menu.rs rename to core/embed/rust/src/ui/layout_quicksilver/bootloader/menu.rs diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/layout_quicksilver/bootloader/mod.rs similarity index 98% rename from core/embed/rust/src/ui/model_mercury/bootloader/mod.rs rename to core/embed/rust/src/ui/layout_quicksilver/bootloader/mod.rs index 22e557ecaea..09c77e42209 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/bootloader/mod.rs @@ -26,7 +26,7 @@ use super::{ }, GREEN_LIGHT, GREY, }, - UIMercury, + UIQuicksilver, }; use crate::ui::{ui_bootloader::BootloaderUI, CommonUI}; @@ -34,7 +34,7 @@ use crate::ui::{ui_bootloader::BootloaderUI, CommonUI}; use crate::ui::{ display::{toif::Toif, LOADER_MAX}, geometry::Alignment2D, - model_mercury::cshape::{render_loader, LoaderRange}, + layout_quicksilver::cshape::{render_loader, LoaderRange}, shape, shape::render_on_display, }; @@ -53,10 +53,10 @@ pub type BootloaderString = String<128>; const RECONNECT_MESSAGE: &str = "PLEASE RECONNECT\nTHE DEVICE"; -const SCREEN: Rect = UIMercury::SCREEN; +const SCREEN: Rect = UIQuicksilver::SCREEN; const PROGRESS_TEXT_ORIGIN: Point = Point::new(2, 28); -impl UIMercury { +impl UIQuicksilver { fn screen_progress( text: &str, progress: u16, @@ -122,7 +122,7 @@ impl UIMercury { } } -impl BootloaderUI for UIMercury { +impl BootloaderUI for UIQuicksilver { fn screen_welcome() { let mut frame = Welcome::new(); show(&mut frame, true); diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs b/core/embed/rust/src/ui/layout_quicksilver/bootloader/welcome.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs rename to core/embed/rust/src/ui/layout_quicksilver/bootloader/welcome.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/layout_quicksilver/component/address_details.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/address_details.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/address_details.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/binary_selection.rs b/core/embed/rust/src/ui/layout_quicksilver/component/binary_selection.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/binary_selection.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/binary_selection.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs b/core/embed/rust/src/ui/layout_quicksilver/component/bl_confirm.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/bl_confirm.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/layout_quicksilver/component/button.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/button.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/button.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/layout_quicksilver/component/coinjoin_progress.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/coinjoin_progress.rs index 25b5ac5f649..d2896eda4bb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/coinjoin_progress.rs @@ -8,7 +8,7 @@ use crate::{ ui::{ component::{base::Never, Bar, Component, Empty, Event, EventCtx, Label, Split}, geometry::{Insets, Offset, Rect}, - model_mercury::constant, + layout_quicksilver::constant, shape, shape::Renderer, util::animation_disabled, diff --git a/core/embed/rust/src/ui/model_mercury/component/error.rs b/core/embed/rust/src/ui/layout_quicksilver/component/error.rs similarity index 96% rename from core/embed/rust/src/ui/model_mercury/component/error.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/error.rs index c6ca54e5b79..b69887f456b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/error.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/error.rs @@ -20,7 +20,7 @@ const TITLE_AREA_START: i16 = 70; const MESSAGE_AREA_START: i16 = 90; #[cfg(feature = "bootloader")] -const STYLE: &ResultStyle = &crate::ui::model_mercury::theme::bootloader::RESULT_WIPE; +const STYLE: &ResultStyle = &crate::ui::layout_quicksilver::theme::bootloader::RESULT_WIPE; #[cfg(not(feature = "bootloader"))] const STYLE: &ResultStyle = &super::theme::RESULT_ERROR; diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/layout_quicksilver/component/fido.rs similarity index 97% rename from core/embed/rust/src/ui/model_mercury/component/fido.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/fido.rs index 34c5cca1691..a7ba6a2918b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/fido.rs @@ -7,7 +7,7 @@ use crate::{ Component, Event, EventCtx, }, geometry::{Insets, Offset, Rect}, - model_mercury::component::{fido_icons::get_fido_icon_data, theme}, + layout_quicksilver::component::{fido_icons::get_fido_icon_data, theme}, shape::Renderer, }, }; diff --git a/core/embed/rust/src/ui/layout_quicksilver/component/fido_icons.rs b/core/embed/rust/src/ui/layout_quicksilver/component/fido_icons.rs new file mode 100644 index 00000000000..edf4d5a8746 --- /dev/null +++ b/core/embed/rust/src/ui/layout_quicksilver/component/fido_icons.rs @@ -0,0 +1,80 @@ +//! generated from webauthn_icons.rs.mako +//! (by running `make templates` in `core`) +//! do not edit manually! + + +use crate::strutil::TString; +use crate::ui::util::include_res; + + +const ICON_APPLE: &[u8] = include_res!("layout_quicksilver/res/fido/icon_apple.toif"); +const ICON_AWS: &[u8] = include_res!("layout_quicksilver/res/fido/icon_aws.toif"); +const ICON_BINANCE: &[u8] = include_res!("layout_quicksilver/res/fido/icon_binance.toif"); +const ICON_BITBUCKET: &[u8] = include_res!("layout_quicksilver/res/fido/icon_bitbucket.toif"); +const ICON_BITFINEX: &[u8] = include_res!("layout_quicksilver/res/fido/icon_bitfinex.toif"); +const ICON_BITWARDEN: &[u8] = include_res!("layout_quicksilver/res/fido/icon_bitwarden.toif"); +const ICON_CLOUDFLARE: &[u8] = include_res!("layout_quicksilver/res/fido/icon_cloudflare.toif"); +const ICON_COINBASE: &[u8] = include_res!("layout_quicksilver/res/fido/icon_coinbase.toif"); +const ICON_DASHLANE: &[u8] = include_res!("layout_quicksilver/res/fido/icon_dashlane.toif"); +const ICON_DROPBOX: &[u8] = include_res!("layout_quicksilver/res/fido/icon_dropbox.toif"); +const ICON_DUO: &[u8] = include_res!("layout_quicksilver/res/fido/icon_duo.toif"); +const ICON_FACEBOOK: &[u8] = include_res!("layout_quicksilver/res/fido/icon_facebook.toif"); +const ICON_FASTMAIL: &[u8] = include_res!("layout_quicksilver/res/fido/icon_fastmail.toif"); +const ICON_FEDORA: &[u8] = include_res!("layout_quicksilver/res/fido/icon_fedora.toif"); +const ICON_GANDI: &[u8] = include_res!("layout_quicksilver/res/fido/icon_gandi.toif"); +const ICON_GEMINI: &[u8] = include_res!("layout_quicksilver/res/fido/icon_gemini.toif"); +const ICON_GITHUB: &[u8] = include_res!("layout_quicksilver/res/fido/icon_github.toif"); +const ICON_GITLAB: &[u8] = include_res!("layout_quicksilver/res/fido/icon_gitlab.toif"); +const ICON_GOOGLE: &[u8] = include_res!("layout_quicksilver/res/fido/icon_google.toif"); +const ICON_INVITY: &[u8] = include_res!("layout_quicksilver/res/fido/icon_invity.toif"); +const ICON_KEEPER: &[u8] = include_res!("layout_quicksilver/res/fido/icon_keeper.toif"); +const ICON_KRAKEN: &[u8] = include_res!("layout_quicksilver/res/fido/icon_kraken.toif"); +const ICON_LOGIN_GOV: &[u8] = include_res!("layout_quicksilver/res/fido/icon_login.gov.toif"); +const ICON_MICROSOFT: &[u8] = include_res!("layout_quicksilver/res/fido/icon_microsoft.toif"); +const ICON_MOJEID: &[u8] = include_res!("layout_quicksilver/res/fido/icon_mojeid.toif"); +const ICON_NAMECHEAP: &[u8] = include_res!("layout_quicksilver/res/fido/icon_namecheap.toif"); +const ICON_PROTON: &[u8] = include_res!("layout_quicksilver/res/fido/icon_proton.toif"); +const ICON_SLUSHPOOL: &[u8] = include_res!("layout_quicksilver/res/fido/icon_slushpool.toif"); +const ICON_STRIPE: &[u8] = include_res!("layout_quicksilver/res/fido/icon_stripe.toif"); +const ICON_TUTANOTA: &[u8] = include_res!("layout_quicksilver/res/fido/icon_tutanota.toif"); + +/// Translates icon name into its data. +pub fn get_fido_icon_data(icon_name: Option>) -> Option< &'static [u8]> { + if let Some(icon_name) = icon_name { + icon_name.map(|c| match c { + "apple" => Some(ICON_APPLE), + "aws" => Some(ICON_AWS), + "binance" => Some(ICON_BINANCE), + "bitbucket" => Some(ICON_BITBUCKET), + "bitfinex" => Some(ICON_BITFINEX), + "bitwarden" => Some(ICON_BITWARDEN), + "cloudflare" => Some(ICON_CLOUDFLARE), + "coinbase" => Some(ICON_COINBASE), + "dashlane" => Some(ICON_DASHLANE), + "dropbox" => Some(ICON_DROPBOX), + "duo" => Some(ICON_DUO), + "facebook" => Some(ICON_FACEBOOK), + "fastmail" => Some(ICON_FASTMAIL), + "fedora" => Some(ICON_FEDORA), + "gandi" => Some(ICON_GANDI), + "gemini" => Some(ICON_GEMINI), + "github" => Some(ICON_GITHUB), + "gitlab" => Some(ICON_GITLAB), + "google" => Some(ICON_GOOGLE), + "invity" => Some(ICON_INVITY), + "keeper" => Some(ICON_KEEPER), + "kraken" => Some(ICON_KRAKEN), + "login.gov" => Some(ICON_LOGIN_GOV), + "microsoft" => Some(ICON_MICROSOFT), + "mojeid" => Some(ICON_MOJEID), + "namecheap" => Some(ICON_NAMECHEAP), + "proton" => Some(ICON_PROTON), + "slushpool" => Some(ICON_SLUSHPOOL), + "stripe" => Some(ICON_STRIPE), + "tutanota" => Some(ICON_TUTANOTA), + _ => None, + }) + } else { + None + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako b/core/embed/rust/src/ui/layout_quicksilver/component/fido_icons.rs.mako similarity index 89% rename from core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako rename to core/embed/rust/src/ui/layout_quicksilver/component/fido_icons.rs.mako index 3aeb2c92b04..158f3960af1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako +++ b/core/embed/rust/src/ui/layout_quicksilver/component/fido_icons.rs.mako @@ -17,7 +17,7 @@ for app in fido: %>\ % for icon_name, var_name in icons: -const ICON_${var_name}: &[u8] = include_res!("model_mercury/res/fido/icon_${icon_name}.toif"); +const ICON_${var_name}: &[u8] = include_res!("layout_quicksilver/res/fido/icon_${icon_name}.toif"); % endfor /// Translates icon name into its data. diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/layout_quicksilver/component/footer.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/footer.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/footer.rs index d9a97a2202f..77305556ab5 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/footer.rs @@ -5,8 +5,8 @@ use crate::{ display::{Color, Font}, event::SwipeEvent, geometry::{Alignment, Alignment2D, Direction, Offset, Point, Rect}, + layout_quicksilver::theme, lerp::Lerp, - model_mercury::theme, shape, shape::{Renderer, Text}, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/layout_quicksilver/component/frame.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/frame.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/frame.rs index 9857265ec44..27b14bba05c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/frame.rs @@ -12,8 +12,8 @@ use crate::{ display::{Color, Icon}, event::SwipeEvent, geometry::{Alignment, Direction, Insets, Point, Rect}, + layout_quicksilver::theme::TITLE_HEIGHT, lerp::Lerp, - model_mercury::theme::TITLE_HEIGHT, shape::{self, Renderer}, }, }; diff --git a/core/embed/rust/src/ui/model_mercury/component/header.rs b/core/embed/rust/src/ui/layout_quicksilver/component/header.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/header.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/header.rs index 5e01aa9877a..80e8fb1188f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/header.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/header.rs @@ -5,11 +5,11 @@ use crate::{ component::{text::TextStyle, Component, Event, EventCtx, FlowMsg, Label}, display::{Color, Icon}, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, - lerp::Lerp, - model_mercury::{ + layout_quicksilver::{ component::{Button, ButtonMsg, ButtonStyleSheet}, theme::{self, TITLE_HEIGHT}, }, + lerp::Lerp, shape::{self, Renderer}, util::animation_disabled, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/layout_quicksilver/component/hold_to_confirm.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/hold_to_confirm.rs index 4cbe5ccf975..b2c1088adcb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/hold_to_confirm.rs @@ -22,7 +22,7 @@ use crate::{ component::Label, constant::screen, geometry::{Alignment, Point}, - model_mercury::theme::TITLE_HEIGHT, + layout_quicksilver::theme::TITLE_HEIGHT, }, }; use pareen; diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/layout_quicksilver/component/homescreen.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/homescreen.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/homescreen.rs index 10ec949ed0e..87682d61c7c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/homescreen.rs @@ -11,7 +11,7 @@ use crate::{ event::{TouchEvent, USBEvent}, geometry::{Alignment, Alignment2D, Offset, Point, Rect}, layout::util::get_user_custom_image, - model_mercury::constant, + layout_quicksilver::constant, shape::{self, Renderer}, }, }; @@ -19,12 +19,12 @@ use crate::{ use crate::ui::{ component::{base::AttachType, Label}, constant::{screen, HEIGHT, WIDTH}, - lerp::Lerp, - model_mercury::{ + layout_quicksilver::{ cshape, cshape::UnlockOverlay, theme::{GREY_LIGHT, HOMESCREEN_ICON, ICON_KEY}, }, + lerp::Lerp, shape::{render_on_canvas, ImageBuffer, Rgb565Canvas}, util::animation_disabled, }; diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/bip39.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/keyboard/bip39.rs index 2f07a00cd1c..41435fffb25 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/bip39.rs @@ -3,7 +3,7 @@ use crate::{ ui::{ component::{text::common::TextBox, Component, Event, EventCtx}, geometry::{Alignment, Alignment2D, Offset, Point, Rect}, - model_mercury::{ + layout_quicksilver::{ component::{ keyboard::{ common::{render_pending_marker, render_pill_shape, MultiTapKeyboard}, diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/common.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/keyboard/common.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/mnemonic.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/keyboard/mnemonic.rs index 793ab690282..2ec66d0bd92 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/mnemonic.rs @@ -3,7 +3,7 @@ use crate::{ ui::{ component::{Component, Event, EventCtx, Label, Maybe}, geometry::{Alignment, Grid, Insets, Rect}, - model_mercury::{ + layout_quicksilver::{ component::{Button, ButtonMsg}, cshape, theme, }, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/mod.rs b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/keyboard/mod.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/keyboard/mod.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/passphrase.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/keyboard/passphrase.rs index 6b6e5ee5809..22b791d922c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/passphrase.rs @@ -8,7 +8,7 @@ use crate::{ }, display, geometry::{Alignment, Direction, Grid, Insets, Offset, Rect}, - model_mercury::{ + layout_quicksilver::{ component::{ button::{Button, ButtonContent, ButtonMsg}, keyboard::common::{render_pending_marker, MultiTapKeyboard}, diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/pin.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/keyboard/pin.rs index 59b0e5edeed..443c10e2ac3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/pin.rs @@ -13,7 +13,7 @@ use crate::{ display::Font, event::TouchEvent, geometry::{Alignment, Alignment2D, Direction, Grid, Insets, Offset, Rect}, - model_mercury::{ + layout_quicksilver::{ component::{ button::{ Button, ButtonContent, diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/slip39.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/keyboard/slip39.rs index 50b3a486679..5abb71c2ea6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/slip39.rs @@ -10,7 +10,7 @@ use crate::{ }, constant::WIDTH, geometry::{Alignment, Alignment2D, Offset, Point, Rect}, - model_mercury::{ + layout_quicksilver::{ component::{ keyboard::{ common::{render_pending_marker, render_pill_shape, MultiTapKeyboard}, diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/word_count.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/keyboard/word_count.rs index 30994d5efec..937a01148d9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/keyboard/word_count.rs @@ -1,7 +1,7 @@ use crate::ui::{ component::{Component, Event, EventCtx}, geometry::{Alignment, Grid, GridCellSpan, Rect}, - model_mercury::{ + layout_quicksilver::{ component::{ button::{Button, ButtonContent, ButtonMsg}, BinarySelection, BinarySelectionMsg, diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/layout_quicksilver/component/loader.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/loader.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/loader.rs index d1acee08c50..742197a66fb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/loader.rs @@ -7,7 +7,7 @@ use crate::{ component::{Component, Event, EventCtx, Pad}, display::{self, toif::Icon, Color, LOADER_MAX}, geometry::{Alignment2D, Offset, Rect}, - model_mercury::cshape::{render_loader, LoaderRange}, + layout_quicksilver::cshape::{render_loader, LoaderRange}, shape::{self, Renderer}, util::animation_disabled, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/layout_quicksilver/component/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/mod.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/mod.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/layout_quicksilver/component/number_input.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/number_input.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/number_input.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/layout_quicksilver/component/number_input_slider.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/number_input_slider.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/layout_quicksilver/component/progress.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/progress.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/progress.rs index 38ffc8d7ce3..3df03a53cb0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/progress.rs @@ -10,7 +10,7 @@ use crate::{ }, display::{Font, LOADER_MAX}, geometry::{Insets, Offset, Rect}, - model_mercury::{ + layout_quicksilver::{ constant, cshape::{render_loader, LoaderRange}, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/layout_quicksilver/component/prompt_screen.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/prompt_screen.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/result.rs b/core/embed/rust/src/ui/layout_quicksilver/component/result.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/result.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/result.rs diff --git a/core/embed/rust/src/ui/model_tt/component/scroll.rs b/core/embed/rust/src/ui/layout_quicksilver/component/scroll.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/component/scroll.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/scroll.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/layout_quicksilver/component/share_words.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/share_words.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/share_words.rs index fbab6a803b0..7a4a6b6c894 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/share_words.rs @@ -6,7 +6,7 @@ use crate::{ component::{base::AttachType, text::TextStyle, Component, Event, EventCtx, Never}, event::SwipeEvent, geometry::{Alignment, Alignment2D, Direction, Insets, Offset, Rect}, - model_mercury::component::{swipe_content::SwipeAttachAnimation, InternallySwipable}, + layout_quicksilver::component::{swipe_content::SwipeAttachAnimation, InternallySwipable}, shape::{self, Renderer}, }, }; diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/layout_quicksilver/component/status_screen.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/status_screen.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/status_screen.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/layout_quicksilver/component/swipe_content.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/swipe_content.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/swipe_content.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/layout_quicksilver/component/swipe_up_screen.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/swipe_up_screen.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs b/core/embed/rust/src/ui/layout_quicksilver/component/tap_to_confirm.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/tap_to_confirm.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/updatable_more_info.rs b/core/embed/rust/src/ui/layout_quicksilver/component/updatable_more_info.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/updatable_more_info.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/updatable_more_info.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/layout_quicksilver/component/vertical_menu.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/vertical_menu.rs index 5f9b4cce771..5121f822457 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component/vertical_menu.rs @@ -12,8 +12,8 @@ use crate::{ constant::screen, display::{Color, Icon}, geometry::{Direction, Offset, Rect}, + layout_quicksilver::component::button::{Button, ButtonContent, ButtonMsg, IconText}, lerp::Lerp, - model_mercury::component::button::{Button, ButtonContent, ButtonMsg, IconText}, shape::{Bar, Renderer}, util::animation_disabled, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs b/core/embed/rust/src/ui/layout_quicksilver/component/welcome_screen.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs rename to core/embed/rust/src/ui/layout_quicksilver/component/welcome_screen.rs diff --git a/core/embed/rust/src/ui/model_mercury/component_msg_obj.rs b/core/embed/rust/src/ui/layout_quicksilver/component_msg_obj.rs similarity index 98% rename from core/embed/rust/src/ui/model_mercury/component_msg_obj.rs rename to core/embed/rust/src/ui/layout_quicksilver/component_msg_obj.rs index 25d7f045ab3..cf718478044 100644 --- a/core/embed/rust/src/ui/model_mercury/component_msg_obj.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/component_msg_obj.rs @@ -19,7 +19,7 @@ use crate::{ obj::ComponentMsgObj, result::{CANCELLED, CONFIRMED}, }, - model_mercury::component::SwipeContent, + layout_quicksilver::component::SwipeContent, }, }; diff --git a/core/embed/rust/src/ui/model_mercury/constant.rs b/core/embed/rust/src/ui/layout_quicksilver/constant.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/constant.rs rename to core/embed/rust/src/ui/layout_quicksilver/constant.rs diff --git a/core/embed/rust/src/ui/model_mercury/cshape/keyboard_overlay.rs b/core/embed/rust/src/ui/layout_quicksilver/cshape/keyboard_overlay.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/cshape/keyboard_overlay.rs rename to core/embed/rust/src/ui/layout_quicksilver/cshape/keyboard_overlay.rs diff --git a/core/embed/rust/src/ui/model_mercury/cshape/loader.rs b/core/embed/rust/src/ui/layout_quicksilver/cshape/loader.rs similarity index 89% rename from core/embed/rust/src/ui/model_mercury/cshape/loader.rs rename to core/embed/rust/src/ui/layout_quicksilver/cshape/loader.rs index c31141c67ae..45011de21ca 100644 --- a/core/embed/rust/src/ui/model_mercury/cshape/loader.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/cshape/loader.rs @@ -1,4 +1,6 @@ -use crate::ui::{display::Color, geometry::Point, model_mercury::constant, shape, shape::Renderer}; +use crate::ui::{ + display::Color, geometry::Point, layout_quicksilver::constant, shape, shape::Renderer, +}; pub enum LoaderRange { Full, diff --git a/core/embed/rust/src/ui/model_mercury/cshape/mod.rs b/core/embed/rust/src/ui/layout_quicksilver/cshape/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/cshape/mod.rs rename to core/embed/rust/src/ui/layout_quicksilver/cshape/mod.rs diff --git a/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs b/core/embed/rust/src/ui/layout_quicksilver/cshape/unlock_overlay.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs rename to core/embed/rust/src/ui/layout_quicksilver/cshape/unlock_overlay.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_action.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/confirm_action.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_fido.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/confirm_fido.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_firmware_update.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/confirm_firmware_update.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_homescreen.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_homescreen.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_homescreen.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/confirm_homescreen.rs index ee32668f6a5..8af41267ff0 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_homescreen.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_homescreen.rs @@ -9,7 +9,7 @@ use crate::{ FlowController, FlowMsg, SwipeFlow, }, geometry::Direction, - model_mercury::{ + layout_quicksilver::{ component::{ Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_output.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/confirm_output.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_reset.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/confirm_reset.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_set_new_pin.rs similarity index 98% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/confirm_set_new_pin.rs index e4c042f8ea3..7d17a0dd6d3 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_set_new_pin.rs @@ -13,7 +13,7 @@ use crate::{ FlowController, FlowMsg, SwipeFlow, }, geometry::Direction, - model_mercury::component::SwipeContent, + layout_quicksilver::component::SwipeContent, }, }; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/confirm_summary.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/confirm_summary.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery_homepage.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/continue_recovery_homepage.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/continue_recovery_homepage.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/continue_recovery_homepage.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/get_address.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/get_address.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/get_address.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/mod.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/mod.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/prompt_backup.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/prompt_backup.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/request_number.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/request_number.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/request_number.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_passphrase.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/request_passphrase.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/request_passphrase.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/request_passphrase.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/set_brightness.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/set_brightness.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_danger.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/show_danger.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/show_danger.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/show_danger.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/show_share_words.rs similarity index 97% rename from core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/show_share_words.rs index c15bcb143f8..d90ed6d8414 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/flow/show_share_words.rs @@ -14,7 +14,9 @@ use crate::{ FlowController, FlowMsg, SwipeFlow, }, geometry::Direction, - model_mercury::component::{InternallySwipable, InternallySwipableContent, SwipeContent}, + layout_quicksilver::component::{ + InternallySwipable, InternallySwipableContent, SwipeContent, + }, }, }; use heapless::Vec; diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/show_tutorial.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/show_tutorial.rs diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/layout_quicksilver/flow/util.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/flow/util.rs rename to core/embed/rust/src/ui/layout_quicksilver/flow/util.rs index bef55ab099a..157c77a91d1 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/util.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/flow/util.rs @@ -24,7 +24,7 @@ use crate::{ flow::{FlowMsg, Swipable, SwipeFlow, SwipePage}, geometry::Direction, layout::util::{ConfirmBlob, StrOrBytes}, - model_mercury::{component::SwipeContent, flow}, + layout_quicksilver::{component::SwipeContent, flow}, }, }; use heapless::Vec; diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/layout_quicksilver/mod.rs similarity index 93% rename from core/embed/rust/src/ui/model_mercury/mod.rs rename to core/embed/rust/src/ui/layout_quicksilver/mod.rs index fcbf33ee4b1..6f656760c76 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/mod.rs @@ -1,5 +1,5 @@ use super::{geometry::Rect, CommonUI}; -use crate::ui::model_mercury::theme::backlight; +use crate::ui::layout_quicksilver::theme::backlight; #[cfg(feature = "bootloader")] pub mod bootloader; @@ -16,9 +16,9 @@ pub mod screens; #[cfg(feature = "micropython")] pub mod ui_firmware; -pub struct UIMercury; +pub struct UIQuicksilver; -impl CommonUI for UIMercury { +impl CommonUI for UIQuicksilver { #[cfg(feature = "backlight")] fn fadein() { crate::ui::display::fade_backlight_duration(backlight::get_backlight_normal(), 150); diff --git a/core/embed/rust/src/ui/model_mercury/res/asterisk16.png b/core/embed/rust/src/ui/layout_quicksilver/res/asterisk16.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/asterisk16.png rename to core/embed/rust/src/ui/layout_quicksilver/res/asterisk16.png diff --git a/core/embed/rust/src/ui/model_mercury/res/asterisk16.toif b/core/embed/rust/src/ui/layout_quicksilver/res/asterisk16.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/asterisk16.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/asterisk16.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/autofill30.png b/core/embed/rust/src/ui/layout_quicksilver/res/autofill30.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/autofill30.png rename to core/embed/rust/src/ui/layout_quicksilver/res/autofill30.png diff --git a/core/embed/rust/src/ui/model_mercury/res/autofill30.toif b/core/embed/rust/src/ui/layout_quicksilver/res/autofill30.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/autofill30.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/autofill30.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.png b/core/embed/rust/src/ui/layout_quicksilver/res/bullet_checkmark20.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.png rename to core/embed/rust/src/ui/layout_quicksilver/res/bullet_checkmark20.png diff --git a/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.toif b/core/embed/rust/src/ui/layout_quicksilver/res/bullet_checkmark20.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/bullet_checkmark20.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/cancel24.png b/core/embed/rust/src/ui/layout_quicksilver/res/cancel24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/cancel24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/cancel24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/cancel24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/cancel24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/cancel24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/cancel24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/central_circle.png b/core/embed/rust/src/ui/layout_quicksilver/res/central_circle.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/central_circle.png rename to core/embed/rust/src/ui/layout_quicksilver/res/central_circle.png diff --git a/core/embed/rust/src/ui/model_mercury/res/central_circle.toif b/core/embed/rust/src/ui/layout_quicksilver/res/central_circle.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/central_circle.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/central_circle.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/check24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/check24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/check24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/check24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/check40.toif b/core/embed/rust/src/ui/layout_quicksilver/res/check40.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/check40.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/check40.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_left24.png b/core/embed/rust/src/ui/layout_quicksilver/res/chevron_left24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/chevron_left24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/chevron_left24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_left24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/chevron_left24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/chevron_left24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/chevron_left24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_right24.png b/core/embed/rust/src/ui/layout_quicksilver/res/chevron_right24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/chevron_right24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/chevron_right24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/chevron_right24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/chevron_right24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/close30.png b/core/embed/rust/src/ui/layout_quicksilver/res/close30.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/close30.png rename to core/embed/rust/src/ui/layout_quicksilver/res/close30.png diff --git a/core/embed/rust/src/ui/model_mercury/res/close30.toif b/core/embed/rust/src/ui/layout_quicksilver/res/close30.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/close30.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/close30.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/confirm_input30.png b/core/embed/rust/src/ui/layout_quicksilver/res/confirm_input30.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/confirm_input30.png rename to core/embed/rust/src/ui/layout_quicksilver/res/confirm_input30.png diff --git a/core/embed/rust/src/ui/model_mercury/res/confirm_input30.toif b/core/embed/rust/src/ui/layout_quicksilver/res/confirm_input30.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/confirm_input30.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/confirm_input30.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/delete30.png b/core/embed/rust/src/ui/layout_quicksilver/res/delete30.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/delete30.png rename to core/embed/rust/src/ui/layout_quicksilver/res/delete30.png diff --git a/core/embed/rust/src/ui/model_mercury/res/delete30.toif b/core/embed/rust/src/ui/layout_quicksilver/res/delete30.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/delete30.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/delete30.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/download24.png b/core/embed/rust/src/ui/layout_quicksilver/res/download24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/download24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/download24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/download24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/download24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/download24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/download24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/factory_reset24.png b/core/embed/rust/src/ui/layout_quicksilver/res/factory_reset24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/factory_reset24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/factory_reset24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/factory_reset24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/factory_reset24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/factory_reset24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/factory_reset24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_apple.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_apple.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_apple.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_apple.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_aws.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_aws.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_aws.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_aws.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_binance.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_binance.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_binance.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_binance.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitbucket.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_bitbucket.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_bitbucket.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_bitbucket.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitfinex.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_bitfinex.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_bitfinex.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_bitfinex.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitwarden.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_bitwarden.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_bitwarden.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_bitwarden.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_cloudflare.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_cloudflare.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_cloudflare.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_cloudflare.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_coinbase.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_coinbase.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_coinbase.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_coinbase.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_dashlane.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_dashlane.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_dashlane.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_dashlane.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_dropbox.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_dropbox.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_dropbox.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_dropbox.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_duo.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_duo.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_duo.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_duo.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_facebook.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_facebook.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_facebook.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_facebook.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_fastmail.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_fastmail.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_fastmail.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_fastmail.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_fedora.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_fedora.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_fedora.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_fedora.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gandi.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_gandi.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_gandi.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_gandi.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gemini.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_gemini.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_gemini.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_gemini.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_github.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_github.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_github.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_github.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gitlab.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_gitlab.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_gitlab.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_gitlab.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_google.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_google.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_google.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_google.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_invity.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_invity.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_invity.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_invity.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_keeper.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_keeper.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_keeper.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_keeper.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_kraken.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_kraken.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_kraken.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_kraken.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_login.gov.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_login.gov.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_login.gov.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_login.gov.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_microsoft.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_microsoft.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_microsoft.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_microsoft.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_mojeid.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_mojeid.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_mojeid.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_mojeid.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_namecheap.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_namecheap.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_namecheap.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_namecheap.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_proton.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_proton.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_proton.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_proton.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_slushpool.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_slushpool.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_slushpool.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_slushpool.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_stripe.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_stripe.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_stripe.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_stripe.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_tutanota.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_tutanota.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/fido/icon_tutanota.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_tutanota.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fido/icon_webauthn.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_webauthn.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fido/icon_webauthn.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fido/icon_webauthn.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fire24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fire24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fire24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fire24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fire32.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fire32.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fire32.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fire32.toif diff --git a/core/embed/rust/src/ui/model_tt/res/fire40.toif b/core/embed/rust/src/ui/layout_quicksilver/res/fire40.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/fire40.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/fire40.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/foreslash12.png b/core/embed/rust/src/ui/layout_quicksilver/res/foreslash12.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/foreslash12.png rename to core/embed/rust/src/ui/layout_quicksilver/res/foreslash12.png diff --git a/core/embed/rust/src/ui/model_mercury/res/foreslash12.toif b/core/embed/rust/src/ui/layout_quicksilver/res/foreslash12.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/foreslash12.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/foreslash12.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/hs_lock.png b/core/embed/rust/src/ui/layout_quicksilver/res/hs_lock.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/hs_lock.png rename to core/embed/rust/src/ui/layout_quicksilver/res/hs_lock.png diff --git a/core/embed/rust/src/ui/model_mercury/res/hs_lock.toif b/core/embed/rust/src/ui/layout_quicksilver/res/hs_lock.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/hs_lock.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/hs_lock.toif diff --git a/core/embed/rust/src/ui/model_tt/res/info32.toif b/core/embed/rust/src/ui/layout_quicksilver/res/info32.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/info32.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/info32.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/key20.png b/core/embed/rust/src/ui/layout_quicksilver/res/key20.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/key20.png rename to core/embed/rust/src/ui/layout_quicksilver/res/key20.png diff --git a/core/embed/rust/src/ui/model_mercury/res/key20.toif b/core/embed/rust/src/ui/layout_quicksilver/res/key20.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/key20.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/key20.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/lock_full.toif b/core/embed/rust/src/ui/layout_quicksilver/res/lock_full.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/lock_full.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/lock_full.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.png b/core/embed/rust/src/ui/layout_quicksilver/res/lockscreen_filter.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.png rename to core/embed/rust/src/ui/layout_quicksilver/res/lockscreen_filter.png diff --git a/core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.toif b/core/embed/rust/src/ui/layout_quicksilver/res/lockscreen_filter.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/lockscreen_filter.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/menu30.png b/core/embed/rust/src/ui/layout_quicksilver/res/menu30.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/menu30.png rename to core/embed/rust/src/ui/layout_quicksilver/res/menu30.png diff --git a/core/embed/rust/src/ui/model_mercury/res/menu30.toif b/core/embed/rust/src/ui/layout_quicksilver/res/menu30.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/menu30.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/menu30.toif diff --git a/core/embed/rust/src/ui/model_tt/res/menu32.toif b/core/embed/rust/src/ui/layout_quicksilver/res/menu32.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/menu32.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/menu32.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/minus40.png b/core/embed/rust/src/ui/layout_quicksilver/res/minus40.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/minus40.png rename to core/embed/rust/src/ui/layout_quicksilver/res/minus40.png diff --git a/core/embed/rust/src/ui/model_mercury/res/minus40.toif b/core/embed/rust/src/ui/layout_quicksilver/res/minus40.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/minus40.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/minus40.toif diff --git a/core/embed/rust/src/ui/model_tt/res/page-next.toif b/core/embed/rust/src/ui/layout_quicksilver/res/page-next.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/page-next.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/page-next.toif diff --git a/core/embed/rust/src/ui/model_tt/res/page-prev.toif b/core/embed/rust/src/ui/layout_quicksilver/res/page-prev.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/page-prev.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/page-prev.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/page_down20.png b/core/embed/rust/src/ui/layout_quicksilver/res/page_down20.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/page_down20.png rename to core/embed/rust/src/ui/layout_quicksilver/res/page_down20.png diff --git a/core/embed/rust/src/ui/model_mercury/res/page_down20.toif b/core/embed/rust/src/ui/layout_quicksilver/res/page_down20.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/page_down20.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/page_down20.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/page_up20.png b/core/embed/rust/src/ui/layout_quicksilver/res/page_up20.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/page_up20.png rename to core/embed/rust/src/ui/layout_quicksilver/res/page_up20.png diff --git a/core/embed/rust/src/ui/model_mercury/res/page_up20.toif b/core/embed/rust/src/ui/layout_quicksilver/res/page_up20.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/page_up20.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/page_up20.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/pin_bullet6.png b/core/embed/rust/src/ui/layout_quicksilver/res/pin_bullet6.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/pin_bullet6.png rename to core/embed/rust/src/ui/layout_quicksilver/res/pin_bullet6.png diff --git a/core/embed/rust/src/ui/model_mercury/res/pin_bullet6.toif b/core/embed/rust/src/ui/layout_quicksilver/res/pin_bullet6.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/pin_bullet6.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/pin_bullet6.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/plus40.png b/core/embed/rust/src/ui/layout_quicksilver/res/plus40.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/plus40.png rename to core/embed/rust/src/ui/layout_quicksilver/res/plus40.png diff --git a/core/embed/rust/src/ui/model_mercury/res/plus40.toif b/core/embed/rust/src/ui/layout_quicksilver/res/plus40.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/plus40.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/plus40.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/qr_code24.png b/core/embed/rust/src/ui/layout_quicksilver/res/qr_code24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/qr_code24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/qr_code24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/qr_code24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/qr_code24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/qr_code24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/qr_code24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/reboot24.png b/core/embed/rust/src/ui/layout_quicksilver/res/reboot24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/reboot24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/reboot24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/reboot24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/reboot24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/reboot24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/reboot24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/refresh24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/refresh24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/refresh24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/refresh24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/scroll-active.toif b/core/embed/rust/src/ui/layout_quicksilver/res/scroll-active.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/scroll-active.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/scroll-active.toif diff --git a/core/embed/rust/src/ui/model_tt/res/scroll-inactive-half.toif b/core/embed/rust/src/ui/layout_quicksilver/res/scroll-inactive-half.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/scroll-inactive-half.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/scroll-inactive-half.toif diff --git a/core/embed/rust/src/ui/model_tt/res/scroll-inactive-quarter.toif b/core/embed/rust/src/ui/layout_quicksilver/res/scroll-inactive-quarter.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/scroll-inactive-quarter.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/scroll-inactive-quarter.toif diff --git a/core/embed/rust/src/ui/model_tt/res/scroll-inactive.toif b/core/embed/rust/src/ui/layout_quicksilver/res/scroll-inactive.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/scroll-inactive.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/scroll-inactive.toif diff --git a/core/embed/rust/src/ui/model_tt/res/scroll-small.toif b/core/embed/rust/src/ui/layout_quicksilver/res/scroll-small.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/scroll-small.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/scroll-small.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/sign30.png b/core/embed/rust/src/ui/layout_quicksilver/res/sign30.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/sign30.png rename to core/embed/rust/src/ui/layout_quicksilver/res/sign30.png diff --git a/core/embed/rust/src/ui/model_mercury/res/sign30.toif b/core/embed/rust/src/ui/layout_quicksilver/res/sign30.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/sign30.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/sign30.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.png b/core/embed/rust/src/ui/layout_quicksilver/res/simple_checkmark24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/simple_checkmark24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/simple_checkmark24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/simple_checkmark24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.png b/core/embed/rust/src/ui/layout_quicksilver/res/simple_checkmark30.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.png rename to core/embed/rust/src/ui/layout_quicksilver/res/simple_checkmark30.png diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.toif b/core/embed/rust/src/ui/layout_quicksilver/res/simple_checkmark30.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/simple_checkmark30.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/special_chars_group.png b/core/embed/rust/src/ui/layout_quicksilver/res/special_chars_group.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/special_chars_group.png rename to core/embed/rust/src/ui/layout_quicksilver/res/special_chars_group.png diff --git a/core/embed/rust/src/ui/model_mercury/res/special_chars_group.toif b/core/embed/rust/src/ui/layout_quicksilver/res/special_chars_group.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/special_chars_group.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/special_chars_group.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/warning24.png b/core/embed/rust/src/ui/layout_quicksilver/res/warning24.png similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/warning24.png rename to core/embed/rust/src/ui/layout_quicksilver/res/warning24.png diff --git a/core/embed/rust/src/ui/model_mercury/res/warning24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/warning24.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/warning24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/warning24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/warning40.toif b/core/embed/rust/src/ui/layout_quicksilver/res/warning40.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/warning40.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/warning40.toif diff --git a/core/embed/rust/src/ui/model_tt/res/x24.toif b/core/embed/rust/src/ui/layout_quicksilver/res/x24.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/x24.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/x24.toif diff --git a/core/embed/rust/src/ui/model_tt/res/x32.toif b/core/embed/rust/src/ui/layout_quicksilver/res/x32.toif similarity index 100% rename from core/embed/rust/src/ui/model_tt/res/x32.toif rename to core/embed/rust/src/ui/layout_quicksilver/res/x32.toif diff --git a/core/embed/rust/src/ui/model_mercury/screens.rs b/core/embed/rust/src/ui/layout_quicksilver/screens.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/screens.rs rename to core/embed/rust/src/ui/layout_quicksilver/screens.rs diff --git a/core/embed/rust/src/ui/model_tt/theme/backlight.rs b/core/embed/rust/src/ui/layout_quicksilver/theme/backlight.rs similarity index 100% rename from core/embed/rust/src/ui/model_tt/theme/backlight.rs rename to core/embed/rust/src/ui/layout_quicksilver/theme/backlight.rs diff --git a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs b/core/embed/rust/src/ui/layout_quicksilver/theme/bootloader.rs similarity index 88% rename from core/embed/rust/src/ui/model_mercury/theme/bootloader.rs rename to core/embed/rust/src/ui/layout_quicksilver/theme/bootloader.rs index fd8c226b5d5..1e688ac58e9 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/theme/bootloader.rs @@ -57,18 +57,18 @@ pub const BUTTON_AREA_START: i16 = HEIGHT - 56; pub const BUTTON_HEIGHT: i16 = 50; // BLD icons -pub const X24: &[u8] = include_res!("model_mercury/res/x24.toif"); -pub const X32: &[u8] = include_res!("model_mercury/res/x32.toif"); -pub const FIRE24: &[u8] = include_res!("model_mercury/res/fire24.toif"); -pub const FIRE32: &[u8] = include_res!("model_mercury/res/fire32.toif"); -pub const FIRE40: &[u8] = include_res!("model_mercury/res/fire40.toif"); -pub const REFRESH24: &[u8] = include_res!("model_mercury/res/refresh24.toif"); -pub const MENU32: &[u8] = include_res!("model_mercury/res/menu32.toif"); -pub const INFO32: &[u8] = include_res!("model_mercury/res/info32.toif"); -pub const DOWNLOAD24: &[u8] = include_res!("model_mercury/res/download24.toif"); -pub const WARNING40: &[u8] = include_res!("model_mercury/res/warning40.toif"); -pub const CHECK24: &[u8] = include_res!("model_mercury/res/check24.toif"); -pub const CHECK40: &[u8] = include_res!("model_mercury/res/check40.toif"); +pub const X24: &[u8] = include_res!("layout_quicksilver/res/x24.toif"); +pub const X32: &[u8] = include_res!("layout_quicksilver/res/x32.toif"); +pub const FIRE24: &[u8] = include_res!("layout_quicksilver/res/fire24.toif"); +pub const FIRE32: &[u8] = include_res!("layout_quicksilver/res/fire32.toif"); +pub const FIRE40: &[u8] = include_res!("layout_quicksilver/res/fire40.toif"); +pub const REFRESH24: &[u8] = include_res!("layout_quicksilver/res/refresh24.toif"); +pub const MENU32: &[u8] = include_res!("layout_quicksilver/res/menu32.toif"); +pub const INFO32: &[u8] = include_res!("layout_quicksilver/res/info32.toif"); +pub const DOWNLOAD24: &[u8] = include_res!("layout_quicksilver/res/download24.toif"); +pub const WARNING40: &[u8] = include_res!("layout_quicksilver/res/warning40.toif"); +pub const CHECK24: &[u8] = include_res!("layout_quicksilver/res/check24.toif"); +pub const CHECK40: &[u8] = include_res!("layout_quicksilver/res/check40.toif"); pub fn button_confirm() -> ButtonStyleSheet { ButtonStyleSheet { diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/layout_quicksilver/theme/mod.rs similarity index 90% rename from core/embed/rust/src/ui/model_mercury/theme/mod.rs rename to core/embed/rust/src/ui/layout_quicksilver/theme/mod.rs index 0c8580f54a5..6e9de425d25 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/theme/mod.rs @@ -47,86 +47,95 @@ pub const RADIUS: u8 = 0; // UI icons (white color). // 12x12 -include_icon!(ICON_FORESLASH, "model_mercury/res/foreslash12.toif"); +include_icon!(ICON_FORESLASH, "layout_quicksilver/res/foreslash12.toif"); // 20x20 include_icon!( ICON_BULLET_CHECKMARK, - "model_mercury/res/bullet_checkmark20.toif" + "layout_quicksilver/res/bullet_checkmark20.toif" ); -include_icon!(ICON_PAGE_DOWN, "model_mercury/res/page_down20.toif"); -include_icon!(ICON_PAGE_UP, "model_mercury/res/page_up20.toif"); +include_icon!(ICON_PAGE_DOWN, "layout_quicksilver/res/page_down20.toif"); +include_icon!(ICON_PAGE_UP, "layout_quicksilver/res/page_up20.toif"); // 24x24 -include_icon!(ICON_CANCEL, "model_mercury/res/cancel24.toif"); -include_icon!(ICON_CHEVRON_LEFT, "model_mercury/res/chevron_left24.toif"); -include_icon!(ICON_CHEVRON_RIGHT, "model_mercury/res/chevron_right24.toif"); -include_icon!(ICON_DOWNLOAD, "model_mercury/res/download24.toif"); -include_icon!(ICON_KEY, "model_mercury/res/key20.toif"); -include_icon!(ICON_QR_CODE, "model_mercury/res/qr_code24.toif"); -include_icon!(ICON_REBOOT, "model_mercury/res/reboot24.toif"); -include_icon!(ICON_WARNING, "model_mercury/res/warning24.toif"); +include_icon!(ICON_CANCEL, "layout_quicksilver/res/cancel24.toif"); +include_icon!( + ICON_CHEVRON_LEFT, + "layout_quicksilver/res/chevron_left24.toif" +); +include_icon!( + ICON_CHEVRON_RIGHT, + "layout_quicksilver/res/chevron_right24.toif" +); +include_icon!(ICON_DOWNLOAD, "layout_quicksilver/res/download24.toif"); +include_icon!(ICON_KEY, "layout_quicksilver/res/key20.toif"); +include_icon!(ICON_QR_CODE, "layout_quicksilver/res/qr_code24.toif"); +include_icon!(ICON_REBOOT, "layout_quicksilver/res/reboot24.toif"); +include_icon!(ICON_WARNING, "layout_quicksilver/res/warning24.toif"); include_icon!( ICON_SIMPLE_CHECKMARK24, - "model_mercury/res/simple_checkmark24.toif" + "layout_quicksilver/res/simple_checkmark24.toif" ); // 30x30 -include_icon!(ICON_AUTOFILL, "model_mercury/res/autofill30.toif"); -include_icon!(ICON_CLOSE, "model_mercury/res/close30.toif"); -include_icon!(ICON_CONFIRM_INPUT, "model_mercury/res/confirm_input30.toif"); -include_icon!(ICON_DELETE, "model_mercury/res/delete30.toif"); -include_icon!(ICON_MENU, "model_mercury/res/menu30.toif"); +include_icon!(ICON_AUTOFILL, "layout_quicksilver/res/autofill30.toif"); +include_icon!(ICON_CLOSE, "layout_quicksilver/res/close30.toif"); +include_icon!( + ICON_CONFIRM_INPUT, + "layout_quicksilver/res/confirm_input30.toif" +); +include_icon!(ICON_DELETE, "layout_quicksilver/res/delete30.toif"); +include_icon!(ICON_MENU, "layout_quicksilver/res/menu30.toif"); include_icon!( ICON_SIMPLE_CHECKMARK30, - "model_mercury/res/simple_checkmark30.toif" + "layout_quicksilver/res/simple_checkmark30.toif" ); -include_icon!(ICON_SIGN, "model_mercury/res/sign30.toif"); +include_icon!(ICON_SIGN, "layout_quicksilver/res/sign30.toif"); // 40x40 -include_icon!(ICON_MINUS, "model_mercury/res/minus40.toif"); -include_icon!(ICON_PLUS, "model_mercury/res/plus40.toif"); +include_icon!(ICON_MINUS, "layout_quicksilver/res/minus40.toif"); +include_icon!(ICON_PLUS, "layout_quicksilver/res/plus40.toif"); // Homescreen include_icon!( ICON_LOCKSCREEN_FILTER, - "model_mercury/res/lockscreen_filter.toif" + "layout_quicksilver/res/lockscreen_filter.toif" ); // Scrollbar/PIN dots - taken from model T -include_icon!(DOT_ACTIVE, "model_mercury/res/scroll-active.toif"); -include_icon!(DOT_INACTIVE, "model_mercury/res/scroll-inactive.toif"); +include_icon!(DOT_ACTIVE, "layout_quicksilver/res/scroll-active.toif"); +include_icon!(DOT_INACTIVE, "layout_quicksilver/res/scroll-inactive.toif"); include_icon!( DOT_INACTIVE_HALF, - "model_mercury/res/scroll-inactive-half.toif" + "layout_quicksilver/res/scroll-inactive-half.toif" ); include_icon!( DOT_INACTIVE_QUARTER, - "model_mercury/res/scroll-inactive-quarter.toif" + "layout_quicksilver/res/scroll-inactive-quarter.toif" ); -include_icon!(DOT_SMALL, "model_mercury/res/scroll-small.toif"); -include_icon!(ICON_PIN_BULLET, "model_mercury/res/pin_bullet6.toif"); +include_icon!(DOT_SMALL, "layout_quicksilver/res/scroll-small.toif"); +include_icon!(ICON_PIN_BULLET, "layout_quicksilver/res/pin_bullet6.toif"); // Text arrows. -include_icon!(ICON_PAGE_NEXT, "model_mercury/res/page-next.toif"); -include_icon!(ICON_PAGE_PREV, "model_mercury/res/page-prev.toif"); +include_icon!(ICON_PAGE_NEXT, "layout_quicksilver/res/page-next.toif"); +include_icon!(ICON_PAGE_PREV, "layout_quicksilver/res/page-prev.toif"); // Icon for "*#" key on the passphrase keyboard. include_icon!( ICON_SPECIAL_CHARS_GROUP, - "model_mercury/res/special_chars_group.toif" + "layout_quicksilver/res/special_chars_group.toif" ); // Icon for "next keyboard layout" for special characters -include_icon!(ICON_ASTERISK, "model_mercury/res/asterisk16.toif"); +include_icon!(ICON_ASTERISK, "layout_quicksilver/res/asterisk16.toif"); // Welcome screen. -include_icon!(ICON_LOGO, "model_mercury/res/lock_full.toif"); +include_icon!(ICON_LOGO, "layout_quicksilver/res/lock_full.toif"); // Homescreen notifications. -include_icon!(ICON_WARNING40, "model_mercury/res/warning40.toif"); +include_icon!(ICON_WARNING40, "layout_quicksilver/res/warning40.toif"); // Default homescreen -include_icon!(HOMESCREEN_ICON, "model_mercury/res/hs_lock.toif"); +include_icon!(HOMESCREEN_ICON, "layout_quicksilver/res/hs_lock.toif"); pub const fn label_default() -> TextStyle { TEXT_NORMAL diff --git a/core/embed/rust/src/ui/model_mercury/ui_firmware.rs b/core/embed/rust/src/ui/layout_quicksilver/ui_firmware.rs similarity index 99% rename from core/embed/rust/src/ui/model_mercury/ui_firmware.rs rename to core/embed/rust/src/ui/layout_quicksilver/ui_firmware.rs index 16cda97b655..885663dc524 100644 --- a/core/embed/rust/src/ui/model_mercury/ui_firmware.rs +++ b/core/embed/rust/src/ui/layout_quicksilver/ui_firmware.rs @@ -42,10 +42,10 @@ use super::{ self, new_confirm_action_simple, ConfirmActionExtra, ConfirmActionMenuStrings, ConfirmActionStrings, ConfirmBlobParams, ShowInfoParams, }, - theme, UIMercury, + theme, UIQuicksilver, }; -impl FirmwareUI for UIMercury { +impl FirmwareUI for UIQuicksilver { fn confirm_action( title: TString<'static>, action: Option>, @@ -1022,11 +1022,11 @@ impl FirmwareUI for UIMercury { _title: Option>, ) -> Result { Err::, Error>(Error::ValueError( - c"use share_words_mercury instead", + c"use show_share_words_quicksilver instead", )) } - fn show_share_words_mercury( + fn show_share_words_quicksilver( words: heapless::Vec, 33>, subtitle: Option>, instructions: Obj, @@ -1050,7 +1050,7 @@ impl FirmwareUI for UIMercury { } fn show_remaining_shares(_pages_iterable: Obj) -> Result { - // Mercury: remaining shares is a part of `continue_recovery` flow + // Quicksilver: remaining shares is a part of `continue_recovery` flow Err::, Error>(Error::ValueError( c"show_remaining_shares not implemented", )) diff --git a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs b/core/embed/rust/src/ui/layout_samson/bootloader/intro.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/bootloader/intro.rs rename to core/embed/rust/src/ui/layout_samson/bootloader/intro.rs diff --git a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs b/core/embed/rust/src/ui/layout_samson/bootloader/menu.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/bootloader/menu.rs rename to core/embed/rust/src/ui/layout_samson/bootloader/menu.rs diff --git a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs b/core/embed/rust/src/ui/layout_samson/bootloader/mod.rs similarity index 98% rename from core/embed/rust/src/ui/model_tr/bootloader/mod.rs rename to core/embed/rust/src/ui/layout_samson/bootloader/mod.rs index e5f66199a4c..41d9131831b 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs +++ b/core/embed/rust/src/ui/layout_samson/bootloader/mod.rs @@ -21,11 +21,12 @@ use super::{ bootloader::{BLD_BG, BLD_FG, ICON_ALERT, ICON_SPINNER, ICON_SUCCESS}, ICON_ARM_LEFT, ICON_ARM_RIGHT, TEXT_BOLD, TEXT_NORMAL, }, - UIModelTR, + UISamson, }; use crate::ui::{ - display::toif::Toif, geometry::Alignment, model_tr::cshape, shape, shape::render_on_display, + display::toif::Toif, geometry::Alignment, layout_samson::cshape, shape, + shape::render_on_display, }; use ufmt::uwrite; @@ -47,7 +48,7 @@ impl ReturnToC for ConfirmMsg { } } -impl UIModelTR { +impl UISamson { fn screen_progress( text: &str, text2: &str, @@ -92,7 +93,7 @@ impl UIModelTR { } } -impl BootloaderUI for UIModelTR { +impl BootloaderUI for UISamson { fn screen_welcome() { let mut frame = Welcome::new(); show(&mut frame, true); diff --git a/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs b/core/embed/rust/src/ui/layout_samson/bootloader/welcome.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/bootloader/welcome.rs rename to core/embed/rust/src/ui/layout_samson/bootloader/welcome.rs diff --git a/core/embed/rust/src/ui/model_tr/common_messages.rs b/core/embed/rust/src/ui/layout_samson/common_messages.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/common_messages.rs rename to core/embed/rust/src/ui/layout_samson/common_messages.rs diff --git a/core/embed/rust/src/ui/model_tr/component/address_details.rs b/core/embed/rust/src/ui/layout_samson/component/address_details.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/address_details.rs rename to core/embed/rust/src/ui/layout_samson/component/address_details.rs diff --git a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs b/core/embed/rust/src/ui/layout_samson/component/bl_confirm.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/bl_confirm.rs rename to core/embed/rust/src/ui/layout_samson/component/bl_confirm.rs diff --git a/core/embed/rust/src/ui/model_tr/component/button.rs b/core/embed/rust/src/ui/layout_samson/component/button.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/button.rs rename to core/embed/rust/src/ui/layout_samson/component/button.rs diff --git a/core/embed/rust/src/ui/model_tr/component/button_controller.rs b/core/embed/rust/src/ui/layout_samson/component/button_controller.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/button_controller.rs rename to core/embed/rust/src/ui/layout_samson/component/button_controller.rs diff --git a/core/embed/rust/src/ui/model_tr/component/changing_text.rs b/core/embed/rust/src/ui/layout_samson/component/changing_text.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/changing_text.rs rename to core/embed/rust/src/ui/layout_samson/component/changing_text.rs diff --git a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs b/core/embed/rust/src/ui/layout_samson/component/coinjoin_progress.rs similarity index 99% rename from core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs rename to core/embed/rust/src/ui/layout_samson/component/coinjoin_progress.rs index 8d5d9c61b51..a3f652c2b58 100644 --- a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/layout_samson/component/coinjoin_progress.rs @@ -11,7 +11,7 @@ use crate::{ }, display::Font, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, - model_tr::cshape, + layout_samson::cshape, shape, shape::Renderer, util::animation_disabled, diff --git a/core/embed/rust/src/ui/model_tr/component/error.rs b/core/embed/rust/src/ui/layout_samson/component/error.rs similarity index 99% rename from core/embed/rust/src/ui/model_tr/component/error.rs rename to core/embed/rust/src/ui/layout_samson/component/error.rs index ff771a25f84..6fb7f0ad308 100644 --- a/core/embed/rust/src/ui/model_tr/component/error.rs +++ b/core/embed/rust/src/ui/layout_samson/component/error.rs @@ -4,7 +4,7 @@ use crate::{ component::{Child, Component, Event, EventCtx, Label, Never, Pad}, constant::{screen, WIDTH}, geometry::{Alignment2D, Offset, Point, Rect}, - model_tr::cshape, + layout_samson::cshape, shape, shape::Renderer, }, diff --git a/core/embed/rust/src/ui/model_tr/component/flow.rs b/core/embed/rust/src/ui/layout_samson/component/flow.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/flow.rs rename to core/embed/rust/src/ui/layout_samson/component/flow.rs diff --git a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs b/core/embed/rust/src/ui/layout_samson/component/flow_pages.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/flow_pages.rs rename to core/embed/rust/src/ui/layout_samson/component/flow_pages.rs diff --git a/core/embed/rust/src/ui/model_tr/component/frame.rs b/core/embed/rust/src/ui/layout_samson/component/frame.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/frame.rs rename to core/embed/rust/src/ui/layout_samson/component/frame.rs diff --git a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs b/core/embed/rust/src/ui/layout_samson/component/hold_to_confirm.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs rename to core/embed/rust/src/ui/layout_samson/component/hold_to_confirm.rs diff --git a/core/embed/rust/src/ui/model_tr/component/homescreen.rs b/core/embed/rust/src/ui/layout_samson/component/homescreen.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/homescreen.rs rename to core/embed/rust/src/ui/layout_samson/component/homescreen.rs diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs b/core/embed/rust/src/ui/layout_samson/component/input_methods/choice.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs rename to core/embed/rust/src/ui/layout_samson/component/input_methods/choice.rs diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs b/core/embed/rust/src/ui/layout_samson/component/input_methods/choice_item.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs rename to core/embed/rust/src/ui/layout_samson/component/input_methods/choice_item.rs diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/mod.rs b/core/embed/rust/src/ui/layout_samson/component/input_methods/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/input_methods/mod.rs rename to core/embed/rust/src/ui/layout_samson/component/input_methods/mod.rs diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs b/core/embed/rust/src/ui/layout_samson/component/input_methods/number_input.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs rename to core/embed/rust/src/ui/layout_samson/component/input_methods/number_input.rs diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs b/core/embed/rust/src/ui/layout_samson/component/input_methods/passphrase.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs rename to core/embed/rust/src/ui/layout_samson/component/input_methods/passphrase.rs diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs b/core/embed/rust/src/ui/layout_samson/component/input_methods/pin.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs rename to core/embed/rust/src/ui/layout_samson/component/input_methods/pin.rs diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs b/core/embed/rust/src/ui/layout_samson/component/input_methods/simple_choice.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs rename to core/embed/rust/src/ui/layout_samson/component/input_methods/simple_choice.rs diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs b/core/embed/rust/src/ui/layout_samson/component/input_methods/wordlist.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs rename to core/embed/rust/src/ui/layout_samson/component/input_methods/wordlist.rs diff --git a/core/embed/rust/src/ui/model_tr/component/loader.rs b/core/embed/rust/src/ui/layout_samson/component/loader.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/loader.rs rename to core/embed/rust/src/ui/layout_samson/component/loader.rs diff --git a/core/embed/rust/src/ui/model_tr/component/mod.rs b/core/embed/rust/src/ui/layout_samson/component/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/mod.rs rename to core/embed/rust/src/ui/layout_samson/component/mod.rs diff --git a/core/embed/rust/src/ui/model_tr/component/page.rs b/core/embed/rust/src/ui/layout_samson/component/page.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/page.rs rename to core/embed/rust/src/ui/layout_samson/component/page.rs diff --git a/core/embed/rust/src/ui/model_tr/component/progress.rs b/core/embed/rust/src/ui/layout_samson/component/progress.rs similarity index 99% rename from core/embed/rust/src/ui/model_tr/component/progress.rs rename to core/embed/rust/src/ui/layout_samson/component/progress.rs index 081e7e9cb97..2a1fdc50094 100644 --- a/core/embed/rust/src/ui/model_tr/component/progress.rs +++ b/core/embed/rust/src/ui/layout_samson/component/progress.rs @@ -11,7 +11,7 @@ use crate::{ constant, display::{Font, Icon, LOADER_MAX}, geometry::{Alignment2D, Offset, Rect}, - model_tr::cshape, + layout_samson::cshape, shape, shape::Renderer, util::animation_disabled, diff --git a/core/embed/rust/src/ui/model_tr/component/result.rs b/core/embed/rust/src/ui/layout_samson/component/result.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/result.rs rename to core/embed/rust/src/ui/layout_samson/component/result.rs diff --git a/core/embed/rust/src/ui/model_tr/component/scrollbar.rs b/core/embed/rust/src/ui/layout_samson/component/scrollbar.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/scrollbar.rs rename to core/embed/rust/src/ui/layout_samson/component/scrollbar.rs diff --git a/core/embed/rust/src/ui/model_tr/component/share_words.rs b/core/embed/rust/src/ui/layout_samson/component/share_words.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/share_words.rs rename to core/embed/rust/src/ui/layout_samson/component/share_words.rs diff --git a/core/embed/rust/src/ui/model_tr/component/show_more.rs b/core/embed/rust/src/ui/layout_samson/component/show_more.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/show_more.rs rename to core/embed/rust/src/ui/layout_samson/component/show_more.rs diff --git a/core/embed/rust/src/ui/model_tr/component/title.rs b/core/embed/rust/src/ui/layout_samson/component/title.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/title.rs rename to core/embed/rust/src/ui/layout_samson/component/title.rs diff --git a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs b/core/embed/rust/src/ui/layout_samson/component/welcome_screen.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component/welcome_screen.rs rename to core/embed/rust/src/ui/layout_samson/component/welcome_screen.rs diff --git a/core/embed/rust/src/ui/model_tr/component_msg_obj.rs b/core/embed/rust/src/ui/layout_samson/component_msg_obj.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/component_msg_obj.rs rename to core/embed/rust/src/ui/layout_samson/component_msg_obj.rs diff --git a/core/embed/rust/src/ui/model_tr/constant.rs b/core/embed/rust/src/ui/layout_samson/constant.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/constant.rs rename to core/embed/rust/src/ui/layout_samson/constant.rs diff --git a/core/embed/rust/src/ui/model_tr/cshape/dotted_line.rs b/core/embed/rust/src/ui/layout_samson/cshape/dotted_line.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/cshape/dotted_line.rs rename to core/embed/rust/src/ui/layout_samson/cshape/dotted_line.rs diff --git a/core/embed/rust/src/ui/model_tr/cshape/loader_circular.rs b/core/embed/rust/src/ui/layout_samson/cshape/loader_circular.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/cshape/loader_circular.rs rename to core/embed/rust/src/ui/layout_samson/cshape/loader_circular.rs diff --git a/core/embed/rust/src/ui/model_tr/cshape/loader_small.rs b/core/embed/rust/src/ui/layout_samson/cshape/loader_small.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/cshape/loader_small.rs rename to core/embed/rust/src/ui/layout_samson/cshape/loader_small.rs diff --git a/core/embed/rust/src/ui/model_tr/cshape/loader_starry.rs b/core/embed/rust/src/ui/layout_samson/cshape/loader_starry.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/cshape/loader_starry.rs rename to core/embed/rust/src/ui/layout_samson/cshape/loader_starry.rs diff --git a/core/embed/rust/src/ui/model_tr/cshape/mod.rs b/core/embed/rust/src/ui/layout_samson/cshape/mod.rs similarity index 100% rename from core/embed/rust/src/ui/model_tr/cshape/mod.rs rename to core/embed/rust/src/ui/layout_samson/cshape/mod.rs diff --git a/core/embed/rust/src/ui/model_tr/mod.rs b/core/embed/rust/src/ui/layout_samson/mod.rs similarity index 91% rename from core/embed/rust/src/ui/model_tr/mod.rs rename to core/embed/rust/src/ui/layout_samson/mod.rs index cce8bdaf422..758f5ba6b67 100644 --- a/core/embed/rust/src/ui/model_tr/mod.rs +++ b/core/embed/rust/src/ui/layout_samson/mod.rs @@ -11,12 +11,12 @@ pub mod cshape; mod screens; pub mod theme; -pub struct UIModelTR {} +pub struct UISamson {} #[cfg(feature = "micropython")] pub mod ui_firmware; -impl CommonUI for UIModelTR { +impl CommonUI for UISamson { const SCREEN: Rect = constant::SCREEN; fn screen_fatal_error(title: &str, msg: &str, footer: &str) { diff --git a/core/embed/rust/src/ui/model_tr/res/alert.toif b/core/embed/rust/src/ui/layout_samson/res/alert.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/alert.toif rename to core/embed/rust/src/ui/layout_samson/res/alert.toif diff --git a/core/embed/rust/src/ui/model_tr/res/amount.toif b/core/embed/rust/src/ui/layout_samson/res/amount.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/amount.toif rename to core/embed/rust/src/ui/layout_samson/res/amount.toif diff --git a/core/embed/rust/src/ui/model_tr/res/amount_smaller.toif b/core/embed/rust/src/ui/layout_samson/res/amount_smaller.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/amount_smaller.toif rename to core/embed/rust/src/ui/layout_samson/res/amount_smaller.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arm_left.toif b/core/embed/rust/src/ui/layout_samson/res/arm_left.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arm_left.toif rename to core/embed/rust/src/ui/layout_samson/res/arm_left.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arm_right.toif b/core/embed/rust/src/ui/layout_samson/res/arm_right.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arm_right.toif rename to core/embed/rust/src/ui/layout_samson/res/arm_right.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arrow_back_up.toif b/core/embed/rust/src/ui/layout_samson/res/arrow_back_up.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arrow_back_up.toif rename to core/embed/rust/src/ui/layout_samson/res/arrow_back_up.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arrow_down.toif b/core/embed/rust/src/ui/layout_samson/res/arrow_down.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arrow_down.toif rename to core/embed/rust/src/ui/layout_samson/res/arrow_down.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arrow_left.toif b/core/embed/rust/src/ui/layout_samson/res/arrow_left.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arrow_left.toif rename to core/embed/rust/src/ui/layout_samson/res/arrow_left.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arrow_left_big.toif b/core/embed/rust/src/ui/layout_samson/res/arrow_left_big.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arrow_left_big.toif rename to core/embed/rust/src/ui/layout_samson/res/arrow_left_big.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arrow_right.toif b/core/embed/rust/src/ui/layout_samson/res/arrow_right.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arrow_right.toif rename to core/embed/rust/src/ui/layout_samson/res/arrow_right.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arrow_right_fat.toif b/core/embed/rust/src/ui/layout_samson/res/arrow_right_fat.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arrow_right_fat.toif rename to core/embed/rust/src/ui/layout_samson/res/arrow_right_fat.toif diff --git a/core/embed/rust/src/ui/model_tr/res/arrow_up.toif b/core/embed/rust/src/ui/layout_samson/res/arrow_up.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/arrow_up.toif rename to core/embed/rust/src/ui/layout_samson/res/arrow_up.toif diff --git a/core/embed/rust/src/ui/model_tr/res/bin.toif b/core/embed/rust/src/ui/layout_samson/res/bin.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/bin.toif rename to core/embed/rust/src/ui/layout_samson/res/bin.toif diff --git a/core/embed/rust/src/ui/model_tr/res/bld_header_warn.toif b/core/embed/rust/src/ui/layout_samson/res/bld_header_warn.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/bld_header_warn.toif rename to core/embed/rust/src/ui/layout_samson/res/bld_header_warn.toif diff --git a/core/embed/rust/src/ui/model_tr/res/cancel.toif b/core/embed/rust/src/ui/layout_samson/res/cancel.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/cancel.toif rename to core/embed/rust/src/ui/layout_samson/res/cancel.toif diff --git a/core/embed/rust/src/ui/model_tr/res/coinjoin.toif b/core/embed/rust/src/ui/layout_samson/res/coinjoin.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/coinjoin.toif rename to core/embed/rust/src/ui/layout_samson/res/coinjoin.toif diff --git a/core/embed/rust/src/ui/model_tr/res/delete.toif b/core/embed/rust/src/ui/layout_samson/res/delete.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/delete.toif rename to core/embed/rust/src/ui/layout_samson/res/delete.toif diff --git a/core/embed/rust/src/ui/model_tr/res/device_name.toif b/core/embed/rust/src/ui/layout_samson/res/device_name.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/device_name.toif rename to core/embed/rust/src/ui/layout_samson/res/device_name.toif diff --git a/core/embed/rust/src/ui/model_tr/res/download.toif b/core/embed/rust/src/ui/layout_samson/res/download.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/download.toif rename to core/embed/rust/src/ui/layout_samson/res/download.toif diff --git a/core/embed/rust/src/ui/model_tr/res/exit.toif b/core/embed/rust/src/ui/layout_samson/res/exit.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/exit.toif rename to core/embed/rust/src/ui/layout_samson/res/exit.toif diff --git a/core/embed/rust/src/ui/model_tr/res/eye.toif b/core/embed/rust/src/ui/layout_samson/res/eye.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/eye.toif rename to core/embed/rust/src/ui/layout_samson/res/eye.toif diff --git a/core/embed/rust/src/ui/model_tr/res/eye_round.toif b/core/embed/rust/src/ui/layout_samson/res/eye_round.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/eye_round.toif rename to core/embed/rust/src/ui/layout_samson/res/eye_round.toif diff --git a/core/embed/rust/src/ui/model_tr/res/fail.toif b/core/embed/rust/src/ui/layout_samson/res/fail.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/fail.toif rename to core/embed/rust/src/ui/layout_samson/res/fail.toif diff --git a/core/embed/rust/src/ui/model_tr/res/lock.toif b/core/embed/rust/src/ui/layout_samson/res/lock.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/lock.toif rename to core/embed/rust/src/ui/layout_samson/res/lock.toif diff --git a/core/embed/rust/src/ui/model_tr/res/lock_small.toif b/core/embed/rust/src/ui/layout_samson/res/lock_small.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/lock_small.toif rename to core/embed/rust/src/ui/layout_samson/res/lock_small.toif diff --git a/core/embed/rust/src/ui/model_tr/res/logo_22_33.toif b/core/embed/rust/src/ui/layout_samson/res/logo_22_33.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/logo_22_33.toif rename to core/embed/rust/src/ui/layout_samson/res/logo_22_33.toif diff --git a/core/embed/rust/src/ui/model_tr/res/logo_22_33_empty.toif b/core/embed/rust/src/ui/layout_samson/res/logo_22_33_empty.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/logo_22_33_empty.toif rename to core/embed/rust/src/ui/layout_samson/res/logo_22_33_empty.toif diff --git a/core/embed/rust/src/ui/model_tr/res/next_page.toif b/core/embed/rust/src/ui/layout_samson/res/next_page.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/next_page.toif rename to core/embed/rust/src/ui/layout_samson/res/next_page.toif diff --git a/core/embed/rust/src/ui/model_tr/res/param.toif b/core/embed/rust/src/ui/layout_samson/res/param.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/param.toif rename to core/embed/rust/src/ui/layout_samson/res/param.toif diff --git a/core/embed/rust/src/ui/model_tr/res/param_smaller.toif b/core/embed/rust/src/ui/layout_samson/res/param_smaller.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/param_smaller.toif rename to core/embed/rust/src/ui/layout_samson/res/param_smaller.toif diff --git a/core/embed/rust/src/ui/model_tr/res/prev_page.toif b/core/embed/rust/src/ui/layout_samson/res/prev_page.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/prev_page.toif rename to core/embed/rust/src/ui/layout_samson/res/prev_page.toif diff --git a/core/embed/rust/src/ui/model_tr/res/redo.toif b/core/embed/rust/src/ui/layout_samson/res/redo.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/redo.toif rename to core/embed/rust/src/ui/layout_samson/res/redo.toif diff --git a/core/embed/rust/src/ui/model_tr/res/space.toif b/core/embed/rust/src/ui/layout_samson/res/space.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/space.toif rename to core/embed/rust/src/ui/layout_samson/res/space.toif diff --git a/core/embed/rust/src/ui/model_tr/res/spinner.toif b/core/embed/rust/src/ui/layout_samson/res/spinner.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/spinner.toif rename to core/embed/rust/src/ui/layout_samson/res/spinner.toif diff --git a/core/embed/rust/src/ui/model_tr/res/success.toif b/core/embed/rust/src/ui/layout_samson/res/success.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/success.toif rename to core/embed/rust/src/ui/layout_samson/res/success.toif diff --git a/core/embed/rust/src/ui/model_tr/res/tick.toif b/core/embed/rust/src/ui/layout_samson/res/tick.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/tick.toif rename to core/embed/rust/src/ui/layout_samson/res/tick.toif diff --git a/core/embed/rust/src/ui/model_tr/res/tick_fat.toif b/core/embed/rust/src/ui/layout_samson/res/tick_fat.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/tick_fat.toif rename to core/embed/rust/src/ui/layout_samson/res/tick_fat.toif diff --git a/core/embed/rust/src/ui/model_tr/res/trash.toif b/core/embed/rust/src/ui/layout_samson/res/trash.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/trash.toif rename to core/embed/rust/src/ui/layout_samson/res/trash.toif diff --git a/core/embed/rust/src/ui/model_tr/res/trezor_empty.toif b/core/embed/rust/src/ui/layout_samson/res/trezor_empty.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/trezor_empty.toif rename to core/embed/rust/src/ui/layout_samson/res/trezor_empty.toif diff --git a/core/embed/rust/src/ui/model_tr/res/user.toif b/core/embed/rust/src/ui/layout_samson/res/user.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/user.toif rename to core/embed/rust/src/ui/layout_samson/res/user.toif diff --git a/core/embed/rust/src/ui/model_tr/res/user_smaller.toif b/core/embed/rust/src/ui/layout_samson/res/user_smaller.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/user_smaller.toif rename to core/embed/rust/src/ui/layout_samson/res/user_smaller.toif diff --git a/core/embed/rust/src/ui/model_tr/res/wallet.toif b/core/embed/rust/src/ui/layout_samson/res/wallet.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/wallet.toif rename to core/embed/rust/src/ui/layout_samson/res/wallet.toif diff --git a/core/embed/rust/src/ui/model_tr/res/warning.toif b/core/embed/rust/src/ui/layout_samson/res/warning.toif similarity index 100% rename from core/embed/rust/src/ui/model_tr/res/warning.toif rename to core/embed/rust/src/ui/layout_samson/res/warning.toif diff --git a/core/embed/rust/src/ui/model_tr/screens.rs b/core/embed/rust/src/ui/layout_samson/screens.rs similarity index 87% rename from core/embed/rust/src/ui/model_tr/screens.rs rename to core/embed/rust/src/ui/layout_samson/screens.rs index 347ad2eb331..c50857a4b3d 100644 --- a/core/embed/rust/src/ui/model_tr/screens.rs +++ b/core/embed/rust/src/ui/layout_samson/screens.rs @@ -1,5 +1,5 @@ use crate::ui::{ - component::base::Component, constant::screen, display, model_tr::component::WelcomeScreen, + component::base::Component, constant::screen, display, layout_samson::component::WelcomeScreen, }; use crate::ui::{display::Color, shape::render_on_display}; diff --git a/core/embed/rust/src/ui/model_tr/theme/bootloader.rs b/core/embed/rust/src/ui/layout_samson/theme/bootloader.rs similarity index 53% rename from core/embed/rust/src/ui/model_tr/theme/bootloader.rs rename to core/embed/rust/src/ui/layout_samson/theme/bootloader.rs index 72ddc72b593..f131afe7a17 100644 --- a/core/embed/rust/src/ui/model_tr/theme/bootloader.rs +++ b/core/embed/rust/src/ui/layout_samson/theme/bootloader.rs @@ -9,12 +9,12 @@ pub use super::super::theme::{BLACK, WHITE}; pub const BLD_BG: Color = BLACK; pub const BLD_FG: Color = WHITE; -include_icon!(ICON_TRASH, "model_tr/res/trash.toif"); -include_icon!(ICON_ALERT, "model_tr/res/alert.toif"); -include_icon!(ICON_SPINNER, "model_tr/res/spinner.toif"); -include_icon!(ICON_SUCCESS, "model_tr/res/success.toif"); -include_icon!(ICON_REDO, "model_tr/res/redo.toif"); -include_icon!(ICON_EXIT, "model_tr/res/exit.toif"); +include_icon!(ICON_TRASH, "layout_samson/res/trash.toif"); +include_icon!(ICON_ALERT, "layout_samson/res/alert.toif"); +include_icon!(ICON_SPINNER, "layout_samson/res/spinner.toif"); +include_icon!(ICON_SUCCESS, "layout_samson/res/success.toif"); +include_icon!(ICON_REDO, "layout_samson/res/redo.toif"); +include_icon!(ICON_EXIT, "layout_samson/res/exit.toif"); pub const TEXT_NORMAL: TextStyle = TextStyle::new(Font::NORMAL, BLD_FG, BLD_BG, BLD_FG, BLD_FG); pub const TEXT_BOLD: TextStyle = TextStyle::new(Font::BOLD, BLD_FG, BLD_BG, BLD_FG, BLD_FG); diff --git a/core/embed/rust/src/ui/model_tr/theme/mod.rs b/core/embed/rust/src/ui/layout_samson/theme/mod.rs similarity index 64% rename from core/embed/rust/src/ui/model_tr/theme/mod.rs rename to core/embed/rust/src/ui/layout_samson/theme/mod.rs index 5874a39053b..952f1079464 100644 --- a/core/embed/rust/src/ui/model_tr/theme/mod.rs +++ b/core/embed/rust/src/ui/layout_samson/theme/mod.rs @@ -65,32 +65,35 @@ pub fn textstyle_number(num: i32) -> &'static TextStyle { } // Firmware icons -include_icon!(ICON_ARM_LEFT, "model_tr/res/arm_left.toif"); // 10*6 -include_icon!(ICON_ARM_RIGHT, "model_tr/res/arm_right.toif"); // 10*6 -include_icon!(ICON_ARROW_LEFT, "model_tr/res/arrow_left.toif"); // 4*7 -include_icon!(ICON_ARROW_LEFT_BIG, "model_tr/res/arrow_left_big.toif"); // 8*7 -include_icon!(ICON_ARROW_RIGHT, "model_tr/res/arrow_right.toif"); // 4*7 -include_icon!(ICON_ARROW_RIGHT_FAT, "model_tr/res/arrow_right_fat.toif"); // 4*8 -include_icon!(ICON_ARROW_UP, "model_tr/res/arrow_up.toif"); // 8*4 -include_icon!(ICON_ARROW_DOWN, "model_tr/res/arrow_down.toif"); // 7*4 -include_icon!(ICON_ARROW_BACK_UP, "model_tr/res/arrow_back_up.toif"); // 8*8 -include_icon!(ICON_BIN, "model_tr/res/bin.toif"); // 10*10 -include_icon!(ICON_CANCEL, "model_tr/res/cancel.toif"); // 7*7 -include_icon!(ICON_COINJOIN, "model_tr/res/coinjoin.toif"); // 12*12 -include_icon!(ICON_DELETE, "model_tr/res/delete.toif"); // 9*7 -include_icon!(ICON_DEVICE_NAME, "model_tr/res/device_name.toif"); // 116*18 -include_icon!(ICON_EYE, "model_tr/res/eye_round.toif"); // 12*7 -include_icon!(ICON_LOCK, "model_tr/res/lock.toif"); // 10*10 -include_icon!(ICON_LOCK_SMALL, "model_tr/res/lock_small.toif"); // 6*7 -include_icon!(ICON_LOGO, "model_tr/res/logo_22_33.toif"); // 22*33 -include_icon!(ICON_LOGO_EMPTY, "model_tr/res/logo_22_33_empty.toif"); -include_icon!(ICON_NEXT_PAGE, "model_tr/res/next_page.toif"); // 9*8 -include_icon!(ICON_PREV_PAGE, "model_tr/res/prev_page.toif"); // 8*10 -include_icon!(ICON_SPACE, "model_tr/res/space.toif"); // 12*3 -include_icon!(ICON_TICK, "model_tr/res/tick.toif"); // 8*6 -include_icon!(ICON_TICK_FAT, "model_tr/res/tick_fat.toif"); // 8*6 -include_icon!(ICON_WARNING, "model_tr/res/warning.toif"); // 11*12 -include_icon!(ICON_WARN_TITLE, "model_tr/res/bld_header_warn.toif"); +include_icon!(ICON_ARM_LEFT, "layout_samson/res/arm_left.toif"); // 10*6 +include_icon!(ICON_ARM_RIGHT, "layout_samson/res/arm_right.toif"); // 10*6 +include_icon!(ICON_ARROW_LEFT, "layout_samson/res/arrow_left.toif"); // 4*7 +include_icon!(ICON_ARROW_LEFT_BIG, "layout_samson/res/arrow_left_big.toif"); // 8*7 +include_icon!(ICON_ARROW_RIGHT, "layout_samson/res/arrow_right.toif"); // 4*7 +include_icon!( + ICON_ARROW_RIGHT_FAT, + "layout_samson/res/arrow_right_fat.toif" +); // 4*8 +include_icon!(ICON_ARROW_UP, "layout_samson/res/arrow_up.toif"); // 8*4 +include_icon!(ICON_ARROW_DOWN, "layout_samson/res/arrow_down.toif"); // 7*4 +include_icon!(ICON_ARROW_BACK_UP, "layout_samson/res/arrow_back_up.toif"); // 8*8 +include_icon!(ICON_BIN, "layout_samson/res/bin.toif"); // 10*10 +include_icon!(ICON_CANCEL, "layout_samson/res/cancel.toif"); // 7*7 +include_icon!(ICON_COINJOIN, "layout_samson/res/coinjoin.toif"); // 12*12 +include_icon!(ICON_DELETE, "layout_samson/res/delete.toif"); // 9*7 +include_icon!(ICON_DEVICE_NAME, "layout_samson/res/device_name.toif"); // 116*18 +include_icon!(ICON_EYE, "layout_samson/res/eye_round.toif"); // 12*7 +include_icon!(ICON_LOCK, "layout_samson/res/lock.toif"); // 10*10 +include_icon!(ICON_LOCK_SMALL, "layout_samson/res/lock_small.toif"); // 6*7 +include_icon!(ICON_LOGO, "layout_samson/res/logo_22_33.toif"); // 22*33 +include_icon!(ICON_LOGO_EMPTY, "layout_samson/res/logo_22_33_empty.toif"); +include_icon!(ICON_NEXT_PAGE, "layout_samson/res/next_page.toif"); // 9*8 +include_icon!(ICON_PREV_PAGE, "layout_samson/res/prev_page.toif"); // 8*10 +include_icon!(ICON_SPACE, "layout_samson/res/space.toif"); // 12*3 +include_icon!(ICON_TICK, "layout_samson/res/tick.toif"); // 8*6 +include_icon!(ICON_TICK_FAT, "layout_samson/res/tick_fat.toif"); // 8*6 +include_icon!(ICON_WARNING, "layout_samson/res/warning.toif"); // 11*12 +include_icon!(ICON_WARN_TITLE, "layout_samson/res/bld_header_warn.toif"); // checklist settings pub const CHECKLIST_SPACING: i16 = 5; diff --git a/core/embed/rust/src/ui/model_tr/ui_firmware.rs b/core/embed/rust/src/ui/layout_samson/ui_firmware.rs similarity index 99% rename from core/embed/rust/src/ui/model_tr/ui_firmware.rs rename to core/embed/rust/src/ui/layout_samson/ui_firmware.rs index 8f8fdde3d28..446db574897 100644 --- a/core/embed/rust/src/ui/model_tr/ui_firmware.rs +++ b/core/embed/rust/src/ui/layout_samson/ui_firmware.rs @@ -26,7 +26,7 @@ use crate::{ obj::{LayoutMaybeTrace, LayoutObj, RootComponent}, util::{ConfirmBlob, RecoveryType}, }, - model_tr::{ + layout_samson::{ component::{ButtonActions, ButtonLayout, Page}, constant, }, @@ -43,12 +43,12 @@ use super::{ FlowPages, Frame, Homescreen, Lockscreen, NumberInput, PassphraseEntry, PinEntry, Progress, ScrollableFrame, ShareWords, ShowMore, SimpleChoice, WordlistEntry, WordlistType, }, - theme, UIModelTR, + theme, UISamson, }; use heapless::Vec; -impl FirmwareUI for UIModelTR { +impl FirmwareUI for UISamson { fn confirm_action( title: TString<'static>, action: Option>, @@ -1158,7 +1158,7 @@ impl FirmwareUI for UIModelTR { Ok(layout) } - fn show_share_words_mercury( + fn show_share_words_quicksilver( _words: heapless::Vec, 33>, _subtitle: Option>, _instructions: Obj, diff --git a/core/embed/rust/src/ui/mod.rs b/core/embed/rust/src/ui/mod.rs index 6ed81d9f915..d5199dbb37f 100644 --- a/core/embed/rust/src/ui/mod.rs +++ b/core/embed/rust/src/ui/mod.rs @@ -17,12 +17,12 @@ pub mod layout; mod api; -#[cfg(feature = "model_mercury")] -pub mod model_mercury; -#[cfg(feature = "model_tr")] -pub mod model_tr; -#[cfg(feature = "model_tt")] -pub mod model_tt; +#[cfg(feature = "layout_bolt")] +pub mod layout_bolt; +#[cfg(feature = "layout_quicksilver")] +pub mod layout_quicksilver; +#[cfg(feature = "layout_samson")] +pub mod layout_samson; #[cfg(feature = "bootloader")] pub mod ui_bootloader; @@ -33,14 +33,14 @@ pub mod ui_firmware; pub use ui_common::CommonUI; #[cfg(all( - feature = "model_mercury", - not(feature = "model_tr"), - not(feature = "model_tt") + feature = "layout_quicksilver", + not(feature = "layout_samson"), + not(feature = "layout_bolt") ))] -pub type ModelUI = crate::ui::model_mercury::UIMercury; +pub type ModelUI = crate::ui::layout_quicksilver::UIQuicksilver; -#[cfg(all(feature = "model_tr", not(feature = "model_tt")))] -pub type ModelUI = crate::ui::model_tr::UIModelTR; +#[cfg(all(feature = "layout_samson", not(feature = "layout_bolt")))] +pub type ModelUI = crate::ui::layout_samson::UISamson; -#[cfg(feature = "model_tt")] -pub type ModelUI = crate::ui::model_tt::UIModelTT; +#[cfg(feature = "layout_bolt")] +pub type ModelUI = crate::ui::layout_bolt::UIBolt; diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs deleted file mode 100644 index 77eeabfbe15..00000000000 --- a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs +++ /dev/null @@ -1,80 +0,0 @@ -//! generated from webauthn_icons.rs.mako -//! (by running `make templates` in `core`) -//! do not edit manually! - - -use crate::strutil::TString; -use crate::ui::util::include_res; - - -const ICON_APPLE: &[u8] = include_res!("model_mercury/res/fido/icon_apple.toif"); -const ICON_AWS: &[u8] = include_res!("model_mercury/res/fido/icon_aws.toif"); -const ICON_BINANCE: &[u8] = include_res!("model_mercury/res/fido/icon_binance.toif"); -const ICON_BITBUCKET: &[u8] = include_res!("model_mercury/res/fido/icon_bitbucket.toif"); -const ICON_BITFINEX: &[u8] = include_res!("model_mercury/res/fido/icon_bitfinex.toif"); -const ICON_BITWARDEN: &[u8] = include_res!("model_mercury/res/fido/icon_bitwarden.toif"); -const ICON_CLOUDFLARE: &[u8] = include_res!("model_mercury/res/fido/icon_cloudflare.toif"); -const ICON_COINBASE: &[u8] = include_res!("model_mercury/res/fido/icon_coinbase.toif"); -const ICON_DASHLANE: &[u8] = include_res!("model_mercury/res/fido/icon_dashlane.toif"); -const ICON_DROPBOX: &[u8] = include_res!("model_mercury/res/fido/icon_dropbox.toif"); -const ICON_DUO: &[u8] = include_res!("model_mercury/res/fido/icon_duo.toif"); -const ICON_FACEBOOK: &[u8] = include_res!("model_mercury/res/fido/icon_facebook.toif"); -const ICON_FASTMAIL: &[u8] = include_res!("model_mercury/res/fido/icon_fastmail.toif"); -const ICON_FEDORA: &[u8] = include_res!("model_mercury/res/fido/icon_fedora.toif"); -const ICON_GANDI: &[u8] = include_res!("model_mercury/res/fido/icon_gandi.toif"); -const ICON_GEMINI: &[u8] = include_res!("model_mercury/res/fido/icon_gemini.toif"); -const ICON_GITHUB: &[u8] = include_res!("model_mercury/res/fido/icon_github.toif"); -const ICON_GITLAB: &[u8] = include_res!("model_mercury/res/fido/icon_gitlab.toif"); -const ICON_GOOGLE: &[u8] = include_res!("model_mercury/res/fido/icon_google.toif"); -const ICON_INVITY: &[u8] = include_res!("model_mercury/res/fido/icon_invity.toif"); -const ICON_KEEPER: &[u8] = include_res!("model_mercury/res/fido/icon_keeper.toif"); -const ICON_KRAKEN: &[u8] = include_res!("model_mercury/res/fido/icon_kraken.toif"); -const ICON_LOGIN_GOV: &[u8] = include_res!("model_mercury/res/fido/icon_login.gov.toif"); -const ICON_MICROSOFT: &[u8] = include_res!("model_mercury/res/fido/icon_microsoft.toif"); -const ICON_MOJEID: &[u8] = include_res!("model_mercury/res/fido/icon_mojeid.toif"); -const ICON_NAMECHEAP: &[u8] = include_res!("model_mercury/res/fido/icon_namecheap.toif"); -const ICON_PROTON: &[u8] = include_res!("model_mercury/res/fido/icon_proton.toif"); -const ICON_SLUSHPOOL: &[u8] = include_res!("model_mercury/res/fido/icon_slushpool.toif"); -const ICON_STRIPE: &[u8] = include_res!("model_mercury/res/fido/icon_stripe.toif"); -const ICON_TUTANOTA: &[u8] = include_res!("model_mercury/res/fido/icon_tutanota.toif"); - -/// Translates icon name into its data. -pub fn get_fido_icon_data(icon_name: Option>) -> Option< &'static [u8]> { - if let Some(icon_name) = icon_name { - icon_name.map(|c| match c { - "apple" => Some(ICON_APPLE), - "aws" => Some(ICON_AWS), - "binance" => Some(ICON_BINANCE), - "bitbucket" => Some(ICON_BITBUCKET), - "bitfinex" => Some(ICON_BITFINEX), - "bitwarden" => Some(ICON_BITWARDEN), - "cloudflare" => Some(ICON_CLOUDFLARE), - "coinbase" => Some(ICON_COINBASE), - "dashlane" => Some(ICON_DASHLANE), - "dropbox" => Some(ICON_DROPBOX), - "duo" => Some(ICON_DUO), - "facebook" => Some(ICON_FACEBOOK), - "fastmail" => Some(ICON_FASTMAIL), - "fedora" => Some(ICON_FEDORA), - "gandi" => Some(ICON_GANDI), - "gemini" => Some(ICON_GEMINI), - "github" => Some(ICON_GITHUB), - "gitlab" => Some(ICON_GITLAB), - "google" => Some(ICON_GOOGLE), - "invity" => Some(ICON_INVITY), - "keeper" => Some(ICON_KEEPER), - "kraken" => Some(ICON_KRAKEN), - "login.gov" => Some(ICON_LOGIN_GOV), - "microsoft" => Some(ICON_MICROSOFT), - "mojeid" => Some(ICON_MOJEID), - "namecheap" => Some(ICON_NAMECHEAP), - "proton" => Some(ICON_PROTON), - "slushpool" => Some(ICON_SLUSHPOOL), - "stripe" => Some(ICON_STRIPE), - "tutanota" => Some(ICON_TUTANOTA), - _ => None, - }) - } else { - None - } -} diff --git a/core/embed/rust/src/ui/model_tt/component/fido_icons.rs b/core/embed/rust/src/ui/model_tt/component/fido_icons.rs deleted file mode 100644 index e556cf093e0..00000000000 --- a/core/embed/rust/src/ui/model_tt/component/fido_icons.rs +++ /dev/null @@ -1,84 +0,0 @@ -//! generated from webauthn_icons.rs.mako -//! (by running `make templates` in `core`) -//! do not edit manually! - - -use crate::strutil::TString; -use crate::ui::util::include_res; - - -const ICON_APPLE: &[u8] = include_res!("model_tt/res/fido/icon_apple.toif"); -const ICON_AWS: &[u8] = include_res!("model_tt/res/fido/icon_aws.toif"); -const ICON_BINANCE: &[u8] = include_res!("model_tt/res/fido/icon_binance.toif"); -const ICON_BITBUCKET: &[u8] = include_res!("model_tt/res/fido/icon_bitbucket.toif"); -const ICON_BITFINEX: &[u8] = include_res!("model_tt/res/fido/icon_bitfinex.toif"); -const ICON_BITWARDEN: &[u8] = include_res!("model_tt/res/fido/icon_bitwarden.toif"); -const ICON_CLOUDFLARE: &[u8] = include_res!("model_tt/res/fido/icon_cloudflare.toif"); -const ICON_COINBASE: &[u8] = include_res!("model_tt/res/fido/icon_coinbase.toif"); -const ICON_DASHLANE: &[u8] = include_res!("model_tt/res/fido/icon_dashlane.toif"); -const ICON_DROPBOX: &[u8] = include_res!("model_tt/res/fido/icon_dropbox.toif"); -const ICON_DUO: &[u8] = include_res!("model_tt/res/fido/icon_duo.toif"); -const ICON_FACEBOOK: &[u8] = include_res!("model_tt/res/fido/icon_facebook.toif"); -const ICON_FASTMAIL: &[u8] = include_res!("model_tt/res/fido/icon_fastmail.toif"); -const ICON_FEDORA: &[u8] = include_res!("model_tt/res/fido/icon_fedora.toif"); -const ICON_GANDI: &[u8] = include_res!("model_tt/res/fido/icon_gandi.toif"); -const ICON_GEMINI: &[u8] = include_res!("model_tt/res/fido/icon_gemini.toif"); -const ICON_GITHUB: &[u8] = include_res!("model_tt/res/fido/icon_github.toif"); -const ICON_GITLAB: &[u8] = include_res!("model_tt/res/fido/icon_gitlab.toif"); -const ICON_GOOGLE: &[u8] = include_res!("model_tt/res/fido/icon_google.toif"); -const ICON_INVITY: &[u8] = include_res!("model_tt/res/fido/icon_invity.toif"); -const ICON_KEEPER: &[u8] = include_res!("model_tt/res/fido/icon_keeper.toif"); -const ICON_KRAKEN: &[u8] = include_res!("model_tt/res/fido/icon_kraken.toif"); -const ICON_LOGIN_GOV: &[u8] = include_res!("model_tt/res/fido/icon_login.gov.toif"); -const ICON_MICROSOFT: &[u8] = include_res!("model_tt/res/fido/icon_microsoft.toif"); -const ICON_MOJEID: &[u8] = include_res!("model_tt/res/fido/icon_mojeid.toif"); -const ICON_NAMECHEAP: &[u8] = include_res!("model_tt/res/fido/icon_namecheap.toif"); -const ICON_PROTON: &[u8] = include_res!("model_tt/res/fido/icon_proton.toif"); -const ICON_SLUSHPOOL: &[u8] = include_res!("model_tt/res/fido/icon_slushpool.toif"); -const ICON_STRIPE: &[u8] = include_res!("model_tt/res/fido/icon_stripe.toif"); -const ICON_TUTANOTA: &[u8] = include_res!("model_tt/res/fido/icon_tutanota.toif"); -/// Default icon when app does not have its own -const ICON_WEBAUTHN: &[u8] = include_res!("model_tt/res/fido/icon_webauthn.toif"); - -/// Translates icon name into its data. -/// Returns default `ICON_WEBAUTHN` when the icon is not found or name not -/// supplied. -pub fn get_fido_icon_data(icon_name: Option>) -> &'static [u8] { - if let Some(icon_name) = icon_name { - icon_name.map(|c| match c { - "apple" => ICON_APPLE, - "aws" => ICON_AWS, - "binance" => ICON_BINANCE, - "bitbucket" => ICON_BITBUCKET, - "bitfinex" => ICON_BITFINEX, - "bitwarden" => ICON_BITWARDEN, - "cloudflare" => ICON_CLOUDFLARE, - "coinbase" => ICON_COINBASE, - "dashlane" => ICON_DASHLANE, - "dropbox" => ICON_DROPBOX, - "duo" => ICON_DUO, - "facebook" => ICON_FACEBOOK, - "fastmail" => ICON_FASTMAIL, - "fedora" => ICON_FEDORA, - "gandi" => ICON_GANDI, - "gemini" => ICON_GEMINI, - "github" => ICON_GITHUB, - "gitlab" => ICON_GITLAB, - "google" => ICON_GOOGLE, - "invity" => ICON_INVITY, - "keeper" => ICON_KEEPER, - "kraken" => ICON_KRAKEN, - "login.gov" => ICON_LOGIN_GOV, - "microsoft" => ICON_MICROSOFT, - "mojeid" => ICON_MOJEID, - "namecheap" => ICON_NAMECHEAP, - "proton" => ICON_PROTON, - "slushpool" => ICON_SLUSHPOOL, - "stripe" => ICON_STRIPE, - "tutanota" => ICON_TUTANOTA, - _ => ICON_WEBAUTHN, - }) - } else { - ICON_WEBAUTHN - } -} diff --git a/core/embed/rust/src/ui/ui_firmware.rs b/core/embed/rust/src/ui/ui_firmware.rs index 51796745116..2bf6134ca67 100644 --- a/core/embed/rust/src/ui/ui_firmware.rs +++ b/core/embed/rust/src/ui/ui_firmware.rs @@ -356,8 +356,8 @@ pub trait FirmwareUI { ) -> Result; // TODO: merge with `show_share_words` instead of having specific version for - // mercury - fn show_share_words_mercury( + // quicksilver UI + fn show_share_words_quicksilver( words: Vec, 33>, subtitle: Option>, instructions: Obj, // TODO: replace Obj diff --git a/core/embed/upymod/modtrezorutils/modtrezorutils.c b/core/embed/upymod/modtrezorutils/modtrezorutils.c index 748c6ff6b01..38ac43fb2f9 100644 --- a/core/embed/upymod/modtrezorutils/modtrezorutils.c +++ b/core/embed/upymod/modtrezorutils/modtrezorutils.c @@ -408,7 +408,7 @@ STATIC mp_obj_tuple_t mod_trezorutils_version_obj = { /// BITCOIN_ONLY: bool /// """Whether the firmware is Bitcoin-only.""" /// UI_LAYOUT: str -/// """UI layout identifier ("tt" for model T, "tr" for models One and R).""" +/// """UI layout identifier ("bolt"-T, "samson"-TS3, "quicksilver"-TS5).""" /// USE_THP: bool /// """Whether the firmware supports Trezor-Host Protocol (version 2).""" /// if __debug__: @@ -497,12 +497,12 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { #else {MP_ROM_QSTR(MP_QSTR_USE_THP), mp_const_false}, #endif -#ifdef UI_LAYOUT_TT - {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_TT)}, -#elif UI_LAYOUT_TR - {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_TR)}, -#elif UI_LAYOUT_MERCURY - {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_MERCURY)}, +#ifdef UI_LAYOUT_BOLT + {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_BOLT)}, +#elif UI_LAYOUT_SAMSON + {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_SAMSON)}, +#elif UI_LAYOUT_QUICKSILVER + {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_QUICKSILVER)}, #else #error Unknown layout #endif diff --git a/core/mocks/generated/trezorui_api.pyi b/core/mocks/generated/trezorui_api.pyi index 2b21ee96cd6..afe82746f30 100644 --- a/core/mocks/generated/trezorui_api.pyi +++ b/core/mocks/generated/trezorui_api.pyi @@ -230,7 +230,7 @@ def confirm_more( items: Iterable[tuple[int, str | bytes]], ) -> LayoutObj[UiResult]: """Confirm long content with the possibility to go back from any page. - Meant to be used with confirm_with_info on model TT and TR.""" + Meant to be used with confirm_with_info on UI bolt and samson.""" # rust/src/ui/api/firmware_micropython.rs @@ -293,7 +293,7 @@ def confirm_with_info( items: Iterable[tuple[int, str | bytes]], ) -> LayoutObj[UiResult]: """Confirm given items but with third button. Always single page - without scrolling. In mercury, the button is placed in + without scrolling. In Quicksilver, the button is placed in context menu.""" @@ -304,7 +304,7 @@ def continue_recovery_homepage( subtext: str | None, button: str | None, recovery_type: RecoveryType, - show_instructions: bool = False, # unused on TT + show_instructions: bool = False, # unused on bolt remaining_shares: Iterable[tuple[str, str]] | None = None, ) -> LayoutObj[UiResult]: """Device recovery homescreen.""" @@ -607,7 +607,7 @@ def show_share_words( # rust/src/ui/api/firmware_micropython.rs -def show_share_words_mercury( +def show_share_words_quicksilver( *, words: Iterable[str], subtitle: str | None, @@ -654,9 +654,9 @@ def show_warning( value: str = "", description: str = "", allow_cancel: bool = True, - danger: bool = False, # unused on TT + danger: bool = False, # unused on bolt ) -> LayoutObj[UiResult]: - """Warning modal. TT: No buttons shown when `button` is empty string. TR: middle button and centered text.""" + """Warning modal. bolt: No buttons shown when `button` is empty string. samson: middle button and centered text.""" # rust/src/ui/api/firmware_micropython.rs diff --git a/core/mocks/generated/trezorutils.pyi b/core/mocks/generated/trezorutils.pyi index d97c2526e3e..e6aaad410e3 100644 --- a/core/mocks/generated/trezorutils.pyi +++ b/core/mocks/generated/trezorutils.pyi @@ -149,7 +149,7 @@ EMULATOR: bool BITCOIN_ONLY: bool """Whether the firmware is Bitcoin-only.""" UI_LAYOUT: str -"""UI layout identifier ("tt" for model T, "tr" for models One and R).""" +"""UI layout identifier ("bolt"-T, "samson"-TS3, "quicksilver"-TS5).""" USE_THP: bool """Whether the firmware supports Trezor-Host Protocol (version 2).""" if __debug__: diff --git a/core/site_scons/models/D001/__init__.py b/core/site_scons/models/D001/__init__.py index aa278d7bc21..89340199e5d 100644 --- a/core/site_scons/models/D001/__init__.py +++ b/core/site_scons/models/D001/__init__.py @@ -17,7 +17,7 @@ def configure_board( def get_model_ui() -> str: - return "tt" + return "bolt" def get_model_ui_conf() -> list[str]: diff --git a/core/site_scons/models/D002/__init__.py b/core/site_scons/models/D002/__init__.py index 1ad22bd0848..7982588b0bf 100644 --- a/core/site_scons/models/D002/__init__.py +++ b/core/site_scons/models/D002/__init__.py @@ -17,7 +17,7 @@ def configure_board( def get_model_ui() -> str: - return "tt" + return "bolt" def get_model_ui_conf() -> list[str]: diff --git a/core/site_scons/models/T2B1/__init__.py b/core/site_scons/models/T2B1/__init__.py index af6c37d1025..34699a3fc46 100644 --- a/core/site_scons/models/T2B1/__init__.py +++ b/core/site_scons/models/T2B1/__init__.py @@ -31,7 +31,7 @@ def configure_board( def get_model_ui() -> str: - return "tr" + return "samson" def get_model_ui_conf() -> list[str]: diff --git a/core/site_scons/models/T2T1/__init__.py b/core/site_scons/models/T2T1/__init__.py index 959d2b92b35..9625efc0b33 100644 --- a/core/site_scons/models/T2T1/__init__.py +++ b/core/site_scons/models/T2T1/__init__.py @@ -21,7 +21,7 @@ def configure_board( def get_model_ui() -> str: - return "tt" + return "bolt" def get_model_ui_conf() -> list[str]: diff --git a/core/site_scons/models/T3B1/__init__.py b/core/site_scons/models/T3B1/__init__.py index f743d8297a7..07f385e17ef 100644 --- a/core/site_scons/models/T3B1/__init__.py +++ b/core/site_scons/models/T3B1/__init__.py @@ -31,7 +31,7 @@ def configure_board( def get_model_ui() -> str: - return "tr" + return "samson" def get_model_ui_conf() -> list[str]: diff --git a/core/site_scons/models/T3T1/__init__.py b/core/site_scons/models/T3T1/__init__.py index 278a3a0d617..5afb0daa46d 100644 --- a/core/site_scons/models/T3T1/__init__.py +++ b/core/site_scons/models/T3T1/__init__.py @@ -31,7 +31,7 @@ def configure_board( def get_model_ui() -> str: - return "mercury" + return "quicksilver" def get_model_ui_conf() -> list[str]: diff --git a/core/site_scons/models/T3W1/__init__.py b/core/site_scons/models/T3W1/__init__.py index 55db034eaf3..b1cb7058c90 100644 --- a/core/site_scons/models/T3W1/__init__.py +++ b/core/site_scons/models/T3W1/__init__.py @@ -32,7 +32,7 @@ def configure_board( def get_model_ui() -> str: - return "tt" + return "bolt" def get_model_ui_conf() -> list[str]: diff --git a/core/site_scons/site_tools/micropython/__init__.py b/core/site_scons/site_tools/micropython/__init__.py index ee5a0c80ab1..7c3997b34a2 100644 --- a/core/site_scons/site_tools/micropython/__init__.py +++ b/core/site_scons/site_tools/micropython/__init__.py @@ -44,20 +44,20 @@ def generate_frozen_module(source, target, env, for_signature): btc_only = env["bitcoin_only"] == "1" backlight = env["backlight"] optiga = env["optiga"] - layout_tt = env["ui_layout"] == "UI_LAYOUT_TT" - layout_tr = env["ui_layout"] == "UI_LAYOUT_TR" touch = env["use_touch"] button = env["use_button"] - layout_mercury = env["ui_layout"] == "UI_LAYOUT_MERCURY" + layout_bolt = env["ui_layout"] == "UI_LAYOUT_BOLT" + layout_samson = env["ui_layout"] == "UI_LAYOUT_SAMSON" + layout_quicksilver = env["ui_layout"] == "UI_LAYOUT_QUICKSILVER" thp = env["thp"] interim = f"{target[:-4]}.i" # replace .mpy with .i sed_scripts = [ rf"-e 's/utils\.BITCOIN_ONLY/{btc_only}/g'", rf"-e 's/utils\.USE_BACKLIGHT/{backlight}/g'", rf"-e 's/utils\.USE_OPTIGA/{optiga}/g'", - rf"-e 's/utils\.UI_LAYOUT == \"TT\"/{layout_tt}/g'", - rf"-e 's/utils\.UI_LAYOUT == \"TR\"/{layout_tr}/g'", - rf"-e 's/utils\.UI_LAYOUT == \"MERCURY\"/{layout_mercury}/g'", + rf"-e 's/utils\.UI_LAYOUT == \"BOLT\"/{layout_bolt}/g'", + rf"-e 's/utils\.UI_LAYOUT == \"SAMSON\"/{layout_samson}/g'", + rf"-e 's/utils\.UI_LAYOUT == \"QUICKSILVER\"/{layout_quicksilver}/g'", rf"-e 's/utils\.USE_BUTTON/{button}/g'", rf"-e 's/utils\.USE_TOUCH/{touch}/g'", rf"-e 's/utils\.USE_THP/{thp}/g'", diff --git a/core/site_scons/ui/__init__.py b/core/site_scons/ui/__init__.py index 4759d6952b9..60639bfd651 100644 --- a/core/site_scons/ui/__init__.py +++ b/core/site_scons/ui/__init__.py @@ -2,17 +2,17 @@ from site_scons import models -from . import mercury, tr, tt +from . import ui_bolt, ui_quicksilver, ui_samson -def get_ui_module(model: str): +def get_ui_module(layout: str): ui_modules = { - "mercury": mercury, - "tr": tr, - "tt": tt, + "quicksilver": ui_quicksilver, + "samson": ui_samson, + "bolt": ui_bolt, } - return ui_modules[models.get_model_ui(model)] + return ui_modules[models.get_model_ui(layout)] def init_ui( diff --git a/core/site_scons/ui/tt.py b/core/site_scons/ui/ui_bolt.py similarity index 93% rename from core/site_scons/ui/tt.py rename to core/site_scons/ui/ui_bolt.py index cc60e652387..0974a979c18 100644 --- a/core/site_scons/ui/tt.py +++ b/core/site_scons/ui/ui_bolt.py @@ -11,7 +11,7 @@ def init_ui( rust_features: list[str], ): - rust_features.append("model_tt") + rust_features.append("layout_bolt") font_normal = None font_demibold = None @@ -50,8 +50,8 @@ def init_ui( def get_ui_layout() -> str: - return "UI_LAYOUT_TT" + return "UI_LAYOUT_BOLT" def get_ui_layout_path() -> str: - return "trezor/ui/layouts/tt/" + return "trezor/ui/layouts/bolt/" diff --git a/core/site_scons/ui/mercury.py b/core/site_scons/ui/ui_quicksilver.py similarity index 93% rename from core/site_scons/ui/mercury.py rename to core/site_scons/ui/ui_quicksilver.py index ee1f1a7677f..006af0fe485 100644 --- a/core/site_scons/ui/mercury.py +++ b/core/site_scons/ui/ui_quicksilver.py @@ -11,7 +11,7 @@ def init_ui( rust_features: list[str], ): - rust_features.append("model_mercury") + rust_features.append("layout_quicksilver") font_normal = None font_demibold = None @@ -56,8 +56,8 @@ def init_ui( def get_ui_layout() -> str: - return "UI_LAYOUT_MERCURY" + return "UI_LAYOUT_QUICKSILVER" def get_ui_layout_path() -> str: - return "trezor/ui/layouts/mercury/" + return "trezor/ui/layouts/quicksilver/" diff --git a/core/site_scons/ui/tr.py b/core/site_scons/ui/ui_samson.py similarity index 94% rename from core/site_scons/ui/tr.py rename to core/site_scons/ui/ui_samson.py index a048fdd9071..16cdc1f4c14 100644 --- a/core/site_scons/ui/tr.py +++ b/core/site_scons/ui/ui_samson.py @@ -11,7 +11,7 @@ def init_ui( rust_features: list[str], ): - rust_features.append("model_tr") + rust_features.append("layout_samson") font_normal = None font_demibold = None @@ -54,8 +54,8 @@ def init_ui( def get_ui_layout() -> str: - return "UI_LAYOUT_TR" + return "UI_LAYOUT_SAMSON" def get_ui_layout_path() -> str: - return "trezor/ui/layouts/tr/" + return "trezor/ui/layouts/samson/" diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 05f3a3330a5..9b7597b57dc 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -167,42 +167,42 @@ import trezor.ui trezor.ui.layouts import trezor.ui.layouts +trezor.ui.layouts.bolt +import trezor.ui.layouts.bolt +trezor.ui.layouts.bolt.fido +import trezor.ui.layouts.bolt.fido +trezor.ui.layouts.bolt.recovery +import trezor.ui.layouts.bolt.recovery +trezor.ui.layouts.bolt.reset +import trezor.ui.layouts.bolt.reset trezor.ui.layouts.common import trezor.ui.layouts.common trezor.ui.layouts.fido import trezor.ui.layouts.fido trezor.ui.layouts.homescreen import trezor.ui.layouts.homescreen -trezor.ui.layouts.mercury -import trezor.ui.layouts.mercury -trezor.ui.layouts.mercury.fido -import trezor.ui.layouts.mercury.fido -trezor.ui.layouts.mercury.recovery -import trezor.ui.layouts.mercury.recovery -trezor.ui.layouts.mercury.reset -import trezor.ui.layouts.mercury.reset trezor.ui.layouts.progress import trezor.ui.layouts.progress +trezor.ui.layouts.quicksilver +import trezor.ui.layouts.quicksilver +trezor.ui.layouts.quicksilver.fido +import trezor.ui.layouts.quicksilver.fido +trezor.ui.layouts.quicksilver.recovery +import trezor.ui.layouts.quicksilver.recovery +trezor.ui.layouts.quicksilver.reset +import trezor.ui.layouts.quicksilver.reset trezor.ui.layouts.recovery import trezor.ui.layouts.recovery trezor.ui.layouts.reset import trezor.ui.layouts.reset -trezor.ui.layouts.tr -import trezor.ui.layouts.tr -trezor.ui.layouts.tr.fido -import trezor.ui.layouts.tr.fido -trezor.ui.layouts.tr.recovery -import trezor.ui.layouts.tr.recovery -trezor.ui.layouts.tr.reset -import trezor.ui.layouts.tr.reset -trezor.ui.layouts.tt -import trezor.ui.layouts.tt -trezor.ui.layouts.tt.fido -import trezor.ui.layouts.tt.fido -trezor.ui.layouts.tt.recovery -import trezor.ui.layouts.tt.recovery -trezor.ui.layouts.tt.reset -import trezor.ui.layouts.tt.reset +trezor.ui.layouts.samson +import trezor.ui.layouts.samson +trezor.ui.layouts.samson.fido +import trezor.ui.layouts.samson.fido +trezor.ui.layouts.samson.recovery +import trezor.ui.layouts.samson.recovery +trezor.ui.layouts.samson.reset +import trezor.ui.layouts.samson.reset trezor.utils import trezor.utils trezor.wire diff --git a/core/src/apps/bitcoin/sign_tx/layout.py b/core/src/apps/bitcoin/sign_tx/layout.py index 8f9fed1e51a..f77405ac0a4 100644 --- a/core/src/apps/bitcoin/sign_tx/layout.py +++ b/core/src/apps/bitcoin/sign_tx/layout.py @@ -99,14 +99,10 @@ async def confirm_output( if output.address_n and not output.multisig: from trezor import utils - # Showing the account string only for model_tr layout + # Showing the account string only for layout samson (TS3) # TODO expose layout_type so that we can check for it, instead of listing # all models that use the layout? - show_account_str = ( - # pylint: disable-next=consider-using-in - utils.INTERNAL_MODEL == "T2B1" - or utils.INTERNAL_MODEL == "T3B1" - ) + show_account_str = utils.UI_LAYOUT == "SAMSON" script_type = CHANGE_OUTPUT_TO_INPUT_SCRIPT_TYPES[output.script_type] address_label = ( address_n_to_name( diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 0ae642d1e6b..85e053af4e7 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -96,9 +96,9 @@ async def _continue_recovery_process() -> Success: if is_first_step: # If we are starting recovery, ask for word count first... # _request_word_count - # For others than model_tr, just continue straight to word count keyboard + # For others than samson, just continue straight to word count keyboard # pylint: disable-next=consider-using-in - if utils.INTERNAL_MODEL == "T2B1" or utils.INTERNAL_MODEL == "T3B1": + if utils.UI_LAYOUT == "SAMSON": await layout.homescreen_dialog( TR.buttons__continue, TR.recovery__num_of_words ) diff --git a/core/src/trezor/ui/layouts/__init__.py b/core/src/trezor/ui/layouts/__init__.py index b477332f45d..b3d430cf11e 100644 --- a/core/src/trezor/ui/layouts/__init__.py +++ b/core/src/trezor/ui/layouts/__init__.py @@ -4,11 +4,11 @@ # NOTE: using any import magic probably causes mypy not to check equivalence of # layout type signatures across models -if utils.UI_LAYOUT == "TR": - from .tr import * # noqa: F401,F403 -elif utils.UI_LAYOUT == "TT": - from .tt import * # noqa: F401,F403 -elif utils.UI_LAYOUT == "MERCURY": - from .mercury import * # noqa: F401,F403 +if utils.UI_LAYOUT == "SAMSON": + from .samson import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "BOLT": + from .bolt import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "QUICKSILVER": + from .quicksilver import * # noqa: F401,F403 else: raise ValueError("Unknown layout") diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/bolt/__init__.py similarity index 99% rename from core/src/trezor/ui/layouts/tt/__init__.py rename to core/src/trezor/ui/layouts/bolt/__init__.py index 9248293c950..7f5fc649ff4 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/bolt/__init__.py @@ -34,7 +34,7 @@ def confirm_action( reverse: bool = False, exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_CODE_OTHER, - prompt_screen: bool = False, # unused on TT + prompt_screen: bool = False, # unused on bolt prompt_title: str | None = None, ) -> Awaitable[None]: if description is not None and description_param is not None: diff --git a/core/src/trezor/ui/layouts/tt/fido.py b/core/src/trezor/ui/layouts/bolt/fido.py similarity index 100% rename from core/src/trezor/ui/layouts/tt/fido.py rename to core/src/trezor/ui/layouts/bolt/fido.py diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/bolt/recovery.py similarity index 100% rename from core/src/trezor/ui/layouts/tt/recovery.py rename to core/src/trezor/ui/layouts/bolt/recovery.py diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/bolt/reset.py similarity index 100% rename from core/src/trezor/ui/layouts/tt/reset.py rename to core/src/trezor/ui/layouts/bolt/reset.py diff --git a/core/src/trezor/ui/layouts/fido.py b/core/src/trezor/ui/layouts/fido.py index e7447b1a62d..e7263fb0ebe 100644 --- a/core/src/trezor/ui/layouts/fido.py +++ b/core/src/trezor/ui/layouts/fido.py @@ -1,8 +1,8 @@ from trezor import utils -if utils.UI_LAYOUT == "TT": - from .tt.fido import * # noqa: F401,F403 -elif utils.UI_LAYOUT == "TR": - from .tr.fido import * # noqa: F401,F403 -elif utils.UI_LAYOUT == "MERCURY": - from .mercury.fido import * # noqa: F401,F403 +if utils.UI_LAYOUT == "BOLT": + from .bolt.fido import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "SAMSON": + from .samson.fido import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "QUICKSILVER": + from .quicksilver.fido import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/quicksilver/__init__.py similarity index 99% rename from core/src/trezor/ui/layouts/mercury/__init__.py rename to core/src/trezor/ui/layouts/quicksilver/__init__.py index 54b1e49b26c..594837b853b 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/quicksilver/__init__.py @@ -1169,7 +1169,7 @@ def request_pin_on_device( async def confirm_reenter_pin(is_wipe_code: bool = False) -> None: - """Not supported for Mercury.""" + """Not supported for Quicksilver.""" pass diff --git a/core/src/trezor/ui/layouts/mercury/fido.py b/core/src/trezor/ui/layouts/quicksilver/fido.py similarity index 100% rename from core/src/trezor/ui/layouts/mercury/fido.py rename to core/src/trezor/ui/layouts/quicksilver/fido.py diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/quicksilver/recovery.py similarity index 98% rename from core/src/trezor/ui/layouts/mercury/recovery.py rename to core/src/trezor/ui/layouts/quicksilver/recovery.py index 371a635d034..127c2f7804f 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/quicksilver/recovery.py @@ -99,7 +99,7 @@ async def show_group_share_success(share_index: int, group_index: int) -> None: async def continue_recovery( - _button_label: str, # unused on mercury + _button_label: str, # unused on quicksilver text: str, subtext: str | None, recovery_type: RecoveryType, diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/quicksilver/reset.py similarity index 98% rename from core/src/trezor/ui/layouts/mercury/reset.py rename to core/src/trezor/ui/layouts/quicksilver/reset.py index 27b31bc399a..709f32035f8 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/quicksilver/reset.py @@ -38,7 +38,7 @@ def show_share_words( text_confirm = TR.reset__words_written_down_template.format(words_count) return raise_if_not_confirmed( - trezorui_api.show_share_words_mercury( + trezorui_api.show_share_words_quicksilver( words=share_words, subtitle=subtitle, instructions=instructions, @@ -346,7 +346,7 @@ async def show_share_confirmation_success( ) -> None: if share_index is None or num_of_shares is None: # it is a BIP39 or a 1-of-1 SLIP39 backup - # mercury UI shows only final wallet backup confirmation screen later + # quicksilver UI shows only final wallet backup confirmation screen later return # TODO: super-shamir copy not done diff --git a/core/src/trezor/ui/layouts/recovery.py b/core/src/trezor/ui/layouts/recovery.py index 12a0b335404..ff6db134028 100644 --- a/core/src/trezor/ui/layouts/recovery.py +++ b/core/src/trezor/ui/layouts/recovery.py @@ -1,8 +1,8 @@ from trezor import utils -if utils.UI_LAYOUT == "TT": - from .tt.recovery import * # noqa: F401,F403 -elif utils.UI_LAYOUT == "TR": - from .tr.recovery import * # noqa: F401,F403 -elif utils.UI_LAYOUT == "MERCURY": - from .mercury.recovery import * # noqa: F401,F403 +if utils.UI_LAYOUT == "BOLT": + from .bolt.recovery import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "SAMSON": + from .samson.recovery import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "QUICKSILVER": + from .quicksilver.recovery import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/reset.py b/core/src/trezor/ui/layouts/reset.py index d1809535094..491750f8b01 100644 --- a/core/src/trezor/ui/layouts/reset.py +++ b/core/src/trezor/ui/layouts/reset.py @@ -1,8 +1,8 @@ from trezor import utils -if utils.UI_LAYOUT == "TT": - from .tt.reset import * # noqa: F401,F403 -elif utils.UI_LAYOUT == "TR": - from .tr.reset import * # noqa: F401,F403 -elif utils.UI_LAYOUT == "MERCURY": - from .mercury.reset import * # noqa: F401,F403 +if utils.UI_LAYOUT == "BOLT": + from .bolt.reset import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "SAMSON": + from .samson.reset import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "QUICKSILVER": + from .quicksilver.reset import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/samson/__init__.py similarity index 99% rename from core/src/trezor/ui/layouts/tr/__init__.py rename to core/src/trezor/ui/layouts/samson/__init__.py index 807baeac025..5d0ba9691f2 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/samson/__init__.py @@ -61,7 +61,7 @@ def confirm_action( reverse: bool = False, exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_CODE_OTHER, - prompt_screen: bool = False, # unused on TR + prompt_screen: bool = False, # unused on samson prompt_title: str | None = None, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg @@ -118,7 +118,7 @@ def confirm_reset_device( async def show_wallet_created_success() -> None: - # not shown on model R + # not shown on samson UI return None @@ -561,7 +561,7 @@ async def should_show_more( items=para, button=confirm, verb_cancel=verb_cancel, - info_button=button_text, # unused on TR + info_button=button_text, # unused on samson ), br_name, br_code, diff --git a/core/src/trezor/ui/layouts/tr/fido.py b/core/src/trezor/ui/layouts/samson/fido.py similarity index 96% rename from core/src/trezor/ui/layouts/tr/fido.py rename to core/src/trezor/ui/layouts/samson/fido.py index 0d4e60e0f78..1e1357ddf61 100644 --- a/core/src/trezor/ui/layouts/tr/fido.py +++ b/core/src/trezor/ui/layouts/samson/fido.py @@ -8,7 +8,7 @@ async def confirm_fido( header: str, app_name: str, - _icon_name: str | None, # unused on TR + _icon_name: str | None, # unused on samson accounts: list[str | None], ) -> int: """Webauthn confirmation for one or more credentials.""" diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/samson/recovery.py similarity index 99% rename from core/src/trezor/ui/layouts/tr/recovery.py rename to core/src/trezor/ui/layouts/samson/recovery.py index 00cbb04fc20..a522292343c 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/samson/recovery.py @@ -107,7 +107,7 @@ async def continue_recovery( subtext: str | None, recovery_type: RecoveryType, show_instructions: bool = False, - remaining_shares_info: "RemainingSharesInfo | None" = None, # unused on TR + remaining_shares_info: "RemainingSharesInfo | None" = None, # unused on samson ) -> bool: # TODO: implement info_func? # There is very limited space on the screen diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/samson/reset.py similarity index 100% rename from core/src/trezor/ui/layouts/tr/reset.py rename to core/src/trezor/ui/layouts/samson/reset.py diff --git a/core/tools/build_icons.py b/core/tools/build_icons.py index 945ed906f22..b0005b9caea 100755 --- a/core/tools/build_icons.py +++ b/core/tools/build_icons.py @@ -11,9 +11,11 @@ HERE = Path(__file__).resolve().parent ROOT = HERE.parent.parent +L_BOLT = "layout_bolt" +L_QS = "layout_quicksilver" DESTINATIONS = { - ROOT / "core" / "embed" / "rust" / "src" / "ui" / "model_tt" / "res" / "fido": 64, - ROOT / "core" / "embed" / "rust" / "src" / "ui" / "model_mercury" / "res" / "fido": 32, + ROOT / "core" / "embed" / "rust" / "src" / "ui" / L_BOLT / "res" / "fido": 64, + ROOT / "core" / "embed" / "rust" / "src" / "ui" / L_QS / "res" / "fido": 32, } EXCLUDE = {"icon_webauthn"} diff --git a/core/tools/codegen/gen_font.py b/core/tools/codegen/gen_font.py index 311d8536d0b..3641ff53f0f 100755 --- a/core/tools/codegen/gen_font.py +++ b/core/tools/codegen/gen_font.py @@ -483,7 +483,7 @@ def _write_h_file(self) -> None: ).write_files() FaceProcessor("RobotoMono", "Medium", 20).write_files() - # model R + # layout samson FaceProcessor( "PixelOperator", "Regular", @@ -507,7 +507,7 @@ def _write_h_file(self) -> None: # NOTE: Unifont Bold does not seem to have czech characters FaceProcessor("Unifont", "Bold", 16, bpp=1, shaveX=1, ext="otf").write_files() - # model mercury + # layout quicksilver FaceProcessor("TTSatoshi", "DemiBold", 42, ext="otf").write_files() FaceProcessor("TTSatoshi", "DemiBold", 21, ext="otf").write_files() FaceProcessor("TTSatoshi", "DemiBold", 18, ext="otf").write_files() diff --git a/core/tools/snippets/change_icon_format.py b/core/tools/snippets/change_icon_format.py index 0058ed4cc2f..680d9c159f5 100644 --- a/core/tools/snippets/change_icon_format.py +++ b/core/tools/snippets/change_icon_format.py @@ -146,8 +146,8 @@ def change_icon_format(): reformat_c_icons(CORE_DIR / "embed/projects/bootloader_ci") # rust icons - reformat_toif_icons(CORE_DIR / "embed/rust/src/ui/model_tr/res") - reformat_toif_icons(CORE_DIR / "embed/rust/src/ui/model_tt/res") + reformat_toif_icons(CORE_DIR / "embed/rust/src/ui/layout_samson/res") + reformat_toif_icons(CORE_DIR / "embed/rust/src/ui/layout_bolt/res") # python icons reformat_toif_icons(CORE_DIR / "src/trezor/res") diff --git a/docs/core/misc/layout-lifecycle.md b/docs/core/misc/layout-lifecycle.md index 7dc66813c9f..29c04a6a1ec 100644 --- a/docs/core/misc/layout-lifecycle.md +++ b/docs/core/misc/layout-lifecycle.md @@ -139,7 +139,7 @@ which essentially _simulates_ the layout lifecycle, in the following manner: ### Flows -Flow layouts in `mercury` are implemented as a `SwipeFlow` struct, which implements +Flow layouts in `Quicksilver` are implemented as a `SwipeFlow` struct, which implements `Layout` directly. A flow lifecycle works like this: diff --git a/docs/tests/device-tests.md b/docs/tests/device-tests.md index 3165423dc60..652023db816 100644 --- a/docs/tests/device-tests.md +++ b/docs/tests/device-tests.md @@ -119,14 +119,14 @@ Arguments can be a list of internal model names, or one of the following shortcu * `legacy` - just Trezor One * `safe` - Trezor Safe family * `safe3` - Trezor Safe 3 (covers T2B1 and T2T1) -* `mercury` - covers the `mercury` layout (currently T3T1 only) +* `quicksilver` - covers the `quicksilver` UI (currently T3T1 only) You can specify a list as positional arguments, and exclude from it via `skip` keyword argument. You can provide a list of strings, a list of `TrezorModel` instances, or a comma-separated string of model names or shortcuts. -You can specify a skip reason as `reason="TODO implement for Mercury too"`. +You can specify a skip reason as `reason="TODO implement for Quicksilver too"`. [pytest-random-order]: https://pypi.org/project/pytest-random-order/ diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index 11fac1bc22a..d1f89db35fa 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -76,18 +76,18 @@ def __call__( class LayoutType(Enum): T1 = auto() - TT = auto() - TR = auto() - Mercury = auto() + Bolt = auto() + Samson = auto() + Quicksilver = auto() @classmethod def from_model(cls, model: models.TrezorModel) -> "LayoutType": if model in (models.T2T1,): - return cls.TT + return cls.Bolt if model in (models.T2B1, models.T3B1): - return cls.TR + return cls.Samson if model in (models.T3T1,): - return cls.Mercury + return cls.Quicksilver if model in (models.T1B1,): return cls.T1 raise ValueError(f"Unknown model: {model}") diff --git a/tests/buttons.py b/tests/buttons.py index 8de58cfcb90..53e5694800a 100644 --- a/tests/buttons.py +++ b/tests/buttons.py @@ -45,8 +45,8 @@ def _grid34_from_index(idx: int) -> Coords: CONFIRM_WORD = (MID, TOP) TOP_ROW = (MID, TOP) -MERCURY_YES = grid34(2, 2) -MERCURY_NO = grid34(0, 2) +YES_UI_QUICKSILVER = grid34(2, 2) +NO_UI_QUICKSILVER = grid34(0, 2) def reset_minus(model_internal_name: str) -> Coords: diff --git a/tests/click_tests/common.py b/tests/click_tests/common.py index b82384a1ca4..07c67d62733 100644 --- a/tests/click_tests/common.py +++ b/tests/click_tests/common.py @@ -48,31 +48,31 @@ def get_char_category(char: str) -> PassphraseCategory: def go_next(debug: "DebugLink") -> LayoutContent: - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: return debug.click(buttons.OK) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: return debug.press_right() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: return debug.swipe_up() else: raise RuntimeError("Unknown model") def tap_to_confirm(debug: "DebugLink") -> LayoutContent: - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: return debug.read_layout() - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: return debug.read_layout() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: return debug.click(buttons.TAP_TO_CONFIRM) else: raise RuntimeError("Unknown model") def go_back(debug: "DebugLink", r_middle: bool = False) -> LayoutContent: - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): return debug.click(buttons.CANCEL) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: if r_middle: return debug.press_middle() else: @@ -124,11 +124,11 @@ def _carousel_steps(current_index: int, wanted_index: int, length: int) -> int: def unlock_gesture(debug: "DebugLink") -> LayoutContent: - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: return debug.click(buttons.OK) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: return debug.press_right() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: return debug.click(buttons.TAP_TO_CONFIRM) else: raise RuntimeError("Unknown model") diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 602efef1a6d..d2d278cd38b 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -16,15 +16,19 @@ def enter_word( debug: "DebugLink", word: str, is_slip39: bool = False ) -> "LayoutContent": - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): typed_word = word[:4] for coords in buttons.type_word(typed_word, is_slip39=is_slip39): debug.click(coords) - if debug.layout_type is LayoutType.Mercury and not is_slip39 and len(word) > 4: - # T3T1 (mercury) BIP39 keyboard allows to "confirm" only if the word is fully written, you need to click the word to auto-complete + if ( + debug.layout_type is LayoutType.Quicksilver + and not is_slip39 + and len(word) > 4 + ): + # T3T1 (quicksilver) BIP39 keyboard allows to "confirm" only if the word is fully written, you need to click the word to auto-complete debug.click(buttons.CONFIRM_WORD) return debug.click(buttons.CONFIRM_WORD) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: letter_index = 0 layout = debug.read_layout() @@ -49,11 +53,11 @@ def enter_word( def confirm_recovery(debug: "DebugLink", title: str = "recovery__title") -> None: layout = debug.read_layout() assert TR.translate(title) == layout.title() - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: for _ in range(layout.page_count()): debug.press_right() @@ -63,7 +67,7 @@ def select_number_of_words( num_of_words: int = 20, unlock_repeated_backup=False, ) -> None: - def select_tt() -> "LayoutContent": + def select_bolt() -> "LayoutContent": # click the button from ValuePad if unlock_repeated_backup: coords_map = {20: buttons.grid34(0, 2), 33: buttons.grid34(1, 2)} @@ -80,7 +84,7 @@ def select_tt() -> "LayoutContent": raise ValueError("Invalid num_of_words") return debug.click(coords) - def select_tr() -> "LayoutContent": + def select_samson() -> "LayoutContent": # navigate to the number and confirm it word_options = (20, 33) if unlock_repeated_backup else (12, 18, 20, 24, 33) index = word_options.index(num_of_words) @@ -88,10 +92,10 @@ def select_tr() -> "LayoutContent": debug.press_right() return debug.press_middle() - def select_mercury() -> "LayoutContent": + def select_quicksilver() -> "LayoutContent": # click the button from ValuePad if unlock_repeated_backup: - coords_map = {20: buttons.MERCURY_NO, 33: buttons.MERCURY_YES} + coords_map = {20: buttons.NO_UI_QUICKSILVER, 33: buttons.YES_UI_QUICKSILVER} else: coords_map = { 12: buttons.grid34(0, 1), @@ -105,20 +109,20 @@ def select_mercury() -> "LayoutContent": raise ValueError("Invalid num_of_words") return debug.click(coords) - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: assert debug.read_layout().text_content() == TR.recovery__num_of_words - layout = select_tt() - elif debug.layout_type is LayoutType.TR: + layout = select_bolt() + elif debug.layout_type is LayoutType.Samson: layout = debug.press_right() assert layout.title() == TR.word_count__title - layout = select_tr() - elif debug.layout_type is LayoutType.Mercury: - layout = select_mercury() + layout = select_samson() + elif debug.layout_type is LayoutType.Quicksilver: + layout = select_quicksilver() else: raise ValueError("Unknown model") if unlock_repeated_backup: - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: assert TR.recovery__enter_backup in layout.text_content() else: assert ( @@ -146,12 +150,12 @@ def enter_share( is_first: bool = True, before_title: str = "recovery__title_recover", ) -> "LayoutContent": - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: assert TR.translate(before_title) in debug.read_layout().title() layout = debug.read_layout() for _ in range(layout.page_count()): layout = debug.press_right() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: layout = debug.swipe_up() else: assert TR.translate(before_title) in debug.read_layout().title() @@ -228,11 +232,11 @@ def enter_seed_previous_correct( if go_back: go_back = False - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.swipe_right() for _ in range(len(bad_word)): debug.click(buttons.RECOVERY_DELETE) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: layout = debug.read_layout() while layout.get_middle_choice() not in DELETE_BTNS: @@ -243,7 +247,7 @@ def enter_seed_previous_correct( while layout.get_middle_choice() not in DELETE_BTNS: layout = debug.press_left() layout = debug.press_middle() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.click(buttons.RECOVERY_DELETE) # Top-left for _ in range(len(bad_word)): debug.click(buttons.RECOVERY_DELETE) @@ -270,12 +274,12 @@ def prepare_enter_seed( or TR.recovery__enter_each_word in debug.read_layout().text_content() or TR.translate(layout_text) in debug.read_layout().text_content() ) - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() debug.swipe_up() - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_right() debug.press_right() layout = debug.press_right() diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index 4da0618375f..a138c816de8 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -14,28 +14,28 @@ def confirm_new_wallet(debug: "DebugLink") -> None: assert debug.read_layout().title() == TR.reset__title_create_wallet - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() debug.click(buttons.TAP_TO_CONFIRM) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_right() debug.press_right() assert ( TR.backup__new_wallet_successfully_created in debug.read_layout().text_content() or TR.backup__new_wallet_created in debug.read_layout().text_content() ) - if debug.layout_type is LayoutType.Mercury: + if debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() def confirm_read(debug: "DebugLink", middle_r: bool = False) -> None: - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: page_count = debug.read_layout().page_count() if page_count > 1: for _ in range(page_count - 1): @@ -49,30 +49,30 @@ def confirm_read(debug: "DebugLink", middle_r: bool = False) -> None: def cancel_backup( debug: "DebugLink", middle_r: bool = False, confirm: bool = False ) -> None: - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.CANCEL) debug.click(buttons.CANCEL) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.click(buttons.CORNER_BUTTON) debug.click(buttons.VERTICAL_MENU[0]) if confirm: debug.swipe_up() debug.click(buttons.TAP_TO_CONFIRM) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_left() debug.press_left() def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> None: - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): assert "NumberInputDialog" in debug.read_layout().all_components() for _ in range(diff): debug.click(button) - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK) else: debug.swipe_up() - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: layout = debug.read_layout() if ( layout.title() @@ -93,9 +93,9 @@ def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> Non def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: words: list[str] = [] - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: debug.press_right() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() # Swiping through all the pages and loading the words @@ -104,19 +104,19 @@ def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: words.extend(layout.seed_words()) layout = debug.swipe_up() assert layout is not None - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): words.extend(layout.seed_words()) - if debug.layout_type is LayoutType.Mercury: + if debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() # There is hold-to-confirm button if do_htc: - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK, hold_ms=1500) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.click(buttons.TAP_TO_CONFIRM, hold_ms=1500) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_right(hold_ms=1200) else: # It would take a very long time to test 16-of-16 with doing 1500 ms HTC after @@ -127,11 +127,11 @@ def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: def confirm_words(debug: "DebugLink", words: list[str]) -> None: - if debug.layout_type is LayoutType.Mercury: + if debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() layout = debug.read_layout() - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: assert TR.regexp("reset__select_word_x_of_y_template").match( layout.text_content() ) @@ -148,7 +148,7 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: wanted_word = words[word_pos - 1].lower() button_pos = btn_texts.index(wanted_word) layout = debug.click(buttons.RESET_WORD_CHECK[button_pos]) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: assert TR.regexp("reset__select_word_x_of_y_template").match(layout.subtitle()) for _ in range(3): # "Select word 3 of 20" @@ -163,7 +163,7 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: wanted_word = words[word_pos - 1].lower() button_pos = btn_texts.index(wanted_word) layout = debug.click(buttons.VERTICAL_MENU[button_pos]) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: assert TR.reset__select_correct_word in layout.text_content() layout = debug.press_right() for _ in range(3): diff --git a/tests/click_tests/test_autolock.py b/tests/click_tests/test_autolock.py index e841d60f0c2..4cc7740895a 100644 --- a/tests/click_tests/test_autolock.py +++ b/tests/click_tests/test_autolock.py @@ -70,7 +70,7 @@ def set_autolock_delay(device_handler: "BackgroundDeviceHandler", delay_ms: int) ) layout = go_next(debug) - if debug.layout_type is LayoutType.Mercury: + if debug.layout_type is LayoutType.Quicksilver: layout = tap_to_confirm(debug) assert layout.main_component() == "Homescreen" assert device_handler.result() == "Settings applied" @@ -104,17 +104,17 @@ def test_autolock_interrupts_signing(device_handler: "BackgroundDeviceHandler"): in debug.read_layout().text_content().replace(" ", "") ) - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK) layout = debug.click(buttons.OK) assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() layout = debug.swipe_up() assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_right() layout = debug.press_right() assert TR.send__total_amount in layout.text_content() @@ -156,18 +156,18 @@ def test_autolock_does_not_interrupt_signing(device_handler: "BackgroundDeviceHa in debug.read_layout().text_content().replace(" ", "") ) - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK) layout = debug.click(buttons.OK) assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.swipe_up() layout = debug.swipe_up() assert TR.send__total_amount in layout.text_content() assert "0.0039 BTC" in layout.text_content() debug.swipe_up() - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_right() layout = debug.press_right() assert TR.send__total_amount in layout.text_content() @@ -186,11 +186,11 @@ def sleepy_filter(msg: MessageType) -> MessageType: # `sleepy_filter` delays the response by 10 secs while the layout deadlock # timeout is 3. In this test we don't need the result of the input event so # waiting for it is not necessary. - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK, wait=False) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.click(buttons.TAP_TO_CONFIRM, wait=False) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_middle(wait=False) signatures, tx = device_handler.result() @@ -210,20 +210,20 @@ def test_autolock_passphrase_keyboard(device_handler: "BackgroundDeviceHandler") assert "PassphraseKeyboard" in debug.read_layout().all_components() - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: # Going into the selected character category debug.press_middle() # enter passphrase - slowly # keep clicking for long enough to trigger the autolock if it incorrectly ignored key presses for _ in range(math.ceil(11 / 1.5)): - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: # click at "j" debug.click(CENTER_BUTTON) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: # click at "j" debug.click((20, 120)) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: # just go right # NOTE: because of passphrase randomization it would be a pain to input # a specific passphrase, which is not in scope for this test. @@ -231,11 +231,11 @@ def test_autolock_passphrase_keyboard(device_handler: "BackgroundDeviceHandler") time.sleep(1.5) # Send the passphrase to the client (TT has it clicked already, TR needs to input it) - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: debug.click(buttons.OK) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: debug.click(buttons.CORNER_BUTTON) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.input("j" * 8) # address corresponding to "jjjjjjjj" passphrase @@ -252,16 +252,16 @@ def test_autolock_interrupts_passphrase(device_handler: "BackgroundDeviceHandler assert "PassphraseKeyboard" in debug.read_layout().all_components() - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: # Going into the selected character category debug.press_middle() # enter passphrase - slowly # autolock must activate even if we pressed some buttons for _ in range(math.ceil(6 / 1.5)): - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): debug.click(CENTER_BUTTON) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_middle() time.sleep(1.5) @@ -292,7 +292,7 @@ def test_dryrun_locks_at_number_of_words(device_handler: "BackgroundDeviceHandle layout = unlock_dry_run(debug) assert TR.recovery__num_of_words in debug.read_layout().text_content() - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: debug.press_right() # wait for autolock to trigger @@ -326,10 +326,10 @@ def test_dryrun_locks_at_word_entry(device_handler: "BackgroundDeviceHandler"): # select 20 words recovery.select_number_of_words(debug, 20) - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): layout = go_next(debug) assert layout.main_component() == "MnemonicKeyboard" - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: layout = debug.press_right() assert "MnemonicKeyboard" in layout.all_components() @@ -352,7 +352,7 @@ def test_dryrun_enter_word_slowly(device_handler: "BackgroundDeviceHandler"): # select 20 words recovery.select_number_of_words(debug, 20) - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: layout = debug.click(buttons.OK) assert layout.main_component() == "MnemonicKeyboard" @@ -364,7 +364,7 @@ def test_dryrun_enter_word_slowly(device_handler: "BackgroundDeviceHandler"): # should not have locked, even though we took 9 seconds to type each letter assert layout.main_component() == "MnemonicKeyboard" - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: layout = debug.swipe_up() assert layout.main_component() == "MnemonicKeyboard" @@ -376,7 +376,7 @@ def test_dryrun_enter_word_slowly(device_handler: "BackgroundDeviceHandler"): # should not have locked, even though we took 9 seconds to type each letter assert layout.main_component() == "MnemonicKeyboard" - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: layout = debug.press_right() assert "MnemonicKeyboard" in layout.all_components() diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index be01683d075..8318ab5f4b3 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -103,9 +103,9 @@ def test_backup_slip39_custom( all_words.append(" ".join(words)) # confirm backup done - if debug.layout_type is LayoutType.Mercury and share_count > 1: + if debug.layout_type is LayoutType.Quicksilver and share_count > 1: reset.confirm_read(debug) - elif debug.layout_type is not LayoutType.Mercury: + elif debug.layout_type is not LayoutType.Quicksilver: reset.confirm_read(debug) # generate secret locally diff --git a/tests/click_tests/test_lock.py b/tests/click_tests/test_lock.py index 4b719885e66..1b6b2ce0cb9 100644 --- a/tests/click_tests/test_lock.py +++ b/tests/click_tests/test_lock.py @@ -51,7 +51,7 @@ def test_hold_to_lock(device_handler: "BackgroundDeviceHandler"): }[debug.model] def hold(duration: int) -> None: - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: debug.press_right(hold_ms=duration) else: debug.click((13, 37), hold_ms=duration) @@ -78,7 +78,7 @@ def hold(duration: int) -> None: assert device_handler.features().unlocked is False # unlock by touching - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: layout = debug.press_right() else: layout = debug.click(buttons.INFO) diff --git a/tests/click_tests/test_passphrase_tt.py b/tests/click_tests/test_passphrase_bolt.py similarity index 100% rename from tests/click_tests/test_passphrase_tt.py rename to tests/click_tests/test_passphrase_bolt.py diff --git a/tests/click_tests/test_passphrase_mercury.py b/tests/click_tests/test_passphrase_quicksilver.py similarity index 93% rename from tests/click_tests/test_passphrase_mercury.py rename to tests/click_tests/test_passphrase_quicksilver.py index 9bed04da84a..016b5a59d9b 100644 --- a/tests/click_tests/test_passphrase_mercury.py +++ b/tests/click_tests/test_passphrase_quicksilver.py @@ -32,11 +32,11 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = pytest.mark.models("mercury") +pytestmark = pytest.mark.models("quicksilver") PASSPHRASE_CANCELLED = pytest.raises(exceptions.Cancelled, match="") -MERCURY_CATEGORIES = [ +KEYBOARD_CATEGORIES = [ PassphraseCategory.LOWERCASE, PassphraseCategory.UPPERCASE, PassphraseCategory.DIGITS, @@ -51,8 +51,8 @@ # fmt: on # TODO: better read this from the trace -MERCURY_CATEGORY = PassphraseCategory.LOWERCASE -MERCURY_COORDS_PREV: buttons.Coords = (0, 0) +KEYBOARD_CATEGORY = PassphraseCategory.LOWERCASE +COORDS_PREV: buttons.Coords = (0, 0) # Testing the maximum length is really 50 @@ -102,8 +102,8 @@ def prepare_passphrase_dialogue( assert debug.read_layout().main_component() == "PassphraseKeyboard" # Resetting the category as it could have been changed by previous tests - global MERCURY_CATEGORY - MERCURY_CATEGORY = PassphraseCategory.LOWERCASE # type: ignore + global KEYBOARD_CATEGORY + KEYBOARD_CATEGORY = PassphraseCategory.LOWERCASE # type: ignore yield debug @@ -114,29 +114,29 @@ def prepare_passphrase_dialogue( def go_to_category(debug: "DebugLink", category: PassphraseCategory) -> None: """Go to a specific category""" - global MERCURY_CATEGORY - global MERCURY_COORDS_PREV + global KEYBOARD_CATEGORY + global COORDS_PREV # Already there - if MERCURY_CATEGORY == category: + if KEYBOARD_CATEGORY == category: return - current_index = MERCURY_CATEGORIES.index(MERCURY_CATEGORY) - target_index = MERCURY_CATEGORIES.index(category) + current_index = KEYBOARD_CATEGORIES.index(KEYBOARD_CATEGORY) + target_index = KEYBOARD_CATEGORIES.index(category) if target_index > current_index: for _ in range(target_index - current_index): debug.swipe_left() else: for _ in range(current_index - target_index): debug.swipe_right() - MERCURY_CATEGORY = category # type: ignore + KEYBOARD_CATEGORY = category # type: ignore # Category changed, reset coordinates - MERCURY_COORDS_PREV = (0, 0) # type: ignore + COORDS_PREV = (0, 0) # type: ignore def press_char(debug: "DebugLink", char: str) -> None: """Press a character""" - global MERCURY_COORDS_PREV + global COORDS_PREV # Space and couple others are a special case if char in " *#": @@ -149,9 +149,9 @@ def press_char(debug: "DebugLink", char: str) -> None: coords, amount = passphrase(char) # If the button is the same as for the previous char, # waiting a second before pressing it again. - if coords == MERCURY_COORDS_PREV: + if coords == COORDS_PREV: time.sleep(1.1) - MERCURY_COORDS_PREV = coords # type: ignore + COORDS_PREV = coords # type: ignore for _ in range(amount): debug.click(coords) @@ -173,7 +173,7 @@ def enter_passphrase(debug: "DebugLink") -> None: coords = buttons.CORNER_BUTTON # top-right corner debug.click(coords) if is_empty: - debug.click(buttons.MERCURY_YES) + debug.click(buttons.YES_UI_QUICKSILVER) def delete_char(debug: "DebugLink") -> None: diff --git a/tests/click_tests/test_passphrase_tr.py b/tests/click_tests/test_passphrase_samson.py similarity index 100% rename from tests/click_tests/test_passphrase_tr.py rename to tests/click_tests/test_passphrase_samson.py diff --git a/tests/click_tests/test_pin.py b/tests/click_tests/test_pin.py index 48f54c5573f..48a7a3a169e 100644 --- a/tests/click_tests/test_pin.py +++ b/tests/click_tests/test_pin.py @@ -106,9 +106,9 @@ def prepare( TR.pin__turn_on in debug.read_layout().text_content() or TR.pin__info in debug.read_layout().text_content() ) - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): go_next(debug) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: go_next(debug) go_next(debug) go_next(debug) @@ -127,7 +127,7 @@ def prepare( _input_see_confirm(debug, old_pin) assert TR.wipe_code__turn_on in debug.read_layout().text_content() go_next(debug) - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: go_next(debug) go_next(debug) go_next(debug) @@ -137,7 +137,7 @@ def prepare( _assert_pin_entry(debug) yield debug - if debug.layout_type is LayoutType.Mercury and tap: + if debug.layout_type is LayoutType.Quicksilver and tap: go_next(debug) debug.click(buttons.TAP_TO_CONFIRM) else: @@ -155,13 +155,13 @@ def _input_pin(debug: "DebugLink", pin: str, check: bool = False) -> None: if check: before = debug.read_layout().pin() - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): digits_order = debug.read_layout().tt_pin_digits_order() for digit in pin: digit_index = digits_order.index(digit) coords = buttons.pin_passphrase_index(digit_index) debug.click(coords) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: for digit in pin: navigate_to_action_and_press(debug, digit, TR_PIN_ACTIONS) @@ -172,9 +172,9 @@ def _input_pin(debug: "DebugLink", pin: str, check: bool = False) -> None: def _see_pin(debug: "DebugLink") -> None: """Navigate to "SHOW" and press it""" - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): debug.click(buttons.TOP_ROW) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: navigate_to_action_and_press(debug, SHOW, TR_PIN_ACTIONS) @@ -184,9 +184,9 @@ def _delete_pin(debug: "DebugLink", digits_to_delete: int, check: bool = True) - before = debug.read_layout().pin() for _ in range(digits_to_delete): - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): debug.click(buttons.pin_passphrase_grid(9)) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: navigate_to_action_and_press(debug, DELETE, TR_PIN_ACTIONS) if check: @@ -196,9 +196,9 @@ def _delete_pin(debug: "DebugLink", digits_to_delete: int, check: bool = True) - def _delete_all(debug: "DebugLink", check: bool = True) -> None: """Navigate to "DELETE" and hold it until all digits are deleted""" - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): debug.click(buttons.pin_passphrase_grid(9), hold_ms=1500) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: navigate_to_action_and_press(debug, DELETE, TR_PIN_ACTIONS, hold_ms=1000) if check: @@ -215,9 +215,9 @@ def _cancel_pin(debug: "DebugLink") -> None: def _confirm_pin(debug: "DebugLink") -> None: """Navigate to "ENTER" and press it""" - if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): + if debug.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): debug.click(buttons.pin_passphrase_grid(11)) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: navigate_to_action_and_press(debug, ENTER, TR_PIN_ACTIONS) @@ -230,7 +230,7 @@ def _input_see_confirm(debug: "DebugLink", pin: str) -> None: def _enter_two_times(debug: "DebugLink", pin1: str, pin2: str) -> None: _input_see_confirm(debug, pin1) - if debug.layout_type is LayoutType.TR: + if debug.layout_type is LayoutType.Samson: # Please re-enter go_next(debug) @@ -320,13 +320,13 @@ def test_pin_setup(device_handler: "BackgroundDeviceHandler"): def test_pin_setup_mismatch(device_handler: "BackgroundDeviceHandler"): with PIN_CANCELLED, prepare(device_handler, Situation.PIN_SETUP) as debug: _enter_two_times(debug, "1", "2") - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: go_next(debug) _cancel_pin(debug) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: debug.press_middle() debug.press_no() - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: go_next(debug) _cancel_pin(debug) diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index 874ad7a6211..d9752124252 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -91,8 +91,8 @@ def test_reset_slip39_advanced( # debug.read_layout().text_content(), # [ # "reset__slip39_checklist_set_threshold", # basic - # "reset__slip39_checklist_set_num_shares", # advanced (model_tt, mercury) - # "reset__slip39_checklist_num_shares", # advanced (model_tr) + # "reset__slip39_checklist_set_num_shares", # advanced (UI bolt and quicksilver) + # "reset__slip39_checklist_num_shares", # advanced (UI samson) # ], # ) reset.confirm_read(debug) diff --git a/tests/click_tests/test_tutorial_mercury.py b/tests/click_tests/test_tutorial_quicksilver.py similarity index 99% rename from tests/click_tests/test_tutorial_mercury.py rename to tests/click_tests/test_tutorial_quicksilver.py index 987b32b48c7..f1b0cd1d94f 100644 --- a/tests/click_tests/test_tutorial_mercury.py +++ b/tests/click_tests/test_tutorial_quicksilver.py @@ -29,7 +29,7 @@ # Trezor Safe 5 only pytestmark = [ - pytest.mark.models("mercury"), + pytest.mark.models("quicksilver"), pytest.mark.setup_client(uninitialized=True), ] diff --git a/tests/click_tests/test_tutorial_tr.py b/tests/click_tests/test_tutorial_samson.py similarity index 100% rename from tests/click_tests/test_tutorial_tr.py rename to tests/click_tests/test_tutorial_samson.py diff --git a/tests/common.py b/tests/common.py index bff33da790c..7d5f6fb069f 100644 --- a/tests/common.py +++ b/tests/common.py @@ -207,12 +207,12 @@ def input_flow(): mnemonic = yield from read_and_confirm_mnemonic(client.debug) """ - if debug.layout_type is LayoutType.TT: - mnemonic = yield from read_mnemonic_from_screen_tt(debug) - elif debug.layout_type is LayoutType.TR: - mnemonic = yield from read_mnemonic_from_screen_tr(debug) - elif debug.layout_type is LayoutType.Mercury: - mnemonic = yield from read_mnemonic_from_screen_mercury(debug) + if debug.layout_type is LayoutType.Bolt: + mnemonic = yield from read_mnemonic_from_screen_bolt(debug) + elif debug.layout_type is LayoutType.Samson: + mnemonic = yield from read_mnemonic_from_screen_samson(debug) + elif debug.layout_type is LayoutType.Quicksilver: + mnemonic = yield from read_mnemonic_from_screen_quicksilver(debug) else: raise ValueError(f"Unknown model: {debug.layout_type}") @@ -221,7 +221,7 @@ def input_flow(): return " ".join(mnemonic) -def read_mnemonic_from_screen_tt( +def read_mnemonic_from_screen_bolt( debug: "DebugLink", ) -> Generator[None, "ButtonRequest", list[str]]: mnemonic: list[str] = [] @@ -239,7 +239,7 @@ def read_mnemonic_from_screen_tt( return mnemonic -def read_mnemonic_from_screen_tr( +def read_mnemonic_from_screen_samson( debug: "DebugLink", ) -> Generator[None, "ButtonRequest", list[str]]: mnemonic: list[str] = [] @@ -259,7 +259,7 @@ def read_mnemonic_from_screen_tr( return mnemonic -def read_mnemonic_from_screen_mercury( +def read_mnemonic_from_screen_quicksilver( debug: "DebugLink", ) -> Generator[None, "ButtonRequest", list[str]]: mnemonic: list[str] = [] @@ -289,15 +289,15 @@ def check_share( """ re_num_of_word = r"\d+" for _ in range(3): - if debug.layout_type is LayoutType.TT: + if debug.layout_type is LayoutType.Bolt: # T2T1 has position as the first number in the text word_pos_match = re.search( re_num_of_word, debug.read_layout().text_content() ) - elif debug.layout_type is LayoutType.TR: + elif debug.layout_type is LayoutType.Samson: # other models have the instruction in the title/subtitle word_pos_match = re.search(re_num_of_word, debug.read_layout().title()) - elif debug.layout_type is LayoutType.Mercury: + elif debug.layout_type is LayoutType.Quicksilver: word_pos_match = re.search(re_num_of_word, debug.read_layout().subtitle()) else: word_pos_match = None @@ -315,14 +315,14 @@ def check_share( return True -def click_info_button_tt(debug: "DebugLink") -> Generator[Any, Any, ButtonRequest]: +def click_info_button_bolt(debug: "DebugLink") -> Generator[Any, Any, ButtonRequest]: """Click Shamir backup info button and return back.""" debug.press_info() debug.press_yes() return (yield) -def click_info_button_mercury(debug: "DebugLink"): +def click_info_button_quicksilver(debug: "DebugLink"): """Click Shamir backup info button and return back.""" layout = debug.click(buttons.CORNER_BUTTON) assert "VerticalMenu" in layout.all_components() diff --git a/tests/conftest.py b/tests/conftest.py index c78c9a766f6..5c025889192 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -184,7 +184,7 @@ class ModelsFilter: "safe": {models.T2B1, models.T3T1, models.T3B1}, "safe3": {models.T2B1, models.T3B1}, "safe5": {models.T3T1}, - "mercury": {models.T3T1}, + "quicksilver": {models.T3T1}, } def __init__(self, node: Node) -> None: diff --git a/tests/device_tests/bitcoin/test_signmessage.py b/tests/device_tests/bitcoin/test_signmessage.py index 2e1cab3eda3..23a6be1536d 100644 --- a/tests/device_tests/bitcoin/test_signmessage.py +++ b/tests/device_tests/bitcoin/test_signmessage.py @@ -365,7 +365,7 @@ def test_signmessage_pagination(client: Client, message: str): # We cannot differentiate between a newline and space in the message read from Trezor. # TODO: do the check also for T2B1 - if client.layout_type in (LayoutType.TT, LayoutType.Mercury): + if client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): message_read = IF.message_read.replace(" ", "").replace("...", "") signed_message = message.replace("\n", "").replace(" ", "") assert signed_message in message_read diff --git a/tests/device_tests/bitcoin/test_signtx.py b/tests/device_tests/bitcoin/test_signtx.py index 96fc4edc691..49cfdf6ec02 100644 --- a/tests/device_tests/bitcoin/test_signtx.py +++ b/tests/device_tests/bitcoin/test_signtx.py @@ -1615,8 +1615,8 @@ def test_information_cancel(client: Client): @pytest.mark.models( "core", - skip="mercury", - reason="Cannot test layouts on T1, not implemented in mercury UI", + skip="quicksilver", + reason="Cannot test layouts on T1, not implemented in Quicksilver UI", ) def test_information_replacement(client: Client): # Use the change output and an external output to bump the fee. diff --git a/tests/device_tests/cardano/test_sign_tx.py b/tests/device_tests/cardano/test_sign_tx.py index 447b2596d10..6c953aeb72b 100644 --- a/tests/device_tests/cardano/test_sign_tx.py +++ b/tests/device_tests/cardano/test_sign_tx.py @@ -34,14 +34,14 @@ def show_details_input_flow(client: Client): yield client.debug.read_layout() - if client.layout_type is LayoutType.TT: + if client.layout_type is LayoutType.Bolt: SHOW_ALL_BUTTON_POSITION = (143, 167) client.debug.click(SHOW_ALL_BUTTON_POSITION) - elif client.layout_type is LayoutType.TR: - # model R - right button for "Show all" + elif client.layout_type is LayoutType.Samson: + # samson - right button for "Show all" client.debug.press_yes() - elif client.layout_type is LayoutType.Mercury: - # mercury - "Show all" button from context menu + elif client.layout_type is LayoutType.Quicksilver: + # quicksilver - "Show all" button from context menu client.debug.click(buttons.CORNER_BUTTON) client.debug.click(buttons.VERTICAL_MENU[0]) else: diff --git a/tests/device_tests/ethereum/test_sign_typed_data.py b/tests/device_tests/ethereum/test_sign_typed_data.py index 14dda4bdbe0..d959b137f83 100644 --- a/tests/device_tests/ethereum/test_sign_typed_data.py +++ b/tests/device_tests/ethereum/test_sign_typed_data.py @@ -95,7 +95,7 @@ def test_ethereum_sign_typed_data_blind(client: Client, parameters, result): } -@pytest.mark.models("core", skip="mercury", reason="Not yet implemented in new UI") +@pytest.mark.models("core", skip="quicksilver", reason="Not yet implemented in new UI") def test_ethereum_sign_typed_data_show_more_button(client: Client): with client: client.watch_layout() diff --git a/tests/device_tests/ethereum/test_signtx.py b/tests/device_tests/ethereum/test_signtx.py index a550322dbd0..bf1a3fb6a14 100644 --- a/tests/device_tests/ethereum/test_signtx.py +++ b/tests/device_tests/ethereum/test_signtx.py @@ -132,8 +132,8 @@ def test_signtx_fee_info(client: Client): @pytest.mark.models( "core", - skip="mercury", - reason="T1 does not support input flows; Mercury can't send Cancel on Summary", + skip="quicksilver", + reason="T1 does not support input flows; Quicksilver can't send Cancel on Summary", ) def test_signtx_go_back_from_summary(client: Client): input_flow = InputFlowEthereumSignTxGoBackFromSummary(client).get() @@ -442,7 +442,7 @@ def input_flow_data_go_back(client: Client, cancel: bool = False): @pytest.mark.parametrize( "flow", (input_flow_data_skip, input_flow_data_scroll_down, input_flow_data_go_back) ) -@pytest.mark.models("core", skip="mercury", reason="Not yet implemented in new UI") +@pytest.mark.models("core", skip="quicksilver", reason="Not yet implemented in new UI") def test_signtx_data_pagination(client: Client, flow): def _sign_tx_call(): ethereum.sign_tx( diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py index b6dee0bfdb2..56f3f8f12b9 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py @@ -202,7 +202,7 @@ def test_failed_pin(client: Client): ret = client.call_raw(messages.ButtonAck()) # Re-enter PIN for TR - if client.layout_type is LayoutType.TR: + if client.layout_type is LayoutType.Samson: assert isinstance(ret, messages.ButtonRequest) client.debug.press_yes() ret = client.call_raw(messages.ButtonAck()) diff --git a/tests/device_tests/test_msg_backup_device.py b/tests/device_tests/test_msg_backup_device.py index 876d3ea18c4..6c2ccf4245b 100644 --- a/tests/device_tests/test_msg_backup_device.py +++ b/tests/device_tests/test_msg_backup_device.py @@ -66,7 +66,7 @@ def test_backup_bip39(client: Client): "click_info", [True, False], ids=["click_info", "no_click_info"] ) def test_backup_slip39_basic(client: Client, click_info: bool): - if click_info and client.layout_type is LayoutType.TR: + if click_info and client.layout_type is LayoutType.Samson: pytest.skip("click_info not implemented on T2B1") assert client.features.backup_availability == messages.BackupAvailability.Required @@ -97,7 +97,7 @@ def test_backup_slip39_single(client: Client): with client: IF = InputFlowBip39Backup( - client, confirm_success=(client.layout_type is not LayoutType.Mercury) + client, confirm_success=(client.layout_type is not LayoutType.Quicksilver) ) client.set_input_flow(IF.get()) device.backup(client) @@ -122,7 +122,7 @@ def test_backup_slip39_single(client: Client): "click_info", [True, False], ids=["click_info", "no_click_info"] ) def test_backup_slip39_advanced(client: Client, click_info: bool): - if click_info and client.layout_type is LayoutType.TR: + if click_info and client.layout_type is LayoutType.Samson: pytest.skip("click_info not implemented on T2B1") assert client.features.backup_availability == messages.BackupAvailability.Required diff --git a/tests/device_tests/test_msg_change_wipe_code_t2.py b/tests/device_tests/test_msg_change_wipe_code_t2.py index 27ca3922b53..47615b19327 100644 --- a/tests/device_tests/test_msg_change_wipe_code_t2.py +++ b/tests/device_tests/test_msg_change_wipe_code_t2.py @@ -39,7 +39,7 @@ def _check_wipe_code(client: Client, pin: str, wipe_code: str): # Try to change the PIN to the current wipe code value. The operation should fail. with client, pytest.raises(TrezorFailure): client.use_pin_sequence([pin, wipe_code, wipe_code]) - if client.layout_type is LayoutType.TR: + if client.layout_type is LayoutType.Samson: br_count = 6 else: br_count = 5 @@ -66,7 +66,7 @@ def test_set_remove_wipe_code(client: Client): _ensure_unlocked(client, PIN4) assert client.features.wipe_code_protection is False - if client.layout_type is LayoutType.TR: + if client.layout_type is LayoutType.Samson: br_count = 6 else: br_count = 5 @@ -125,7 +125,7 @@ def test_set_wipe_code_to_pin(client: Client): _ensure_unlocked(client, PIN4) with client: - if client.layout_type is LayoutType.TR: + if client.layout_type is LayoutType.Samson: br_count = 8 else: br_count = 7 @@ -144,7 +144,7 @@ def test_set_wipe_code_to_pin(client: Client): def test_set_pin_to_wipe_code(client: Client): # Set wipe code. with client: - if client.layout_type is LayoutType.TR: + if client.layout_type is LayoutType.Samson: br_count = 5 else: br_count = 4 @@ -157,7 +157,7 @@ def test_set_pin_to_wipe_code(client: Client): # Try to set the PIN to the current wipe code value. with client, pytest.raises(TrezorFailure): - if client.layout_type is LayoutType.TR: + if client.layout_type is LayoutType.Samson: br_count = 6 else: br_count = 4 diff --git a/tests/device_tests/test_msg_changepin_t2.py b/tests/device_tests/test_msg_changepin_t2.py index 023a5821f56..033364b4bec 100644 --- a/tests/device_tests/test_msg_changepin_t2.py +++ b/tests/device_tests/test_msg_changepin_t2.py @@ -64,7 +64,7 @@ def test_set_pin(client: Client): # Let's set new PIN with client: - if client.layout_type is LayoutType.TR: + if client.layout_type is LayoutType.Samson: br_count = 6 else: br_count = 4 @@ -89,7 +89,7 @@ def test_change_pin(client: Client): # Let's change PIN with client: client.use_pin_sequence([PIN4, PIN_MAX, PIN_MAX]) - if client.layout_type is LayoutType.TR: + if client.layout_type is LayoutType.Samson: br_count = 6 else: br_count = 5 @@ -182,7 +182,7 @@ def test_change_invalid_current(client: Client): _check_pin(client, PIN4) -@pytest.mark.models("mercury") +@pytest.mark.models("quicksilver") @pytest.mark.setup_client(pin=None) def test_pin_menu_cancel_setup(client: Client): def cancel_pin_setup_input_flow(): diff --git a/tests/device_tests/test_protection_levels.py b/tests/device_tests/test_protection_levels.py index 22ffb13b7f9..9176df30512 100644 --- a/tests/device_tests/test_protection_levels.py +++ b/tests/device_tests/test_protection_levels.py @@ -140,7 +140,7 @@ def test_change_pin_t2(client: Client): messages.ButtonRequest, _pin_request(client), _pin_request(client), - (client.layout_type is LayoutType.TR, messages.ButtonRequest), + (client.layout_type is LayoutType.Samson, messages.ButtonRequest), _pin_request(client), messages.ButtonRequest, messages.Success, diff --git a/tests/device_tests/test_session_id_and_passphrase.py b/tests/device_tests/test_session_id_and_passphrase.py index 1bb9cbd70a8..d9a6883b12c 100644 --- a/tests/device_tests/test_session_id_and_passphrase.py +++ b/tests/device_tests/test_session_id_and_passphrase.py @@ -399,9 +399,9 @@ def input_flow(): yield content = client.debug.read_layout().text_content().lower() assert TR.passphrase__from_host_not_shown[:50].lower() in content - if client.layout_type in (LayoutType.TT, LayoutType.Mercury): + if client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): client.debug.press_yes() - elif client.layout_type is LayoutType.TR: + elif client.layout_type is LayoutType.Samson: client.debug.press_right() client.debug.press_right() client.debug.press_yes() diff --git a/tests/input_flows.py b/tests/input_flows.py index 5036efcd767..2609cada306 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -24,8 +24,8 @@ from .common import ( BRGeneratorType, check_pin_backoff_time, - click_info_button_mercury, - click_info_button_tt, + click_info_button_bolt, + click_info_button_quicksilver, click_through, get_text_possible_pagination, read_and_confirm_mnemonic, @@ -51,24 +51,24 @@ def get(self) -> Callable[[], BRGeneratorType]: # There could be one common input flow for all models if hasattr(self, "input_flow_common"): return getattr(self, "input_flow_common") - elif self.client.layout_type is LayoutType.TT: - return self.input_flow_tt - elif self.client.layout_type is LayoutType.TR: - return self.input_flow_tr - elif self.client.layout_type is LayoutType.Mercury: - return self.input_flow_t3t1 + elif self.client.layout_type is LayoutType.Bolt: + return self.input_flow_bolt + elif self.client.layout_type is LayoutType.Samson: + return self.input_flow_samson + elif self.client.layout_type is LayoutType.Quicksilver: + return self.input_flow_quicksilver else: raise ValueError("Unknown model") - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: """Special for TT""" raise NotImplementedError - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: """Special for TR""" raise NotImplementedError - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: """Special for T3T1""" raise NotImplementedError @@ -102,7 +102,7 @@ def input_flow_common(self) -> BRGeneratorType: assert (yield).name == f"set_{self.what}" self.debug.press_yes() - if self.client.layout_type is LayoutType.TR: + if self.client.layout_type is LayoutType.Samson: layout = self.debug.read_layout() if "PinKeyboard" not in layout.all_components(): yield from swipe_if_necessary(self.debug) # code info @@ -189,7 +189,7 @@ def __init__(self, client: Client): super().__init__(client) self.message_read = "" - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: # collect screen contents into `message_read`. # Using a helper debuglink function to assemble the final text. layouts: list[LayoutContent] = [] @@ -211,14 +211,14 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: # confirm address yield self.debug.press_yes() # paginate through the whole message br = yield - # TODO: try load the message_read the same way as in model T + # TODO: try load the message_read the same way as in UI bolt (T) if br.pages is not None: for i in range(br.pages): if i < br.pages - 1: @@ -229,7 +229,7 @@ def input_flow_tr(self) -> BRGeneratorType: yield self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: # collect screen contents into `message_read`. # Using a helper debuglink function to assemble the final text. layouts: list[LayoutContent] = [] @@ -256,7 +256,7 @@ class InputFlowSignMessageInfo(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: yield # signing address/message info self.debug.click(buttons.CORNER_BUTTON) @@ -275,7 +275,7 @@ def input_flow_tt(self) -> BRGeneratorType: # address mismatch? self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: yield # show address/message info self.debug.click(buttons.CORNER_BUTTON) @@ -291,7 +291,7 @@ class InputFlowShowAddressQRCode(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: yield self.debug.click(buttons.CORNER_BUTTON) # synchronize; TODO get rid of this once we have single-global-layout @@ -305,7 +305,7 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.press_no() self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: # Find out the page-length of the address br = yield if br.pages is not None: @@ -326,7 +326,7 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_right() self.debug.press_middle() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: yield self.debug.click(buttons.CORNER_BUTTON) # synchronize; TODO get rid of this once we have single-global-layout @@ -360,7 +360,7 @@ class InputFlowShowAddressQRCodeCancel(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: yield self.debug.click(buttons.CORNER_BUTTON) # synchronize; TODO get rid of this once we have single-global-layout @@ -371,7 +371,7 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.press_no() self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: yield # Go into details self.debug.press_right() @@ -386,7 +386,7 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_right() self.debug.press_right() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: yield self.debug.click(buttons.CORNER_BUTTON) # synchronize; TODO get rid of this once we have single-global-layout @@ -424,7 +424,7 @@ def _assert_xpub_title(self, title: str, xpub_num: int) -> None: else: assert TR.address__title_cosigner in title - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: yield # multisig address warning self.debug.press_yes() @@ -457,7 +457,7 @@ def input_flow_tt(self) -> BRGeneratorType: # show address self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: yield # multisig address warning self.debug.press_middle() @@ -496,7 +496,7 @@ def input_flow_tr(self) -> BRGeneratorType: # show address self.debug.press_middle() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: yield # multisig address warning self.debug.click(buttons.CORNER_BUTTON) self.debug.synchronize_at("VerticalMenu") @@ -553,7 +553,7 @@ def __init__(self, client: Client, passphrase: bool = False): super().__init__(client) self.passphrase = passphrase - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: if self.passphrase: yield self.debug.press_yes() @@ -580,7 +580,7 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.swipe_up() self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: if self.passphrase: yield self.debug.press_right() @@ -607,7 +607,7 @@ def input_flow_tr(self) -> BRGeneratorType: # Confirm self.debug.press_middle() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: if self.passphrase: yield self.debug.press_yes() @@ -663,7 +663,7 @@ def __init__(self, client: Client, outputs: list[messages.TxOutputType]): super().__init__(client) self.outputs = outputs - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: yield # request to see details self.debug.read_layout() self.debug.press_info() @@ -687,7 +687,7 @@ def input_flow_tt(self) -> BRGeneratorType: yield # confirm transaction self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: yield # request to see details self.debug.read_layout() self.debug.press_info() @@ -724,7 +724,7 @@ def go_through_all_screens(self, screens: list[B]) -> BRGeneratorType: self.finished = True - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: screens = [ B.ConfirmOutput, B.ConfirmOutput, @@ -733,7 +733,7 @@ def input_flow_tt(self) -> BRGeneratorType: ] yield from self.go_through_all_screens(screens) - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: screens = [ B.ConfirmOutput, B.ConfirmOutput, @@ -742,7 +742,7 @@ def input_flow_tr(self) -> BRGeneratorType: ] yield from self.go_through_all_screens(screens) - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: screens = [ B.ConfirmOutput, B.ConfirmOutput, @@ -856,18 +856,18 @@ def assert_content(self, content: str, title_path: str) -> None: assert TR.confirm_total__fee_rate in content assert "71.56 sat" in content - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: content = yield from sign_tx_go_to_info(self.client) self.assert_content(content, "confirm_total__sending_from_account") self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: content = yield from sign_tx_go_to_info_tr(self.client) print("content", content) self.assert_content(content, "confirm_total__title_sending_from") self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: content = yield from sign_tx_go_to_info_t3t1(self.client) self.assert_content(content, "confirm_total__sending_from_account") self.debug.swipe_up() @@ -884,7 +884,7 @@ def assert_content(self, content: str, title_path: str) -> None: assert TR.confirm_total__fee_rate in content assert "18.33 sat" in content - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: # multiple accounts warning yield self.debug.press_yes() @@ -893,7 +893,7 @@ def input_flow_tt(self) -> BRGeneratorType: self.assert_content(content, "confirm_total__sending_from_account") self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: # multiple accounts warning yield self.debug.press_yes() @@ -902,7 +902,7 @@ def input_flow_tr(self) -> BRGeneratorType: self.assert_content(content, "confirm_total__title_sending_from") self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: content = yield from sign_tx_go_to_info_t3t1(self.client, multi_account=True) self.assert_content(content, "confirm_total__sending_from_account") self.debug.swipe_up() @@ -913,15 +913,15 @@ class InputFlowSignTxInformationCancel(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: yield from sign_tx_go_to_info(self.client) self.debug.press_no() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: yield from sign_tx_go_to_info_tr(self.client) self.debug.press_left() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: yield from sign_tx_go_to_info_t3t1(self.client) self.debug.click(buttons.CORNER_BUTTON) self.debug.click(buttons.VERTICAL_MENU[2]) @@ -933,7 +933,7 @@ class InputFlowSignTxInformationReplacement(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: yield # confirm txid self.debug.press_yes() yield # confirm address @@ -951,7 +951,7 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.click(buttons.CORNER_BUTTON) self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: yield # confirm txid self.debug.press_right() self.debug.press_right() @@ -965,10 +965,10 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_right() self.debug.press_right() - input_flow_t3t1 = input_flow_tt + input_flow_quicksilver = input_flow_bolt -def lock_time_input_flow_tt( +def lock_time_input_flow_bolt( debug: DebugLink, layout_assert_func: Callable[[DebugLink, messages.ButtonRequest], None], double_confirm: bool = False, @@ -991,7 +991,7 @@ def lock_time_input_flow_tt( debug.press_yes() -def lock_time_input_flow_tr( +def lock_time_input_flow_samson( debug: DebugLink, layout_assert_func: Callable[[DebugLink, messages.ButtonRequest], None], ) -> BRGeneratorType: @@ -1010,7 +1010,7 @@ def lock_time_input_flow_tr( debug.press_yes() -def lock_time_input_flow_t3t1( +def lock_time_input_flow_quicksilver( debug: DebugLink, layout_assert_func: Callable[[DebugLink, messages.ButtonRequest], None], double_confirm: bool = False, @@ -1044,16 +1044,16 @@ def assert_func(self, debug: DebugLink, br: messages.ButtonRequest) -> None: assert TR.bitcoin__locktime_set_to_blockheight in layout_text assert self.block_height in layout_text - def input_flow_tt(self) -> BRGeneratorType: - yield from lock_time_input_flow_tt( + def input_flow_bolt(self) -> BRGeneratorType: + yield from lock_time_input_flow_bolt( self.debug, self.assert_func, double_confirm=True ) - def input_flow_tr(self) -> BRGeneratorType: - yield from lock_time_input_flow_tr(self.debug, self.assert_func) + def input_flow_samson(self) -> BRGeneratorType: + yield from lock_time_input_flow_samson(self.debug, self.assert_func) - def input_flow_t3t1(self) -> BRGeneratorType: - yield from lock_time_input_flow_t3t1( + def input_flow_quicksilver(self) -> BRGeneratorType: + yield from lock_time_input_flow_quicksilver( self.debug, self.assert_func, double_confirm=True ) @@ -1068,14 +1068,14 @@ def assert_func(self, debug: DebugLink, br: messages.ButtonRequest) -> None: assert TR.bitcoin__locktime_set_to in layout_text assert self.lock_time_str.replace(" ", "") in layout_text.replace(" ", "") - def input_flow_tt(self) -> BRGeneratorType: - yield from lock_time_input_flow_tt(self.debug, self.assert_func) + def input_flow_bolt(self) -> BRGeneratorType: + yield from lock_time_input_flow_bolt(self.debug, self.assert_func) - def input_flow_tr(self) -> BRGeneratorType: - yield from lock_time_input_flow_tr(self.debug, self.assert_func) + def input_flow_samson(self) -> BRGeneratorType: + yield from lock_time_input_flow_samson(self.debug, self.assert_func) - def input_flow_t3t1(self) -> BRGeneratorType: - yield from lock_time_input_flow_t3t1(self.debug, self.assert_func) + def input_flow_quicksilver(self) -> BRGeneratorType: + yield from lock_time_input_flow_quicksilver(self.debug, self.assert_func) class InputFlowEIP712ShowMore(InputFlowBase): @@ -1087,9 +1087,9 @@ def __init__(self, client: Client): def _confirm_show_more(self) -> None: """Model-specific, either clicks a screen or presses a button.""" - if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): self.debug.click(self.SHOW_MORE) - elif self.client.layout_type is LayoutType.TR: + elif self.client.layout_type is LayoutType.Samson: self.debug.press_right() else: raise NotImplementedError @@ -1224,7 +1224,7 @@ def get_mnemonic( mnemonic = yield from read_and_confirm_mnemonic(debug) is_slip39 = len(mnemonic.split()) in (20, 33) - if debug.layout_type in (LayoutType.TT, LayoutType.TR) or is_slip39: + if debug.layout_type in (LayoutType.Bolt, LayoutType.Samson) or is_slip39: br = yield # confirm recovery share check assert br.code == B.Success debug.press_yes() @@ -1260,7 +1260,7 @@ def __init__(self, client: Client): self.mnemonic = None # NOTE: same as above, just two more YES - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed # 3. Backup intro @@ -1270,7 +1270,7 @@ def input_flow_tt(self) -> BRGeneratorType: # mnemonic phrases and rest self.mnemonic = yield from get_mnemonic(self.debug) - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed # 3. Backup intro @@ -1280,7 +1280,7 @@ def input_flow_tr(self) -> BRGeneratorType: # mnemonic phrases and rest self.mnemonic = yield from get_mnemonic(self.debug) - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Wallet created # 3. Backup your seed @@ -1304,7 +1304,7 @@ def input_flow_common(self) -> BRGeneratorType: yield from self.PIN.setup_new_pin("654") - if self.debug.layout_type is LayoutType.Mercury: + if self.debug.layout_type is LayoutType.Quicksilver: br = yield # Wallet created assert br.code == B.ResetDevice self.debug.press_yes() @@ -1339,7 +1339,7 @@ def __init__(self, client: Client): self.mnemonic = None def input_flow_common(self) -> BRGeneratorType: - screens = 5 if self.debug.layout_type is LayoutType.Mercury else 4 + screens = 5 if self.debug.layout_type is LayoutType.Quicksilver else 4 # 1. Confirm Reset # 1a. (T3T1) Walet Creation done # 2. Confirm backup prompt @@ -1394,7 +1394,7 @@ def __init__(self, client: Client, click_info: bool, repeated: bool = False): self.click_info = click_info self.repeated = repeated - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: if self.repeated: assert (yield).name == "confirm_repeated_backup" self.debug.press_yes() @@ -1405,14 +1405,14 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.press_yes() assert (yield).name == "slip39_shares" if self.click_info: - br = yield from click_info_button_tt(self.debug) + br = yield from click_info_button_bolt(self.debug) assert br.name == "slip39_shares" self.debug.press_yes() assert (yield).name == "slip39_checklist" self.debug.press_yes() assert (yield).name == "slip39_threshold" if self.click_info: - br = yield from click_info_button_tt(self.debug) + br = yield from click_info_button_bolt(self.debug) assert br.name == "slip39_threshold" self.debug.press_yes() assert (yield).name == "slip39_checklist" @@ -1427,7 +1427,7 @@ def input_flow_tt(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: if self.repeated: # intro confirmation screen yield @@ -1459,7 +1459,7 @@ def input_flow_tr(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: if self.repeated: # intro confirmation screen assert (yield).name == "confirm_repeated_backup" @@ -1471,13 +1471,13 @@ def input_flow_t3t1(self) -> BRGeneratorType: self.debug.swipe_up() assert (yield).name == "slip39_shares" if self.click_info: - click_info_button_mercury(self.debug) + click_info_button_quicksilver(self.debug) self.debug.swipe_up() assert (yield).name == "slip39_checklist" self.debug.swipe_up() assert (yield).name == "slip39_threshold" if self.click_info: - click_info_button_mercury(self.debug) + click_info_button_quicksilver(self.debug) self.debug.swipe_up() assert (yield).name == "slip39_checklist" self.debug.swipe_up() @@ -1497,7 +1497,7 @@ def __init__(self, client: Client): super().__init__(client) self.mnemonics: list[str] = [] - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed # 3. Backup intro @@ -1516,7 +1516,7 @@ def input_flow_tt(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: yield # Confirm Reset self.debug.press_yes() yield # Backup your seed @@ -1547,7 +1547,7 @@ def input_flow_tr(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Wallet Created # 3. Backup your seed @@ -1575,7 +1575,7 @@ def __init__(self, client: Client, share_count: int, repeated: bool = False): self.share_count = share_count self.repeated = repeated - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: if self.repeated: yield self.debug.press_yes() @@ -1597,7 +1597,7 @@ def input_flow_tt(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: if self.repeated: yield self.debug.press_yes() @@ -1619,7 +1619,7 @@ def input_flow_tr(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: if self.repeated: yield self.debug.press_yes() @@ -1666,21 +1666,21 @@ def __init__(self, client: Client, click_info: bool): self.mnemonics: list[str] = [] self.click_info = click_info - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: assert (yield).name == "backup_intro" self.debug.press_yes() assert (yield).name == "slip39_checklist" self.debug.press_yes() assert (yield).name == "slip39_groups" if self.click_info: - br = yield from click_info_button_tt(self.debug) + br = yield from click_info_button_bolt(self.debug) assert br.name == "slip39_groups" self.debug.press_yes() assert (yield).name == "slip39_checklist" self.debug.press_yes() assert (yield).name == "slip39_group_threshold" if self.click_info: - br = yield from click_info_button_tt(self.debug) + br = yield from click_info_button_bolt(self.debug) assert br.name == "slip39_group_threshold" self.debug.press_yes() assert (yield).name == "slip39_checklist" @@ -1688,12 +1688,12 @@ def input_flow_tt(self) -> BRGeneratorType: for _ in range(5): # for each of 5 groups assert (yield).name == "slip39_shares" if self.click_info: - br = yield from click_info_button_tt(self.debug) + br = yield from click_info_button_bolt(self.debug) assert br.name == "slip39_shares" self.debug.press_yes() assert (yield).name == "slip39_threshold" if self.click_info: - br = yield from click_info_button_tt(self.debug) + br = yield from click_info_button_bolt(self.debug) assert br.name == "slip39_threshold" self.debug.press_yes() assert (yield).name == "backup_warning" @@ -1706,7 +1706,7 @@ def input_flow_tt(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: yield # 1. Backup intro self.debug.press_yes() yield # 2. Checklist @@ -1738,31 +1738,31 @@ def input_flow_tr(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: assert (yield).name == "backup_intro" self.debug.swipe_up() assert (yield).name == "slip39_checklist" self.debug.swipe_up() assert (yield).name == "slip39_groups" if self.click_info: - click_info_button_mercury(self.debug) + click_info_button_quicksilver(self.debug) self.debug.swipe_up() assert (yield).name == "slip39_checklist" self.debug.swipe_up() assert (yield).name == "slip39_group_threshold" if self.click_info: - click_info_button_mercury(self.debug) + click_info_button_quicksilver(self.debug) self.debug.swipe_up() assert (yield).name == "slip39_checklist" self.debug.swipe_up() for _i in range(5): # for each of 5 groups assert (yield).name == "slip39_shares" if self.click_info: - click_info_button_mercury(self.debug) + click_info_button_quicksilver(self.debug) self.debug.swipe_up() assert (yield).name == "slip39_threshold" if self.click_info: - click_info_button_mercury(self.debug) + click_info_button_quicksilver(self.debug) self.debug.swipe_up() assert (yield).name == "backup_warning" self.debug.press_yes() @@ -1781,7 +1781,7 @@ def __init__(self, client: Client, click_info: bool): self.mnemonics: list[str] = [] self.click_info = click_info - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed # 3. Backup intro @@ -1803,7 +1803,7 @@ def input_flow_tt(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: yield # Wallet backup self.debug.press_yes() yield # Wallet creation @@ -1839,7 +1839,7 @@ def input_flow_tr(self) -> BRGeneratorType: assert br.code == B.Success self.debug.press_yes() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Wallet Created # 3. Prompt Backup @@ -1948,7 +1948,7 @@ def __init__(self, client: Client): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): yield from self.REC.input_number_of_words(20) yield from self.REC.abort_recovery(True) @@ -1961,12 +1961,12 @@ def __init__(self, client: Client, shares: list[str]): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): yield from self.REC.input_number_of_words(self.word_count) yield from self.REC.abort_recovery(False) else: yield from self.REC.abort_recovery(False) - yield from self.REC.tr_recovery_homescreen() + yield from self.REC.recovery_homescreen_samson() yield from self.REC.input_number_of_words(self.word_count) yield from self.REC.enter_any_share() yield from self.REC.input_all_slip39_shares(self.shares, has_groups=True) @@ -2070,7 +2070,7 @@ def __init__(self, client: Client): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): yield from self.REC.input_number_of_words(20) yield from self.REC.abort_recovery(True) @@ -2083,10 +2083,10 @@ def __init__(self, client: Client, shares: list[str]): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): yield from self.REC.input_number_of_words(20) else: - yield from self.REC.tr_recovery_homescreen() + yield from self.REC.recovery_homescreen_samson() yield from self.REC.input_number_of_words(self.word_count) yield from self.REC.enter_any_share() @@ -2103,12 +2103,12 @@ def __init__(self, client: Client, shares: list[str]): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): yield from self.REC.input_number_of_words(self.word_count) yield from self.REC.abort_recovery(False) else: yield from self.REC.abort_recovery(False) - yield from self.REC.tr_recovery_homescreen() + yield from self.REC.recovery_homescreen_samson() yield from self.REC.input_number_of_words(self.word_count) yield from self.REC.enter_any_share() @@ -2200,7 +2200,7 @@ class InputFlowResetSkipBackup(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: yield from self.BAK.confirm_new_wallet() yield # Skip Backup assert TR.backup__new_wallet_successfully_created in self.text_content() @@ -2209,7 +2209,7 @@ def input_flow_tt(self) -> BRGeneratorType: assert TR.backup__want_to_skip in self.text_content() self.debug.press_no() - def input_flow_tr(self) -> BRGeneratorType: + def input_flow_samson(self) -> BRGeneratorType: yield from self.BAK.confirm_new_wallet() yield # Skip Backup assert TR.backup__new_wallet_created in self.text_content() @@ -2219,7 +2219,7 @@ def input_flow_tr(self) -> BRGeneratorType: assert TR.backup__want_to_skip in self.text_content() self.debug.press_no() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: yield from self.BAK.confirm_new_wallet() yield # Skip Backup assert TR.backup__new_wallet_created in self.text_content() @@ -2237,7 +2237,7 @@ class InputFlowConfirmAllWarnings(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: br = yield while True: # wait for homescreen to go away @@ -2245,10 +2245,10 @@ def input_flow_tt(self) -> BRGeneratorType: self.client.ui._default_input_flow(br) br = yield - def input_flow_tr(self) -> BRGeneratorType: - return self.input_flow_tt() + def input_flow_samson(self) -> BRGeneratorType: + return self.input_flow_bolt() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: br = yield while True: # wait for homescreen to go away @@ -2288,15 +2288,15 @@ def __init__(self, client: Client, cancel: bool = False): super().__init__(client) self.cancel = cancel - def input_flow_tt(self) -> BRGeneratorType: + def input_flow_bolt(self) -> BRGeneratorType: while True: yield self.debug.press_yes() - def input_flow_tr(self) -> BRGeneratorType: - yield from self.input_flow_tt() + def input_flow_samson(self) -> BRGeneratorType: + yield from self.input_flow_bolt() - def input_flow_t3t1(self) -> BRGeneratorType: + def input_flow_quicksilver(self) -> BRGeneratorType: while True: yield self.debug.swipe_up() diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 404fa440de8..3ad5f580ed3 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -26,7 +26,7 @@ def setup_new_pin( assert (yield).name == "pin_device" # Enter PIN assert "PinKeyboard" in self.debug.read_layout().all_components() self.debug.input(pin) - if self.client.layout_type is LayoutType.TR: + if self.client.layout_type is LayoutType.Samson: assert (yield).name == f"reenter_{what}" # Reenter PIN assert ( TR.translate(f"{what}__reenter_to_confirm") @@ -49,7 +49,7 @@ def __init__(self, client: Client): def confirm_new_wallet(self) -> BRGeneratorType: yield assert TR.reset__by_continuing in self.debug.read_layout().text_content() - if self.client.layout_type is LayoutType.TR: + if self.client.layout_type is LayoutType.Samson: self.debug.press_right() self.debug.press_yes() @@ -66,7 +66,7 @@ def _text_content(self) -> str: def confirm_recovery(self) -> BRGeneratorType: assert (yield).name == "recover_device" assert TR.reset__by_continuing in self._text_content() - if self.client.layout_type is LayoutType.TR: + if self.client.layout_type is LayoutType.Samson: self.debug.press_right() self.debug.press_yes() @@ -76,31 +76,31 @@ def confirm_dry_run(self) -> BRGeneratorType: self.debug.press_yes() def setup_slip39_recovery(self, num_words: int) -> BRGeneratorType: - if self.client.layout_type is LayoutType.TR: - yield from self.tr_recovery_homescreen() + if self.client.layout_type is LayoutType.Samson: + yield from self.recovery_homescreen_samson() yield from self.input_number_of_words(num_words) yield from self.enter_any_share() def setup_repeated_backup_recovery(self, num_words: int) -> BRGeneratorType: - if self.client.layout_type is LayoutType.TR: - yield from self.tr_recovery_homescreen() + if self.client.layout_type is LayoutType.Samson: + yield from self.recovery_homescreen_samson() yield from self.input_number_of_words(num_words) yield from self.enter_your_backup() def setup_bip39_recovery(self, num_words: int) -> BRGeneratorType: - if self.client.layout_type is LayoutType.TR: - yield from self.tr_recovery_homescreen() + if self.client.layout_type is LayoutType.Samson: + yield from self.recovery_homescreen_samson() yield from self.input_number_of_words(num_words) yield from self.enter_your_backup() - def tr_recovery_homescreen(self) -> BRGeneratorType: + def recovery_homescreen_samson(self) -> BRGeneratorType: yield assert TR.recovery__num_of_words in self._text_content() self.debug.press_yes() def enter_your_backup(self) -> BRGeneratorType: assert (yield).name == "recovery" - if self.debug.layout_type is LayoutType.Mercury: + if self.debug.layout_type is LayoutType.Quicksilver: assert TR.recovery__enter_each_word in self._text_content() else: assert TR.recovery__enter_backup in self._text_content() @@ -108,7 +108,7 @@ def enter_your_backup(self) -> BRGeneratorType: TR.recovery__title_dry_run.lower() in self.debug.read_layout().title().lower() ) - if self.client.layout_type is LayoutType.TR and not is_dry_run: + if self.client.layout_type is LayoutType.Samson and not is_dry_run: # Normal recovery has extra info (not dry run) self.debug.press_right() self.debug.press_right() @@ -124,7 +124,7 @@ def enter_any_share(self) -> BRGeneratorType: TR.recovery__title_dry_run.lower() in self.debug.read_layout().title().lower() ) - if self.client.layout_type is LayoutType.TR and not is_dry_run: + if self.client.layout_type is LayoutType.Samson and not is_dry_run: # Normal recovery has extra info (not dry run) self.debug.press_right() self.debug.press_right() @@ -132,7 +132,7 @@ def enter_any_share(self) -> BRGeneratorType: def abort_recovery(self, confirm: bool) -> BRGeneratorType: yield - if self.client.layout_type is LayoutType.TR: + if self.client.layout_type is LayoutType.Samson: assert TR.recovery__num_of_words in self._text_content() self.debug.press_no() yield @@ -142,7 +142,7 @@ def abort_recovery(self, confirm: bool) -> BRGeneratorType: self.debug.press_yes() else: self.debug.press_no() - elif self.client.layout_type is LayoutType.Mercury: + elif self.client.layout_type is LayoutType.Quicksilver: assert TR.recovery__enter_each_word in self._text_content() self.debug.click(buttons.CORNER_BUTTON) self.debug.synchronize_at("VerticalMenu") @@ -162,7 +162,7 @@ def abort_recovery(self, confirm: bool) -> BRGeneratorType: def abort_recovery_between_shares(self) -> BRGeneratorType: yield - if self.client.layout_type is LayoutType.TR: + if self.client.layout_type is LayoutType.Samson: assert TR.regexp("recovery__x_of_y_entered_template").search( self._text_content() ) @@ -171,7 +171,7 @@ def abort_recovery_between_shares(self) -> BRGeneratorType: assert TR.recovery__wanna_cancel_recovery in self._text_content() self.debug.press_right() self.debug.press_yes() - elif self.client.layout_type is LayoutType.Mercury: + elif self.client.layout_type is LayoutType.Quicksilver: assert TR.regexp("recovery__x_of_y_entered_template").search( self._text_content() ) @@ -195,7 +195,7 @@ def input_number_of_words(self, num_words: int) -> BRGeneratorType: br = yield assert br.code == B.MnemonicWordCount assert br.name == "recovery_word_count" - if self.client.layout_type is LayoutType.TR: + if self.client.layout_type is LayoutType.Samson: assert TR.word_count__title in self.debug.read_layout().title() else: assert TR.recovery__num_of_words in self._text_content() @@ -249,7 +249,7 @@ def success_bip39_dry_run_valid(self) -> BRGeneratorType: assert br.code == B.Success text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page - if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type not in (LayoutType.Bolt, LayoutType.Quicksilver): assert TR.recovery__dry_run_bip39_valid_match in text self.debug.press_yes() @@ -258,7 +258,7 @@ def success_slip39_dryrun_valid(self) -> BRGeneratorType: assert br.code == B.Success text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page - if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type not in (LayoutType.Bolt, LayoutType.Quicksilver): assert TR.recovery__dry_run_slip39_valid_match in text self.debug.press_yes() @@ -267,7 +267,7 @@ def warning_slip39_dryrun_mismatch(self) -> BRGeneratorType: assert br.code == B.Warning text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page on TT - if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type not in (LayoutType.Bolt, LayoutType.Quicksilver): assert TR.recovery__dry_run_slip39_valid_mismatch in text self.debug.press_yes() @@ -276,7 +276,7 @@ def warning_bip39_dryrun_mismatch(self) -> BRGeneratorType: assert br.code == B.Warning text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page - if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): + if self.client.layout_type not in (LayoutType.Bolt, LayoutType.Quicksilver): assert TR.recovery__dry_run_bip39_valid_mismatch in text self.debug.press_yes() @@ -315,15 +315,15 @@ def input_all_slip39_shares( yield from self.success_more_shares_needed(click_ok=not click_info) if click_info: - if self.client.layout_type is LayoutType.TT: - yield from self.tt_click_info() - elif self.client.layout_type is LayoutType.Mercury: - yield from self.mercury_click_info() + if self.client.layout_type is LayoutType.Bolt: + yield from self.click_info_bolt() + elif self.client.layout_type is LayoutType.Quicksilver: + yield from self.click_info_quicksilver() else: raise ValueError("Unknown model!") yield from self.success_more_shares_needed() - def tt_click_info(self) -> t.Generator[t.Any, t.Any, None]: + def click_info_bolt(self) -> t.Generator[t.Any, t.Any, None]: self.debug.press_info() br = yield assert br.name == "show_shares" @@ -331,7 +331,7 @@ def tt_click_info(self) -> t.Generator[t.Any, t.Any, None]: self.debug.swipe_up() self.debug.press_yes() - def mercury_click_info(self) -> BRGeneratorType: + def click_info_quicksilver(self) -> BRGeneratorType: # Moving through the menu into the show_shares screen self.debug.click(buttons.CORNER_BUTTON) self.debug.synchronize_at("VerticalMenu") @@ -377,20 +377,20 @@ def paginate_data_go_back(self) -> BRGeneratorType: assert br.pages is not None assert br.pages > 2 assert self.debug.read_layout().title() == TR.ethereum__title_input_data - if self.client.layout_type is LayoutType.TR: + if self.client.layout_type is LayoutType.Samson: self.debug.press_right() self.debug.press_right() self.debug.press_left() self.debug.press_left() self.debug.press_left() - elif self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): + elif self.client.layout_type in (LayoutType.Bolt, LayoutType.Quicksilver): self.debug.swipe_up() self.debug.swipe_up() self.debug.click(self.GO_BACK) else: raise ValueError(f"Unknown layout: {self.client.layout_type}") - def _confirm_tx_tt( + def _confirm_tx_bolt( self, cancel: bool, info: bool, go_back_from_summary: bool ) -> BRGeneratorType: assert (yield).name == "confirm_ethereum_tx" @@ -416,7 +416,7 @@ def _confirm_tx_tt( self.debug.press_yes() assert (yield).name == "confirm_ethereum_tx" - def _confirm_tx_tr( + def _confirm_tx_samson( self, cancel: bool, info: bool, go_back_from_summary: bool ) -> BRGeneratorType: assert (yield).name == "confirm_ethereum_tx" @@ -445,7 +445,7 @@ def _confirm_tx_tr( self.debug.press_middle() assert (yield).name == "confirm_ethereum_tx" - def _confirm_tx_mercury( + def _confirm_tx_quicksilver( self, cancel: bool, info: bool, go_back_from_summary: bool ) -> BRGeneratorType: assert (yield).name == "confirm_output" @@ -487,12 +487,12 @@ def confirm_tx( info: bool = False, go_back_from_summary: bool = False, ) -> BRGeneratorType: - if self.client.layout_type is LayoutType.TT: - yield from self._confirm_tx_tt(cancel, info, go_back_from_summary) - elif self.client.layout_type is LayoutType.TR: - yield from self._confirm_tx_tr(cancel, info, go_back_from_summary) - elif self.client.layout_type is LayoutType.Mercury: - yield from self._confirm_tx_mercury(cancel, info, go_back_from_summary) + if self.client.layout_type is LayoutType.Bolt: + yield from self._confirm_tx_bolt(cancel, info, go_back_from_summary) + elif self.client.layout_type is LayoutType.Samson: + yield from self._confirm_tx_samson(cancel, info, go_back_from_summary) + elif self.client.layout_type is LayoutType.Quicksilver: + yield from self._confirm_tx_quicksilver(cancel, info, go_back_from_summary) else: raise ValueError("Unknown model!") @@ -513,7 +513,7 @@ def confirm_tx_staking( TR.ethereum__staking_unstake_intro, TR.ethereum__staking_claim_intro, ) - if self.client.layout_type is LayoutType.TT: + if self.client.layout_type is LayoutType.Bolt: # confirm intro if info: self.debug.click( @@ -538,7 +538,7 @@ def confirm_tx_staking( self.debug.press_yes() - elif self.client.layout_type is LayoutType.Mercury: + elif self.client.layout_type is LayoutType.Quicksilver: # confirm intro if info: self.debug.click(buttons.CORNER_BUTTON) @@ -570,7 +570,7 @@ def confirm_tx_staking( self.debug.press_yes() - elif self.client.layout_type is LayoutType.TR: + elif self.client.layout_type is LayoutType.Samson: # confirm intro if info: self.debug.press_right() diff --git a/tests/persistence_tests/test_shamir_persistence.py b/tests/persistence_tests/test_shamir_persistence.py index e24f16eeb67..680abd9eae2 100644 --- a/tests/persistence_tests/test_shamir_persistence.py +++ b/tests/persistence_tests/test_shamir_persistence.py @@ -40,7 +40,7 @@ def test_abort(core_emulator: Emulator): debug = device_handler.debuglink() features = device_handler.features() - if debug.layout_type is LayoutType.Mercury: + if debug.layout_type is LayoutType.Quicksilver: pytest.skip("abort not supported on T3T1") assert features.recovery_status == RecoveryStatus.Nothing @@ -115,8 +115,8 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): def assert_mnemonic_keyboard(debug: DebugLink) -> None: layout = debug.read_layout() - if debug.layout_type == LayoutType.TR: - # model R has the keyboard wrapped in a Frame + if debug.layout_type == LayoutType.Samson: + # UI Samson (TS3) has the keyboard wrapped in a Frame assert "MnemonicKeyboard" in layout.all_components() else: assert layout.main_component() == "MnemonicKeyboard" @@ -187,7 +187,7 @@ def enter_shares_with_restarts(debug: DebugLink) -> None: shares = MNEMONIC_SLIP39_ADVANCED_20 layout = debug.read_layout() expected_text = "Enter any share" - if debug.layout_type == LayoutType.Mercury: + if debug.layout_type == LayoutType.Quicksilver: expected_text = "Enter each word" remaining = len(shares) for share in shares: diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index d8ec8704198..7fa75fce1b1 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -741,20 +741,20 @@ "T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "cead5ab77fe434d49f95c9b36c5f30ede92dfcba9a65e76a793efd663bc2db2c", "T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "02fef6dbd2919c5c55f89a99306a5d9948a60a63fedb2f381108b2b5cdb0f3ef", "T2T1_cs_test_lock.py::test_hold_to_lock": "cbbb62fa28512c76a8c6ffda81ac8f2527050fb94f333fec8f1c204e80b22819", -"T2T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "40830a50b2b1ce4e6333b3f2c4f498c1f74de3d9487e85357a5d247710dcd85c", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "686b16ba0f08c95805ec029268bcb750f623ccf20e00defcbff4a7f341747e15", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_delete": "6c9112ba6846f60cda92cd958d345692a088a9be4a096bc004c4e4f6ee5a320b", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_delete_all": "aacd1067210783e499692ebf5d54d7c01c3f42e7da0751a11c8bb27ddccb309b", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "9b60f466f49b0838f8b6dc50c3e4dd61264c45bdb0206f3056afee2a5d307407", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "4a08a5aee3c2aa66e3cf35277d50839eae59e262ac876c5621ce4e2549121511", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ebd885eb2ca3df3bc14ffe7cd95b7d761fa8caa69f8b56e3a4e5fc968909027c", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "84f48256ed27bb3aa8415053973387a8d5a062f3d4b3bb9a039734d5f5ad5df3", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "2eb60be84a003b6e2eae3e73fff70a2b8f0a8f2ffafa56690d53ccb96a097bc9", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "c2dc9eaca217d0b4654319074ab4d9108b7e3d4378847e8e4b6d7be6f414fe74", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "2eb60be84a003b6e2eae3e73fff70a2b8f0a8f2ffafa56690d53ccb96a097bc9", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "f137b5b2931eee31ab91d7738fa0a3f2123529dd533fd59ac37a3f08f4e9cb3a", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_loop_all_characters": "2adbcb44e4eb856d52e58a40c11efb87f68295b9fb64877c20639321638f0356", -"T2T1_cs_test_passphrase_tt.py::test_passphrase_prompt_disappears": "cd361cd446f7449fe26252cea4d91d2c2c9b1a9ac81a3e9756fbd74668cfb9f0", +"T2T1_cs_test_passphrase_bolt.py::test_cycle_through_last_character": "40830a50b2b1ce4e6333b3f2c4f498c1f74de3d9487e85357a5d247710dcd85c", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_click_same_button_many_times": "686b16ba0f08c95805ec029268bcb750f623ccf20e00defcbff4a7f341747e15", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_delete": "6c9112ba6846f60cda92cd958d345692a088a9be4a096bc004c4e4f6ee5a320b", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_delete_all": "aacd1067210783e499692ebf5d54d7c01c3f42e7da0751a11c8bb27ddccb309b", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_dollar_sign_deletion": "9b60f466f49b0838f8b6dc50c3e4dd61264c45bdb0206f3056afee2a5d307407", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDS-59ef20a9": "4a08a5aee3c2aa66e3cf35277d50839eae59e262ac876c5621ce4e2549121511", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ebd885eb2ca3df3bc14ffe7cd95b7d761fa8caa69f8b56e3a4e5fc968909027c", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "84f48256ed27bb3aa8415053973387a8d5a062f3d4b3bb9a039734d5f5ad5df3", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-26d1efc3": "2eb60be84a003b6e2eae3e73fff70a2b8f0a8f2ffafa56690d53ccb96a097bc9", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-812e97c0": "c2dc9eaca217d0b4654319074ab4d9108b7e3d4378847e8e4b6d7be6f414fe74", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_input_over_50_chars": "2eb60be84a003b6e2eae3e73fff70a2b8f0a8f2ffafa56690d53ccb96a097bc9", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_long_spaces_deletion": "f137b5b2931eee31ab91d7738fa0a3f2123529dd533fd59ac37a3f08f4e9cb3a", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_loop_all_characters": "2adbcb44e4eb856d52e58a40c11efb87f68295b9fb64877c20639321638f0356", +"T2T1_cs_test_passphrase_bolt.py::test_passphrase_prompt_disappears": "cd361cd446f7449fe26252cea4d91d2c2c9b1a9ac81a3e9756fbd74668cfb9f0", "T2T1_cs_test_pin.py::test_last_digit_timeout": "06babf359cdfd0299c7adf901a21195b060ca554ea3ef89a4907b05a38fca6dc", "T2T1_cs_test_pin.py::test_pin_cancel": "4176e256dd9fc175fd5b903144eff9c349ccd881407aa41d0e6798d6e2787164", "T2T1_cs_test_pin.py::test_pin_change": "4070156f5671f94d819d6845455b89133361a7bcbe1a8a4460e72f92fe2166a4", @@ -791,20 +791,20 @@ "T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "fcefa34333413a7b1d72eca9d0c6742654b0959524b392adc179687ca94cf374", "T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f271dd89a2514d42d789511bfaa3712595d1e58506e81352f5e4d4cd636e49fd", "T2T1_de_test_lock.py::test_hold_to_lock": "10709a23298770753088ee313e451afc161e9fa89c55b93ccc581473b4dd9927", -"T2T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "efa760797ba43b9a7f96a0362ec2a68a8de411048c37ad6957da98a8f1ed841f", -"T2T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "f05ccae157375a20a0565f333662a14d2aa05080e1b605c9f17295e9cde543a3", -"T2T1_de_test_passphrase_tt.py::test_passphrase_delete": "18ffb2beaa3b84909c5ad140abccac2ad67cc266dc40e49b6956a9aee6852258", -"T2T1_de_test_passphrase_tt.py::test_passphrase_delete_all": "1de6101a45b849bc4a087039a845c6183bbeab2617e0099c70e46382c5423169", -"T2T1_de_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "a58dab10d4737cb97fff35e388c25a1dcc366e943e226c2c836f25e40b7e2f43", -"T2T1_de_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "cb125eec7af27d40f9d081aceb236cc171a9fee5a5281d36855b8ca66705443d", -"T2T1_de_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "8c4b13aff5c0c2e4cd69b757b77c7e305521ad8bf0ae4e2995d4f5e188a3cd5f", -"T2T1_de_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "c869406723049363fa9d9f09ca38168c0a98ecf01cfeea6eb227897f25d14e9d", -"T2T1_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "6f35eac0c7424bd03c372987c9c7863c4ba8d211f2af85f73ce1fc37a209a15c", -"T2T1_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "98082d0fc491306b8b71f4474166f9ef6982bb1b129a521bcd5aba1dd23f2308", -"T2T1_de_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "6f35eac0c7424bd03c372987c9c7863c4ba8d211f2af85f73ce1fc37a209a15c", -"T2T1_de_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "da99f8b84fbba875c686e315c9e89809f86db4c519f3524df5810c07ccc6476f", -"T2T1_de_test_passphrase_tt.py::test_passphrase_loop_all_characters": "efa4ff0e210d6ec4a3f075e3193fce4a8485a6692354c759d485d451903ff246", -"T2T1_de_test_passphrase_tt.py::test_passphrase_prompt_disappears": "9eee6bfa13e3fe48b0c29c7adb3861be20e20c62717af8090298e4511d661615", +"T2T1_de_test_passphrase_bolt.py::test_cycle_through_last_character": "efa760797ba43b9a7f96a0362ec2a68a8de411048c37ad6957da98a8f1ed841f", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_click_same_button_many_times": "f05ccae157375a20a0565f333662a14d2aa05080e1b605c9f17295e9cde543a3", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_delete": "18ffb2beaa3b84909c5ad140abccac2ad67cc266dc40e49b6956a9aee6852258", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_delete_all": "1de6101a45b849bc4a087039a845c6183bbeab2617e0099c70e46382c5423169", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_dollar_sign_deletion": "a58dab10d4737cb97fff35e388c25a1dcc366e943e226c2c836f25e40b7e2f43", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDS-59ef20a9": "cb125eec7af27d40f9d081aceb236cc171a9fee5a5281d36855b8ca66705443d", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "8c4b13aff5c0c2e4cd69b757b77c7e305521ad8bf0ae4e2995d4f5e188a3cd5f", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "c869406723049363fa9d9f09ca38168c0a98ecf01cfeea6eb227897f25d14e9d", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-26d1efc3": "6f35eac0c7424bd03c372987c9c7863c4ba8d211f2af85f73ce1fc37a209a15c", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-812e97c0": "98082d0fc491306b8b71f4474166f9ef6982bb1b129a521bcd5aba1dd23f2308", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_input_over_50_chars": "6f35eac0c7424bd03c372987c9c7863c4ba8d211f2af85f73ce1fc37a209a15c", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_long_spaces_deletion": "da99f8b84fbba875c686e315c9e89809f86db4c519f3524df5810c07ccc6476f", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_loop_all_characters": "efa4ff0e210d6ec4a3f075e3193fce4a8485a6692354c759d485d451903ff246", +"T2T1_de_test_passphrase_bolt.py::test_passphrase_prompt_disappears": "9eee6bfa13e3fe48b0c29c7adb3861be20e20c62717af8090298e4511d661615", "T2T1_de_test_pin.py::test_last_digit_timeout": "c113c631b0a62e3da0b5965844359589716b2b65b8a66e1cccb48ddb427bf10d", "T2T1_de_test_pin.py::test_pin_cancel": "efb9d6ca37577eabe8dfccc3622eb981af3c196cbe4205b6a78c67961a1a7125", "T2T1_de_test_pin.py::test_pin_change": "c730274f842d380cd5c2199b5f1894e9d9f219ca69ec06f70a6ce7e4dce7c98e", @@ -841,20 +841,20 @@ "T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7a9d803b3baf1d4bfc9376261615ebdd3ea129583a06310f3909c8338d1ab087", "T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1986afa48466d880d7b34f2799a3fdea434e840c13fa3c2017161a37694a97f9", "T2T1_en_test_lock.py::test_hold_to_lock": "16e93b1d85aad5450cd9abf415fac39001cea84869dc6743ff0ec15db24e9ee8", -"T2T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "80625277f3a0aa4132f275e2073785825f2e1925f3409810d7f532b7c9fb08ef", -"T2T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b55911cee1c00dea76b427c08889acf984acb1ebf93624977f43148a5a5a8d8", -"T2T1_en_test_passphrase_tt.py::test_passphrase_delete": "36fb4927e216871408bf0aefd815037db4e86cfd87cbb23daaa1d2d8ec81c835", -"T2T1_en_test_passphrase_tt.py::test_passphrase_delete_all": "678a21fcb484c9f64af01cbdf4591a9b019e6205ca8321a60bc471c521ab87ed", -"T2T1_en_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "8161f39a0efd153274fa8c4f63f3b58d10b6835d4c70fce19b561aa50724827a", -"T2T1_en_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "87f62e2e476c13e32c28f8c15d07ec4e1ed73028519abca6d2cdc3eedae023e1", -"T2T1_en_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "eb7d504a87b3794b3e6e1ec663920a5df938596554e4979d77abc2a550b7481c", -"T2T1_en_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "fc7ec0688bf0f997505c4b5c0e64bf9f5ce97fa31ab9c7d2e0999fd5629e17ac", -"T2T1_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "b813dbc266789ce36e803d4ea699f7e38817a8e0d95c11a23bda9569ef78a1a2", -"T2T1_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "1748b0b47d9a422a67c8f9299dd002342856b067dff76d7ebb825db435b64702", -"T2T1_en_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "b813dbc266789ce36e803d4ea699f7e38817a8e0d95c11a23bda9569ef78a1a2", -"T2T1_en_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "9956fa9bf399cc2014be282b128e0581b4adbb399fb16e43cd7ad68d60dbbd09", -"T2T1_en_test_passphrase_tt.py::test_passphrase_loop_all_characters": "0f99c72bbae0033ed9e5ca1a233d587fb0974bf4a9fe46d1df5f25ed93bac343", -"T2T1_en_test_passphrase_tt.py::test_passphrase_prompt_disappears": "d051fc05dc3af0c685de6ec8f00b0ab4facf8f6fd49dcece503fa15261d6c90a", +"T2T1_en_test_passphrase_bolt.py::test_cycle_through_last_character": "80625277f3a0aa4132f275e2073785825f2e1925f3409810d7f532b7c9fb08ef", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_click_same_button_many_times": "2b55911cee1c00dea76b427c08889acf984acb1ebf93624977f43148a5a5a8d8", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_delete": "36fb4927e216871408bf0aefd815037db4e86cfd87cbb23daaa1d2d8ec81c835", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_delete_all": "678a21fcb484c9f64af01cbdf4591a9b019e6205ca8321a60bc471c521ab87ed", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_dollar_sign_deletion": "8161f39a0efd153274fa8c4f63f3b58d10b6835d4c70fce19b561aa50724827a", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDS-59ef20a9": "87f62e2e476c13e32c28f8c15d07ec4e1ed73028519abca6d2cdc3eedae023e1", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "eb7d504a87b3794b3e6e1ec663920a5df938596554e4979d77abc2a550b7481c", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "fc7ec0688bf0f997505c4b5c0e64bf9f5ce97fa31ab9c7d2e0999fd5629e17ac", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-26d1efc3": "b813dbc266789ce36e803d4ea699f7e38817a8e0d95c11a23bda9569ef78a1a2", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-812e97c0": "1748b0b47d9a422a67c8f9299dd002342856b067dff76d7ebb825db435b64702", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_input_over_50_chars": "b813dbc266789ce36e803d4ea699f7e38817a8e0d95c11a23bda9569ef78a1a2", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_long_spaces_deletion": "9956fa9bf399cc2014be282b128e0581b4adbb399fb16e43cd7ad68d60dbbd09", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_loop_all_characters": "0f99c72bbae0033ed9e5ca1a233d587fb0974bf4a9fe46d1df5f25ed93bac343", +"T2T1_en_test_passphrase_bolt.py::test_passphrase_prompt_disappears": "d051fc05dc3af0c685de6ec8f00b0ab4facf8f6fd49dcece503fa15261d6c90a", "T2T1_en_test_pin.py::test_last_digit_timeout": "a170405f1451dd9092afc83c4326e08d9076e52a6ef20c940ff916baa739e9c3", "T2T1_en_test_pin.py::test_pin_cancel": "477133459306a2a9f64fc2bd3abeebaf67a678e59bdd1418db4536b2be4e657f", "T2T1_en_test_pin.py::test_pin_change": "b3dccad89be83c8a5c62169b861835730ad46bf01fd0cf598c47b2ebb6cd3e14", @@ -891,20 +891,20 @@ "T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "eb5d07664628e4b1821ccf2ef397f36a44d8615150d7388fde37ee95c8df5727", "T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c173fa6041155ee0b2f4085bf88b911a0d99389c39dbb8c1a78d4eafd0a7044c", "T2T1_es_test_lock.py::test_hold_to_lock": "5534389fe8f1aebab6cd38be5e46ceb016bae59985eadb83e154960bf98a78fa", -"T2T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "e6513db1b677a9cb5c790a0dded17cb8339c8cdb159be4aa90523028a4b3424b", -"T2T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "f3b863a2152d82937aa94d7815867a7d0dfea8cd1932d8f922be5c3f119e394e", -"T2T1_es_test_passphrase_tt.py::test_passphrase_delete": "83e7d1db22b045a611de7502aa5347d2039ff6456f5db439bec76d630ac7407e", -"T2T1_es_test_passphrase_tt.py::test_passphrase_delete_all": "893f7fb5eb46d424a814fd26abedd7febeb23f46d62149fc08488f6f61f54b84", -"T2T1_es_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "56c6bc6ccbe689e83dbed1ba903a8fc94e662b57b9c2ddd429f95bac6e84316f", -"T2T1_es_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "ae673718a48e986f13ce57a91fa3b116198196da89f9a86d50c0a88415af5db7", -"T2T1_es_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "8a392b3da19b6dda37fc428663585ba5f668021377f23ab8921f8ccb38d168f8", -"T2T1_es_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "c2c66c0efc368ee49c50fd4eb04dd06c87c4fa991daabc6cb1c2a138a8761630", -"T2T1_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "1902a5633fbc468919dc5b00d86d7b6f38058affd6cb3d82942a1c7109c276cb", -"T2T1_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "9f81ed5ff6db55dcfd9cf6b98710da7a21bd027fe07214e2ad6e6b88e2bab7dc", -"T2T1_es_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "1902a5633fbc468919dc5b00d86d7b6f38058affd6cb3d82942a1c7109c276cb", -"T2T1_es_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "236e69a890c5be0521e88ac3a0b7666b5ee12be5e80cda5231e9224786e1f7be", -"T2T1_es_test_passphrase_tt.py::test_passphrase_loop_all_characters": "3083493ea56d4d4bda0740cb9dc748cb8d649ba93e8f96bff0bb1d4fef3ab44a", -"T2T1_es_test_passphrase_tt.py::test_passphrase_prompt_disappears": "307b74f54b266b39535864807191485900e918d964919182448f2cf14a72a3fe", +"T2T1_es_test_passphrase_bolt.py::test_cycle_through_last_character": "e6513db1b677a9cb5c790a0dded17cb8339c8cdb159be4aa90523028a4b3424b", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_click_same_button_many_times": "f3b863a2152d82937aa94d7815867a7d0dfea8cd1932d8f922be5c3f119e394e", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_delete": "83e7d1db22b045a611de7502aa5347d2039ff6456f5db439bec76d630ac7407e", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_delete_all": "893f7fb5eb46d424a814fd26abedd7febeb23f46d62149fc08488f6f61f54b84", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_dollar_sign_deletion": "56c6bc6ccbe689e83dbed1ba903a8fc94e662b57b9c2ddd429f95bac6e84316f", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDS-59ef20a9": "ae673718a48e986f13ce57a91fa3b116198196da89f9a86d50c0a88415af5db7", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "8a392b3da19b6dda37fc428663585ba5f668021377f23ab8921f8ccb38d168f8", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "c2c66c0efc368ee49c50fd4eb04dd06c87c4fa991daabc6cb1c2a138a8761630", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-26d1efc3": "1902a5633fbc468919dc5b00d86d7b6f38058affd6cb3d82942a1c7109c276cb", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-812e97c0": "9f81ed5ff6db55dcfd9cf6b98710da7a21bd027fe07214e2ad6e6b88e2bab7dc", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_input_over_50_chars": "1902a5633fbc468919dc5b00d86d7b6f38058affd6cb3d82942a1c7109c276cb", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_long_spaces_deletion": "236e69a890c5be0521e88ac3a0b7666b5ee12be5e80cda5231e9224786e1f7be", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_loop_all_characters": "3083493ea56d4d4bda0740cb9dc748cb8d649ba93e8f96bff0bb1d4fef3ab44a", +"T2T1_es_test_passphrase_bolt.py::test_passphrase_prompt_disappears": "307b74f54b266b39535864807191485900e918d964919182448f2cf14a72a3fe", "T2T1_es_test_pin.py::test_last_digit_timeout": "12f0039fae35a4be611a93edd299bc0e84ea6e039c2ca38f08e7afd382cc6668", "T2T1_es_test_pin.py::test_pin_cancel": "265f9341d0fa814598d248b4439a0e7dcd9940879321ef883a78e520fb6651c2", "T2T1_es_test_pin.py::test_pin_change": "7db85f40e61bd4b9e69d9adc84652825e56ba9fea607bdc3ded7aa033674fd16", @@ -941,20 +941,20 @@ "T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "5f0f2574dfc8ac11d5f8f0eaa166ee6d0bf37853c206e7d6178954c01b65c1ed", "T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "89e8ba1ad594ee86635423c6ed757e3009dc97f020c965f970683265372b50db", "T2T1_fr_test_lock.py::test_hold_to_lock": "6e55a8bd3cb4f3f6bde47bbfe00a523c253173edbac5f738d1e2f0b4bab64548", -"T2T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "43135f43770a4fe303b3386311f6ccd69de394cac0e6e90e6ad1252849117938", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2e1139fc821a939514b301703550c6d67473679083f08b0753d730646e602e48", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_delete": "e2bb766b41f93d79474208edea30cc6faed8298e67a41894fd630a7dd7eb368d", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_delete_all": "49a69849fac89d9ae12f7599193214e4b59c5d228a0cebffe17bf994ab1a0744", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "15b597557a859953a31fa2b38b8ae970038e06a3cd99e433625fbde60d7e73e8", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "4cb5b21de9f27f7d961254297722516d2a9425a1187be39320f6425a3d05ac41", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "aa2e32bfd8938b3b2c94bde8516ec5ee12b687f4b38bdc1ab6ec752f544bce1a", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "a3964189fa2ef525c9b660483e2d2b11ed224387ba4fa8d970c75a08d2cfdc3a", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "d46bc8ecca3b0cb413ce66cc7d681c9169b110ced17927ae9843d45a6602d748", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "3b2f81ee87b5c47a7339982c4feaf1fcb0618038d0220262e3497abee412467b", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "d46bc8ecca3b0cb413ce66cc7d681c9169b110ced17927ae9843d45a6602d748", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "b1389db332af33a8de480b4db026e23bec45232c246aa08efef5f59243f1e190", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c2366383d766e669d46a9a8383cee6633a2235b8522583c210a6aae2bf951b89", -"T2T1_fr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "1633121bde58ffe7ac7de3f0b56af7a31d0416b8076744271c626562670d1668", +"T2T1_fr_test_passphrase_bolt.py::test_cycle_through_last_character": "43135f43770a4fe303b3386311f6ccd69de394cac0e6e90e6ad1252849117938", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_click_same_button_many_times": "2e1139fc821a939514b301703550c6d67473679083f08b0753d730646e602e48", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_delete": "e2bb766b41f93d79474208edea30cc6faed8298e67a41894fd630a7dd7eb368d", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_delete_all": "49a69849fac89d9ae12f7599193214e4b59c5d228a0cebffe17bf994ab1a0744", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_dollar_sign_deletion": "15b597557a859953a31fa2b38b8ae970038e06a3cd99e433625fbde60d7e73e8", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDS-59ef20a9": "4cb5b21de9f27f7d961254297722516d2a9425a1187be39320f6425a3d05ac41", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "aa2e32bfd8938b3b2c94bde8516ec5ee12b687f4b38bdc1ab6ec752f544bce1a", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "a3964189fa2ef525c9b660483e2d2b11ed224387ba4fa8d970c75a08d2cfdc3a", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-26d1efc3": "d46bc8ecca3b0cb413ce66cc7d681c9169b110ced17927ae9843d45a6602d748", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-812e97c0": "3b2f81ee87b5c47a7339982c4feaf1fcb0618038d0220262e3497abee412467b", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_input_over_50_chars": "d46bc8ecca3b0cb413ce66cc7d681c9169b110ced17927ae9843d45a6602d748", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_long_spaces_deletion": "b1389db332af33a8de480b4db026e23bec45232c246aa08efef5f59243f1e190", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_loop_all_characters": "c2366383d766e669d46a9a8383cee6633a2235b8522583c210a6aae2bf951b89", +"T2T1_fr_test_passphrase_bolt.py::test_passphrase_prompt_disappears": "1633121bde58ffe7ac7de3f0b56af7a31d0416b8076744271c626562670d1668", "T2T1_fr_test_pin.py::test_last_digit_timeout": "faf87a5b210fcd13500567a7f5b8b6e076c19b08ad472a8316e4d223ec54d4b7", "T2T1_fr_test_pin.py::test_pin_cancel": "693731e0fda760688100528a65b4ccfc17e8f90bb34dc463438343463a075bd4", "T2T1_fr_test_pin.py::test_pin_change": "c53fe6d8a756a28515b2956ac1c10a03b0ddc1b1554e388949ebc6b9ff6d048e", @@ -991,20 +991,20 @@ "T2T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c2c056c68a01fd4448b555ce118b35b7a9d219a8cee3ba4a15cab4bc4cbab1b5", "T2T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "61394ba6e1d93a848315660846c306e86c20f0d24c52491d3aa1ca03b3051f2d", "T2T1_pt_test_lock.py::test_hold_to_lock": "5ab34b566d1766d037546d93c58b475b2817c568ecd1e236a6b39f0433b15d6c", -"T2T1_pt_test_passphrase_tt.py::test_cycle_through_last_character": "4b613eee1b8b8e25a94d4c4b3f986c3a89efe37dd9d0a4f1538452e172122b4a", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "febff9b8464435ce083976a65aee289003137660b481b3a6da1b37c40fb1df16", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_delete": "face44e71b9cee2655cc8f3f89549e70efc792660509463cab1befb1c73ca038", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_delete_all": "e46a0b9a22b06be228f3fe371f007a7320592952c7cba718edbc588de92323fc", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "84e6eeab7315b3f424cf8f111c27a634ed6f00fa7eb46a229da21ff67f93f09f", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "5e7b0556c8bd398e54e43c42cdec7fa92aed711776bd0303711ede0cd2f0232f", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "185c69f495ff11ec8a88dccec210d36c7ae529dee5c69ee84e94503ab31c8588", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "08190951dfe32508acb96404dc08b11b8a5e09e2e51aa8d79018b2e006042709", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "a1600296d9a158698179b6e1f7e185a20fcd1359d6616a9db72dcaf863c927f6", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "b145e43c30f17e1fd30d88d08826ac0dd3362a0800b2064098b1ee0d8f6bec4b", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "a1600296d9a158698179b6e1f7e185a20fcd1359d6616a9db72dcaf863c927f6", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "eaf90dea602333803706c5effdf31788d0a1dcf2d96f87775ef992d816868d52", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_loop_all_characters": "299b2ab2fb7db00c319586d08ed4fff0288e9c7f74e846c13c0667ff9031557a", -"T2T1_pt_test_passphrase_tt.py::test_passphrase_prompt_disappears": "e7443ffd713d3f788e36f482f3bb7f3c85d61f8fd8a541d777e6cd69ef9cf93b", +"T2T1_pt_test_passphrase_bolt.py::test_cycle_through_last_character": "4b613eee1b8b8e25a94d4c4b3f986c3a89efe37dd9d0a4f1538452e172122b4a", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_click_same_button_many_times": "febff9b8464435ce083976a65aee289003137660b481b3a6da1b37c40fb1df16", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_delete": "face44e71b9cee2655cc8f3f89549e70efc792660509463cab1befb1c73ca038", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_delete_all": "e46a0b9a22b06be228f3fe371f007a7320592952c7cba718edbc588de92323fc", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_dollar_sign_deletion": "84e6eeab7315b3f424cf8f111c27a634ed6f00fa7eb46a229da21ff67f93f09f", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDS-59ef20a9": "5e7b0556c8bd398e54e43c42cdec7fa92aed711776bd0303711ede0cd2f0232f", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "185c69f495ff11ec8a88dccec210d36c7ae529dee5c69ee84e94503ab31c8588", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "08190951dfe32508acb96404dc08b11b8a5e09e2e51aa8d79018b2e006042709", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-26d1efc3": "a1600296d9a158698179b6e1f7e185a20fcd1359d6616a9db72dcaf863c927f6", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadada-812e97c0": "b145e43c30f17e1fd30d88d08826ac0dd3362a0800b2064098b1ee0d8f6bec4b", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_input_over_50_chars": "a1600296d9a158698179b6e1f7e185a20fcd1359d6616a9db72dcaf863c927f6", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_long_spaces_deletion": "eaf90dea602333803706c5effdf31788d0a1dcf2d96f87775ef992d816868d52", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_loop_all_characters": "299b2ab2fb7db00c319586d08ed4fff0288e9c7f74e846c13c0667ff9031557a", +"T2T1_pt_test_passphrase_bolt.py::test_passphrase_prompt_disappears": "e7443ffd713d3f788e36f482f3bb7f3c85d61f8fd8a541d777e6cd69ef9cf93b", "T2T1_pt_test_pin.py::test_last_digit_timeout": "103e9b271f58a3f1c3b876c2c00c8db836340d38dd32bce37e232c04275b6ca0", "T2T1_pt_test_pin.py::test_pin_cancel": "f815d225cd25017c5869608a5125b9f190cd45e8a5e1e759570b87263c5606bd", "T2T1_pt_test_pin.py::test_pin_change": "a1394b7399b40bd36f1177352b352d90147c2cfae70caa873eb4e1621b3f0bd7", @@ -9781,15 +9781,15 @@ "T3B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ee2f514a9dd3c942c0d11bcae21c8b568e312ee29c9e1b2fe13ac6fc34b23df9", "T3B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c55aa191faca2700e56f2cf706ec28ebb9f1995b0bfd87468bc45c164dd70a5d", "T3B1_cs_test_lock.py::test_hold_to_lock": "5cb751b7dc756420a1c1a56cde8fd968d44099ffa969be577c1cdf8ae4eeea61", -"T3B1_cs_test_passphrase_tr.py::test_cancel": "7e39fdf90bb50842ed5914813662f1657dc1e04e1b63e6faa81642a52ec3bc9b", -"T3B1_cs_test_passphrase_tr.py::test_passphrase_delete": "6e46b2b6c584b557e977add6408b393d96ab2c8396b3fd60e52f67f1a2b34d3b", -"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "4a92c37a67002439b02ac5089e65f7a1a95b58406c0252e950698426ca0b2515", -"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "9fc25d8b356abe5d514054fd47e077686caf7da61d8ce73b7833be70b30a76ba", -"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "768a1829926fd42ebbe127f4d2698148a6560809630ccf81ddea79c7dcda897e", -"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "98bb0cf60221729477aa78460aaa4a2aea419786b053ee705b80b155b9d67909", -"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5b5f6fd306415af0519e1d91527dad3413a30a95c4ee0d79958a6e89e9fd59f5", -"T3B1_cs_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "44946ab1744f69eb852a8920c2d1561ef935cd28ad8749f85db227192fac53cb", -"T3B1_cs_test_passphrase_tr.py::test_passphrase_loop_all_characters": "a87ca9a5269f1b13fd8fd866627d62bdac856bc14e4c81030720a477856be6be", +"T3B1_cs_test_passphrase_samson.py::test_cancel": "7e39fdf90bb50842ed5914813662f1657dc1e04e1b63e6faa81642a52ec3bc9b", +"T3B1_cs_test_passphrase_samson.py::test_passphrase_delete": "6e46b2b6c584b557e977add6408b393d96ab2c8396b3fd60e52f67f1a2b34d3b", +"T3B1_cs_test_passphrase_samson.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUd-0f00decd": "4a92c37a67002439b02ac5089e65f7a1a95b58406c0252e950698426ca0b2515", +"T3B1_cs_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3a5ac438": "9fc25d8b356abe5d514054fd47e077686caf7da61d8ce73b7833be70b30a76ba", +"T3B1_cs_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-ae44524f": "768a1829926fd42ebbe127f4d2698148a6560809630ccf81ddea79c7dcda897e", +"T3B1_cs_test_passphrase_samson.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "98bb0cf60221729477aa78460aaa4a2aea419786b053ee705b80b155b9d67909", +"T3B1_cs_test_passphrase_samson.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5b5f6fd306415af0519e1d91527dad3413a30a95c4ee0d79958a6e89e9fd59f5", +"T3B1_cs_test_passphrase_samson.py::test_passphrase_input_over_50_chars": "44946ab1744f69eb852a8920c2d1561ef935cd28ad8749f85db227192fac53cb", +"T3B1_cs_test_passphrase_samson.py::test_passphrase_loop_all_characters": "a87ca9a5269f1b13fd8fd866627d62bdac856bc14e4c81030720a477856be6be", "T3B1_cs_test_pin.py::test_last_digit_timeout": "c9ba684f65d951c5681e122555f5dc8841dd94fa0b310cd5c296cf57155b00c9", "T3B1_cs_test_pin.py::test_pin_change": "515105ac55c9bc4ac33cdc2b20963666f07a124d939bff1520cde816401409b9", "T3B1_cs_test_pin.py::test_pin_delete_hold": "8bc32195583bdf512584fdd5412dfeaa636ee768fd0c99127027f16eb39a72b8", @@ -9813,9 +9813,9 @@ "T3B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6899a0c4b3bd70d6aff08133a17f2ef1b430102c68761e562d8e56c48117a5cf", "T3B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "a90c92e3640e39efa78a20105ea54fc20dfaebac029c328af1d5420777af98c7", "T3B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "13f8642847cd46aa0cd036f39b7b8c458ae2d3d37ed44b5b1fd9cf4f6c1d6aca", -"T3B1_cs_test_tutorial_tr.py::test_tutorial_again_and_skip": "7cb28c2d74f7251380ee2fe895888afffcfe5659f73c8ee32dbeda2d120be15f", -"T3B1_cs_test_tutorial_tr.py::test_tutorial_finish": "6e9e9b9234dc7c9457aa2b1b78d8638661e655eef97bf0b13e360ffc78f2a5a3", -"T3B1_cs_test_tutorial_tr.py::test_tutorial_skip": "ac88c5abeccf12c62c1c9d210ef41948a01fe82b026e54565cd8464b27a561ed", +"T3B1_cs_test_tutorial_samson.py::test_tutorial_again_and_skip": "7cb28c2d74f7251380ee2fe895888afffcfe5659f73c8ee32dbeda2d120be15f", +"T3B1_cs_test_tutorial_samson.py::test_tutorial_finish": "6e9e9b9234dc7c9457aa2b1b78d8638661e655eef97bf0b13e360ffc78f2a5a3", +"T3B1_cs_test_tutorial_samson.py::test_tutorial_skip": "ac88c5abeccf12c62c1c9d210ef41948a01fe82b026e54565cd8464b27a561ed", "T3B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3ca62d8d2d9a8841fe8059c7b38793f5c8ea8748e4de299561aeaefc24e5fcda", "T3B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "e888f60aded4d9efb0206426cf4a724801bc926ffb6dbe6d6c2dd42c3163b5f1", "T3B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "18145be2ef3f8d07fe66da8a368271b2920755632ee392aa417ece6fee8b94f6", @@ -9828,15 +9828,15 @@ "T3B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b9ef96c059b8073465d4d81da43bccd4ed4653e11cc9f2fef2a9b00abaa27021", "T3B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "304ddcca0a04ed0b855f04441f722d72ba3bc30b17ed155c12adde6d8195dd3f", "T3B1_de_test_lock.py::test_hold_to_lock": "910cd73285179739e4a6cb1b2a4bb4ae08731c4219aa39dd629db02dc73e9f7a", -"T3B1_de_test_passphrase_tr.py::test_cancel": "d8b97968a025c6132ec7822059468f6824b6ef5127b12b3bddd37f676778cb3f", -"T3B1_de_test_passphrase_tr.py::test_passphrase_delete": "1ff4ebeb72452d3a2d46be3ec0f0a736f346a87d4fdee952b4c01407a8b37b0c", -"T3B1_de_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "1f0b84e42d51b4129458e8268e3ee8f88ce72592dfcca4386f51b9fe838458b8", -"T3B1_de_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "7553b1e219ebe92b90f04b27f56189e4b3ed7a92757fd8ce8a414bd37b3af4bc", -"T3B1_de_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "a1953f139706c5c5dcc264f718894997a6ed8889fe8ef778c93bafd9e34be58d", -"T3B1_de_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6901362190711b3d6053813e0485f2003d2e5e2025e4db14d84362a74f5469f5", -"T3B1_de_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ec84d7d96c499d230df1d8de07787598650e073cbc1e49a64e64ca6f4070db44", -"T3B1_de_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "3bf9d106b23c698ed20df5d41cd0ba54e8234e1b71ee1812f5e2634af65917b6", -"T3B1_de_test_passphrase_tr.py::test_passphrase_loop_all_characters": "8ef218c9cec583d186c3da06afae380ef54c8ac54a27ab5c89a485c39313f84d", +"T3B1_de_test_passphrase_samson.py::test_cancel": "d8b97968a025c6132ec7822059468f6824b6ef5127b12b3bddd37f676778cb3f", +"T3B1_de_test_passphrase_samson.py::test_passphrase_delete": "1ff4ebeb72452d3a2d46be3ec0f0a736f346a87d4fdee952b4c01407a8b37b0c", +"T3B1_de_test_passphrase_samson.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUd-0f00decd": "1f0b84e42d51b4129458e8268e3ee8f88ce72592dfcca4386f51b9fe838458b8", +"T3B1_de_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3a5ac438": "7553b1e219ebe92b90f04b27f56189e4b3ed7a92757fd8ce8a414bd37b3af4bc", +"T3B1_de_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-ae44524f": "a1953f139706c5c5dcc264f718894997a6ed8889fe8ef778c93bafd9e34be58d", +"T3B1_de_test_passphrase_samson.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6901362190711b3d6053813e0485f2003d2e5e2025e4db14d84362a74f5469f5", +"T3B1_de_test_passphrase_samson.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ec84d7d96c499d230df1d8de07787598650e073cbc1e49a64e64ca6f4070db44", +"T3B1_de_test_passphrase_samson.py::test_passphrase_input_over_50_chars": "3bf9d106b23c698ed20df5d41cd0ba54e8234e1b71ee1812f5e2634af65917b6", +"T3B1_de_test_passphrase_samson.py::test_passphrase_loop_all_characters": "8ef218c9cec583d186c3da06afae380ef54c8ac54a27ab5c89a485c39313f84d", "T3B1_de_test_pin.py::test_last_digit_timeout": "fe51d960fb0751a2abbdf4af0b84fdaafd70331f6e2eae31bcb8ec55784806bd", "T3B1_de_test_pin.py::test_pin_change": "6a4881cffb5fb59fe8387776494a8a78341a8b9015a69d4867917165a35b949d", "T3B1_de_test_pin.py::test_pin_delete_hold": "f3fe6bc9d8ec04d62f8683136e9c81369f89780ce92cb961e8b55198120305e5", @@ -9860,9 +9860,9 @@ "T3B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e28a83d757e949ad54642e5fd659d500dcc725a4f568c10ff5d02742efe415d7", "T3B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7b6907fbc07d8bbc28d2070a08ea7687afaf07069daca7fded48dd08a9e1cfd8", "T3B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "68ba62ef98e40c21b409c466f8c3be36c55f98c5040687e14db16f2331fdc96d", -"T3B1_de_test_tutorial_tr.py::test_tutorial_again_and_skip": "a58a9866a2f3f3eab4edef5ac0da2e2d2a920c912acd33d71bbd8e20dcbaffb2", -"T3B1_de_test_tutorial_tr.py::test_tutorial_finish": "569bc69f6ea3c87998ba7fbc5964e073521a4b170065f4119dee296b0dc04841", -"T3B1_de_test_tutorial_tr.py::test_tutorial_skip": "83a2f337b476cf8e23a9ebe910aa761684c3ae886abf328dc4f13d022abe13a5", +"T3B1_de_test_tutorial_samson.py::test_tutorial_again_and_skip": "a58a9866a2f3f3eab4edef5ac0da2e2d2a920c912acd33d71bbd8e20dcbaffb2", +"T3B1_de_test_tutorial_samson.py::test_tutorial_finish": "569bc69f6ea3c87998ba7fbc5964e073521a4b170065f4119dee296b0dc04841", +"T3B1_de_test_tutorial_samson.py::test_tutorial_skip": "83a2f337b476cf8e23a9ebe910aa761684c3ae886abf328dc4f13d022abe13a5", "T3B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", "T3B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", "T3B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "02aed9b4268c301a30480d768712a920927cfa55fe0a7290ee1a049c1ca486d7", @@ -9877,15 +9877,15 @@ "T3B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9976c7e6027e82886c0884c60c0906182ccb1021e1d255a355bdb8a1b971f2ab", "T3B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "912583edaeab2a152da2405e16836e8d2bf372a55b098a2043afd06aad9b9c4e", "T3B1_en_test_lock.py::test_hold_to_lock": "52994898a56cab23f692249638a6d636b7cb0e0789eb82097b17825093005c12", -"T3B1_en_test_passphrase_tr.py::test_cancel": "7128a2c87d32a2ffca15a9644a744bcdb99b3675c7fd67be7954937195ac34ef", -"T3B1_en_test_passphrase_tr.py::test_passphrase_delete": "decf0c6ec3c9e6f1ce9befd185d22df686061052cf3378352393e44f3b9a00cf", -"T3B1_en_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "57bb6411dc89a45364631fae4a6f79271765c472a23e7526c4d7924c26b6fa55", -"T3B1_en_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "a9a116710ddfb8fe04e8b6987c45c7d9eb1393a52648d6bd05b8544b871b8141", -"T3B1_en_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "2dd9d7661426143cfb04d1d23e82139821583a6395b5825057f222e0bdacd2f9", -"T3B1_en_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "4effafa0a7448eaf884e067d45482e69692af7b983ac2e8381e8ee686c9690e9", -"T3B1_en_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d75015dc18e0f927a3105652de3af2de8355ee9991ef090a4d398d8567ba0bbf", -"T3B1_en_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "10a8d6ac646a592a1b1f1c61ec7dc3817f1483013ed9da6e91d8d73390ca1734", -"T3B1_en_test_passphrase_tr.py::test_passphrase_loop_all_characters": "7347d493b6fe351d6b594d23f62524008e9ca9038ca987f3bf85b4a888cb01b1", +"T3B1_en_test_passphrase_samson.py::test_cancel": "7128a2c87d32a2ffca15a9644a744bcdb99b3675c7fd67be7954937195ac34ef", +"T3B1_en_test_passphrase_samson.py::test_passphrase_delete": "decf0c6ec3c9e6f1ce9befd185d22df686061052cf3378352393e44f3b9a00cf", +"T3B1_en_test_passphrase_samson.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUd-0f00decd": "57bb6411dc89a45364631fae4a6f79271765c472a23e7526c4d7924c26b6fa55", +"T3B1_en_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3a5ac438": "a9a116710ddfb8fe04e8b6987c45c7d9eb1393a52648d6bd05b8544b871b8141", +"T3B1_en_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-ae44524f": "2dd9d7661426143cfb04d1d23e82139821583a6395b5825057f222e0bdacd2f9", +"T3B1_en_test_passphrase_samson.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "4effafa0a7448eaf884e067d45482e69692af7b983ac2e8381e8ee686c9690e9", +"T3B1_en_test_passphrase_samson.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d75015dc18e0f927a3105652de3af2de8355ee9991ef090a4d398d8567ba0bbf", +"T3B1_en_test_passphrase_samson.py::test_passphrase_input_over_50_chars": "10a8d6ac646a592a1b1f1c61ec7dc3817f1483013ed9da6e91d8d73390ca1734", +"T3B1_en_test_passphrase_samson.py::test_passphrase_loop_all_characters": "7347d493b6fe351d6b594d23f62524008e9ca9038ca987f3bf85b4a888cb01b1", "T3B1_en_test_pin.py::test_last_digit_timeout": "789da2106bfeb8d248c9adfb800e752e55bc80ad728a58dc4871e1c65313fe34", "T3B1_en_test_pin.py::test_pin_change": "dea66ff3f0235ac210e1bd7f3b653033e3ed2d6ee1e14fa867e072a2d081f375", "T3B1_en_test_pin.py::test_pin_delete_hold": "a2c68a3db8d9fb3b2348561ca1d3728ed4464687e29b34c0d27dde90ef87da8e", @@ -9909,9 +9909,9 @@ "T3B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "834bb36b9049028de53fc20396223833386b99402acd1426f6dc90944cf91500", "T3B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "391def198b457c41d00f32342e5d5b0e0eb9d27c3dffe36f33ab4ece087d8f43", "T3B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "80cadc3ccbf5a04448a6f3d04a43275e636c248ffb602f5191348603bd0d6f88", -"T3B1_en_test_tutorial_tr.py::test_tutorial_again_and_skip": "a566777f760217f8e0b6ba48bed482d50c09e5522eee4fa68610b7a0c1081e0f", -"T3B1_en_test_tutorial_tr.py::test_tutorial_finish": "918297a3e8f6abee67ca06a15640c29e84a408e81202e27904f509435ce990e2", -"T3B1_en_test_tutorial_tr.py::test_tutorial_skip": "bf6d7fe7eb2409ebe6201d9bc021d70e68600680ff76265852f7965efe074c52", +"T3B1_en_test_tutorial_samson.py::test_tutorial_again_and_skip": "a566777f760217f8e0b6ba48bed482d50c09e5522eee4fa68610b7a0c1081e0f", +"T3B1_en_test_tutorial_samson.py::test_tutorial_finish": "918297a3e8f6abee67ca06a15640c29e84a408e81202e27904f509435ce990e2", +"T3B1_en_test_tutorial_samson.py::test_tutorial_skip": "bf6d7fe7eb2409ebe6201d9bc021d70e68600680ff76265852f7965efe074c52", "T3B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "437fb35c8f45bc79090cd87ebe8450a81e367374b71221a0db13462937f441cf", "T3B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "f1810e2d8a97f7e99af120817b0c7a192e06df2a632b4fa6666ac07809625299", "T3B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "2afd75d27d8996bfcb11109023a8920031696fc43ab39a09883db3b1b94c7f43", @@ -9924,15 +9924,15 @@ "T3B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c692d9087ad69530edddb7792d3c236a80a130da82389a7f72bc4be5c0a74876", "T3B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1606ee837620cb32441cb1c47be3b44a1b2b4d0a536b9a0493e898cc4e84da36", "T3B1_es_test_lock.py::test_hold_to_lock": "0d5003d8e1e90ee74813cb9d122e615b45f5c3696b86bd3143143025a4a40424", -"T3B1_es_test_passphrase_tr.py::test_cancel": "8a9684c409c18e13a6f4d815ff9077dca064f0fbe67ead6631a1639df9b030d7", -"T3B1_es_test_passphrase_tr.py::test_passphrase_delete": "5e11ec4cd467931d0c76a49e8dec35243440c57892a889c2ca14fc8c2d900032", -"T3B1_es_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "3b8e2936432e3b4cfc0b7ec9e48e8c51438178d0b4ffa419feff6b616cc9a9df", -"T3B1_es_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "4be049c60ff7ecb71274c8a1d7a7c978dba782e9576a9a364a9b9b6b44fd6a13", -"T3B1_es_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "4b42ba335e2a750923175e63383eb7a0dbc3a9bbbcbb6d8c101a1dcffc172867", -"T3B1_es_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5c9abd5b6277dce42915c9e3af264c1bfc619eb140f041f464c95f21d84f7b22", -"T3B1_es_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "c28d95473857a463b8f2a1ed3faafc221f92d6e14db1d5e464770cfbf21f18c9", -"T3B1_es_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "f3b79f8d105938d31ac4dcd9be1ce60ab2866abaab31fd9f6b32988734c8b204", -"T3B1_es_test_passphrase_tr.py::test_passphrase_loop_all_characters": "041c066a460d812a04d5ad2553905e9f42b2a135b78d067178317741ead06ac8", +"T3B1_es_test_passphrase_samson.py::test_cancel": "8a9684c409c18e13a6f4d815ff9077dca064f0fbe67ead6631a1639df9b030d7", +"T3B1_es_test_passphrase_samson.py::test_passphrase_delete": "5e11ec4cd467931d0c76a49e8dec35243440c57892a889c2ca14fc8c2d900032", +"T3B1_es_test_passphrase_samson.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUd-0f00decd": "3b8e2936432e3b4cfc0b7ec9e48e8c51438178d0b4ffa419feff6b616cc9a9df", +"T3B1_es_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3a5ac438": "4be049c60ff7ecb71274c8a1d7a7c978dba782e9576a9a364a9b9b6b44fd6a13", +"T3B1_es_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-ae44524f": "4b42ba335e2a750923175e63383eb7a0dbc3a9bbbcbb6d8c101a1dcffc172867", +"T3B1_es_test_passphrase_samson.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5c9abd5b6277dce42915c9e3af264c1bfc619eb140f041f464c95f21d84f7b22", +"T3B1_es_test_passphrase_samson.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "c28d95473857a463b8f2a1ed3faafc221f92d6e14db1d5e464770cfbf21f18c9", +"T3B1_es_test_passphrase_samson.py::test_passphrase_input_over_50_chars": "f3b79f8d105938d31ac4dcd9be1ce60ab2866abaab31fd9f6b32988734c8b204", +"T3B1_es_test_passphrase_samson.py::test_passphrase_loop_all_characters": "041c066a460d812a04d5ad2553905e9f42b2a135b78d067178317741ead06ac8", "T3B1_es_test_pin.py::test_last_digit_timeout": "41eed14ef92afc752540f440b77925199433bcccd5361ff9e7b7432b80646c6d", "T3B1_es_test_pin.py::test_pin_change": "6491e91c129b35f7c60fab302aa9a67b97483fd83d613d758b1ba8c703625f32", "T3B1_es_test_pin.py::test_pin_delete_hold": "2ab174c447e8db869df2e20912b31823781d8ed194945560f7b2905b9c679407", @@ -9956,9 +9956,9 @@ "T3B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e742ba1f5eaa2e9a322367ba87dcae622ab4b46b11e9ccad2e941faa710eda2a", "T3B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "a80c0c9e6bf660bb9a44c9c37cdc18276ca3551708198ca30948fcd7773cf62c", "T3B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f14e3afd2260f1f4e2670214f2790f2bebad42a16d7efe4bd8cb669134730f31", -"T3B1_es_test_tutorial_tr.py::test_tutorial_again_and_skip": "af4ab264c8cb500275e108aeecdc8c0b3a13d1af7aaed898ffc3e2abab5cc7e4", -"T3B1_es_test_tutorial_tr.py::test_tutorial_finish": "92e6642b69695580acea17ee2823db2c748bfd044db15bd02a66d3ede48edec3", -"T3B1_es_test_tutorial_tr.py::test_tutorial_skip": "80df6e67b08426a81c40ac3b4e3023d23066466d1acf162076e22e8d8e3aaab9", +"T3B1_es_test_tutorial_samson.py::test_tutorial_again_and_skip": "af4ab264c8cb500275e108aeecdc8c0b3a13d1af7aaed898ffc3e2abab5cc7e4", +"T3B1_es_test_tutorial_samson.py::test_tutorial_finish": "92e6642b69695580acea17ee2823db2c748bfd044db15bd02a66d3ede48edec3", +"T3B1_es_test_tutorial_samson.py::test_tutorial_skip": "80df6e67b08426a81c40ac3b4e3023d23066466d1acf162076e22e8d8e3aaab9", "T3B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2c443ce1fa3eb94fe67f0dbd60e96592339ca9ac577b0957dd9b682c2bb36b00", "T3B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "0dc45eb75fdace12a9e9ce0a96edc4704bea32536eb4245c3a0dc01215dcec5e", "T3B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "bf3f38dcf4b05145115fda06e8034ac9981d1c2cee0e5b46da616ffb3a3ac691", @@ -9971,15 +9971,15 @@ "T3B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "976d9bc17095c021f98c6887876ce51b488e66f5ecac6eb50d43d18f2d1ab20a", "T3B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6f3fc913cd57ccd5c82e0c7bd4c2522667e881c9e44879a6c5968c4361efc601", "T3B1_fr_test_lock.py::test_hold_to_lock": "5d9ffde52ab2ddafa89d2cb9b1af731eae2c1f857270b03f2dd9bbffa0388ae8", -"T3B1_fr_test_passphrase_tr.py::test_cancel": "908362265114ee77f06f1e7955545bafdd1bfdcbb8a6977e59a37d756e2a4531", -"T3B1_fr_test_passphrase_tr.py::test_passphrase_delete": "2bd74430003b197efcb41c0078ff70290f1dcf26d6b7e1a5791da60fe2c68def", -"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "5be12d5c400bff47b9b5dfb2646cf29e2c04910c5b9164d23fe311f3b631e02c", -"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "b0ff35be406827b05b6f179b85ec2dd24a72a80e0cde855a4d2fe8dd30f4ba5d", -"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "a3c942450f5e76a2893896c18ad0cf9bf2c12330a1d1f5e735646322a05881cb", -"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "f38728a4b37b31638cd9b586133186e1046c7124cc73138054451fd53b7888fa", -"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5212daf9d00007b715015c948e0d570318efa12b4903b01189e65917984e8564", -"T3B1_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "f5773a3c2a785c5ceb421b7a5476d4c3a0c67b2856548712dcfb3c43841ae0e1", -"T3B1_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "4709a5428b3e15b92898f9d0b013f3a023cf8cd46c26c16caa3f2f2178f14074", +"T3B1_fr_test_passphrase_samson.py::test_cancel": "908362265114ee77f06f1e7955545bafdd1bfdcbb8a6977e59a37d756e2a4531", +"T3B1_fr_test_passphrase_samson.py::test_passphrase_delete": "2bd74430003b197efcb41c0078ff70290f1dcf26d6b7e1a5791da60fe2c68def", +"T3B1_fr_test_passphrase_samson.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUd-0f00decd": "5be12d5c400bff47b9b5dfb2646cf29e2c04910c5b9164d23fe311f3b631e02c", +"T3B1_fr_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3a5ac438": "b0ff35be406827b05b6f179b85ec2dd24a72a80e0cde855a4d2fe8dd30f4ba5d", +"T3B1_fr_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-ae44524f": "a3c942450f5e76a2893896c18ad0cf9bf2c12330a1d1f5e735646322a05881cb", +"T3B1_fr_test_passphrase_samson.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "f38728a4b37b31638cd9b586133186e1046c7124cc73138054451fd53b7888fa", +"T3B1_fr_test_passphrase_samson.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5212daf9d00007b715015c948e0d570318efa12b4903b01189e65917984e8564", +"T3B1_fr_test_passphrase_samson.py::test_passphrase_input_over_50_chars": "f5773a3c2a785c5ceb421b7a5476d4c3a0c67b2856548712dcfb3c43841ae0e1", +"T3B1_fr_test_passphrase_samson.py::test_passphrase_loop_all_characters": "4709a5428b3e15b92898f9d0b013f3a023cf8cd46c26c16caa3f2f2178f14074", "T3B1_fr_test_pin.py::test_last_digit_timeout": "1d0c58d4c6501e0f2c0a7bc9aadaab6589bfe589dd657ecaa4341c35f287ca77", "T3B1_fr_test_pin.py::test_pin_change": "cbdcfe62b4da47424446e0aba6bad30a361fce80b066883ec459b35e67a9b71d", "T3B1_fr_test_pin.py::test_pin_delete_hold": "49fd763ed6a8297ae57e4278cf1dc4ff05e1cd6fbd15ee6d17de7927ed25f17a", @@ -10003,9 +10003,9 @@ "T3B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ff07267e2ad313da865ce9f7fe79967ae695aa86e26cf23e4e40e7c715067de7", "T3B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "85b6a9ecacd10c539de2cefc9c47ea43264efd6b8ad47435b70bcc830cbb9ea5", "T3B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8d23cdcf4ef4d4ccbe3f55b0d3dbadd7a840affcb9376d58738c02f3870c04f0", -"T3B1_fr_test_tutorial_tr.py::test_tutorial_again_and_skip": "22e6f355a975bfbbefb1fef199f0bb8ef06298c11ff6a3d90a538e1156ea1f5f", -"T3B1_fr_test_tutorial_tr.py::test_tutorial_finish": "b1b7ff2fa57aebfd332a6c223109069f35e6b00ed1ff1c1d87f38de0068a57cb", -"T3B1_fr_test_tutorial_tr.py::test_tutorial_skip": "870a14914949e56527038d4e2a2751f50377b731601f21cceec33a6b808ed8e4", +"T3B1_fr_test_tutorial_samson.py::test_tutorial_again_and_skip": "22e6f355a975bfbbefb1fef199f0bb8ef06298c11ff6a3d90a538e1156ea1f5f", +"T3B1_fr_test_tutorial_samson.py::test_tutorial_finish": "b1b7ff2fa57aebfd332a6c223109069f35e6b00ed1ff1c1d87f38de0068a57cb", +"T3B1_fr_test_tutorial_samson.py::test_tutorial_skip": "870a14914949e56527038d4e2a2751f50377b731601f21cceec33a6b808ed8e4", "T3B1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ecfa049e216150365dfc618be5888a327f878fb73bc332638f8d5357e6186249", "T3B1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "900a8f5d48ff2a7a1ad9629cbfc27358dbbc3de7b76751098a10da9218e39a83", "T3B1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "697482703e6cd5e3943e75c9ec3e7e19826ae691552ee1381967802f03cf8481", @@ -10018,15 +10018,15 @@ "T3B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9db2bfdbc7439183bc1d4c1e31e5d76e0c3b2b37aea451a99ac849680a685827", "T3B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "07aa010d9a14feba221ad53fa2023569277a8197c1a64424daa7a134c135ac18", "T3B1_pt_test_lock.py::test_hold_to_lock": "ed436fdd2fa3f2af0b65aff219f96bbf33e7efb3e67bc363b47b5dbbabe00001", -"T3B1_pt_test_passphrase_tr.py::test_cancel": "81e200b1c9ea3a30715c44ca53ead278de2319c6605a5abb1426ca49bef9c4c7", -"T3B1_pt_test_passphrase_tr.py::test_passphrase_delete": "1c475d9606a3d729cd7cd4666530a25d52fc931bfb6f6a1dca959613a605f7b6", -"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "f6226e2355841898eb6a1374ce54b678abccc0f51ff4ad4c24bf42c0881bb185", -"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "a2fc105afd469d0d7f2f1b0aa19f20231caba42c65f493645a3053058b442189", -"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "4d46f303e2b1dd6e6a7a15acdfd2d81e455ed78083bedab99a452e7a00834476", -"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "410aed92ab6a2263dbadca4bfa8655d3bac4022148a92146499f97c07f2f6f33", -"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "35717edc82430d9f45906179ad1159ca36c22ce34e9674e3ac2b7f111363e012", -"T3B1_pt_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ad4039f8b22646bc7e99459bcc58cd5da3d841f438a489d2f104f311d52c3654", -"T3B1_pt_test_passphrase_tr.py::test_passphrase_loop_all_characters": "65307be1308d10bf0ea388a3e2fccbd1bddf3e24d9c98710939d190a9e833bee", +"T3B1_pt_test_passphrase_samson.py::test_cancel": "81e200b1c9ea3a30715c44ca53ead278de2319c6605a5abb1426ca49bef9c4c7", +"T3B1_pt_test_passphrase_samson.py::test_passphrase_delete": "1c475d9606a3d729cd7cd4666530a25d52fc931bfb6f6a1dca959613a605f7b6", +"T3B1_pt_test_passphrase_samson.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUd-0f00decd": "f6226e2355841898eb6a1374ce54b678abccc0f51ff4ad4c24bf42c0881bb185", +"T3B1_pt_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3a5ac438": "a2fc105afd469d0d7f2f1b0aa19f20231caba42c65f493645a3053058b442189", +"T3B1_pt_test_passphrase_samson.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-ae44524f": "4d46f303e2b1dd6e6a7a15acdfd2d81e455ed78083bedab99a452e7a00834476", +"T3B1_pt_test_passphrase_samson.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "410aed92ab6a2263dbadca4bfa8655d3bac4022148a92146499f97c07f2f6f33", +"T3B1_pt_test_passphrase_samson.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "35717edc82430d9f45906179ad1159ca36c22ce34e9674e3ac2b7f111363e012", +"T3B1_pt_test_passphrase_samson.py::test_passphrase_input_over_50_chars": "ad4039f8b22646bc7e99459bcc58cd5da3d841f438a489d2f104f311d52c3654", +"T3B1_pt_test_passphrase_samson.py::test_passphrase_loop_all_characters": "65307be1308d10bf0ea388a3e2fccbd1bddf3e24d9c98710939d190a9e833bee", "T3B1_pt_test_pin.py::test_last_digit_timeout": "3d3f3a628bfbda3e0bd03f147f938851d452bd1b5c42003f4e4a638c4fd6b063", "T3B1_pt_test_pin.py::test_pin_change": "8545c9646f5fa8ad55430e6dcc639038a48c37c5e31e5724484b73301cdcdc04", "T3B1_pt_test_pin.py::test_pin_delete_hold": "1472d889536e8be2816377039ff03f3dff737c4910188a8da10821fa1a200aad", @@ -10050,9 +10050,9 @@ "T3B1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "59731b4ed08e81ff635c4e0b4b0c624692aa219ce13ef9628c3efd64bbb10934", "T3B1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7e64206262cca0a00280555e699574dabf8c2d2a53d0eec6a517f97d03be1676", "T3B1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "93a2d834b2d34330bab01b0a4c2f58b1ac08aa0a70d8de4824afe7c1724b4529", -"T3B1_pt_test_tutorial_tr.py::test_tutorial_again_and_skip": "66ad72ccdba260a952de575fbeea7694250a5e3abdc28c88ea652fc5ad02ed09", -"T3B1_pt_test_tutorial_tr.py::test_tutorial_finish": "fc5b1c9c8edc34d5ed7bb43efae0b25250a13f27686cae28f3766c46b564b6e6", -"T3B1_pt_test_tutorial_tr.py::test_tutorial_skip": "0399d3c5ea99203085584cc25c814debf50c41474403507ba3a1d01f45b863e1" +"T3B1_pt_test_tutorial_samson.py::test_tutorial_again_and_skip": "66ad72ccdba260a952de575fbeea7694250a5e3abdc28c88ea652fc5ad02ed09", +"T3B1_pt_test_tutorial_samson.py::test_tutorial_finish": "fc5b1c9c8edc34d5ed7bb43efae0b25250a13f27686cae28f3766c46b564b6e6", +"T3B1_pt_test_tutorial_samson.py::test_tutorial_skip": "0399d3c5ea99203085584cc25c814debf50c41474403507ba3a1d01f45b863e1" }, "device_tests": { "T3B1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "a06576e7133f41d347bd0de24868093301ecaf73c5f4d4b689ce7fdc694fbd4f", @@ -18289,20 +18289,20 @@ "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "fac2cdb3b4806638929fdf2d97c5038a2d1333db7c1c331bffe5f60cd0ee976d", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7722114c8431b0ebb49f07428a03f54aaa894a4f17274b952f475f584dc3ac74", "T3T1_cs_test_lock.py::test_hold_to_lock": "008e9e7857137a528fdabdb8c345229b54ff30ac81121d348f760896bb983f24", -"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "c50284eafcac56ae79a885b69c41af731fbec058cb9c1b2c1530a0eba59578fc", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "82703969099c6b1e324bef09130969b4d6bd3e33ae79bc7c2f205cc9d05d807e", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "dc9bc34e1a63c051cd681cbf93d3c285debd6365d730f08f786fb62c4ec21d37", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "073bf9e87d020bc0b1cf7cc4eb88c2400ac2eeaca52f3e615e5e07b317eee6b4", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "8c9ad0f284011c9f8b4a420aa1e561d4e8d79372e15527c323dfd4df7f0e658a", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "ad596ab7750d02356f66b92bf1cdcb581a6debf0e13d6a82066ad89fadd2516a", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "dbbd7e7abdd5974d5f686694393e8482479619b5aad88327cf9ac3b4c9b32280", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5ff39279ecc92ee01f8080cf8c1838f73df239a64821ed1acd336aaeb0b0e6a7", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "f0397a52adbc6db15642b57287663b7c26538226883fdf32fcbda05a324a2a7a", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "dbe63a152374a1f6a21d5ca46e04bc8cdf11538563d32c183797d4633c3048ba", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "f0397a52adbc6db15642b57287663b7c26538226883fdf32fcbda05a324a2a7a", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "aa10b5ae0903d63d2079614a6d88576523ac5d45f9359c7a3d9d60ac39479fef", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6422550f3a7f8b777951300934d36f6e4e0f8e0e0b8104179f564178383d8820", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ed09230cc4dcd03e181ebb779b028104c53fa3865f386e0b93fc8bec3e9bcda0", +"T3T1_cs_test_passphrase_quicksilver.py::test_cycle_through_last_character": "c50284eafcac56ae79a885b69c41af731fbec058cb9c1b2c1530a0eba59578fc", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_click_same_button_many_times": "82703969099c6b1e324bef09130969b4d6bd3e33ae79bc7c2f205cc9d05d807e", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_delete": "dc9bc34e1a63c051cd681cbf93d3c285debd6365d730f08f786fb62c4ec21d37", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_delete_all": "073bf9e87d020bc0b1cf7cc4eb88c2400ac2eeaca52f3e615e5e07b317eee6b4", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_dollar_sign_deletion": "8c9ad0f284011c9f8b4a420aa1e561d4e8d79372e15527c323dfd4df7f0e658a", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLg-ef20f58e": "ad596ab7750d02356f66b92bf1cdcb581a6debf0e13d6a82066ad89fadd2516a", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "dbbd7e7abdd5974d5f686694393e8482479619b5aad88327cf9ac3b4c9b32280", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97y-09e853c2": "5ff39279ecc92ee01f8080cf8c1838f73df239a64821ed1acd336aaeb0b0e6a7", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-787665d5": "f0397a52adbc6db15642b57287663b7c26538226883fdf32fcbda05a324a2a7a", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-ac329eb3": "dbe63a152374a1f6a21d5ca46e04bc8cdf11538563d32c183797d4633c3048ba", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_input_over_50_chars": "f0397a52adbc6db15642b57287663b7c26538226883fdf32fcbda05a324a2a7a", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_long_spaces_deletion": "aa10b5ae0903d63d2079614a6d88576523ac5d45f9359c7a3d9d60ac39479fef", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_loop_all_characters": "6422550f3a7f8b777951300934d36f6e4e0f8e0e0b8104179f564178383d8820", +"T3T1_cs_test_passphrase_quicksilver.py::test_passphrase_prompt_disappears": "ed09230cc4dcd03e181ebb779b028104c53fa3865f386e0b93fc8bec3e9bcda0", "T3T1_cs_test_pin.py::test_last_digit_timeout": "be7bca4fd578cbc8aa829051878d92432c13641c5d2ddddc5566eb2101335608", "T3T1_cs_test_pin.py::test_pin_cancel": "cafc4112a2fa322bfe3a3418b741224782f89af94a721aa821a65210068d03ec", "T3T1_cs_test_pin.py::test_pin_change": "bf1b97f53d2c61123e000c1cfd000493f62deb9e57b0d95c79a01f15ec17cc87", @@ -18327,11 +18327,11 @@ "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "517c9cd77533d1a3d9cc99129a05d2911a7d8fbd8b5cbf20f6ae75cf82668b60", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6a64d2dc74861cc9e3dafc409d80e82ed79f7dd26b17cbc9da01fea539312f0c", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6a635af7e8952f9da1755c96a4f87e73465d4a00835f4f93f6b44a962b253026", -"T3T1_cs_test_tutorial_mercury.py::test_tutorial_ignore_menu": "6e2a63119cad3d4344ddd38b574995b1da1d7cba549de058e3be75146aed1d40", -"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_exit": "fecad098ed233a18aa9b9410aea68a9784b0d2a8ba329c46fedddb6964c45f54", -"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_funfact": "650e50f4f66d9bbd052b155644a0fba09644e6a3b130d1935e11a4377c6650bb", -"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_open_close": "6a48136d7e334bea0804f93057483c151eae696ce5f8fc5152bdf68498a5dfbc", -"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_repeat": "0b2780c4a1b49b0ca5d75e46e54f8a4be6f080f15653a84502ae625af9dbe40e", +"T3T1_cs_test_tutorial_quicksilver.py::test_tutorial_ignore_menu": "6e2a63119cad3d4344ddd38b574995b1da1d7cba549de058e3be75146aed1d40", +"T3T1_cs_test_tutorial_quicksilver.py::test_tutorial_menu_exit": "fecad098ed233a18aa9b9410aea68a9784b0d2a8ba329c46fedddb6964c45f54", +"T3T1_cs_test_tutorial_quicksilver.py::test_tutorial_menu_funfact": "650e50f4f66d9bbd052b155644a0fba09644e6a3b130d1935e11a4377c6650bb", +"T3T1_cs_test_tutorial_quicksilver.py::test_tutorial_menu_open_close": "6a48136d7e334bea0804f93057483c151eae696ce5f8fc5152bdf68498a5dfbc", +"T3T1_cs_test_tutorial_quicksilver.py::test_tutorial_menu_repeat": "0b2780c4a1b49b0ca5d75e46e54f8a4be6f080f15653a84502ae625af9dbe40e", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a1aadf56e16ee602bac9e36d1c35dfca21824b1a497ab44d6a4a4f1f64964777", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "33f92324ebac004f6e06c3a34e5d7f0495d5dbeba1bdb8c77b7e23635d32e5e1", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "c52c07eb9ccb6eff0cba71798d61fdc7b079c8b547e157919fb718f58b710862", @@ -18344,20 +18344,20 @@ "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a9c5e01e8dcf1e9f1a8b18cb3a3ec6a892823742f9ece4c404b4d5562d00dcf6", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "d80e7807b3fe0799bf503e483a7b9f969c45e8c241e755be2e976cc9e3136acd", "T3T1_de_test_lock.py::test_hold_to_lock": "f1914f56db5cec3b90e32e8e230ad88095fd440142fa21fa7617c2e60dc026a7", -"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "5479b3d89d4b012da273d984568de2feddb76a032382e9b6c1fe79537bb67aad", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "a545cc0425cdb20eeabf6287c040154b78da92d20109063b32f10adf9b625612", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "a351f8e01668b9fc8ed960510df87ffbb6f2744dd6d08562618478a2e1f29f6b", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "0e6a2d3f48c5a37478c75b00e3da4502771e696a3b678e9d5379699fe3c4d37f", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "b3bbd1502e2598bf65a97b7fa3ee17b7cc946312434df3c718ff524694d40c8d", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "72e69e958823e24ceb7fdff40ace2c3de29002c2c116f93425deb43b55caf456", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "7e215169b7ac4c278bf47b154a06314c381dcb4ade7dd2005476ed064516e59c", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "04b9b4e83e8cea2240339b3c66d1e324e7dc6b717eff9744096086a2e6612c39", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "6fec17f535504713bf6d8a3b21e85116a8b9653d311a23fd0ed26bf75d216a59", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "1e70fc310891e4a336c928497549b58ea2aaf63bacb61c4ac6821f23633cb7d8", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "6fec17f535504713bf6d8a3b21e85116a8b9653d311a23fd0ed26bf75d216a59", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "42b7fd13571777886f13c5f9afb7d6fac8c4530aa7b682806e1acd210b1d3882", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "47820e5f70c0c68fe5545b9adb3872f065f4dbc117d38333b7d8af3fe34cbe48", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "5f0dbf85426c0f8f5df1a47ea49e52bbc90785a64bba07c630965e90315bfa9d", +"T3T1_de_test_passphrase_quicksilver.py::test_cycle_through_last_character": "5479b3d89d4b012da273d984568de2feddb76a032382e9b6c1fe79537bb67aad", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_click_same_button_many_times": "a545cc0425cdb20eeabf6287c040154b78da92d20109063b32f10adf9b625612", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_delete": "a351f8e01668b9fc8ed960510df87ffbb6f2744dd6d08562618478a2e1f29f6b", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_delete_all": "0e6a2d3f48c5a37478c75b00e3da4502771e696a3b678e9d5379699fe3c4d37f", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_dollar_sign_deletion": "b3bbd1502e2598bf65a97b7fa3ee17b7cc946312434df3c718ff524694d40c8d", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLg-ef20f58e": "72e69e958823e24ceb7fdff40ace2c3de29002c2c116f93425deb43b55caf456", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "7e215169b7ac4c278bf47b154a06314c381dcb4ade7dd2005476ed064516e59c", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97y-09e853c2": "04b9b4e83e8cea2240339b3c66d1e324e7dc6b717eff9744096086a2e6612c39", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-787665d5": "6fec17f535504713bf6d8a3b21e85116a8b9653d311a23fd0ed26bf75d216a59", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-ac329eb3": "1e70fc310891e4a336c928497549b58ea2aaf63bacb61c4ac6821f23633cb7d8", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_input_over_50_chars": "6fec17f535504713bf6d8a3b21e85116a8b9653d311a23fd0ed26bf75d216a59", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_long_spaces_deletion": "42b7fd13571777886f13c5f9afb7d6fac8c4530aa7b682806e1acd210b1d3882", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_loop_all_characters": "47820e5f70c0c68fe5545b9adb3872f065f4dbc117d38333b7d8af3fe34cbe48", +"T3T1_de_test_passphrase_quicksilver.py::test_passphrase_prompt_disappears": "5f0dbf85426c0f8f5df1a47ea49e52bbc90785a64bba07c630965e90315bfa9d", "T3T1_de_test_pin.py::test_last_digit_timeout": "ab63a2f0be4fcccfd00ca27a981c271af4f56f2ce65b4385ed6ad40ac23855ca", "T3T1_de_test_pin.py::test_pin_cancel": "3d1c8dc5bd2303e0183a6d17112ea1127c1d100d304a5c20a332ad13890f6e11", "T3T1_de_test_pin.py::test_pin_change": "85249542b3af2540b58c05ba30c7fff0aae68d308a1221a35f4b6bec819469fe", @@ -18382,11 +18382,11 @@ "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2004c8a1e7bb82f1ee90b17f88b97702f02d3445450d09fe8af3daf71ec168da", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "cf2c49f980430da04d925e5b420aee7adc7f89bc4c504622346baa3bfe02f30f", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5c251af806843435f212a0b183a078afd2ba691b27bab190660e54af758b900a", -"T3T1_de_test_tutorial_mercury.py::test_tutorial_ignore_menu": "22e4d6bc417348955f4ea6dbcfa6d264840843af5fc41caa0af24add7687ab79", -"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_exit": "d964a0fc45cf45227704c04826a6e01d8e89b2408d1a75aa2087f08cb1ac310b", -"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_funfact": "3d158e77a57ce30191cfa88d6b20d9012a6450747181f8ae9028466fb0e56f2b", -"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_open_close": "3e0e2a1f9f6744a3575f775c149fbfbe78ca2f5f4053f07bd62103b023018c04", -"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_repeat": "d08c543ee4aee36b556d2487820e40d94f29f38c77eeb08a01b2acbae9c32df6", +"T3T1_de_test_tutorial_quicksilver.py::test_tutorial_ignore_menu": "22e4d6bc417348955f4ea6dbcfa6d264840843af5fc41caa0af24add7687ab79", +"T3T1_de_test_tutorial_quicksilver.py::test_tutorial_menu_exit": "d964a0fc45cf45227704c04826a6e01d8e89b2408d1a75aa2087f08cb1ac310b", +"T3T1_de_test_tutorial_quicksilver.py::test_tutorial_menu_funfact": "3d158e77a57ce30191cfa88d6b20d9012a6450747181f8ae9028466fb0e56f2b", +"T3T1_de_test_tutorial_quicksilver.py::test_tutorial_menu_open_close": "3e0e2a1f9f6744a3575f775c149fbfbe78ca2f5f4053f07bd62103b023018c04", +"T3T1_de_test_tutorial_quicksilver.py::test_tutorial_menu_repeat": "d08c543ee4aee36b556d2487820e40d94f29f38c77eeb08a01b2acbae9c32df6", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "9b9e2909949bd8d0d9db7cf7c4ee754761496cf118deda242d07302ead3db3e6", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "58db6349781785ef6843ff7570ecb7e0a812d73a32a1112bdd8b694a22a5622e", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "30f8b1be9d49479c5f2848363b27671086b86d5779e030eeab28ac802860c757", @@ -18399,20 +18399,20 @@ "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "48bcdaa7fe4503e0019a2dfc5325e5090e7353d8f7b09227b203be855292734a", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "737ae36f4bd9e70247c317be97fd64061d2430bcfaad9aadb803b714a15b0f59", "T3T1_en_test_lock.py::test_hold_to_lock": "b4ca63c91c71fa0fa234c75414fd164b5894ff5d65fc99e5b3e25585c0869ac9", -"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "bfe9b72679d7a96ef7556eb229c5b2ffe317e3f00a8a75d3dd6a23569a2e2b03", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "589339a475590c04a58d125feab17a459103ae1ba1564bdaf75d87290802cabe", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "aaecc001b2dc624bfd1e62f5b908a9adab997d9cfd4eb742ee94388cd18ed16e", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "beee4c8e93857b3dc9229aefe34919dca39c327876d98fbe2b7b0d676ef84884", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "45eb7d9f2deb84ee105978c13fa7bdd0639dbfb75399bdabf5cb3eeaf051ae29", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "2d7dbb776dabd5b67ff3cd9576713bee98a658c3feaef788f15b9ac5943440c4", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "2b138f5b450c6cbe1b4b22c84ccca5d00ce65383710cf18b9a6a245f9849c6da", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "757fb127aefcc01a5cbf35b9ea7fb457f3a217df13eefa3290ac35bc7159bfbe", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "3987e9840c5ce6c637b0b050217a6bc1aa04636e69f9d111f482c8ae95e10e9f", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "7c2ee5a5a96939d09b9ad3927efcb87d3bec5db8fa3ab712b1571d0b995f2341", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "3987e9840c5ce6c637b0b050217a6bc1aa04636e69f9d111f482c8ae95e10e9f", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "76bcf47232ad0b2efd6847a0c167ef687516032b1f00bc5ae426add81ada5718", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "b47f39928aa3942ef0ae0c37fa1b9babcf9a056e14cb79672076b81dbb4e60a1", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "618a3f28184eba404c7c8c22403b059384adf77caab19db9ea291adc732ead65", +"T3T1_en_test_passphrase_quicksilver.py::test_cycle_through_last_character": "bfe9b72679d7a96ef7556eb229c5b2ffe317e3f00a8a75d3dd6a23569a2e2b03", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_click_same_button_many_times": "589339a475590c04a58d125feab17a459103ae1ba1564bdaf75d87290802cabe", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_delete": "aaecc001b2dc624bfd1e62f5b908a9adab997d9cfd4eb742ee94388cd18ed16e", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_delete_all": "beee4c8e93857b3dc9229aefe34919dca39c327876d98fbe2b7b0d676ef84884", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_dollar_sign_deletion": "45eb7d9f2deb84ee105978c13fa7bdd0639dbfb75399bdabf5cb3eeaf051ae29", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLg-ef20f58e": "2d7dbb776dabd5b67ff3cd9576713bee98a658c3feaef788f15b9ac5943440c4", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "2b138f5b450c6cbe1b4b22c84ccca5d00ce65383710cf18b9a6a245f9849c6da", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97y-09e853c2": "757fb127aefcc01a5cbf35b9ea7fb457f3a217df13eefa3290ac35bc7159bfbe", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-787665d5": "3987e9840c5ce6c637b0b050217a6bc1aa04636e69f9d111f482c8ae95e10e9f", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-ac329eb3": "7c2ee5a5a96939d09b9ad3927efcb87d3bec5db8fa3ab712b1571d0b995f2341", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_input_over_50_chars": "3987e9840c5ce6c637b0b050217a6bc1aa04636e69f9d111f482c8ae95e10e9f", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_long_spaces_deletion": "76bcf47232ad0b2efd6847a0c167ef687516032b1f00bc5ae426add81ada5718", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_loop_all_characters": "b47f39928aa3942ef0ae0c37fa1b9babcf9a056e14cb79672076b81dbb4e60a1", +"T3T1_en_test_passphrase_quicksilver.py::test_passphrase_prompt_disappears": "618a3f28184eba404c7c8c22403b059384adf77caab19db9ea291adc732ead65", "T3T1_en_test_pin.py::test_last_digit_timeout": "009dcb34a9d17f32001f82e0ab7dd4a028d00233df2718b7b208d1b7b520e8ff", "T3T1_en_test_pin.py::test_pin_cancel": "9e676c054a1fa6b28863b19bb20c3b6cdf02fa5fb719e7a6fe3ef319d271a909", "T3T1_en_test_pin.py::test_pin_change": "b4ee133b0dfd5afc7c14d5aea9e37baddce6486399f1b1919b300819299786b5", @@ -18437,11 +18437,11 @@ "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "90a6f1ee6d6d27f625cd3128b31c9f4aeb3bfb1c3f67cf03fc4a2d29c0eacee6", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "857d815808abab5eac7b3b4667678c91b9b38612fe5f0163938344fd2a175d7c", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9ec34e2ea6e09497a7f106935714be82d05677d0f297f09670fe8d7a9634aed2", -"T3T1_en_test_tutorial_mercury.py::test_tutorial_ignore_menu": "d2b68c41e596318c64a92eedff38cc23e06c4f47017304452089914b292bf436", -"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_exit": "29c700ae02b307ad1a856c549d593e465173652d29788dba64512dcb85046f52", -"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_funfact": "056dee0f3035a04e11f117549eb4deca9445e197060f38ae7ed232bbe9af9a8d", -"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_open_close": "1e626ce8e0f1a161319ac67014ebcc844833168c3e91e349dc20ad16ba1718fb", -"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_repeat": "01ebe123ffb15e9555cd6ab58a5422441b149b97edcb2f58f808f4e8a43f2c43", +"T3T1_en_test_tutorial_quicksilver.py::test_tutorial_ignore_menu": "d2b68c41e596318c64a92eedff38cc23e06c4f47017304452089914b292bf436", +"T3T1_en_test_tutorial_quicksilver.py::test_tutorial_menu_exit": "29c700ae02b307ad1a856c549d593e465173652d29788dba64512dcb85046f52", +"T3T1_en_test_tutorial_quicksilver.py::test_tutorial_menu_funfact": "056dee0f3035a04e11f117549eb4deca9445e197060f38ae7ed232bbe9af9a8d", +"T3T1_en_test_tutorial_quicksilver.py::test_tutorial_menu_open_close": "1e626ce8e0f1a161319ac67014ebcc844833168c3e91e349dc20ad16ba1718fb", +"T3T1_en_test_tutorial_quicksilver.py::test_tutorial_menu_repeat": "01ebe123ffb15e9555cd6ab58a5422441b149b97edcb2f58f808f4e8a43f2c43", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "37d3369c6a48afb2943bda5bb1721ea019077c42a9296c91e2c79268fb54a998", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "48094d68cb13c59c17d26449ae06b574d1eaa661174f8734a759dec6cf13ac56", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "7f1d8a8dbaa679f7b5e24929039a373ade137cc3f73b80fdfdd24355bde9eeaa", @@ -18454,20 +18454,20 @@ "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "449f2fbf27081afd611b117260026d7ae54b6918531747affa416b5e98bcb87a", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "d6a87da637284667271481fd38d8186de3a338e96d824f2df9f603c5bbd16210", "T3T1_es_test_lock.py::test_hold_to_lock": "25ff10a405a3050bee8e4ae17f9665f74d14cd7e4efc1d3b5dc2ea76fae59705", -"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "84aeacbc3d043929234703fb3dccd72c7bdc0d3bb0f28fb48ca1e7fbbb4d0f43", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "3cd7320d1c4c19f4d3931c264aedfd88578f1a5b25b76682235d255c72a8c9af", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "212fba34f984cab514d0d8acc7ea42b7a27d57123e4321ad19a5e481dac8324a", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "98ddb83a20fba6a4add7c67853beb0a21a75361498156aa1065bb74d7b2914a2", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "505ded757d720b3ec87e12127cfc398fa8af0f24bed826499072c49b3e22a5a2", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "8824aebff8c9f9e058570441796178a7f27989f6ee38f582a1b901d4ecfb98db", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "075547f290aeca437bbaa568fbc8f6899db88a6962cfcf8f781520d612099c57", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "79c6a0f823bee2505360ae62a61096b9d86bf9967cbaf002e1a9babdc712789c", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "da7c751102a99b85f96ede00d20559d9b853c4ea0aa790761fed4581e02e64d0", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "15d200f00654a727b000337bcac711a654f15daaa67518bc1e09b06335d03cf7", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "da7c751102a99b85f96ede00d20559d9b853c4ea0aa790761fed4581e02e64d0", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "f31ce5f8302389f97750b256b0b485435e91ec5ee08747b59ada72237e4fb8da", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "e111e7f242da77a574582e1405d1404065a7bd4509f457c46ef367fd66dbef93", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "5361fde031f692aa40f32e0c218f5c7cb9eb7ebdfcd75525a437ab29bc11ef05", +"T3T1_es_test_passphrase_quicksilver.py::test_cycle_through_last_character": "84aeacbc3d043929234703fb3dccd72c7bdc0d3bb0f28fb48ca1e7fbbb4d0f43", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_click_same_button_many_times": "3cd7320d1c4c19f4d3931c264aedfd88578f1a5b25b76682235d255c72a8c9af", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_delete": "212fba34f984cab514d0d8acc7ea42b7a27d57123e4321ad19a5e481dac8324a", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_delete_all": "98ddb83a20fba6a4add7c67853beb0a21a75361498156aa1065bb74d7b2914a2", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_dollar_sign_deletion": "505ded757d720b3ec87e12127cfc398fa8af0f24bed826499072c49b3e22a5a2", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLg-ef20f58e": "8824aebff8c9f9e058570441796178a7f27989f6ee38f582a1b901d4ecfb98db", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "075547f290aeca437bbaa568fbc8f6899db88a6962cfcf8f781520d612099c57", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97y-09e853c2": "79c6a0f823bee2505360ae62a61096b9d86bf9967cbaf002e1a9babdc712789c", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-787665d5": "da7c751102a99b85f96ede00d20559d9b853c4ea0aa790761fed4581e02e64d0", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-ac329eb3": "15d200f00654a727b000337bcac711a654f15daaa67518bc1e09b06335d03cf7", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_input_over_50_chars": "da7c751102a99b85f96ede00d20559d9b853c4ea0aa790761fed4581e02e64d0", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_long_spaces_deletion": "f31ce5f8302389f97750b256b0b485435e91ec5ee08747b59ada72237e4fb8da", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_loop_all_characters": "e111e7f242da77a574582e1405d1404065a7bd4509f457c46ef367fd66dbef93", +"T3T1_es_test_passphrase_quicksilver.py::test_passphrase_prompt_disappears": "5361fde031f692aa40f32e0c218f5c7cb9eb7ebdfcd75525a437ab29bc11ef05", "T3T1_es_test_pin.py::test_last_digit_timeout": "da1dcc0ba67e32d4ed1e66adf8bb5b31bf294ba6e5bb0b6405297a46ee452ad3", "T3T1_es_test_pin.py::test_pin_cancel": "f1257d486cbb7cf38e201755768e4585b2ca9eec9109f50e56adf9b8b26283ff", "T3T1_es_test_pin.py::test_pin_change": "c6d1933ac2e0f55a6dea848527d67c57ca1fe79b609f12304b870d040f0681bb", @@ -18492,11 +18492,11 @@ "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b2a94e0b7b6aeb4056ea3df78c32f90f1c4d824046f3c92695a42dc58247b430", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "62766def58471ce493d7926d378884743b850354962b42f0eb8713caca83d3b5", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d164fe4aa96fb27de0d305f25bd2fe90b3563b53a5afa444fcfe8d0cdbaec171", -"T3T1_es_test_tutorial_mercury.py::test_tutorial_ignore_menu": "f170f4496264f8952bebb1547a3838d34cad9ad6cdf1e53e47fc2b4e44b4cbfb", -"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_exit": "fe1f116750a85da00f70ef21e57ce6d12db1820e8b6b600b6f40a90933874c98", -"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_funfact": "77f14a8575a4a65d48697a2d8ab07ab062b2f3aeb0b2c1b35844fb4c9fc8c519", -"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_open_close": "05dd76e07fc5770a4261671ba2c11005974df84514c959deb96d8bf4d9ffbf71", -"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_repeat": "1df0f55fb654dd9a2ed82cd258ad4927bc7795b0f4a6fbdc64b53487cadedc7e", +"T3T1_es_test_tutorial_quicksilver.py::test_tutorial_ignore_menu": "f170f4496264f8952bebb1547a3838d34cad9ad6cdf1e53e47fc2b4e44b4cbfb", +"T3T1_es_test_tutorial_quicksilver.py::test_tutorial_menu_exit": "fe1f116750a85da00f70ef21e57ce6d12db1820e8b6b600b6f40a90933874c98", +"T3T1_es_test_tutorial_quicksilver.py::test_tutorial_menu_funfact": "77f14a8575a4a65d48697a2d8ab07ab062b2f3aeb0b2c1b35844fb4c9fc8c519", +"T3T1_es_test_tutorial_quicksilver.py::test_tutorial_menu_open_close": "05dd76e07fc5770a4261671ba2c11005974df84514c959deb96d8bf4d9ffbf71", +"T3T1_es_test_tutorial_quicksilver.py::test_tutorial_menu_repeat": "1df0f55fb654dd9a2ed82cd258ad4927bc7795b0f4a6fbdc64b53487cadedc7e", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "239a61de3bec014d42f762a2fd9e9d373ecf464ecd64b5f45d81ecae7dd76934", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "608ad7b3ce68b7421a0222fb45b9e9ed9651d8b9c75a2d0f3b2bed9823c2ee17", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "f8c1b6a911a628923253614af086d2cb757586326f1571f6a3bbf9331e7956bd", @@ -18509,20 +18509,20 @@ "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "e4e00ae71b7c75513c85387cd87aabee6c83aa50a3c027eee671613be15be135", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "fa4fa3205412be60d1890c4a385e66003f3b2afe041dce0b646cbef536a00caa", "T3T1_fr_test_lock.py::test_hold_to_lock": "b4a79c04782cf6a422f731b2984cf6457d14458907ad62eeff2788596734201c", -"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "eade578f09bef8d45a2947d551be705cd6a965cc3f4ba0f4cb19f4bc6ccad229", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "3e9ace72613cd66b99723b0e240397cda4ad7d0b53d51d70afb1848b846558dd", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "76c73fa4aa95b1456a73a4a702070f8d1e4e1621deadf800c3a666016695bfb1", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "00fda4440890477e576f52abb53307739913652112db2fd6513cde1205bb592e", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "68f17d282a7d14fd48b81bbce9dbf062b4bc2543bbeba4c0d870c3e8b4c88bb4", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "076d980ed04dd7ff8f40a2001a2380d7290a23e0c247da10a2c34727b0654879", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "353ab91e078508d9b2815cd718510634c52664bf9ac27a8daa902e7b19bb91c8", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "04d44628eca02967820f391f02eaead6e2811f8b0ad94f8584f65aa136e126a7", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "dc5fc5b63f499df0876aecc956e4738c4275d0dccad2978e7013b1aa86d66424", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4e7d639cdac426bc0c831e130b438b527b3d61eed8b50306d5cfff9711c7393a", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "dc5fc5b63f499df0876aecc956e4738c4275d0dccad2978e7013b1aa86d66424", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "03c08d5b5329a6a3ed5be05302dadf2a4721eb655210b5e4069b110816850795", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "634c9b42a9cd5fadbfa8793fd0844d8e84f80997bf52b7941333f9b193c5c3e0", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "636816e3224b253aab48403cd198fcf62f2b6a6ee4df95bcebb5c951948d9ee4", +"T3T1_fr_test_passphrase_quicksilver.py::test_cycle_through_last_character": "eade578f09bef8d45a2947d551be705cd6a965cc3f4ba0f4cb19f4bc6ccad229", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_click_same_button_many_times": "3e9ace72613cd66b99723b0e240397cda4ad7d0b53d51d70afb1848b846558dd", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_delete": "76c73fa4aa95b1456a73a4a702070f8d1e4e1621deadf800c3a666016695bfb1", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_delete_all": "00fda4440890477e576f52abb53307739913652112db2fd6513cde1205bb592e", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_dollar_sign_deletion": "68f17d282a7d14fd48b81bbce9dbf062b4bc2543bbeba4c0d870c3e8b4c88bb4", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLg-ef20f58e": "076d980ed04dd7ff8f40a2001a2380d7290a23e0c247da10a2c34727b0654879", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "353ab91e078508d9b2815cd718510634c52664bf9ac27a8daa902e7b19bb91c8", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97y-09e853c2": "04d44628eca02967820f391f02eaead6e2811f8b0ad94f8584f65aa136e126a7", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-787665d5": "dc5fc5b63f499df0876aecc956e4738c4275d0dccad2978e7013b1aa86d66424", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-ac329eb3": "4e7d639cdac426bc0c831e130b438b527b3d61eed8b50306d5cfff9711c7393a", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_input_over_50_chars": "dc5fc5b63f499df0876aecc956e4738c4275d0dccad2978e7013b1aa86d66424", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_long_spaces_deletion": "03c08d5b5329a6a3ed5be05302dadf2a4721eb655210b5e4069b110816850795", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_loop_all_characters": "634c9b42a9cd5fadbfa8793fd0844d8e84f80997bf52b7941333f9b193c5c3e0", +"T3T1_fr_test_passphrase_quicksilver.py::test_passphrase_prompt_disappears": "636816e3224b253aab48403cd198fcf62f2b6a6ee4df95bcebb5c951948d9ee4", "T3T1_fr_test_pin.py::test_last_digit_timeout": "ac5af8617d22ffdc05328dc9dba1564bda80324ca734e1cbee5a3f8c063b5f3b", "T3T1_fr_test_pin.py::test_pin_cancel": "f566b5ef1b01df0fc96291eac714a44f3ab85d3bfbe43fd930d674797dd3bbe4", "T3T1_fr_test_pin.py::test_pin_change": "791a620e49606a5591ad168d1bdd2999ae26f34a8dff90df7d2eeb7d428e50de", @@ -18547,11 +18547,11 @@ "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "57afda44d1e0d68bddc3307d3af40fee5e301984c049b20f84d4cace14e5ac7c", "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6a3a177142a626907878679191a2c4c7b549d8536e4d2c693e8035e95764be59", "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "81c3c6dd66a3c837948ab40c7e35a34c797b0654aee389d69b6b521a44720839", -"T3T1_fr_test_tutorial_mercury.py::test_tutorial_ignore_menu": "fb7356f92e00442b4151c0750f3580c7eb7006211b976371742c633e5d24ef50", -"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_exit": "20fbcfde484270b2fc45857e50f9b7afb5c7e876a2441aa271d02e1954f6cd42", -"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_funfact": "508cc6cc186cd738f1ff11d85c68d74825ba02a3b0f1624fa3d9eadeec466723", -"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_open_close": "d521123bacf2dbb487738f8f5afd75c17f9e976401f8df7906bad97a3638a1d1", -"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_repeat": "605e9d23ec2a71e53d28bef9649e220a8f2640a0ef10247ef920396e16b0d339", +"T3T1_fr_test_tutorial_quicksilver.py::test_tutorial_ignore_menu": "fb7356f92e00442b4151c0750f3580c7eb7006211b976371742c633e5d24ef50", +"T3T1_fr_test_tutorial_quicksilver.py::test_tutorial_menu_exit": "20fbcfde484270b2fc45857e50f9b7afb5c7e876a2441aa271d02e1954f6cd42", +"T3T1_fr_test_tutorial_quicksilver.py::test_tutorial_menu_funfact": "508cc6cc186cd738f1ff11d85c68d74825ba02a3b0f1624fa3d9eadeec466723", +"T3T1_fr_test_tutorial_quicksilver.py::test_tutorial_menu_open_close": "d521123bacf2dbb487738f8f5afd75c17f9e976401f8df7906bad97a3638a1d1", +"T3T1_fr_test_tutorial_quicksilver.py::test_tutorial_menu_repeat": "605e9d23ec2a71e53d28bef9649e220a8f2640a0ef10247ef920396e16b0d339", "T3T1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b8e345283fcc8498d8f0c7f1ad3f5f52777262d9a912a7002ab0ac56a3f3783a", "T3T1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "be364f29b4bc13986e26ab5b98e509d9c82418aea4c5417f77908c93878e4e21", "T3T1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "a40598aa4756d221c94d72cd092de1ec3f1140d258562a864176a5af1a4575f5", @@ -18564,20 +18564,20 @@ "T3T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "523e365ff305bec6a754ac67efb11919300e12387f9c048b3ab668a9ec9144e2", "T3T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "743ea2e8047f75eaad8c98988cda4a68b52cbb356b6fb11c83dba0040daeeda3", "T3T1_pt_test_lock.py::test_hold_to_lock": "11eafea6b15f8f6e9abd932233f7d87bdc10f527f15b362f45c9b2992ce42091", -"T3T1_pt_test_passphrase_mercury.py::test_cycle_through_last_character": "34f794c37c42d5d48fe7488291da0eaa64c73ae4a68e5700da5cbbaab67127df", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "7c66cc121524b4930f78c6d04045271281d3b95d7b574792974eab8b7e60b60a", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_delete": "7a9621e814820c8e34d31c53bc511a0513e9409ad2af4357c8d4d02863b1db54", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_delete_all": "17b9dd0e0154d2f8a5bd72f84fbc3df5850af6547f8fd8ff873481aa47b35f10", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "ed76567916be7c4792b2883051cfef592f7b869d4c236dfe4719c40cb9741bd7", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "32ff45d856030e399c7a6b9986700959c7f3d6d56ae977ef9728629ebd58b5e2", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6782faf514031298fbb27b986bbfa86ba1ac2e0bb9948c0ddfcc01ed0aab8457", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ab0a374dbc7cdfa55a3d002fda9528b43b32f467c5b5c8a86a94dc33c28924f9", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "ae4872c9ffe24cdd4b72414f47a6445e7c1ea880f786e22b2a46254bf71fa0ff", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "b22de26ed81d60845cc533d220f98254a87568921431cca5ed7b8e8a2166feda", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "ae4872c9ffe24cdd4b72414f47a6445e7c1ea880f786e22b2a46254bf71fa0ff", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "3edfec06a86b7d7cf7ae1cd1e97b9a8d7bb0d8d855b94e4c88c1b6098e8fa89e", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "265e14a603c4cf25b2a38ca23fb594c1b51bfc33164993b5df5ca2ee2245b2e6", -"T3T1_pt_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "d9100a96878999cc4ad31c5428d8cd7a9ba6271a2cb7d86c5234996fff0715a5", +"T3T1_pt_test_passphrase_quicksilver.py::test_cycle_through_last_character": "34f794c37c42d5d48fe7488291da0eaa64c73ae4a68e5700da5cbbaab67127df", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_click_same_button_many_times": "7c66cc121524b4930f78c6d04045271281d3b95d7b574792974eab8b7e60b60a", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_delete": "7a9621e814820c8e34d31c53bc511a0513e9409ad2af4357c8d4d02863b1db54", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_delete_all": "17b9dd0e0154d2f8a5bd72f84fbc3df5850af6547f8fd8ff873481aa47b35f10", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_dollar_sign_deletion": "ed76567916be7c4792b2883051cfef592f7b869d4c236dfe4719c40cb9741bd7", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLg-ef20f58e": "32ff45d856030e399c7a6b9986700959c7f3d6d56ae977ef9728629ebd58b5e2", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6782faf514031298fbb27b986bbfa86ba1ac2e0bb9948c0ddfcc01ed0aab8457", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97y-09e853c2": "ab0a374dbc7cdfa55a3d002fda9528b43b32f467c5b5c8a86a94dc33c28924f9", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-787665d5": "ae4872c9ffe24cdd4b72414f47a6445e7c1ea880f786e22b2a46254bf71fa0ff", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadad-ac329eb3": "b22de26ed81d60845cc533d220f98254a87568921431cca5ed7b8e8a2166feda", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_input_over_50_chars": "ae4872c9ffe24cdd4b72414f47a6445e7c1ea880f786e22b2a46254bf71fa0ff", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_long_spaces_deletion": "3edfec06a86b7d7cf7ae1cd1e97b9a8d7bb0d8d855b94e4c88c1b6098e8fa89e", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_loop_all_characters": "265e14a603c4cf25b2a38ca23fb594c1b51bfc33164993b5df5ca2ee2245b2e6", +"T3T1_pt_test_passphrase_quicksilver.py::test_passphrase_prompt_disappears": "d9100a96878999cc4ad31c5428d8cd7a9ba6271a2cb7d86c5234996fff0715a5", "T3T1_pt_test_pin.py::test_last_digit_timeout": "e3e42576a552adc2058d72329a4797924d64bac699067bdef1b77db1a615b56b", "T3T1_pt_test_pin.py::test_pin_cancel": "bb5b541dc64dadb1dff07deff7b9dda59fac608b2ebab0eb2b9187816197d199", "T3T1_pt_test_pin.py::test_pin_change": "17cc11ac363f14173f7a557a1bbcd985d7e34ab4422bda5a81e89ce0f7f076f0", @@ -18602,11 +18602,11 @@ "T3T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "729afad7e7d5f25681efcec62c33cd4de5a9d37fb32be0b7d03b8990a09b2241", "T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "652472d830d8c98e692df2c4bb0055c5d223f1382957082968667dde04e11cbc", "T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "aacc346b4f421e842c8a7c252a1809310fb4b65602f629fab262ed9c646ffee6", -"T3T1_pt_test_tutorial_mercury.py::test_tutorial_ignore_menu": "fbccc3c9a35c7fdbd73d7ed0660d295b819c1c4aced8fb2704e2eb5a81e586c0", -"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_exit": "6ca84667bee1d9af1e9c27207b7a37c2de1e4a6435ec934a0e086891d4358ed2", -"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_funfact": "3bac24378884a50e40215e31fc94db5fa25d4a9a50720736fc939ecc975bb752", -"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_open_close": "39491badb5a5a3172992036cb5c27c3107f280a4b5e1b10000cafbe8b72cb41d", -"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_repeat": "7ef10cf68700559bce5b35f416f1148a071453a1efb32c39abe23fbaa156f4ef" +"T3T1_pt_test_tutorial_quicksilver.py::test_tutorial_ignore_menu": "fbccc3c9a35c7fdbd73d7ed0660d295b819c1c4aced8fb2704e2eb5a81e586c0", +"T3T1_pt_test_tutorial_quicksilver.py::test_tutorial_menu_exit": "6ca84667bee1d9af1e9c27207b7a37c2de1e4a6435ec934a0e086891d4358ed2", +"T3T1_pt_test_tutorial_quicksilver.py::test_tutorial_menu_funfact": "3bac24378884a50e40215e31fc94db5fa25d4a9a50720736fc939ecc975bb752", +"T3T1_pt_test_tutorial_quicksilver.py::test_tutorial_menu_open_close": "39491badb5a5a3172992036cb5c27c3107f280a4b5e1b10000cafbe8b72cb41d", +"T3T1_pt_test_tutorial_quicksilver.py::test_tutorial_menu_repeat": "7ef10cf68700559bce5b35f416f1148a071453a1efb32c39abe23fbaa156f4ef" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "19a05d5056795bd4c2a4417d0fa44bec6f9dee82544122d07ad7ade95e2a2d97", diff --git a/vendor/fido2-tests b/vendor/fido2-tests index 93a68b36f6e..aef9ddc95d3 160000 --- a/vendor/fido2-tests +++ b/vendor/fido2-tests @@ -1 +1 @@ -Subproject commit 93a68b36f6eeaa605b11d7330aa04f6ae874cf61 +Subproject commit aef9ddc95d3661ac1864e4fb77287905b0913e12