Adiciona env vars de defaults de UI e melhora compatibilidade mobile dos players

---

- Adicionado endpoint GET /api/config que expõe as env vars de defaults para o frontend;
- Adicionadas env vars DEFAULT_PURE_MODE, DEFAULT_OPEN_NEW_TAB, DEFAULT_RELOAD_CLIENT e DEFAULT_RELOAD_CLIENT_TIME ao docker-compose.yml e README.md;
- Na primeira sessão sem global-prefs em localStorage, a UI busca os defaults do servidor via /api/config;
- Adicionado fallback de HLS nativo para iOS Safari em todos os players HTML (Hls.isSupported() → v.src + v.play());
- Substituído AbortSignal.timeout() por AbortController + setTimeout para compatibilidade com iOS ≤ 15;
- Corrigido stall detection falso-positivo: verificação só dispara após currentTime > 0 (vídeo realmente iniciado);
- Adicionado height: 100dvh nos players para corrigir clipping do iOS causado pelo 100vh incluir a chrome bar do browser;
- Adicionado atributo muted no <video> do player /static/[id] para permitir autoplay mobile;
- Adicionado listener de touchstart nos botões flutuantes de Back e Mute para exibição em touch;
- Botão Back do player React ampliado no mobile (px-5 py-3 text-[1.1rem]) para paridade visual com o player HTML;
- Comentários do docker-compose.yml traduzidos para inglês e reorganizados inline;

---
This commit is contained in:
2026-04-28 10:34:04 -03:00
parent 89ddf24021
commit 8bcc269594
8 changed files with 108 additions and 40 deletions
+5 -3
View File
@@ -61,9 +61,11 @@ export async function GET(_req: NextRequest, { params }: Ctx) {
last=v.currentTime;
},10000);
fetch(directUrl,{method:'HEAD',signal:AbortSignal.timeout(2000)})
.then(function(){load(directUrl);})
.catch(function(){load(proxyUrl);});
var ctrl=new AbortController();
var fetchTimer=setTimeout(function(){ctrl.abort();},2000);
fetch(directUrl,{method:'HEAD',signal:ctrl.signal})
.then(function(){clearTimeout(fetchTimer);load(directUrl);})
.catch(function(){clearTimeout(fetchTimer);load(proxyUrl);});
</script>
</body>
</html>`