Publish IKAR Android 1.0.4 and verify release artifacts
Tests / test (push) Canceled after 0s
Native crypto / native-crypto (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s
Tests / test (push) Canceled after 0s
Native crypto / native-crypto (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
<img src="assets/ikar_icon.png" width="96" alt="Иконка ИКАР">
|
||||
|
||||
Самостоятельный Android-мессенджер с сервером `ikar_server`. Имя приложения — **ИКАР**, пакет Android — `ru.ikar.app`, версия исходников — `1.0.4+5` (не опубликована), вариант сборки — `ikar`. Опубликованный выпуск — `1.0.3+4`.
|
||||
Самостоятельный Android-мессенджер с сервером `ikar_server`. Имя приложения — **ИКАР**, пакет Android — `ru.ikar.app`, версия исходников и опубликованного выпуска — `1.0.4+5`, вариант сборки — `ikar`.
|
||||
|
||||
Клиент находится в `C:\Repos\IKAR`, сервер — в `ikar_server/`. Иконка перенесена из прежнего Икара. Исходный каталог `C:\Repos\Qlyra` не изменён; использованный клиентский код и библиотеки сохраняют свои авторские сведения и лицензии.
|
||||
Клиент находится в `C:\Repos\IKAR`, сервер — в `ikar_server/`. Основная иконка содержит рисунок Икара без надписей. Исходный каталог `C:\Repos\Qlyra` не изменён; использованный клиентский код и библиотеки сохраняют свои авторские сведения и лицензии.
|
||||
|
||||
## Возможности
|
||||
|
||||
@@ -18,6 +18,16 @@
|
||||
|
||||
Сквозное шифрование исходного клиента сохранено в коде как отдельная функция. Обычные сообщения сервер принимает и хранит в читаемом виде; HTTPS обеспечивает шифрование транспорта. Проверки не доказывают работу всех режимов сквозного шифрования и звонков с большим количеством участников.
|
||||
|
||||
## Выпуск 1.0.4
|
||||
|
||||
В [Аргусе](https://argus.kusoft.xyz/#app=ikar) опубликована [ИКАР 1.0.4, сборка 5](https://argus.kusoft.xyz/api/apps/ikar/releases/24f6ba10-f133-443e-9635-e38e54ce7852/download). Выпуск включает новую главную иконку, собственную тему, изменения жестов и видеоредактора, действия с расшифрованным текстом, работающую с сервером невидимость и меню расшифровки голосовых сообщений. Серверное исправление аватарок уже развёрнуто.
|
||||
|
||||
APK `artifacts/ikar-1.0.4+5.apk` подписан прежним ключом ИКАР: обновление сохраняет совместимость подписи с 1.0.3. Пакет `ru.ikar.app`, версия `1.0.4`, `versionCode=5`; размер — 88 773 085 байт, SHA-256 — `56ed77c0965cafc7bb71daee6af51e9418c93aab92b07acda9263134eb41e410`. В итоговом APK проверены свежие Flutter-библиотеки всех трёх ABI, наличие нативных зависимостей, актуальные изображения и пиксели адаптивной иконки для всех плотностей, нулевой inset основного рисунка.
|
||||
|
||||
Публичные каталог, манифест и скачанный из Аргуса APK совпадают по версии, размеру и SHA-256; TLS и здоровье сервиса проверены. Обновление через сервер ИКАР также выдаёт новый манифест и тот же APK. Перед публикацией создана согласованная копия базы Аргуса; рабочая база и копия целостны, остальные карточки и работающие сервисы сохранены. Предыдущие выпуски оставлены. Проверки исходников описаны ниже; на физический телефон новый APK не устанавливался — подключённых ADB-устройств нет.
|
||||
|
||||
Отчёты: `artifacts/apk-build-1.0.4.log`, `artifacts/apk-verification-1.0.4.json`, `artifacts/argus-publication-1.0.4.json`, `artifacts/argus-public-verification-1.0.4.json`, `artifacts/release-verification-1.0.4.json`. Проверка локального APK: `python tool/verify_android_apk.py --apk artifacts/ikar-1.0.4+5.apk --previous artifacts/ikar-1.0.3+4.argus.apk --version 1.0.4 --code 5`; проверки публикации: `dart run tool/verify_argus_release.dart 1.0.4 5`, `dart run tool/release_smoke.dart 1.0.4 5`.
|
||||
|
||||
## Исправление установки аватарки
|
||||
|
||||
Фото загружалось на сервер, но профиль и список фотографий возвращали относительный путь изображения и не передавали `photoId`. Клиент не мог открыть фото и корректно обновить кэш. Теперь эти ответы содержат полный HTTPS-адрес и стабильный ID фотографии; замена меняет URL и ID, удаление очищает оба значения. Push обновления профиля использует ожидаемую клиентом структуру `payload.profile`.
|
||||
@@ -44,7 +54,7 @@
|
||||
|
||||
Главная иконка содержит только рисунок Икара без надписей. Размер рисунка — около 90% диаметра круглой области; адаптивный слой учитывает расширение Android с 72 до 108 dp. Исходный рисунок — `assets/ikar_mark.png`, основные ресурсы — `assets/ikar_icon.png` и `assets/ikar.png`. Пересоздание: `dart run tool/make_ikar_icons.dart`, затем `dart run flutter_launcher_icons`. Ресурсы основной иконки обновлены для Android, iOS, Windows и macOS; альтернативная иконка сохранена.
|
||||
|
||||
Новая иконка и клиентские изменения требуют нового APK; текущий опубликованный выпуск их не содержит. Выпуск APK и проверка этих клиентских изменений на телефоне в этой задаче не выполнялись.
|
||||
Новая иконка и клиентские изменения включены в опубликованный APK 1.0.4. Проверка этих клиентских изменений на физическом телефоне пока не выполнялась.
|
||||
|
||||
## Размещение на Pi
|
||||
|
||||
@@ -86,13 +96,13 @@ dotnet test ikar_server/src/Ikar.Server.Tests/Ikar.Server.Tests.csproj
|
||||
|
||||
`tool/deploy_ikar.ps1` упаковывает опубликованный `linux-arm64` сервер и обновляет только новый Compose-проект на Pi. Модель Vosk в `ikar_server/asr/model.zip` проверяется по SHA-256 при сборке контейнера. Скрипты в `tool/` для проверок используют временные тестовые аккаунты и удаляют их по завершении.
|
||||
|
||||
## Меню расшифровки голосовых сообщений 1.0.4 (не опубликовано)
|
||||
## Меню расшифровки голосовых сообщений 1.0.4
|
||||
|
||||
Расшифровка сохранена и перенесена из маленькой кнопки «Т» в меню голосового сообщения. Нажатие на облако открывает меню с пунктом «Расшифровка голосового сообщения»: нажимается вся строка, её высота не меньше 48 логических пикселей и увеличивается при переносе текста или увеличенном шрифте. У обычных сообщений, файлов, видео, удалённых и ещё не отправленных записей этого пункта нет. Пересланные записи используют идентификаторы исходного голосового сообщения.
|
||||
|
||||
Под записью отображается состояние распознавания, затем готовый текст; через меню его можно скрыть и показать снова без повторного запроса. Одновременные нажатия не создают повторные запросы. Ошибку можно повторить; результат, уже полученный через push, не затирается поздним ответом о постановке в очередь или сетевой ошибкой.
|
||||
|
||||
Целевые тесты: `artifacts/voice-menu-tests.log`. Анализ изменённых UI-файлов и новых тестов: `artifacts/voice-menu-analyze-final.log`. Живая проверка тестовой записи подтвердила загрузку, запрос получателя, завершение распознавания через push, сохранение текста для обоих участников и запрет доступа постороннему: `artifacts/voice-transcription-live-verification.json`. Тестовые аккаунты удалены. Новая версия не публиковалась и не устанавливалась на телефон по указанию пользователя; нового APK нет.
|
||||
Целевые тесты: `artifacts/voice-menu-tests.log`. Анализ изменённых UI-файлов и новых тестов: `artifacts/voice-menu-analyze-final.log`. Живая проверка тестовой записи подтвердила загрузку, запрос получателя, завершение распознавания через push, сохранение текста для обоих участников и запрет доступа постороннему: `artifacts/voice-transcription-live-verification.json`. Тестовые аккаунты удалены. Меню включено в опубликованный APK 1.0.4; на физический телефон этот выпуск пока не устанавливался.
|
||||
|
||||
## Исправления видео 1.0.3
|
||||
|
||||
|
||||
Reference in New Issue
Block a user