Pular para o conteúdo principal

6 publicações com a etiqueta "tracking"

Ver todas as etiquetas

Changelog - 17/05/2026

Semana 11–17/05 — Álbum de figurinhas entra no base

  • Módulo album portado do harness pro host86435c4a9 traz o drop-in modules/album do repositório do sticker-book pra app/components/album/ (59 arquivos: Album.tsx, AlbumModal.tsx, páginas Missions / CheckIn / Stickers / Terms / PackOpener, context, hooks, reducer, types e utils) já cabeado na infraestrutura do base — rota gamification.album/vip/album registrada em todos os paths.ts de override, loader com auth gate e AlbumBootstrap. biome.json passa a excluir app/components/album/**, porque é código de módulo terceiro. Branch feat/album-integration.
  • Camada de proxy e serviço server-side — cinco rotas novas em app/routes/api/album/ (open-pack, open-all-packs, checkin, claim-prize, claim-featured) e o serviço app/services/album.cache.server.ts, que dispara um burst paralelo de 5 endpoints do BFF do álbum (stickers, packs, dias de check-in, featured, missions) chaveado na env ALBUM_API_URL e retorna null quando a env não está configurada — feature simplesmente não aparece em vez de quebrar a rota.
  • Overrides de tema por marca — 7k (navy + amarelo), cassino (azul + ciano) e vera (verde + lima) ganham config própria; o default em app/config/gamification/album.ts fica num slate escuro neutro.
  • Dois fixes de integração no mesmo dia24d73ebe1 remove um import circular introduzido nos overrides de marca e c2db1cd2b move a rota pra fora do layout VIP, porque a página não deve depender de gamificationConfig.modules pra existir.

Changelog - 06/05/2026

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.

Changelog - 03/05/2026

CASSINO_MODE — front_custom removido (breaking change)

  • @cactus-agents/games 2.0.0 — CASSINO_MODE=front_custom deixou de existir. Antes desta data havia 3 modes (legacy, api_new, front_custom); agora são apenas 2 (legacy, api_new). O front_custom era usado só pelo sandbox interno stage1 — stage1 migrou pra legacy e nenhuma brand de cliente consumia o mode. Em vez de manter código morto como surface area pública, o package removeu de vez.
  • Exports públicos removidos: createCustomCategoriesGamesFromClient, createCustomCategoriesGamesService, CustomCategoriesGamesOptions, CustomCategoryDef, CustomCategoriesConfig, CustomCategorySource, filterExplicitCategory, resolveCategoryGames, customCategoryDefToRaw. Tipo LegacyHomeRowConfig.type deixou de aceitar "custom-category".
  • Sobrevive intacto: HomeRow.type runtime ainda inclui "custom-category" / "custom-section" — esses são emitidos pelo BFF page pipeline em legacy e api_new e continuam funcionando. Curadoria por overlay (categories.personalize.ts) também continua válida nos dois modes.
  • Refactor interno: src/custom-categories.ts virou src/stats-ordering.ts; orderByStats, CustomCategoryOrderBy, DisplayPriority, StatDisplayKey continuam exportados do root do package (API pública preservada).
  • Documentação atualizada em conjunto: docs-internal/template/env-vars.md, docs-internal/template/games.md, docs-internal/forking/override-files.md, docs-external/customization/games.md e docs-external/deployment/environment.md reescritos para descrever apenas os 2 modes restantes. CASSINO_FRONT_CUSTOM_BASE removido das tabelas de env vars; regra de "paridade obrigatória" pra .new.ts/.custom.ts foi droppada (não existem mais). Guia de personalização aponta agora pra categories.personalize.ts em vez de categories.custom.ts.

Changelog - 22/04/2026

Tracking de Marketing / UTMs

  • Captura de UTMs agora roda server-side no root loader (app/root.tsx). Antes, a captura era apenas client-side em useEffect — UTMs se perdiam quando um loader fazia redirect(...) antes do hydrate. Ex: landing /?utm_source=X&ref=AFIL1 que dispara redirect para /register agora preserva os parâmetros via Set-Cookie na própria response do redirect. Resolve o report "Rastreamento perde-se após o login/redirecionamento".
  • Política de atribuição alinhada com legado: last-touch. Cada nova URL com UTM sobrescreve o cookie anterior, igual ao middleware global do Nuxt antigo. A versão anterior (first-touch) divergia silenciosamente da atribuição calibrada nos dashboards de BI.
  • Captura também re-executa em toda navegação SPA via useLocation() no TrackingCapture — antes corria só 1x no mount.

Changelog - 05/04/2026

Semana 03–05/04 — Rede 7k chega à Nigéria e à Finlândia

  • Duas marcas novas nascem no mesmo dia: ng-7k-bet (7c7bcbe0a) e fi-7k-bet (e83078a76) ganham árvore de override completa em overrides/<brand>/app/config/ — tema, features.config.ts, menu.config.ts, sidebar.config.ts, linhas de home/cassino e itens de navegação. O acabamento veio na sequência: 224653ac7 fecha o branding da ng-7k-bet, 750fd7f5c ajusta features e cores da fi-7k-bet, e 0359f4e2e / f6b0ce82c trocam favicon e ícones PWA de cada uma. Como overrides/* é ignorado por padrão no .gitignore, cada marca só passa a ser versionada quando entra na lista de exceções (!overrides/<brand>/) — é esse commit que "cria" a marca aos olhos do git.
  • Manifest PWA passa a sair do tema (1dff5bffc): theme.config.ts ganha um bloco manifest com theme-color e background-color, e a rota app/routes/manifest[.]json.ts lê dali em vez de ter os valores fixos — o mesmo bloco foi propagado para todos os overrides.
  • Licenciamento por jurisdição: 24d0b6ebf padroniza o texto de licença entre as configs, 7f46e5604 troca o texto da ng-7k-bet para inglês e 9a9a38be0 ajusta o textLicense do licenses.config.ts dessa mesma marca. Marca nova em jurisdição nova não reaproveita o rodapé regulatório brasileiro.
  • Suporte de país no core: @cactus-agents/country-config ganha suporte ao documento NIN e a localização da Nigéria (8a5d11d) — é dessa config que o registro tira qual documento pedir e como validá-lo.

Changelog - 01/04/2026

Recompensas e Gamificação

  • Adicionada a primeira versão da seção de Recompensas, incluindo a página principal, componentes de listagem e o modal para resgate de prêmios.
  • Integradas as rotas de API, o hook useRewards e a store Zustand para gerenciamento de estado das recompensas.
  • Adicionada a aba de Recompensas na navegação do usuário e a configuração de feature flag para controle de acesso.
  • Implementado o sistema de votos em jogos, com carregamento assíncrono dos votos do usuário e contagem pública.
  • Corrigido o formato da API de votos para alinhar com o backend (is_like como string, casinoGameId como número).