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:
2026-07-17 18:45:19 -05:00
parent 3b5db02e09
commit 2c909d35ea
13 changed files with 1060 additions and 212 deletions

View File

@@ -135,12 +135,25 @@
"change_pass_title": "Сменить пароль",
"characters": "символов",
"chat": "Чат",
"chat_accent_amber": "Янтарный",
"chat_accent_blue": "Синий",
"chat_accent_green": "Зелёный",
"chat_accent_pink": "Розовый",
"chat_accent_purple": "Фиолетовый",
"chat_accent_theme": "Тема",
"chat_add_contact": "Добавить контакт",
"chat_awaiting_key": "Ожидание ответа",
"chat_bubble_minimal": "Минимальный",
"chat_bubble_rounded": "Скруглённый",
"chat_bubble_square": "Прямоугольный",
"chat_cancel": "Отмена",
"chat_contact_added": "Контакт добавлен — переименуйте его в Контактах",
"chat_contact_request": "запрос контакта",
"chat_copy_address_tip": "Нажмите, чтобы скопировать адрес",
"chat_density_comfortable": "Свободная",
"chat_density_compact": "Компактная",
"chat_emoji_color": "Цветной",
"chat_emoji_mono": "Монохромный",
"chat_emoji_search": "Поиск эмодзи",
"chat_empty_hint": "Пока нет переписок. Полученные сообщения появятся здесь.",
"chat_empty_start": "Начните новый с помощью «Новый разговор».",
@@ -156,21 +169,39 @@
"chat_len_over": "Сообщение слишком длинное",
"chat_locked_hint": "Разблокируйте кошелёк, чтобы загрузить переписку.",
"chat_mute": "Отключить уведомления",
"chat_new_button": "Новая переписка",
"chat_new_button": "Новый чат",
"chat_new_message": "Сообщение",
"chat_new_message_toast": "Новое зашифрованное сообщение",
"chat_new_send": "Отправить запрос",
"chat_new_title": "Новая переписка",
"chat_new_title": "Новый чат",
"chat_new_zaddr": "Z-адрес получателя",
"chat_no_matches": "Нет разговоров, соответствующих запросу.",
"chat_no_z_contacts": "Пока нет контактов с защищённым адресом",
"chat_opt_bubble_accent": "Цвет пузырька",
"chat_opt_bubble_style": "Стиль пузырька",
"chat_opt_density": "Плотность сообщений",
"chat_opt_emoji": "Стиль эмодзи",
"chat_opt_enter_sends": "Enter отправляет сообщение",
"chat_opt_font_size": "Размер текста",
"chat_opt_global_clock": "Глобальный формат времени",
"chat_opt_poll": "Частота опроса",
"chat_opt_timestamp": "Метки времени",
"chat_pick_contact": "Выбрать из контактов…",
"chat_rename": "Переименовать контакт",
"chat_rename_hint": "Имя контакта",
"chat_renamed": "Контакт переименован",
"chat_retry": "Повторить",
"chat_search": "Поиск разговоров",
"chat_sec_appearance": "ВИД",
"chat_sec_messaging": "СООБЩЕНИЯ",
"chat_select_hint": "Выберите переписку для просмотра.",
"chat_send": "Отправить",
"chat_send_failed": "не отправлено",
"chat_sending": "отправка…",
"chat_settings_done": "Готово",
"chat_settings_section": "ЧАТ И КОНТАКТЫ",
"chat_settings_tip": "Настройка чата",
"chat_settings_title": "Настройки чата",
"chat_show_hidden": "Показать скрытые",
"chat_time_now": "сейчас",
"chat_toast_compose_failed": "Не удалось составить сообщение (слишком длинное?).",
@@ -181,10 +212,16 @@
"chat_toast_request_compose_failed": "Не удалось составить запрос контакта (неверный адрес / текст?).",
"chat_toast_request_queued": "Запрос контакта поставлен в очередь.",
"chat_toast_waiting_reply": "Ожидание ответа от контакта — вы сможете писать ему только после этого.",
"chat_today": "Сегодня",
"chat_ts_12h": "12 часов",
"chat_ts_24h": "24 часа",
"chat_ts_global": "Как глобально",
"chat_ts_global_short": "Общий",
"chat_unhide": "Показать",
"chat_unmute": "Включить уведомления",
"chat_verify_key": "Ключ личности — сравните для проверки",
"chat_waiting_reply": "Ожидание ответа от контакта — вы сможете писать ему, как только он ответит.",
"chat_yesterday": "Вчера",
"chat_you": "Вы",
"choose_icon": "Выбрать иконку",
"clear": "Очистить",
@@ -196,6 +233,7 @@
"click_copy_address": "Нажмите, чтобы скопировать адрес",
"click_copy_uri": "Нажмите, чтобы скопировать URI",
"click_to_copy": "Нажмите для копирования",
"clock_format": "Формат времени",
"close": "Закрыть",
"conf_count": "%d подтв.",
"confirm_and_send": "Подтвердить и отправить",
@@ -1388,6 +1426,7 @@
"tt_change_pass": "Сменить пароль шифрования кошелька",
"tt_change_pin": "Изменить PIN-код разблокировки",
"tt_clear_ztx": "Удалить локально кешированную историю z-транзакций",
"tt_clock_format": "24- или 12-часовой формат для всего приложения. Чат может переопределить.",
"tt_custom_fees": "Включить ручной ввод комиссий при отправке транзакций",
"tt_custom_theme": "Пользовательская тема активна",
"tt_daemon_install_bundled": "Остановить узел, перезаписать установленный dragonxd версией, встроенной в эту сборку кошелька, затем перезапустить",