feat: M3 weighted shuffle v1 — real /api/radio with scoring #21

Merged
bvandeusen merged 262 commits from dev into main 2026-04-27 11:00:29 -04:00
Showing only changes of commit d20fab5459 - Show all commits
@@ -46,16 +46,14 @@ fun isVersionNewer(server: String, installed: String): Boolean {
val n = maxOf(svr.size, ins.size)
val svrPadded = svr + List(n - svr.size) { 0 }
val insPadded = ins + List(n - ins.size) { 0 }
return compareComponentWise(svrPadded, insPadded, n)
return compareComponentWise(svrPadded, insPadded)
}
private fun parseVersion(v: String): List<Int> =
v.removePrefix("v").split('.').map { it.toIntOrNull() ?: 0 }
private fun compareComponentWise(svr: List<Int>, ins: List<Int>, n: Int): Boolean {
for (i in 0 until n) {
if (svr[i] > ins[i]) return true
if (svr[i] < ins[i]) return false
}
return false
}
private fun compareComponentWise(svr: List<Int>, ins: List<Int>): Boolean =
svr.zip(ins)
.firstOrNull { (a, b) -> a != b }
?.let { (a, b) -> a > b }
?: false