Some checks failed
Android Kernel Build / build (push) Failing after 4m6s
Звонки: - IncomingCallActivity — полноэкранный UI входящего звонка поверх lock screen - fullScreenIntent на нотификации для Android 12+ - ForegroundService синхронизируется при смене фазы и имени - Запрос fullScreenIntent permission на Android 14+ - dispose() PeerConnection при завершении звонка - Защита от CREATE_ROOM без ключей (звонок на другом устройстве) - Дедупликация push + WebSocket сигналов - setIncomingFromPush — CallManager сразу в INCOMING по push - Accept ждёт до 5 сек если WebSocket не доставил сигнал - Decline работает во всех фазах (не только INCOMING) - Баннер активного звонка внутри диалога Уведомления: - Аватарки и имена по publicKey в уведомлениях (message + call) - Настройка "Avatars in Notifications" в разделе Notifications UI: - Ограничение fontScale до 1.3x (вёрстка не ломается на огромном тексте) - Новые обои: Light 1-3 для светлой темы, убраны старые back_* - ContentScale.Crop для превью обоев (без растяжения) CI/CD: - NDK/CMake в CI, local.properties, ANDROID_NDK_HOME - Ограничение JVM heap для CI раннера Диагностика: - Логирование call notification flow в crash_reports (rosettadev1) - FCM токен в crash_reports
85 lines
7.0 KiB
Markdown
85 lines
7.0 KiB
Markdown
# 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-правки и полировка отображения в чате и профилях.
|