From cb0e902eeec1988be4c0d8a56c2ae0c17b632152 Mon Sep 17 00:00:00 2001 From: Francisco Solla Date: Tue, 15 Sep 2026 22:07:55 -0300 Subject: [PATCH] =?UTF-8?q?fix(C171):=20player=20do=20acervo=20toca=20ou?= =?UTF-8?q?=20oferece=20a=20sa=C3=ADda=20em=20um=20clique=20=E2=80=94=20nu?= =?UTF-8?q?nca=20beco=20de=20signin=20(Closes=20#1047)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/changelog/2026-09-15-c171.md | 1 + ...o-da-transcricao-na-troca-de-superficie.md | 89 +++++++++ .../c171-player-youtube-sem-signin-impl.md | 122 ++++++++++++ .../campaign/speech/SpeechDetailPlayer.tsx | 77 +++++++- tests/e2e/campaignSpeechAcervo.e2e.spec.ts | 15 +- tests/unit/speechDetailPlayer.unit.spec.tsx | 179 +++++++++++++++++- 6 files changed, 474 insertions(+), 9 deletions(-) create mode 100644 docs/changelog/2026-09-15-c171.md create mode 100644 docs/plans/c171-f1-ponto-da-transcricao-na-troca-de-superficie.md create mode 100644 docs/plans/c171-player-youtube-sem-signin-impl.md diff --git a/docs/changelog/2026-09-15-c171.md b/docs/changelog/2026-09-15-c171.md new file mode 100644 index 00000000..2b10208e --- /dev/null +++ b/docs/changelog/2026-09-15-c171.md @@ -0,0 +1 @@ +**C171 — Acervo: o player do YouTube nunca termina num beco de signin (2026-09-15):** o detalhe de uma fala com vídeo no YouTube parava no "faça login para confirmar que você não é um robô" — clicar em signin abria outra janela (onde a pessoa já estava logada) e nada mudava na página. Agora o embed padrão passa a usar `www.youtube.com/embed/` (mesmos `playsinline=1&rel=0&start=`, atacando o bot-check de embeds anônimos do `youtube-nocookie`; a área é interna e autenticada) e, **sempre visível** logo abaixo do player, há saída em um clique: **"Assistir na Câmara"** troca a superfície ativa e resolve o trecho sob demanda no próprio `SpeechDetailPlayer` (reuso integral do C162 — sem segundo player, sem novo POST quando o arquivo já foi verificado, com os estados honestos de resolvendo/gerando/falha) e **"Abrir no YouTube"** abre `watch?v=&t=` no ponto (reuso do `buildSpeechExcerptYoutubeUrl` do C166; `t=` omitido quando o offset é desconhecido). O bloco não depende de detectar o bloqueio — o app nunca vê o erro interno do iframe — então a saída está ao alcance também no caminho feliz (hierarquia secundária, apoio só quando a fala tem VOD). A transcrição passa a posicionar a **superfície ativa** (iframe ou `