Release date: 2026-10-17
Two new ways to play: Amazon Music, streamed inside Parachord, and your own Subsonic server (Navidrome, Airsonic, Gonic and friends). Album pages open the moment you click, Fresh Drops and Recommendations scroll smoothly, and AI-recommended tracks finally show their album art. Plus a Custom LLM option for Shuffleupagus, and a lot of fixes from a very productive week of contributions.
Amazon Music
Parachord can now play Amazon Music. Enable the Amazon Music plugin, sign in with your Amazon account, and Amazon tracks show up in search, resolution and playback like any other service. Playback runs through Amazon's own web player inside Parachord, decrypted by the Widevine module that arrived in 0.9.8, so there is no Amazon desktop app to install or keep open.
- Audio quality is a setting in the plugin's section: Standard, Data Saver, or HD / Ultra HD (lossless, where your subscription includes it). Parachord measures what it is actually receiving and shows it when you hover the title in the now-playing bar.
- Playlist import works for
music.amazon.com/playlists/…links, from the import dialog or aparachord://play/playlistlink. - You need an Amazon Music subscription for full tracks, and this needs the signed release builds (the ones from the Releases page), not a local build from source.
- I tested this on a Mac. Reports from Windows and Linux are welcome on #983.
Subsonic servers
If you run Navidrome, Airsonic, Gonic, or anything else that speaks the Subsonic API, Parachord can search it and stream from it. Enable the Subsonic plugin, enter the server address, username and password, and your library is a source like any other. Sign-in uses Subsonic's token scheme, so your password is never sent in a URL. Hovering the title in the now-playing bar shows the file's codec, bit rate and sample rate as the server reports them.
Album pages open instantly
Clicking an album used to show nothing for a second or more, sometimes much longer, before the page appeared. Parachord was waiting for MusicBrainz, which allows one request per second, before changing views, and hover previews were queued ahead of your click. Now the page appears at once with the title and cover, the tracks follow, and an album you have opened before comes straight from the cache with no request at all. This applies to Fresh Drops, Charts, Critic's Picks, the home page cards, and the album art in the now-playing bar.
- The now-playing album art always opens the album page, whatever you are playing from. It used to work only when you had started playback from that album's page.
- Smooth scrolling on Fresh Drops and Recommendations. Both pages stuttered while tracks resolved in the background. Updates are now batched, and hovering a card no longer fires a lookup until the pointer rests on it.
Album art everywhere
Every surface now uses the same artwork lookup, which ends with iTunes and Deezer as fallbacks. The visible effect: tracks suggested by Shuffleupagus, which used to render without covers, now get art like everything else.
Custom LLM for Shuffleupagus
Shuffleupagus can now talk to any OpenAI-compatible or Anthropic-compatible endpoint, not just the named providers: LM Studio, vLLM, llama.cpp, OpenRouter, Ollama's /v1, or a hosted API with its own address. Set the API style, the base URL, an optional key, and a model (typed freely, with the endpoint's model list as suggestions). A Reasoning setting controls thinking on models that support it, and a model that spends its whole budget thinking no longer comes back as a blank reply.
Local files
- Network shares. Seeking in a file on an SMB or NFS share failed with "the file may have been moved or deleted" while the file was right there. Seeks and transient read errors are retried; a genuinely missing file still fails cleanly.
- Stream quality on hover. Hover the title in the now-playing bar to see the exact parameters of what is playing (for example
FLAC · 44.1 kHz · 16-bit · 847 kbps). Local files, Amazon Music and Subsonic provide this; other services show the title as before. - Adding a library no longer stalls the app. Library enrichment used to sit in front of search, artist pages and even pressing play for minutes after launch. It now runs behind anything you ask for directly.
Recommendations and discovery
- Blocking works. Telling Shuffleupagus to never recommend an artist, album or track now actually keeps it out of Recommendations, Fresh Drops, the home suggestions and chat. The chat also offers the block tool, as the prompt always claimed.
- Fresh Drops no longer silently skips artists when MusicBrainz is slow, and its unread badge (and the Concerts one) survives a restart.
- Critical Darlings are remembered between launches instead of reloading every time.
- Concerts stop tripping Ticketmaster's rate limit, which was leaving events out.
- Artist radio links (
parachord://play/radio?artist=…) work; they used to fail quietly.
Playlists and sync
- "Local only" stays local. Editing the tracks of a playlist marked local only used to switch sync back on for it.
- Export as XSPF is reachable: from the playlist's Share menu, from the playlist's right-click menu, and as "Save to file" in the queue save dialog.
- The Library Sync window and its "Sync Now" button are reachable again.
- Playlists mirrored from a web address are fetched with size and address checks, and a streaming-service playlist page is no longer mistaken for one of them (that caused an "Import Failed" message at startup for a playlist that had imported fine).
Under the hood
- While ListenBrainz's MBID mapper is down (it has been since late September), Parachord falls back to the ListenBrainz labs lookup, so scrobbles keep their MusicBrainz IDs and ListenBrainz playlist sync keeps working.
- Album tracklists from MusicBrainz are cached, so reopening an album costs no request.
- Skipping tracks no longer pauses your Spotify session when Parachord is playing from somewhere else.
- The "Track Re-resolved" dialog names the service that failed.
- The MCP server's
seek,get_positionandblock_recommendationtools, and its playlist tools, work; they were advertised but not wired up. - Plugins are now generated from source files, so a plugin update cannot drift between the bundled copy and the marketplace.
Thanks
Most of this release came from @theli-ua: Amazon Music, the Subsonic resolver, Custom LLM and its reasoning support, stream quality on hover, the network-share fix, the unread-badge fix, and the plugin build pipeline. Thank you.
What's Changed
Resolvers & Playback
- chore(plugins): hide Custom LLM on mobile until it can render its settings; README mention by @jherskowitz in #1024
- fix(plugins): customllm reasoning follow-ups to #1028 by @jherskowitz in #1032
Sync & Scrobbling
- fix(mbid): fall back to labs acr-lookup while the MBID mapper is down; stop recording outages as misses by @jherskowitz in #991
Bug Fixes
- fix(playback): name the resolver in the Track Re-resolved dialog, and show it on thrown errors too by @jherskowitz in #992
- fix(mcp): wire seek, get_position and block_recommendation into the app executor by @jherskowitz in #998
- fix: Fresh Drops timeouts, Ticketmaster 429s, mapper noise, needless Spotify pauses by @jherskowitz in #999
- fix(perf): background lane for bulk lookups; library enrichment no longer blocks everything else by @jherskowitz in #1001
- fix: guard and cap hosted-playlist fetches; correct share-link docs by @jherskowitz in #1013
- fix: apply the recommendation blocklist; offer block_recommendation in chat; MCP playlist tools by @jherskowitz in #1014
- fix: seed artist-only radio links from the artist's top track by @jherskowitz in #1015
- feat: wire playlist XSPF export to the UI by @jherskowitz in #1016
- fix: make the Library Sync modal and its Sync Now button reachable by @jherskowitz in #1017
- fix(art): one album-art pipeline for every surface, with iTunes and Deezer as its tail by @jherskowitz in #1025
- fix(playbar): album art always opens the album page, from any playback context by @jherskowitz in #1026
- fix(localfiles): stream-quality follow-ups to #1027 by @jherskowitz in #1031
- fix(playlists): saves keep localOnly and every other field by @jherskowitz in #1033
Other Changes
- docs: describe the castlabs Electron build, Widevine CDM, and EVS signing by @jherskowitz in #990
- perf(album): cache MusicBrainz tracklists; fix 7 store keys main was silently dropping by @jherskowitz in #993
- fix(store): persist Fresh Drops and Concerts unread badges by @theli-ua in #994
- chore: drop duplicate discovery_seen_* entries from ALLOWED_STORE_KEYS by @jherskowitz in #996
- fix(localfiles): retry network-share reads and seeks (#978) by @theli-ua in #1000
- docs: playlist import/sync and recommendations inventories by @jherskowitz in #1004
- docs: link the remaining known gaps to their issues by @jherskowitz in #1023
- feat(plugins): add Custom LLM meta-service by @theli-ua in #1003
- feat(localfiles): stream quality on now-playing title hover by @theli-ua in #1027
- feat(plugins): customllm reasoning effort setting + reasoning-only response detection by @theli-ua in #1028
- fix(artist): guard artist-data cache reads against partial MBID-warmup entries by @theli-ua in #1029
- feat(amazonmusic): play via in-app Widevine by @theli-ua in #983
- feat(resolver): Subsonic — search and stream from a self-hosted server by @theli-ua in #1030
- ci: label fork PRs with pull_request_target by @jherskowitz in #1034
- chore(deps): npm audit fix; express 4.22 for the MCP and embed servers by @jherskowitz in #1037
- perf: stop per-item state writes from stuttering Fresh Drops and Recommendations scroll by @jherskowitz in #1040
New Contributors
Full Changelog: v0.9.8...v0.9.9