What's Changed
Browser Extension
- Add official store links for browser extension installation by @jherskowitz in #653
Resolvers & Playback
- Add Concerts feature with multi-provider integration and On Tour indicators by @jherskowitz in #634
- Remove unsupported 'concerts' capability from all plugins by @jherskowitz in #636
- Fix Spotify playback retry with token refresh mechanism by @jherskowitz in #673
Sync & Scrobbling
- Add exponential backoff retry logic for Spotify API server errors by @jherskowitz in #635
Bug Fixes
- Expand artist recommendations from 8 to 20 with improved variety by @jherskowitz in #637
- Fix Fresh Drops never auto-refreshing stale cached releases by @jherskowitz in #638
- Fix Fresh Drops showing same releases by shuffling artists and using … by @jherskowitz in #639
- Track lastFullScan separately to prevent incremental refresh loop by @jherskowitz in #640
- Fix view navigation and history restoration after app relaunch by @jherskowitz in #652
- Refactor location filtering logic for concerts by @jherskowitz in #664
- Fix geo filter text fallback to match on city portion only by @jherskowitz in #665
- Add debug logging to diagnose geo filter false positives by @jherskowitz in #666
- Claude/fix geo filter bug pc0zh by @jherskowitz in #667
- Fix stale concert list render by keying on location state by @jherskowitz in #668
- Add Ticketmaster concert service integration by @jherskowitz in #672
Other Changes
- Dark Mode by @jherskowitz in #626
- Design: YouTube Music sync via Google Data Portability API by @jherskowitz in #628
- Add YouTube Music library import issue draft by @jherskowitz in #630
- Add JavaScript to TypeScript migration plan for Parachord by @jherskowitz in #632
- Release v0.8.1-alpha.1: Dark mode, Concerts, and reliability by @jherskowitz in #641
- Add fallback artist lookup via Spotify, Apple Music, Last.fm, Discogs by @jherskowitz in #642
- Validate MusicBrainz match quality before using artist data by @jherskowitz in #644
- Prevent bad MusicBrainz matches from being served from cache by @jherskowitz in #645
- Fix crash in fetchArtistData when cached artist name doesn't match by @jherskowitz in #646
- Fix wrong artist match by validating name similarity, not just MB score by @jherskowitz in #647
- Add name validation to all fallback artist lookup functions by @jherskowitz in #648
- Tighten fallback name matching to use word-level comparison by @jherskowitz in #649
- Add resolver-based search fallback when MusicBrainz returns few results by @jherskowitz in #650
- Fix musicKitWeb ReferenceError in search supplement code by @jherskowitz in #651
- docs: add latest commits to release notes by @jherskowitz in #643
- Replace store button icons with official Chrome and Firefox browser l… by @jherskowitz in #654
- Use official Firefox 2019 logo from Mozilla protocol-assets by @jherskowitz in #655
- Fix Raycast extension: include built dist/ and fix build script by @jherskowitz in #656
- Claude/add store links xh b7s by @jherskowitz in #659
- Add CHANGELOG.md for Raycast extension store publishing by @jherskowitz in #662
- docs: add browser extension store links and Raycast publishing to rel… by @jherskowitz in #663
- Add comprehensive design system documentation by @jherskowitz in #669
- Clean up outdated docs and fix Harmonix → Parachord references by @jherskowitz in #671
- Fix protocol volume handler using wrong scale (0-1 instead of 0-100) by @jherskowitz in #674
- Release v0.9.0-beta.1: Concerts, geo filtering, and API resilience by @jherskowitz in #675
Full Changelog: v0.8.0-alpha.12...v0.9.0-beta.1