feat(mobile): self-update dialog with verified APK download and install (M5)
ci / ts / ts (packages + web) (push) Successful in 1m0s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 57s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m33s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 35s

Checks the server for a newer release at most every 6 hours and on
demand in Profile, shows release notes, downloads the APK with progress,
verifies SHA-256 in 1 MB chunks and hands it to the system installer.
Updates below min_supported cannot be dismissed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-20 12:55:34 +03:00
1 parent 6a67c27f50
commit 765345e0f4
10 files changed
+663 -78

No files matched your search

+5
View File
@@ -101,6 +101,11 @@ export class AuthSession {
return this.current;
}
/** Текущий access-токен — для запросов мимо `client` (загрузка файлов на Android). */
get accessToken(): string | null {
return this.access;
}
/** Подписка на смену состояния; возвращает функцию отписки. */
subscribe(fn: (s: AuthState) => void): () => void {
this.listeners.add(fn);
+15 -1
View File
@@ -201,6 +201,20 @@
"open_player": "Open the player",
"close_player": "Collapse the player",
"queue": "Queue",
"forget_server": "Forget server"
"forget_server": "Forget server",
"update_check": "Check for updates",
"update_checking": "Checking…",
"update_latest": "You have the latest version",
"update_title": "Version {{version}} is available",
"update_required": "The server no longer supports this version — please update the app",
"update_size": "Size {{size}} MB",
"update_install": "Download and install",
"update_later": "Later",
"update_downloading": "Downloading {{percent}}%",
"update_verifying": "Verifying the file…",
"update_bad_checksum": "The file is corrupted — try again",
"update_failed": "Could not download the update",
"update_allow": "Allow installing apps from this app in Android settings",
"update_open_settings": "Open settings"
}
}
+15 -1
View File
@@ -201,6 +201,20 @@
"open_player": "Открыть плеер",
"close_player": "Свернуть плеер",
"queue": "Очередь",
"forget_server": "Забыть сервер"
"forget_server": "Забыть сервер",
"update_check": "Проверить обновления",
"update_checking": "Проверяем…",
"update_latest": "Установлена последняя версия",
"update_title": "Доступна версия {{version}}",
"update_required": "Эта версия больше не поддерживается сервером — обновите приложение",
"update_size": "Размер {{size}} МБ",
"update_install": "Скачать и установить",
"update_later": "Позже",
"update_downloading": "Загрузка {{percent}}%",
"update_verifying": "Проверяем файл…",
"update_bad_checksum": "Файл повреждён — попробуйте ещё раз",
"update_failed": "Не удалось скачать обновление",
"update_allow": "Разрешите установку из этого приложения в настройках Android",
"update_open_settings": "Открыть настройки"
}
}