Cerebro Studio · Backlog · Changelog
RioNoTeatro • /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md
Abrir Studio Projeto externo em modo read-only; encaminhamento permitido, escrita bloqueada.

Backlog Unificado

Projeto: RioNoTeatro. Fonte principal: /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.

Modo read-only: ações de escrita ficam disponíveis apenas para o Cérebro.

Sem itens pendentes em /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.

Especificações Disponíveis (fora da fila pendente)

Detalhe do BK Selecionado

/www/wwwroot/rionoteatro.com.br/docs/backlog/BK-271-carrossel-flutuante-eventos-scroll-direcional.md • 2026-04-13T04:54:52.729Z

BK-271 - Carrossel flutuante em eventos.php + scroll direcional em evento.php

Status

  • concluído em 2026-04-13

Objetivo

  • fazer eventos.php exibir o carrossel flutuante de ofertas
  • alinhar o comportamento de evento.php e eventos.php para:
  • esconder ao rolar para baixo
  • mostrar ao rolar para cima
  • reduzir a classificação no carrossel para apenas o selo numérico pequeno
  • expor um marcador versionado em comentário HTML para validação do admin

Escopo

  • eventos.php
  • evento.php

Estratégia

  • reaproveitar a linguagem visual e comercial do carrossel já usado em evento.php
  • em eventos.php, injetar o shell do carrossel no #carousel-placeholder do header público
  • trocar a lógica de visibilidade para depender da direção do scroll, não só da posição vertical
  • usar apenas eventoClassificacaoBadgeMiniHtmlPublico() / eventosClassificacaoBadgeMiniHtmlPublico() dentro do carrossel

Validações esperadas

  • php -l evento.php
  • php -l eventos.php
  • conferência visual do comentário versionado no HTML

Validações executadas

  • php -l evento.php
  • php -l eventos.php
  • comentário versionado confirmado no HTML público de:
  • https://rionoteatro.com.br/eventos.php
  • https://rionoteatro.com.br/se-der-corda

Subfix de flicker

  • o primeiro hotfix ainda piscava porque a visibilidade do carrossel dependia apenas do frame atual de scroll (subindo/descendo)
  • quando o usuário parava de rolar, o carrossel perdia o estado e desligava no frame seguinte
  • correção final aplicada:
  • estado persistente de visibilidade
  • liga quando sobe após o trigger
  • desliga quando desce, volta ao topo ou ainda não passou do trigger
  • ao parar de rolar, mantém o último estado visível

Follow-up de estabilidade e performance

  • a trilha AJAX parcial gerada por worker externo foi rejeitada antes do fechamento:
  • ela havia deixado eventos.php com blocos duplicados/incompletos e chegava a quebrar o rodapé da página
  • o endpoint ajax/eventos_carregar.php não foi mantido
  • a correção consolidada em eventos.php ficou assim:
  • o shell do carrossel passou a clipar overflow horizontal para não induzir barra de scroll interna
  • a sincronização do carrossel passou a usar requestAnimationFrame no scroll
  • a vitrine inicial passou a mostrar os primeiros 12 cards
  • ao aproximar do fim da tela, a página revela automaticamente mais 6 cards por vez
  • cards ocultos mantêm metadata no DOM para preservar busca e agenda, mas só ativam a imagem real quando ficam visíveis
  • banners inseridos entre cards acompanham o mesmo limite visível da vitrine

Validações executadas no follow-up

  • php -l eventos.php
  • conferência HTTP do HTML publicado em https://rionoteatro.com.br/eventos.php
  • confirmação da presença de:
  • RNT_FLOATING_CAROUSEL_MARKER: 2026-04-13 04:43 -03
  • data-card-deferred="1" nos cards pós-limite inicial
  • data-banner-after-index nos banners da listagem
  • #rnt-eventos-lazy-anchor no fim da grade

Follow-up do body/header público

  • o scroll duplo residual não vinha do carrossel em si; vinha da compensação redundante do header público
  • includes/inc_peca.php adicionava header-fixed ao body, enquanto o header público em redesign_2026.css já opera com position: sticky
  • isso mantinha o body com padding-top e fazia o admin perceber um segundo contexto de rolagem/compensação visual
  • correção aplicada:
  • inc_peca.php deixou de adicionar header-fixed ao body
  • inc_peca.php deixou de alternar header-scrolled no body
  • o efeito visual de scroll continua só no próprio .rnt-header

Validações executadas no follow-up do body/header

  • php -l includes/inc_peca.php
  • conferência HTTP do HTML publicado em https://rionoteatro.com.br/eventos.php
  • confirmação de que a página agora sai com:
  • <body>
  • sem header-fixed
  • sem header-scrolled

Simplificação final do comportamento

  • por decisão operacional do admin, a lógica do carrossel em eventos.php foi simplificada
  • comportamento final:
  • inicia oculto
  • no primeiro scroll para cima após o trigger, aparece
  • depois disso permanece fixo/exibido
  • não volta mais a esconder por scroll
  • escopo deliberadamente restrito a eventos.php

Validações executadas na simplificação final

  • php -l eventos.php
  • conferência HTTP do JS publicado em https://rionoteatro.com.br/eventos.php
  • confirmação da presença de:
  • var carrosselEventosTravado = false;
  • if (!carrosselEventosTravado && passouTrigger && subindo)
  • carrosselEventosVisivel = carrosselEventosTravado;

Espelhamento em evento.php

  • a mesma regra final foi espelhada na página individual do evento
  • comportamento final em evento.php:
  • inicia oculto
  • no primeiro scroll para cima após o trigger, aparece
  • depois fica travado como visível
  • não volta a esconder por scroll

Validações executadas no espelhamento de evento.php

  • php -l evento.php
  • conferência HTTP do JS publicado em https://rionoteatro.com.br/se-der-corda
  • confirmação da presença de:
  • var carrosselEventoTravado = false;
  • if (!carrosselEventoTravado && passouTrigger && subindo)
  • carrosselEventoVisivel = carrosselEventoTravado;