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' && (
+