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 / Критерии приемки
Summary / Описание задачи
В соответствии с Фазой 1 Технического Задания на систему автообновления (см. Obsidian
06 — Планирование/Система автообновления десктопа.md), необходимо разработать ядро службы проверки обновлений —AppUpdaterService.Сервис должен:
GitHub Releases API(https://api.github.com/repos/QueryaHub/Querya-Desktop/releases/latest) и/или бэкенда сайта при старте приложения (если включено в настройках).PackageInfo.fromPlatform()и сравнивать по стандарту SemVer с тегом последнего релиза.Preferences(StablevsDev).sha256sum.txt) и проверять контрольную сумму SHA256 перед передачей загруженного бинарного файла на установку.Scope & Component
desktopCore / Updater Serviceenhancementhighdev / 0.5.0Местоположение в коде (Планируемое)
lib/core/updater/app_updater_service.dartиlib/core/updater/update_manifest.dartAcceptance Criteria / Критерии приемки
AppUpdaterServiceс методамиcheckForUpdates({bool background = false})иdownloadAsset(UpdateAsset asset, {ProgressCallback onProgress}).Stable.