ci / module boundaries / boundaries (push) Successful in 7s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m2s
ci / ts / ts (packages + web) (push) Successful in 3m8s
ci / desktop / rust (desktop proxy) (push) Successful in 4m21s
release / release (версия и заметки) (push) Successful in 6s
release / android (APK в релиз) (push) Successful in 4m0s
release / desktop (Linux и Windows в релиз) (push) Successful in 11m49s
release / prune (старые файлы и прогоны) (push) Successful in 5s
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.
47 lines
4.9 KiB
Markdown
47 lines
4.9 KiB
Markdown
# Десктоп (`apps/desktop`)
|
|
|
|
Windows, Linux и macOS: тот же веб-клиент в окне [Tauri 2](https://tauri.app/). Запросы к API идут через локальный прокси на `127.0.0.1`, чтобы плеер не открывал чужой origin. Refresh-токен хранится в системной связке ключей. Тип клиента — `desktop`.
|
|
|
|
При первом запуске нужно указать адрес сервера (как в Android). Дальше вход тот же, что в вебе. Кнопка «Другой сервер» в настройках забывает адрес и токен. Трея: левый клик открывает окно; меню — открыть и выход. Клавиши медиаплеера ОС управляют воспроизведением.
|
|
|
|
Плейлисты, ссылка на трек и остальной интерфейс совпадают с вебом. Сборка подставляет версию из git-тега.
|
|
|
|
```bash
|
|
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` этим потоком не поддерживаются.
|