Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STEENY Desktop

Кроссплатформенный Electron-клиент музыкального сервиса STEENY.

Клиент открывает существующий веб-интерфейс backend и добавляет нативные возможности: системный трей, управление окном, постоянную сессию, открытие ссылок в браузере, Discord Rich Presence и реакцию интерфейса на питание от батареи.

Требования

  • Node.js 22.12 или новее
  • запущенный STEENY backend

Запуск

npm install
npm start

По умолчанию клиент подключается к production-серверу https://music.steeny.fun/. После авторизации backend сам направляет пользователя на /home. Для локальной разработки или другого сервера укажите адрес переменной окружения:

STEENY_URL=http://127.0.0.1:5000 npm start

Для запуска с открытыми DevTools:

npm run dev

Проверка и сборка

npm run check
npm test
npm run pack

Готовые дистрибутивы создаются в dist/:

npm run dist:linux
npm run dist:win

Windows-сборку рекомендуется запускать на Windows или в CI с Windows runner. На Linux можно запустить AppImage напрямую или установить .deb/.rpm:

chmod +x dist/STEENY-linux-*.AppImage
./dist/STEENY-linux-*.AppImage

sudo apt install ./dist/STEENY-*-linux-*.deb
sudo dnf install ./dist/STEENY-*-linux-*.rpm

Автоматические обновления

Клиент проверяет официальный GitHub Releases через 12 секунд после запуска, при выходе компьютера из сна и затем каждые четыре часа.

  • Windows NSIS: обновление загружается в фоне и устанавливается после подтверждённого перезапуска.
  • Linux AppImage: файл обновляется на месте, если каталог доступен пользователю для записи. Сборка использует современный статический runtime без зависимости от FUSE2 и без отключения Chromium sandbox.
  • Linux DEB/RPM: клиент сообщает о новой версии и открывает официальный пакет; установка выполняется через apt/dnf, без небезопасного привилегированного автоустановщика.

Состояние и ручная проверка доступны в Настройки → Обновления и в меню трея.

Для работы updater каждый опубликованный релиз обязан содержать одновременно:

  • STEENY-…-windows-…-setup.exe, его .blockmap и latest.yml;
  • STEENY-linux-….AppImage, DEB, RPM и latest-linux.yml.

Workflow .github/workflows/release.yml собирает обе платформы и публикует полный набор только для тега, совпадающего с version:

git tag v2.1.0
git push origin v2.1.0

Релиз сначала создаётся как draft, файлы загружаются одной группой, и только после этого он становится Latest. Номер уже опубликованной версии нельзя переиспользовать — для исправления нужно повысить SemVer.

Windows Setup публикуется без подписи и не требует сертификата или GitHub Secrets. При первом запуске Windows может показать предупреждение SmartScreen и «Неизвестный издатель» — это ожидаемо для неподписанных приложений. Токен GitHub не встраивается в приложение: публичные обновления скачиваются без него.

Когда появится сертификат, включите forceCodeSigning: true и передайте WIN_CSC_LINK и WIN_CSC_KEY_PASSWORD в Windows job.

Безопасность

  • Node.js не доступен коду страницы (nodeIntegration: false).
  • Интерфейс получает только ограниченный API через изолированный preload.
  • Главное окно может переходить только на origin, заданный в STEENY_URL.
  • Внешние HTTP/HTTPS-ссылки открываются системным браузером.
  • Разрешение media выдаётся только локальному интерфейсу и только для аудио.
  • DEB/RPM не устанавливаются через режим непроверенных привилегированных пакетов.

Сессия и cookies хранятся в отдельном постоянном Electron-профиле steeny.

Старый клиент

Предыдущая реализация на PyQt сохранена в legacy/ только для истории и аварийного отката. Основной клиент запускается командами npm.

About

STEENY - это современный сервис потокового воспроизведения музыки, разработанный для стабильной работы с высокой нагрузкой и качественным пользовательским опытом.

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages