Skip to content

Добавить систему автоматической проверки обновлений (Update Checker) и инфо о сборке #26

@Scream034

Description

@Scream034

Какую проблему решит эта фича?

LMP — это десктопный клиент, обходные пути которого (дешифраторы n-token и sig-cipher) завязаны на постоянные изменения алгоритмов со стороны YouTube. Если YouTube меняет алгоритмы, дешифраторы ломаются, и пользователю жизненно важно как можно быстрее получить обновление.

Сейчас пользователю приходится вручную заходить на GitHub проекта, чтобы проверить, вышла ли новая версия или dev-сборка. Отсутствие автоматического информирования приводит к тому, что пользователи могут сидеть на устаревших сборках и отправлять ложные баг-репорты о неработающих стримах.

Описание предлагаемого решения

Для реализации фичи потребуется расширить логику в нескольких слоях проекта:

1Модель данных и Настройки (AppSettings.cs):

Добавить новые свойства конфигурации в AppSettings:

  • UpdateCheckIntervalHours (тип int или enum): Частота проверок (При запуске, Каждые 12 часов, Каждые 24 часа, Вручную).
  • LastUpdateCheckDateTime (тип DateTime): Время последней успешной проверки.
  • EnableBetaUpdates (тип bool): Проверять ли промежуточные dev-сборки (коммиты) или только стабильные релизы.

2Фоновая служба проверки (UpdateCheckerService.cs):

Создать фоновый сервис, который будет:

  • Опрашивать GitHub API (например, GET https://api.github.com/repos/Scream034/LMP/releases/latest или endpoint коммитов для dev-ветки).
  • Выполнять сетевой запрос строго на пуле потоков (Task.Run) [1] с таймаутом (5-7 секунд), чтобы медленный DNS или блокировки провайдера не вешали UI-поток при запуске плеера [1].
  • Сравнивать удаленный номер версии с локальным G.Build.CommitCount (компонент version.Build из Globals.cs).
  • Если найдена новая версия, отправлять мягкое уведомление через NotificationService (например: «Доступно обновление #185! Нажмите, чтобы скачать»).

Настройки в интерфейсе (GeneralPage.axaml или новая вкладка AboutPage.axaml):

Разработать блок информации о приложении:

  • Отображение текущей сборки: Выводить параметры из G.Build.Info (FullVersionString), явно показывая тип сборки (Debug / Release) и является ли она девелоперской (-dev на основе директив условной компиляции #if DEBUG).
  • Кнопка ручной проверки: Кнопка «Проверить обновления» с анимацией загрузки (индикатор IsCheckingUpdates). При клике запускается принудительный запрос к API.
  • Настройка частоты: ComboBox для выбора частоты автоматических проверок.

Альтернативные варианты (если есть)

  • Простой вариант: Добавить в правый верхний угол или настройки статическую ссылку «Проверить обновления на GitHub», которая просто открывает браузер. Но этот вариант требует от пользователя ручных действий и не решает проблему оперативного оповещения о поломках дешифраторов.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions