From 67d51a097516f04c8add3d485a8d9194864b1e53 Mon Sep 17 00:00:00 2001 From: Frank Stellmacher <171614930+Psychotoxical@users.noreply.github.com> Date: Fri, 24 Apr 2026 22:50:06 +0200 Subject: [PATCH] revert: roll back flatpak packaging experiment (#271 + follow-ups) (#297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts #271, #292, #293, #294, #295, #296. The flatpak CI pipeline itself works end-to-end, but the installed bundle surfaced three separate manifest issues during smoke-test on Wayland+NVIDIA: 1. GDK_BACKEND is not set, so without an X11 display in the sandbox GTK aborts with "Failed to initialize GTK". 2. libayatana-appindicator3 is not bundled in the GNOME 47 runtime, so libappindicator-sys panics the main thread. 3. The release binary is compiled via \`cargo build --release\` rather than \`cargo tauri build\`, so the \`custom-protocol\` feature is off and Tauri falls back to devUrl — the window opens but shows "Could not connect to localhost". Rolling back so main stays on 1.43.0. A follow-up on the original PR tracks the fixes needed before re-attempting. Co-authored-by: Claude Opus 4.7 (1M context) --- .github/workflows/release.yml | 79 ------------- CHANGELOG.md | 4 - package.json | 2 +- packages/flatpak/.gitignore | 4 - .../flatpak/dev.psysonic.Psysonic.desktop | 10 -- .../dev.psysonic.Psysonic.metainfo.xml | 107 ------------------ packages/flatpak/dev.psysonic.Psysonic.yml | 89 --------------- src-tauri/Cargo.lock | 34 +++--- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- src/components/AppUpdater.tsx | 3 - 11 files changed, 20 insertions(+), 316 deletions(-) delete mode 100644 packages/flatpak/.gitignore delete mode 100644 packages/flatpak/dev.psysonic.Psysonic.desktop delete mode 100644 packages/flatpak/dev.psysonic.Psysonic.metainfo.xml delete mode 100644 packages/flatpak/dev.psysonic.Psysonic.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 44f93b4f..9562397a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,7 +73,6 @@ jobs: build-macos-windows: needs: create-release - if: false # TEMP: flatpak-only test run permissions: contents: write strategy: @@ -164,7 +163,6 @@ jobs: generate-manifest: needs: [create-release, build-macos-windows] - if: false # TEMP: flatpak-only test run runs-on: ubuntu-24.04 permissions: contents: write @@ -184,7 +182,6 @@ jobs: build-linux: needs: create-release - if: false # TEMP: flatpak-only test run permissions: contents: write runs-on: ubuntu-24.04 @@ -231,81 +228,6 @@ jobs: \( -name "*.deb" -o -name "*.rpm" -o -name "*.AppImage" \) \ | xargs gh release upload "app-v${VERSION}" --clobber - build-flatpak: - needs: create-release - permissions: - contents: write - runs-on: ubuntu-24.04 - container: - image: bilelmoussaoui/flatpak-github-actions:gnome-47 - options: --privileged - steps: - - uses: actions/checkout@v5 - - # Container runs as root but the checkout is owned by the runner user; - # without this, any later `git` (including gh release upload's internal - # git probe) aborts with "dubious ownership". - - name: mark workspace as safe for git - run: git config --global --add safe.directory "$GITHUB_WORKSPACE" - - - name: install source-generation tools - run: | - dnf install -y python3-pip python3-aiohttp - pip3 install --break-system-packages tomlkit - - - name: install flatpak-builder-tools - run: | - git clone --depth=1 \ - https://github.com/flatpak/flatpak-builder-tools.git \ - /tmp/flatpak-builder-tools - # cargo generator: still a single script - # node generator: now a proper Python package, install via pip - pip3 install --break-system-packages \ - /tmp/flatpak-builder-tools/node - - - name: generate cargo offline sources - run: | - python3 /tmp/flatpak-builder-tools/cargo/flatpak-cargo-generator.py \ - src-tauri/Cargo.lock -o packages/flatpak/cargo-sources.json - - - name: generate npm offline sources - run: | - flatpak-node-generator npm package-lock.json \ - -o packages/flatpak/npm-sources.json - - - name: patch manifest for this release - # The `app-v*` tag only materialises when the Draft release is published, - # so it is not a real git ref during CI. Use the triggering `v*` tag - # and its commit sha directly — both exist when the workflow runs. - env: - TRIGGER_TAG: ${{ github.ref_name }} - TRIGGER_SHA: ${{ github.sha }} - run: | - sed -i \ - -e "s|tag: app-v.*|tag: ${TRIGGER_TAG}|" \ - -e "s|commit: PLACEHOLDER_COMMIT|commit: ${TRIGGER_SHA}|" \ - -e "s|VITE_LASTFM_API_KEY=__LASTFM_KEY__|VITE_LASTFM_API_KEY=${{ secrets.VITE_LASTFM_API_KEY }}|" \ - -e "s|VITE_LASTFM_API_SECRET=__LASTFM_SECRET__|VITE_LASTFM_API_SECRET=${{ secrets.VITE_LASTFM_API_SECRET }}|" \ - packages/flatpak/dev.psysonic.Psysonic.yml - - - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 - with: - bundle: Psysonic_${{ needs.create-release.outputs.package_version }}.flatpak - manifest-path: packages/flatpak/dev.psysonic.Psysonic.yml - cache-key: flatpak-${{ github.sha }} - - - name: install gh CLI - run: dnf install -y gh - - - name: upload flatpak bundle to release - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - VERSION=${{ needs.create-release.outputs.package_version }} - gh release upload "app-v${VERSION}" \ - "Psysonic_${VERSION}.flatpak" \ - --clobber - # Verifies that `nix build .#psysonic` still works against the current source, # refreshes `nix/upstream-sources.json` (npmDepsHash) + `flake.lock` # (nixpkgs pin), and pushes the resulting store paths to the public Cachix @@ -315,7 +237,6 @@ jobs: # The refreshed lock/hash files are committed back to `main` when they change. verify-nix: needs: create-release - if: false # TEMP: flatpak-only test run runs-on: ubuntu-24.04 permissions: contents: write diff --git a/CHANGELOG.md b/CHANGELOG.md index 626de39a..a728b25a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,10 +13,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 > > **📦 Version jump 1.34.x → 1.40.0:** The 1.34.x patch series was bumped a lot as each small feature landed. 1.40.0 consolidates the last few weeks of work — macOS signing + auto-updater, the Device-Sync overhaul, theme work and contrast audits — into a single coherent release. The next major bump (2.0.0) is planned once Windows code-signing + Windows auto-updater are active as well. -## [1.43.2] - -test - ## [1.43.0] - 2026-04-20 ### Added diff --git a/package.json b/package.json index 772e8974..4cecd13b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "psysonic", - "version": "1.43.2", + "version": "1.43.0", "private": true, "scripts": { "dev": "vite", diff --git a/packages/flatpak/.gitignore b/packages/flatpak/.gitignore deleted file mode 100644 index 8a7c5ed6..00000000 --- a/packages/flatpak/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Generated by flatpak-cargo-generator and flatpak-node-generator. -# Committed only in the Flathub mirror repo, not here. -cargo-sources.json -npm-sources.json diff --git a/packages/flatpak/dev.psysonic.Psysonic.desktop b/packages/flatpak/dev.psysonic.Psysonic.desktop deleted file mode 100644 index 69151064..00000000 --- a/packages/flatpak/dev.psysonic.Psysonic.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Name=Psysonic -Comment=Desktop music player for Subsonic API-compatible servers -Exec=psysonic -Icon=dev.psysonic.Psysonic -Terminal=false -Type=Application -Categories=AudioVideo;Audio;Music;Player; -StartupWMClass=psysonic -Keywords=music;player;subsonic;navidrome;streaming; diff --git a/packages/flatpak/dev.psysonic.Psysonic.metainfo.xml b/packages/flatpak/dev.psysonic.Psysonic.metainfo.xml deleted file mode 100644 index 89dc1721..00000000 --- a/packages/flatpak/dev.psysonic.Psysonic.metainfo.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - dev.psysonic.Psysonic - Psysonic - Music player for Subsonic-compatible servers - CC0-1.0 - GPL-3.0-only - - - Psychotoxical - - - -

- Psysonic is a desktop music player for Subsonic-compatible servers such as - Navidrome and Gonic. It connects to your self-hosted music library and lets - you stream your collection from anywhere. -

-

Features:

-
    -
  • Gapless playback with a native Rust audio engine
  • -
  • Fullscreen ambient player with album art backdrop
  • -
  • Synced and plain lyrics via LRCLIB and YouLy+
  • -
  • Scrobbling to Last.fm
  • -
  • Discord Rich Presence integration
  • -
  • MPRIS media controls and global shortcuts
  • -
  • Multiple server profiles
  • -
  • Catppuccin-themed UI with glassmorphism effects
  • -
  • Play queue management with drag-and-drop
  • -
-
- - dev.psysonic.Psysonic.desktop - - https://github.com/Psychotoxical/psysonic - https://github.com/Psychotoxical/psysonic/issues - https://ko-fi.com/psychotoxic - https://github.com/Psychotoxical/psysonic - - - AudioVideo - Audio - Music - Player - - - - music - player - subsonic - navidrome - gonic - streaming - self-hosted - - - - - mild - - - - 768 - keyboard - pointing - - - - always - - - - - - Main player view with album art and play queue - https://raw.githubusercontent.com/Psychotoxical/psysonic/main/assets/screenshots/main.png - - - Fullscreen ambient player - https://raw.githubusercontent.com/Psychotoxical/psysonic/main/assets/screenshots/fullscreen.png - - - Settings — server profiles and appearance - https://raw.githubusercontent.com/Psychotoxical/psysonic/main/assets/screenshots/settings.png - - - - - - https://github.com/Psychotoxical/psysonic/releases/tag/app-v1.43.0 - -

Added user management for Navidrome admins, seekable HTTP streaming, - mini player improvements, floating player bar, NVIDIA DMA-BUF auto-disable, - and smoother lyrics scroll animation.

-
-
- - https://github.com/Psychotoxical/psysonic/releases/tag/app-v1.42.1 - -

Critical fix: mini player no longer hangs the app on Windows. Added - optional "Preload mini player" setting on Linux and macOS.

-
-
-
-
diff --git a/packages/flatpak/dev.psysonic.Psysonic.yml b/packages/flatpak/dev.psysonic.Psysonic.yml deleted file mode 100644 index 40df268b..00000000 --- a/packages/flatpak/dev.psysonic.Psysonic.yml +++ /dev/null @@ -1,89 +0,0 @@ -app-id: dev.psysonic.Psysonic -runtime: org.gnome.Platform -runtime-version: '47' -sdk: org.gnome.Sdk -sdk-extensions: - - org.freedesktop.Sdk.Extension.rust-stable - - org.freedesktop.Sdk.Extension.node20 -command: psysonic -separate-locales: false - -finish-args: - # Network: Subsonic server, Last.fm, Discord RPC, LRCLIB, Bandsintown - - --share=network - - --share=ipc - # Display - - --socket=wayland - - --socket=fallback-x11 - # Audio: PulseAudio + ALSA, USB DACs (UMC202HD etc.) - - --socket=pulseaudio - - --device=all - # D-Bus: MPRIS, Discord RPC, tray icon - - --socket=session-bus - - --talk-name=org.mpris.MediaPlayer2.* - - --own-name=org.mpris.MediaPlayer2.psysonic - - --talk-name=com.discordapp.* - # Discord RPC unix socket lives in $XDG_RUNTIME_DIR - - --filesystem=xdg-run/discord-ipc-0:ro - - --filesystem=xdg-run/discord-ipc-1:ro - - --filesystem=xdg-run/discord-ipc-2:ro - - --filesystem=xdg-run/discord-ipc-3:ro - - --filesystem=xdg-run/discord-ipc-4:ro - # Tray icon (GNOME needs AppIndicator extension installed) - - --talk-name=org.kde.StatusNotifierWatcher - - --talk-name=org.freedesktop.Notifications - # Local music library (read-only, for future local-file playback) - - --filesystem=xdg-music:ro - -build-options: - append-path: /usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/node20/bin - env: - - CARGO_HOME=/run/build/psysonic/cargo - - CARGO_NET_OFFLINE=true - - RUSTUP_TOOLCHAIN=stable - -modules: - - name: psysonic - buildsystem: simple - build-options: - env: - # Disables the in-app updater UI — Flathub owns updates for Flatpak installs - - VITE_PSYSONIC_FLATPAK=1 - # Prevents tauri-build from checking whether the Vite dev server is running - - TAURI_SKIP_DEVSERVER_CHECK=true - # Last.fm API keys — replaced with real values by the CI job at build time - - VITE_LASTFM_API_KEY=__LASTFM_KEY__ - - VITE_LASTFM_API_SECRET=__LASTFM_SECRET__ - # npm offline cache — flatpak-node-generator places sources in flatpak-node/npm-cache - - npm_config_cache=/run/build/psysonic/flatpak-node/npm-cache - build-commands: - # Install npm dependencies from pre-generated offline sources - - npm ci --offline - # Build frontend (dist/ must exist before cargo compiles the Rust crate, - # because tauri-build embeds the assets at compile time) - - npm run build - # Build the Rust binary (offline, using pre-vendored cargo sources) - - cargo build --manifest-path src-tauri/Cargo.toml --release - # Install binary and assets - - install -Dm755 src-tauri/target/release/psysonic "${FLATPAK_DEST}/bin/psysonic" - - install -Dm644 dev.psysonic.Psysonic.desktop "${FLATPAK_DEST}/share/applications/dev.psysonic.Psysonic.desktop" - - install -Dm644 dev.psysonic.Psysonic.metainfo.xml "${FLATPAK_DEST}/share/metainfo/dev.psysonic.Psysonic.metainfo.xml" - - install -Dm644 src-tauri/icons/32x32.png "${FLATPAK_DEST}/share/icons/hicolor/32x32/apps/dev.psysonic.Psysonic.png" - - install -Dm644 src-tauri/icons/128x128.png "${FLATPAK_DEST}/share/icons/hicolor/128x128/apps/dev.psysonic.Psysonic.png" - - install -Dm644 src-tauri/icons/128x128@2x.png "${FLATPAK_DEST}/share/icons/hicolor/256x256/apps/dev.psysonic.Psysonic.png" - - install -Dm644 src-tauri/icons/icon.png "${FLATPAK_DEST}/share/icons/hicolor/512x512/apps/dev.psysonic.Psysonic.png" - sources: - - type: git - url: https://github.com/Psychotoxical/psysonic.git - # Updated automatically by the CI release job; bump manually for local builds - tag: app-v1.43.0 - commit: PLACEHOLDER_COMMIT - # Generated by the CI job via flatpak-cargo-generator and flatpak-node-generator. - # Committed into git only for the Flathub mirror repo (separate from this source - # repo); locally, run packages/flatpak/generate-sources.sh to create them. - - cargo-sources.json - - npm-sources.json - - type: file - path: dev.psysonic.Psysonic.desktop - - type: file - path: dev.psysonic.Psysonic.metainfo.xml diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index c05b9f9d..7d140601 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -547,9 +547,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.61" +version = "1.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" +checksum = "43c5703da9466b66a946814e1adf53ea2c90f10063b86290cc9eb67ce3478a20" dependencies = [ "find-msvc-tools", "jobserver", @@ -952,9 +952,9 @@ checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" [[package]] name = "data-encoding" -version = "2.11.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" [[package]] name = "deranged" @@ -2506,9 +2506,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.186" +version = "0.2.185" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" [[package]] name = "libloading" @@ -3653,7 +3653,7 @@ dependencies = [ [[package]] name = "psysonic" -version = "1.43.2" +version = "1.43.0" dependencies = [ "biquad", "discord-rich-presence", @@ -4173,9 +4173,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.39" +version = "0.23.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2c118cb077cca2822033836dfb1b975355dfb784b5e8da48f7b6c5db74e60e" +checksum = "69f9466fb2c14ea04357e91413efb882e2a6d4a406e625449bc0a5d360d53a21" dependencies = [ "once_cell", "ring", @@ -4199,9 +4199,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" dependencies = [ "web-time", "zeroize", @@ -4236,9 +4236,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.13" +version = "0.103.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +checksum = "8279bb85272c9f10811ae6a6c547ff594d6a7f3c6c6b02ee9726d1d0dcfcdd06" dependencies = [ "ring", "rustls-pki-types", @@ -5841,7 +5841,7 @@ dependencies = [ "indexmap 2.14.0", "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", - "winnow 1.0.2", + "winnow 1.0.1", ] [[package]] @@ -5850,7 +5850,7 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.2", + "winnow 1.0.1", ] [[package]] @@ -7113,9 +7113,9 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" dependencies = [ "memchr", ] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 70efb023..e9b587f0 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "psysonic" -version = "1.43.2" +version = "1.43.0" description = "Psysonic Desktop Music Player" authors = [] license = "" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index c974e7b0..9aa7653f 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Psysonic", - "version": "1.43.2", + "version": "1.43.0", "identifier": "dev.psysonic.player", "build": { "beforeDevCommand": "npm run dev", diff --git a/src/components/AppUpdater.tsx b/src/components/AppUpdater.tsx index 03e065e4..5db23032 100644 --- a/src/components/AppUpdater.tsx +++ b/src/components/AppUpdater.tsx @@ -94,9 +94,6 @@ function pickAsset(assets: GithubAsset[]): GithubAsset | undefined { type DlState = 'idle' | 'downloading' | 'done' | 'error'; export default function AppUpdater() { - // Flathub manages updates for Flatpak installs — updater UI must not appear - if (import.meta.env.VITE_PSYSONIC_FLATPAK === '1') return null; - const { t } = useTranslation(); const [release, setRelease] = useState(null); const [dismissed, setDismissed] = useState(false);