release / web (push) Successful in 1m40s
release / go (push) Successful in 2m5s
release / govulncheck (push) Successful in 19s
release / integration (push) Successful in 5m2s
release / android (push) Successful in 4m40s
release / Build signed APK (push) Successful in 5m7s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 32s
release / Verify release artifacts (tag releases only) (push) Skipped
Within a genre both halves of the mix were a uniform daily draw: a song played forty times was no likelier than one played once, and the unheard 40% ignored who the artist was. ListGenreMixTracks now draws each half by a date-seeded weighted lottery (Efraimidis-Spirakis: smallest -ln(u)/weight wins), so the mix still changes daily and holds within a day. - Familiar: 1 + ln(1 + plays) + 1 if liked, times the share of plays that weren't skips. - Unheard: 1 + ln(1 + the artist's plays + 2 x its liked tracks) + 2 x the artist's best similarity to the user's own artists, times the artist's non-skip share. An unknown artist weighs 1, so new artists still come up. Which genres are offered, the exclusions and the familiar/unheard blend are unchanged. DB tests check the lean averaged over ten days, and that a stranger's tracks stay in the pool. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>