Commit Graph

  • c9afd4f584 feat(web): card hover-reveal + drop year + accent rule on section headers bvandeusen 2026-06-01 19:54:16 -04:00
  • d99de1af27 feat(android): Recently Added → single LazyHorizontalGrid (#77) bvandeusen 2026-06-01 19:30:17 -04:00
  • 8ecb2cf553 feat(android): MiniPlayer fill bar + slim NowPlaying scrubber + smooth playhead bvandeusen 2026-06-01 19:27:17 -04:00
  • c23df8d8af fix(android): stop Home Crossfade firing on every section emission (#1) bvandeusen 2026-06-01 19:17:11 -04:00
  • 3d52f271a0 fix(android): collapse onPostScroll branches (detekt ReturnCount) bvandeusen 2026-06-01 19:14:39 -04:00
  • 2b9b4c1db6 fix(android): NowPlaying drag-down dismiss via NestedScroll (#2) bvandeusen 2026-06-01 19:09:59 -04:00
  • 5366cd5634 fix(android): merge AudioPrefetcher continue guards (detekt LoopWithTooManyJumpStatements) bvandeusen 2026-06-01 19:07:43 -04:00
  • 8df41c3bed feat(android): AudioPrefetcher pre-downloads next-N tracks into SimpleCache bvandeusen 2026-06-01 19:02:27 -04:00
  • 082d31bfa9 Merge pull request 'ci: chain APK build → image build via needs (fix race, kill polling)' (#64) from dev into main bvandeusen 2026-06-01 18:31:12 -04:00
  • 31ad650329 ci: chain APK build → image build via needs (fix race) bvandeusen 2026-06-01 18:30:53 -04:00
  • 8847b43d9e Merge pull request 'ci(android): make APK attach failures visible (debug v2026.06.01 missing asset)' (#63) from dev into main bvandeusen 2026-06-01 18:13:43 -04:00
  • 734275f05b ci(android): make APK attach failures visible (set -euxo + HTTP code) bvandeusen 2026-06-01 18:13:25 -04:00
  • 09cc810e5a Merge pull request 'ci: pin upload-artifact to v3 (Gitea GHES-mode incompatible with v4)' (#62) from dev into main bvandeusen 2026-06-01 17:38:24 -04:00
  • be3436b931 ci: pin upload-artifact to v3 (Gitea GHES-mode incompatible with v4) bvandeusen 2026-06-01 17:34:09 -04:00
  • 2534384ed1 Merge pull request 'fix(android): remove WorkManager auto-initializer (lintVitalRelease)' (#61) from dev into main bvandeusen 2026-06-01 16:55:52 -04:00
  • f080afc38c fix(android): remove WorkManager auto-initializer (lintVitalRelease) bvandeusen 2026-06-01 16:55:29 -04:00
  • 9ff1b30e3f Merge pull request 'fix(docker): bump builder to go 1.25 to match go.mod' (#60) from dev into main bvandeusen 2026-06-01 16:13:43 -04:00
  • 3bcc7f3eb3 fix(docker): bump builder from go 1.23 to 1.25 (matches go.mod) bvandeusen 2026-06-01 16:13:20 -04:00
  • c01853577b Merge pull request 'Release: web UX overhaul + Android native port + server polish' (#59) from dev into main bvandeusen 2026-06-01 16:11:21 -04:00
  • 90bfcaa388 ci: drop pull_request triggers + add cancel-in-progress concurrency bvandeusen 2026-06-01 14:39:09 -04:00
  • 8db488b8ab ci: switch tag scheme to per-day mutable vYYYY.MM.DD bvandeusen 2026-06-01 14:35:02 -04:00
  • 906eb80ce5 ci: publish :latest from main + native APK as minstrel-<tag>.apk bvandeusen 2026-06-01 14:30:07 -04:00
  • c466e6c317 feat(web): crossfade between tracks (Tier C11) bvandeusen 2026-06-01 14:22:30 -04:00
  • 9fc21d217a feat(web): keyboard reorder on playlist tracks (Tier C10) bvandeusen 2026-06-01 14:16:27 -04:00
  • cc81e0f183 feat(web): copy-link button on owned public playlists (Tier C12) bvandeusen 2026-06-01 14:13:05 -04:00
  • 859aff8d30 feat(web): smart empty-states with action affordances (Tier B6) bvandeusen 2026-06-01 13:53:38 -04:00
  • be7be6f617 feat(web): quick-filter on Library tabs (Tier B5) bvandeusen 2026-06-01 13:48:05 -04:00
  • fd12a145c8 feat(web): multi-select + bulk actions on track lists (Tier A3) bvandeusen 2026-06-01 11:41:29 -04:00
  • bbc1036f77 fix(web): update PlayerBar test for /now-playing cover link bvandeusen 2026-06-01 11:32:46 -04:00
  • a2466b7d9a feat(web): full-screen NowPlaying view bvandeusen 2026-06-01 11:30:07 -04:00
  • 5393174a27 feat(web): surface secondary system playlists on Home bvandeusen 2026-06-01 11:25:25 -04:00
  • e5c82c56c6 fix(web): align shortcut tests with the actual playQueue state bvandeusen 2026-06-01 11:21:35 -04:00
  • 4362233d7c feat(web): global keyboard shortcuts (Space/J/L/M/Arrows//) bvandeusen 2026-06-01 11:17:59 -04:00
  • 6e6fbc7856 feat(web): top-bar centered nav + Library tab page (replace sidebar) bvandeusen 2026-06-01 10:07:02 -04:00
  • 9dc707f1c8 fix(web): pagehide reads player.position directly + drop brittle duration assertion bvandeusen 2026-06-01 08:46:07 -04:00
  • ad8b0407c6 fix(web): use FileReader to decode beacon Blob in events test bvandeusen 2026-06-01 08:41:45 -04:00
  • d0265dff6a feat(web): backflow play-event server-side classification bvandeusen 2026-06-01 08:38:54 -04:00
  • d82e744d87 feat(android): move skip classification from client to server bvandeusen 2026-06-01 08:32:05 -04:00
  • eb4537c013 fix(android): drop unused navController from ShellScaffold bvandeusen 2026-06-01 08:17:24 -04:00
  • 487400fab6 fix(android): share playlist play conversion + filter unplayable rows bvandeusen 2026-06-01 08:15:29 -04:00
  • 5c2011e6f4 fix(android): remove kebab from MiniPlayer to free space for artist line bvandeusen 2026-06-01 08:07:48 -04:00
  • ef8374753a feat(android): denser Most Played tiles - horizontal row matching Flutter bvandeusen 2026-06-01 08:00:47 -04:00
  • 7b619152ab fix(android): periodic position polling for smooth seek bar bvandeusen 2026-06-01 02:21:52 -04:00
  • 5b050022f1 feat(android): filled heart for liked state, outlined for unliked bvandeusen 2026-06-01 02:10:21 -04:00
  • 25c5b80add fix(android): populate streamUrl in CachedTrackEntity to domain mapper bvandeusen 2026-06-01 01:55:18 -04:00
  • 1fdc5b0a1f fix(android): import Arrangement in HomeScreen for Most Played grid bvandeusen 2026-06-01 01:43:32 -04:00
  • 582137790d feat(android): Most Played to 3-row dense layout matching web bvandeusen 2026-06-01 01:38:10 -04:00
  • 54903c4760 fix(recommendation): drop user_id from Rediscover daily hash to preserve sqlc type inference bvandeusen 2026-06-01 01:03:45 -04:00
  • 8b586c2e50 feat(recommendation): rework Rediscover - track-derived eligibility + daily rotation + caps bvandeusen 2026-06-01 00:57:40 -04:00
  • bf61d6cfa3 feat(android): surface secondary system playlists on Home + drop dead todays_mix label bvandeusen 2026-06-01 00:39:51 -04:00
  • 741ce1fa07 fix(android): extract PlaylistCardCover to clear detekt LongMethod bvandeusen 2026-05-31 23:51:59 -04:00
  • f17610ecd5 feat(android): port play-button overlay to Home tiles bvandeusen 2026-05-31 23:45:48 -04:00
  • 5a502c12c9 chore: untrack CLAUDE.md, gitignore AI-tool instruction files bvandeusen 2026-05-31 23:31:48 -04:00
  • f482d0d2fa ci(android): switch upload-artifact to actions/v4 + retire flutter.yml bvandeusen 2026-05-31 23:18:31 -04:00
  • 3cf829752b chore(ci): migrate workflows to gitea + consolidate keystore secret bvandeusen 2026-05-31 23:05:03 -04:00
  • 96caac2f06 fix(android): suppress MatchingDeclarationName on PlaylistsListScreen (VM colocated) bvandeusen 2026-05-30 22:59:50 -04:00
  • fa90d6d6c5 refactor(android): extract asCacheFirstStateFlow helper (DRY 3d) bvandeusen 2026-05-30 22:56:22 -04:00
  • 453f8a387b fix(android): remove duplicate TrackActions snackbar wiring (DRY 3c) bvandeusen 2026-05-30 22:38:48 -04:00
  • 02a6c45958 refactor(android): extract MinstrelTopAppBar (DRY 3b) bvandeusen 2026-05-30 16:00:21 -04:00
  • 2b17a4ed69 fix(android): AddToPlaylist routes empty list through UiState.Empty bvandeusen 2026-05-30 14:29:50 -04:00
  • a52fdc7d5d fix(android): rename LibraryUiState.kt to LibraryData.kt (detekt MatchingDeclarationName) bvandeusen 2026-05-30 14:06:21 -04:00
  • 810e3126c2 refactor(android): migrate 8 per-screen UiStates to shared UiState<T> bvandeusen 2026-05-30 14:03:39 -04:00
  • 587baf4a79 refactor(android): add generic shared/UiState<T> sealed type bvandeusen 2026-05-30 11:33:42 -04:00
  • 730176b1ed fix(android): restore Alignment import in ArtistCard (Column horizontalAlignment) bvandeusen 2026-05-30 10:50:52 -04:00
  • b71f9c239e fix(android): NowPlaying action row above the scrubber for Flutter parity bvandeusen 2026-05-30 02:32:25 -04:00
  • ee6305f525 refactor(android): extract shared CoverTile from Album/Artist/Playlist cards bvandeusen 2026-05-30 02:31:32 -04:00
  • 37887107ee fix(android): pin Slider inactiveTrackColor to surfaceVariant (parity) bvandeusen 2026-05-30 02:31:16 -04:00
  • 5c7e659116 refactor(android): hoist resolveServerImageUrl to shared/ServerUrls.kt as resolveServerUrl bvandeusen 2026-05-30 01:09:07 -04:00
  • c720dff310 fix(android): resolve relative stream_url before handing to Media3 bvandeusen 2026-05-30 00:59:07 -04:00
  • 6967d62c09 fix(android): reconcile playlist cache to prune stale system-playlist UUIDs bvandeusen 2026-05-30 00:02:20 -04:00
  • 7bed0c226b refactor(android): migrate AlbumDetail TrackRow to shared TrackRow bvandeusen 2026-05-29 22:48:06 -04:00
  • 6582d7699e refactor(android): migrate History/Liked/Search/Playlist rows to shared TrackRow bvandeusen 2026-05-29 22:44:09 -04:00
  • bbd483603d refactor(android): add shared slot-based TrackRow bvandeusen 2026-05-29 21:40:38 -04:00
  • dfb7245db8 refactor(android): route remaining covers (TrackCoverThumb, mini, now-playing) through ServerImage bvandeusen 2026-05-29 21:36:41 -04:00
  • 3e35127284 refactor(android): use shared formatDuration + ms/sec conversions bvandeusen 2026-05-29 15:46:56 -04:00
  • cf0ccd1f90 refactor(android): route all cover getters through albumCoverPath bvandeusen 2026-05-29 15:33:32 -04:00
  • 0741ba31b3 refactor(android): add shared albumCoverPath cover-URL builder bvandeusen 2026-05-29 14:39:31 -04:00
  • 4015fb145d refactor(android): add shared formatDuration + ms/sec conversion helpers bvandeusen 2026-05-29 14:38:52 -04:00
  • d7dda2fcef fix(android): derive artist tile cover from first cached album bvandeusen 2026-05-29 12:35:09 -04:00
  • 1b243347cb fix(android): resolve relative server cover URLs via shared ServerImage bvandeusen 2026-05-29 12:30:21 -04:00
  • 85af93c63f fix(android): place shell banners below the status bar bvandeusen 2026-05-29 12:11:19 -04:00
  • 01b05f37c3 feat(android): per-tile skeleton reveal on Home via reactive section flows bvandeusen 2026-05-28 19:42:09 -04:00
  • 4eb225914c feat(android): add HomeArtistPrewarmer (top-8 artists, session-deduped) bvandeusen 2026-05-28 18:58:29 -04:00
  • b2512fff4b feat(android): bound MetadataProvider on-miss fetches to 4 concurrent bvandeusen 2026-05-28 18:26:13 -04:00
  • 5b5bff767a feat(android): add HomeTile model for per-tile hydration bvandeusen 2026-05-28 18:12:57 -04:00
  • 68891f1df9 fix(android): hold previous NowPlaying gradient color across track change bvandeusen 2026-05-28 15:12:33 -04:00
  • 61cf07a3cf feat(android): soft "update available" shell banner (#25) bvandeusen 2026-05-28 14:15:59 -04:00
  • 1ef5cd5b7a feat(android): swipe-up-to-expand gesture on MiniPlayer (#34) bvandeusen 2026-05-28 13:33:43 -04:00
  • fbd6264037 feat(android): offline pools filter to cache-resident tracks (#38 slice 3) bvandeusen 2026-05-28 13:17:12 -04:00
  • 5e18d506fe fix(android): correct Lucide icon name CircleCheckBig (#38 slice 2) bvandeusen 2026-05-28 13:11:08 -04:00
  • 4713793900 feat(android): cached-indicator dot on track rows (#38 slice 2) bvandeusen 2026-05-28 13:03:03 -04:00
  • 7024549e35 feat(android): populate audio_cache_index from playback (#38 slice 1) bvandeusen 2026-05-28 12:47:10 -04:00
  • ffc2acc010 feat(android): Hidden tab cache-first via Room + Flow (SWR) — responsiveness bvandeusen 2026-05-28 11:14:28 -04:00
  • 4dc80047b2 feat(android): History tab cache-first via Room + Flow (SWR) — responsiveness bvandeusen 2026-05-28 10:33:29 -04:00
  • 14330e99da fix(android): provide AudioCacheIndexDao to Hilt graph bvandeusen 2026-05-28 10:20:07 -04:00
  • 942d7e88cc docs: refine porting rule — exact on behavior+feel, idiomatic on implementation bvandeusen 2026-05-28 08:23:29 -04:00
  • a37fe4c167 feat(android): ArtistDetail avatar falls back to first album cover (parity map) bvandeusen 2026-05-28 08:21:58 -04:00
  • 851d5f92bb feat(android): HiddenTab live-refreshes on quarantine.* SSE (parity map) bvandeusen 2026-05-28 08:19:31 -04:00
  • 903a7961e3 feat(android): "Change server URL" link on Login (parity map: Auth) bvandeusen 2026-05-28 08:15:44 -04:00
  • f62e72b2f2 docs: add CLAUDE.md with the Flutter→Android porting discipline bvandeusen 2026-05-28 08:12:23 -04:00