havResonance
havResonance is an Angular-based music player for an OpenSubsonic-compatible music collection.
It runs as a static web app: you bring an OpenSubsonic-compatible server or proxy endpoint, connect to it from the app, and browse and play the music collection it exposes.
The app currently supports album, artist, and playlist browsing, queue management, lyrics when provided by the server, light and dark mode, English and German, browser media controls, and a connected server status view.
Features- Browse newest albums from an OpenSubsonic-compatible server
- Search and sort albums by recently added, album title, and artist
- Browse artists with search and sorting, then filter and sort albums on artist pages
- Browse server-provided playlists with search and playlist playback actions
- Open album and playlist pages with track lists, cover art, durations, and full-page playback
- Play albums, playlists, or individual tracks with a persistent player bar
- Manage the playback queue, shuffle, repeat, volume, mute, and elapsed/remaining playback time
- Restore the queue and player state during the current browser session
- Show lyrics when the connected server provides them
- View connected server status and reported OpenSubsonic extensions
- Show current playback in the browser title and system media controls when supported
- Switch between English and German
- Switch between light and dark mode
- Build for static hosting, including GitHub Pages
havResonance has no hosted user account system. You connect with the credentials for the OpenSubsonic-compatible server or proxy endpoint you choose. Connection details, the playback queue, and player state are stored in sessionStorage for the current browser session, and credentials are never stored in localStorage.
Theme and language preferences may be read from localStorage if they were saved after a previous connection. New preference values are written to localStorage only after a connection has been established.
Proxy-backed deployments route OpenSubsonic requests through the configured proxy. That proxy should be operated as part of the deployment and must avoid logging request URLs because OpenSubsonic authentication values are sent as query parameters.