Alicia Mística — Changelog
//====== Edicao 3.00 — 09/03/2026 — 23:45 ======//
SEO MASTER PLAN — Prompts 1-10 (Fundacao + Auditoria Tecnica Completa)
- SEOAuditDashboard (NOVO): Componente completo de auditoria tecnica SEO com 24 itens verificados em 6 categorias (Indexacao, Canonicals, Performance, Conteudo, Estrutura, Seguranca). Score automatico, backlog priorizado por Impacto x Esforco, status visual (OK/Alerta/Falha), metodo de validacao e riscos por item.
- SEOMasterPlan (NOVO): Base de conhecimento SEO completa cobrindo todos os 10 prompts solicitados: (1) Setup do Projeto com 30 arquivos mapeados, (3) Arquitetura de Clusters com 4 hubs e 15+ spokes, (4) Templates de metadados por tipo de pagina, (5) Checklist semanal GSC com 9 passos executaveis e criterios de alerta, (6) Politica de Sitemap/Robots/Noindex com tabela completa de 16 URLs, (7) Regras de Canonicals com 7 cenarios documentados, (8) Politica de Redirects 301/302/404, (9) Plano CWV com 8 acoes priorizadas, (10) Framework de Auditoria de Conteudo com planilha de 15 colunas.
- SEOPanel — Tabs Expandidas: Adicionadas 2 novas tabs: "Auditoria" (ClipboardList) e "Plano SEO" (BookOpen). Total: 8 tabs no painel SEO admin.
- SEO Component — Canonical Fix: Canonical agora ignora query params e trailing slashes. Usa window.location.origin + pathname (sem search/hash) para gerar URLs canonicas limpas.
- Meta Tags — Paginas de Servico: Adicionado componente SEO com title, description e keywords otimizados nas paginas Tarot, Horoscope e BirthChart. Todas com noindex=true (paginas autenticadas).
- Prompt 2 — Auditoria Tecnica: Checklist com 24 itens cobrindo indexacao, canonicals, robots, sitemap, CWV, performance, imagens, headers, duplicacao, estrutura de URL, thin content, paginas orfas. Cada item com status, impacto, esforco, metodo de validacao e risco.
- Prompt 3 — Clusters: 4 clusters definidos (Tarot, Horoscopo, Mapa Astral, Relacionamentos) com keywords target, regras anti-canibalizacao (1 intent = 1 URL), estrategia de interlink (hub-spoke + crosslinks).
- Prompt 4 — Metadados: Templates de Title (max 60 chars), Description (max 155 chars) e H1 para 7 tipos de pagina. Regras de variacao por intencao e validacao via SERP preview.
- Prompt 5 — GSC Semanal: 9 passos executaveis com criterios de alerta (queda > 15% WoW, CTR < 2%, etc) e acoes recomendadas. Inclui monitoramento de CWV, cobertura e sitemaps.
- Prompt 9 — CWV: 8 acoes tecnicas priorizadas: WebP, lazy loading, preload fontes, code-split, cache headers, remover scripts inuteis, critical CSS, Service Worker.
//====== Edição 2.14 — 09/03/2026 — 22:30 ======//
Auth Flow Overhaul — Redirect definitivo para Início
- RegisterModal — Redirect fix: Corrigido bug critico onde CoinRainEffect chamava onClose() antes de onSuccess(), fazendo AuthGate limpar o redirectAfterAuth e navegar para Landing antes do redirect para Dashboard acontecer. Agora onSuccess() e chamado diretamente sem chamar onClose().
- LoginModal — Redirect fix: Mesmo bug corrigido: handleSubmit chamava onClose() antes de onSuccess(). onClose disparava redirect para Landing em paginas protegidas. Agora onSuccess() e chamado diretamente sem chamar onClose().
- AuthGate — Redirect imediato: Removido setTimeout(300ms) do handleSuccessfulAuth. Navegacao para Dashboard (ou pagina-alvo) agora e sincrona e imediata apos fechar os modais.
- AuthGate — Dashboard protegido: Adicionado 'Dashboard' a lista PROTECTED_PAGES para que acessar /Dashboard sem auth abra o modal de registro corretamente.
- ProtectedRoute — Sem modais duplicados: ProtectedRoute nao renderiza mais seus proprios RegisterModal/LoginModal (causava modais duplicados com AuthGate). Agora delega para os modais globais do AuthGate via window.openLoginModal/openRegisterModal.
- RegisterModal — Reset de estado: Ao abrir o modal, error/success/errors sao resetados para evitar estado stale de tentativas anteriores.
- Rotas aninhadas (/painel/*): Base44 usa roteamento flat (cada page name = rota raiz). Rotas aninhadas como /painel/inicio nao sao suportadas pela arquitetura da plataforma. As rotas sao: /Dashboard (Inicio), /Home (Feed), /Tarot, /Horoscope, /BirthChart, /Relationships, /BuyCredits, /Profile, /AdminPanel, /Learn.
//====== Edição 1.23 — 26/02/2026 — 00:30 ======//
Checkout Modal — Redesign Profissional (Radio Cards, SVGs, CTA fixo)
- Layout hierárquico: Resumo do pacote com título 15px bold, créditos 20px extrabold amber, preço 22px extrabold. Preço antigo e desconto (-38%) limpos acima do preço principal sem competir visualmente.
- Métodos de pagamento → Radio Cards: Pix e Cartão agora são cards clicáveis com estado selecionado (borda colorida + gradient fill + radio dot). Base neutra (white/[0.03]) quando não selecionado. Seleção: Pix = verde emerald com glow, Cartão = roxo purple com glow. Apenas 1 pode estar selecionado por vez.
- Ícones SVG reais circulares (46px): Pix: SVG oficial do diamante Pix em #32BCAD dentro de círculo 46px com borda sutil. Cartão: SVG de 2 cartões sobrepostos (stack) em roxo dentro de círculo 46px. Ambos consistentes em tamanho, borda e padding.
- Pill "RECOMENDADO": Pequeno pill 9px no canto direito do Pix, muda cor conforme estado (ativo=emerald, inativo=neutro). Não polui nem compete com o preço.
- CTA fixo no rodapé: Botão "Pagar R$ XX,XX" fixo no bottom do modal. Cor muda conforme método: emerald (Pix) ou purple (Cartão). Inclui ícone SVG do método. safe-area-inset-bottom para iOS.
- CouponInput redesenhado: Placeholder "Digite seu cupom". Botão "Aplicar" visualmente desabilitado (bg quase invisível, texto white/20) quando vazio. Ativado com fundo roxo quando há texto. Feedback de erro em 11px abaixo do campo. Ícone Ticket substituiu Tag.
- Fundo do modal: Gradiente de #1e2235 para #151826 (mais claro e coeso). Bordas white/[0.12]. Opacidades calibradas para "produto sério" sem "carnaval de cores".
//====== Edição 1.22 — 25/02/2026 — 23:45 ======//
Modais de Pagamento — Responsividade Mobile 100% + UX Pix + Scrollbar
- PixModal — Reescrito: Auto-copia código Pix ao abrir (clipboard API). Botão "Copiar Código Pix" full-width sempre visível. Scrollbar do website aplicada no código Pix (custom scrollbar global). Modal usa z-[200] para ficar acima da topbar/bottomtabs. Layout bottom-sheet no mobile com safe-area-inset-bottom. max-height usa 100dvh para respeitar viewport real. QR Code tamanho ajustado (44x44 mobile, 48x48 desktop).
- StripeCheckoutModal — Reescrito: z-[200] para nunca ser cortado pela navbar. max-height 100dvh sem ser cortado pela topbar. safe-area-inset-bottom para iPhone. min-height do Embedded Checkout reduzido para 300px mobile. Padding e scroll touch-optimized.
- CheckoutModal — Reescrito: z-[200] consistente com os sub-modais. Bottom-sheet pattern no mobile. safe-area-inset-bottom. Scroll touch-optimized.
- Scrollbar Global: CSS global (*::-webkit-scrollbar) com thumb roxo translúcido. Firefox scrollbar-color global. Aplicado em toda a aplicação incluindo modais e código Pix.
- Contraste dos Modais: Fundo slate-800 (mais claro). Bordas white/15. Textos secundários com opacidade aumentada. Botões de pagamento com mais contraste visual.
//====== Edição 1.21 — 25/02/2026 — 22:30 ======//
Responsividade Loja + Remoção Celular Stripe + Anti-fraude + Badges visíveis
- Stripe phone_number_collection DESABILITADO: Removida a coleta de número de celular no checkout Stripe (tanto créditos quanto premium). phone_number_collection: { enabled: false } adicionado nas sessions de créditos e assinatura.
- BuyCredits — Responsividade completa: Cards de créditos redesenhados com layout claro: ícone + nome + créditos à esquerda, badge de desconto à direita. Preço grande com preço antigo riscado ao lado. Tag "MAIS POPULAR" / "MELHOR CUSTO" agora posicionada FORA do card (absolute -top-3 z-10) para nunca ser cortada/escondida. Badge de desconto (-38%, etc) em bg-green-500/15 com border, sempre visível e não cortado por overflow.
- CreditsTab overflow fix: Container mudou de overflow-hidden para overflow-visible para que badges posicionados com absolute negative-top não sejam cortados.
- Grid Trust Section: grid-cols-1 sm:grid-cols-3 mudou para grid-cols-3 fixo para que os 3 badges (Agendar, Seguro, Instantâneo) fiquem sempre lado a lado, com texto menor (text-[9px]) no mobile.
//====== Edição 1.20 — 25/02/2026 — 21:30 ======//
Cupons, Agendamento, Fidelidade, Stripe Embedded Checkout
- Stripe Embedded Checkout: Novo StripeCheckoutModal com Stripe Embedded Checkout (ui_mode=embedded) — formulário de cartão/boleto/Google Pay/Apple Pay renderiza DENTRO do modal, sem redirecionar para checkout.stripe.com. createCheckout atualizado com modo embedded (retorna clientSecret). Verificação de pagamento com polling pós-completar.
- Stripe Fix: Removido payment_method_type 'link' que não estava ativo na conta Stripe (causava erro 500). Mantidos card + boleto.
- Sistema de Cupons de Desconto (NOVO): Entidade Coupon com código, tipo (percentual/fixo), valor, validade, limites de uso, packs aplicáveis, créditos bônus. Entidade CouponUsage para rastreio de uso por usuário. Backend validateCoupon — valida código, data, limites, calcula desconto. CouponInput — componente no checkout modal para aplicar cupom em tempo real com feedback visual. Admin CouponsPanel — CRUD completo de cupons no painel admin.
- Sistema de Agendamento de Consultas (NOVO): Entidade ScheduledConsultation com tipo, data, horário, pergunta, status, consentimento. ScheduleConsultation — modal de 2 passos: selecionar tipo → definir data/hora/pergunta. 8 tipos de consulta com custo em créditos. Consentimento explícito para salvar dados de pagamento (LGPD). Botão "Agendar Consulta" na Loja.
- Sistema de Fidelidade (NOVO): Entidade LoyaltyPoints com total, disponível, tier e resgatados. Entidade LoyaltyTransaction para histórico de earn/redeem. Backend redeemLoyaltyPoints — 3 ações: info, earn, redeem. Regra: 1 BRL = 10 pts base × multiplicador do tier. Tiers: Bronze (1x), Prata (1.2x), Ouro (1.5x), Diamante (2x). Resgate: 100 pts = 1 crédito. LoyaltyWidget — exibe tier, pontos, progresso, resgate na Loja. ProfileLoyalty — aba "Fidelidade" no perfil com histórico de pontos e consultas agendadas.
- Integração Automática: stripeWebhook, checkOrderStatus e checkPixStatus agora concedem pontos de fidelidade automaticamente após fulfillment.
- Admin: Novo painel "Cupons" no AdminPanel e AdminSidebar.
- Perfil: Nova aba "Fidelidade" no ProfileSidebar e Profile page.
- CheckoutModal: Simplificado para 2 opções claras (Pix recomendado + Cartão/Boleto/Digital). Cupom integrado acima dos métodos de pagamento. Preço atualiza em tempo real ao aplicar cupom.
//====== Edição 1.19 — 25/02/2026 — 18:00 ======//
Mercado Pago Pix Integration — Dual Payment System
- createMPCheckout (NOVO): Backend function que cria Preference no Mercado Pago. Apenas Pix habilitado (excluded: credit_card, debit_card, ticket, atm, prepaid_card). Cria Order com provider=mercadopago antes da preference. external_reference=order_id. notification_url aponta para mpWebhook. Testado — retorna URL de checkout MP válida.
- mpWebhook (NOVO): Recebe notificações do Mercado Pago (type=payment). Consulta /v1/payments/:id para status real. Fulfillment idempotente via Order.fulfilled. Validação de pack e amount. Loga Transaction com stripe_session_id=mp_paymentId.
- checkMPOrderStatus (NOVO): Verifica status do pedido MP. Consulta /v1/payments/:id diretamente. Fallback: busca por external_reference se payment_intent_id não existe. Fulfillment server-side se MP confirma approved mas webhook não processou.
- BuyCredits (Loja): Cada pacote agora tem 2 botões: "Pix" (teal/cyan, via Mercado Pago) e "Cartão / Boleto" (amber/purple, via Stripe). Loading state individual por botão+provider.
- PaymentResult: Detecta provider=mercadopago via URL param. Usa checkMPOrderStatus para polling de pedidos MP. Botão "Verificar Status" usa função correta por provider.
- Secrets usados: MERCADOPAGO_ACESS_TOKEN (produção). Stripe mantido para cartão/boleto.
- Testes: createMPCheckout pack=vidente → 200, URL MP válida, orderId retornado. checkMPOrderStatus → 200, status=pending. mpWebhook com payment fake → responde received (payment not found, esperado).
//====== Edição 1.18 — 25/02/2026 — 15:00 ======//
Payment System — Final Integration, End-to-End Tested
- pages/PaymentResult: Recriado do zero (arquivo anterior estava deletado). Exportado como default PaymentResult. 5 estados: loading, pending, success, cancelled, failed. Polling via checkOrderStatus com 20 tentativas. Botão "Verificar Status" para Pix/Boleto pendentes. Acentos corrigidos.
- createCheckout: Confirmado funcional — retorna Stripe Checkout URL live + orderId. URLs de retorno apontam para aliciamistica.com/PaymentResult com order_id. Payment methods: card + boleto.
- stripeWebhook: Confirmado funcional — 9 eventos registrados. Detecção de payment method via PaymentIntent.retrieve. Fulfillment idempotente via Order.fulfilled. Boleto NÃO entrega no voucher.
- checkOrderStatus: Confirmado funcional — consulta Stripe em tempo real. Fallback fulfillment se webhook falhar. 404 tratado graciosamente.
- Testes executados: createCheckout pack=vidente → 200, URL válida, orderId retornado. checkOrderStatus com orderId válido → 200, status=pending. checkOrderStatus com orderId inválido → 404.
- Secrets configurados: STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRET — todos live e ativos.
- PayPal/MercadoPago: Order entity tem campo provider pronto para paypal/mercadopago. Requer integração separada (não passa pelo Stripe BR). Arquitetura pronta, implementação pendente API keys.
//====== Edição 1.17 — 25/02/2026 — 12:00 ======//
Payment System — Full Integration & Testing (aliciamistica.com)
- createCheckout (rewrite): URLs de sucesso/cancelamento SEMPRE incluem order_id (antes dependia do frontend). Fallback base URL para aliciamistica.com. payment_method_types: card + boleto (Pix removido temporariamente se BR Stripe nao suportar automaticamente). Logging completo de email, pack e baseUrl.
- stripeWebhook (rewrite): Deteccao de payment_method via PaymentIntent.retrieve (mais preciso que session.payment_method_types). Admin level 99 protegido contra downgrade. Boleto NAO entrega no checkout.session.completed (espera async_payment_succeeded). Idempotencia via Order.fulfilled + Transaction table.
- checkOrderStatus (rewrite): Erro 404 tratado graciosamente (try/catch no .get). Fulfillment server-side se Stripe confirma paid mas webhook nao processou. Logging de session status e payment_status.
- PaymentResult: Removido arquivo .jsx duplicado. Arquivo unico em pages/PaymentResult com polling via checkOrderStatus. Estado "pending" com botao manual "Verificar Status".
- BuyCredits: Log de erro quando URL nao retornada. iframe check mantido.
- Testes: createCheckout testado — retorna URL Stripe Live valida + orderId. checkOrderStatus testado — retorna status pending/paid/fulfilled corretamente. 404 tratado graciosamente.
- Stripe Price IDs confirmados: Iniciante=price_1Szix...EHPN2U (R$24,90), Vidente=price_1Szix...qfqKXwA (R$49,90), Oraculo=price_1Szix...LTheYu (R$99,90), Supremo=price_1Szix...Ux8Kjuu (R$249,90), Premium=price_1Szkw...7MUFaCOg (R$49,90/mes).
//====== Edição 1.16 — 24/02/2026 — 22:00 ======//
Payment System v2 — Orders, Pix, Boleto, Idempotent Fulfillment
- Order Entity: Nova entidade Order com campos provider, provider_session_id, payment_intent_id, pack_id, credits_to_add, amount, currency, status (pending/paid/failed/expired/refunded), fulfilled (boolean), fulfilled_at, payment_method, fraud_flags.
- createCheckout: Agora cria Order com status=pending ANTES de criar Stripe session. Adiciona order_id nos metadata do Stripe. Habilita payment_method_types: card, pix, boleto para cobertura maxima no Brasil. Order atualizado com session_id apos criacao.
- stripeWebhook: Reescrito para usar Order.fulfilled como flag de idempotencia. Tratamento correto de Boleto (nao entrega no checkout.session.completed se payment_status != paid — espera async_payment_succeeded). Tratamento de Pix async. Evento checkout.session.expired marca Order como expired. Evento async_payment_failed marca Order como failed. Fulfillment so ocorre 1x (idempotente via fulfilled flag).
- checkOrderStatus (NOVO): Backend function para verificar status do pedido server-side. Consulta Stripe em tempo real. Se pagamento confirmado e order nao fulfilled, faz fulfillment imediato. Usado pelo frontend no botao "Verificar Status".
- PaymentResult: Novo estado "pending" com tela dedicada explicando que Pix/Boleto podem demorar. Botao "Verificar Status do Pagamento" para check manual. Polling via checkOrderStatus ao inves de polling de creditos. Informacoes de tempo (Pix ~5min, Boleto ~2 dias uteis).
- Webhook re-registrado: Eventos adicionados: checkout.session.expired, payment_intent.succeeded. Total de 9 eventos cobertos.
- Regras de seguranca: Boleto NAO entrega no voucher — so apos confirmacao Stripe. Pix tratado como potencialmente async. Fulfillment idempotente (Order.fulfilled flag). Fraud checks mantidos (pack validation, amount check, credits mismatch).
//====== Edição 1.12 — 23/02/2026 — 17:00 ======//
Hero Heading reformulado
- Hero H1: Frase alterada para "Tarot, Horóscopo, Mapa Astral e Compatibilidade Amorosa com IA".
//====== Edição 1.15 — 24/02/2026 — 14:00 ======//
UX Loja + Feed Cache + Social Proof + Mobile Nav
- BottomTabs (Mobile): Ícones agora roxos (tema). Loja com ícone dourado (ShoppingBag) para destaque. Indicador de aba ativa em roxo/dourado conforme contexto.
- Layout (Mobile header): Badge Premium/Comum + créditos ao lado do hambúrguer no mobile. Usuário vê status e saldo sem abrir menu.
- BuyCredits (Loja): Redesign completo — cada pacote agora tem botão "Comprar" individual (não mais um botão global). Layout horizontal com icon+info+preço. Remove confusão de seleção. Social proof counter adicionado.
- DailyFeed (Cache DB): Nova entidade DailyFeed para cache. Feed agora é gerado 1x ao dia por usuário e salvo no banco. Refresh não regenera (usa cache). Economia de tokens LLM.
- SocialProofCounter: Componente reutilizável com contadores crescentes (5001+ contas, 2035+ compras). Usado na Landing, Loja e PricingSection.
- RegisterModal: Subtítulo atualizado com "Junte-se a mais de 5.000 contas criadas".
- Cancelamento: Removidas referências a "Cancelamento Fácil" e reembolso em toda a app.
//====== Edição 1.14 — 24/02/2026 — 11:00 ======//
Stripe Payment System — Full Integration
- createCheckout: Allowed origins ampliados para aliciamistica.com, www.aliciamistica.com, aliciamistica.com.br, www.aliciamistica.com.br. Fallback base URL para aliciamistica.com. Validação de origin robusta.
- stripeWebhook: Reescrito com logging estruturado [webhook]. Tratamento de invoice.paid para renovações. Admin (level 99) protegido contra downgrade. Log de transação apenas no subscription.created (evita duplicatas). Idempotency check e fraud checks completos.
- PaymentResult: Polling separado para Premium (verifica user_level) e créditos. SuccessState diferenciado para premium vs créditos. Timeout de polling aumentado para 12 tentativas.
- BuyCredits: Mensagem de iframe atualizada com menção a aliciamistica.com. Feedback de erro melhorado quando URL de checkout não é gerada.
- Webhook registrado: Eventos: checkout.session.completed, async_payment_succeeded, async_payment_failed, subscription.created/updated/deleted, invoice.paid.
//====== Edição 1.13 — 23/02/2026 — 17:30 ======//
Responsividade Preços + Seções isoladas + Links sociais + Footer
- PricingSection: Tabs agora usam show/hide (não conditional render) para manter altura consistente. Cards menores no mobile (p-3, textos 10px, preço text-sm). Premium price text-3xl mobile. Benefits text-[11px] mobile.
- Features (Nossos Serviços): Removido landing-section class. Agora usa py-12 sm:py-20 lg:py-24 fixo para ficar isolada sem overlap de seções adjacentes.
- Explore (Destino + Carousel): Mesmo fix — py fixo ao invés de landing-section. Centralizado com padding adequado.
- Links sociais: Facebook → /aliciamistica, X → x.com/aliciamistica, TikTok → tiktok.com/@aliciamistica, Email → contato@aliciamistica.com.
- Footer bottom text: Alterado para "Tarot, Horóscopo, Mapa Astral e Compatibilidade Amorosa com IA".
- Navegação footer: Adicionados links Relacionamentos e Loja.
//====== Edição 1.11 — 23/02/2026 — 16:30 ======//
Responsividade global — Carrossel, Hero, Features, Footer
- TarotCarousel (BUG FIX): Removido layout flex-row com setas externas que causava "1/5" bugado. Setas agora sobrepostas no card (position absolute). Exemplo visual escalado 0.65x no mobile com container de altura fixa (140px mobile / 200px desktop). Removidos min-h-[200px] dos examples. Animações framer-motion removidas do card wrapper (só AnimatePresence slide). Tarot cards 20x32 no mobile.
- Hero: Título text-xl no mobile (era 1.65rem). Subtítulo text-xs (era 13px). Zodiac ring ícones 7x7 com gap-1, container max-w-[280px]. Scroll indicator 7x7. py-8 no mobile.
- Features Section: Grid 3 colunas no mobile (era 2). Cards p-3 mobile. Ícone 9x9 mobile. Título 11px, descrição oculta no mobile (hidden sm:block). rounded-xl mobile.
- Footer CTA: Título text-lg mobile. Subtítulo text-[11px]. py-10 / pb-20.
- landing-section CSS: Sem min-height no mobile/sm. lg usa 90dvh (era 100dvh). Seções fluem naturalmente no mobile.
//====== Edição 1.10 — 23/02/2026 — 14:00 ======//
Design profissional + Heading "Compatibilidade Amorosa" + Responsividade completa
- Hero Heading: Alterado de "com Inteligência Artificial" para "com Compatibilidade Amorosa". Subtitle reformulado com menção a IA. Font-weight extrabold. Tamanho mobile ajustado para 1.65rem com line-height 1.2.
- Design System — Opacidades: Migrado de bg-white/5 e border-white/10 para valores precisos (white/[0.03], white/[0.06], white/[0.08]) para visual mais limpo e profissional.
- MysticButton: Variante ghost redesenhada (bg-white/[0.04] com border sutil). Hover scale reduzido de 1.05 para 1.03 (mais profissional). Tamanho normal ajustado para mobile (13px).
- PricingSection: Badge de tag com opacidades sutis. Cards com hover bg transition. Premium card com backdrop-blur. Trust badges com opacidades profissionais.
- Features Section: Adicionado badge "Nossos Serviços" com ícone. Heading extrabold com tamanho lg:5xl. Cards com backdrop-blur e opacidades refinadas.
- TarotCarousel: Setas de navegação simplificadas (sem gradiente, bg sutil). Cards com border sutil. Label e counter com opacidades menores. CTA com rounded-xl e cor amber sólida. Indicadores menores e mais limpos.
- Descubra seu Destino: Texto simplificado e mais curto. Orbs de background com blur de 100px. Badge estilo consistente.
- Footer CTA: Background mais sutil. Orbs com blur de 80px. Botões com spacing reduzido.
- Zodiac Ring: Ícones 9x9 no mobile com gap 1.5. Container max-w-md no mobile para não espalhar. backdrop-blur nos círculos.
- landing-section CSS: Mobile usa min-height: auto com py 4rem. sm usa 80dvh. lg mantém 100dvh. Seções não forçam altura no mobile.
//====== Edição 1.09 — 22/02/2026 — 20:30 ======//
Responsividade completa — Landing e Loja
- PricingSection (Landing): Removido grid-stacking que causava sobreposição no mobile. Agora usa renderização condicional. Grid de pacotes mudou de 4 colunas (espremido) para 2 colunas no mobile. Section usa py fixo ao invés de landing-section com min-height.
- BuyCredits (Loja): Mesmo fix de grid-stacking. Cards de pacotes e premium ajustados com padding e fontes menores no mobile. Benefícios premium em grid 1col mobile / 2col desktop.
- Landing Hero: Elementos compactados no mobile — zodiac ring (5px icons), scroll indicator menor, espaçamentos reduzidos, título e subtítulo levemente menores. Hero agora usa min-h-[100dvh] sem subtrair 4rem.
- MysticButton: Sizes responsivos — padding e font menores no mobile, normais a partir de sm.
- landing-section CSS: Adicionado breakpoint sm (640px) intermediário para paddings.
//====== Edição 1.08 — 15/02/2026 — 20:45 ======//
Senha simplificada para 6 caracteres + Otimização de performance geral
- Senha simplificada: Removidas as exigências de maiúscula, número e caractere especial. Agora apenas mínimo 6 caracteres.
- Frontend — RegisterModal: Validação de senha reduzida para 6 chars, placeholder atualizado.
- Frontend — LoginModal (reset): Validação de nova senha no reset reduzida para 6 chars, placeholder atualizado.
- Backend — register: Validação server-side atualizada para mínimo 6 caracteres.
- Backend — resetPassword: Validação server-side atualizada para mínimo 6 caracteres.
- StarryBackground: Estrelas reduzidas de 100 para 50. Animações convertidas de framer-motion para CSS nativo (animate-pulse). Shooting star simplificada. Import do framer-motion removido.
- BottomTabs: Removido framer-motion completamente. Tab indicator convertido para div estático. Componente renderiza mais rápido sem animação de entrada.
- Landing — Hero: Zodiac signs convertidos de motion.div com stagger para divs estáticos. Scroll indicator convertido de framer-motion para CSS animate-bounce. min-height substituída por min-h para evitar conteúdo cortado no mobile.
- Landing — Sections: Removido min-height forçado no mobile para que seções respirem naturalmente. Desktop mantém min-height: 100dvh.
- TarotCarousel: Partículas flutuantes reduzidas de 8 para 4. Energy connection dots reduzidos de 5 para 3 e convertidos para CSS.
- Home: Removidas orbs de background duplicadas (já existem no StarryBackground do layout).
//====== Edição 1.39 — 04/03/2026 — 12:00 ======//
New "Início" Command Center
- Dashboard Redesign: Converted Dashboard into a "Command Center" style landing page ("Início") with quick actions for Tarot, Horoscope, and Birth Chart. Removed dense personal info list.
- Primary Navigation: Added "Início" (`/Dashboard`) as the first tab/link for authenticated users in `BottomTabs` and `Layout`.
- Smart Redirects: Login, Register, OAuth, and Landing now redirect authenticated users to `/Dashboard` ("Início") instead of `/Home` (Feed).
//====== Edição 1.40 — 04/03/2026 — 13:00 ======//
Auth Loop Bug Fix
- validateSession Fix: Corrigido bug crítico onde usuários com contas recém-logadas ou existentes eram imediatamente desconectados e solicitados a entrar novamente devido a uma falha na validação do token na Rota Protegida (ProtectedRoute).
//====== Edição 1.38 — 04/03/2026 — 11:00 ======//
Tablet & Android Viewport Fixes
- Dynamic Viewport (dvh): Atualizado o `Layout.jsx` de `h-screen` (100vh) para `h-[100dvh]` para corrigir o menu inferior sumindo em navegadores Android (onde a barra de endereços recolhe).
- Tablet Breakpoints (XL): O breakpoint para alternar entre a interface Mobile (Bottom Tabs) e Desktop (Sidebar/Top Nav) foi movido de `lg` (1024px) para `xl` (1280px).
- Ajuste de Padding: O Admin Panel e Profile agora consideram corretamente as áreas seguras e os espaçamentos em telas intermediárias.
//====== Edição 1.37 — 04/03/2026 — 10:30 ======//
Mobile Native Experience & Privacy (UX Upgrade)
- Delete Account Flow: Adicionado botão "Excluir Minha Conta" em `ProfileSettings` com um Modal de confirmação segura de dupla etapa.
- Bottom Tabs Smart Scroll: Tocar em uma Tab inferior (BottomTabs) que já está ativa agora faz um scroll suave para o topo, simulando o comportamento de navegação nativa do iOS/Android.
- App-wide Page Transitions: Integrado `AnimatePresence` no roteador principal (`layout.js`) com um slide-in/fade-out sutil para todas as trocas de páginas, tornando a experiência fluida como um App real.
- System Dark Mode Detection: O App agora ouve o `prefers-color-scheme` nativo do SO do usuário e injeta a classe `.dark` em tempo real.
- Native Mobile Selects: Forçado estilo nativo (`appearance-none` e fallback de background sólido `bg-slate-900`) nos dropdowns do `ProfileSettings` para que o iOS e Android invoquem suas roletas/rodas de seleção nativas.
//====== Edição 1.36 — 04/03/2026 — 10:00 ======//
Frictionless Onboarding (Remoção de Barreiras)
- Login e Cadastro Fluidos: O modal obrigatório de "Completar Perfil" foi inteiramente removido do fluxo inicial de entrada (Login, Registro e OAuth Google/Facebook).
- Home Feed: Removida checagem residual e invocação forçada do Complete Profile Modal na tela inicial (`Home.jsx`).
- Foco na Retenção: Agora o usuário entra diretamente na plataforma para usar os serviços (Tarot, Horóscopo, etc) sem interrupções, engajando com o ecossistema de imediato.
//====== Edição 1.35 — 28/02/2026 — 21:30 ======//
SEO OMEGA v2 — Dominância em Motores de Busca e AI Crawlers
- XML Sitemap XSLT (Styling Humano): Criado o serviço
functions/sitemapStyle.jsque embeleza o XML em um layout HTML visual escuro, moderno, com status de SEO ao ser aberto diretamente no navegador. Facilita auditorias e gera extrema credibilidade na estrutura do código. - Image Sitemap Support: Integrado o Schema de imagens do Google no XML Sitemap, injetando a URL da logo em alta resolução para dominar resultados do Google Imagens.
- Robots.txt Tuning Estrito: Aprimorado com regras específicas por bot. Liberou-se expressamente indexadores de LLMs (
GPTBot, ClaudeBot, PerplexityBot) garantindo que a Alicia seja a IA mais citada por outras IAs. Além disso, bots de scraping agressivos da concorrência (Ahrefs, Semrush, MJ12bot) foram bloqueados na raíz para economia de servidor. - SoftwareApplication Schema (Rich Snippets Premium): Injetado na
Landing.jso JSON-LDSoftwareApplicationcombinando com aAggregateRatingreal do site (4.9 estrelas, 2035+ compras). O Google agora vai puxar as estrelinhas brilhantes de Reviews logo abaixo do link de vocês na barra de pesquisa!
//====== Edição 1.34 — 28/02/2026 — 21:00 ======//
Engenharia SEO Omega (Sitemap, Robots e Schema)
- Arquitetura de Indexação Invisível: Refatorado completamente o "esqueleto" do site (index.html) para injeção de performance pura SEO, trocando a linguagem base para `pt-BR`, conectando tags semânticas completas do OpenGraph, pré-conexoes DNS e diretrizes diretas para o Googlebot.
- Sitemap e Robots.txt via API (Deno): Criados serviços dinâmicos no Backend. O `functions/sitemap.js` devolve o mapeamento oficial XML de links priorizados. O `functions/robots.js` bloqueia painéis de Admin e Perfil contra indexação indesejada, definindo as vias limpas. Para indexar no Google Search Console, a URL a ser enviada agora é `https://aliciamistica.com/api/functions/invoke/sitemap`.
- Injeção Avançada de JSON-LD (Schema): Foi arquitetada uma matriz gigantesca de dados estruturados na Landing Page. Além do tipo "WebSite" e "Organization", foi embutido um formato "FAQPage" dinâmico para gerar Rich Snippets (aquelas caixinhas de perguntas frequentes interativas) diretamente na página de pesquisa do Google antes mesmo do usuário entrar no site.
//====== Edição 1.33 — 28/02/2026 — 20:30 ======//
Correção Crítica no Perfil e Menu Mobile
- Push Notifications Bugfix (Crash): Corrigido erro grave (`ReferenceError: Notification is not defined`) que causava quebra total (tela branca) do Perfil em navegadores que não suportam Web Push (ex: Safari no iOS). Verificação de contexto global implementada de forma segura.
- Menu Hambúrguer: O bloco superior do menu lateral no mobile, contendo o nome do usuário e créditos, agora funciona como um grande botão/atalho para a tela "Meu Perfil", facilitando a navegação.
- Domínio Oficial: O link do sistema de afiliação na aba "Visão Geral" foi atualizado para apontar corretamente para `aliciamistica.com` independente do ambiente rodando.
//====== Edição 1.32 — 28/02/2026 — 19:30 ======//
Refinamento Admin, Relógio, Indicações e Logs de Segurança
- Melhoria na Landing Page: Autenticação separada em "Entrar" e "Cadastrar" no canto superior direito para aspecto mais profissional.
- UX Relógio BRT: Componente global flutuante desativado. Substituído por renderização pontual no Feed de previsões e na dashboard de Perfil.
- Programa de Indicações e Dashboard: Adicionada página focada em comissões por afiliação no Perfil com link correto (`aliciamistica.com`). Adicionado aba de relatórios analíticos de convites no Painel Admin com formulário de configuração dos ganhos diretos e vitais (cashback).
- Conquistas Real-Time (Badges): Integrado o gatilho de ganho de emblemas ao final do fluxo de Tarot e Mapa Astral, alertando o usuário via Toasts de sistema.
- Logs de Segurança e Admin UX: Logs de senhas e perfis simplificados exibindo com clareza o `ID` do usuário, as datas em horário BRT oficial do site, e o comparativo claro (De "Valor A" para "Valor B"). Adicionalmente, painel Admin Stats totalmente refeito para um formato analítico e painel de IP do usuário com responsividade total ajustada.
//====== Edição 1.31 — 28/02/2026 — 18:00 ======//
Gamificação, Compra Dinâmica e Programa de Indicações
- XP e Níveis (Gamificação): Agora, as consultas de Tarot (15 XP) e Mapas Astrais (30 XP) somam experiência automaticamente na barra do Perfil, além da integração total com as insignias (badges) já existentes.
- Indique um Amigo e Expiração: Lançado Programa de Fidelidade Viral. O usuário tem um link próprio de invite com resgate automático de créditos (+10) e 10% de cashback para quem o convidou, com total controle do Admin (`ConfigPanel`). Adicionado sistema e contagem regressiva de expiração de Créditos de 30 dias após recargas.
- UI Landing & Layout: Novo botão `Entrar / Cadastrar` persistente no Canto Superior Esquerdo (Landing). E botão prático `Adicionar Créditos` embutido direto nas telas de leitura Tarot e Mapa Astral, com o relógio BRT otimizado para display horizontal alinhado.
//====== Edição 1.30 — 28/02/2026 — 17:00 ======//
Correções UX, Responsividade e Mapa Astral
- Fricção da Landing Page: Removido o hook agressivo (`onClickCapture`) que bloqueava os botões do carrossel e abas de preços, permitindo navegação orgânica fluida sem exigência imediata de login.
- Responsividade de IP e Modal: Corrigida quebra de layout na modal de Informações do Usuário (Admin) no formato Mobile quando IPs ou localizações eram muito extensos, além de scroll horizontal para as abas.
- Gráfico Astrológico Refinado: Atualizado o motor de plotagem do Componente de Mapa Astral 2D. Os planetas agora são renderizados nos graus precisos do seus signos (constelações) em vez de ficarem fixos apenas pela casa, tornando o gráfico astronomicamente mais fiel.
- Micro-Ajustes: Link do Facebook corrigido e data do relógio BRT realinhada perfeitamente abaixo do horário.
//====== Edição 1.29 — 28/02/2026 — 16:00 ======//
Push Notifications, Contextualização IA Avançada e Correções API
- Notificações Push (Web Push): Implementado Service Worker (`sw.js`) e sistema no backend (`PushSubscription`) permitindo que os usuários ativem alertas proativos do app sem instalar nada (compatível com PWA). Gerenciador visual injetado na aba "Visão Geral" do Perfil.
- Aprimoramento do Recomendador de IA: O widget `AIRecommendations` foi modificado para interagir profundamente com os novos campos "Foco" e "Nível". Recomendações textuais comerciais apontam para pacotes específicos baseados no uso da pessoa.
- Fix API Geolocation: Corrigido comportamento assíncrono nas funções Deno `trackVisitor` e `trackLogin`. O sistema não dá mais *null* porque encapsulou blocos com `try/catch` encadeado, garantindo o resgate pelo `ipapi.co` se a API chave falhar, sem travar o processamento da Promise.
//====== Edição 1.28 — 28/02/2026 — 15:00 ======//
Correções de IP, Painel Admin e Auto-Save
- API de IP Robusta: Adicionado fallback para `ipapi.co` em todas as rotas de tracking (Visitas e Logins) para garantir a captura mesmo em casos de rate limit ou falta da API Key primária.
- Refinamento Responsivo do Admin: Substituídos elementos nativos e "selects" em Painel de Usuários e Transações por botões flat horizontais consistentes. Removido duplo-scroll quebrando limites da tela no Admin.
- Auto-Save no Perfil: Sistema de Perfil modernizado para salvar silenciosamente em background ao digitar. Adicionado botão direto "Editar Perfil" na Visão Geral (Overview).
//====== Edição 1.27 — 28/02/2026 — 14:00 ======//
Relógio Global, Personalização de IA e Atualização de Segurança de Email
- AI Recommendations: Novo widget de Feed impulsionado por IA que interpreta as métricas e o perfil do usuário para recomendar a melhor Leitura Astrológica, além de ser proativo recomendando pacotes de créditos se detectar escassez.
- Relógio BRT Global: Integrado um relógio de design vítreo interativo na parte inferior direita flutuante para garantir a sincronia total de transações e leituras exibindo horário de Brasília.
- Evolução do Perfil: Sem necessitar senha, usuários agora podem preencher seu "Foco Espiritual", "Nível com Tarot" e "Elemento Favorito". A alteração de E-mail foi integrada com checagem rigorosa (Senha + Código 2FA por e-mail).
//====== Edição 1.26 — 28/02/2026 — 13:00 ======//
Segurança e Perfil do Usuário
- Admin Real-Time: Métricas simuladas no painel principal removidas. Implementado cálculo de "Usuários Online Hoje" e "Usuários Online na Semana" baseando-se no registro `last_login_date`.
- Expansão de Perfil: Adição de novos campos ao usuário: WhatsApp, Data de Nascimento (editável), Hora de Nascimento, Local de Nascimento e Endereço, facilitando geração de Mapas no futuro.
- Log de Segurança (Audit Log): Criação de sistema e menu dedicado no Admin. Toda alteração feita pelo usuário em sua conta (Especialmente troca de senha) é salva num Log de Segurança indicando qual IP, Horário e Descrição Exata da alteração, prevenindo fraudes.
//====== Edição 1.25 — 28/02/2026 — 12:00 ======//
Aperfeiçoamento de Tracking e Painel de IPs
- Fuso Horário BRT (Brasília): Todas as métricas de IPs, Sessões e Visitantes agora exibem datas formatadas perfeitamente para o fuso 'America/Sao_Paulo' (DIA/MÊS/ANO HH:MM:SS), ignorando diferenças locais de máquina do usuário.
- Admin / Detalhes de Usuário: Nova aba "Sessões & IP" no painel individual de cada usuário com o tracking exato: Criação de conta (IP+Local), Último Login, Penúltimo Login, e listagem expandida de Dispositivos Conectados.
- Limite Anti-Spam de Cookies: Rastreamento de visitante agora usa 24 horas (86.400.000 ms) via Cookies Reais + LocalStorage, garantindo que o backend não receba requisições de página todos os segundos do mesmo usuário repetido.
//====== Edição 1.24 — 28/02/2026 — 10:00 ======//
Prevenção de Spam API, Track IP, Error Boundary Global
- Prevenção Spam API: Visitor log agora com throttling no frontend usando `localStorage` (1 hora) para evitar chamadas de API desnecessárias por usuário.
- Login/Device Tracking: Criação e tracking do `penultimate_login_ip`, `creation_ip` e `last_login_date`. Entidade `UserDevice` criada para listar dispositivos conectados do usuário, exibido nas Configurações do Perfil.
- ErrorBoundary Global ("ERRO VENV"): Adicionado ErrorBoundary no layout raiz. Se ocorrer erro de runtime, mostra caixa de erro amigável e botão para voltar.
- Admin Debug/Erros: Nova aba no admin (ErrorsPanel) listando todos os erros salvos automaticamente para depuração.
- Email & Visitor Panel: Email log atualizado com abas de filtro visual. Visitor panel agrupado por IP de visitante.
- Stripe.js Fix: Tratamento graceful para caso o AdBlocker bloqueie a biblioteca js.stripe.com.
//====== Edition 2.12 - 04/03/2026 - 23:30 ======//
- Tarot - Historico Completo: Novo botao "Historico" na pagina de Tarot abre modal com todas as leituras passadas, busca por pergunta/carta/palavra-chave, filtro por data, e botao de favoritar cada leitura.
- Tarot - Favoritar Leituras: Apos cada leitura, botao "Favoritar" salva no sistema de favoritos. No historico, estrela dourada indica favoritas.
- Perfil - Historico Liberado: Historico de leituras no perfil agora acessivel a TODOS os usuarios (nao mais exclusivo Premium). Adicionada busca por texto.
- Mapa Astral - Pre-fill Perfil: Formulario de mapa astral agora pre-preenche data, hora e local de nascimento do perfil do usuario.
- Mapa Astral - Grid de Planetas: Novo grid visual mostrando todos os planetas com signo, casa e grau. Clique em cada planeta abre detalhes.
- Mapa Astral - Historico: Novo botao "Meus Mapas" mostra todos os mapas astrais gerados com busca e opcao de recarregar mapa anterior.
- Mapa Astral - Sinastria Integrada: Sinastria ja estava funcional dentro da aba do mapa astral. Campos de data/hora/local do parceiro(a) validados.
- Entidade BirthChart - interpretation_level: Adicionado campo interpretation_level (basico/intermediario/avancado) ao schema da entidade.
//====== Edition 2.11 - 04/03/2026 - 22:30 ======//
- Dashboard - Carta do Dia removida: Removida a secao "Carta do Dia / Revelar Carta" do Dashboard conforme solicitado.
- Horoscopo - Simetria Grid: Grid de signos agora usa grid-cols-3 no mobile com max-w-4xl mx-auto e justify-items-center para centralizacao perfeita.
- Loja - Efeito Neon: Botao da Loja no BottomTabs e desktop nav agora tem efeito de neon pulsante (ping animation) para chamar atencao. Bug de carregamento duplo corrigido (fetch duplicado removido, agora usa customAuth.refreshUser).
- Admin Panel - Receita & Analytics: Novo painel com graficos de receita diaria (30 dias), crescimento semanal, ticket medio, e breakdown por pacote (BarChart + PieChart).
- Admin Panel - Saude do Sistema: Novo painel com indicadores de erros pendentes, usuarios ativos, novos cadastros, retencao 7 dias, e graficos de crescimento de usuarios e trafego de visitantes.
- Admin Panel - Acoes Rapidas: Novo painel para adicionar creditos a qualquer usuario por email e enviar emails rapidos diretamente do painel admin.
//====== Edition 2.10 - 04/03/2026 - 15:00 ======//
- Dashboard - Recomendacoes Personalizadas: Nova secao "Recomendado para Voce" no Dashboard com sugestoes baseadas no historico de leituras do usuario (Tarot, Horoscopo, Mapa Astral, Relacionamentos).
- Dashboard - Favoritos: Nova secao de Favoritos no Dashboard. Entidade Favorite criada para salvar leituras preferidas. Usuarios podem remover favoritos diretamente.
- Responsividade - Modais Auth: RegisterModal e LoginModal redesenhados para caber 100% na tela mobile sem scroll. Modais agora usam inset-0 e max-h-[100dvh] com padding compacto.
- Anti-Zoom Mobile: Viewport meta atualizado com maximum-scale=1.0 e user-scalable=no. Inputs forcados a 16px no mobile para evitar zoom do iOS. Gesture events bloqueados no Layout.
//====== Edition 3.10 - 23/03/2026 - 14:00 ======//
Security Hardening + Code Quality (Audit Response)
- Auth — JWT Secret Hardcoded Removed: Todas as 5 funcoes de auth (login, register, validateSession, oauthGoogle, oauthFacebook) agora usam EXCLUSIVAMENTE Deno.env.get("JWT_SECRET"). Fallback para string hardcoded eliminado. Se JWT_SECRET nao estiver configurado, retorna erro 500.
- Auth — Unsafe Decode Removed: validateSession.ts nao faz mais decode sem verificacao de assinatura. A funcao decodePayloadUnsafe foi completamente removida. Token com assinatura invalida retorna 401 imediatamente.
- Auth — Password Salt from Env: register e login agora usam Deno.env.get("SALT_HASH") como salt de senha (fallback "alicia-salt-2026" mantido apenas para compatibilidade com hashes existentes).
- OAuth — Welcome Credits Fix: oauthGoogle e oauthFacebook agora leem AppConfig para definir welcome_credits (era hardcoded 5). Novos usuarios OAuth recebem os mesmos creditos que usuarios email.
- OAuth — Salt from Env: Hashing de senha aleatoria em OAuth usa SALT_HASH do ambiente.
- SDK — v0.8.21 Unified: login, oauthGoogle e oauthFacebook atualizados de @base44/sdk@0.8.20 para @base44/sdk@0.8.21.
- SEOMasterPlan.jsx — JSX Fix: Caracter < em texto JSX substituido por texto descritivo ("menos de"), eliminando erro sintatico de compilacao.
//====== Edition 3.00 - 23/03/2026 - 00:30 ======//
AARRR Growth Strategy — Trilho 1 (Vazamentos Criticos)
- Email CTAs — Dominio Canonico: Todas as funcoes de email (sendDailyHoroscopes, sendWelcomeEmail, sendEngagementEmails, email inline no register) agora usam APP_DOMAIN = 'https://aliciamistica.com' com deep-links por pagina e UTM params completos. Eliminado window.location.origin (inexistente em Deno) e fallback para aliciamistica.base44.app.
- Email — Welcome com CTA e Creditos Reais: sendWelcomeEmail agora le AppConfig para exibir o valor real de welcome_credits (era hardcoded "5"). Adicionado botao "Abrir meu presente" com link absoluto + UTM. Footer com link de descadastro.
- Email — Daily Horoscope Deep-link: CTA primario aponta para /Horoscope?utm_source=email&utm_medium=daily_horoscope&utm_campaign=horoscope_{sign}. CTA secundario para /Dashboard. Footer com link de gerenciamento de notificacoes.
- Email — Engagement (Weekly/Promo/Winback): Todos os 3 templates de sendEngagementEmails receberam CTAs com dominio canonico, UTMs por tipo, e footer com unsubscribe link.
- Visitor Tracking — Dedupe por IP: trackVisitor refatorado de list('-created_date', 1) (checagem global) para filter({ ip }) (checagem por IP). Elimina inflacao de contagens quando outros IPs visitam entre duas visitas do mesmo IP.
- Streak/Timezone — BRT (UTC-3): updateStreak e trackActivity agora usam getTodayBRT() para calcular "hoje" em horario de Brasilia, eliminando quebra injusta de streak na virada de meia-noite UTC.
- Social Proof — Dados Reais: SocialProofCounter substituiu contador artificial (numeros acelerando) por contagem real de CustomUser e Order via Promise.allSettled. Nao exibe nada se as APIs falharem (graceful degradation).
- Schema — AggregateRating Removido: Removido self-serving AggregateRating do structured data da Landing (risco de penalidade Google rich results).
- UTM Attribution — End-to-End: Landing persiste utm_source/medium/campaign em localStorage. RegisterModal envia UTMs ao backend. Funcao register grava no campo creation_location do CustomUser (formato: "source | medium | campaign").
- Registration Copy: Removido texto artificial "5.000 contas criadas" do RegisterModal. Substituido por "Comece sua jornada mistica agora".
- SDK — v0.8.21: Todos os backend functions atualizados para @base44/sdk@0.8.21.
//====== Edition 2.15 - 09/03/2026 - 22:00 ======//
- SDK Unificado v0.8.20: Todas as 22+ backend functions atualizadas de @base44/sdk@0.8.6 para @base44/sdk@0.8.20. Funcoes corrigidas: secureProfileUpdate, trackActivity, createCheckout, stripeWebhook, checkOrderStatus, createPixCheckout, checkPixStatus, checkAchievements, generateDailyFeed, updateUserCredits, redeemLoyaltyPoints, validateCoupon, adminSendEmail, createMPCheckout, mpWebhook, checkMPOrderStatus, updateStreak, sendDailyHoroscopes, sendEngagementEmails, sendWelcomeEmail, savePushSubscription, oauthFacebook, sendPushNotification, generateServiceImages.
- Auth Flow - Registro para Dashboard: RegisterModal agora redireciona para Dashboard 2 segundos apos registro com sucesso, sem esperar animacao completa de coin rain. Elimina race condition onde onSuccess nao era chamado se a animacao demorasse.
- Auth Flow - Login para Dashboard: LoginModal agora sempre chama onSuccess (nunca fallback para onClose), garantindo que AuthGate controle o redirect para Dashboard.
- AuthGate - Race Condition Fix: handleSuccessfulAuth agora calcula targetUrl antes de limpar estado, e usa setTimeout(50ms) para garantir flush de estado React antes da navegacao. handleCloseModals verifica se usuario ja esta autenticado antes de redirecionar para Landing, evitando conflito com handleSuccessfulAuth.
- ProtectedRoute - Deduplicacao: Removida logica duplicada de abertura de modais do ProtectedRoute. AuthGate ja gerencia deteccao de rotas protegidas e abertura de modais. ProtectedRoute agora apenas valida sessao e renderiza loading/content.
- Rotas - Arquitetura: Confirmado que Base44 impoe routing flat (pages/PageName.js, sem subpastas). Rotas canonicas mantidas: /Dashboard (Inicio), /Home (Feed), /Tarot, /Horoscope, /BirthChart, /Relationships, /BuyCredits, /Profile, /AdminPanel. Todos os pontos de navegacao (Layout, BottomTabs, Landing CTAs, Dashboard cards) ja usam createPageUrl() com os nomes corretos de pagina.
//====== Edition 4.00 - 24/03/2026 - 14:00 ======//
Full Technical Audit Response + Roadmap
- Audit Received: Comprehensive external audit identified 12 issues across security, code quality, UX, and architecture. 103 lint errors, typecheck failures, and partial feature implementations flagged.
- Auth Status (Verified): JWT_SECRET hardcoded fallback was ALREADY removed in Edition 3.10. All 5 auth functions (login, register, validateSession, oauthGoogle, oauthFacebook) use Deno.env.get('JWT_SECRET') exclusively. validateSession performs strict signature verification with no unsafe decode fallback. Password hashing uses SHA-256 with SALT_HASH from environment.
- SEOMasterPlan.jsx (Verified): The reported JSX syntax error (bare angle bracket) was ALREADY fixed in Edition 3.10. Current file uses escaped string in KPI component. No syntax error present.
- SocialProofCounter Fix: Reduced from listing ALL users/orders (privacy + performance risk) to fetching with limit=1. Added '+' suffix to counts for honest representation.
- Layout Desktop Nav Fix: Further compacted desktop nav — reduced font to 11px, icons to 3.5x3.5, gaps to 0.5, removed framer-motion from auth buttons. Topbar no longer overflows on 1280px screens.
- sendScheduledReport Confirmed: Sends HTML email summary only — does NOT attach PDF/CSV. exportReport.ts generates PDF/CSV on-demand. These are separate features, not integrated.
Improvement Roadmap (Prioritized)
- P1 — Auth Hardening (Remaining): Migrate SHA-256 to bcrypt/argon2 for password hashing. Add token refresh mechanism. Consider httpOnly cookie strategy. Add rate limiting on login/register endpoints.
- P2 — Astrological Engine: Current planetary positions use day-of-year approximations. Need Swiss Ephemeris or equivalent for real astronomical calculations. IA should remain interpretive layer only.
- P3 — Push Notifications: sw.js service worker file missing from repository. Need to create SW, register in app, configure VAPID keys, and complete the push subscription flow.
- P4 — Scheduled Report Attachments: sendScheduledReport should call exportReport internally and attach PDF/CSV to email via Base44 file upload + signed URL.
- P5 — Code Quality: 103 lint errors to resolve (unused vars, conditional hooks, missing deps). TypeScript strict mode adoption. Remove dead imports across components.
- P6 — Mobile Navigation: BottomTabs capped at 7 tabs, hiding Biblioteca, Previsao, Caderno, Analytics, Notificacoes. Need 'More' overflow or reorganized navigation.
- P7 — Entity Schema Documentation: No entity schemas versioned in repository. Need entities.md documenting all 20+ entities with fields, constraints, and relationships.
- P8 — Automation Documentation: Cron jobs and entity automations not versioned. Need automations.md listing all scheduled tasks and triggers.
Maturity Assessment
- Product: Intermediate-Advanced — broad feature set, clear retention/monetization strategy
- Engineering: Intermediate-Low — compiles and deploys but lacks tests, schema versioning, and lint compliance
- Security: Improved (3.10) — no more hardcoded secrets, but SHA-256 hashing and localStorage tokens remain risks
- Astrological Core: Synthetic — approximate formulas, not real astronomical calculation
- Evolution Potential: High — architecture supports incremental hardening without rewrite