feat(ux): clearer chat delivery, explorer empty/range states, honest settings label

Three next-batch UX-audit fixes:
- Chat delivery: the sending/sent glyph has higher contrast and a tooltip
  ("Sent to the network — arrives after it confirms", so a check isn't mistaken
  for "delivered"); a failed send now carries the real reason (ChatMessage::
  fail_reason, set from onChatBroadcastResult via friendlyRpcError, in-memory
  only) in the "not sent" hover tooltip.
- Explorer: a block height beyond the tip says so ("Block N is beyond the chain
  tip (M)") instead of silently snapping to the top; the empty block list shows
  Not connected / Syncing (N behind) / Loading instead of an endless "Loading".
- Settings: the misleading "Reset to Defaults" button (which only reloads the
  last-saved values) is relabeled "Discard unsaved changes" with accurate copy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-10-18 09:20:47 -05:00
co-authored by Claude Opus 4.8
parent a11130769d
commit a792a1ec0c
10 changed files with 75 additions and 15 deletions
+10 -2
View File
@@ -233,6 +233,9 @@ void I18n::loadBuiltinEnglish()
strings_["chat_you"] = "You";
strings_["chat_contact_request"] = "contact request";
strings_["chat_send_failed"] = "not sent";
strings_["chat_status_sending"] = "Sending… waiting for your wallet to broadcast it";
strings_["chat_status_sent"] = "Sent to the network — it arrives after it confirms (about a minute)";
strings_["chat_failed_generic"] = "Couldn't be sent. Check your connection and funds, then retry.";
strings_["chat_new_button"] = "New chat";
strings_["chat_select_hint"] = "Select a conversation to view it.";
strings_["chat_waiting_reply"] = "Waiting for this contact to reply — you can message them once they do.";
@@ -532,6 +535,7 @@ void I18n::loadBuiltinEnglish()
strings_["report_bug"] = "Report Bug";
strings_["save_settings"] = "Save Settings";
strings_["reset_to_defaults"] = "Reset to Defaults";
strings_["discard_changes"] = "Discard unsaved changes";
// Wallet settings
strings_["save_z_transactions"] = "Save shielded tx history";
@@ -1023,7 +1027,7 @@ void I18n::loadBuiltinEnglish()
strings_["tt_website"] = "Open the DragonX website";
strings_["tt_report_bug"] = "Report an issue on the project tracker";
strings_["tt_save_settings"] = "Save all settings to disk";
strings_["tt_reset_settings"] = "Reload settings from disk (undo unsaved changes)";
strings_["tt_reset_settings"] = "Revert this page to the last saved settings (undo unsaved changes)";
strings_["tt_debug_collapse"] = "Collapse debug logging options";
strings_["tt_debug_expand"] = "Expand debug logging options";
strings_["tt_restart_daemon"] = "Restart the daemon to apply debug logging changes";
@@ -1592,7 +1596,7 @@ void I18n::loadBuiltinEnglish()
strings_["settings_not_connected"] = "Not connected to daemon";
strings_["settings_theme_refreshed"] = "Theme list refreshed";
strings_["settings_saved"] = "Settings saved";
strings_["settings_reloaded"] = "Settings reloaded from disk";
strings_["settings_reloaded"] = "Unsaved changes discarded";
strings_["settings_ztx_cleared"] = "Z-transaction history cleared";
strings_["settings_ztx_not_found"] = "No history file found";
strings_["tt_open_log_folder"] = "Open the folder containing the debug and crash logs";
@@ -2754,6 +2758,10 @@ void I18n::loadBuiltinEnglish()
strings_["explorer_hash_not_found"] = "No block or transaction found for this hash";
strings_["explorer_not_connected"] = "Not connected to daemon — cannot look up a block or transaction hash";
strings_["explorer_no_results"] = "No matching cached blocks";
strings_["explorer_beyond_tip"] = "Block %d is beyond the chain tip (%d)";
strings_["explorer_empty_not_connected"] = "Not connected to the node";
strings_["explorer_empty_syncing"] = "Syncing, %d blocks behind";
strings_["explorer_empty_syncing_unknown"] = "Syncing…";
// ---- i18n audit 2026-09: wrap previously-hardcoded UI strings ----
// app_security.cpp — encryption / PIN / lock flow