diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ad6ebaa..a9a0c67c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 > > **🎉 macOS users:** Starting with **v1.34.15**, Psysonic can **update itself silently**. No more DMG downloading and dragging to Applications — the updater fetches the signed `.app` bundle, verifies the signature, replaces the app in place, and relaunches. Just click "Update" when the toast appears. +## [1.34.21] - 2026-04-18 + +> ### ⚠️ PLEASE IGNORE THIS RELEASE — TEST BUILD ONLY +> +> **This is a throwaway test build used to verify the macOS auto-updater pipeline end-to-end. There are no new features, no bug fixes, no changes of any kind that affect how Psysonic behaves for end users — only the version number, plus a small UI polish in the update notification on macOS.** +> +> **This release will be deleted within a day or two.** Do not download it, do not rely on it, do not link to it. Stay on whatever version you currently have installed; normal releases will resume shortly under the regular versioning scheme. +> +> Thanks for your patience while we stabilise the updater infrastructure. + ## [1.34.20] - 2026-04-18 > ### ⚠️ PLEASE IGNORE THIS RELEASE — TEST BUILD ONLY diff --git a/package.json b/package.json index 04f4b57d..4a295bd1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "psysonic", - "version": "1.34.20", + "version": "1.34.21", "private": true, "scripts": { "dev": "vite", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 758d92e9..4c9bb42d 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -3653,7 +3653,7 @@ dependencies = [ [[package]] name = "psysonic" -version = "1.34.20" +version = "1.34.21" dependencies = [ "biquad", "discord-rich-presence", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 73efd3d2..eea26248 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "psysonic" -version = "1.34.20" +version = "1.34.21" description = "Psysonic Desktop Music Player" authors = [] license = "" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 8975f747..b9d77223 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.34.20", + "version": "1.34.21", "identifier": "dev.psysonic.player", "build": { "beforeDevCommand": "npm run dev", diff --git a/src/components/AppUpdater.tsx b/src/components/AppUpdater.tsx index ab50bd70..27d8d581 100644 --- a/src/components/AppUpdater.tsx +++ b/src/components/AppUpdater.tsx @@ -159,6 +159,10 @@ export default function AppUpdater() { const asset = pickAsset(release.assets); const showAurHint = IS_LINUX && isArch; + // On macOS the Tauri Updater handles architecture, signature verification + // and in-place install — we don't need (and should not show) a DMG asset. + const useTauriUpdater = IS_MACOS; + const showInstallBtn = !showAurHint && (useTauriUpdater || !!asset); const handleSkip = () => { localStorage.setItem(SKIP_KEY, release.version); @@ -309,6 +313,40 @@ export default function AppUpdater() { yay -S psysonic-bin sudo pacman -Syu psysonic-bin + ) : useTauriUpdater ? ( + <> + {dlState === 'idle' && ( +
+ + {t('common.updaterMacReady', { + defaultValue: 'Downloads, verifies and installs automatically. The app will restart when done.', + })} + +
+ )} + {dlState === 'downloading' && ( +
+
+
+
+ {pct}% + + {fmtBytes(dlProgress.bytes)} + {dlProgress.total > 0 && ` / ${fmtBytes(dlProgress.total)}`} + +
+ )} + {dlState === 'done' && ( +
+
+ {t('common.updaterMacDone', { defaultValue: 'Installed. Restarting…' })} +
+
+ )} + {dlState === 'error' && ( +
{dlError || t('common.updaterErrorMsg')}
+ )} + ) : asset ? ( <> {dlState === 'idle' && ( @@ -365,10 +403,12 @@ export default function AppUpdater() { - {!showAurHint && asset && dlState === 'idle' && ( + {showInstallBtn && dlState === 'idle' && ( )} {dlState === 'error' && (