Clean release notes in Android and desktop update dialogs. Persist downloaded audio and offline playback events per server and user; add desktop update checks, checksum verification and installer launch.
4.9 KiB
Десктоп (apps/desktop)
Windows, Linux и macOS: тот же веб-клиент в окне Tauri 2. Запросы к API идут через локальный прокси на 127.0.0.1, чтобы плеер не открывал чужой origin. Refresh-токен хранится в системной связке ключей. Тип клиента — desktop.
При первом запуске нужно указать адрес сервера (как в Android). Дальше вход тот же, что в вебе. Кнопка «Другой сервер» в настройках забывает адрес и токен. Трея: левый клик открывает окно; меню — открыть и выход. Клавиши медиаплеера ОС управляют воспроизведением.
Плейлисты, ссылка на трек и остальной интерфейс совпадают с вебом. Сборка подставляет версию из git-тега.
pnpm --filter @pipu/desktop icons
pnpm --filter @pipu/desktop dev
pnpm --filter @pipu/desktop bundle
На Windows получается NSIS-установщик (~3 МБ). На Linux в релиз идёт только .deb (~4 МБ): AppImage тащит WebKitGTK и раздувается до ~80 МБ. Зависимости пакета: WebKitGTK 4.1, AppIndicator, libsecret, GStreamer.
Релиз по тегу собирает Linux .deb и Windows NSIS через cargo-xwin (pipu-music-<версия>-windows-setup.exe). Подпись Windows-установщика на Linux нет. Страница /download на сервере отдаёт те файлы, что есть в последнем релизе Gitea.
Офлайн и кеш
Коллекция → Скачанное и кеш доступна без сервера, в том числе после перезапуска. Полностью загруженные прослушанные треки автоматически сохраняются в IndexedDB WebView; кеш недавних ограничен 500 МБ, при заполнении удаляются самые старые записи. Кнопка «Скачать» закрепляет трек: такие загрузки не вытесняются кешем и удаляются вручную. Обложки сохраняются рядом с аудио; подписанные ссылки не сохраняются. Хранилище и локальная очередь воспроизведения разделены по адресу сервера и пользователю.
Настройки показывают размер хранилища и позволяют очистить недавние треки, сохранив ручные загрузки. Плеер предпочитает локальное аудио (включая crossfade); при запуске без сети восстанавливает сессию и сохранённую очередь без автозапуска. Если сервер волны недоступен, можно запустить перемешанные локальные треки без дизлайков. События прослушивания сохраняются локально и досылаются с исходными идентификаторами при восстановлении связи.
Обновления
При запуске и возврате в окно (не чаще раза в 6 часов), а также вручную в настройках,
нативный клиент читает /api/v1/app/clients через настроенный сервер Pipu.
Выбирается сборка текущей ОС, версия сравнивается с установленной с учётом -rc.N.
Диалог показывает пользовательские заметки без служебных блоков CI.
«Скачать и установить» загружает сборку в каталог кеша приложения, показывает прогресс,
проверяет размер и SHA-256 и только затем открывает установщик. Без контрольной суммы
обновление не предлагается. Windows запускает EXE/MSI; Linux открывает DEB/RPM через
системный обработчик пакетов; macOS открывает DMG. Установку подтверждает пользователь
в системном интерфейсе, после неё требуется перезапуск приложения. На Linux необходим
установленный обработчик пакетов для xdg-open; AppImage и .app.tar этим потоком не поддерживаются.