This website requires JavaScript.
2a28d22a2a
feat(android): ResumeController + persist last queue (M8 phase 6.5 — closes Phase 6)
bvandeusen and Claude Opus 4.7
2026-05-23 23:22:59 -04:00
5736bff174
style(android): extract CoverPlaceholder + TrackHeader to satisfy detekt LongMethod
bvandeusen and Claude Opus 4.7
2026-05-23 23:00:54 -04:00
079fc1e4ed
feat(android): PlayerViewModel + MiniPlayer + NowPlayingScreen (M8 phase 6.4)
bvandeusen and Claude Opus 4.7
2026-05-23 22:55:29 -04:00
6aec03fc02
style(android): clear detekt findings in PlayerController
bvandeusen and Claude Opus 4.7
2026-05-23 22:22:14 -04:00
4fde634074
feat(android): PlayerController + PlayerUiState (M8 phase 6.3)
bvandeusen and Claude Opus 4.7
2026-05-23 22:06:46 -04:00
85b8452b78
feat(android): MinstrelPlayerService — Media3 MediaSessionService (M8 phase 6.2)
bvandeusen and Claude Opus 4.7
2026-05-23 12:26:47 -04:00
327ecb6757
style(android): rename package audio_cache -> audiocache
bvandeusen and Claude Opus 4.7
2026-05-23 12:16:23 -04:00
f031b186ba
feat(android): PlayerFactory + CacheConfig + Media3 1.10.1 bump (M8 phase 6.1)
bvandeusen and Claude Opus 4.7
2026-05-23 11:23:36 -04:00
0742b45e3d
feat(android): nav graph + bottom bar (M8 phase 5.5 — closes Phase 5)
bvandeusen and Claude Opus 4.7
2026-05-23 11:04:44 -04:00
18bca6c2fd
fix(android): switch Lucide artifact android -> cmp for ImageVector API
bvandeusen and Claude Opus 4.7
2026-05-23 10:43:00 -04:00
e934da30a1
feat(android): Library Compose screens + Coil OkHttp sharing + Lucide (M8 phase 5.4)
bvandeusen and Claude Opus 4.7
2026-05-23 10:38:08 -04:00
b03d4a86e7
fix(android): drop Loading-state assertions in LibraryViewModelTest
bvandeusen and Claude Opus 4.7
2026-05-22 23:19:52 -04:00
9962ec981c
fix(android): @Provides for the three library DAOs LibraryRepository needs
bvandeusen and Claude Opus 4.7
2026-05-22 23:12:58 -04:00
0ea0fbf8be
feat(android): LibraryViewModel + UiState + MainDispatcherExtension (M8 phase 5.3)
bvandeusen and Claude Opus 4.7
2026-05-22 22:38:59 -04:00
9eaaf93f23
feat(android): LibraryRepository + domain types + mappers (M8 phase 5.2)
bvandeusen and Claude Opus 4.7
2026-05-22 22:27:47 -04:00
d08c937f3b
fix(android): KDoc nested-comment trap from /api/* literal
bvandeusen and Claude Opus 4.7
2026-05-22 21:41:37 -04:00
02175b193b
fix(android): drop provideLibraryApi @Provides — repos construct from Retrofit
bvandeusen and Claude Opus 4.7
2026-05-22 21:05:53 -04:00
fe878a392c
fix(android): split wire types — one declaration per file
bvandeusen and Claude Opus 4.7
2026-05-22 20:57:04 -04:00
ee72459881
fix(android): use retrofit.create<T>() extension in provideLibraryApi
bvandeusen and Claude Opus 4.7
2026-05-22 18:03:59 -04:00
a4c20816bc
feat(android): LibraryApi Retrofit interface + wire types (M8 phase 5.1)
bvandeusen and Claude Opus 4.7
2026-05-22 17:56:10 -04:00
156162e3ac
feat(android): port auth_session + promote AuthStore to Room (M8 4.2 slice 10)
bvandeusen and Claude Opus 4.7
2026-05-22 17:21:42 -04:00
954bb8963f
chore(android): extend detekt TooManyFunctions exception to @Database
bvandeusen and Claude Opus 4.7
2026-05-22 16:45:47 -04:00
e42f2bf525
feat(android): port cached_home_index (M8 4.2 slice 9)
bvandeusen and Claude Opus 4.7
2026-05-22 16:40:37 -04:00
f3a0c44460
feat(android): port cached_resume_state + fix CacheSource enum (M8 4.2 slice 8)
bvandeusen and Claude Opus 4.7
2026-05-22 16:35:10 -04:00
0b1ccd59b1
feat(android): port cached_mutations (M8 4.2 slice 6)
bvandeusen and Claude Opus 4.7
2026-05-22 15:02:02 -04:00
25a66f7d2e
chore(android): allow @Dao interfaces above detekt's TooManyFunctions threshold
bvandeusen and Claude Opus 4.7
2026-05-22 14:56:53 -04:00
e63034ec9c
feat(android): port audio_cache_index (M8 4.2 slice 5)
bvandeusen and Claude Opus 4.7
2026-05-22 14:53:57 -04:00
c18ad19418
feat(android): port cached_quarantine_mine (M8 4.2 slice 4)
bvandeusen and Claude Opus 4.7
2026-05-22 14:16:11 -04:00
4b38623229
feat(android): port cached_playlists + cached_playlist_tracks (M8 4.2 slice 3)
bvandeusen and Claude Opus 4.7
2026-05-22 14:10:05 -04:00
7b55f586ac
feat(android): port cached_likes (M8 4.2 slice 2)
bvandeusen and Claude Opus 4.7
2026-05-22 14:03:42 -04:00
17a3e7dd4f
feat(android): port cached_artists / cached_albums / cached_tracks (M8 4.2 slice 1)
bvandeusen and Claude Opus 4.7
2026-05-22 13:28:54 -04:00
a10079e8ef
feat(android): Room foundation — AppDatabase + TypeConverters + Gradle plugin
bvandeusen and Claude Opus 4.7
2026-05-22 13:22:11 -04:00
4cbbdbfef9
chore(android): audit-response wave — JUnit launcher, compileSdk 36, CC warn, image :36, Gradle cache
bvandeusen and Claude Opus 4.7
2026-05-22 10:41:00 -04:00
41af466621
fix(android): add kotlin-test test dep for assertEquals/assertNull
bvandeusen and Claude Opus 4.7
2026-05-22 10:06:53 -04:00
53f69fb1f5
feat(android): NetworkModule + AuthCookieInterceptor + AuthStore placeholder
bvandeusen and Claude Opus 4.7
2026-05-22 09:00:41 -04:00
25ae70c5bd
fix(android): clear detekt findings — rename files, wrap long lines, allow Composable PascalCase
bvandeusen and Claude Opus 4.7
2026-05-22 08:33:35 -04:00
1d9204897c
fix(android): remove pre-2.0 build: section from detekt config
bvandeusen and Claude Opus 4.7
2026-05-22 08:19:18 -04:00
a68eb1c533
fix(android): migrate detekt block + task types to 2.0 DSL
bvandeusen and Claude Opus 4.7
2026-05-22 08:13:36 -04:00
f210cbbc3e
chore(android): bump detekt 1.23.8 -> 2.0.0-alpha.3 for Kotlin 2.3.21 + JDK 25
bvandeusen and Claude Opus 4.7
2026-05-22 08:11:13 -04:00
9f0a0009d7
chore(android): bump detekt 1.23.7 -> 1.23.8 for JDK 25 compat
bvandeusen and Claude Opus 4.7
2026-05-22 08:05:45 -04:00
8c51fe0bbe
fix(android): pin detekt jvm-target to 17
bvandeusen and Claude Opus 4.7
2026-05-22 07:58:07 -04:00
627810aee6
style(android): ktlint multiline-expression-wrapping on build.gradle.kts
bvandeusen and Claude Opus 4.7
2026-05-22 07:55:39 -04:00
6fb2ff2b9c
chore(android): bump Kotlin 2.2 -> 2.3 + KSP 2.0 -> 2.3 for AGP 9 built-in Kotlin
bvandeusen and Claude Opus 4.7
2026-05-21 23:04:21 -04:00
4071894217
fix(android): opt out of AGP 9 built-in Kotlin — KSP incompatible
bvandeusen and Claude Opus 4.7
2026-05-21 22:57:49 -04:00
6dae4b452f
fix(android): replace deprecated kotlinOptions with kotlin{compilerOptions}
bvandeusen and Claude Opus 4.7
2026-05-21 22:55:43 -04:00
3f9c2a8930
chore(android): bump Hilt 2.52 -> 2.59.2 for AGP 9 compat
bvandeusen and Claude Opus 4.7
2026-05-21 22:52:52 -04:00
d8989aa95c
chore(android): bump toolchain to Gradle 9.1 + AGP 9.0.1 + Kotlin 2.2.21 for JDK 25
bvandeusen and Claude Opus 4.7
2026-05-21 22:45:37 -04:00
2d990690ba
ci(android): android.yml workflow — ktlint + detekt + unit tests + release APK
bvandeusen and Claude Opus 4.7
2026-05-21 22:22:49 -04:00
f2f6fa06a2
feat(android): FabledSword theme — Material 3 + Google Fonts
bvandeusen and Claude Opus 4.7
2026-05-21 22:18:15 -04:00
a948a71fa5
feat(android): Hilt application + AppModule (Json + ApplicationScope)
bvandeusen and Claude Opus 4.7
2026-05-21 21:58:30 -04:00
34e54f29e9
feat(android): :app module skeleton — Compose Activity + manifest
bvandeusen and Claude Opus 4.7
2026-05-21 21:17:40 -04:00
41f344e85a
feat(android): bootstrap native Android module — Gradle + version catalog
bvandeusen and Claude Opus 4.7
2026-05-21 19:34:51 -04:00
747ed4134b
Merge pull request 'v2026.05.21.0 — Wear OS dispatch fix, playlist-load feedback, drift CI' (#58 ) from dev into main
v2026.05.21.0
bvandeusen
2026-05-21 15:42:06 -04:00
42bb50ed98
chore(flutter): bump version to 2026.5.21+14 for v2026.05.21.0
bvandeusen and Claude Opus 4.7
2026-05-21 15:37:20 -04:00
bf696daa5b
chore(flutter): regenerate pubspec.lock to match pubspec.yaml
bvandeusen and Claude Opus 4.7
2026-05-21 15:18:25 -04:00
031041adea
fix(player): keep MediaSession alive across idle teardown (#472 )
bvandeusen and Claude Opus 4.7
2026-05-21 14:49:52 -04:00
6df02428b0
fix(playlists): surface playlist-load failures with SnackBar feedback (#479 )
bvandeusen and Claude Opus 4.7
2026-05-21 09:16:00 -04:00
b93b116e4f
test(quarantine): skip throwing-path test pending Fable #476
bvandeusen and Claude Opus 4.7
2026-05-20 20:00:20 -04:00
26c4eb46d4
test(flutter): delete stale like_button rollback test; harden quarantine connectivity override
bvandeusen and Claude Opus 4.7
2026-05-20 19:52:24 -04:00
83a7099db3
test(flutter): stub the transitive provider deps the drift cohort needs
bvandeusen and Claude Opus 4.7
2026-05-20 19:12:23 -04:00
a9e277eb13
test(flutter): fix 6 latent failures uncovered by the drift cohort un-skip
bvandeusen and Claude Opus 4.7
2026-05-20 18:52:05 -04:00
8fb6b4fbb3
test(flutter): fix two latent failures exposed by un-skipping the drift cohort
bvandeusen and Claude Opus 4.7
2026-05-20 18:15:18 -04:00
85183c455a
test(flutter): re-enable drift tests after ci-flutter:1.26 ships libsqlite3-0
bvandeusen and Claude Opus 4.7
2026-05-20 18:02:17 -04:00
461c6bf514
fix(go): collapse struct-literal copies to type conversions (S1016)
bvandeusen and Claude Opus 4.7
2026-05-20 15:23:39 -04:00
88f2c43947
ci(go): trigger test-go.yml on .golangci.yml changes too
bvandeusen and Claude Opus 4.7
2026-05-20 15:17:38 -04:00
70529de9d3
fix(ci): golangci-lint v2 schema + Flutter 3.44 ListTile strictness
bvandeusen and Claude Opus 4.7
2026-05-20 15:10:56 -04:00
c1fb2355c4
ci: migrate to ci-runners.md (container.image consumption)
bvandeusen and Claude Opus 4.7
2026-05-20 14:24:38 -04:00
6a62120457
chore(deps): Go server bumps (x/crypto, pgx, migrate, pgerrcode)
bvandeusen and Claude Opus 4.7
2026-05-20 13:02:32 -04:00
750bc69204
chore(deps): Tier A cross-ecosystem patch/minor sweep
bvandeusen and Claude Opus 4.7
2026-05-20 12:58:24 -04:00
66caee76fd
chore(deps): drop unused cupertino_icons + tslib
bvandeusen and Claude Opus 4.7
2026-05-20 12:30:50 -04:00
ccbd3b62a0
Merge pull request 'v2026.05.19.3 — playback stall resilience + legacy home cleanup' (#56 ) from dev into main
v2026.05.19.3
bvandeusen
2026-05-19 15:48:08 -04:00
5c1a5f5e8b
chore(flutter): bump version to 2026.5.19+13 for v2026.05.19.3
bvandeusen and Claude Opus 4.7
2026-05-19 15:47:28 -04:00
bb1ab3a2e3
test(web): un-skip discover/requests route tests — mock $app (#374 )
bvandeusen and Claude Opus 4.7
2026-05-19 15:42:11 -04:00
154626ae94
feat(player): stall watchdog + bounded retry + skip-to-cached (#66 )
bvandeusen and Claude Opus 4.7
2026-05-19 14:14:25 -04:00
1646b02ca2
refactor(flutter): drop legacy home snapshot path (#406 )
bvandeusen and Claude Opus 4.7
2026-05-19 13:04:43 -04:00
19de0c2874
Merge pull request 'v2026.05.19.2 — hotfix: restore media notification (remove broken custom favorite)' (#55 ) from dev into main
v2026.05.19.2
bvandeusen
2026-05-19 07:48:10 -04:00
1dc298c111
chore(flutter): bump version to 2026.5.19+12 for v2026.05.19.2
bvandeusen and Claude Opus 4.7
2026-05-19 07:47:45 -04:00
e605335339
fix(player): remove custom favorite MediaControl — it killed the notification
bvandeusen and Claude Opus 4.7
2026-05-19 07:19:42 -04:00
22a4649bfc
Merge pull request 'v2026.05.19.1 — hotfix: notification permission + full-player auto-minimize' (#54 ) from dev into main
v2026.05.19.1
bvandeusen
2026-05-18 23:08:33 -04:00
01a1ac148e
chore(flutter): bump version to 2026.5.19+11 for v2026.05.19.1
bvandeusen and Claude Opus 4.7
2026-05-18 23:08:13 -04:00
bc34d96329
fix(player): request POST_NOTIFICATIONS; auto-minimize player on teardown
bvandeusen and Claude Opus 4.7
2026-05-18 23:03:31 -04:00
8e7660c05e
Merge pull request 'fix(ci): scope integration Postgres discovery to this job's network' (#53 ) from dev into main
bvandeusen
2026-05-18 22:50:36 -04:00
eaddb2478a
fix(ci): scope integration Postgres discovery to this job's network
bvandeusen and Claude Opus 4.7
2026-05-18 22:50:04 -04:00
53be834e89
Merge pull request 'v2026.05.19.0 — MediaSession lifecycle, Lidarr hardening, Lucide migration' (#52 ) from dev into main
v2026.05.19.0
bvandeusen
2026-05-18 21:42:48 -04:00
c681191b42
chore(flutter): bump version to 2026.5.19+10 for v2026.05.19.0
bvandeusen and Claude Opus 4.7
2026-05-18 21:42:14 -04:00
94871437dd
feat(player): resume on media-button when session torn down (#448 )
bvandeusen and Claude Opus 4.7
2026-05-18 21:31:40 -04:00
359a072937
test(playlists): playlist_card finds LucideIcons.ellipsis_vertical
bvandeusen and Claude Opus 4.7
2026-05-18 20:50:10 -04:00
835592f073
refactor(ui): Lucide migration unit 2 — Icons.* -> LucideIcons.* sweep (#60 )
bvandeusen and Claude Opus 4.7
2026-05-18 20:43:05 -04:00
84f16c25f6
feat(ui): Lucide migration unit 1 — dependency + heart (#60 )
bvandeusen and Claude Opus 4.7
2026-05-18 20:18:22 -04:00
25ee54fca0
feat(player): surface playback errors via debounced SnackBar (#58 )
bvandeusen and Claude Opus 4.7
2026-05-18 19:39:58 -04:00
c659165218
fix(player): backtick doc-comment generics (analyze --fatal-infos)
bvandeusen and Claude Opus 4.7
2026-05-18 19:00:43 -04:00
0d80a113fa
feat(player): notification favorite via MediaControl.custom (6c)
bvandeusen and Claude Opus 4.7
2026-05-18 18:37:20 -04:00
5d37616d52
feat(player): downscale + preload external cover art (8a)
bvandeusen and Claude Opus 4.7
2026-05-18 18:04:51 -04:00
77a4a55522
feat(player): periodic PlaybackState refresh for smooth external scrubber
bvandeusen and Claude Opus 4.7
2026-05-18 16:28:46 -04:00
41dd2892e3
feat(player): resume last session on launch (#54 )
bvandeusen and Claude Opus 4.7
2026-05-18 15:57:58 -04:00
c80dc0b306
fix(player): const AudioSessionConfiguration.music() (analyze --fatal-infos)
bvandeusen and Claude Opus 4.7
2026-05-18 15:47:41 -04:00
57ce3d2d0a
feat(player): audio focus, interruptions & becoming-noisy
bvandeusen and Claude Opus 4.7
2026-05-18 15:43:52 -04:00
905f05c120
feat(player): tear down MediaSession when idle/dismissed
bvandeusen and Claude Opus 4.7
2026-05-18 14:38:42 -04:00
e68e1b10a6
fix(player+lidarr): mini-player sync race; durable approve + dedup
bvandeusen and Claude Opus 4.7
2026-05-18 12:24:20 -04:00
0d410630a2
Merge pull request 'Release v2026.05.18.0 — integration-tests-in-CI + recommendations/cover-art/discover batch' (#51 ) from dev into main
v2026.05.18.0
bvandeusen
2026-05-17 22:41:20 -04:00