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 `