Rendi affidabile pausa con slate e conferma i controlli laterali.

Evita buchi HLS/YouTube in pausa (path slate ricreata, reload player, no patch recording inutili) e richiede conferma su tasti laterali app/regia.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-20 12:44:23 +02:00
co-authored by Cursor
parent e09b3ffcf8
commit 0702cb699c
37 changed files with 1186 additions and 83 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ module MatchLiveTv
end
def hls_public_url
ENV.fetch("HLS_PUBLIC_URL", "http://localhost:8888")
ENV.fetch("HLS_PUBLIC_URL") { "#{app_public_url.chomp('/')}/hls" }
end
def mediamtx_hls_url
+1 -1
View File
@@ -57,7 +57,7 @@ de:
username_label: Benutzername
password_label: Passwort
submit: Anmelden
initial_credentials_html: "Anfangs-Zugangsdaten: <code>admin</code> / <code>admin</code>. Ändere das Passwort nach der ersten Anmeldung."
initial_credentials_html: "Anfangs-Zugangsdaten: <code>admin</code> / <code>AdminPass123</code>. Ändere das Passwort nach der ersten Anmeldung."
passwords:
edit:
title: Passwort ändern
+1 -1
View File
@@ -57,7 +57,7 @@ en:
username_label: Username
password_label: Password
submit: Log in
initial_credentials_html: "Initial credentials: <code>admin</code> / <code>admin</code>. Change the password after the first login."
initial_credentials_html: "Initial credentials: <code>admin</code> / <code>AdminPass123</code>. Change the password after the first login."
passwords:
edit:
title: Change password
+1 -1
View File
@@ -57,7 +57,7 @@ es:
username_label: Usuario
password_label: Contraseña
submit: Acceder
initial_credentials_html: "Credenciales iniciales: <code>admin</code> / <code>admin</code>. Cambia la contraseña después del primer acceso."
initial_credentials_html: "Credenciales iniciales: <code>admin</code> / <code>AdminPass123</code>. Cambia la contraseña después del primer acceso."
passwords:
edit:
title: Cambiar contraseña
+1 -1
View File
@@ -57,7 +57,7 @@ fr:
username_label: Nom d'utilisateur
password_label: Mot de passe
submit: Se connecter
initial_credentials_html: "Identifiants initiaux : <code>admin</code> / <code>admin</code>. Changez le mot de passe après la première connexion."
initial_credentials_html: "Identifiants initiaux : <code>admin</code> / <code>AdminPass123</code>. Changez le mot de passe après la première connexion."
passwords:
edit:
title: Changer le mot de passe
+1 -1
View File
@@ -61,7 +61,7 @@ it:
username_label: Username
password_label: Password
submit: Accedi
initial_credentials_html: "Credenziali iniziali: <code>admin</code> / <code>admin</code>. Cambia la password dopo il primo accesso."
initial_credentials_html: "Credenziali iniziali: <code>admin</code> / <code>AdminPass123</code>. Cambia la password dopo il primo accesso."
passwords:
edit:
title: Cambia password
+12
View File
@@ -491,6 +491,7 @@ de:
modal:
set_won_title: Satz gewonnen
confirm: Satz beenden
confirm_action: Bestätigen
cancel: Abbrechen
board:
next_period: Nächstes Viertel
@@ -530,6 +531,17 @@ de:
mute_error: Fehler beim Stummschalten
close_error: Fehler beim Beenden
close_confirm: Übertragung endgültig beenden?
pause_confirm_title: Livestream pausieren?
pause_confirm_body: Das Cover bleibt on air, bis du fortsetzt.
resume_confirm_title: Livestream fortsetzen?
resume_confirm_body: Die Kamera geht wieder on air statt des Covers.
mute_confirm_title: Audio stummschalten?
mute_confirm_body: Das Mikrofon wird nicht mehr an den Stream gesendet, bis du es wieder aktivierst.
unmute_confirm_title: Audio wieder aktivieren?
unmute_confirm_body: Das Mikrofon ist wieder aktiv im Stream.
advance_period_title: Zum nächsten Abschnitt wechseln?
advance_period_body: Die Anzeigetafel wechselt zum nächsten Abschnitt und der aktuelle Stand wird gespeichert.
stop_confirm_title: Livestream beenden?
link_unavailable: Link nicht verfügbar
link_copied: Link kopiert
copy_prompt: "Link kopieren:"
+12
View File
@@ -494,6 +494,7 @@ en:
modal:
set_won_title: Set won
confirm: Close set
confirm_action: Confirm
cancel: Cancel
board:
next_period: Next quarter
@@ -533,6 +534,17 @@ en:
mute_error: Error muting audio
close_error: Error closing
close_confirm: Permanently close the live stream?
pause_confirm_title: Pause the live stream?
pause_confirm_body: The cover slate will stay on air until you resume.
resume_confirm_title: Resume the live stream?
resume_confirm_body: The camera will go back on air instead of the cover slate.
mute_confirm_title: Mute audio?
mute_confirm_body: The microphone will not be sent to the stream until you unmute.
unmute_confirm_title: Unmute audio?
unmute_confirm_body: The microphone will be active on the stream again.
advance_period_title: Advance to the next period?
advance_period_body: The scoreboard will move to the next period and the current period score will be saved.
stop_confirm_title: End the live stream?
link_unavailable: Link not available
link_copied: Link copied
copy_prompt: "Copy the link:"
+12
View File
@@ -491,6 +491,7 @@ es:
modal:
set_won_title: Set ganado
confirm: Cerrar set
confirm_action: Confirmar
cancel: Cancelar
board:
next_period: Siguiente cuarto
@@ -530,6 +531,17 @@ es:
mute_error: Error al silenciar el audio
close_error: Error al cerrar
close_confirm: "¿Cerrar definitivamente la retransmisión?"
pause_confirm_title: "¿Pausar el directo?"
pause_confirm_body: La portada seguirá en antena hasta que lo reanudes.
resume_confirm_title: "¿Reanudar el directo?"
resume_confirm_body: La cámara volverá a antena en lugar de la portada.
mute_confirm_title: "¿Silenciar el audio?"
mute_confirm_body: El micrófono no se enviará al stream hasta que lo reactives.
unmute_confirm_title: "¿Reactivar el audio?"
unmute_confirm_body: El micrófono volverá a estar activo en el stream.
advance_period_title: "¿Pasar al periodo siguiente?"
advance_period_body: El marcador pasará al siguiente periodo y se guardará el marcador del periodo actual.
stop_confirm_title: "¿Terminar el directo?"
link_unavailable: Enlace no disponible
link_copied: Enlace copiado
copy_prompt: "Copia el enlace:"
+12
View File
@@ -491,6 +491,7 @@ fr:
modal:
set_won_title: Set gagné
confirm: Terminer le set
confirm_action: Confirmer
cancel: Annuler
board:
next_period: Quart-temps suivant
@@ -530,6 +531,17 @@ fr:
mute_error: Erreur lors de la coupure audio
close_error: Erreur de clôture
close_confirm: Clôturer définitivement le direct ?
pause_confirm_title: Mettre le direct en pause ?
pause_confirm_body: La couverture restera à l'antenne jusqu'à la reprise.
resume_confirm_title: Reprendre le direct ?
resume_confirm_body: La caméra reviendra à l'antenne à la place de la couverture.
mute_confirm_title: Couper l'audio ?
mute_confirm_body: Le micro ne sera plus envoyé au flux tant que vous ne le réactivez pas.
unmute_confirm_title: Réactiver l'audio ?
unmute_confirm_body: Le micro sera à nouveau actif sur le flux.
advance_period_title: Passer à la période suivante ?
advance_period_body: Le tableau passera à la période suivante et le score de la période en cours sera enregistré.
stop_confirm_title: Terminer le direct ?
link_unavailable: Lien non disponible
link_copied: Lien copié
copy_prompt: "Copiez le lien :"
+12
View File
@@ -515,6 +515,7 @@ it:
modal:
set_won_title: Set vinto
confirm: Chiudi set
confirm_action: Conferma
cancel: Annulla
board:
next_period: Prossimo quarto
@@ -554,6 +555,17 @@ it:
mute_error: Errore silenziamento audio
close_error: Errore chiusura
close_confirm: Chiudere definitivamente la diretta?
pause_confirm_title: Mettere in pausa?
pause_confirm_body: La diretta passerà alla copertina finché non la riprendi.
resume_confirm_title: Riprendere la diretta?
resume_confirm_body: La telecamera tornerà in onda al posto della copertina.
mute_confirm_title: Silenziare l'audio?
mute_confirm_body: Il microfono non verrà inviato allo stream finché non lo riattivi.
unmute_confirm_title: Riattivare l'audio?
unmute_confirm_body: Il microfono tornerà attivo sullo stream.
advance_period_title: Passare al periodo successivo?
advance_period_body: Il tabellone passerà al periodo successivo e il punteggio del periodo corrente sarà salvato.
stop_confirm_title: Terminare la diretta?
link_unavailable: Link non disponibile
link_copied: Link copiato
copy_prompt: "Copia il link:"