fix(diagnostics): address adversarial review of the QoL UI (popup, staleness, DPI, i18n)

Follow-up to the node-banner / staleness-badge / alert-history features — a 5-dimension
finder->verify review surfaced 4 real issues (the ImGui-stack-balance finder found none):

- Alert popup grew off the right edge: pivot (0,1) pinned the panel's LEFT edge at the
  bell, which sits near the window's right edge, so a 320px panel overflowed rightward
  (an explicit SetNextWindowPos pivot skips ImGui's on-screen clamp). Anchor the
  bottom-RIGHT corner at the bell instead (pivot (1,1) at bellMax.x) so it grows left.

- Staleness badge could flash red on reconnect: WalletState::clear() reset everything
  except the four last_*_update stamps, so the pre-outage timestamp survived and the
  badge briefly showed "Updated Nm ago" the same frame the node banner cleared. Zero the
  stamps in clear() (all readers treat 0 as "never"; app_network.cpp:1473 guards != 0).

- Banner min-height floor wasn't DPI-scaled: std::max(minH, baseH*vScale()) now uses
  minH * dpiScale() so both operands are in scaled px.

- New i18n keys weren't in res/lang/: back-filled all 16 diagnostics/QoL keys into the 8
  language files, additively (128 insertions, 0 deletions). zh/ja/ko reworded around 2
  glyphs missing from the CJK subset and hard-asserted tofu-free against the subset font.

Build-clean both variants; ctest 1/1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-02 21:14:38 -05:00
parent 4b3f0fa92b
commit 8bb3198562
11 changed files with 147 additions and 5 deletions

View File

@@ -48,6 +48,10 @@
"advanced": "고급 설정",
"advanced_effects": "고급 효과...",
"ago": "전",
"alerts_clear": "알림 기록 지우기",
"alerts_history_tooltip": "최근 알림",
"alerts_none": "아직 알림이 없습니다",
"alerts_recent": "최근 알림",
"all_filter": "전체",
"allow_custom_fees": "사용자 정의 수수료 허용",
"amount": "금액",
@@ -451,6 +455,8 @@
"daemon_update_version": "버전:",
"daemon_version": "데몬",
"dark": "다크",
"data_stale_prefix": "업데이트",
"data_stale_tooltip": "잔액이 오래되었을 수 있습니다 — 지갑이 최근에 업데이트를 받지 못했습니다. 노드 연결을 확인하세요.",
"date": "날짜",
"date_label": "날짜:",
"debug_logging": "디버그 로깅",
@@ -955,6 +961,11 @@
"no_transactions": "거래 내역이 없습니다",
"no_transactions_yet": "아직 거래 내역이 없습니다",
"node": "노드",
"node_banner_crashed_title": "노드가 예기치 않게 중지되었습니다",
"node_banner_lite_open_failed": "지갑을 열 수 없습니다",
"node_banner_offline_title": "DragonX 노드에 연결되지 않음",
"node_banner_reconnect": "재연결",
"node_banner_restart": "노드 재시작",
"node_security": "노드 및 보안",
"noise": "노이즈",
"not_connected": "데몬에 연결되지 않음...",
@@ -1290,12 +1301,14 @@
"settings_configure_explorer": "외부 블록 탐색기 링크 구성",
"settings_configure_rpc": "dragonxd 데몬 연결 구성",
"settings_connection": "연결",
"settings_copy_diagnostics": "진단 정보 복사",
"settings_copyright": "Copyright 2024-2026 DragonX 개발자 | GPLv3 라이선스",
"settings_custom": "사용자 지정",
"settings_data_dir": "데이터 디렉터리:",
"settings_debug_changed": "디버그 카테고리가 변경되었습니다 — 데몬을 재시작하여 적용",
"settings_debug_restart_note": "변경 사항은 데몬을 다시 시작한 후에 적용됩니다.",
"settings_debug_select": "데몬 디버그 로깅을 활성화할 카테고리를 선택하세요 (-debug= 플래그).",
"settings_diagnostics_copied": "진단 정보를 클립보드에 복사했습니다",
"settings_encrypt_first_pin": "PIN을 활성화하려면 먼저 지갑을 암호화하세요",
"settings_encrypt_wallet": "지갑 암호화",
"settings_explorer_hint": "URL에 후행 슬래시를 포함해야 합니다. txid/주소가 추가됩니다.",
@@ -1316,6 +1329,7 @@
"settings_not_found": "찾을 수 없음",
"settings_open_app_dir": "앱 폴더 열기",
"settings_open_data_dir": "데이터 폴더 열기",
"settings_open_log_folder": "로그 폴더 열기",
"settings_other": "기타",
"settings_pin_active": "PIN",
"settings_privacy": "개인 정보",
@@ -1475,6 +1489,7 @@
"tt_chat_timestamp": "이 탭에만 적용되는 타임스탬프 형식: 앱 전체 시계를 따르거나 24-hour 또는 12-hour로 강제합니다",
"tt_clear_ztx": "로컬에 캐시된 z-트랜잭션 기록 삭제",
"tt_clock_format": "24시간 또는 12시간 형식(앱 전체). 채팅에서 재정의할 수 있습니다.",
"tt_copy_diagnostics": "지원용 요약(버전, 데몬/지갑/로그 상태 — 비밀 정보 없음)을 클립보드에 복사합니다",
"tt_custom_fees": "거래 전송 시 수동 수수료 입력 활성화",
"tt_custom_theme": "사용자 지정 테마 활성화됨",
"tt_daemon_install_bundled": "노드를 중지하고 설치된 dragonxd를 이 지갑 빌드에 번들된 버전으로 덮어쓴 다음 재시작합니다",
@@ -1528,6 +1543,7 @@
"tt_open_app_dir": "파일 관리자에서 ObsidianDragon 폴더(설정, 테마, 로그)를 엽니다",
"tt_open_data_dir": "지갑 및 블록체인 데이터가 있는 폴더를 파일 탐색기에서 엽니다",
"tt_open_dir": "파일 탐색기에서 열려면 클릭",
"tt_open_log_folder": "디버그 및 충돌 로그가 있는 폴더를 엽니다",
"tt_reduce_motion": "접근성을 위해 애니메이션 전환 및 잔액 보간 비활성화",
"tt_remove_encrypt": "암호화를 제거하고 지갑을 보호 없이 저장",
"tt_remove_pin": "PIN을 제거하고 잠금 해제 시 비밀번호 요구",