github Parachord/parachord v0.8.0-alpha.4

latest releases: v0.9.6, v0.9.5, v0.9.4...
5 months ago

What's Changed

New Features

Friend Activity on Home Tab

  • The Home tab now shows a "Friend Activity" widget with up to 5 friends sorted by online-first, then most recent activity. Includes relative timestamps ("now", "2h ago"), color-coded online/offline status dots, track info, and a Listen Along button for online friends. (#487)
  • Friend track rows are clickable to play and right-clickable for the full track context menu (add to queue, playlist, etc.). (#492)
  • Listen-along sessions now automatically end when you manually play a different track, with a toast notification. (#498)

Embeddable Smart Link Player

  • New "Embed" button on public smart link pages with a customization modal — choose between standard/large sizes, customize background color to match your site, see a live preview, and copy the embed code to your clipboard. Embed endpoints now accept a bg query parameter for theming. (#484)

What's New Card

  • After app updates, a "Learn What's New" card appears in the Enhance Your Experience section, opening a modal with release highlights. Dismissed per-version so it only shows once. (#507)

Deep Link Generation (Power User)

  • Right-click any page header to copy a parachord:// deep link capturing the current page and active tab. Covers all navigable views: Home, Artist, Collection, History, Playlists, Search, Settings, and more. A tooltip-styled context menu appears at the cursor for visual feedback. (#488, #489)

Bug Fixes

Apple Music

  • Fixed progress bar for all three playback paths (native MusicKit polling, MusicKit JS web, preview audio) — added missing timeupdate listener for preview audio, fixed seek calling wrong backend on non-macOS, and added smooth interpolation between polling intervals. (#504)
  • Fixed seek silently failing due to Swift Int/Double type coercion — the AnyCodable decoder stored integer JSON values as Int, and Swift's as? Double can't coerce Int. Now accepts both types. (#510)
  • Fixed progress bar snapping back during seek by adding a seekingRef guard that suppresses all external progress updates while dragging. Guards all sources: MusicKit polling, MusicKit JS events, preview audio, Spotify interpolation/polling, audioRef, and the generic elapsed timer. (#505, #506)

Collection & Library Sync

  • Fixed track/album removal failing for items with special characters — removeTrackFromCollection now matches by stored track.id first, falling back to generateTrackId for tracks from other views. (#494)
  • Fixed remove-from-collection failing due to inconsistent ID generation between addTracksToCollection (inline regex) and removeTrackFromCollection (generateTrackId). Both now use the canonical function. (#490)
  • Fixed background sync visually flickering the collection count when Spotify API pagination fails partway through — UI update is now skipped when sync returns a suspicious net loss (>50 tracks AND >10% of collection). (#494)
  • Re-authentication of Spotify or Apple Music now triggers an immediate library sync instead of waiting for the next 15-minute interval. (#495)

Album Cover Art

  • Fixed cover art permanently disappearing after Fresh Drops refresh — the onError handler was unconditionally overwriting valid cached URLs with null on transient CAA 404s. Now only writes null when no valid URL is already cached. (#500)
  • Removed the null-entry concept from albumArtCache entirely — albums without art always retry the deterministic CAA URL on display. Existing null entries from prior sessions are filtered out on load. (#501)

UI / UX Polish

  • Fixed progress bar tooltip showing wrong resolver name — was checking currentTrack.sources?.spotify instead of _activeResolver, so it always said "Spotify" even when playing via Apple Music. (#493)
  • Fixed volume slider tooltip never appearing — wired up the existing getTooltip() function that had context-aware messages for disabled states. (#486)
  • Fixed volume tooltip overflowing the window — added a tooltip-top-end right-aligned CSS variant for controls near the right edge. (#491)
  • Fixed Shuffleupagus AI chat not scrolling to bottom when opened — added a dedicated effect that scrolls after the sidebar animation completes. (#509)
  • Progress toasts (publishing, resolving, creating embeds) now stay visible until replaced by the success/error toast instead of auto-dismissing. (#485)
  • Share button resized ~33% smaller and left-aligned. (#502)
  • Home page now shows 4 playlists to better balance with 5 friend activity items. (#511)

Full Changelog: v0.8.0-alpha.3...v0.8.0-alpha.4

Don't miss a new parachord release

NewReleases is sending notifications on new releases.