From 20d2f03226a9dea4a3aa79be7409154a7e908357 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Wed, 16 Sep 2026 20:39:22 -0300 Subject: [PATCH] =?UTF-8?q?fix(C181):=20player=20do=20acervo=20volta=20a?= =?UTF-8?q?=20ter=20o=20YouTube=20in-page=20e=20espera=20a=20C=C3=A2mara?= =?UTF-8?q?=20gerar=20o=20trecho?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - restaura o embed do YouTube como superfície opt-in no SpeechDetailPlayer (a Câmara segue a entrada padrão; o embed nunca é a porta automática, guardrail C178) - controle simétrico "Assistir no YouTube"/"Assistir na Câmara" no bloco de saída, com o ponto da fala preservado na troca (pendingSeekRef/youtubeStart) - SPEECH_VOD_PLAYER_POLICY passa a pollAttempts: 2 / pollDelayMs: 3000 — espera bounded dentro do clique em vez de tratar o primeiro GERANDO como falha - unit do resolver (pin + GERANDO→PRONTO) e do player (ida-e-volta + ponto); pin SSR do e2e mantendo o embed fora do HTML inicial Closes #1103 --- docs/changelog/2026-09-16-c181.md | 1 + ...-volta-ao-youtube-e-vod-com-espera-impl.md | 166 ++++++++++-------- .../campaign/speech/SpeechDetailPlayer.tsx | 152 ++++++++++++++-- src/utilities/speech/speechVodResolver.ts | 21 ++- tests/e2e/campaignSpeechAcervo.e2e.spec.ts | 20 ++- tests/unit/speechDetailPlayer.unit.spec.tsx | 42 +++++ tests/unit/speechVodResolver.unit.spec.ts | 56 +++++- 7 files changed, 339 insertions(+), 119 deletions(-) create mode 100644 docs/changelog/2026-09-16-c181.md diff --git a/docs/changelog/2026-09-16-c181.md b/docs/changelog/2026-09-16-c181.md new file mode 100644 index 00000000..e17f5cff --- /dev/null +++ b/docs/changelog/2026-09-16-c181.md @@ -0,0 +1 @@ +**C181 — Acervo: o player volta a ter o YouTube in-page e espera a Câmara gerar o trecho (2026-09-16):** o aviso do dono era um defeito de duas cabeças na mesma fala. Primeira: depois do C178 a Câmara virou o caminho padrão, mas quem preferia o YouTube ficava sem volta na própria página (só o link externo "Abrir no YouTube", que sai da página). Segunda: o clique do player usava `SPEECH_VOD_PLAYER_POLICY` com `pollAttempts: 0`, então o primeiro `GERANDO` da Câmara já virava o estado "gerando" com "Tentar novamente" — a geração era curta e o retry "funcionava", provando que o app desistia cedo. A correção é pequena e simétrica. No `SpeechDetailPlayer`, o `