* Enhance CachedImage and ArtistDetail components with improved image caching and priority handling - Refactor CachedImage to utilize a priority system for image loading based on viewport visibility, improving performance during scrolling. - Update useCachedUrl to accept an optional getPriority function for better cache management. - Optimize ArtistDetail and Artists components by using useMemo for cover art URLs, reducing redundant calculations and improving rendering efficiency. - Adjust image loading logic in CachedImage to ensure smoother transitions and avoid unnecessary fetch requests. * perf(ui): unblock IDB cover art, stabilize mainstage rails and virtual lists Let IndexedDB reads bypass the network concurrency slot so cached thumbnails paint without queueing behind remote fetches; debounce disk eviction during heavy scrolling. Fix mainstage horizontal rails: dedupe album/song ids for React keys, widen artwork budget overscan, avoid resetting the budget on list append, and raise Home initial artwork budgets. CachedImage treats already-decoded images as loaded; rail cards load cover images eagerly. Refresh dynamic color extraction and extend virtual scrolling / scroll roots on Albums, Artists, Playlists, and related surfaces. Remove local agent-only commit instructions from the repository tree. * perf(virtual): viewport-based overscan for main scroll lists Drive TanStack Virtual overscan from measured scroll height so each list renders about one screen of extra rows above and below the viewport for snappier scrolling on Albums, Artists (list mode), and Tracks virtual song list. Introduce useResizeClientHeight helpers (ID + ref) for ResizeObserver-based clientHeight tracking. * docs(changelog): note PR #468 UI cover cache, rails, and virtual lists Add a coarse summary under 1.46.0 Changed for cover-art pipeline, mainstage rails, viewport-based overscan, and library/chrome polish.
The Ultimate Desktop Client for Self-Hosted Music Libraries
Fast. Beautiful. Native. Feature-packed. Built primarily for Navidrome. Also compatible with Gonic, Airsonic, LMS and other Subsonic-compatible servers with partial feature support.
No telemetry • Native performance • Massive feature set • Community driven
Warning
Psysonic is under heavy active development. Bugs and rough edges are to be expected. We reserve the right to change, remove, or rework existing features at any time without prior notice.
Server Compatibility
Psysonic is optimized first and foremost for Navidrome.
Many advanced functions integrate directly with Navidrome APIs for the best possible experience. Other Subsonic-compatible servers generally work well, but some features may be limited depending on server capabilities.
Why Psysonic?
Most Subsonic clients feel like web wrappers.
Psysonic does not.
It is a true desktop experience built with Rust, Tauri v2, and React for users who care about speed, aesthetics, customization, and serious music library management.
If you host your own music, this is what the premium experience should feel like.
Core Features
Playback Engine
- Gapless playback
- Crossfade
- ReplayGain support
- Smart Loudness Normalization
- Infinite Queue
- Smart Radio sessions
- High responsiveness with low memory usage
Audio Tools
- 10-band Equalizer
- Presets
- AutoEQ headphone correction
- Per-device optimization
Library Power
- Lightning-fast search
- Albums / Artists / Tracks / Genres
- Ratings system
- Multi-select bulk actions
- Drag & drop playlist management
- Huge library friendly
Lyrics & Discovery
- Synced lyrics with seek support
- Auto-scroll sidebar lyrics
- Fullscreen lyric mode
- Last.fm scrobbling
- Similar artists / love tracks / stats
Personalization
- Huge theme collection
- Catppuccin / Nord inspired styles
- Glassmorphism effects
- Font customization
- Zoom controls
- Keybind remapping
- Theme Scheduler (day/night auto switch)
Power User Extras
- CLI controls
- USB / portable sync
- Backup & restore settings
- In-app auto updater
- LAN / remote auto switching
Orbit (Upcoming)
Listen Together. In Sync. Soon.
Currently in final development and testing. Orbit will introduce synchronized shared listening sessions directly inside Psysonic.
- Host-controlled playback
- Join via link
- Shared listening sessions
- Guest song suggestions
- Real-time queue interaction
Rolling out in an upcoming release. Community feedback will help shape the final experience.
Platforms
| OS | Support |
|---|---|
| Windows | Native Installer (certificate pending) |
| macOS | Signed DMG |
| Linux | AppImage / DEB / RPM / AUR (psysonic, psysonic-bin) / NixOS |
Supports 8 languages and growing.
Install
Linux
curl -fsSL https://raw.githubusercontent.com/Psychotoxical/psysonic/main/scripts/install.sh | sudo bash
Windows
Download the latest installer from Releases.
SmartScreen warnings may appear until the code-signing certificate is active.
macOS
Download the signed DMG from Releases.
Development
git clone https://github.com/Psychotoxical/psysonic.git
cd psysonic
npm install
npm run tauri:dev
Build release:
npm run tauri:build
Privacy First
- No telemetry
- No spyware nonsense
- No analytics harvesting
- Your library stays yours
Community
Join Discord, report bugs, suggest features, share themes, shape the future.
License
GNU GPL v3.0
