# Release Notes

## 1.4.2

### Звонки
- Полноэкранный incoming call через ForegroundService — кнопки Accept/Decline, будит экран, работает когда приложение свёрнуто или убито (и из push, и из WebSocket).
- Синхронизация ForegroundService с фазами звонка — notification обновляется при INCOMING → CONNECTING → ACTIVE → IDLE.
- Защита от CREATE_ROOM без ключей шифрования — сброс сессии если звонок принят на другом устройстве.
- Корректное освобождение PeerConnection (`dispose()`) при завершении звонка — фикс зависания ICE портов ~30 сек.

### E2EE диагностика
- Диагностический файл E2EE включён для всех билдов (был только debug).
- Периодический health-лог E2EE с счётчиками фреймов enc/dec из нативного кода.
- Уменьшен спам scan receivers — логирование только при изменении состояния.
- Нативные методы `FrameCount()` / `BadStreak()` для мониторинга шифрования в реальном времени.

### Push-уведомления
- Добавлены `tokenType` и `deviceId` в пакет push-подписки (совместимость с новым сервером).
- Сохранение FCM токена в crash_reports для просмотра через rosettadev1.

### CI/CD
- Установка NDK и CMake в CI для сборки нативного модуля `rosetta_e2ee.so`.

## 1.3.4

### Звонки и UI
- Реализован Telegram-style фон звонка в приложении: full-screen звонок теперь можно свернуть в закрепленную верхнюю плашку в чат-листе.
- Плашка звонка перенесена внутрь `ChatsListScreen` и ведет обратно в экран звонка по нажатию.
- Обновлен UI звонка: иконка сворачивания в стиле Telegram, улучшено поведение call overlay.
- Исправлено автоматическое скрытие клавиатуры при открытии экрана звонка.

### Поиск в диалоге
- В kebab-меню каждого чата добавлен пункт `Search`.
- Добавлен встроенный поиск сообщений внутри текущего диалога (через локальный индекс `message_search_index` и `dialog_key`).
- Добавлена навигация по результатам (`prev/next`) со скроллом и подсветкой найденного сообщения.

## 1.3.3

### E2EE, чаты и производительность
- В release-сборке отключена frame-диагностика E2EE (детальный frame dump теперь только в debug).
- В `ChatsListScreen` убран двойной `collectAsState(chatsState)` и вынесены route-блоки в подкомпоненты (`CallsRouteContent`, `RequestsRouteContent`, общий `SwipeBackContainer`).
- Добавлена денормализация `primary_attachment_type` в таблице `messages` + индекс `(account, primary_attachment_type, timestamp)`.
- Обновлена миграция БД `14 -> 15`: добавление колонки, индекс и backfill значения типа вложения для уже сохраненных сообщений.
- Поисковые и call-history запросы переведены на `primary_attachment_type` с fallback на legacy `attachments LIKE` для старых записей.

## 1.2.3

### Групповые чаты и медиа
- Исправлено отображение групповых баблов: логика стеков и аватаров приведена ближе к desktop-версии.
- Исправлено позиционирование аватарки в группе: аватар и имя теперь отображаются на одном сообщении (без «разъезда»).
- Исправлена обрезка имени отправителя в медиа-баблах группового чата.
- Исправлено растяжение и кривые пропорции фото в forwarded/media-пузырях.

### Sidebar
- Убрана лишняя рамка (border) вокруг аватарки в сайдбаре.

## 1.2.1

### Синхронизация Android ↔ iOS
- Исправлена критическая проблема: сообщения зависали на «часиках» при одновременном использовании Android и iOS.
- Добавлен механизм автоматического повтора отправки (retry) — как в iOS: 3 попытки с интервалом 4 сек, таймаут 80 сек.
- Исправлена нормализация sync-курсора (секунды → миллисекунды) для корректной синхронизации между устройствами.

### UI-улучшения
- Дата «today/yesterday» и пустой стейт чата теперь белые при тёмных обоях или тёмной теме.
- Исправлена обрезка имени отправителя в групповых чатах — бабл расширяется под имя.

## 1.2.0 (обновление с 1.1.9)

- Синхронизированы индикаторы отправки между чат-листом и диалогом:
  - до фактической доставки показываются часы;
  - ошибки отправки корректно отображаются внутри диалога.
- Доработан skeleton загрузки сообщений в диалоге в стиле Telegram:
  - shimmer-анимация;
  - более реалистичные размеры и форма пузырей;
  - поддержка групповых аватаров в skeleton.
- Добавлен плавный автоскролл вверх в чат-листе при появлении плашки подтверждения нового устройства.
- Выровнены verified-галочки по имени:
  - в моем профиле;
  - в чужом профиле;
  - в боковом меню (sidebar).
- Улучшено выравнивание Apple-like emoji в тексте сообщений.
- В светлой теме кнопка `Copy Seed Phrase` отображается с белым текстом.
- Выполнены дополнительные UI-правки и полировка отображения в чате и профилях.
