feat(settings): redesign the remove-encryption (decrypt) modal onto reference design
Migrate App::renderDecryptWalletDialog ("Remove Wallet Encryption") onto the
settings-modal reference design — presentation-only for a fund-critical dialog,
plus one deliberate secret-hygiene addition:
- struct-form BeginOverlayDialog(OverlayDialogSpec{BlurFloat, cardWidth 480,
idSuffix "decrypt"}) replacing the legacy positional overload
- Phase 0 amber TextWrapped warning -> material::DialogWarningHeader(decrypt_warning)
- drop the redundant Phase 0 Separator
- every rendered-chrome string across all 4 phases (PassphraseEntry / Working /
Success / Error) -> TR() (14 new decrypt_*/try_again keys added to the English
source + all 8 res/lang/*.json additively; the button reuses
settings_remove_encryption, the label reuses change_pass_current, cancel/close reused)
- HARDENING: wipe decrypt_pass_buf_ on BlurFloat dismiss (X/Esc/outside-click),
mirroring the change-passphrase fix; canClose() gates pOpen so this cannot fire
during the Working phase
The fund-moving async worker pyramid (unlock -> export -> stop -> backup ->
restart -> re-import, vault/PIN cleanup) is byte-for-byte unchanged; the three
in-worker toast notifications and the "Incorrect passphrase" status are left in
English to avoid touching the fund path (a separate service-layer i18n pass).
Verified: build + ctest + hygiene clean; i18n complete in 8 langs with no format
specifiers and the wallet.dat.encrypted.bak literal preserved; a 3-lens adversarial
review (secret-hygiene / fund-path-untouched / ui-i18n) returned zero findings, with
the fund-path lens proving the async pyramid diffs IDENTICAL against HEAD.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -333,6 +333,19 @@
|
||||
"date": "날짜",
|
||||
"date_label": "날짜:",
|
||||
"debug_logging": "디버그 로깅",
|
||||
"decrypt_desc": "지갑을 내보내고 데몬을 새 암호화되지 않은 지갑으로 다시 시작한 후 모든 키를 다시 가져옵니다. 지갑 크기에 따라 몇 분 정도 걸릴 수 있습니다.",
|
||||
"decrypt_error_title": "복호화 실패",
|
||||
"decrypt_step_backup": "암호화된 지갑 백업 중",
|
||||
"decrypt_step_export": "지갑 키 내보내는 중",
|
||||
"decrypt_step_restart": "데몬 다시 시작 중",
|
||||
"decrypt_step_stop": "데몬 중지 중",
|
||||
"decrypt_step_unlock": "지갑 잠금 해제 중",
|
||||
"decrypt_success_desc": "이제 지갑이 암호화되지 않았습니다. 암호화된 지갑의 백업이 데이터 디렉터리에 wallet.dat.encrypted.bak로 저장되었습니다.",
|
||||
"decrypt_success_title": "지갑 복호화에 성공했습니다!",
|
||||
"decrypt_title": "지갑 암호화 제거",
|
||||
"decrypt_wait_general": "잠시 기다려 주세요. 데몬이 키를 내보내고 다시 시작한 후 다시 가져오고 있습니다. 몇 분 정도 걸릴 수 있습니다.",
|
||||
"decrypt_wait_restart": "데몬이 완전히 시작될 때까지 기다리는 중...",
|
||||
"decrypt_warning": "지갑의 암호화가 제거됩니다. 개인 키가 보호되지 않은 상태로 디스크에 저장됩니다.",
|
||||
"delete": "삭제",
|
||||
"delete_blockchain": "블록체인 삭제",
|
||||
"delete_blockchain_confirm": "삭제 후 재동기화",
|
||||
@@ -1269,6 +1282,7 @@
|
||||
"transfer_to": "이체 대상:",
|
||||
"transparent": "투명",
|
||||
"transparent_address": "투명 주소",
|
||||
"try_again": "다시 시도",
|
||||
"tt_addr_url": "블록 탐색기에서 주소를 보기 위한 기본 URL",
|
||||
"tt_address_book": "빠른 전송을 위해 저장된 주소 관리",
|
||||
"tt_auto_lock": "이 비활성 시간 후 지갑 잠금",
|
||||
|
||||
Reference in New Issue
Block a user