bvandeusen and Claude Opus 5.5
dbaa8b7d57
release / web (push) Successful in 1m24s
release / go (push) Successful in 1m47s
release / govulncheck (push) Successful in 25s
release / integration (push) Failing after 4m38s
release / android (push) Successful in 4m3s
release / Build signed APK (push) Successful in 4m34s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Skipped
release / Verify release artifacts (tag releases only) (push) Skipped
feat: genre mixes — a daily playlist per genre you listen to, on a "Your genres" Home row ( #6904 )
...
A new system playlist kind, genre_mix: up to 10 "{Genre} mix" playlists per
user, rebuilt daily with the other system mixes.
Which genres: library genres with at least 25 playable tracks across 3
artists, ranked in tiers — taste-profile genres first (matched
case-insensitively, so ID3 "Post-Punk" and folksonomy "post-punk" are one),
then genres the user has played or liked, then the rest of the library, which
only tops a short shelf up to 4. A genre whose artist set is a near
duplicate of one already picked (Jaccard >= 0.5) is skipped, so "Lo-Fi" and
"Lo-Fi Hip Hop" don't both appear but "Alternative Rock" survives "Rock". A
genre that can't fill 15 tracks gives way to the next.
Each mix is 50 tracks: 3 in 5 the user already knows (played through or
liked), the rest unheard in that genre, interleaved, with the usual
per-album/per-artist caps. Tracks skipped twice and more often than played
are left out. The order changes daily and holds within a day. Picks are
stamped taste / taste_unheard, and genre_mix plays count toward rotation and
the recommendation metrics.
Migration 0102 adds genre_mix to the playlists variant constraints.
Web and Android each get a "Your genres" row in name order, hidden until a
mix exists. Kinds with several playlists per user now play by playlist id
wherever the client used to test seed_artist_id (web card, detail page
self-heal), keyed on the server's refreshable flag; on Android genre_mix
joins songs_like_artist as not refreshable. The web detail page's
"mix was rebuilt" reload now finds a Songs-like or genre mix by name instead
of calling the by-kind shuffle, which those kinds don't have.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-05 22:30:41 -05:00
..
2026-04-19 01:12:39 +00:00
2026-04-19 01:12:37 +00:00
2026-04-19 02:31:23 +00:00
2026-10-23 12:34:39 -04:00
2026-04-19 17:37:12 +00:00
2026-04-19 17:37:11 +00:00
2026-04-20 19:37:26 -04:00
2026-10-23 12:34:39 -04:00
2026-04-25 20:45:44 -04:00
2026-10-23 12:34:39 -04:00
2026-04-26 16:20:08 -04:00
2026-10-23 12:34:39 -04:00
2026-04-27 11:13:31 -04:00
2026-10-23 12:34:39 -04:00
2026-04-28 08:40:39 -04:00
2026-10-23 12:34:39 -04:00
2026-04-28 19:57:02 -04:00
2026-10-23 12:34:39 -04:00
2026-04-29 15:10:01 -04:00
2026-10-23 12:34:39 -04:00
2026-04-30 16:54:03 -04:00
2026-10-23 12:34:39 -04:00
2026-05-01 05:50:22 -04:00
2026-10-23 12:34:39 -04:00
2026-05-02 00:09:13 -04:00
2026-10-23 12:34:39 -04:00
2026-05-03 10:03:36 -04:00
2026-10-23 12:34:39 -04:00
2026-05-04 08:03:06 -04:00
2026-10-23 12:34:39 -04:00
2026-05-04 14:29:13 -04:00
2026-10-23 12:34:39 -04:00
2026-05-04 20:04:04 -04:00
2026-10-23 12:34:39 -04:00
2026-05-06 12:24:36 -04:00
2026-10-23 12:34:39 -04:00
2026-05-06 22:12:27 -04:00
2026-10-23 12:34:39 -04:00
2026-05-07 07:39:02 -04:00
2026-10-23 12:34:39 -04:00
2026-05-07 08:31:17 -04:00
2026-05-07 08:31:17 -04:00
2026-05-07 11:51:00 -04:00
2026-10-23 12:34:39 -04:00
2026-05-07 12:12:18 -04:00
2026-10-23 12:34:39 -04:00
2026-05-07 12:34:44 -04:00
2026-05-07 12:34:44 -04:00
2026-05-09 22:28:26 -04:00
2026-10-23 12:34:39 -04:00
2026-05-13 11:54:45 -04:00
2026-10-23 12:34:39 -04:00
2026-05-15 07:40:17 -04:00
2026-10-23 12:34:39 -04:00
2026-05-15 23:39:21 -04:00
2026-10-23 12:34:39 -04:00
2026-05-16 13:49:38 -04:00
2026-05-16 13:49:38 -04:00
2026-05-17 20:22:30 -04:00
2026-10-23 12:34:39 -04:00
2026-05-18 12:24:20 -04:00
2026-10-23 12:34:39 -04:00
2026-06-02 11:25:50 -04:00
2026-10-23 12:34:39 -04:00
2026-06-06 21:50:08 -04:00
2026-10-23 12:34:39 -04:00
2026-06-11 19:33:46 -04:00
2026-10-23 12:34:39 -04:00
2026-06-11 20:55:14 -04:00
2026-10-23 12:34:39 -04:00
2026-06-29 18:38:56 -04:00
2026-10-23 12:34:39 -04:00
2026-06-30 16:33:01 -04:00
2026-10-23 12:34:39 -04:00
2026-07-02 20:39:41 -04:00
2026-10-23 12:34:39 -04:00
2026-07-02 23:26:52 -04:00
2026-10-23 12:34:39 -04:00
2026-07-03 09:22:03 -04:00
2026-10-23 12:34:39 -04:00
2026-07-13 18:16:04 -04:00
2026-10-23 12:34:39 -04:00
2026-07-13 18:46:49 -04:00
2026-10-23 12:34:39 -04:00
2026-07-13 21:43:58 -04:00
2026-10-23 12:34:39 -04:00
2026-07-14 07:51:36 -04:00
2026-10-23 12:34:39 -04:00
2026-07-14 09:01:00 -04:00
2026-10-23 12:34:39 -04:00
2026-07-14 09:31:43 -04:00
2026-10-23 12:34:39 -04:00
2026-07-14 10:32:41 -04:00
2026-10-23 12:34:39 -04:00
2026-07-14 12:47:59 -04:00
2026-10-23 12:34:39 -04:00
2026-08-01 22:51:51 -04:00
2026-10-23 12:34:39 -04:00
2026-08-02 20:04:15 -04:00
2026-10-23 12:34:39 -04:00
2026-08-02 20:31:12 -04:00
2026-10-23 12:34:39 -04:00
2026-08-05 09:17:40 -04:00
2026-10-23 12:34:39 -04:00
2026-08-05 10:07:43 -04:00
2026-10-23 12:34:39 -04:00
2026-08-05 21:17:59 -04:00
2026-10-23 12:34:39 -04:00
2026-08-06 14:34:53 -04:00
2026-10-23 12:34:39 -04:00
2026-08-16 23:53:21 -04:00
2026-10-23 12:34:39 -04:00
2026-09-10 20:51:15 -04:00
2026-10-23 12:34:39 -04:00
2026-09-11 13:21:15 -04:00
2026-10-23 12:34:39 -04:00
2026-09-11 17:00:07 -04:00
2026-10-23 12:34:39 -04:00
2026-09-11 17:11:11 -04:00
2026-10-23 12:34:39 -04:00
2026-09-11 17:53:55 -04:00
2026-10-23 12:34:39 -04:00
2026-10-06 09:32:10 -04:00
2026-10-23 12:34:39 -04:00
2026-10-06 09:42:35 -04:00
2026-10-23 12:34:39 -04:00
2026-10-06 10:54:30 -04:00
2026-10-23 12:34:39 -04:00
2026-10-06 13:01:01 -04:00
2026-10-23 12:34:39 -04:00
2026-10-06 13:27:02 -04:00
2026-10-23 12:34:39 -04:00
2026-10-06 14:29:40 -04:00
2026-10-23 12:34:39 -04:00
2026-10-06 19:31:07 -04:00
2026-10-23 12:34:39 -04:00
2026-10-06 23:26:03 -04:00
2026-10-23 12:34:39 -04:00
2026-10-07 11:33:26 -04:00
2026-10-23 12:34:39 -04:00
2026-10-07 14:55:32 -04:00
2026-10-23 12:34:39 -04:00
2026-10-07 19:56:22 -04:00
2026-10-23 12:34:39 -04:00
2026-10-08 07:06:39 -04:00
2026-10-23 12:34:39 -04:00
2026-10-08 07:48:22 -04:00
2026-10-23 12:34:39 -04:00
2026-10-08 21:49:37 -04:00
2026-10-23 12:34:39 -04:00
2026-10-08 22:07:55 -04:00
2026-10-23 12:34:39 -04:00
2026-10-08 22:13:37 -04:00
2026-10-23 12:34:39 -04:00
2026-10-09 20:12:49 -04:00
2026-10-23 12:34:39 -04:00
2026-10-09 20:34:51 -04:00
2026-10-23 12:34:39 -04:00
2026-10-09 21:08:22 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 00:46:22 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 08:56:47 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 10:36:21 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 15:27:22 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 16:13:46 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 17:16:05 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 17:29:42 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 17:44:06 -04:00
2026-10-23 12:34:39 -04:00
2026-10-10 22:12:30 -04:00
2026-10-23 12:34:39 -04:00
2026-10-11 12:24:59 -04:00
2026-10-23 12:34:39 -04:00
2026-10-11 13:48:20 -04:00
2026-10-23 12:34:39 -04:00
2026-10-11 14:51:41 -04:00
2026-10-23 12:34:39 -04:00
2026-10-19 20:37:03 -04:00
2026-10-23 12:34:39 -04:00
2026-10-19 23:22:38 -04:00
2026-10-23 12:34:39 -04:00
2026-10-20 11:55:23 -04:00
2026-10-23 12:34:39 -04:00
2026-10-21 10:56:26 -04:00
2026-10-23 12:34:39 -04:00
2026-10-21 11:01:23 -04:00
2026-10-23 12:34:39 -04:00
2026-10-21 11:31:57 -04:00
2026-10-23 12:34:39 -04:00
2026-11-02 14:50:55 -05:00
2026-11-02 14:50:55 -05:00
2026-11-02 15:26:20 -05:00
2026-11-02 15:26:20 -05:00
2026-11-02 22:07:42 -05:00
2026-11-02 22:07:42 -05:00
2026-11-05 22:30:41 -05:00
2026-11-05 22:30:41 -05:00