Permette upload da portale e app con ereditarietà partita→squadra→società, generazione MP4 via ffmpeg e distribuzione su home lab e nodi CPX per pause e assenza segnale.
Co-authored-by: Cursor <cursoragent@cursor.com>
Così un CPX nuovo non richiede worker Docker a mano, l'agent è nel cloud-init e gli E2E restano non in elenco.
Co-authored-by: Cursor <cursoragent@cursor.com>
Il relay HLS→RTMPS resta sul worker/agent del nodo assegnato, così tre dirette contemporanee restano in onda sul sito e sul canale della società senza schermo nero.
Co-authored-by: Cursor <cursoragent@cursor.com>
L'encoder scende in congestione e risale piano; la regia imposta il pavimento, mostra lo stato del telefono e apre il selettore dal bitrate colorato.
Co-authored-by: Cursor <cursoragent@cursor.com>
Senza volume stream-node i nodi Hetzner nascevano senza MediaMTX; sync live usa ora Client.for_session e rtmpconns (MediaMTX 1.20).
Co-authored-by: Cursor <cursoragent@cursor.com>
Rimuove l'alpha dall'AppIcon e dichiara tutte le orientazioni richieste dal multitasking iPad, così l'upload ASC non fallisce più.
Co-authored-by: Cursor <cursoragent@cursor.com>
Rimuove il pulsante ridondante «Partita programmata», migliora il padding dei bottoni e fa di splash/login/matches root vere così non compare più il chevron indietro spurio.
Co-authored-by: Cursor <cursoragent@cursor.com>
Gli header Accept-Language dalle app e i fix di padding/menu sul web chiudono il giro password-policy; il doc guida il lavoro su Mac.
Co-authored-by: Cursor <cursoragent@cursor.com>
Le .so AndroidX sono già stripped: AGP non generava metadata; ora le iniettiamo nel bundle prima della firma (release 2.0.9 / 30).
Co-authored-by: Cursor <cursoragent@cursor.com>
ffmpeg fa solo remux copy A/V; le app fissano AAC 48 kHz mono; sync deploy non cancella più garage.prod.toml.
Co-authored-by: Cursor <cursoragent@cursor.com>
Serve assetlinks su edge/Rails, documenta overflow Hetzner e bumpa l'AAB a 28 con simboli nativi per Play.
Co-authored-by: Cursor <cursoragent@cursor.com>
Alza versionCode a 27 per il test chiuso Play Console e sistema
l'etichetta Kotlin invalida in ThermalStateManager.
Co-authored-by: Cursor <cursoragent@cursor.com>
Completa L10n su login/hub/wizard/broadcast e introduce ThermalStateManager su iOS/Android con degradazione qualità e indicatore in overlay.
Co-authored-by: Cursor <cursoragent@cursor.com>
Selettore lingua con icona globo al login; dialog e bottom sheet (es. scegli squadra) tradotti; bump a 2.0.4-native.
Co-authored-by: Cursor <cursoragent@cursor.com>
Checklist operativa con file, chiavi stringa e bump versione per allineare l’app iOS alla release Android 2.0.3.
Co-authored-by: Cursor <cursoragent@cursor.com>
Le migrate partono dall'immagine appena buildata invece che dal container vecchio; helper live tollera slug assente.
Co-authored-by: Cursor <cursoragent@cursor.com>
Il selettore lingua funziona sul web e sulle app native; su Android la preferenza è persistita e applicata al riavvio. Incluse anche eliminazione replay a scope e campi pagina pubblica squadra.
Co-authored-by: Cursor <cursoragent@cursor.com>
Evita patch recording ripetute che distruggevano i muxer HLS (500 ops) e fa encoderare 1080p/720p con codec e bitrate coerenti al wizard.
Co-authored-by: Cursor <cursoragent@cursor.com>
applyRemote ignorava aggiornamenti Action Cable con progressKey più basso, quindi il meno in regia non aggiornava il tabellone sullo stream.
Co-authored-by: Cursor <cursoragent@cursor.com>
Normalizza il periodo nel backend quando l'app invia "Q1" via cable, così advance_period aggiorna regia e overlay; rimuove i controlli cronometro dalla regia e rende più tollerante il decode iOS al resume sessione.
Co-authored-by: Cursor <cursoragent@cursor.com>
L'iPad accetta gli aggiornamenti ActionCable della regia, evita race con risposte API obsolete e ridisegna subito il tabellone sullo stream RTMP.
Co-authored-by: Cursor <cursoragent@cursor.com>
La regia remota non va più in 500 su basket/timed; iOS gestisce chiusura set, riconnessione RTMP e avanzamento quarti in modo affidabile.
Co-authored-by: Cursor <cursoragent@cursor.com>
Corregge lifecycle RTMP/preview tra partite, reset tabellone, orientamento
con debounce, condivisione su iPad e script test_ios_simulator per CI locale.
Co-authored-by: Cursor <cursoragent@cursor.com>
Il proxy Rails gestisce il redirect MediaMTX su /live/match_* e riscrive le playlist; edge nginx reindirizza /live/ sotto /hls/. Su iOS, SessionBuilder HaishinKit, pipeline mixer corretta e refresh token.
Co-authored-by: Cursor <cursoragent@cursor.com>
ScoreStateDto non leggeva home_points con convertFromSnakeCase; ScoreController assegna sempre lo stato, aggiornamento ottimistico e refresh overlay.
Co-authored-by: Cursor <cursoragent@cursor.com>
Il simulatore non risolve «mediamtx»; l'app riscrive l'ingest verso 127.0.0.1 e docker-compose espone MEDIAMTX_RTMP_URL client-safe con messaggi d'errore RTMP più chiari.
Co-authored-by: Cursor <cursoragent@cursor.com>
Permette build Debug verso localhost, script smoke per close_set/resume session e rigenerazione progetto con setting API di default produzione.
Co-authored-by: Cursor <cursoragent@cursor.com>
Dopo auth Rails redirect a URL presigned su /media/ (edge → Garage); aumenta
RAILS_MAX_THREADS, corregge ingest log ops via stdin e keystore Play Console.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fix crash e race su +3, layout tabellone con squadre ai lati, safe area in diretta e rimozione overlay cronometro; backend con sync punteggio periodo, link diretta in regia e init score_state basket.
Co-authored-by: Cursor <cursoragent@cursor.com>
Le partite ereditano lo sport_key della squadra alla creazione invece del default pallavolo; l'organico mostra ruoli per board (basket, volley, timed) e il wizard Android usa lo sport del team per overlay e icona.
Co-authored-by: Cursor <cursoragent@cursor.com>
Dopo «Termina trasmissione» la partita restava visibile se esisteva una vecchia sessione idle precedente a quella ended; l'hub e l'app usano ora lo stato dell'ultima sessione.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allinea i form società/squadra al catalogo sport, espone score_action per basket/timed e corregge bug namespace Sports e Result nel period engine; l'app nativa gestisce overlay e punteggio per board con wizard regole esteso.
Co-authored-by: Cursor <cursoragent@cursor.com>
Catalogo sport in YAML, board implicito, engine per volley/basket/timed/racket/timer/generic, regia e app Android allineate.
Co-authored-by: Cursor <cursoragent@cursor.com>