Psysonic v1.47.0 #995
Psychotoxical
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Added
Servers — edit existing profiles
By @Psychotoxical, PR #780
Local library index + search (preview)
By @Psychotoxical + @cucadmuh, PR #846
Player stats — local listening history
By @cucadmuh, PR #849
/player-stats): year summary (listening time, clustered sessions, track plays, unique tracks, listening days, full/partial counts), GitHub-style heatmap by track plays per day, recent-days accordion, and day drill-down with per-track completion.play_sessioninlibrary.sqlitewhen the playback server's local index is enabled and ready (not preview/radio;listenedSec > 10).Playback speed — global tempo and pitch strategies
By @cucadmuh, PR #852
pitch_shift) for Speed / Pitch shift; varispeed via sample-rate scaling; seek-restart on strategy or enable changes.Track enrichment — oximedia BPM/mood, mood search, queue display
By @cucadmuh, PR #863
analysis:enrichment-updatedrefreshes the UI without waiting for poll.Analytics strategy + migration safety for index-key rebuild
By @cucadmuh, PR #864
indexKeyidentifiers across Rust + frontend paths used by playback, analysis, and local index state.indexKeyscope.Backup & Restore — library databases + full archive flow
By @cucadmuh, PR #864
.psybkp/.psylib/.psyfull) from one entry point instead of per-mode import actions..bakfor recovery on failed validation.Cover art — tier ladder, disk cache, and grid prefetch
By @cucadmuh, PR #869
Lossless — local index browse, filters, and drill-down
By @cucadmuh, PR #871
library_list_lossless_albumsqueries indexed tracks by lossless suffix allowlist;/lossless-albumsand Home rail use SQLite when the library index is ready, with Navidrome bit_depth walk as fallback.lossless is trueon tracks, albums, and artists (local + network); artist/album links open detail with?lossless=1and a lossless-mode banner.Albums — combined browse filters and session restore
By @cucadmuh, PR #876
Artist detail — album year sort
By @cucadmuh, PR #877
Servers — second optional address per profile (LAN + public)
By @Psychotoxical, PR #880
http↔httpsskips the migration entirely.Album play — hold to shuffle
By @ImAsra, PR #888
Performance Probe — monitor UI, overlay pins, and live metrics
By @cucadmuh, PR #890
/proc); macOS process CPU + RSS viasysinfo.Performance Probe — thread-group CPU toggle
By @cucadmuh, PR #891
/procthread-group CPU (off by default); fixes camelCase IPC so thread rows populate instead of staying on “Collecting…”.Queue — choose between Queue and Playlist view
By @Psychotoxical, PR #922
Genre detail — play or shuffle a whole genre
By @Psychotoxical, PR #926
Library browse — restore scroll, filters, and search when returning from detail
By @cucadmuh, PR #936
Genres — local index browse with Subsonic fallback
By @cucadmuh, PR #937
Live Search — scoped browse on library pages
By @cucadmuh, PR #938
Performance Probe — live runtime logs tab
By @cucadmuh, PR #946
tail_runtime_logscommand tails it incrementally.-wordexcludes, applied left to right as layers (sequence matters).Changed
Settings + Queue polish
By @kveld9 + @Psychotoxical, adopted from PR #558, rewritten in PR #778
Clear→Clear queueacross all 9 locales.Linux — session GDK, WebKitGTK mitigations, and Wayland text
By @cucadmuh, PR #731
GDK_BACKEND=x11; startup applieswebkit2gtk-nvidia-quirkonly (skip withPSYSONIC_WEBKIT_GPU_ACCEL).nix run .#psysonic-x11-legacykeeps the old explicit X11 launcher..deb/.rpm/ Nix packages it still pinsGDK_BACKEND=x11(set by the bundle's AppRun hook), so it doubles as the legacy channel. Use.deb,.rpm, AUR, or the Nix default for a native-Wayland launch.PSYSONIC_SKIP_WAYLAND_FONT_TUNING.Library browse — in-page overlay scroll
By @cucadmuh, PR #731
Interface Scale — covers the whole window
By @Psychotoxical, PR #781
Radio — card control polish
By @Psychotoxical, reported by zunoz on Discord, PR #786
Library browse — local index race and catalog paths
By @cucadmuh, PR #847
[psysonic][library] browse-race …lines for race winner, timings, hit counts, and fallback reason.Lyrics — sources can be turned off entirely
By @Psychotoxical, suggested by sddania, PR #855
Queue — smoother scrolling for very long queues
By @Psychotoxical, PR #857
Queue — section dividers kept when restoring from the local index
By @Psychotoxical, PR #858
Queue — on-demand track loading for very large queues
By @Psychotoxical, PR #859
Queue — panel now reads through the shared track cache
By @Psychotoxical, PR #860
Backup UX — blocking progress gate for long operations
By @cucadmuh, PR #864
Development — parallel
tauri devalongside releaseBy @cucadmuh, PR #866
tauri-plugin-single-instanceso./dev.shcan run next to an installed release while sharing the same app data directory.Psysonic (Dev), red sidebar brand, monochrome custom titlebar buttons, mobileDEVbadge, horizontally flipped tray icon.Discord Rich Presence — track title in the member list
By @Psychotoxical, PR #885
{title}. Same placeholders as the other templates:{title},{artist},{album}. Leaving it empty restores the previous "Psysonic" display.Library browse — chunked local catalogs and unified in-page scroll
By @cucadmuh, PR #890
CI — hot-path coverage gates block merges
By @cucadmuh, PR #921
coveragejobs no longer carrycontinue-on-error; listed hot-path files must stay at ≥70% line coverage or the PR fails.Cover backfill — live-tunable parallelism and pipeline
By @cucadmuh, PR #943
library_cover_backfill_set_parallel) that resizes the HTTP/encode pools live; "Run full pass now" forces a pass and clears fetch-failed backoff.Performance Probe — cover pipeline throughput (cpm)
By @cucadmuh, PR #945
doneprogress. Shown in the Monitor tab "Cover backfill" card (pinnable to the overlay) and in the Cover pipeline overlay block.Performance Probe — cover pipeline on-demand (ui) throughput
By @cucadmuh, PR #947
lib/uirows in the Cover pipeline overlay block.Performance Probe — responsive throughput windows (tpm / cpm)
By @cucadmuh, PR #948
Track cards — distinct look + jump to album
By @Psychotoxical, PR #953
Tooltips — consistent hints on every button
By @Psychotoxical, PR #972
Mainstage — renamed to match the sidebar
By @Psychotoxical, reported by zunoz on Discord, PR #975
Fixed
In-page browse — virtual scroll and cover-art priority
By @cucadmuh, PR #783
scrollMarginnow targets the in-page overlay viewport, not the locked main route scrollport.CachedImagepriority scoring follows the real scrolling pane so visible thumbnails win network fetch slots; Artists infinite scroll loads one page per batch instead of re-entrantly queueing many pages during a fast fling.Lucky Mix after server switch
By @cucadmuh, PR #785
Radio — paused streams stay paused
By @Psychotoxical, reported by drelabre on GitHub, PR #786
Mainstage — album rail hover controls
By @cucadmuh, PR #787
pointer-eventsso the dim layer does not steal hover from the card.Album view — bulk add to playlist selection
By @Psychotoxical, PR #844
Playlists — column sorting keeps the viewport in place
By @Psychotoxical, PR #848
Settings — local library index exclude/include feedback
By @cucadmuh, PR #850
Statistics — player stats tab without local index
By @cucadmuh, PR #851
Playlists & Favorites — column picker on short lists
By @Psychotoxical, PR #853
Browse all tracks — sticky header no longer overlapped
By @Psychotoxical, PR #854
Local library index — full resync removes server-deleted tracks
By @cucadmuh, PR #861
resync_gen), so Ready (N tracks) no longer stays inflated when tracks were removed on Navidrome/Subsonic. Delta tombstone reconcile is unchanged.Server index-key migration — unknown/legacy data handling
By @cucadmuh, PR #864
Now Playing — stray zero metadata badges
By @cucadmuh, PR #865
0when numeric metadata fields (bit depth, bitrate, sample rate, year, rating) are missing and arrive as zero from the server.Analysis — failed tracks no longer block completion forever
By @cucadmuh, PR #867
Live Search — multi-server local index hits
By @cucadmuh, PR #868
Queue — mixed-server routing and quota-safe persist
By @Psychotoxical + @cucadmuh, PR #872
Analytics — aggressive scan no longer eats memory on big libraries
By @Psychotoxical, PR #873
Home — Discover Songs cover art with local index
By @Psychotoxical + @cucadmuh, PR #874
coverArtbut with a validalbumId— cover resolution matches the Rust backfill rule (COALESCE(cover_art_id, album_id)).Cover art — Windows thumbnails, PNG decode, and Subsonic cover ids
By @cucadmuh, PR #878
asset://URLs only, and broader Tauri asset scope.rememberGridDiskSrc(notify loop); seeds cache without waking subscribers.coverArtwhen it equals the track id — prefersalbumIdand warmed album-grid art on playback and artist pages..fetch-failed.Analytics — advanced library backfill without webview jank
By @cucadmuh, PR #881
Analytics — advanced backfill scan no longer replays the first chunk
By @cucadmuh, PR #882
Analytics — Opus waveform and loudness analysis
By @cucadmuh, PR #883
symphonia-adapter-libopusregistry as playback — previously Symphonia could demux Ogg Opus but failed at decoder creation, leaving.opuslibraries without analysis data.Settings — Linux text-input freeze workaround
By @Psychotoxical, PR #884
Artist page — top track thumbnails
By @cucadmuh, PR #886
id+coverArtpath and disk warm batch as the albums grid below — fixes slow or missing 32px thumbs that used a separate sparse resolver.Covers — load on Windows when the server URL has a
:portBy @Psychotoxical, PR #889
:port(typical Navidrome LAN setup on:4533). The colon used to land in a Windows filesystem segment, so the OS rejected the whole cache path withERROR_INVALID_NAMEand every cover load failed silently.Library browse & covers — scroll stability and cover loading
By @cucadmuh, PR #890
Queue — new tracks no longer render as blank placeholders
By @Psychotoxical, PR #892
…/0:00instead of the real title and duration, until something else triggered a queue-replacing playback.Radio — track info in OS media controls
By @Psychotoxical, reported by agriffit79 on GitHub, PR #924
Advanced Search — centered button label
By @Psychotoxical, PR #925
CI — npmDepsHash on app-v* tags
By @cucadmuh, PR #927
nix/upstream-sources.jsonandflake.lockon the channel branch before cuttingapp-v*tags, so Nix builds from release tags no longer fail with stalenpmDepsHash(e.g. after promote finalizespackage-lock.jsonversion).Queue — Infinite Queue and Smart Radio top-ups no longer show
…/0:00By @Psychotoxical, PR #930
…/0:00instead of their real title and duration when the queue was filled without a queue-replacing playback (single-track enqueue from a song row, search result, etc).Performance — idle Rust CPU, probe overlay, and cover prefetch
By @cucadmuh, PR #939
Notifywhen disabled — no idle 2s poll loop; wake on configure or library sync-idle./procpoll on Windows; fix overlay flicker and sparkline clock jumps; hold previous CPU % until the first rate sample (no 0% flash).diskSrcCachewithout flooding invoke slots; yield when viewport ensures are queued.Player stats — paused time no longer counts as listening time
By @cucadmuh, PR #942
Cover backfill — idle CPU spin and offline & cache menu spikes
By @cucadmuh, PR #943
tokio-runtime-workernear 100% CPU when effectively idle: it had no "nothing changed, don't rescan" gate. Added a cheap disk-free idle signature (COUNT(DISTINCT)covers) with async-idlecooldown; the gate settles on a completed pass even when some covers are unfetchable (404), so libraries that never reach 100% no longer trigger a wake storm.GROUP BYplus one cover-dir snapshot and diffed in memory — no per-rowstat, no per-batch rescan loop — so increasing parallelism actually saturates the pipeline.Cover art — per-song over-fetch on Navidrome (album/mf-* explosion)
By @cucadmuh, PR #944
mf-<id>coverArt as "distinct disc art", so backfill warmed one cover per track (e.g. ~520k cached elements for ~170k tracks) and filled thealbum/bucket withmf-*directories.albumHasDistinctDiscCovers.fetch failed for album "X" — Artist (coverArtId=…): cover HTTP 503). Backfill failures log at the normal level; incidental on-demand misses stay at the debug level.Cover backfill — follow the local/public endpoint switch
By @cucadmuh, PR #952
error sending requestfailures..fetch-failedbackoff and runs a forced pass so the handful of covers attempted against the old address retry on the reachable one. This also covers the boot case where the initial pass starts on the primary URL before the first reachability probe resolves. On-demand UI / playback covers already followed the switch.UI polish — focus rings, search fields, column menus, settings
By @Psychotoxical, PR #954
Player — prefs survive restart when queue persist hits quota
By @cucadmuh, reported by norp on the Psysonic Discord, PR #958
psysonic-playerblob (fullqueueItemssince thin-state refactor(queue): thin-state refs as canonical, full Track via resolver #872). Each pref now has its own small localStorage key with legacy migration from the old blob.All Albums — genre filter respects sidebar library scope
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #959
Now Playing — multi-artist links and About the Artist tabs
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #960
artists[](e.g. Navidromefeat.splits) now expose per-artist links on the Now Playing hero and in the queue current-track row — same interaction as player bar and album track lists.Composers — page search keeps role-split credits
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #961
Browse grids — multi-select ring no longer clips (WebKitGTK)
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #962
::afteroverlay (same approach as card focus rings) instead ofoutlineonoverflow: hiddentiles — fixes top-row clipping and the ~1px gap vs the inner border on Wayland/WebKitGTK.Composers — hide performer-only artists from role catalog
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #963
stats.composer.albumCountis zero so ghost composer cards no longer appear.Mainstage — Because you listened respects sidebar library
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #964
getArtist, which can ignoremusicFolderId— picks are now filtered to the scoped library album set, and the rail cache invalidates when the sidebar library filter changes.Build a Mix — keyword blocks and scoped genre list
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #965
fetchGenreCatalog/ local index) instead of server-widegetGenres, matching the sidebar library filter.Artist detail — external link buttons keep border on hover
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #966
btn-surface).1 songvsN songs) with standardcountinterpolation.Player transport — custom delay input validation
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #967
0.1,0.01) now share the same delay math between the modal preview, armed timer, and play-button countdown so the displayed remaining time matches when playback starts or pauses.Settings — in-page search coverage and junk-query filtering
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #968
Floating player bar — remove full-width background strip
By @cucadmuh, reported by Asra on the Psysonic Discord, PR #969
left/right— only the centered pill is painted over the page instead of a full-width black band behind the rounded corners.Smart Playlist editor — themed sort, stable toggles, exclude-all genres
By @cucadmuh, reported by zunoz on the Psysonic Discord, PR #970
CustomSelectinstead of a native<select>whose option list followed system styling.notContainsfilters that stalled Navidrome; empty smart playlists settle without a false "Playlist not found" after a long spinner.Random Mix — audiobook exclusion no longer drops normal music
By @Psychotoxical, PR #973 — reported by zunoz on Discord
Cursors and Favorites sorting
By @Psychotoxical, PR #974 — reported by zunoz on Discord
Mainstage — no more blank start page
By @Psychotoxical, reported by zunoz on Discord, PR #975
Tracks — spacing, Duration column, header hover, multi-artist links
By @Psychotoxical, reported by zunoz on Discord, PR #976
Queue, Genre cards, and the Artists index
By @Psychotoxical, reported by zunoz on Discord, PR #977
#index button now holds only names that start with a number; accented and non-Latin names (Æ Ø Å, Chinese, Japanese, Cyrillic, …) move to a new Other section instead of the#catch-all.Artist detail — credit on "Also featured on" compilations
By @Psychotoxical, PR #979
—, and the credit links to the artist when the server provides one.Playlist — Suggested Songs row matches the playlist
By @Psychotoxical, reported by zunoz on Discord, PR #980
Small windows — usable layout when scaled down
By @Psychotoxical, reported by zunoz on Discord, PR #981
Song rails — consistent navigation buttons
By @Psychotoxical, PR #982
Local index live search — no junk hits on
=and syntax charactersBy @cucadmuh, reported by zunoz on the Psysonic Discord, PR #983
1=2orM=cno longer return unrelated albums and artists — FTS5 was parsing=and similar characters as query syntax instead of a literal token.**,****) are rejected for both local index and server search; titles that contain censorship stars (e.g.***Flawless) remain searchable.Search — song results show their album cover
By @Psychotoxical, reported by zunoz on Discord, PR #984
Mainstage album rails — stable New badge on first hover
By @cucadmuh, PR #986
::beforefor play controls.Player bar — stable waveform when showing remaining time
By @cucadmuh, reported by Asra on the Psysonic Discord, PR #987
WaveformSeekresize/redraw jitter; clocks sit tighter against the waveform with an inline duration toggle icon.Linux — instant play/pause/seek/volume on PipeWire
By @Psychotoxical, reported by PHLAK, PR #990
Linux — tray icon no longer duplicates on KDE
By @Psychotoxical, reported by Asra on the Psysonic Discord, PR #991
This discussion was created from the release Psysonic v1.47.0.
All reactions