From d4e5526d166fd6ee5bbfcb06f63f168ff4a08aa9 Mon Sep 17 00:00:00 2001 From: "smx.pusha" <139338836+smxpusha@users.noreply.github.com> Date: Tue, 18 Aug 2026 12:16:57 +0200 Subject: [PATCH] FIX - stabilize VaultX wallet key actions Keep copy and share labels contained inside the profile card and cover partial locale payloads with a regression test. --- frontend/src/stores/phone-locales.test.ts | 12 ++++++++++++ frontend/src/views/apps/CryptoApp.vue | 15 +++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/frontend/src/stores/phone-locales.test.ts b/frontend/src/stores/phone-locales.test.ts index 5b061be..24039e1 100644 --- a/frontend/src/stores/phone-locales.test.ts +++ b/frontend/src/stores/phone-locales.test.ts @@ -70,6 +70,18 @@ describe('phone locale fallback', () => { expect(phone.t('Apps.messages.seekAudio')).toBe('Seek Audio') }) + it('keeps VaultX wallet key actions translated with a partial server locale', () => { + const phone = usePhoneStore() + phone.open({ locales: { Apps: { crypto: { name: 'VaultX' } } } }) + + expect(phone.t('Apps.crypto.profile.walletKey')).toBe('Public crypto key') + expect(phone.t('Apps.crypto.profile.walletKeyBody')).toBe( + 'Share this key to receive crypto. It cannot access your account.', + ) + expect(phone.t('Apps.crypto.profile.copyKey')).toBe('Copy') + expect(phone.t('Apps.crypto.profile.shareKey')).toBe('Share') + }) + it('uses the English Lua payload before the bundled emergency fallback', () => { const phone = usePhoneStore() phone.open({ diff --git a/frontend/src/views/apps/CryptoApp.vue b/frontend/src/views/apps/CryptoApp.vue index 8e0484d..a634589 100644 --- a/frontend/src/views/apps/CryptoApp.vue +++ b/frontend/src/views/apps/CryptoApp.vue @@ -1449,10 +1449,12 @@ onMounted(() => void crypto.load()) - {{ t(walletKeyCopied ? 'profile.copied' : 'profile.copyKey') }} + {{ + t(walletKeyCopied ? 'profile.copied' : 'profile.copyKey') + }} - {{ t('profile.shareKey') }} + {{ t('profile.shareKey') }} @@ -3730,13 +3732,22 @@ onMounted(() => void crypto.load()) gap: 7px; } .wallet-key-card__actions :deep(.sky-button) { + width: 100%; + min-width: 0; min-height: 42px; gap: 6px; padding: 0 10px; + overflow: hidden; font-size: 11px; font-weight: 800; border-radius: 13px; } +.wallet-key-card__actions :deep(.sky-button > span) { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} .profile-stats--premium { margin-top: 10px; }