Pular para o conteúdo principal

6 publicações com a etiqueta "busca"

Ver todas as etiquetas

Changelog - 24/05/2026

Semana 18–24/05 — Álbum v2 portado e endurecido

  • Substituição integral do módulo pela v2a079bcfab troca app/components/album/** pela versão v2 do drop-in: subdiretório share/ novo (15 arquivos) com pipeline de compartilhamento social por figurinha, URL canônica, card de OG safe pra Satori e helpers de UTM; três componentes novos (CheckinSuccessModal, MissionTypeChoiceModal, PackSummaryPhase); StickerCard e StickerRevealStack extraídos como reusáveis; check-in consolidado em CheckInState com dois tipos de claim (diário e de conclusão); e a novidade estrutural — trilhas duplas (casinoMissions / sportbookMissions mais missionType, um gate bloqueante de escolha no primeiro acesso). O hook público passa a ser useAlbumProgress; useProgressSync, CheckInTier e AlbumBootstrap.checkInDays saem do contrato.
  • Handshake de auth próprio, server-side7644499ec. O BFF do álbum exige fluxo de auth distinto do JWT do cookie HttpOnly do host: POST {STICKER_API_URL}/auth/token com { encryptedUserId, brandId, campaign } devolvendo { accessToken, tokenType, expiresAtUtc }, e Authorization: Bearer em todas as demais chamadas. A versão anterior passava o JWT do cookie direto, o que não funcionava contra o BFF real. loadAlbumBootstrap agora faz o handshake antes do Promise.all de endpoints e retorna null quando ele falha — feature degradada em silêncio em vez de rota quebrada. 459b1b0d5 adiciona cache de token cross-request e fd8690a9b projeta o apiCampaign no servidor antes de mandar pro client.
  • Auditoria de porte com 53 achados3a2a0eab6 compara a v2 portada contra o harness do sticker-book, o Swagger oficial do BFF e os contratos consumidos pelo módulo: 19 críticos, 31 médios, 3 baixos. Os commits seguintes endereçam os 19 críticos — entre eles ff17d4230 (sincronizar state.checkIn a partir de data.checkIn após refetch), d78a718a9 (blindar loadAlbumPageData contra throws inesperados), def9b3f41 (gatear o polling de 60s em document.visibilityState), 9066c2284 (alinhar os handlers de rota ao Swagger) e 819b5dd03 (adapters de mutação, retry de 401, tipos de API compartilhados).
  • Kill-switch por marca e gating de acesso93b3d1312 cria albumConfig.enabled fail-closed: o código fica disponível pra todas as marcas mas só executa pra quem declara enabled: true explicitamente, com guard no loader de /vip/album que redireciona pra home antes de qualquer chamada ao BFF. Só o 7k liga. 72bf89007 adiciona modo preview, splash, gating de feature flag, entrada de sidebar e endurecimento de cache; b7157c1e6 esconde a entrada pra usuário deslogado; a13218eae faz o deslogado fechar pelo X e pelo backdrop em vez de abrir login.
  • Missões vindas do Smartico e do BFF, mescladas por iddc868194f passa a carregar "Suas Missões" da seção ALBUM_FIGURINHAS do Smartico, 07672c7ae cai em todas as missões quando a seção não existe, 0d0fed93e mescla Smartico e BFF por id e 8dca06afd remove /users/me/missions (deprecado — o Smartico é autoritativo).
  • Renderização de flip-book e polimento visualb64d23165 (capa centralizada, tag de faixa de páginas, backgroundImageUrl), 7b84ca712 (continuidade do flip: fatia da lombada, imagem de curl, lombada antecipando o BACK), 746803a4c (tap-to-flip nas bordas), bac022447 (thresholds assimétricos de commit FORWARD/BACK), 253ed4f2e (watermark central nos cards travados), b0a8d3c51 / bc9f28802 (dimensões, centralização e escalas proporcionais no mobile). d392f4072 fecha a semana com a LP de compartilhamento, download de composição e preview anônimo. Testes em c26c5af85, ad332e995 e 9340a8888 cobrem handshake, orquestração, os seis endpoints /api/album/* e os gates de degradação do loader.
  • Chaves album.* de i18n foram adicionadas como overrides do host em vez de irem pro core (e251c0d09), e 8d78a79d7 troca nomes de placeholder por versões neutras na config base.

Changelog - 08/05/2026

Cadastro — validações client-side mais rigorosas

  • Limite etário no cadastro (PR #654) — novo app/utils/age.ts calcula idade contra now e bloqueia data de nascimento fora da faixa 18–99 anos direto no RegisterModal antes do POST. Antes o front aceitava qualquer data válida e só o BFF reclamava (round-trip + UX ruim). Erros aparecem inline com chaves i18n já existentes (auth.errors.too_young / too_old), e o parseRegisterFormData em app/modules/register/flow.ts ganhou o mesmo guard pra blindar o pipeline FormData → payload.
  • Validação de telefone contra máscaras do país (PR #683) — o RegisterModal agora deriva os digit lengths válidos a partir de availableMasks (ex: BR → [10, 11]) e marca o campo como INVALID_PHONE no blur quando a contagem não bate. Isso afeta automaticamente 7k-bet-br, cassino-bet-br, vera-bet-br (e qualquer brand futuro) sem mudança no override — a validação é mask-derived. Erro limpa assim que o user atinge um length válido; não dispara shake (esse fica reservado pra erros de submit), só border + mensagem inline.

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 - 01/05/2026

FTD Onboarding — três fluxos novos consolidados (stage-ftd)

Maior entregável do dia. A branch stage-ftd aterrissou três fluxos completos de retenção/conversão D0, todos brand-configuráveis e cobertos por testes:

  • FTD Offer ("Oferta Relâmpago") — modal + floating widget + story thumb com Quick Deposit embutido. Componentes em app/components/ftd-offer/ (Provider, Modal, FloatingWidget, StoryThumb), storage isolado por marca em ftd-offer-storage.ts e analytics em ftd-offer-analytics.ts.
  • FTD Cashback — fluxo D0 com modal de oferta inicial (FtdCashbackFirstModal), modal de prêmio (FtdCashbackPrizeModal), Provider, dev panel, scaffolding de tiers (ftd-cashback-tiers.ts) e persistência local (ftd-cashback-storage.ts). Testes cobrem storage e cálculo de tiers.
  • FTD Check-in — daily check-in com mock fixture, logs diagnósticos, special offers, label "done today" e kill switch via feature flag remota da brand 7k (feat/ftd-checkin-7k-feature-flags). Componentes Checkin, CheckinTrigger, CheckinStoreOffers.
  • Loop de reabertura corrigidouseFtdCashbackFlow ganha guard pra não reabrir o first-modal logo depois do close (PR #485, fix/ftd-cashback-first-modal-loop).

Changelog - 31/03/2026

Banners e Stories

  • 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

Changelog - 14/03/2026

PWA e Configuração de App

  • Migração do worker de deploy de JavaScript para TypeScript, tornando o código mais robusto e consistente com o restante do projeto
  • Adicionados suporte a manifest.json e meta tags para PWA, permitindo que o app seja instalado em dispositivos móveis como aplicativo nativo
  • Implementado middleware de SSR com cache no worker principal, melhorando performance de carregamento
  • Adicionado arquivo offline.html e service worker (sw.js) para suporte básico a modo offline