Commit Graph

  • d67c0de596 refactor(playlists): #411 R2 — generic registry-driven system endpoints bvandeusen 2026-05-15 13:21:09 -04:00
  • e3957b8eed fix(lint): rename unused now param in produceDiscover to _ bvandeusen 2026-05-15 12:33:05 -04:00
  • 1379595e82 refactor(playlists): #411 R1 — system-playlist kind registry bvandeusen 2026-05-15 12:25:54 -04:00
  • a571282031 feat(flutter): #426B client — offline play capture via mutation queue bvandeusen 2026-05-15 11:19:11 -04:00
  • 47aa178850 feat(playevents): #426B server — RecordOfflinePlay + /api/events play_offline bvandeusen 2026-05-15 11:14:21 -04:00
  • 8652d7124e fix(web): #426 classify in-queue track end as play_ended, not skip bvandeusen 2026-05-15 10:45:11 -04:00
  • 3054e8702b feat(flutter): #415 stage 3 — play-events reporter + rotation wiring bvandeusen 2026-05-15 08:15:32 -04:00
  • 179519689b feat(web): #415 stage 3 (web) — rotation-aware system playlist play bvandeusen 2026-05-15 07:57:00 -04:00
  • e43281d1d0 feat(playlists): #415 stage 2 — rotation-aware shuffle endpoint bvandeusen 2026-05-15 07:47:57 -04:00
  • d2a0b7d780 feat(playlists): #415 stage 1 — rotation-state schema + play ingest bvandeusen 2026-05-15 07:40:17 -04:00
  • 69569a5c2b feat(playlists): expand For You to 100 tracks (Discover parity) bvandeusen 2026-05-15 07:32:55 -04:00
  • 45c72993f3 feat(flutter): replace Download with Regenerate on system playlist detail bvandeusen 2026-05-15 06:55:37 -04:00
  • 7a0437087a feat(flutter): refresh kebab on system playlist cards (#416 parity) bvandeusen 2026-05-15 06:35:55 -04:00
  • d12afdad6e feat(playlists): system playlists default to shuffle on tile play bvandeusen 2026-05-14 22:55:57 -04:00
  • 33b11a3b3d feat(settings): About section with version + force update check bvandeusen 2026-05-14 22:26:22 -04:00
  • 29fee5aa37 Merge pull request 'Release v2026.05.14.0 — player polish, CacheFiller, offline mutation queue' (#47) from dev into main v2026.05.14.0 bvandeusen 2026-05-15 01:17:44 +00:00
  • 02336967b4 chore(flutter): bump version to 2026.5.14+5 for v2026.05.14.0 bvandeusen 2026-05-14 21:17:14 -04:00
  • 452e29bc59 fix(analyze): restore connectivity_provider import for drain() bvandeusen 2026-05-14 21:01:55 -04:00
  • f6ee837be6 fix(test): drop eager connectivity listener in MutationReplayer bvandeusen 2026-05-14 20:57:59 -04:00
  • d27dd69bfc fix(test): cancel one-shot Timers on CacheFiller / MutationReplayer dispose bvandeusen 2026-05-14 18:38:38 -04:00
  • b991fde3fe fix(flutter): drop unnecessary String? casts on nullable map reads bvandeusen 2026-05-14 18:31:57 -04:00
  • 335940cf23 feat(cache): outbound mutation queue for offline-resilient REST bvandeusen 2026-05-14 18:27:05 -04:00
  • 60085b1368 feat(cache): CacheFiller background metadata sweeper bvandeusen 2026-05-14 17:34:42 -04:00
  • fb95a462fb fix(player): align audio + UI on track change, prewarm covers + palette bvandeusen 2026-05-14 16:42:19 -04:00
  • 67bacac84b fix(test): capture cacheFirst stream Future before feeding controller bvandeusen 2026-05-14 15:59:16 -04:00
  • e59ccba961 revert(player): MediaSession surface back to 5 advertised actions bvandeusen 2026-05-14 15:44:14 -04:00
  • e38189470b test(cache_first): update test for new yield-after-fetch semantics bvandeusen 2026-05-14 15:41:00 -04:00
  • 5511f87b4b fix(flutter): cacheFirst no longer hangs on no-match cold fetches bvandeusen 2026-05-14 15:21:55 -04:00
  • e5ab471ce1 Merge pull request 'release v2026.05.13.3: full-player seed + MediaSession expansion (Wear)' (#46) from dev into main v2026.05.13.3 bvandeusen 2026-05-14 18:19:39 +00:00
  • 28b0107925 chore(flutter): bump versionCode to 4 for v2026.05.13.3 hotfix bvandeusen 2026-05-14 14:19:11 -04:00
  • bfad4dddb6 fix(player): call Rating.hasHeart() as method, not getter bvandeusen 2026-05-14 14:07:02 -04:00
  • d1e276204e feat(player): expand MediaSession surface for Wear + lock-screen + Auto bvandeusen 2026-05-14 13:43:18 -04:00
  • 2df35e6227 fix(player): seed full-player display state from current mediaItem on mount bvandeusen 2026-05-14 13:16:20 -04:00
  • 573aa4226d Merge pull request 'release v2026.05.13.2: artist covers + load-then-swap player transitions' (#45) from dev into main v2026.05.13.2 bvandeusen 2026-05-14 16:31:43 +00:00
  • 30fc7603d4 chore(flutter): bump versionCode to 3 for v2026.05.13.2 hotfix bvandeusen 2026-05-14 12:31:05 -04:00
  • 86d67f6fc6 fix(player): preload-then-swap cover transitions on both player surfaces bvandeusen 2026-05-14 12:07:50 -04:00
  • 8cb9a8b797 fix(flutter): restore artist coverUrl on drift-cached ArtistRef bvandeusen 2026-05-14 12:01:02 -04:00
  • 7339815ea9 Merge pull request 'release v2026.05.13.1: player + Discover hotfix' (#44) from dev into main v2026.05.13.1 bvandeusen 2026-05-14 15:17:45 +00:00
  • 2a18e91c39 feat(flutter): drift-first Library tabs + systemPlaylistsStatus + tab pre-warm bvandeusen 2026-05-14 10:14:46 -04:00
  • 507c532f6d fix(flutter): drop redundant foundation import (debugPrint via material) bvandeusen 2026-05-14 08:42:50 -04:00
  • bf0ef5e0c3 fix(flutter): keep artist avatars round in the Library grid bvandeusen 2026-05-14 08:39:37 -04:00
  • 6efb3159d5 fix(flutter): silence 404 log noise from missing playlist covers bvandeusen 2026-05-14 08:32:35 -04:00
  • 8f1bc60757 chore(flutter): bump versionCode to 2 for v2026.05.13.1 hotfix bvandeusen 2026-05-14 08:30:23 -04:00
  • c29d25d1cb fix(playlists): dedup tracks across discover buckets bvandeusen 2026-05-14 07:50:35 -04:00
  • 2ebe6229b7 fix(player): smooth full-player cover + backdrop on track change bvandeusen 2026-05-14 07:41:27 -04:00
  • 6a08d94255 fix(player): smooth mini bar cover swap across track change bvandeusen 2026-05-14 07:37:42 -04:00
  • 3e7b2582a2 fix(player): queue skip + cut over silence on track tap bvandeusen 2026-05-14 07:36:59 -04:00
  • baa601765e Merge pull request 'release v2026.05.13.0: SSE live updates + offline cache + per-item rendering' (#43) from dev into main v2026.05.13.0 bvandeusen 2026-05-14 02:36:47 +00:00
  • 3db90020d4 chore(flutter): bump version to 2026.5.13+1 for release bvandeusen 2026-05-13 22:29:11 -04:00
  • 7367595e71 feat(flutter): cosmetic reveal animations (Slice F) bvandeusen 2026-05-13 22:08:34 -04:00
  • 158a5d7506 fix(flutter): drop unused adapters import in library_screen bvandeusen 2026-05-13 21:59:35 -04:00
  • f2fa441405 feat(flutter): liked tabs on per-item rendering (Slice E) bvandeusen 2026-05-13 21:55:20 -04:00
  • a324454efe feat(flutter): skeleton rows during playlist cold-load (Slice D) bvandeusen 2026-05-13 21:47:13 -04:00
  • 03c13d21c6 feat(flutter): home screen on per-item rendering (Slice C) bvandeusen 2026-05-13 21:05:43 -04:00
  • 0119eacf14 feat(api): GET /api/home/index for per-item rendering (Slice B) bvandeusen 2026-05-13 20:41:44 -04:00
  • 0504cae27c fix(flutter): drop unused imports flagged by analyze bvandeusen 2026-05-13 20:30:33 -04:00
  • 64db364834 feat(flutter): per-item rendering infrastructure (Slice A) bvandeusen 2026-05-13 20:25:40 -04:00
  • 99462185b4 feat(flutter): drift-first MyQuarantine bvandeusen 2026-05-13 18:41:18 -04:00
  • 395a6efb26 feat(flutter): drift-first History tab bvandeusen 2026-05-13 18:31:36 -04:00
  • 1a2de0e738 feat(flutter): drift-first Liked tabs bvandeusen 2026-05-13 18:18:14 -04:00
  • 32c8d4f28f feat(flutter): pre-warm covers during library sync bvandeusen 2026-05-13 18:06:53 -04:00
  • f732c49645 feat(flutter): disk-persistent cover cache via cached_network_image bvandeusen 2026-05-13 17:59:42 -04:00
  • ae5de91006 fix(flutter): tighten version-check cadence to 1m during active use bvandeusen 2026-05-13 16:30:40 -04:00
  • 369ed800b9 fix(flutter): non-blocking version check + 1h staleness throttle bvandeusen 2026-05-13 16:14:42 -04:00
  • 7cfaafd360 feat(#357): library_changes retention compactor bvandeusen 2026-05-13 15:49:07 -04:00
  • 22bd06a578 feat(flutter): drift-first homeProvider (#357 deferred follow-up) bvandeusen 2026-05-13 15:40:43 -04:00
  • efa52484d4 fix(web): add player stub to player-store mocks for TrackRow tests bvandeusen 2026-05-13 15:05:59 -04:00
  • 3e52ff7fa3 feat(#402): wire screen-scoped providers to liveEventsProvider bvandeusen 2026-05-13 14:29:57 -04:00
  • 89ded7b46c feat(#402): publish album/artist like events on the SSE bus bvandeusen 2026-05-13 14:27:23 -04:00
  • bb9e979876 feat(web,flutter): #401 — now-playing highlight on TrackRow + PlaylistTrackRow bvandeusen 2026-05-13 14:05:33 -04:00
  • e282766268 fix(flutter): analyzer issues from #396 — unused import + AsyncValue API bvandeusen 2026-05-13 13:55:56 -04:00
  • 046ee8d576 feat(flutter): #396 — full-screen now-playing polish bvandeusen 2026-05-13 13:40:51 -04:00
  • b5c5dbbe76 fix(flutter): null-coalesce PlaylistTrack.streamUrl to TrackRef.streamUrl bvandeusen 2026-05-13 12:42:59 -04:00
  • 872b0de304 feat(flutter): #393 — always-visible play button on home cards bvandeusen 2026-05-13 12:35:57 -04:00
  • 89d8b4b5a0 feat(flutter): send timezone on login + app-start + weekly bvandeusen 2026-05-13 12:16:52 -04:00
  • 6b7e4f1dee feat(web): send timezone on login + bootstrap + weekly bvandeusen 2026-05-13 12:14:21 -04:00
  • c2168afbf0 fix(playlists): use CRON_TZ-prefixed cron expressions for per-job timezone bvandeusen 2026-05-13 12:09:02 -04:00
  • 7fac264c73 feat(playlists): wire Refresh into PUT /api/me/timezone + registration bvandeusen 2026-05-13 11:58:24 -04:00
  • 46c8edfa82 feat(playlists): gocron-based per-user scheduler bvandeusen 2026-05-13 11:57:13 -04:00
  • 230da7bdcb feat(users): timezone column + PUT /api/me/timezone bvandeusen 2026-05-13 11:54:45 -04:00
  • 5cd342d521 feat(playlists): daily seed rotation + jitter + 12+13 split for system playlists bvandeusen 2026-05-13 10:19:49 -04:00
  • b4801c2dd3 refactor(playlists): SQL queries return top-5 candidate seeds bvandeusen 2026-05-13 10:04:39 -04:00
  • 90d8aae51a feat(#392): Flutter SSE consumer + dispatcher bvandeusen 2026-05-12 22:25:15 -04:00
  • 15063ca0b4 fix(#392): simplify uuid formatter — gofmt-clean loop bvandeusen 2026-05-12 22:21:38 -04:00
  • f7dfeff256 feat(#392): scan run lifecycle events on the SSE bus bvandeusen 2026-05-12 21:52:06 -04:00
  • 84fc6b8d1b feat(#392): lidarr reconciler publishes request.status_changed on complete bvandeusen 2026-05-12 21:38:49 -04:00
  • ee7f0cdb42 feat(#392): publish quarantine + playlist mutation events bvandeusen 2026-05-12 21:28:05 -04:00
  • 3ffa5608d8 feat(#392): publish track-like + request-status events to SSE bus bvandeusen 2026-05-12 20:55:33 -04:00
  • a5500aeeff fix(#392): update library_test.go for new Mount signature bvandeusen 2026-05-12 20:49:55 -04:00
  • 170614baf1 feat(#392): SSE event stream foundation — eventbus + /api/events/stream bvandeusen 2026-05-12 20:44:37 -04:00
  • b466b6494a fix(flutter): unhide button + cover + timestamp on Library Hidden tab bvandeusen 2026-05-12 14:32:04 -04:00
  • 9acad5461e refactor(web): extract emptyPlaylistsMock + apiClientMock test helpers bvandeusen 2026-05-12 12:45:15 -04:00
  • 1f0f7eee1a fix(playlists): unblock Discover by removing SELECT DISTINCT + ORDER BY plan error bvandeusen 2026-05-12 09:50:01 -04:00
  • 0d009b34e2 Merge pull request 'release v2026.05.12.1: Discover surface + nav fixes + cache hygiene' (#42) from dev into main v2026.05.12.1 bvandeusen 2026-05-12 03:58:43 +00:00
  • 5fc04f14b7 fix(flutter): full-player kebab nav + restore artistAlbums SWR bvandeusen 2026-05-11 23:54:11 -04:00
  • a09b636e1a fix(flutter): full player kebab Go to album/artist navigates cleanly bvandeusen 2026-05-11 23:50:42 -04:00
  • 356f8f5d6c test(web): update home placeholder counts for new Discover slot bvandeusen 2026-05-11 23:46:07 -04:00
  • 96aa2407d9 feat(home): surface Discover system playlist as a tile (web + flutter) bvandeusen 2026-05-11 23:41:01 -04:00
  • e856172d60 chore(flutter): drop success-path diagnostic prints bvandeusen 2026-05-11 23:16:42 -04:00
  • ab62a3d118 fix(flutter): cancel stale background fills when queue changes bvandeusen 2026-05-11 22:31:45 -04:00