Releases: Psysonic/psysonic
Release list
Psysonic v1.51.0
Added
True simultaneous multi-server support — use every server as one music library
- Select music folders from several configured servers in the same priority-ordered library scope. Psysonic browses them simultaneously without making you switch the active server before every search, album, artist or playback action.
- Home, Albums, Artists, Composers, Genres, Favourites, Playlists, Folder Browser, Search, Most Played, Statistics, album details and artist details aggregate the selected servers into one catalogue. Shared music is de-duplicated by scope priority instead of appearing once per server.
- De-duplication no longer discards physical ownership: each logical track, album and artist retains every concrete server source. Psysonic can therefore show one clean catalogue while still knowing exactly which server must handle playback, artwork, metadata and mutations.
Mixed-server playback — one queue can play tracks from different servers
- A single queue can contain tracks owned by different servers. Each item resolves its stream, cover, lyrics, ReplayGain data and analysis against its own server instead of whichever server is currently active.
- Server play queues are pulled, updated and reconciled per owner, so mixed queues survive restart without one server replacing another server's tracks. Gapless, crossfade, infinite queue, shuffle, history and queue restore keep the same ownership.
- When one copy cannot play, a new source chooser can offer equivalent copies from the selected servers rather than failing the whole action. Album, artist and track source controls also let you choose a specific physical copy when that distinction matters.
Server-aware destinations and actions
- Playlist creation, smart-playlist editing, radio actions and other destination-sensitive flows select the target server explicitly instead of silently using the active server.
- Context menus, ratings, favourites, sharing, offline pins, device sync and Orbit carry the item's owner through the complete action. Creating an Orbit session from a multi-server scope now asks which server should host it, temporarily keeps only that server in the library scope and shared queue, then restores the previous scope when the session ends.
- Sharing a mixed-server queue opens a compact server picker directly below the share button; choosing a server copies its tracks immediately, while single-server queues still copy without an extra prompt. Unavailable servers are marked with an explanatory warning.
Debug logging — selectable multi-server diagnostics
- Settings → System → Logging and PsyLab → Logs offer basic and verbose debug-depth levels while Debug logging is enabled. Verbose mode adds structured multi-server scope, reachability, music-folder and New Releases diagnostics, with credentials and sensitive URL data redacted.
Streaming quality — per-address Navidrome bitrate and format controls
By @Manwe-777, PR #1334
- Saved Navidrome servers can request no bitrate cap or a 320…64 kbps ceiling, with Auto / MP3 / Opus / AAC as the target format. Settings are stored per address, so LAN and public endpoints can use different quality profiles and playback follows the connected endpoint.
- Offline pins, favourites sync and hot-cache prefetch use the original-stream path; confirmed Navidrome profiles request
format=raw, while other servers keep the existing uncapped request. Transcoded live bytes are not promoted as original files, and completed-stream reuse stays isolated by endpoint, account, format and bitrate cap. - Waveform, loudness and enrichment may analyse the played stream, but canonical results stay anchored to the original file's validated raw fingerprint. Different bitrate representations share one track revision, and a failed original probe cannot overwrite library identity.
- Because analysis stays anchored to the original, the first play of a track that arrives transcoded also fetches that original once in the background. Later plays skip it, but on a slow link the first play of each new track costs the capped stream plus the original — the cap saves bandwidth from the second play onwards.
- After updating, Psysonic checks every offline pin, synced favourite and hot-cache file once against the original's fingerprint, using a 16 KB request per file rather than a fresh download. Pinned albums can briefly show as incomplete while that runs; files that turn out to be a server transcode are replaced with the original.
Album details — disc covers in the multi-disc separator
By @Psychotoxical and @cucadmuh, PR #1336
- Multi-disc albums show each disc's cover next to "CD N" instead of a generic disc icon. Releases with distinct per-disc artwork show each disc's own cover; other albums fall back to the shared album art.
- On Navidrome, the queue, playbar mini-cover and "Who is listening?" use the same per-disc artwork, so a multi-disc release no longer keeps showing disc 1 everywhere outside the album page.
- Clearing the cover cache no longer leaves junk
mf-*directories under the album cover store after browsing All Albums.
Fullscreen player — volume slider in Minimal and Immersive modes
By @Psychotoxical, PR #1340
- The fullscreen player's volume control, previously only in Prism mode, is now also in the Minimal and Immersive styles — a mute toggle plus an always-visible level slider.
Theme store — respect a theme's minimum app version
By @Psychotoxical, PR #1344
- A store theme that needs a newer Psysonic now shows "requires a newer version" in place of the install button, and pending updates that need a newer app are held back, instead of the install failing with a generic error. The notice clears once the app itself is updated.
Themes — bundle local images and fonts
By @Psychotoxical, PR #1345
- Themes can ship their own images and fonts in an
assets/folder and reference them with a relativeurl("assets/…"), instead of embedding everything as inline data. Assets are written to disk on install and served locally — themes still never reach the network. Works for both Theme Store installs and imported.zipthemes; uninstalling a theme removes its files.
Theme store — a random theme of the moment
By @Psychotoxical, PR #1357
- The store now suggests one theme above the search box, picked from further down the catalogue and preferring themes you have not installed. The store lists themes by last change, so older ones were only ever found by paging to the end. Show another picks a different one; installing or applying the suggestion leaves it in place.
Player views — click any artist of a credit
- Artist names link to the artist page in all three fullscreen styles, the detached mini player and the mobile layout — until now only album and queue rows offered this. Clicking one in fullscreen closes the overlay so the artist page is right there.
- Joined credits such as "Primary feat. Guest" read as separate artists, including the bullet separator Navidrome uses when a track carries only plural artist tags. Names like AC/DC stay intact.
Audio visualizer — spectrum, scopes and fullscreen views
By @Manwe-777, PR #1375
- Now Playing and every fullscreen-player style can show a responsive spectrum, oscilloscope, radial scope or stereo field, with cover-derived or theme colours and an expanded window view.
- Sensitivity, response, frame rate and peak markers are configurable under Settings → Appearance → Visualizer. Internet radio is supported while its equalizer audio graph is active.
Visualizer — separate switches for Now Playing and the fullscreen player
By @Psychotoxical, PR #1378
- The visualizer can now be switched on for the fullscreen player alone, or for Now Playing alone, under Settings → Appearance → Visualizer. An existing off setting is kept as it was.
- The section's controls are grouped into two panels, and long option names such as the radial scope are no longer cut off in translated interfaces.
Performance benchmarks — measure real pages from the CLI
psysonic benchmark rundrives the running desktop app through representative core or all-page scenarios, with realistic and isolated profiles plus repeatable run counts.- JSON reports retain route readiness, React work, quiet time, long tasks and environment details, then compare each run with the pr...
Psysonic v1.51.0-rc.2
Added
True simultaneous multi-server support — use every server as one music library
- Select music folders from several configured servers in the same priority-ordered library scope. Psysonic browses them simultaneously without making you switch the active server before every search, album, artist or playback action.
- Home, Albums, Artists, Composers, Genres, Favourites, Playlists, Folder Browser, Search, Most Played, Statistics, album details and artist details aggregate the selected servers into one catalogue. Shared music is de-duplicated by scope priority instead of appearing once per server.
- De-duplication no longer discards physical ownership: each logical track, album and artist retains every concrete server source. Psysonic can therefore show one clean catalogue while still knowing exactly which server must handle playback, artwork, metadata and mutations.
Mixed-server playback — one queue can play tracks from different servers
- A single queue can contain tracks owned by different servers. Each item resolves its stream, cover, lyrics, ReplayGain data and analysis against its own server instead of whichever server is currently active.
- Server play queues are pulled, updated and reconciled per owner, so mixed queues survive restart without one server replacing another server's tracks. Gapless, crossfade, infinite queue, shuffle, history and queue restore keep the same ownership.
- When one copy cannot play, a new source chooser can offer equivalent copies from the selected servers rather than failing the whole action. Album, artist and track source controls also let you choose a specific physical copy when that distinction matters.
Server-aware destinations and actions
- Playlist creation, smart-playlist editing, radio actions and other destination-sensitive flows select the target server explicitly instead of silently using the active server.
- Context menus, ratings, favourites, sharing, offline pins, device sync and Orbit carry the item's owner through the complete action. Creating an Orbit session from a multi-server scope now asks which server should host it, temporarily keeps only that server in the library scope and shared queue, then restores the previous scope when the session ends.
- Sharing a mixed-server queue opens a compact server picker directly below the share button; choosing a server copies its tracks immediately, while single-server queues still copy without an extra prompt. Unavailable servers are marked with an explanatory warning.
Debug logging — selectable multi-server diagnostics
- Settings → System → Logging and PsyLab → Logs offer basic and verbose debug-depth levels while Debug logging is enabled. Verbose mode adds structured multi-server scope, reachability, music-folder and New Releases diagnostics, with credentials and sensitive URL data redacted.
Streaming quality — per-address Navidrome bitrate and format controls
By @Manwe-777, PR #1334
- Saved Navidrome servers can request no bitrate cap or a 320…64 kbps ceiling, with Auto / MP3 / Opus / AAC as the target format. Settings are stored per address, so LAN and public endpoints can use different quality profiles and playback follows the connected endpoint.
- Offline pins, favourites sync and hot-cache prefetch use the original-stream path; confirmed Navidrome profiles request
format=raw, while other servers keep the existing uncapped request. Transcoded live bytes are not promoted as original files, and completed-stream reuse stays isolated by endpoint, account, format and bitrate cap. - Waveform, loudness and enrichment may analyse the played stream, but canonical results stay anchored to the original file's validated raw fingerprint. Different bitrate representations share one track revision, and a failed original probe cannot overwrite library identity.
- Because analysis stays anchored to the original, the first play of a track that arrives transcoded also fetches that original once in the background. Later plays skip it, but on a slow link the first play of each new track costs the capped stream plus the original — the cap saves bandwidth from the second play onwards.
- After updating, Psysonic checks every offline pin, synced favourite and hot-cache file once against the original's fingerprint, using a 16 KB request per file rather than a fresh download. Pinned albums can briefly show as incomplete while that runs; files that turn out to be a server transcode are replaced with the original.
Album details — disc covers in the multi-disc separator
By @Psychotoxical and @cucadmuh, PR #1336
- Multi-disc albums show each disc's cover next to "CD N" instead of a generic disc icon. Releases with distinct per-disc artwork show each disc's own cover; other albums fall back to the shared album art.
- On Navidrome, the queue, playbar mini-cover and "Who is listening?" use the same per-disc artwork, so a multi-disc release no longer keeps showing disc 1 everywhere outside the album page.
- Clearing the cover cache no longer leaves junk
mf-*directories under the album cover store after browsing All Albums.
Fullscreen player — volume slider in Minimal and Immersive modes
By @Psychotoxical, PR #1340
- The fullscreen player's volume control, previously only in Prism mode, is now also in the Minimal and Immersive styles — a mute toggle plus an always-visible level slider.
Theme store — respect a theme's minimum app version
By @Psychotoxical, PR #1344
- A store theme that needs a newer Psysonic now shows "requires a newer version" in place of the install button, and pending updates that need a newer app are held back, instead of the install failing with a generic error. The notice clears once the app itself is updated.
Themes — bundle local images and fonts
By @Psychotoxical, PR #1345
- Themes can ship their own images and fonts in an
assets/folder and reference them with a relativeurl("assets/…"), instead of embedding everything as inline data. Assets are written to disk on install and served locally — themes still never reach the network. Works for both Theme Store installs and imported.zipthemes; uninstalling a theme removes its files.
Theme store — a random theme of the moment
By @Psychotoxical, PR #1357
- The store now suggests one theme above the search box, picked from further down the catalogue and preferring themes you have not installed. The store lists themes by last change, so older ones were only ever found by paging to the end. Show another picks a different one; installing or applying the suggestion leaves it in place.
Player views — click any artist of a credit
- Artist names link to the artist page in all three fullscreen styles, the detached mini player and the mobile layout — until now only album and queue rows offered this. Clicking one in fullscreen closes the overlay so the artist page is right there.
- Joined credits such as "Primary feat. Guest" read as separate artists, including the bullet separator Navidrome uses when a track carries only plural artist tags. Names like AC/DC stay intact.
Audio visualizer — spectrum, scopes and fullscreen views
By @Manwe-777, PR #1375
- Now Playing and every fullscreen-player style can show a responsive spectrum, oscilloscope, radial scope or stereo field, with cover-derived or theme colours and an expanded window view.
- Sensitivity, response, frame rate and peak markers are configurable under Settings → Appearance → Visualizer. Internet radio is supported while its equalizer audio graph is active.
Visualizer — separate switches for Now Playing and the fullscreen player
By @Psychotoxical, PR #1378
- The visualizer can now be switched on for the fullscreen player alone, or for Now Playing alone, under Settings → Appearance → Visualizer. An existing off setting is kept as it was.
- The section's controls are grouped into two panels, and long option names such as the radial scope are no longer cut off in translated interfaces.
Performance benchmarks — measure real pages from the CLI
psysonic benchmark rundrives the running desktop app through representative core or all-page scenarios, with realistic and isolated profiles plus repeatable run counts.- JSON reports retain route readiness, React work, quiet time, long tasks and environment details, then compare each run with the pr...
Psysonic v1.51.0-rc.1
Added
True simultaneous multi-server support — use every server as one music library
- Select music folders from several configured servers in the same priority-ordered library scope. Psysonic browses them simultaneously without making you switch the active server before every search, album, artist or playback action.
- Home, Albums, Artists, Composers, Genres, Favourites, Playlists, Folder Browser, Search, Most Played, Statistics, album details and artist details aggregate the selected servers into one catalogue. Shared music is de-duplicated by scope priority instead of appearing once per server.
- De-duplication no longer discards physical ownership: each logical track, album and artist retains every concrete server source. Psysonic can therefore show one clean catalogue while still knowing exactly which server must handle playback, artwork, metadata and mutations.
Mixed-server playback — one queue can play tracks from different servers
- A single queue can contain tracks owned by different servers. Each item resolves its stream, cover, lyrics, ReplayGain data and analysis against its own server instead of whichever server is currently active.
- Server play queues are pulled, updated and reconciled per owner, so mixed queues survive restart without one server replacing another server's tracks. Gapless, crossfade, infinite queue, shuffle, history and queue restore keep the same ownership.
- When one copy cannot play, a new source chooser can offer equivalent copies from the selected servers rather than failing the whole action. Album, artist and track source controls also let you choose a specific physical copy when that distinction matters.
Server-aware destinations and actions
- Playlist creation, smart-playlist editing, radio actions and other destination-sensitive flows select the target server explicitly instead of silently using the active server.
- Context menus, ratings, favourites, sharing, offline pins, device sync and Orbit carry the item's owner through the complete action. Creating an Orbit session from a multi-server scope now asks which server should host it, temporarily keeps only that server in the library scope and shared queue, then restores the previous scope when the session ends.
- Sharing a mixed-server queue opens a compact server picker directly below the share button; choosing a server copies its tracks immediately, while single-server queues still copy without an extra prompt. Unavailable servers are marked with an explanatory warning.
Debug logging — selectable multi-server diagnostics
- Settings → System → Logging and PsyLab → Logs offer basic and verbose debug-depth levels while Debug logging is enabled. Verbose mode adds structured multi-server scope, reachability, music-folder and New Releases diagnostics, with credentials and sensitive URL data redacted.
Streaming quality — per-address Navidrome bitrate and format controls
By @Manwe-777, PR #1334
- Saved Navidrome servers can request no bitrate cap or a 320…64 kbps ceiling, with Auto / MP3 / Opus / AAC as the target format. Settings are stored per address, so LAN and public endpoints can use different quality profiles and playback follows the connected endpoint.
- Offline pins, favourites sync and hot-cache prefetch use the original-stream path; confirmed Navidrome profiles request
format=raw, while other servers keep the existing uncapped request. Transcoded live bytes are not promoted as original files, and completed-stream reuse stays isolated by endpoint, account, format and bitrate cap. - Waveform, loudness and enrichment may analyse the played stream, but canonical results stay anchored to the original file's validated raw fingerprint. Different bitrate representations share one track revision, and a failed original probe cannot overwrite library identity.
- Because analysis stays anchored to the original, the first play of a track that arrives transcoded also fetches that original once in the background. Later plays skip it, but on a slow link the first play of each new track costs the capped stream plus the original — the cap saves bandwidth from the second play onwards.
- After updating, Psysonic checks every offline pin, synced favourite and hot-cache file once against the original's fingerprint, using a 16 KB request per file rather than a fresh download. Pinned albums can briefly show as incomplete while that runs; files that turn out to be a server transcode are replaced with the original.
Album details — disc covers in the multi-disc separator
By @Psychotoxical and @cucadmuh, PR #1336
- Multi-disc albums show each disc's cover next to "CD N" instead of a generic disc icon. Releases with distinct per-disc artwork show each disc's own cover; other albums fall back to the shared album art.
- On Navidrome, the queue, playbar mini-cover and "Who is listening?" use the same per-disc artwork, so a multi-disc release no longer keeps showing disc 1 everywhere outside the album page.
- Clearing the cover cache no longer leaves junk
mf-*directories under the album cover store after browsing All Albums.
Fullscreen player — volume slider in Minimal and Immersive modes
By @Psychotoxical, PR #1340
- The fullscreen player's volume control, previously only in Prism mode, is now also in the Minimal and Immersive styles — a mute toggle plus an always-visible level slider.
Theme store — respect a theme's minimum app version
By @Psychotoxical, PR #1344
- A store theme that needs a newer Psysonic now shows "requires a newer version" in place of the install button, and pending updates that need a newer app are held back, instead of the install failing with a generic error. The notice clears once the app itself is updated.
Themes — bundle local images and fonts
By @Psychotoxical, PR #1345
- Themes can ship their own images and fonts in an
assets/folder and reference them with a relativeurl("assets/…"), instead of embedding everything as inline data. Assets are written to disk on install and served locally — themes still never reach the network. Works for both Theme Store installs and imported.zipthemes; uninstalling a theme removes its files.
Theme store — a random theme of the moment
By @Psychotoxical, PR #1357
- The store now suggests one theme above the search box, picked from further down the catalogue and preferring themes you have not installed. The store lists themes by last change, so older ones were only ever found by paging to the end. Show another picks a different one; installing or applying the suggestion leaves it in place.
Player views — click any artist of a credit
- Artist names link to the artist page in all three fullscreen styles, the detached mini player and the mobile layout — until now only album and queue rows offered this. Clicking one in fullscreen closes the overlay so the artist page is right there.
- Joined credits such as "Primary feat. Guest" read as separate artists, including the bullet separator Navidrome uses when a track carries only plural artist tags. Names like AC/DC stay intact.
Audio visualizer — spectrum, scopes and fullscreen views
By @Manwe-777, PR #1375
- Now Playing and every fullscreen-player style can show a responsive spectrum, oscilloscope, radial scope or stereo field, with cover-derived or theme colours and an expanded window view.
- Sensitivity, response, frame rate and peak markers are configurable under Settings → Appearance → Visualizer. Internet radio is supported while its equalizer audio graph is active.
Visualizer — separate switches for Now Playing and the fullscreen player
By @Psychotoxical, PR #1378
- The visualizer can now be switched on for the fullscreen player alone, or for Now Playing alone, under Settings → Appearance → Visualizer. An existing off setting is kept as it was.
- The section's controls are grouped into two panels, and long option names such as the radial scope are no longer cut off in translated interfaces.
Performance benchmarks — measure real pages from the CLI
psysonic benchmark rundrives the running desktop app through representative core or all-page scenarios, with realistic and isolated profiles plus repeatable run counts.- JSON reports retain route readiness, React work, quiet time, long tasks and environment details, then compare each run with the pr...
Psysonic v1.50.0
Added
Square corners — sharp-edged cards and covers
By @Psychotoxical, PR #1215
- New Square Corners toggle under Settings → Appearance → Visual Options → Display overrides the active theme to render cards and cover art with square, non-rounded corners. Covers album, playlist, artist and song cards, detail-page cover art, the Now Playing / Radio and fullscreen views, the cover lightbox, the queue cover, and the mini player. Off by default; buttons, inputs and dialogs keep the theme's corners.
Discord community banner
- A dismissible banner inviting you to join the Psysonic community on Discord appears after 20 hours of accumulated app use. Join opens the invite; dismiss it for the session, or choose Never show again to hide it permanently. The icon renders at a consistent size on every platform, including Windows.
Bulgarian translation
By @akirichev, PR #1228
- Full Bulgarian (Български) UI translation — selectable from the language picker on the Settings and Login screens.
Artists browse — album vs track credit mode
- Toggle Album artists vs Track artists on the Artists page — album mode lists indexed album artists; track mode includes performers from the local artist index (featured/guest credits). Star filter works in both modes; the choice persists across app restarts like Show artist images.
- Letter bucket filter (
A–Z,#,OTHER) runs in local SQL instead of scanning catalog chunks client-side, so late-alphabet picks load promptly on large libraries. - Artist name search no longer depends on query letter case for Cyrillic (and other non-ASCII) names when the local library index is enabled.
CLI — relative volume and quieter scripting output
psysonic --player volume +5/volume -10adjust the current level by that many percent;volume 80still sets an absolute level (use-qbefore--playerwhen the delta is negative so it is not parsed as a flag).- CLI invocations no longer print WebKit/NVIDIA workaround notes on stderr; on Linux, remote
--playerforwarding runs before WebKit startup so helper processes exit with less noise.
Theme Store — per-theme changelogs and pinned updates
By @Psychotoxical, PR #1240
- Each theme card now has an expandable What's new with per-version release notes, so you can see what a theme update changed — including non-visual fixes. Provided by theme authors; themes without notes just don't show the section.
- Installed themes with an available update now appear at the top of the store list instead of wherever the sort placed them, so you don't have to hunt for them.
Multi-library filter — browse and search across selected libraries
- The sidebar library picker now supports multi-select with priority ordering: browse, search, genre and album/artist detail views aggregate across the chosen libraries and de-duplicate shared items by priority. Built for large libraries — scoped SQL uses the hot
library_idcolumn with covering indexes and FTS-first matching. - Identity matching that powers cross-library de-duplication now normalises names per shipped locale (folds German ß, Norwegian æ, French œ, Romanian ș/ț, and Cyrillic ё/й); CJK titles are matched as-is.
- The Genres page and album browse genre filter list the full catalog on large libraries when All libraries is selected.
Theme contributors credited in Settings
By @Psychotoxical, PR #1248
- Settings → System → Contributors now lists community theme authors in a Themes sub-section alongside the App contributors, pulled from the theme store so it stays current as new themes are published.
- The theme card What's new now shows just the latest version's notes instead of the full version history.
- Theme author names refresh quietly from the store in the background instead of staying stale for up to 12 hours.
Fullscreen player — Minimal and Immersive styles
By @Psychotoxical, PR #1249
- Settings → Appearance → Fullscreen player style lets you choose Minimal (the current view) or Immersive — the earlier fullscreen player, with the artist photo/backdrop, a cover-derived accent colour, and rail or Apple-style scrolling lyrics.
- In Immersive, Show artist photo and Photo dimming are configurable; Apple-style lyrics show the artist image as a dimmed full-screen backdrop.
Italian translation
By @daquino94, PR #1250
- Full Italian (Italiano) UI translation — selectable from the language picker on the Settings and Login screens.
Fullscreen player — Prism style
By @Psychotoxical, PR #1251
- A third Fullscreen player style, Prism — a full-bleed artist backdrop with a floating glass lyrics panel on the right and a single glass control bar at the bottom (transport, a centred now-playing pill with an integrated progress line, and utilities). The cover-derived accent colour drives the progress fill and the active lyric line, and upcoming lyric lines fade out with a progressive blur.
Lyrics — word-by-word highlighting straight from your server
By @Psychotoxical, PR #1265
- The Server lyrics source now highlights lyrics word by word, so karaoke sync no longer depends on the third-party YouLyPlus backend. Requires Navidrome 0.63 or newer and lyrics that carry word timing (TTML or Enhanced LRC); anything else keeps highlighting line by line.
- Settings → Lyrics → Lyrics Sources spells out those requirements, and the block now follows the standard settings sub-card layout.
- Embedded Enhanced LRC no longer prints raw word timing codes (
<00:12.34>) in the lyric text — those codes drive word-by-word highlighting instead. - FLAC, Ogg Vorbis, Opus and Speex files that store synced lyrics in the
SYNCEDLYRICStag show embedded lyrics again, with that tag taking priority over the plainLYRICStag.
Start minimized to tray
- New Start Minimized to Tray toggle under Settings → System → Behavior. When enabled, the next cold start keeps the main window hidden and Psysonic runs from the system tray until you show it from the tray icon.
- Requires Show Tray Icon (turning this on enables the tray automatically; hiding the tray clears the setting). The choice applies on the next launch only — toggling it in Settings does not hide the window immediately.
- Opening the main window from the tray after a cold start renders the sidebar and main content immediately — including on Linux tiling WMs such as Hyprland — instead of leaving the sidebar or Mainstage invisible or blank until a restart.
Navidrome public share links — open and play without logging in
- Paste or search a Navidrome public share URL (
/share/{id}) to preview the shared track list in a modal, then play the full queue with no server account — direct stream and cover URLs are resolved anonymously from the share page. - Share playback uses a dedicated scope so an idle server play-queue pull cannot replace the share queue while you are also logged into Navidrome. Share sessions are not restored after an app restart — the server play queue applies as usual.
- While a share queue is active, Save Playlist is hidden in the queue toolbar (share tracks cannot be saved to the server); Load Playlist stays available. The queue Share button copies the original Navidrome
/share/{id}page URL.
Track lists — optional album cover thumbnails
- Browse and queue track rows can show the track's album cover (per-disc art when the album has distinct disc covers). Covers load through the standard cover cache pipeline — library resolve, viewport ensure, Rust resize to disk tiers — not a separate warm path.
- Settings → Appearance adds separate toggles for queue vs browse tracklists. Favorites, playlist, and album-detail track grids gain a flex-resize handle on the title column when covers are shown.
- Album detail pages skip per-row cover thumbs when the album art is already shown above the list — no duplicate image on every line.
Discord — server cover art source, without the credential leak
By @Psychotoxical, PR #1299
- Settings → Integrations → Discord → Cover art source gets a Server option, alongside None and Apple Music. ...
Psysonic v1.50.0-rc.3
Added
Square corners — sharp-edged cards and covers
By @Psychotoxical, PR #1215
- New Square Corners toggle under Settings → Appearance → Visual Options → Display overrides the active theme to render cards and cover art with square, non-rounded corners. Covers album, playlist, artist and song cards, detail-page cover art, the Now Playing / Radio and fullscreen views, the cover lightbox, the queue cover, and the mini player. Off by default; buttons, inputs and dialogs keep the theme's corners.
Discord community banner
- A dismissible banner inviting you to join the Psysonic community on Discord appears after 20 hours of accumulated app use. Join opens the invite; dismiss it for the session, or choose Never show again to hide it permanently. The icon renders at a consistent size on every platform, including Windows.
Bulgarian translation
By @akirichev, PR #1228
- Full Bulgarian (Български) UI translation — selectable from the language picker on the Settings and Login screens.
Artists browse — album vs track credit mode
- Toggle Album artists vs Track artists on the Artists page — album mode lists indexed album artists; track mode includes performers from the local artist index (featured/guest credits). Star filter works in both modes; the choice persists across app restarts like Show artist images.
- Letter bucket filter (
A–Z,#,OTHER) runs in local SQL instead of scanning catalog chunks client-side, so late-alphabet picks load promptly on large libraries. - Artist name search no longer depends on query letter case for Cyrillic (and other non-ASCII) names when the local library index is enabled.
CLI — relative volume and quieter scripting output
psysonic --player volume +5/volume -10adjust the current level by that many percent;volume 80still sets an absolute level (use-qbefore--playerwhen the delta is negative so it is not parsed as a flag).- CLI invocations no longer print WebKit/NVIDIA workaround notes on stderr; on Linux, remote
--playerforwarding runs before WebKit startup so helper processes exit with less noise.
Theme Store — per-theme changelogs and pinned updates
By @Psychotoxical, PR #1240
- Each theme card now has an expandable What's new with per-version release notes, so you can see what a theme update changed — including non-visual fixes. Provided by theme authors; themes without notes just don't show the section.
- Installed themes with an available update now appear at the top of the store list instead of wherever the sort placed them, so you don't have to hunt for them.
Multi-library filter — browse and search across selected libraries
- The sidebar library picker now supports multi-select with priority ordering: browse, search, genre and album/artist detail views aggregate across the chosen libraries and de-duplicate shared items by priority. Built for large libraries — scoped SQL uses the hot
library_idcolumn with covering indexes and FTS-first matching. - Identity matching that powers cross-library de-duplication now normalises names per shipped locale (folds German ß, Norwegian æ, French œ, Romanian ș/ț, and Cyrillic ё/й); CJK titles are matched as-is.
- The Genres page and album browse genre filter list the full catalog on large libraries when All libraries is selected.
Theme contributors credited in Settings
By @Psychotoxical, PR #1248
- Settings → System → Contributors now lists community theme authors in a Themes sub-section alongside the App contributors, pulled from the theme store so it stays current as new themes are published.
- The theme card What's new now shows just the latest version's notes instead of the full version history.
- Theme author names refresh quietly from the store in the background instead of staying stale for up to 12 hours.
Fullscreen player — Minimal and Immersive styles
By @Psychotoxical, PR #1249
- Settings → Appearance → Fullscreen player style lets you choose Minimal (the current view) or Immersive — the earlier fullscreen player, with the artist photo/backdrop, a cover-derived accent colour, and rail or Apple-style scrolling lyrics.
- In Immersive, Show artist photo and Photo dimming are configurable; Apple-style lyrics show the artist image as a dimmed full-screen backdrop.
Italian translation
By @daquino94, PR #1250
- Full Italian (Italiano) UI translation — selectable from the language picker on the Settings and Login screens.
Fullscreen player — Prism style
By @Psychotoxical, PR #1251
- A third Fullscreen player style, Prism — a full-bleed artist backdrop with a floating glass lyrics panel on the right and a single glass control bar at the bottom (transport, a centred now-playing pill with an integrated progress line, and utilities). The cover-derived accent colour drives the progress fill and the active lyric line, and upcoming lyric lines fade out with a progressive blur.
Lyrics — word-by-word highlighting straight from your server
By @Psychotoxical, PR #1265
- The Server lyrics source now highlights lyrics word by word, so karaoke sync no longer depends on the third-party YouLyPlus backend. Requires Navidrome 0.63 or newer and lyrics that carry word timing (TTML or Enhanced LRC); anything else keeps highlighting line by line.
- Settings → Lyrics → Lyrics Sources spells out those requirements, and the block now follows the standard settings sub-card layout.
- Embedded Enhanced LRC no longer prints raw word timing codes (
<00:12.34>) in the lyric text — those codes drive word-by-word highlighting instead. - FLAC, Ogg Vorbis, Opus and Speex files that store synced lyrics in the
SYNCEDLYRICStag show embedded lyrics again, with that tag taking priority over the plainLYRICStag.
Start minimized to tray
- New Start Minimized to Tray toggle under Settings → System → Behavior. When enabled, the next cold start keeps the main window hidden and Psysonic runs from the system tray until you show it from the tray icon.
- Requires Show Tray Icon (turning this on enables the tray automatically; hiding the tray clears the setting). The choice applies on the next launch only — toggling it in Settings does not hide the window immediately.
- Opening the main window from the tray after a cold start renders the sidebar and main content immediately — including on Linux tiling WMs such as Hyprland — instead of leaving the sidebar or Mainstage invisible or blank until a restart.
Navidrome public share links — open and play without logging in
- Paste or search a Navidrome public share URL (
/share/{id}) to preview the shared track list in a modal, then play the full queue with no server account — direct stream and cover URLs are resolved anonymously from the share page. - Share playback uses a dedicated scope so an idle server play-queue pull cannot replace the share queue while you are also logged into Navidrome. Share sessions are not restored after an app restart — the server play queue applies as usual.
- While a share queue is active, Save Playlist is hidden in the queue toolbar (share tracks cannot be saved to the server); Load Playlist stays available. The queue Share button copies the original Navidrome
/share/{id}page URL.
Track lists — optional album cover thumbnails
- Browse and queue track rows can show the track's album cover (per-disc art when the album has distinct disc covers). Covers load through the standard cover cache pipeline — library resolve, viewport ensure, Rust resize to disk tiers — not a separate warm path.
- Settings → Appearance adds separate toggles for queue vs browse tracklists. Favorites, playlist, and album-detail track grids gain a flex-resize handle on the title column when covers are shown.
- Album detail pages skip per-row cover thumbs when the album art is already shown above the list — no duplicate image on every line.
Discord — server cover art source, without the credential leak
By @Psychotoxical, PR #1299
- Settings → Integrations → Discord → Cover art source gets a Server option, alongside None and Apple Music. ...
Psysonic v1.50.0-rc.2
Added
Square corners — sharp-edged cards and covers
By @Psychotoxical, PR #1215
- New Square Corners toggle under Settings → Appearance → Visual Options → Display overrides the active theme to render cards and cover art with square, non-rounded corners. Covers album, playlist, artist and song cards, detail-page cover art, the Now Playing / Radio and fullscreen views, the cover lightbox, the queue cover, and the mini player. Off by default; buttons, inputs and dialogs keep the theme's corners.
Discord community banner
- A dismissible banner inviting you to join the Psysonic community on Discord appears after 20 hours of accumulated app use. Join opens the invite; dismiss it for the session, or choose Never show again to hide it permanently. The icon renders at a consistent size on every platform, including Windows.
Bulgarian translation
By @akirichev, PR #1228
- Full Bulgarian (Български) UI translation — selectable from the language picker on the Settings and Login screens.
Artists browse — album vs track credit mode
- Toggle Album artists vs Track artists on the Artists page — album mode lists indexed album artists; track mode includes performers from the local artist index (featured/guest credits). Star filter works in both modes; the choice persists across app restarts like Show artist images.
- Letter bucket filter (
A–Z,#,OTHER) runs in local SQL instead of scanning catalog chunks client-side, so late-alphabet picks load promptly on large libraries. - Artist name search no longer depends on query letter case for Cyrillic (and other non-ASCII) names when the local library index is enabled.
CLI — relative volume and quieter scripting output
psysonic --player volume +5/volume -10adjust the current level by that many percent;volume 80still sets an absolute level (use-qbefore--playerwhen the delta is negative so it is not parsed as a flag).- CLI invocations no longer print WebKit/NVIDIA workaround notes on stderr; on Linux, remote
--playerforwarding runs before WebKit startup so helper processes exit with less noise.
Theme Store — per-theme changelogs and pinned updates
By @Psychotoxical, PR #1240
- Each theme card now has an expandable What's new with per-version release notes, so you can see what a theme update changed — including non-visual fixes. Provided by theme authors; themes without notes just don't show the section.
- Installed themes with an available update now appear at the top of the store list instead of wherever the sort placed them, so you don't have to hunt for them.
Multi-library filter — browse and search across selected libraries
- The sidebar library picker now supports multi-select with priority ordering: browse, search, genre and album/artist detail views aggregate across the chosen libraries and de-duplicate shared items by priority. Built for large libraries — scoped SQL uses the hot
library_idcolumn with covering indexes and FTS-first matching. - Identity matching that powers cross-library de-duplication now normalises names per shipped locale (folds German ß, Norwegian æ, French œ, Romanian ș/ț, and Cyrillic ё/й); CJK titles are matched as-is.
- The Genres page and album browse genre filter list the full catalog on large libraries when All libraries is selected.
Theme contributors credited in Settings
By @Psychotoxical, PR #1248
- Settings → System → Contributors now lists community theme authors in a Themes sub-section alongside the App contributors, pulled from the theme store so it stays current as new themes are published.
- The theme card What's new now shows just the latest version's notes instead of the full version history.
- Theme author names refresh quietly from the store in the background instead of staying stale for up to 12 hours.
Fullscreen player — Minimal and Immersive styles
By @Psychotoxical, PR #1249
- Settings → Appearance → Fullscreen player style lets you choose Minimal (the current view) or Immersive — the earlier fullscreen player, with the artist photo/backdrop, a cover-derived accent colour, and rail or Apple-style scrolling lyrics.
- In Immersive, Show artist photo and Photo dimming are configurable; Apple-style lyrics show the artist image as a dimmed full-screen backdrop.
Italian translation
By @daquino94, PR #1250
- Full Italian (Italiano) UI translation — selectable from the language picker on the Settings and Login screens.
Fullscreen player — Prism style
By @Psychotoxical, PR #1251
- A third Fullscreen player style, Prism — a full-bleed artist backdrop with a floating glass lyrics panel on the right and a single glass control bar at the bottom (transport, a centred now-playing pill with an integrated progress line, and utilities). The cover-derived accent colour drives the progress fill and the active lyric line, and upcoming lyric lines fade out with a progressive blur.
Lyrics — word-by-word highlighting straight from your server
By @Psychotoxical, PR #1265
- The Server lyrics source now highlights lyrics word by word, so karaoke sync no longer depends on the third-party YouLyPlus backend. Requires Navidrome 0.63 or newer and lyrics that carry word timing (TTML or Enhanced LRC); anything else keeps highlighting line by line.
- Settings → Lyrics → Lyrics Sources spells out those requirements, and the block now follows the standard settings sub-card layout.
- Embedded Enhanced LRC no longer prints raw word timing codes (
<00:12.34>) in the lyric text — those codes drive word-by-word highlighting instead. - FLAC, Ogg Vorbis, Opus and Speex files that store synced lyrics in the
SYNCEDLYRICStag show embedded lyrics again, with that tag taking priority over the plainLYRICStag.
Start minimized to tray
- New Start Minimized to Tray toggle under Settings → System → Behavior. When enabled, the next cold start keeps the main window hidden and Psysonic runs from the system tray until you show it from the tray icon.
- Requires Show Tray Icon (turning this on enables the tray automatically; hiding the tray clears the setting). The choice applies on the next launch only — toggling it in Settings does not hide the window immediately.
- Opening the main window from the tray after a cold start renders the sidebar and main content immediately — including on Linux tiling WMs such as Hyprland — instead of leaving the sidebar or Mainstage invisible or blank until a restart.
Navidrome public share links — open and play without logging in
- Paste or search a Navidrome public share URL (
/share/{id}) to preview the shared track list in a modal, then play the full queue with no server account — direct stream and cover URLs are resolved anonymously from the share page. - Share playback uses a dedicated scope so an idle server play-queue pull cannot replace the share queue while you are also logged into Navidrome. Share sessions are not restored after an app restart — the server play queue applies as usual.
- While a share queue is active, Save Playlist is hidden in the queue toolbar (share tracks cannot be saved to the server); Load Playlist stays available. The queue Share button copies the original Navidrome
/share/{id}page URL.
Track lists — optional album cover thumbnails
- Browse and queue track rows can show the track's album cover (per-disc art when the album has distinct disc covers). Covers load through the standard cover cache pipeline — library resolve, viewport ensure, Rust resize to disk tiers — not a separate warm path.
- Settings → Appearance adds separate toggles for queue vs browse tracklists. Favorites, playlist, and album-detail track grids gain a flex-resize handle on the title column when covers are shown.
- Album detail pages skip per-row cover thumbs when the album art is already shown above the list — no duplicate image on every line.
Discord — server cover art source, without the credential leak
By @Psychotoxical, PR #1299
- Settings → Integrations → Discord → Cover art source gets a Server option, alongside None and Apple Music. ...
Psysonic v1.50.0-rc.1
Added
Square corners — sharp-edged cards and covers
By @Psychotoxical, PR #1215
- New Square Corners toggle under Settings → Appearance → Visual Options → Display overrides the active theme to render cards and cover art with square, non-rounded corners. Covers album, playlist, artist and song cards, detail-page cover art, the Now Playing / Radio and fullscreen views, the cover lightbox, the queue cover, and the mini player. Off by default; buttons, inputs and dialogs keep the theme's corners.
Discord community banner
- A dismissible banner inviting you to join the Psysonic community on Discord appears after 20 hours of accumulated app use. Join opens the invite; dismiss it for the session, or choose Never show again to hide it permanently.
Bulgarian translation
By @akirichev, PR #1228
- Full Bulgarian (Български) UI translation — selectable from the language picker on the Settings and Login screens.
Artists browse — album vs track credit mode
- Toggle Album artists vs Track artists on the Artists page — album mode lists indexed album artists; track mode includes performers from the local artist index (featured/guest credits). Star filter works in both modes; the choice persists across app restarts like Show artist images.
- Letter bucket filter (
A–Z,#,OTHER) runs in local SQL instead of scanning catalog chunks client-side, so late-alphabet picks load promptly on large libraries.
CLI — relative volume and quieter scripting output
psysonic --player volume +5/volume -10adjust the current level by that many percent;volume 80still sets an absolute level (use-qbefore--playerwhen the delta is negative so it is not parsed as a flag).- CLI invocations no longer print WebKit/NVIDIA workaround notes on stderr; on Linux, remote
--playerforwarding runs before WebKit startup so helper processes exit with less noise.
Theme Store — per-theme changelogs and pinned updates
By @Psychotoxical, PR #1240
- Each theme card now has an expandable What's new with per-version release notes, so you can see what a theme update changed — including non-visual fixes. Provided by theme authors; themes without notes just don't show the section.
- Installed themes with an available update now appear at the top of the store list instead of wherever the sort placed them, so you don't have to hunt for them.
Multi-library filter — browse and search across selected libraries
- The sidebar library picker now supports multi-select with priority ordering: browse, search, genre and album/artist detail views aggregate across the chosen libraries and de-duplicate shared items by priority. Built for large libraries — scoped SQL uses the hot
library_idcolumn with covering indexes and FTS-first matching. - Identity matching that powers cross-library de-duplication now normalises names per shipped locale (folds German ß, Norwegian æ, French œ, Romanian ș/ț, and Cyrillic ё/й); CJK titles are matched as-is.
Theme contributors credited in Settings
By @Psychotoxical, PR #1248
- Settings → System → Contributors now lists community theme authors in a Themes sub-section alongside the App contributors, pulled from the theme store so it stays current as new themes are published.
- The theme card What's new now shows just the latest version's notes instead of the full version history.
Fullscreen player — Minimal and Immersive styles
By @Psychotoxical, PR #1249
- Settings → Appearance → Fullscreen player style lets you choose Minimal (the current view) or Immersive — the earlier fullscreen player, with the artist photo/backdrop, a cover-derived accent colour, and rail or Apple-style scrolling lyrics.
- In Immersive, Show artist photo and Photo dimming are configurable; Apple-style lyrics show the artist image as a dimmed full-screen backdrop.
Italian translation
By @daquino94, PR #1250
- Full Italian (Italiano) UI translation — selectable from the language picker on the Settings and Login screens.
Fullscreen player — Prism style
By @Psychotoxical, PR #1251
- A third Fullscreen player style, Prism — a full-bleed artist backdrop with a floating glass lyrics panel on the right and a single glass control bar at the bottom (transport, a centred now-playing pill with an integrated progress line, and utilities). The cover-derived accent colour drives the progress fill and the active lyric line, and upcoming lyric lines fade out with a progressive blur.
Lyrics — word-by-word highlighting straight from your server
By @Psychotoxical, PR #1265
- The Server lyrics source now highlights lyrics word by word, so karaoke sync no longer depends on the third-party YouLyPlus backend. Requires Navidrome 0.63 or newer and lyrics that carry word timing (TTML or Enhanced LRC); anything else keeps highlighting line by line.
- Settings → Lyrics → Lyrics Sources spells out those requirements, and the block now follows the standard settings sub-card layout.
Start minimized to tray
- New Start Minimized to Tray toggle under Settings → System → Behavior. When enabled, the next cold start keeps the main window hidden and Psysonic runs from the system tray until you show it from the tray icon.
- Requires Show Tray Icon (turning this on enables the tray automatically; hiding the tray clears the setting). The choice applies on the next launch only — toggling it in Settings does not hide the window immediately.
Navidrome public share links — open and play without logging in
- Paste or search a Navidrome public share URL (
/share/{id}) to preview the shared track list in a modal, then play the full queue with no server account — direct stream and cover URLs are resolved anonymously from the share page. - Share playback uses a dedicated scope so an idle server play-queue pull cannot replace the share queue while you are also logged into Navidrome. Share sessions are not restored after an app restart — the server play queue applies as usual.
Track lists — optional album cover thumbnails
- Browse and queue track rows can show the track's album cover (per-disc art when the album has distinct disc covers). Covers load through the standard cover cache pipeline — library resolve, viewport ensure, Rust resize to disk tiers — not a separate warm path.
- Settings → Appearance adds separate toggles for queue vs browse tracklists. Favorites, playlist, and album-detail track grids gain a flex-resize handle on the title column when covers are shown.
Changed
Frontend restructure — feature-folder architecture and hardening
By @Psychotoxical, with additional architecture by @cucadmuh, PR #1225
- Reorganised the frontend into a feature-folder architecture with a CI-enforced layering guard, added unit + behavior-scenario + boot-smoke test coverage, and introduced a compile-time frontend/backend IPC contract via tauri-specta. Internal only — no change to how the app looks or behaves.
Typed-IPC contract — completed the tauri-specta cutover
By @Psychotoxical, with additional architecture by @cucadmuh, PR #1230
- Completed the frontend/backend typed-IPC contract: the frontend now calls the generated tauri-specta command surface, with CI guards keeping the bindings fresh and every command registered in the handler. Internal only — no change to how the app looks or behaves.
Equalizer — per-device profiles follow the active system default
By @cucadmuh, PR #1274, suggested by @JustBuddy
- With Remember EQ per device enabled and System Default selected, the equalizer now keys profiles to the active OS default output and switches when that default changes externally (Windows sound settings, Stream Deck, etc.), instead of using one shared profile for all system-default outputs.
- On Linux/PipeWire, the active default is resolved from WirePlumber (...
Psysonic v1.49.0
Added
Theme store — version numbers and an animated/static filter
By @Psychotoxical, PR #1104
- Theme versions now show in the store (next to the author) and under each installed community theme; when an update is available, the store shows the installed → available version.
- New store filter to show only animated themes or only static ones, next to the existing mode and sort controls.
Playlist folders
By @Psychotoxical, PR #1119, suggested by @SilverWolf24
- Organise your playlists into folders on the Playlists page and in the sidebar — create folders, drag playlists into them (or use the right-click "Move to folder" menu), rename, collapse and switch between the folder view and a single flat list. Folders are saved locally on this device only, since the Subsonic API has no folder support.
AutoDJ — content-aware crossfade
By @cucadmuh, PR #1122 and @Psychotoxical, PR #1124
- New AutoDJ crossfade mode. Instead of a fixed crossfade time, it blends what you actually hear: it trims the dead silence at the end of one track and the start of the next, and picks the overlap from the music itself — a track that fades out rides its own fade while the next one rises underneath, and two tracks that both start/end loud get a short musical blend instead of an abrupt cut. Works most reliably with the Hot playback cache enabled, since the next track's audio needs to be ready for the blend.
- AutoDJ is now its own mode rather than a sub-option of Crossfade — its own button in the queue toolbar and its own entry in the audio settings. Crossfade, AutoDJ and Gapless are mutually exclusive (only one active at a time) under a single Off / Gapless / Crossfade / AutoDJ picker, the playback settings are regrouped into clearer Normalization / Track transitions / Queue behaviour panels, and the queue toolbar's separate Save and Load playlist buttons are combined into one Playlist menu (existing toolbar layouts are preserved). Off by default; classic Crossfade is unchanged.
AutoDJ — smooth skip and interrupt blend
- New Smooth skip toggle under Settings → Audio → Track transitions (on by default when AutoDJ is active). Manual Next/Previous and picking a track from the library, an album, or the infinite queue crossfade from where you are listening instead of hard-cutting.
- Loud→loud queue advances use a consistent ~2s musical blend; manual skips cap at the same length so quiet intros are not drowned out.
- When the target track is not buffered yet, the player briefly ducks the outgoing track while preloading; the player bar keeps showing the current song until the handoff so titles and artwork do not flicker or pause spuriously.
- During an active blend, the play/pause button shows a pulsing Blend icon.
Play queue sync — cross-device handoff
By @cucadmuh, PR #1131, closes #1129
- Manual pull from the header connection indicator (LED + sync ring): click to fetch the active server's play queue when it differs from the local player; no-op when already in sync. Yellow LED when browse server ≠ playback server (e.g. after switching servers).
- Idle auto-pull when paused/stopped for 30+ seconds on a single-server queue (active = playback): polls every 10s and applies server changes.
- Push now sends only tracks owned by the playback server (fixes mixed-server queues). Switching browse servers flushes the old server's queue slice without auto-pull.
Japanese and Hungarian translations
- Full Japanese (日本語) UI translation — selectable from the language picker on the Settings and Login screens.
By @Psychotoxical, PR #1149, a gift to @falu for the first independent review of Psysonic
- Psysonic is now available in Hungarian (Magyar) — pick it from the language menu on the Settings and Login screens.
Artist artwork from fanart.tv
By @Psychotoxical, PR #1137 and PR #1193
- New opt-in External Artwork Scraper (Settings → Integrations, off by default): artist imagery from fanart.tv — a 16:9 background on the fullscreen player and a wide banner on the artist page — with Navidrome staying the canonical cover. Optional personal key; turning it off removes the fetched images again.
- The mainstage hero on the home screen now shows the album artist's backdrop too, matching the fullscreen player and artist page.
- Choose, per place (mainstage hero, artist page, fullscreen player), which images to use as the background and in what order — drag to reorder or switch a source off, under the same setting. The hero also preloads the upcoming backdrops so they appear without a long blank.
Remember the equalizer per audio output device
By @Psychotoxical, PR #1146, suggested by @JustBuddy
- New opt-in Remember EQ per device toggle (Settings → Audio → Audio Output Device, off by default): the equalizer profile — bands, pre-gain, enabled state and active preset — is saved per audio output device and restored automatically when you switch devices.
Custom HTTP headers for gated servers
By @cucadmuh, PR #1156, closes #1095
- Per-server custom HTTP headers in Settings → Servers for reverse-proxy gates (Cloudflare Access, Pangolin, and similar): add name/value pairs, choose whether they apply to the local URL, public URL, or both on dual-address profiles.
- Headers attach to every user-server HTTP path — library sync, playback, covers, offline download, Navidrome admin, capability probes, and share-link preview — without putting secrets in invite links or magic strings.
- Gate header values are redacted from application logs.
Orbit — shared crossfade, gapless and AutoDJ
By @Psychotoxical, PR #1158
- In an Orbit session the host's track-transition settings — crossfade, gapless or AutoDJ, including the crossfade length and smooth-skip — now apply to everyone, so guests blend between tracks the same way the host does instead of each person using their own. Your own settings are restored when you leave.
- While you are a guest in a session, the transition controls in Settings → Audio and the queue toolbar are shown as host-controlled.
Theme scheduler — follow the system theme
By @Psychotoxical, PR #1163, suggested by @mokazemi
- The theme scheduler can now switch your day/night theme pair based on your operating system's light/dark setting, in addition to the existing time-of-day schedule. Pick the trigger with a new Time of Day / System Theme switch; in system mode the two pickers read as Light and Dark theme. On Linux setups where the OS does not signal the change live, a hint notes it applies after restarting the app.
Hi-Res transition blend rate
- Settings → Audio → Native Hi-Res gains a blend-rate picker (44.1 / 88.2 / 96 kHz, default 44.1 kHz) for transitions when adjacent tracks have different sample rates, with a note that resampling uses extra CPU and memory.
- Crossfade / AutoDJ: both sides resample to the chosen rate; the output stream reopens when needed and the outgoing track rebuilds from cache so mixed 88.2 ↔ 44.1 kHz transitions no longer tear mid-fade.
- Gapless: the next track chains at the blend rate and the current track realigns when the stream Hz differs, instead of falling back to a hard cut.
AutoDJ — configurable overlap cap
- Settings → Audio → Track transitions → AutoDJ: choose Auto (content-driven overlap, up to 12 s) or Limit (slider 2–30 s, default 15 s when enabled) to cap how long AutoDJ may overlap tracks.
- The cap applies to end-of-track planning, JS auto-advance, smooth skip, and Orbit transition sync; the audio engine accepts dynamic overlap overrides up to 30 s.
Polish translation
- Full Polish (Polski) UI translation — selectable from the language picker on the Settings and Login screens.
Multiple genres in album details
By @Psychotoxical, PR #1186, suggested by @Thraka
- Album details now ...
Psysonic v1.49.0-rc.2
Added
Theme store — version numbers and an animated/static filter
By @Psychotoxical, PR #1104
- Theme versions now show in the store (next to the author) and under each installed community theme; when an update is available, the store shows the installed → available version.
- New store filter to show only animated themes or only static ones, next to the existing mode and sort controls.
Playlist folders
By @Psychotoxical, PR #1119, suggested by @SilverWolf24
- Organise your playlists into folders on the Playlists page and in the sidebar — create folders, drag playlists into them (or use the right-click "Move to folder" menu), rename, collapse and switch between the folder view and a single flat list. Folders are saved locally on this device only, since the Subsonic API has no folder support.
AutoDJ — content-aware crossfade
By @cucadmuh, PR #1122 and @Psychotoxical, PR #1124
- New AutoDJ crossfade mode. Instead of a fixed crossfade time, it blends what you actually hear: it trims the dead silence at the end of one track and the start of the next, and picks the overlap from the music itself — a track that fades out rides its own fade while the next one rises underneath, and two tracks that both start/end loud get a short musical blend instead of an abrupt cut. Works most reliably with the Hot playback cache enabled, since the next track's audio needs to be ready for the blend.
- AutoDJ is now its own mode rather than a sub-option of Crossfade — its own button in the queue toolbar and its own entry in the audio settings. Crossfade, AutoDJ and Gapless are mutually exclusive (only one active at a time) under a single Off / Gapless / Crossfade / AutoDJ picker, the playback settings are regrouped into clearer Normalization / Track transitions / Queue behaviour panels, and the queue toolbar's separate Save and Load playlist buttons are combined into one Playlist menu (existing toolbar layouts are preserved). Off by default; classic Crossfade is unchanged.
AutoDJ — smooth skip and interrupt blend
- New Smooth skip toggle under Settings → Audio → Track transitions (on by default when AutoDJ is active). Manual Next/Previous and picking a track from the library, an album, or the infinite queue crossfade from where you are listening instead of hard-cutting.
- Loud→loud queue advances use a consistent ~2s musical blend; manual skips cap at the same length so quiet intros are not drowned out.
- When the target track is not buffered yet, the player briefly ducks the outgoing track while preloading; the player bar keeps showing the current song until the handoff so titles and artwork do not flicker or pause spuriously.
- During an active blend, the play/pause button shows a pulsing Blend icon.
Play queue sync — cross-device handoff
By @cucadmuh, PR #1131, closes #1129
- Manual pull from the header connection indicator (LED + sync ring): click to fetch the active server's play queue when it differs from the local player; no-op when already in sync. Yellow LED when browse server ≠ playback server (e.g. after switching servers).
- Idle auto-pull when paused/stopped for 30+ seconds on a single-server queue (active = playback): polls every 10s and applies server changes.
- Push now sends only tracks owned by the playback server (fixes mixed-server queues). Switching browse servers flushes the old server's queue slice without auto-pull.
Japanese and Hungarian translations
- Full Japanese (日本語) UI translation — selectable from the language picker on the Settings and Login screens.
By @Psychotoxical, PR #1149, a gift to @falu for the first independent review of Psysonic
- Psysonic is now available in Hungarian (Magyar) — pick it from the language menu on the Settings and Login screens.
Polish translation
- Full Polish (Polski) UI translation — selectable from the language picker on the Settings and Login screens.
Artist artwork from fanart.tv
By @Psychotoxical, PR #1137 and PR #1193
- New opt-in External Artwork Scraper (Settings → Integrations, off by default): artist imagery from fanart.tv — a 16:9 background on the fullscreen player and a wide banner on the artist page — with Navidrome staying the canonical cover. Optional personal key; turning it off removes the fetched images again.
- The mainstage hero on the home screen now shows the album artist's backdrop too, matching the fullscreen player and artist page.
- Choose, per place (mainstage hero, artist page, fullscreen player), which images to use as the background and in what order — drag to reorder or switch a source off, under the same setting. The hero also preloads the upcoming backdrops so they appear without a long blank.
Remember the equalizer per audio output device
By @Psychotoxical, PR #1146, suggested by @JustBuddy
- New opt-in Remember EQ per device toggle (Settings → Audio → Audio Output Device, off by default): the equalizer profile — bands, pre-gain, enabled state and active preset — is saved per audio output device and restored automatically when you switch devices.
Custom HTTP headers for gated servers
By @cucadmuh, PR #1156, closes #1095
- Per-server custom HTTP headers in Settings → Servers for reverse-proxy gates (Cloudflare Access, Pangolin, and similar): add name/value pairs, choose whether they apply to the local URL, public URL, or both on dual-address profiles.
- Headers attach to every user-server HTTP path — library sync, playback, covers, offline download, Navidrome admin, capability probes, and share-link preview — without putting secrets in invite links or magic strings.
- Gate header values are redacted from application logs.
Orbit — shared crossfade, gapless and AutoDJ
By @Psychotoxical, PR #1158
- In an Orbit session the host's track-transition settings — crossfade, gapless or AutoDJ, including the crossfade length and smooth-skip — now apply to everyone, so guests blend between tracks the same way the host does instead of each person using their own. Your own settings are restored when you leave.
- While you are a guest in a session, the transition controls in Settings → Audio and the queue toolbar are shown as host-controlled.
Theme scheduler — follow the system theme
By @Psychotoxical, PR #1163, suggested by @mokazemi
- The theme scheduler can now switch your day/night theme pair based on your operating system's light/dark setting, in addition to the existing time-of-day schedule. Pick the trigger with a new Time of Day / System Theme switch; in system mode the two pickers read as Light and Dark theme. On Linux setups where the OS does not signal the change live, a hint notes it applies after restarting the app.
Hi-Res transition blend rate
- Settings → Audio → Native Hi-Res gains a blend-rate picker (44.1 / 88.2 / 96 kHz, default 44.1 kHz) for transitions when adjacent tracks have different sample rates, with a note that resampling uses extra CPU and memory.
- Crossfade / AutoDJ: both sides resample to the chosen rate; the output stream reopens when needed and the outgoing track rebuilds from cache so mixed 88.2 ↔ 44.1 kHz transitions no longer tear mid-fade.
- Gapless: the next track chains at the blend rate and the current track realigns when the stream Hz differs, instead of falling back to a hard cut.
AutoDJ — configurable overlap cap
- Settings → Audio → Track transitions → AutoDJ: choose Auto (content-driven overlap, up to 12 s) or Limit (slider 2–30 s, default 15 s when enabled) to cap how long AutoDJ may overlap tracks.
- The cap applies to end-of-track planning, JS auto-advance, smooth skip, and Orbit transition sync; the audio engine accepts dynamic overlap overrides up to 30 s.
Multiple genres in album details
By @Psychotoxical, PR #1186, suggested by @Thraka
- Album details now ...
Psysonic v1.49.0-rc.1
Added
Theme store — version numbers and an animated/static filter
By @Psychotoxical, PR #1104
- Theme versions now show in the store (next to the author) and under each installed community theme; when an update is available, the store shows the installed → available version.
- New store filter to show only animated themes or only static ones, next to the existing mode and sort controls.
Playlist folders
By @Psychotoxical, PR #1119, suggested by @SilverWolf24
- Organise your playlists into folders on the Playlists page and in the sidebar — create folders, drag playlists into them (or use the right-click "Move to folder" menu), rename, collapse and switch between the folder view and a single flat list. Folders are saved locally on this device only, since the Subsonic API has no folder support.
AutoDJ — content-aware crossfade
By @cucadmuh, PR #1122 and @Psychotoxical, PR #1124
- New AutoDJ crossfade mode. Instead of a fixed crossfade time, it blends what you actually hear: it trims the dead silence at the end of one track and the start of the next, and picks the overlap from the music itself — a track that fades out rides its own fade while the next one rises underneath, and two tracks that both start/end loud get a short musical blend instead of an abrupt cut. Works most reliably with the Hot playback cache enabled, since the next track's audio needs to be ready for the blend.
- AutoDJ is now its own mode rather than a sub-option of Crossfade — its own button in the queue toolbar and its own entry in the audio settings. Crossfade, AutoDJ and Gapless are mutually exclusive (only one active at a time) under a single Off / Gapless / Crossfade / AutoDJ picker, the playback settings are regrouped into clearer Normalization / Track transitions / Queue behaviour panels, and the queue toolbar's separate Save and Load playlist buttons are combined into one Playlist menu (existing toolbar layouts are preserved). Off by default; classic Crossfade is unchanged.
AutoDJ — smooth skip and interrupt blend
- New Smooth skip toggle under Settings → Audio → Track transitions (on by default when AutoDJ is active). Manual Next/Previous and picking a track from the library, an album, or the infinite queue crossfade from where you are listening instead of hard-cutting.
- Loud→loud queue advances use a consistent ~2s musical blend; manual skips cap at the same length so quiet intros are not drowned out.
- When the target track is not buffered yet, the player briefly ducks the outgoing track while preloading; the player bar keeps showing the current song until the handoff so titles and artwork do not flicker or pause spuriously.
- During an active blend, the play/pause button shows a pulsing Blend icon.
Play queue sync — cross-device handoff
By @cucadmuh, PR #1131, closes #1129
- Manual pull from the header connection indicator (LED + sync ring): click to fetch the active server's play queue when it differs from the local player; no-op when already in sync. Yellow LED when browse server ≠ playback server (e.g. after switching servers).
- Idle auto-pull when paused/stopped for 30+ seconds on a single-server queue (active = playback): polls every 10s and applies server changes.
- Push now sends only tracks owned by the playback server (fixes mixed-server queues). Switching browse servers flushes the old server's queue slice without auto-pull.
Japanese and Hungarian translations
- Full Japanese (日本語) UI translation — selectable from the language picker on the Settings and Login screens.
By @Psychotoxical, PR #1149, a gift to @falu for the first independent review of Psysonic
- Psysonic is now available in Hungarian (Magyar) — pick it from the language menu on the Settings and Login screens.
Artist artwork from fanart.tv
By @Psychotoxical, PR #1137
- New opt-in External Artwork Scraper (Settings → Integrations, off by default): artist imagery from fanart.tv — a 16:9 background on the fullscreen player and a wide banner on the artist page — with Navidrome staying the canonical cover. Optional personal key; turning it off removes the fetched images again.
Remember the equalizer per audio output device
By @Psychotoxical, PR #1146, suggested by @JustBuddy
- New opt-in Remember EQ per device toggle (Settings → Audio → Audio Output Device, off by default): the equalizer profile — bands, pre-gain, enabled state and active preset — is saved per audio output device and restored automatically when you switch devices.
Custom HTTP headers for gated servers
By @cucadmuh, PR #1156, closes #1095
- Per-server custom HTTP headers in Settings → Servers for reverse-proxy gates (Cloudflare Access, Pangolin, and similar): add name/value pairs, choose whether they apply to the local URL, public URL, or both on dual-address profiles.
- Headers attach to every user-server HTTP path — library sync, playback, covers, offline download, Navidrome admin, capability probes, and share-link preview — without putting secrets in invite links or magic strings.
- Gate header values are redacted from application logs.
Orbit — shared crossfade, gapless and AutoDJ
By @Psychotoxical, PR #1158
- In an Orbit session the host's track-transition settings — crossfade, gapless or AutoDJ, including the crossfade length and smooth-skip — now apply to everyone, so guests blend between tracks the same way the host does instead of each person using their own. Your own settings are restored when you leave.
- While you are a guest in a session, the transition controls in Settings → Audio and the queue toolbar are shown as host-controlled.
Theme scheduler — follow the system theme
By @Psychotoxical, PR #1163, suggested by @mokazemi
- The theme scheduler can now switch your day/night theme pair based on your operating system's light/dark setting, in addition to the existing time-of-day schedule. Pick the trigger with a new Time of Day / System Theme switch; in system mode the two pickers read as Light and Dark theme. On Linux setups where the OS does not signal the change live, a hint notes it applies after restarting the app.
Hi-Res transition blend rate
- Settings → Audio → Native Hi-Res gains a blend-rate picker (44.1 / 88.2 / 96 kHz, default 44.1 kHz) for transitions when adjacent tracks have different sample rates, with a note that resampling uses extra CPU and memory.
- Crossfade / AutoDJ: both sides resample to the chosen rate; the output stream reopens when needed and the outgoing track rebuilds from cache so mixed 88.2 ↔ 44.1 kHz transitions no longer tear mid-fade.
- Gapless: the next track chains at the blend rate and the current track realigns when the stream Hz differs, instead of falling back to a hard cut.
AutoDJ — configurable overlap cap
- Settings → Audio → Track transitions → AutoDJ: choose Auto (content-driven overlap, up to 12 s) or Limit (slider 2–30 s, default 15 s when enabled) to cap how long AutoDJ may overlap tracks.
- The cap applies to end-of-track planning, JS auto-advance, smooth skip, and Orbit transition sync; the audio engine accepts dynamic overlap overrides up to 30 s.
Changed
Settings — consistent grouped layout
By @Psychotoxical, PR #1126 and PR #1130
- The settings tabs now group related controls into clearly bordered, labelled panels for a more consistent, easier-to-scan layout — across Appearance, System, Audio, Storage, Library, Integrations, Music Network, Lyrics, Personalisation, Input and Themes. Standalone toggles are left as they were, and a few duplicated section titles are gone.
- The Lucky Mix menu toggle moved from the Library tab to the sidebar customizer, alongside the other navigation toggles.
- The Native Hi-Res Playback description now explains what turning it on actually does — play each track at its original sample rate, matching the audio device to the file, instead of resampling everything to 44.1 kHz. The old wording descr...