chore(core/eckhart): update homescreen action bar labels
What changed, and why it matters
This commit only changes the text labels shown on the Trezor Safe 7 (Eckhart) home screen action bar. It replaces 'Tap to connect' with 'Tap to start' on the boot screen and 'Tap to unlock' with 'Unlock' on the lock screen, plus adds the new translation key and updates translation metadata. There is no security-relevant code change.
No security action required; treat as a normal UI/translation update.
Security signals we found
No strong security signals were identified.
Evidence from the diff
A UI-only string refactor in the Rust firmware for the Eckhart layout. Adds a new translation key lockscreen__unlock and switches homebar_content to use instructions__tap_to_start and lockscreen__unlock. Translation order, mock keys, generated qstrs, and signature metadata are regenerated accordingly. No logic, authentication, cryptography, or input-handling code is modified.
Changed components
core/embed/rust/src/ui/layout_eckhart/firmware/homescreen.rscore/translations/en.jsoncore/embed/rust/src/translations/generated/translated_string.rscore/embed/rust/librust_qstr.hcore/mocks/trezortranslate_keys.pyicore/translations/order.jsoncore/translations/signatures.jsonInspect captured patch +13 / −6
diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h
index 80625658..f3ed3045 100644
--- a/core/embed/rust/librust_qstr.h
+++ b/core/embed/rust/librust_qstr.h
@@ -415,6 +415,7 @@ static void _librust_qstrs(void) {
MP_QSTR_lockscreen__tap_to_unlock;
MP_QSTR_lockscreen__title_locked;
MP_QSTR_lockscreen__title_not_connected;
+ MP_QSTR_lockscreen__unlock;
MP_QSTR_max_count;
MP_QSTR_max_feerate;
MP_QSTR_max_len;
diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs
index 510a8e02..585180d0 100644
--- a/core/embed/rust/src/translations/generated/translated_string.rs
+++ b/core/embed/rust/src/translations/generated/translated_string.rs
@@ -1509,6 +1509,7 @@ pub enum TranslatedString {
wipe__start_again = 1118, // "Wipe your Trezor and start the setup process again."
words__set = 1119, // "Set"
words__wipe = 1120, // "Wipe"
+ lockscreen__unlock = 1121, // "Unlock"
}
impl TranslatedString {
@@ -3337,6 +3338,7 @@ impl TranslatedString {
(Self::wipe__start_again, "Wipe your Trezor and start the setup process again."),
(Self::words__set, "Set"),
(Self::words__wipe, "Wipe"),
+ (Self::lockscreen__unlock, "Unlock"),
];
#[cfg(feature = "micropython")]
@@ -4024,6 +4026,7 @@ impl TranslatedString {
(Qstr::MP_QSTR_lockscreen__tap_to_unlock, Self::lockscreen__tap_to_unlock),
(Qstr::MP_QSTR_lockscreen__title_locked, Self::lockscreen__title_locked),
(Qstr::MP_QSTR_lockscreen__title_not_connected, Self::lockscreen__title_not_connected),
+ (Qstr::MP_QSTR_lockscreen__unlock, Self::lockscreen__unlock),
(Qstr::MP_QSTR_misc__decrypt_value, Self::misc__decrypt_value),
(Qstr::MP_QSTR_misc__enable_labeling, Self::misc__enable_labeling),
(Qstr::MP_QSTR_misc__encrypt_value, Self::misc__encrypt_value),
diff --git a/core/embed/rust/src/ui/layout_eckhart/firmware/homescreen.rs b/core/embed/rust/src/ui/layout_eckhart/firmware/homescreen.rs
index 1a7ff130..49b0d838 100644
--- a/core/embed/rust/src/ui/layout_eckhart/firmware/homescreen.rs
+++ b/core/embed/rust/src/ui/layout_eckhart/firmware/homescreen.rs
@@ -118,9 +118,9 @@ impl Homescreen {
fn homebar_content(bootscreen: bool, locked: bool) -> ButtonContent {
let text = if bootscreen {
- Some(TR::lockscreen__tap_to_connect.into())
+ Some(TR::instructions__tap_to_start.into())
} else if locked {
- Some(TR::lockscreen__tap_to_unlock.into())
+ Some(TR::lockscreen__unlock.into())
} else {
None
};
diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi
index 6c383d0d..0dc3f309 100644
--- a/core/mocks/trezortranslate_keys.pyi
+++ b/core/mocks/trezortranslate_keys.pyi
@@ -449,6 +449,7 @@ class TR:
lockscreen__tap_to_unlock: str = "Tap to unlock"
lockscreen__title_locked: str = "Locked"
lockscreen__title_not_connected: str = "Not connected"
+ lockscreen__unlock: str = "Unlock"
misc__decrypt_value: str = "Decrypt value"
misc__enable_labeling: str = "Enable labeling?"
misc__encrypt_value: str = "Encrypt value"
diff --git a/core/translations/en.json b/core/translations/en.json
index 5ac0c8dd..f6b02da6 100644
--- a/core/translations/en.json
+++ b/core/translations/en.json
@@ -514,6 +514,7 @@
"led__title": "LED",
"lockscreen__tap_to_connect": "Tap to connect",
"lockscreen__tap_to_unlock": "Tap to unlock",
+ "lockscreen__unlock": "Unlock",
"lockscreen__title_locked": "Locked",
"lockscreen__title_not_connected": "Not connected",
"misc__decrypt_value": "Decrypt value",
diff --git a/core/translations/order.json b/core/translations/order.json
index 9c12fa64..7ab97616 100644
--- a/core/translations/order.json
+++ b/core/translations/order.json
@@ -1119,5 +1119,6 @@
"1117": "words__bluetooth",
"1118": "wipe__start_again",
"1119": "words__set",
- "1120": "words__wipe"
+ "1120": "words__wipe",
+ "1121": "lockscreen__unlock"
}
diff --git a/core/translations/signatures.json b/core/translations/signatures.json
index ea1cb684..5b0333bb 100644
--- a/core/translations/signatures.json
+++ b/core/translations/signatures.json
@@ -1,8 +1,8 @@
{
"current": {
- "merkle_root": "cafc9d93400eedb808aa2359441c3075d9896571a461bdec68e2c5d3765e084f",
- "datetime": "2025-08-26T12:40:10.870291+00:00",
- "commit": "91505b9c07e2cdeeb5f471946095a28bed59ef90"
+ "merkle_root": "67ef5350a15c889fcb30e0f785fb1dd8ca46656ff132a2ea248f603698e75f6f",
+ "datetime": "2025-08-26T14:23:38.274450+00:00",
+ "commit": "2a02a0c154bdae6870612553681a9df306b05340"
},
"history": [
{
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.