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),
}