From ec4ca4b7c089f9b6a007463abe7cd2054b8d7b47 Mon Sep 17 00:00:00 2001 From: tinqs-limited Date: Sun, 7 Jun 2026 16:28:19 +0100 Subject: [PATCH] Raise daily generation limit to 100 and fix limit UI coercion. 0 was misread as zero allowed on older servers; player no longer falls back to 10 when saving limits. Co-authored-by: Cursor --- gateway/player.html | 13 +++++++++---- settings.json | 2 +- src/ozan_radio/server.py | 5 ++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/gateway/player.html b/gateway/player.html index 1927765..94208e3 100644 --- a/gateway/player.html +++ b/gateway/player.html @@ -590,7 +590,7 @@ Max new songs / day Hard cap on Lyria generations - +
Lyria 3 (from API)
Checking Gemini / Lyria…
@@ -1052,7 +1052,8 @@ new_song_chance: data.playback?.new_song_chance, }); if (data.budget) { - setMaxPerDay.value = data.budget.max_per_day || 10; + const cap = data.limits?.max_new_songs_per_day ?? data.budget?.max_per_day; + setMaxPerDay.value = cap === undefined || cap === null ? 100 : cap; } if (data.lyria) syncLyriaUI(data.lyria); updateModeBadge(); @@ -1074,7 +1075,10 @@ new_song_chance: setChance.value / 100, }, limits: { - max_new_songs_per_day: parseInt(setMaxPerDay.value, 10) || 10, + max_new_songs_per_day: (() => { + const n = parseInt(setMaxPerDay.value, 10); + return Number.isFinite(n) && n >= 0 ? n : 100; + })(), }, lyria: { model: setLyriaModel.value, @@ -1098,7 +1102,8 @@ statRemaining.textContent = `${data.budget.remaining ?? 0} remaining`; } const perTrack = data.costs?.per_track_estimate_usd || 0.082; - statMaxBudget.textContent = fmtUsd(perTrack * (data.limits?.max_new_songs_per_day || 10)); + const cap = data.limits?.max_new_songs_per_day ?? 100; + statMaxBudget.textContent = cap <= 0 ? '∞' : fmtUsd(perTrack * cap); } catch (_) {} savingSettings = false; } diff --git a/settings.json b/settings.json index 39de4ef..1fddaf6 100644 --- a/settings.json +++ b/settings.json @@ -69,7 +69,7 @@ "new_song_chance": 0.35 }, "limits": { - "max_new_songs_per_day": 0 + "max_new_songs_per_day": 100 }, "costs": { "lyria_pro_usd": 0.08, diff --git a/src/ozan_radio/server.py b/src/ozan_radio/server.py index 70dcc5b..24c1b4f 100644 --- a/src/ozan_radio/server.py +++ b/src/ozan_radio/server.py @@ -87,7 +87,10 @@ def _dashboard_stats(cfg: Config) -> dict: "today": budget, "costs": rs.costs.__dict__ | {"per_track_estimate_usd": per_track}, "playback": rs.playback.__dict__, - "projected_daily_max_usd": round(per_track * rs.limits.max_new_songs_per_day, 2), + "projected_daily_max_usd": ( + 0 if rs.limits.max_new_songs_per_day <= 0 + else round(per_track * rs.limits.max_new_songs_per_day, 2) + ), "generation": dict(_generation_state), }