Segurança — remoção total de debug do bundle de produção
Toggle ?EnableDebug=1 removido em prod. O parâmetro de URL e a chave sessionStorage["debug_enabled"] foram completamente eliminados — não existe mais runtime gate que possa ser ligado por query param, cookie ou storage. O motivador foi um leak no /api/games/start: o endpoint passava debug:true ao ApiClient e ecoava _debug.requestInfo na response, expondo o header cf-worker-key que o Worker usa pra autenticar com o BFF — qualquer um clicando em "Play" em qualquer brand de prod conseguia ler do DevTools. Endpoint corrigido com 6 testes de regressão que travam o contrato (debug:true proibido, _debug ausente em sucesso e erro).
Painéis DevApiDebug/DevApiExplorer agora gated por import.meta.env.DEV. Novo wrapper DevPanel com React.lazy condicional — em prod, o dynamic import('./DevApiDebug') vira inalcançável e o Vite remove o chunk inteiro do build. Consumers (home, favorites, game detail, wallet, history) trocaram <DevApiDebug> por <DevPanel> envolto em {import.meta.env.DEV && (...)}, garantindo que loader _debug data nunca serializa no SSR stream de prod.
Rotas /api/dev/*, /dev/ftd-cashback, /debug e /debug/analytics só existem em dev build. O registro em app/router/routes.ts é gated por process.env.NODE_ENV !== 'production' — em prod build esses arquivos são tree-shaken por completo (server e client). Eliminados também app/utils/debug.server.ts (com isDebugRequest/?EnableDebug) e a doc docs/enable-debug/overview.md.
CI guard pnpm bundle:guard falha se strings proibidas vazarem para o bundle de prod. Novo script scripts/check-prod-bundle.mjs faz grep no build/ após pnpm build e detecta DevApiDebug, DevApiExplorer, activateDebugFromUrl, isDebugActive, EnableDebug, debug_enabled, validation_debug, /api/dev/, /dev/ftd-cashback, debug/analytics e cf-worker-key (no client bundle apenas). Wired via pnpm build:check (= build + bundle:guard). Adicionar nova string secret-adjacent exige atualizar FORBIDDEN_STRINGS no script.
Bumps no core que sustentam a remoção:@cactus-agents/api-client 0.12.0 (redação regex-based de headers *-key/*-token/*-secret/cf-*/x-api-* no requestInfo em modo debug) e @cactus-agents/utils 1.0.0 major (remove os exports activateDebugFromUrl e isDebugActive — não existe mais API pública pra ligar o toggle em runtime). Defense-in-depth: console.* em ftd-cashback.client.ts, smartico-checkin.client.ts e useOnFirstScrollIntoView.ts agora também passam por import.meta.env.DEV, então mesmo se um caller acidentalmente passar debug:true em prod o output some no build.
Pós-registro & Auth — fluxo regulatório e dedup de bursts
Novo hook useAfterRegisterFlow (app/hooks/useAfterRegisterFlow.ts) orquestra o pós-registro: abre o modal de depósito uma vez, logo após o cadastro, bypassando o throttle de 12h do useAutoDepositModal. Replica o handleOpenRegisterStrategy → openModal('deposit') do handleSuccessRegister legado em Vue. Suporta o ramo regulatório (espera o LimitsStep do ValidationBlockerOverlay resolver antes de abrir o depósito) e suprime quando há ?deposit=<campaign> na URL, conta restrita ou featuresConfig.autoDepositAfterRegister === false.
Store app/store/onboarding.ts (Zustand, não persistida) carrega o sinal justRegistered + lastPrudentialLimitActive entre o sucesso do RegisterModal e o próximo render do DefaultLayout. Reset automático no logout.
Forward de user_prudential_limit_active no payload de signup (/bff/register-simplified, /auth/register): sinaliza ao BFF qual botão regulatório o usuário clicou ("Quero definir meus limites agora" vs "Continuar sem limites"). Nova feature flag autoDepositAfterRegister propagada nos 13 overrides de brand.
Dedup cross-request de /auth/user-profile em app/services/auth.server.ts: cache token-scoped com TTL de 10s + cap de 100 entradas (chave = SHA-256 hex do token, evita expor token cru em dumps de memória). Resolve o burst pós-login onde POST /api/auth/login, useAuthProfileSync → GET /api/auth/profile e revalidator.revalidate() → _layout loader pegavam três Requests distintos com o mesmo token — o WeakMap<Request> antigo não conseguia deduplicar.
/api/auth/profile agora consome getAuthForRequest em vez de chamar createAuthFromClient direto, herdando automaticamente o cache acima. PRs touch-up em 20+ componentes (UserSummaryHeader, ValidationContextGate, GameIframe, payments, protection, validation steps) que liam useProfile() ad-hoc.
Novos componentes de Stories implementados — StoriesCircles, StoriesModal, StoriesOnlyButton e StoriesWithModal para exibição interativa de banners
Autoplay adicionado ao HomeBannerCarousel com remoção do skeleton loading
Controle de visibilidade por linha (visibility control) adicionado ao sistema de home rows com classes responsivas
Correções de estabilidade no StoriesModal: safeClose para fechamento seguro com overlay invisível, reset de progresso e timing corretos, ajuste de padding e role de acessibilidade
Widgets configuráveis: HomeBannerCarousel, TournamentsSection e demais widgets agora aceitam title, icon e i18nKey como props para maior flexibilidade
Substituição completa do menu lateral por navegação em abas (tabs): geral, histórico e configurações
Adicionadas páginas de conteúdo tabuladas: general.tsx (info da conta, segurança, métodos de pagamento), config.tsx (proteção, jogo responsável) e history.tsx (histórico de transações e de login)
Removidas páginas legadas separadas: conta, segurança, proteção da conta, IRPF, histórico de login
Seções de conta e segurança refatoradas com painéis colapsáveis e ícones
Sections Pix, Clabe, Senha e Autenticação em dois fatores agora são componentes auto-contidos com gerenciamento de estado próprio
Adicionado componente UserSummaryHeader com info do usuário e ações rápidas
Implementado módulo completo de depósito e saque com integração a provedores de pagamento: novos componentes de modal (DepositModal, WithdrawModal), seletores de método, inputs de valor, atalhos de quantia e telas de resultado para PIX, SPEI e redirect
Criado hook usePayments para interação com a API de pagamentos no client-side
Adicionadas rotas de servidor para operações de pagamento: provedores, depósito, status de depósito, saque, lista de bancos e chave PIX
Criada store Zustand (payments.ts) para gerenciamento de estado dos modais de pagamento
Botões de depósito e saque ativados no menu de conta do usuário e na área de header (removidas badges "Em breve")
Adicionado SDK @cactus-agents/payments ao monorepo core com suporte a: listagem de provedores por moeda, submissão e polling de depósito, saque, gerenciamento de chaves PIX (Brasil) e lista de bancos SPEI (México)
Publicado pacote @cactus-agents/payments ^0.2.0 no registro; dependência adicionada ao front-web-base
Corrigido tratamento de erros na API de rollover: falhas em getRollover() e checkRolloverAccomplished() não impedem mais o retorno dos dados principais da carteira
Adicionado campo balance ao tipo RealWallet, com conversão de centavos para reais na transformação da resposta da API
Publicados @cactus-agents/wallet ^0.2.2 (inclui correção do rollover) e atualizada dependência no front-web-base
Corrigido createClient para encaminhar automaticamente o header Cookie em todas as requisições server-side, eliminando a necessidade de extração manual por rota