Upload folder using huggingface_hub
Browse files- static/css/radio.css +12 -9
- static/js/radio.js +1 -4
static/css/radio.css
CHANGED
|
@@ -1105,18 +1105,21 @@ body {
|
|
| 1105 |
/* A blinking pointer at the MODE switch on power-on, like the field-log one,
|
| 1106 |
so a first-time visitor knows they can pick FAST or LIVE. Anchored to the
|
| 1107 |
control wing so it stays put as the layout flexes. */
|
|
|
|
|
|
|
| 1108 |
.mode-callout {
|
| 1109 |
-
position:
|
| 1110 |
-
|
| 1111 |
-
|
|
|
|
| 1112 |
z-index: 41;
|
| 1113 |
display: flex;
|
| 1114 |
-
flex-direction:
|
| 1115 |
align-items: center;
|
| 1116 |
-
gap:
|
| 1117 |
width: max-content;
|
| 1118 |
-
max-width:
|
| 1119 |
-
padding:
|
| 1120 |
border: 1px solid rgba(124, 223, 143, 0.55);
|
| 1121 |
border-radius: 10px;
|
| 1122 |
background: linear-gradient(180deg, rgba(18, 38, 22, 0.96), rgba(8, 18, 10, 0.96));
|
|
@@ -1141,8 +1144,8 @@ body {
|
|
| 1141 |
.mode-callout.hidden { display: none; }
|
| 1142 |
|
| 1143 |
@keyframes mode-callout-arrow-move {
|
| 1144 |
-
0%, 100% { transform:
|
| 1145 |
-
50% { transform:
|
| 1146 |
}
|
| 1147 |
|
| 1148 |
/* Help popup: explains the controls and how to play, opened from the ? button */
|
|
|
|
| 1105 |
/* A blinking pointer at the MODE switch on power-on, like the field-log one,
|
| 1106 |
so a first-time visitor knows they can pick FAST or LIVE. Anchored to the
|
| 1107 |
control wing so it stays put as the layout flexes. */
|
| 1108 |
+
.mode-group { position: relative; }
|
| 1109 |
+
|
| 1110 |
.mode-callout {
|
| 1111 |
+
position: absolute;
|
| 1112 |
+
bottom: calc(100% + 8px); /* directly above the MODE switch, pointing down at it */
|
| 1113 |
+
left: 50%;
|
| 1114 |
+
transform: translateX(-50%);
|
| 1115 |
z-index: 41;
|
| 1116 |
display: flex;
|
| 1117 |
+
flex-direction: column;
|
| 1118 |
align-items: center;
|
| 1119 |
+
gap: 3px;
|
| 1120 |
width: max-content;
|
| 1121 |
+
max-width: 180px;
|
| 1122 |
+
padding: 9px 13px;
|
| 1123 |
border: 1px solid rgba(124, 223, 143, 0.55);
|
| 1124 |
border-radius: 10px;
|
| 1125 |
background: linear-gradient(180deg, rgba(18, 38, 22, 0.96), rgba(8, 18, 10, 0.96));
|
|
|
|
| 1144 |
.mode-callout.hidden { display: none; }
|
| 1145 |
|
| 1146 |
@keyframes mode-callout-arrow-move {
|
| 1147 |
+
0%, 100% { transform: translateY(0); }
|
| 1148 |
+
50% { transform: translateY(4px); }
|
| 1149 |
}
|
| 1150 |
|
| 1151 |
/* Help popup: explains the controls and how to play, opened from the ? button */
|
static/js/radio.js
CHANGED
|
@@ -351,7 +351,7 @@ if (staticToggle) {
|
|
| 351 |
|
| 352 |
// FAST (default): broadcasts come instantly from the pre-baked pool.
|
| 353 |
// LIVE: the model generates the broadcast fresh, so you watch the AI write it.
|
| 354 |
-
let liveMode =
|
| 355 |
if (modeToggle) {
|
| 356 |
modeToggle.classList.toggle("on", liveMode);
|
| 357 |
modeToggle.setAttribute("aria-checked", String(liveMode));
|
|
@@ -2117,9 +2117,6 @@ modeToggle?.addEventListener("click", () => {
|
|
| 2117 |
liveMode = !liveMode;
|
| 2118 |
modeToggle.classList.toggle("on", liveMode);
|
| 2119 |
modeToggle.setAttribute("aria-checked", String(liveMode));
|
| 2120 |
-
try {
|
| 2121 |
-
localStorage.setItem("lfr_live", liveMode ? "on" : "off");
|
| 2122 |
-
} catch (_) { /* storage unavailable */ }
|
| 2123 |
playClick();
|
| 2124 |
if (hint) hint.textContent = liveMode ? t().liveHint : t().fastHint;
|
| 2125 |
// Clear the screen now for instant feedback, then coalesce rapid toggles into
|
|
|
|
| 351 |
|
| 352 |
// FAST (default): broadcasts come instantly from the pre-baked pool.
|
| 353 |
// LIVE: the model generates the broadcast fresh, so you watch the AI write it.
|
| 354 |
+
let liveMode = false; // always start in FAST so the first experience is instant
|
| 355 |
if (modeToggle) {
|
| 356 |
modeToggle.classList.toggle("on", liveMode);
|
| 357 |
modeToggle.setAttribute("aria-checked", String(liveMode));
|
|
|
|
| 2117 |
liveMode = !liveMode;
|
| 2118 |
modeToggle.classList.toggle("on", liveMode);
|
| 2119 |
modeToggle.setAttribute("aria-checked", String(liveMode));
|
|
|
|
|
|
|
|
|
|
| 2120 |
playClick();
|
| 2121 |
if (hint) hint.textContent = liveMode ? t().liveHint : t().fastHint;
|
| 2122 |
// Clear the screen now for instant feedback, then coalesce rapid toggles into
|