feat(chat): message-list rework, customization surface, smooth scroll
Chat tab overhaul: - Header/layout: single-row header (name + key-lock + compact click-to-copy address + right-aligned icon toolbar with a settings "notch"), composer moved below the message box (emoji toggle left of a bottom-flush input), tightened list-pane controls. - Message list: per-day date separators (Today/Yesterday/date), time-only group headers, tight same-sender grouping with iMessage-style merged corners, per-run peer avatar, delivery status (clock -> check), hover-reveal per-message time. Message base ~18px. - Customization: a settings "notch" gear opens a modal (also under Settings -> Chat & Contacts) with segmented controls for emoji style / bubble style / density / timestamps, sliders for poll rate + text size, a bubble-accent dropdown, Enter-to-send. Bubble style/accent/density/text-size/timestamps all applied live in the message loop. - Settings: app-wide clock-format control lives in Settings -> General; chat keeps a per-tab override. Both chat panes now use the app's smooth wheel-scroll. - i18n: new strings across all 8 languages; CJK subset rebuilt for the added glyphs. Inline contact rename, hide/mute, 0-conf fast-scan and the export path are carried through. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -217,11 +217,11 @@ void I18n::loadBuiltinEnglish()
|
||||
strings_["chat_you"] = "You";
|
||||
strings_["chat_contact_request"] = "contact request";
|
||||
strings_["chat_send_failed"] = "not sent";
|
||||
strings_["chat_new_button"] = "New conversation";
|
||||
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.";
|
||||
strings_["chat_send"] = "Send";
|
||||
strings_["chat_new_title"] = "New conversation";
|
||||
strings_["chat_new_title"] = "New chat";
|
||||
strings_["chat_new_zaddr"] = "Recipient z-address";
|
||||
strings_["chat_new_message"] = "Message";
|
||||
strings_["chat_new_send"] = "Send request";
|
||||
@@ -263,6 +263,44 @@ void I18n::loadBuiltinEnglish()
|
||||
strings_["chat_copy_address_tip"] = "Click to copy address";
|
||||
strings_["chat_verify_key"] = "Identity key \xE2\x80\x94 compare to verify";
|
||||
strings_["chat_awaiting_key"] = "Waiting for reply";
|
||||
strings_["chat_rename"] = "Rename contact";
|
||||
strings_["chat_rename_hint"] = "Contact name";
|
||||
strings_["chat_renamed"] = "Contact renamed";
|
||||
// Chat customization (gear modal + Settings → Chat & Contacts)
|
||||
strings_["chat_settings_title"] = "Chat settings";
|
||||
strings_["chat_settings_tip"] = "Chat customization";
|
||||
strings_["chat_settings_section"] = "CHAT & CONTACTS";
|
||||
strings_["chat_opt_emoji"] = "Emoji style";
|
||||
strings_["chat_emoji_mono"] = "Monochrome";
|
||||
strings_["chat_emoji_color"] = "Color";
|
||||
strings_["chat_opt_poll"] = "Message poll rate";
|
||||
strings_["chat_opt_bubble_style"] = "Bubble style";
|
||||
strings_["chat_bubble_rounded"] = "Rounded";
|
||||
strings_["chat_bubble_square"] = "Square";
|
||||
strings_["chat_bubble_minimal"] = "Minimal";
|
||||
strings_["chat_opt_bubble_accent"] = "Bubble color";
|
||||
strings_["chat_accent_theme"] = "Theme";
|
||||
strings_["chat_accent_blue"] = "Blue";
|
||||
strings_["chat_accent_green"] = "Green";
|
||||
strings_["chat_accent_purple"] = "Purple";
|
||||
strings_["chat_accent_amber"] = "Amber";
|
||||
strings_["chat_accent_pink"] = "Pink";
|
||||
strings_["chat_opt_density"] = "Message density";
|
||||
strings_["chat_density_comfortable"] = "Comfortable";
|
||||
strings_["chat_density_compact"] = "Compact";
|
||||
strings_["chat_opt_font_size"] = "Text size";
|
||||
strings_["chat_opt_timestamp"] = "Timestamps";
|
||||
strings_["chat_ts_global"] = "Follow global";
|
||||
strings_["chat_ts_24h"] = "24-hour";
|
||||
strings_["chat_ts_12h"] = "12-hour";
|
||||
strings_["chat_opt_enter_sends"] = "Enter sends message";
|
||||
strings_["chat_opt_global_clock"] = "Global clock format";
|
||||
strings_["chat_settings_done"] = "Done";
|
||||
strings_["chat_ts_global_short"] = "Global";
|
||||
strings_["chat_sec_appearance"] = "APPEARANCE";
|
||||
strings_["chat_sec_messaging"] = "MESSAGING";
|
||||
strings_["chat_today"] = "Today";
|
||||
strings_["chat_yesterday"] = "Yesterday";
|
||||
// Seed-phrase backup (full-node)
|
||||
strings_["seed_backup_button"] = "Seed phrase";
|
||||
strings_["tt_seed_backup"] = "Show and back up your wallet's 24-word recovery seed phrase";
|
||||
@@ -1148,6 +1186,8 @@ void I18n::loadBuiltinEnglish()
|
||||
strings_["network"] = "Network";
|
||||
strings_["theme"] = "Theme";
|
||||
strings_["language"] = "Language";
|
||||
strings_["clock_format"] = "Clock format";
|
||||
strings_["tt_clock_format"] = "24-hour or 12-hour clock, used across the app. The Chat tab can override it in its own settings.";
|
||||
strings_["dragonx_green"] = "DragonX (Green)";
|
||||
strings_["dark"] = "Dark";
|
||||
strings_["light"] = "Light";
|
||||
|
||||
Reference in New Issue
Block a user