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:
@@ -24,6 +24,18 @@ namespace ui {
|
||||
*/
|
||||
void RenderChatTab(App* app);
|
||||
|
||||
/**
|
||||
* @brief Render the chat-customization controls (emoji style, poll rate, bubble style/color,
|
||||
* density, text size, chat timestamps, Enter-to-send). Shared by the Chat tab's settings
|
||||
* "notch" modal and the Settings tab's Chat & Contacts section. The app-wide clock format
|
||||
* (which chat timestamps fall back to) lives separately in Settings → General.
|
||||
* @param app Pointer to the app instance.
|
||||
* @param contentWidth Explicit row width for right-aligning controls; pass the card's inner content
|
||||
* width from the Settings tab (whose GlassCard doesn't narrow the content region). 0 = auto
|
||||
* (use the current content region, correct inside the chat modal's dialog).
|
||||
*/
|
||||
void RenderChatSettingsControls(App* app, float contentWidth = 0.0f);
|
||||
|
||||
/**
|
||||
* @brief Securely wipe the Chat tab's UI-local state (composer / new-conversation
|
||||
* plaintext buffers + the selected-conversation ids). Called by
|
||||
|
||||
Reference in New Issue
Block a user