Backend and Frontend Update.
Resolved
Mar 11, 2026 at 3:09pm UTC
801018f (2026-03-12) - Lyrics by Track
- Added new GraphQL query lyricByTrack(songName, artist, forceRefresh, includeHistory, historyLimit).
- LyricsService now resolves track metadata first, then fetches by Spotify ID when available.
- Added fallback lyrics lookup by normalized title/artist from DB when Spotify lookup fails.
- TrackMetadataService now reads from trackProviderLookup cache before calling external providers.
- Added new tests for lyrics resolver/service and track metadata cache behavior.
2fa02f6 (2026-03-12) - Now Playing / Playback Improvements
- Poller can emit WebSocket updates/removals (NOW_PLAYING_EMIT_WS) for live now-playing station changes.
- Poller entries are now marked as source: "poller" and stale removals are broadcast when enabled.
- PlaybackService now prefers poller cache for reads and uses shared station-index building.
- Reduced duplicate WS emissions by skipping service-side emit when update already came from poller.
- Removed user-specific now-playing ordering/adhoc target logic from playback query path, simplifying behavior.
71f2bf9 (2026-03-01) - Tutorial State + Version Metadata
- Added tutorial fields to User and introduced UserTutorialProgress model in Prisma schema.
- Added tutorial APIs:
- GET /@me/tutorial
- POST /@me/tutorial/event
- POST /@me/tutorial/skip
- Added rollout script: backfill:tutorial-existing-users with optional --cutoff.
- Introduced automatic git-based version metadata generation (scripts/generate-version-meta.mjs -> .version-meta.json).
- /version now returns version, release, and apiCompatVersion.
- Sessions gateway now emits server:version on connect.
- Station search now supports empty query fallback (recommended stations for logged-in users, pinned fallback otherwise).
f1c6321 (2026-03-01) - SessionsService Foundation
- Implemented a full cache-backed SessionsService domain model (rooms, members, queue, logs, ownership, active session state).
- Reworked WebSocket session flow for create/join/leave/discovery/active-session synchronization.
- Added role-aware permissions (host, remote, member) and host-transfer behavior.
- Added queue controls (addStation, skipStation, removeStation) and track/station update APIs.
- Added compatibility handlers for legacy socket event names.
- Added comprehensive session service tests.
Affected services
Created
Mar 11, 2026 at 1:39pm UTC
The app is currently undergoing maintenance for a new update. Some features may be temporarily unavailable while we deploy improvements. Thanks for your patience!
Affected services