diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..e6abd58f --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,6 @@ +# Use the system GCC linker for Linux targets instead of rust-lld. +# ring (pulled in by tauri-plugin-updater) contains C/assembly objects that +# lld cannot resolve on Arch/CachyOS — switching to cc avoids the +# "undefined symbol: ring_core_*" linker errors. +[target.x86_64-unknown-linux-gnu] +linker = "cc" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 24c1fe82..cda4d18d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -122,30 +122,41 @@ jobs: VITE_LASTFM_API_KEY: ${{ secrets.VITE_LASTFM_API_KEY }} VITE_LASTFM_API_SECRET: ${{ secrets.VITE_LASTFM_API_SECRET }} with: - releaseId: ${{ needs.create-release.outputs.release_id }} + # Windows: no releaseId — tauri-action would search bundle/msi/ which doesn't exist. + # We upload NSIS artifacts manually in the next step. + releaseId: ${{ matrix.settings.platform != 'windows-latest' && needs.create-release.outputs.release_id || '' }} args: ${{ matrix.settings.args }} - - name: sign and upload bundle signature + - name: upload Windows NSIS artifacts + if: matrix.settings.platform == 'windows-latest' shell: bash env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VERSION: ${{ needs.create-release.outputs.package_version }} run: | - if [[ "${{ matrix.settings.platform }}" == "macos-latest" ]]; then - if [[ "${{ matrix.settings.args }}" == *"aarch64"* ]]; then - BUNDLE="src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Psysonic.app.tar.gz" - SIG_NAME="Psysonic_aarch64.app.tar.gz.sig" - else - BUNDLE="src-tauri/target/x86_64-apple-darwin/release/bundle/macos/Psysonic.app.tar.gz" - SIG_NAME="Psysonic_x64.app.tar.gz.sig" - fi + NSIS_DIR="src-tauri/target/release/bundle/nsis" + # Upload installer (.exe) and updater bundle (.nsis.zip + .nsis.zip.sig) + FILES=$(find "$NSIS_DIR" -name "*.exe" -o -name "*.nsis.zip" -o -name "*.nsis.zip.sig" 2>/dev/null) + if [[ -z "$FILES" ]]; then + echo "No NSIS artifacts found in $NSIS_DIR" >&2 + ls -la "$NSIS_DIR" || true + exit 1 + fi + echo "$FILES" | xargs gh release upload "app-v${VERSION}" --clobber + + - name: sign and upload macOS bundle signature + if: matrix.settings.platform == 'macos-latest' + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VERSION: ${{ needs.create-release.outputs.package_version }} + run: | + if [[ "${{ matrix.settings.args }}" == *"aarch64"* ]]; then + BUNDLE="src-tauri/target/aarch64-apple-darwin/release/bundle/macos/Psysonic.app.tar.gz" + SIG_NAME="Psysonic_aarch64.app.tar.gz.sig" else - BUNDLE=$(find src-tauri/target/release/bundle/nsis -name "*.nsis.zip" 2>/dev/null | head -1) - if [[ -z "$BUNDLE" ]]; then - echo "No NSIS zip bundle found — tauri-action likely signed and uploaded already. Skipping." - exit 0 - fi - SIG_NAME="Psysonic_${VERSION}_x64-setup.nsis.zip.sig" + BUNDLE="src-tauri/target/x86_64-apple-darwin/release/bundle/macos/Psysonic.app.tar.gz" + SIG_NAME="Psysonic_x64.app.tar.gz.sig" fi npx tauri signer sign --private-key "$TAURI_SIGNING_PRIVATE_KEY" --password "$TAURI_SIGNING_PRIVATE_KEY_PASSWORD" "$BUNDLE" cp "${BUNDLE}.sig" "$SIG_NAME" diff --git a/CHANGELOG.md b/CHANGELOG.md index 87dc64a7..6430f6dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.27.2] - 2026-04-02 + +### Fixed + +- **Radio broken from context menu** *(reported by [@netherguy4](https://github.com/netherguy4))*: "Start Radio" in the track and queue-item context menus had no effect. The handler was passing the artist name as the artist ID to `getSimilarSongs2`, which returned an empty result — so no tracks were queued and no error was shown. Now correctly passes `song.artistId`. +- **CI: Windows NSIS upload**: `tauri-action` was searching `bundle/msi/` (which doesn't exist in NSIS-only builds), causing the GitHub Release upload to fail with 404. Windows artifacts are now uploaded via an explicit step using `bundle/nsis/*.exe` + `*.nsis.zip` + `*.nsis.zip.sig`. +- **Linux/AUR build: ring linker error**: Builds on Arch/CachyOS failed with `rust-lld: undefined symbol: ring_core_*` after the Tauri updater was added. Added `.cargo/config.toml` to use the GCC linker (`cc`) for `x86_64-unknown-linux-gnu` targets, and added `clang` to the AUR `makedepends` (required by ring's bindgen step). + +--- + ## [1.27.1] - 2026-04-02 ### Fixed diff --git a/package.json b/package.json index 8de9243e..5bf75356 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "psysonic", - "version": "1.27.1", + "version": "1.27.2", "private": true, "scripts": { "dev": "vite", diff --git a/packages/aur/PKGBUILD b/packages/aur/PKGBUILD index 8b5623ff..c6b0ec17 100644 --- a/packages/aur/PKGBUILD +++ b/packages/aur/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: Psychotoxic pkgname=psysonic -pkgver=1.27.1 +pkgver=1.27.2 pkgrel=1 pkgdesc="Desktop music player for Subsonic API-compatible servers (Navidrome, Gonic, etc.)" arch=('x86_64') @@ -16,6 +16,7 @@ makedepends=( 'npm' 'rust' 'cargo' + 'clang' ) source=("$pkgname-$pkgver.tar.gz::https://github.com/Psychotoxical/psysonic/archive/refs/tags/v$pkgver.tar.gz") sha256sums=('SKIP') diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 22b6012b..a2c66318 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -3470,7 +3470,7 @@ dependencies = [ [[package]] name = "psysonic" -version = "1.27.0" +version = "1.27.2" dependencies = [ "biquad", "md5", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 7448cf0a..6f7c2c2c 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "psysonic" -version = "1.27.1" +version = "1.27.2" description = "Psysonic Desktop Music Player" authors = [] license = "" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index c42e5ec3..50de156c 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.27.1", + "version": "1.27.2", "identifier": "dev.psysonic.player", "build": { "beforeDevCommand": "npm run dev", diff --git a/src/components/ContextMenu.tsx b/src/components/ContextMenu.tsx index 73aa1cbe..be425c6b 100644 --- a/src/components/ContextMenu.tsx +++ b/src/components/ContextMenu.tsx @@ -297,7 +297,7 @@ export default function ContextMenu() { {t('contextMenu.openAlbum')} )} -
handleAction(() => startRadio(song.artist, song.artist))}> +
handleAction(() => startRadio(song.artistId ?? song.artist, song.artist))}> {t('contextMenu.startRadio')}
handleAction(() => { @@ -440,7 +440,7 @@ export default function ContextMenu() {
); })()} -
handleAction(() => startRadio(song.artist, song.artist))}> +
handleAction(() => startRadio(song.artistId ?? song.artist, song.artist))}> {t('contextMenu.startRadio')}