Commit Graph

  • 3cdb416f94 fix(android): AVTransport test assertions escape DIDL; consolidate xmlEscape bvandeusen 2026-06-03 16:47:18 -04:00
  • d62a3b8134 feat(android): AVTransport pause/seek/nextURI/positionInfo/transportInfo bvandeusen 2026-06-03 16:42:04 -04:00
  • 574bf29a7e fix(android): PlayerController transport methods dispatch to controller thread bvandeusen 2026-06-03 16:00:53 -04:00
  • 24b7c92abd fix(server+android): DIDL-Lite metadata for Sonos UPnP (error 1023) bvandeusen 2026-06-03 15:54:56 -04:00
  • 3c4c27fb08 Merge pull request 'v2026.06.03 hotfix — Sonos cast URL + UPnP picker polish' (#78) from dev into main v2026.06.03 bvandeusen 2026-06-03 15:30:09 -04:00
  • 7d15f57e86 fix(server): cast token URL honors X-Forwarded-Proto / Host bvandeusen 2026-06-03 15:17:34 -04:00
  • a9edc12523 fix(android): release-build Timber tree at WARN+ for operator diagnosis bvandeusen 2026-06-03 15:01:03 -04:00
  • 96f12d6aac fix(android): UPnP select - loud logs on every code path bvandeusen 2026-06-03 14:59:57 -04:00
  • 036da9dea8 fix(android): UPnP - clean Sonos friendlyName for picker display bvandeusen 2026-06-03 14:54:39 -04:00
  • a62a20b599 Merge pull request 'v2026.06.03 — Media3 like button + Bluetooth/UPnP picker + system playlist daily rotation' (#77) from dev into main bvandeusen 2026-06-03 14:09:23 -04:00
  • 7c11cdc4d1 fix(server): handleGetStream - auth check before DB lookup bvandeusen 2026-06-03 13:43:28 -04:00
  • c3614c6333 fix(server): errcheck violations from UPnP slice bvandeusen 2026-06-03 13:41:54 -04:00
  • 9e67088fdb fix(server): TestRoutesRegisteredInMount - missing streamSecret arg bvandeusen 2026-06-03 13:30:36 -04:00
  • 6da6cb5c5a fix(server): daily-rotate all deterministic mixes + diversity top-up fallback bvandeusen 2026-06-03 13:22:23 -04:00
  • 7473e98d91 fix(server): unify discovery-mix producers + daily-rotate the deterministic ones bvandeusen 2026-06-03 13:18:17 -04:00
  • 3df5e5cb3c fix(android): playlist like state + playlist cover URL bvandeusen 2026-06-03 13:11:55 -04:00
  • 448c9f2e74 chore(android): UPnP picker - log selectUpnp failures + drop dead fetchJob bvandeusen 2026-06-03 12:56:45 -04:00
  • 03cdff547d feat(android): UPnP picker integration (UPnP slice 6/6) bvandeusen 2026-06-03 12:52:15 -04:00
  • f8c93e013d feat(android): UPnP SOAP envelope + AVTransport client (UPnP slice 5/6) bvandeusen 2026-06-03 12:43:54 -04:00
  • 1f02813cc6 fix(android): UPnP - add kxml2 to test classpath so DeviceDescriptionTest runs bvandeusen 2026-06-03 12:02:51 -04:00
  • dc5b8252bb feat(android): UPnP SSDP discovery + device description (UPnP slice 4/6) bvandeusen 2026-06-03 12:01:00 -04:00
  • 5f3905f2c7 feat(android): UPnP picker foundation (UPnP slice 3/6) bvandeusen 2026-06-03 11:51:11 -04:00
  • e774097fd8 feat(server): POST /api/cast/stream-token + secret bootstrap (UPnP slice 2/6) bvandeusen 2026-06-03 11:46:57 -04:00
  • 236637fcd3 feat(server): HMAC stream token auth path (UPnP slice 1/6) bvandeusen 2026-06-03 11:34:02 -04:00
  • d7fe515940 fix(android): output picker CI - passive discovery + LongMethod bvandeusen 2026-06-03 10:49:32 -04:00
  • 8258b6c29f feat(android): NowPlaying output-picker integration bvandeusen 2026-06-03 10:42:30 -04:00
  • d10113db54 fix(android): output picker - add Settings icon to permission hint bvandeusen 2026-06-03 10:39:05 -04:00
  • a319e3f66d feat(android): output picker Compose UI - chip + sheet bvandeusen 2026-06-03 10:35:48 -04:00
  • 692d9dab60 feat(android): OutputPickerViewModel - sheet lifecycle + selection bvandeusen 2026-06-03 10:33:06 -04:00
  • 087486d253 feat(android): OutputPickerController - MediaRouter facade bvandeusen 2026-06-03 10:30:23 -04:00
  • 0662c9d5cc feat(android): output picker foundation - mediarouter + OutputRoute bvandeusen 2026-06-03 10:27:02 -04:00
  • e69a5204db fix(android): PlayerController.setQueue dispatches to controller thread bvandeusen 2026-06-03 09:48:38 -04:00
  • 4be7e47584 chore(android): drop redundant !! on PlaylistRef.systemVariant bvandeusen 2026-06-03 09:38:24 -04:00
  • 551bbf83c2 feat(android): wire MediaSession like button + reactive state bvandeusen 2026-06-03 09:28:37 -04:00
  • 43754d03c4 revert(android): drop LikeMediaCallback JVM tests + testOptions flag bvandeusen 2026-06-03 09:19:37 -04:00
  • 7807e31b22 fix(android): testOptions isReturnDefaultValues = true bvandeusen 2026-06-03 09:11:59 -04:00
  • 9a7cfac7f8 fix(android): LikeMediaCallback ReturnCount — extract toggle helper bvandeusen 2026-06-03 07:40:33 -04:00
  • d37ef56bb1 feat(android): LikeMediaCallback for media-session like button bvandeusen 2026-06-02 23:48:25 -04:00
  • ad7e57fe66 feat(android): scrubber thumb pill — fixes off-center perception bvandeusen 2026-06-02 22:48:40 -04:00
  • d9b2dd957c Merge pull request 'fix(android): interceptor order — auth before baseUrl (hotfix for v2026.06.02)' (#76) from dev into main v2026.06.02 bvandeusen 2026-06-02 22:07:32 -04:00
  • 94b3b87785 fix(android): interceptor order — auth before baseUrl bvandeusen 2026-06-02 21:47:53 -04:00
  • 46dcd38fd8 Merge pull request 'Drift audit 2026-06-02 — 26 findings shipped' (#75) from dev into main bvandeusen 2026-06-02 19:21:53 -04:00
  • cb2f9a2ea2 fix(server): GC test seeds tracks with file_size + file_format bvandeusen 2026-06-02 19:04:00 -04:00
  • 305d4780ac fix(server): TestGcCloseStalePlayEvents seeds artist with sort_name bvandeusen 2026-06-02 18:47:31 -04:00
  • dbcadf0f93 fix(android): drift #576 — LikesRepository uses real userId, clears on switch bvandeusen 2026-06-02 18:35:54 -04:00
  • 258bc1f75c feat(server): drift audit batch 7 — periodic GC worker for 5 lifecycle gaps bvandeusen 2026-06-02 18:32:22 -04:00
  • bda0896d82 docs(server): drift #572 — delete.go honest about missing reconcile bvandeusen 2026-06-02 18:26:45 -04:00
  • 413d729711 fix(web): drift audit batch 5 — SSR redirect + radio exclude cap bvandeusen 2026-06-02 18:25:52 -04:00
  • b970b87343 fix(server): drift #578 — /api/me returns profile shape with display_name + email bvandeusen 2026-06-02 18:24:23 -04:00
  • 5014f7548e fix: drift audit batch 3b — cold-boot resume correctness bvandeusen 2026-06-02 18:21:39 -04:00
  • b19c621743 fix: drift audit batch 3a — Android offline correctness bvandeusen 2026-06-02 18:18:59 -04:00
  • fb3116d640 fix: drift audit batch 2 — patterned fixes mirroring prior work bvandeusen 2026-06-02 18:16:29 -04:00
  • 47d2f61161 fix: drift audit batch 1 — six small mechanical wins bvandeusen 2026-06-02 18:11:25 -04:00
  • 7838038047 Merge pull request 'Playback errors slice + scrubber polish + various polish' (#74) from dev into main bvandeusen 2026-06-02 14:14:11 -04:00
  • 9f0af9c24b feat(android): CI-injected versionName with commit-count iteration bvandeusen 2026-06-02 14:07:57 -04:00
  • 76e64fd022 fix(android): close PlaybackErrorsApi kdoc — Kotlin nested-comment trap bvandeusen 2026-06-02 11:51:19 -04:00
  • 337fce83a1 fix(android): satisfy detekt — ReturnCount + LongMethod refactors bvandeusen 2026-06-02 11:45:45 -04:00
  • de61305fde feat(web): admin playback-errors inbox bvandeusen 2026-06-02 11:34:46 -04:00
  • 99e1df4920 feat(android): detect zero-duration tracks, fail fast, report to server bvandeusen 2026-06-02 11:30:35 -04:00
  • 15b59a214d feat(server): playback_errors table + admin inbox endpoints bvandeusen 2026-06-02 11:25:50 -04:00
  • 6a54d074fd revert(android): drop NowPlaying scrubber height clamp bvandeusen 2026-06-02 10:28:27 -04:00
  • d9c7aae268 feat(android): slim NowPlaying scrubber — 4dp track + tight slider bvandeusen 2026-06-02 10:24:31 -04:00
  • 5fd1a5724a fix(android): always use dominant swatch for NowPlaying background bvandeusen 2026-06-02 10:24:19 -04:00
  • 516d22fc73 feat(android): Start Radio preserves current playback, queues after bvandeusen 2026-06-02 10:09:00 -04:00
  • 1fdd785ee5 fix(android): key UiState Crossfades on state::class to stop refresh flicker bvandeusen 2026-06-02 10:07:10 -04:00
  • 9b3ec65476 feat(android): swipe to change Library tabs bvandeusen 2026-06-02 10:04:38 -04:00
  • b83a6a4bdb revert(android): top-nav Library icon back to Lucide.LibraryBig bvandeusen 2026-06-02 10:03:15 -04:00
  • b64965b38d Merge pull request 'Discover artwork + Library icon + notification tap routing' (#73) from dev into main bvandeusen 2026-06-02 09:58:10 -04:00
  • 4cd38aa62f fix(android): keep BaseUrlInterceptor.intercept under detekt ReturnCount bvandeusen 2026-06-02 09:50:05 -04:00
  • 438e81a117 feat(android): media-notification tap opens NowPlaying bvandeusen 2026-06-02 09:43:45 -04:00
  • faf2cac0c9 feat(android): use Material Outlined LibraryMusic for top-nav Library bvandeusen 2026-06-02 09:40:49 -04:00
  • 22dc343b39 feat(android): swap top-nav Library icon to Lucide.SquareLibrary bvandeusen 2026-06-02 09:35:58 -04:00
  • aec10ce787 fix(android): scope BaseUrlInterceptor to placeholder host only bvandeusen 2026-06-02 09:16:36 -04:00
  • bf2f9f3811 Merge pull request 'Lock Android MainActivity to portrait' (#72) from dev into main bvandeusen 2026-06-02 08:19:07 -04:00
  • b9186937b3 chore(android): lock MainActivity to portrait bvandeusen 2026-06-02 08:12:58 -04:00
  • deb726a285 Merge pull request 'Keep onPostScroll under detekt ReturnCount limit' (#71) from dev into main bvandeusen 2026-06-02 08:10:12 -04:00
  • 1004b61159 fix(android): keep onPostScroll under detekt ReturnCount limit bvandeusen 2026-06-02 08:04:21 -04:00
  • 7ede83a586 Merge pull request 'Alphabet rail page-chasing + Songs Like fix + scrubber polish' (#70) from dev into main bvandeusen 2026-06-01 23:36:07 -04:00
  • 6ac36dd334 fix(web): user-playlist play omits third arg to satisfy contract test bvandeusen 2026-06-01 23:31:45 -04:00
  • 6a7d9afdbc fix(android): latch NowPlaying drag-dismiss to prevent back-stack underflow bvandeusen 2026-06-01 23:29:36 -04:00
  • 15a545a25c feat(web): two-pane now-playing on desktop with permanent queue panel bvandeusen 2026-06-01 23:24:06 -04:00
  • b77a7121ca feat(android): restyle NowPlaying scrubber thumb to match web client bvandeusen 2026-06-01 22:40:35 -04:00
  • 74bae74f9f fix(web): songs-like play overlay + scrubber smoothing bvandeusen 2026-06-01 22:39:24 -04:00
  • d4c6bb3f2d feat(web): alphabet rail chases pages on click for unloaded letters bvandeusen 2026-06-01 22:29:13 -04:00
  • 1d7b91333f Merge pull request 'Web Library: alphabet rail always shows #/A-Z/&' (#69) from dev into main v2026.06.01 bvandeusen 2026-06-01 21:55:49 -04:00
  • ad1a000ad5 feat(web): alphabet rail always shows #/A-Z/& with disabled empty buckets bvandeusen 2026-06-01 21:47:10 -04:00
  • 883d416d26 Merge pull request 'Web Library: continuous grid + sticky alphabet rail' (#68) from dev into main bvandeusen 2026-06-01 21:36:55 -04:00
  • 93aa37c7b6 feat(web): Library — continuous grid + sticky alphabet rail bvandeusen 2026-06-01 21:23:23 -04:00
  • 09471a8f5c Merge pull request 'Web: Most Played horizontal tiles + nav centering + Library link + Search refinements' (#67) from dev into main bvandeusen 2026-06-01 21:06:03 -04:00
  • 185b8fa9b5 test(web): Shell Library link asserts /library/artists bvandeusen 2026-06-01 21:00:07 -04:00
  • 27f1cefd55 fix(web): center nav in window + Library link + Search placeholder bvandeusen 2026-06-01 20:58:05 -04:00
  • c0d5d6aebf feat(web): Most Played horizontal compact tiles + revert Rediscover bvandeusen 2026-06-01 20:55:54 -04:00
  • 7de238e91e Merge pull request 'Web Home: drop hero row + compact Rediscover tiles' (#66) from dev into main bvandeusen 2026-06-01 20:43:53 -04:00
  • d43719516e feat(web): drop hero row + compact Rediscover tiles bvandeusen 2026-06-01 20:34:21 -04:00
  • 9440c5860b Merge pull request 'Android v1 polish + Web UI flavor pass' (#65) from dev into main bvandeusen 2026-06-01 20:17:49 -04:00
  • 682d7a5ec4 test(web): scope home For-You assertions to Playlists section bvandeusen 2026-06-01 20:12:59 -04:00
  • 17b276b5f5 feat(web): hero row at top of Home (For You + most recently added) bvandeusen 2026-06-01 20:10:47 -04:00
  • 5f297c4c21 feat(web): dominant-color accent strip on PlayerBar + bigger Home tiles bvandeusen 2026-06-01 20:03:48 -04:00
  • 5b25f89c01 test(web): update AlbumCard test for dropped year line bvandeusen 2026-06-01 19:59:40 -04:00
  • a92f2c0121 feat(web): radial gradient + playlist title overlay + tile-size hierarchy bvandeusen 2026-06-01 19:57:05 -04:00