Summary / Описание задачи
В соответствии с Фазой 1 Технического Задания на систему автообновления (см. Obsidian 06 — Планирование/Система автообновления десктопа.md), необходимо разработать ядро службы проверки обновлений — AppUpdaterService.
Сервис должен:
- Выполнять периодический фоновый опрос GitHub Releases API (https://api.github.com/repos/QueryaHub/Querya-Desktop/releases/latest) и/или бэкенда сайта при старте приложения (если включено в настройках).
- Получать текущую версию приложения через PackageInfo.fromPlatform() и сравнивать по стандарту SemVer с тегом последнего релиза.
- Поддерживать переключение каналов в Preferences (Stable vs Dev).
- Загружать манифест артефактов (sha256sum.txt) и проверять контрольную сумму SHA256 перед передачей загруженного бинарного файла на установку.
Scope & Component
- Scope: desktop
- Component: Core / Updater Service
- Kind: enhancement
- Severity: high
- Detected in version: dev / 0.5.0
Местоположение в коде (Планируемое)
- Файл: lib/core/updater/app_updater_service.dart и lib/core/updater/update_manifest.dart
Acceptance Criteria / Критерии приемки
- Реализован класс AppUpdaterService с методами checkForUpdates({bool background = false}) и downloadAsset(UpdateAsset asset, {ProgressCallback onProgress}).
- Сервис корректно сравнивает версии по SemVer и игнорирует pre-release сборки, если выбран канал Stable.
- Скачанные файлы в обязательном порядке проверяются по алгоритму SHA256; при несовпадении хэша выбрасывается исключение безопасности и загрузка прерывается.
- Написаны unit-тесты для парсера ответов GitHub API и логики сравнения версий.
Reactions are currently unavailable
Summary / Описание задачи
В соответствии с Фазой 1 Технического Задания на систему автообновления (см. Obsidian 06 — Планирование/Система автообновления десктопа.md), необходимо разработать ядро службы проверки обновлений — AppUpdaterService.
Сервис должен:
Scope & Component
Местоположение в коде (Планируемое)
Acceptance Criteria / Критерии приемки