-
v2026.09.11.0329
Stabletest-web / test (push) Successful in 1m5stest-go / test (push) Successful in 1m33stest-go / integration (push) Successful in 4m25sandroid / Build + lint + test (push) Successful in 5m33srelease / Build signed APK (releases and dev) (push) Successful in 4m38srelease / Build + push container image (push) Successful in 16srelease / Verify release artifacts (tag releases only) (push) Successful in 2sreleased this
2026-09-10 23:44:15 -04:00 | 0 commits to main since this releaseRecommendations that stay where you put them, a rollback unit, and a version that names what shipped.
Your mixes should feel tighter
"Songs like X" stopped wandering. It shared a scoring profile with For You, and those two want opposite things — For You roams by design, Songs-like should not. Under the shared weights, an unrelated track you'd liked and hadn't played recently outranked a perfect similarity match you hadn't liked. Liking something beat sounding like the seed.
It now has its own profile where similarity outweighs everything not related to the seed. The same pair that scored 2.50 against 5.50 now scores 5.00 against 2.00.
Songs-like can include the seed artist's own music. It used to filter it out, which threw away the tracks most likely to sound like the seed and then reached further away to replace them. It's bounded at 3 of 25 by the diversity cap rather than excluded.
Radio no longer collapses onto one artist. There was no per-artist cap in the radio path at all, while every comparable surface had one. The caps scale with the length you ask for, and they change which tracks are picked rather than how many — a radio never comes back short because the cap couldn't be satisfied.
The candidate pool scales with your library. It was a fixed ~170 candidates whether you had 500 tracks or 100,000, so it sampled a shrinking fraction of a growing collection. It now grows with the library, per-arm, bounded.
These are starting values rather than measured ones. Everything above is adjustable in Admin → Tuning with no restart; if Songs-like now feels too narrow, lower its Similarity weight.
Image tags changed — read this if you pin one
:latest production; tracks main's tip :<commit-sha> NEW — immutable, the rollback unit :dev the rolling test channel:vYYYY.MM.DD.HHMMand:mainare no longer published. Existing version-tagged images still work and are untouched; they simply aren't extended. If you pinned one, move to a:<commit-sha>— everymainpush publishes one now, so any production commit is addressable without waiting for a release.Rolling back to
:<commit-sha>pins the server, not the server-and-app pair: the Android APK is baked in at image build time, so a SHA image carries whichever app was current then.Also
- A release tag now names the last commit that actually shipped something — a CI-only or docs-only commit no longer moves the version.
- The build context shrank by half (42.7 MB → 21.8 MB);
.dockerignorehad been excluding CI directories this repo doesn't have while missing the one it does. - Two Moe Shop files in
WWW (2020)are the same audio under different tags — a library-content issue, not a player one, if you'd noticed something odd there.
Upgrading
Nothing to do. Migration 0057 runs at startup. System mixes rebuild on their next daily cycle, so the tuning above takes effect then rather than instantly.
🤖 Generated with Claude Code
Downloads