This website requires JavaScript.
b76ea66165
chore(flutter): bump version to 2026.5.18+9 for v2026.05.18.0
bvandeusen and Claude Opus 4.7
2026-05-17 22:40:44 -04:00
412b9e37eb
test(coverart): no-MBID enrich settles 'none' (per canonical behavior)
bvandeusen and Claude Opus 4.7
2026-05-17 22:27:01 -04:00
a86b7a5e07
test(coverart): DrainsNullSourceOnly — stamp id2 'none' at current version
bvandeusen and Claude Opus 4.7
2026-05-17 22:22:44 -04:00
5e91efe695
test(coverart): fix registry-wipe + stale provider signature
bvandeusen and Claude Opus 4.7
2026-05-17 21:05:36 -04:00
47572b2e95
feat(flutter): Discover suggestions feed — web parity
bvandeusen and Claude Opus 4.7
2026-05-17 20:48:54 -04:00
53a02322fb
fix: A2 (relax art-source CHECK) + D + E integration residual
bvandeusen and Claude Opus 4.7
2026-05-17 20:22:30 -04:00
75163ea483
test: correct the A regression + finish B residual (coverart boot, stale system_test)
bvandeusen and Claude Opus 4.7
2026-05-17 15:05:18 -04:00
d212621eaa
test: fix 4 integration-suite root causes surfaced by CI (C+A+B+F)
bvandeusen and Claude Opus 4.7
2026-05-17 13:32:42 -04:00
5a048cbea2
fix(ci): serialize integration test packages (-p 1) to stop TRUNCATE deadlocks
bvandeusen and Claude Opus 4.7
2026-05-17 12:22:06 -04:00
760b4a7c6c
feat(cli,ci): admin reset-password + migrate subcommands; test-DB isolation + CI integration job
bvandeusen and Claude Opus 4.7
2026-05-16 23:36:36 -04:00
a7bea43a13
feat(discover): on-demand Lidarr artist art for suggestions
bvandeusen and Claude Opus 4.7
2026-05-16 20:16:56 -04:00
62db8edcdb
Merge pull request 'Release v2026.05.16.0 — recommendations working end-to-end + cover-art uncap' (#50 ) from dev into main
v2026.05.16.0
bvandeusen
2026-05-16 18:58:55 -04:00
9ffe33a6f2
chore(flutter): bump version to 2026.5.16+8 for v2026.05.16.0
bvandeusen and Claude Opus 4.7
2026-05-16 18:58:19 -04:00
3b142e5332
test(server): drop removed coverArtBackfillCap arg from New() calls
bvandeusen and Claude Opus 4.7
2026-05-16 18:45:24 -04:00
005965d6de
feat(coverart): #388 remove global cover-art backfill cap
bvandeusen and Claude Opus 4.7
2026-05-16 18:41:21 -04:00
4fca0e66cb
fix(listenbrainz): similarity hits Labs API, not the 404'ing main API
bvandeusen and Claude Opus 4.7
2026-05-16 15:50:32 -04:00
4d2aebe3ed
test(similarity): update default-batch assertion 5→25
bvandeusen and Claude Opus 4.7
2026-05-16 14:51:22 -04:00
ca1bc5af62
perf(similarity): worker batch 5→25; track-MBID backfill uncapped
bvandeusen and Claude Opus 4.7
2026-05-16 14:24:45 -04:00
e2432caa65
fix(library): extract recording MBID → tracks.mbid; unblock LB similarity
bvandeusen and Claude Opus 4.7
2026-05-16 13:49:38 -04:00
2e7b81fdfe
fix(playlists): robust For-You seed + deep fill; young-library mix fallbacks
bvandeusen and Claude Opus 4.7
2026-05-16 12:48:20 -04:00
ec0cc37bc9
Merge pull request 'Hotfix v2026.05.15.1 — allow discovery-mix variants in playlists CHECK constraints' (#49 ) from dev into main
v2026.05.15.1
bvandeusen
2026-05-16 00:32:25 -04:00
1e2c486356
fix(playlists): allow the 5 discovery-mix variants in DB constraints
bvandeusen and Claude Opus 4.7
2026-05-15 23:39:21 -04:00
e772938a3b
Merge pull request 'Release v2026.05.15.0 — system playlists v2, offline cache rework, CI speedup' (#48 ) from dev into main
v2026.05.15.0
bvandeusen
2026-05-15 23:15:48 -04:00
0c2b86e736
chore(flutter): bump version to 2026.5.15+6 for v2026.05.15.0
bvandeusen and Claude Opus 4.7
2026-05-15 23:15:10 -04:00
ce36760819
feat(playlists): #417 — "Refreshed …" subtitle on system tiles
bvandeusen and Claude Opus 4.7
2026-05-15 23:03:41 -04:00
2d9775244c
feat(offline): #427 S4b — offline pools on Home beside system tiles
bvandeusen and Claude Opus 4.7
2026-05-15 22:12:51 -04:00
035b000bb0
fix(analyze): drop unused drift import in shuffle_source
bvandeusen and Claude Opus 4.7
2026-05-15 21:44:46 -04:00
a59967be20
fix(offline): move Shuffle all from Home to Library only
bvandeusen and Claude Opus 4.7
2026-05-15 21:41:48 -04:00
a5e2abb8c4
feat(offline): #427 S4a — Shuffle all + offline system-playlist gate
bvandeusen and Claude Opus 4.7
2026-05-15 21:37:29 -04:00
a4f293b7cf
ci(flutter): build debug APK on main only, not every dev push
bvandeusen and Claude Opus 4.7
2026-05-15 21:20:10 -04:00
3f61079c02
feat(offline): #427 S2(+S3) — two-bucket cache model
bvandeusen and Claude Opus 4.7
2026-05-15 21:07:45 -04:00
a0aea00667
feat(offline): #427 S1 — reachability offline marker
bvandeusen and Claude Opus 4.7
2026-05-15 16:13:55 -04:00
c7ee0871a5
feat(playlists): #411 R3 — five discovery mixes (#419-423)
bvandeusen and Claude Opus 4.7
2026-05-15 13:55:27 -04:00
b9accf6934
style: gofmt playlists.go after Refreshable field add (#411 R2)
bvandeusen and Claude Opus 4.7
2026-05-15 13:33:52 -04:00
222742e368
test(api): replace per-kind refresh tests with generic system tests
bvandeusen and Claude Opus 4.7
2026-05-15 13:29:27 -04:00
d67c0de596
refactor(playlists): #411 R2 — generic registry-driven system endpoints
bvandeusen and Claude Opus 4.7
2026-05-15 13:21:09 -04:00
e3957b8eed
fix(lint): rename unused now param in produceDiscover to _
bvandeusen and Claude Opus 4.7
2026-05-15 12:33:05 -04:00
1379595e82
refactor(playlists): #411 R1 — system-playlist kind registry
bvandeusen and Claude Opus 4.7
2026-05-15 12:25:54 -04:00
a571282031
feat(flutter): #426B client — offline play capture via mutation queue
bvandeusen and Claude Opus 4.7
2026-05-15 11:19:11 -04:00
47aa178850
feat(playevents): #426B server — RecordOfflinePlay + /api/events play_offline
bvandeusen and Claude Opus 4.7
2026-05-15 11:14:21 -04:00
8652d7124e
fix(web): #426 classify in-queue track end as play_ended, not skip
bvandeusen and Claude Opus 4.7
2026-05-15 10:45:11 -04:00
3054e8702b
feat(flutter): #415 stage 3 — play-events reporter + rotation wiring
bvandeusen and Claude Opus 4.7
2026-05-15 08:15:32 -04:00
179519689b
feat(web): #415 stage 3 (web) — rotation-aware system playlist play
bvandeusen and Claude Opus 4.7
2026-05-15 07:57:00 -04:00
e43281d1d0
feat(playlists): #415 stage 2 — rotation-aware shuffle endpoint
bvandeusen and Claude Opus 4.7
2026-05-15 07:47:57 -04:00
d2a0b7d780
feat(playlists): #415 stage 1 — rotation-state schema + play ingest
bvandeusen and Claude Opus 4.7
2026-05-15 07:40:17 -04:00
69569a5c2b
feat(playlists): expand For You to 100 tracks (Discover parity)
bvandeusen and Claude Opus 4.7
2026-05-15 07:32:55 -04:00
45c72993f3
feat(flutter): replace Download with Regenerate on system playlist detail
bvandeusen and Claude Opus 4.7
2026-05-15 06:55:37 -04:00
7a0437087a
feat(flutter): refresh kebab on system playlist cards (#416 parity)
bvandeusen and Claude Opus 4.7
2026-05-15 06:35:55 -04:00
d12afdad6e
feat(playlists): system playlists default to shuffle on tile play
bvandeusen and Claude Opus 4.7
2026-05-14 22:55:57 -04:00
33b11a3b3d
feat(settings): About section with version + force update check
bvandeusen and Claude Opus 4.7
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 and Claude Opus 4.7
2026-05-14 21:17:14 -04:00
452e29bc59
fix(analyze): restore connectivity_provider import for drain()
bvandeusen and Claude Opus 4.7
2026-05-14 21:01:55 -04:00
f6ee837be6
fix(test): drop eager connectivity listener in MutationReplayer
bvandeusen and Claude Opus 4.7
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 and Claude Opus 4.7
2026-05-13 16:30:40 -04:00
369ed800b9
fix(flutter): non-blocking version check + 1h staleness throttle
bvandeusen and Claude Opus 4.7
2026-05-13 16:14:42 -04:00
7cfaafd360
feat(#357 ): library_changes retention compactor
bvandeusen and Claude Opus 4.7
2026-05-13 15:49:07 -04:00