mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 23:05:46 +00:00
fde7ab432f
* feat(playback): add transition-mode helper Centralise the crossfade/AutoDJ/gapless mutual exclusivity in one place instead of the scattered setter combinations across the toolbar, mini player and settings. AutoDJ stays encoded as crossfade + trim-silence, so the persisted flags and the audio engine are unchanged. * feat(queue): split AutoDJ into its own toolbar button + playlist submenu - AutoDJ becomes a standalone toolbar button (Blend icon) next to crossfade, driven by the shared transition-mode helper. The crossfade right-click popover drops the mode switch and keeps only the seconds slider. - Save + load playlist collapse into one Playlist button opening a small submenu, freeing up toolbar space. - queueToolbarStore gains a position-preserving rehydrate migration (legacy save/load -> playlist, autodj inserted after crossfade) with unit tests. - Toolbar customizer and all 9 queue locales updated to match. * feat(mini-player): standalone AutoDJ button, shared transition helper Mirror the queue toolbar: AutoDJ gets its own Blend button, the crossfade popover keeps only the seconds slider. The mini player now drives all three transitions through a single additive `mini:set-transition-mode` event handled by the shared helper, replacing the per-flag mini events. Drop the now-dead crossfade-mode CSS. * feat(settings): segmented track-transition picker, regroup playback Replace the crossfade toggle + inner crossfade/AutoDJ switch with a single Off | Gapless | Crossfade | AutoDJ segmented control (mirroring the Normalization picker above), driven by the shared transition helper — the mutual exclusivity now reads at a glance. Crossfade keeps its seconds slider; AutoDJ shows its content-driven explainer. The block is regrouped under "Track transitions" and "Queue behaviour" headings. Drops the now unused crossfade/gapless description and not-available i18n keys across all 9 locales and adds the new transition strings. * fix(queue): open the playlist submenu inward The playlist submenu inherited the crossfade popover's right:0 anchor and, sitting on the left of the toolbar, opened out under the main container. Anchor it left:0 so it stays inside the queue panel. Update the toolbar test for the new playlist submenu (save/load moved off the toolbar). * feat(settings): box playback sub-sections into panels Wrap Normalization, Track transitions and Queue behaviour each in their own bordered panel with an accent uppercase header (new reusable .settings-group classes), so the sections read as distinct blocks instead of one wall of text. Drops the thin divider that separated them. * docs: changelog, credits and what's new for AutoDJ standalone Fold the standalone-AutoDJ changes into the existing AutoDJ entry in the changelog and the in-app What's New, and add the credit (#1124).
9.7 KiB
9.7 KiB
What's New
User-facing release highlights for the in-app What's New screen. Maintainers refresh the
current line before promoting to next / release. Technical details and PR credits stay in
CHANGELOG.md.
Within each section, order by user impact (most noticeable first) — not PR merge order.
CHANGELOG.md keeps strict PR order inside Added / Changed / Fixed.
[1.49.0]
Highlights
AutoDJ — minimum pauses, maximum music
- New AutoDJ mode — a smart crossfade that blends tracks intelligently. Each transition is shaped to fit the music: awkward gaps fade away, handovers feel natural, and you spend less time in silence between songs. It's now its own choice in Settings → Audio and its own button in the queue toolbar, sitting alongside Crossfade and Gapless — pick one at a time. Off by default; classic Crossfade is unchanged.
Playlist folders — your playlists, organised
- Folders on the Playlists page and in the sidebar keep long lists tidy — group by mood, occasion, or anything you like. Drag playlists in, rename and collapse folders, or choose Move to folder from the right-click menu. Switch back to a flat list whenever you prefer.
Theme store — spot updates, pick your style
- Version numbers on store themes and ones you have installed make it obvious when an update is ready.
- Filter for animated or static themes only — less scrolling when you already know the look you want.
Fixed
Playback and audio
- Opus/Ogg tracks no longer fight the seekbar while they are still loading — scrub to where you want to be and keep listening.
Player and playlists
- Add to playlist from the player bar adds the song you are hearing, not the whole album.
Browse and library
- Albums sorted by artist now list each artist's work A–Z by title — no more random order within a name.
- Artist → Year keeps artists grouped but walks through their albums chronologically, oldest first.
Windows
- Windows: Previous, Play/Pause, and Next are back when you hover the taskbar icon — and Play/Pause shows whether music is playing or paused.
[1.48.1]
Fixed
Playback and audio
- Changing tracks — skipping, or the automatic advance at the end of a song — no longer freezes the interface for a few seconds: the progress bar and lyrics keep updating, and on Windows a change of output device now takes effect right away.
- Seeking an Opus/Ogg track — and then pressing Stop — no longer crashes the app.
- macOS: pausing or stopping playback and then unplugging headphones (or switching the output device) no longer makes playback restart — it stays paused or stopped.
Offline, Now Playing, and Navidrome
- On large Navidrome libraries, background library sync no longer locks up database writes for minutes at a time, so play history, ratings, and other saves go through without long delays.
Themes and integrations
- Discord Rich Presence shows the album cover again when a server profile has both a local and a public address.
Other
- Windows: the system media controls (Quick Settings media tile, lock screen, and third-party flyouts) now show the album cover and display Psysonic with its icon instead of "Unknown application".
- macOS: closing the window with the red close button now respects Minimize to Tray — with it on, the window hides to the tray instead of quitting.
[1.48.0]
Highlights
Offline listening
- When the server is unreachable, browse and detail pages show what you already have locally instead of empty errors — albums, artists, playlists, and cross-server favorites.
- Starred tracks, pinned albums, and playlists live under one media folder; browse them in Offline Library and see disk usage at a glance.
- Favorites auto-sync keeps loved songs on disk; pinned albums and playlists refresh when the library index updates.
Music Network — scrobble beyond Last.fm
- Settings → Integrations now hosts a Music Network: connect Last.fm, Libre.fm, ListenBrainz, Maloja, Rocksky, Koito, or your own GNU FM instance — and scrobble to several at once.
- Pick a primary service for loved tracks, similar artists, and stats; other connections still receive scrobbles. Your existing Last.fm setup migrates automatically.
- A master switch turns the whole network on or off.
Theme Store
- Browse and install community themes from Settings → Themes — search, dark/light filter, full-size previews, and sort by popularity or date.
- Six palettes ship with the app; everything else installs on demand and works offline after the first download.
- Now Playing follows every theme cleanly, including light palettes.
- Import a theme from a local
.zipwhen you have a package from a friend or your own design. - The sidebar nudges you when an installed theme has an update; one-click update from the theme card.
Fullscreen player
- Rebuilt for much lower CPU and memory use: a calm, sharp fullscreen view with album art, waveform seekbar, up-next queue, synced lyrics, ratings, and a clock that follows your Clock format setting.
- The song title no longer shows a leading track number, and descenders (g, j, p, q, y) are no longer clipped.
Live — richer now playing on Navidrome 0.62+
- On servers with OpenSubsonic playbackReport (Navidrome ≥ 0.62), Live shows who is playing or paused, how far into the track they are, and playback speed when another client sends it — with smooth position updates between refreshes.
- In Who is listening?, each listener shows a small status dot (playing, paused, or idle) instead of a vague “minutes ago” line.
Queue — Timeline mode
- A third queue layout keeps the current track in the middle with history above and up next below — great for long listening sessions. Cycle the header control or pick it in Settings → Personalisation → Queue display.
Settings → Servers
- Each card shows the server software and version (e.g. Navidrome 0.62.0) under the name, with a cleaner two-line layout and compact actions.
- Navidrome 0.62+ shows a green AudioMuse-AI badge when the plugin is detected — no manual toggle on current Navidrome.
Sidebar — pin Now Playing to the top
- New Settings → Sidebar toggle moves Now Playing to the top of the sidebar instead of the bottom (off by default).
Startup
- A themed loading splash appears while the app starts — colours follow your active theme, including community palettes.
Improved
- Audio decoding runs on Symphonia 0.6; streams start sooner and recover from stalls without restarting the player.
- The Preload Next Track toggle under Settings → Storage → Buffering is gone — playback no longer waits on that extra RAM prefetch. Gapless, crossfade, and Hot Cache behave as before.
- New Semitones playback-speed strategy (±12 st, 0.1 step) with two-decimal speed readout; optional fine steps in Settings → Audio → Advanced.
Fixed
Playback and audio
- Windows: the app no longer keeps the audio device open while idle, so the system can sleep when music is not playing.
- macOS: steady playback stutter from background device polling is gone on the default output path.
- After a long pause, the seekbar shows the saved position immediately and the next Play resumes without an audible blip at track start.
- Stop keeps the real waveform on the seekbar instead of falling back to flat bars.
Offline, Now Playing, and Navidrome
- Now Playing cards (from this album, discography, most played) stay populated during cached and offline playback instead of blanking out on track change.
- Navidrome Show in Now Playing and play-count scrobbles work when audio plays from hot cache, offline pins, or auto-synced favorites.
- Mixed-server queues still report to the correct Navidrome server.
Themes and integrations
- Self-hosted Music Network targets (Koito, Maloja, custom GNU FM with a pasted token) scrobble again — reconnect once if you connected before this fix.
- Favoriting from the player bar, fullscreen player, or shortcuts updates the star in track lists and playlists immediately.
- Discord Rich Presence shows album art again when covers come from the server.
- Focus rings and dropdown borders follow the active theme consistently.
Browse and library
- Tracks tagged with several genres in one field (e.g.
Metal/Ambient/Experimental) match each genre again in browse, filters, and search. - All Albums → Only compilations returns results for common tagging patterns.
- Album grids show the album artist on compilations instead of a random track artist.
- Song rails (Random Picks, Discover Songs, etc.) link each name in multi-artist credits separately.
- Artist → Top Tracks play works even when the artist page has no albums loaded yet.
- Home → Most Played no longer jumps the page when you load more albums.
- Mainstage hero backdrop stays in sync when you skip albums quickly.
Other
- Linux: the
curl | bashauto-installer works again. - Linux: internet radio no longer appears twice in the desktop now-playing overlay.
- On Navidrome 0.62+, add/edit/delete radio stations is shown only to admin accounts; everyone can still play and favourite stations.
- Linux custom title bar: pick window button styles (dots, flat, pill, and more) and optionally hide minimize in Settings → Appearance.
- The active server card under Settings → Servers draws a complete border on all sides.
Under the hood
- Navidrome 0.62+ auto-detects AudioMuse-AI and routes Instant Mix / Lucky Mix through the smarter API when the plugin is present — older Navidrome keeps the manual toggle you already know.