Release date: 2026-11-03
Search and artist pages show results in about a second instead of five to twenty, and a track you click plays without waiting behind everything else loading. Amazon Music now plays in Parachord's own player, with a quality setting, for Music Unlimited accounts. SoundCloud tracks play in the app instead of opening your browser. And covers stop flickering, going missing, or pointing at images that don't exist.
Faster search
- Results in under a second. Search used to wait on three MusicBrainz lookups, one after another at one per second, and showed nothing until the last answered: five seconds and often far more. It now asks the music services you've turned on at the same time, shows their results as soon as they arrive (usually well under a second), and adds MusicBrainz's below them as they come in, without moving what's already on screen. Where a service and MusicBrainz find the same song, it's one row that plays from either.
- Typing doesn't pile up lookups. Pausing mid-word started a search for the half-typed word, and its lookups stayed in the queue ahead of the search you meant. They're dropped now.
- Better top results. Search used to rank songs by how well the title alone matched what you typed, so "portishead roads" favored covers titled "Portishead - Roads" over Portishead's "Roads". It now matches the artist and the title together, prefers the services you rank higher, and favors songs several services agree on.
- Originals before covers. Searching an artist's name listed albums with the name in their title, mostly covers ("Into Dust (Mazzy Star Cover)"), ahead of the artist's own; searching a song title could list several covers before the original. Search now counts it when your query names an artist or matches a title exactly, and uses how much each artist and album is listened to on ListenBrainz (and Spotify's popularity, if you use Spotify), so Mazzy Star's albums lead a search for "Mazzy Star" and the original "Fade Into You" leads that one. When the original arrives a moment after the covers, it moves up once.
Faster artist and album pages
- Artist discographies show as they load. An artist page waited for albums, EPs and singles before showing any of them. Albums now appear as soon as they arrive, and opening an artist from Search skips a lookup it no longer needs.
- Covers no longer hold up what you clicked. Cover lookups, artist bios and Home's suggestions used to queue ahead of the page you opened; at launch, five cover lookups could make an artist page wait 15 seconds. They now wait behind anything you asked for, and a slow lookup already running no longer blocks your click.
- Playing a track goes first. Clicking a track that hasn't been matched to a service yet now finds it ahead of everything else the page is loading, instead of waiting behind every other track on the page (up to 9 seconds on an album). On album pages, clicking such a track used to open a search instead of playing it; it plays now.
- Album pages show their tracks sooner. Opening an album from an artist page took three MusicBrainz lookups, a second or more apart, before the track list appeared; it now takes one. Your services are asked for the track list at the same time, and theirs shows if it arrives first (usually under a second), where the page used to wait five seconds before asking them. The track count shows a loading bar instead of "Loading...".
- Reopening on an artist page uses what's saved. If the app reopened on an artist page, it looked the discography up again from MusicBrainz and filled it in one release type at a time, every launch. It now waits the second or so for the saved data and shows everything at once.
- First visits to an artist don't sit empty. If MusicBrainz hasn't answered after three seconds, the page shows the artist's releases from Spotify, Apple Music, Last.fm or Discogs until it does.
- Play, Add to Queue and Add to Playlist on album cards start sooner. On Search, Home, Fresh Drops, Charts, the Top Albums lists and from AI chat, these waited on MusicBrainz for the track list, and did nothing if it failed. Your services are now asked at the same time and whichever answers first is used; album cards from a service in Search, which used to fail, work now.
- Works when MusicBrainz's IPv6 address doesn't. On November 1, MusicBrainz and the Cover Art Archive accepted connections over IPv6 and then dropped them, for hours, while IPv4 worked, so every lookup failed. Parachord now retries over IPv4 when that happens.
Album art
- Bandcamp covers. Covers from Bandcamp search never loaded: Bandcamp's search returns an image address that doesn't exist. Parachord now builds the right one.
- A search cover that fails to load is replaced with one from another source, instead of leaving a blank square.
- Faster covers when a source is slow. Search shows the cover a service already returned if the usual lookup takes more than two seconds, and songs without an album name get covers too.
- ListenBrainz covers for friends' listens and top albums, your own ListenBrainz history, and the weekly playlists now come from ListenBrainz itself instead of a MusicBrainz search per item.
Amazon Music
- Amazon plays in Parachord's own player. Amazon Music used to play inside a hidden Amazon web page that Parachord steered from outside, so skipping, seeking, the progress bar and your keyboard's media keys didn't always agree with what you heard. Its stream now plays in Parachord's player like other services. Thanks to @theli-ua, who built it.
- Choose Amazon's stream quality. Settings → General → Playback Quality picks Max, High, Standard or Data saver, and can adjust to your connection. With an HD plan, Max plays lossless; other plans get the best quality they include, and a change applies to the song already playing. This replaces the quality choice in Amazon's own settings, and what you picked there doesn't carry over: everyone starts on Max, adjusting to your connection.
- Two-factor sign-in works. The sign-in window closed while Amazon was asking for your code, reported success, and then asked you to sign in again, over and over. It now waits for the whole sign-in, and Amazon shows "Setup required" in Settings when you're signed out.
- No more surprise sign-in prompts. Amazon refreshes part of its session every so often, and a page load caught in that moment made Parachord ask you to sign in while you were signed in. It now retries quietly first.
- Playing Amazon tracks needs Music Unlimited. On Amazon Prime, playing a track could start a station of similar music instead of the song you picked. Parachord now checks your plan: with Music Unlimited, Amazon plays as before. With Prime, or when Parachord can't confirm your plan, Amazon stays on for album art, artist photos, links and playlist import, but its tracks aren't offered for playback. Songs play from your other services, Amazon icons don't show on tracks, and Amazon's tile in Settings says "Prime: no playback" (or "Plan not confirmed"), with the reason when you hover.
- Upgrading turns playback back on. After you move to Music Unlimited, open Settings: Amazon returns to its place in your priority order, and Parachord looks for Amazon matches again for tracks it skipped.
- No sign-in pop-up from background searches. "Play Amazon Music in Parachord?" used to pop up while pages were finding tracks. It now opens only when you ask for Amazon: signing in from Settings, playing an Amazon track, or importing an Amazon link.
- Report Bad Match reports only the track you picked.
SoundCloud
- SoundCloud plays in Parachord. SoundCloud tracks used to open in your browser, because SoundCloud no longer lets apps stream its audio directly. Parachord now plays them in the app with SoundCloud's embeddable player, the one websites use, which needs no sign-in. It runs out of sight, and you control it from Parachord's playbar like any other track. Most independent uploads, mixes and remixes play in full. A track SoundCloud won't play outside its own site, or would only play as a 30-second preview, plays from another of your services instead, or offers to open it on SoundCloud.
- Tries your other services first for tracks SoundCloud usually refuses. When SoundCloud says a track is preview-only or blocked where you are, and another of your services has the same song, Parachord plays that one first, even if you rank SoundCloud higher. If nothing else has it, SoundCloud still tries.
- Stays signed in. SoundCloud signed you out about once an hour while a page was finding several tracks at once, and you had to connect it again in Settings. It now stays connected.
- Dragging in a SoundCloud link works again, signed in or not. Dropping a soundcloud.com track link on Parachord said "Could not load track metadata", because SoundCloud changed how it answers link lookups. The track plays now. It also works without connecting SoundCloud: Parachord reads the track's title, artist and art from SoundCloud's public link preview and plays it in SoundCloud's player. Finding SoundCloud tracks by search still needs a sign-in.
Apple Music
- Works again if you once saved a developer token. If you pasted an Apple Music developer token into Settings at some point, Parachord kept using it after it expired (they last six months). Apple Music search fell back to a simpler one, previews stopped, and Settings said "Setup required". Parachord now skips an expired token and uses a current one.
Spotify
- Setup says Premium is needed. Since February 2026, Spotify runs the developer app you create for Parachord only while the account that created it has Spotify Premium, and stops it if Premium lapses. Spotify's setup steps in Settings now say so.
Home, friends and links
- Home suggestions stay put. Album and Artist Suggestions no longer fetch a new batch every time you open Home; press Refresh for more. A setting brings the old behavior back: Settings → General → Discover → Refresh Home suggestions on every visit.
- Friend links keep their time period.
parachord://friend/…links ignored?period=and couldn't open the Top Albums tab; both work now, and copied links include them. Thanks to @theli-ua for reporting it. - Friend and playlist links open.
parachord://friend/…andparachord://playlist/…links did nothing. - Album links from Copy Link work. Copying an album page's link could give an Achordion link that went nowhere: it named the specific release MusicBrainz had loaded instead of the album. It now names the album.
Sync
- Deletions you make on Spotify, Apple Music or ListenBrainz stick. With the new sync turned on, a track you deleted on the service came back on the next sync. It's removed everywhere now. The same fix stops a track that never finished syncing from being deleted from your own playlist.
Linux
- Packaging guide for distributions.
docs/setup/LINUX_PACKAGING.mdcovers building from source, which Electron to use, what the build downloads, and runtime needs. Building on Linux doesn't need a compiler. Thanks to @ennqueue for asking for it. - The real app icon, and
parachord://links, in the Linux packages: they shipped Electron's default icon, and links didn't open the app.
What's Changed
Sync & Scrobbling
- fix(sync): let the N-way missingStreak gate reach its threshold by @jherskowitz in #1164
Bug Fixes
- fix(artist-images): ask Deezer before the plugin resolvers by @jherskowitz in #1151
- fix(amazonmusic): sign-in waits for 2FA; no prompt loop; Setup required when signed out by @jherskowitz in #1166
- fix(amazonmusic): reject a match whose length is another recording; scope Report Bad Match to its track by @jherskowitz in #1168
- fix(amazonmusic): fail a play when Amazon's page starts a station instead of the track by @jherskowitz in #1169
- fix(amazonmusic): don't prompt to sign in on a session-token hiccup by @jherskowitz in #1172
- fix(protocol): route friend/playlist deep links through the UI navigation paths by @theli-ua in #1165
- fix(protocol): honor ?period= on friend links; add top-albums both ways (#1175) by @jherskowitz in #1178
- fix(friends): take ListenBrainz top-album covers from the stats payload (#1179) by @jherskowitz in #1181
- fix(listenbrainz): take each listen's cover from its mbid_mapping (#1182) by @jherskowitz in #1185
- fix(search): fall back to the service's cover when the art pipeline is slow by @jherskowitz in #1187
- fix(musicbrainz): fall back to IPv4 when MetaBrainz's IPv6 endpoint fails; artist covers through getAlbumArt by @jherskowitz in #1189
- fix(artist): covers missing on the artist page; tag the art queue with the artist by @jherskowitz in #1191
- fix(bandcamp): build search covers from art_id; the API's img URL 404s by @jherskowitz in #1194
- fix(search): rows hold still as sources answer; a broken cover never sticks by @jherskowitz in #1193
- fix(share): album links use the release group, not the release by @jherskowitz in #1200
- fix(artist): a restored artist page waits for the caches by @jherskowitz in #1201
- fix(search): originals over covers: artist-aware ranking and popularity by @jherskowitz in #1204
- fix(amazonmusic): keep the customer ID out of license-denial logs by @jherskowitz in #1207
- fix(soundcloud): one token refresh at a time, so parallel refreshes stop signing you out by @jherskowitz in #1208
- fix(soundcloud): a 30-second widget preview is refused, not played by @jherskowitz in #1212
- fix(soundcloud): dropped and pasted track links load again by @jherskowitz in #1214
- fix(playback): don't skip a track while it is still loading by @jherskowitz in #1215
- fix(applemusic): an expired developer token no longer wins over a fresh one by @jherskowitz in #1216
- fix(applemusic): keep using a saved developer token while it is still valid by @jherskowitz in #1218
- feat(soundcloud): look up a SoundCloud link without a sign-in (#1217) by @jherskowitz in #1219
Other Changes
- feat(home): Album & Artist Suggestions refresh on demand by default by @jherskowitz in #1162
- Revert "fix(artist-images): ask Deezer before the plugin resolvers (#1151)" by @jherskowitz in #1167
- revert(amazonmusic): drop the per-resolver length guard from #1168; keep the Report Bad Match fix by @jherskowitz in #1170
- build(hooks): extract the playback engine to src/renderer/hooks — Track 2b slice 3 (#1098) by @theli-ua in #1171
- docs: Linux packaging guide for distro maintainers; no compiler needed (#1180) by @jherskowitz in #1183
- perf(search): show the user's services' results first, free the MusicBrainz queue by @jherskowitz in #1186
- perf(artist): show releases as each type arrives; skip the lookup when the MBID is known by @jherskowitz in #1188
- perf(musicbrainz): covers, bios and refreshes take the background lane by @jherskowitz in #1190
- perf(resolvers): lanes for resolver, MusicKit and iTunes queues; play clicks first, covers last; album rows play when unresolved by @jherskowitz in #1195
- perf(musicbrainz): two requests in flight, one always free for the foreground by @jherskowitz in #1192
- perf(album): one MusicBrainz request per album; the catalogs race it by @jherskowitz in #1199
- perf(album): album-card actions race MusicBrainz against the catalogs by @jherskowitz in #1202
- perf(artist): show a service's discography when MusicBrainz is slow by @jherskowitz in #1203
- test: page-load budgets for album and artist pages by @jherskowitz in #1205
- test: Search's request budget by @jherskowitz in #1206
- feat(soundcloud): play through SoundCloud's widget instead of the API by @jherskowitz in #1209
- docs(plugins): the embedded-player resolver contract by @jherskowitz in #1210
- feat(playback): rank sources a plugin expects to be limited after the rest by @jherskowitz in #1213
- feat(amazonmusic): no playback without Music Unlimited (#1220) by @jherskowitz in #1221
- feat(playback): one mechanism for plans that can't play on demand by @jherskowitz in #1222
Full Changelog: v0.9.11...v0.9.12