fix: brainstorm infinite loop, ghost cursor, embedding ::vector cast, semantic search, billing stats, usage meter accordion
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 5s

- Fix useBrainstormSocket: stable guestId via useRef, remove setState in cleanup
- Fix GhostCursor: direct DOM manipulation via refs, no useState re-renders
- Fix all SQL embedding queries: add ::vector cast on text columns
- Fix embedding truncation to 15000 chars (under 8192 token limit)
- Fix NoteEmbedding INSERT: remove non-existent updatedAt column
- Fix billing page: show all quota stats in grid instead of single metric
- Fix usage meter: accordion expand/collapse, per-feature detail
- Fix semantic search: rebuild 103 note embeddings, ::vector cast on vectorSearch
- Fix brainstorm expand/manual-idea/create: ::vector cast on embedding SQL
This commit is contained in:
Antigravity
2026-05-16 18:50:34 +00:00
parent ee8e2bda59
commit 8c7ca69640
117 changed files with 11732 additions and 834 deletions

View File

@@ -890,7 +890,7 @@
"recentNotesUpdateFailed": "Falha ao atualizar configuração de notas recentes"
},
"aiSettings": {
"title": "Configurações de IA",
"title": "AI",
"description": "Configure seus recursos e preferências com IA",
"features": "Recursos de IA",
"provider": "Provedor de IA",
@@ -917,7 +917,8 @@
"autoLabeling": "Sugestões de rótulos",
"autoLabelingDesc": "Sugere e aplica rótulos automaticamente às suas notas",
"noteHistory": "Histórico de notas",
"noteHistoryDesc": "Habilite snapshots de versão e restauração do histórico"
"noteHistoryDesc": "Habilite snapshots de versão e restauração do histórico",
"titleSuggestions": "Sugestão de títulos"
},
"general": {
"loading": "Carregando...",
@@ -1115,7 +1116,13 @@
"languageDetection": "Detecção de idioma",
"languageDetectionDesc": "Detecta automaticamente o idioma de cada nota",
"autoLabeling": "Rotulagem automática",
"autoLabelingDesc": "Sugere e aplica rótulos automaticamente"
"autoLabelingDesc": "Sugere e aplica rótulos automaticamente",
"fallbackSectionTitle": "Provedor de contingência (opcional)",
"fallbackSectionDescription": "Usado automaticamente em erros do provedor (429, 5xx). Uma nova tentativa em 1,5 s.",
"fallbackProvider": "Provedor de contingência",
"fallbackModel": "Modelo de contingência",
"fallbackNone": "Nenhum (desativado)",
"fallbackModelPlaceholder": "ex.: gpt-4o-mini"
},
"resend": {
"title": "Resend (Recomendado)",
@@ -1173,6 +1180,8 @@
"deleteFailed": "Falha ao excluir",
"roleUpdateSuccess": "Função do usuário atualizada para {role}",
"roleUpdateFailed": "Falha ao atualizar função",
"tierUpdateSuccess": "Subscription updated to {tier}",
"tierUpdateFailed": "Failed to update subscription",
"demote": "Rebaixar",
"promote": "Promover",
"confirmDelete": "Tem certeza de que deseja excluir este usuário?",
@@ -1180,6 +1189,7 @@
"name": "Nome",
"email": "E-mail",
"role": "Função",
"subscription": "Subscription",
"createdAt": "Criado em",
"actions": "Ações"
},
@@ -1371,7 +1381,7 @@
"loading": "Carregando..."
},
"dataManagement": {
"title": "Gerenciamento de Dados",
"title": "Data",
"toolsDescription": "Ferramentas para manter a saúde do seu banco de dados",
"exporting": "Exportando...",
"importing": "Importando...",
@@ -1436,7 +1446,7 @@
"fontJetBrainsMono": "JetBrains Mono"
},
"generalSettings": {
"title": "Configurações gerais",
"title": "General",
"description": "Configurações gerais do aplicativo"
},
"toast": {
@@ -1622,7 +1632,7 @@
"collapse": "Recolher"
},
"mcpSettings": {
"title": "Configurações MCP",
"title": "MCP",
"description": "Gerencie suas chaves API e configure ferramentas externas",
"whatIsMcp": {
"title": "O que é MCP?",
@@ -2211,7 +2221,9 @@
"exportDefaultNoteTitle": "Synthesis",
"exportOpening": "Opening…",
"ownerBadge": "Owner",
"waveBadge": "Wave {wave}"
"waveBadge": "Wave {wave}",
"quotaGuest": "O anfitrião da sessão atingiu o limite de IA. Peça-lhe para atualizar o plano.",
"quotaHost": "Atingiu o limite de IA deste brainstorm. Atualize o plano para continuar."
},
"usageMeter": {
"packName": "AI Discovery Pack",
@@ -2323,6 +2335,215 @@
"checkoutSuccessBody": "Bem-vindo ao {tier}. As suas funcionalidades estão agora desbloqueadas.",
"subscriptionType": "subscriptionType",
"renewalDate": "renewalDate",
"noRenewalDate": "—"
"noRenewalDate": "—",
"currentUsage": "Uso atual",
"currentPeriod": "Período atual",
"aiCredits": "Créditos IA",
"used": "usados",
"billing": "Faturação",
"renewal": "Renovação",
"paidPlanDesc": "Sua assinatura renova automaticamente.",
"businessDescription": "Para equipes e líderes de produto."
},
"landing": {
"nav": {
"features": "Funcionalidades",
"agents": "Agentes IA",
"brainstorm": "Brainstorm",
"pricing": "Preços",
"tech": "Arquitetura",
"login": "Entrar",
"cta": "Começar"
},
"hero": {
"badge": "Impulsionado por inteligência artificial",
"title1": "O seu segundo cérebro,",
"title2": "finalmente amplificado.",
"subtitle": "O Momento é mais do que uma app de notas. É um ecossistema inteligente que liga, analisa e desenvolve as suas ideias em tempo real com 6 tipos de agentes IA e pesquisa semântica de ponta.",
"cta": "Registe-se agora",
"secondary": "Ver funcionalidades",
"memoryEcho": "Memory Echo",
"memoryEchoText": "\"Ligação detetada ao seu projeto de design sustentável de março de 2024...\"",
"brainstormLive": "Brainstorm Live",
"ideasGenerated": "+12 ideias geradas"
},
"features": {
"label": "Capacidades IA",
"title": "Inteligência fluida,",
"title2": "entrelaçada em cada palavra.",
"desc": "O Momento orquestra as suas ideias através de uma arquitetura multi-fornecedor.",
"f1Title": "Pesquisa semântica",
"f1Desc": "Deixe de pesquisar por palavras-chave. Encontre por conceito. O nosso motor híbrido Vector + FTS compreende a intenção por trás das suas notas.",
"f2Title": "Chat RAG contextual",
"f2Desc": "Converse com o seu conhecimento. Os nossos agentes leem as suas notas, exploram a web e analisam documentos para responder com precisão.",
"f3Title": "Escrita aumentada",
"f3Desc": "Reformulação, sugestões de títulos, etiquetagem automática e resumos. A IA trabalha em segundo plano para estruturar o seu pensamento."
},
"agents": {
"label": "Agentes especializados",
"title": "Delegue o trabalho complexo.",
"desc": "6 tipos de agentes IA autónomos para automatizar pesquisa, resumos e apresentações.",
"scraper": {
"title": "Scraper",
"desc": "Extrai URLs, analisa feeds RSS e sintetiza informação com colocação inteligente de imagens."
},
"researcher": {
"title": "Researcher",
"desc": "Gera consultas complexas, explora fontes web e escreve notas de pesquisa estruturadas."
},
"slideGen": {
"title": "Slide Gen",
"desc": "Transforma as suas notas em apresentações PowerPoint profissionais ou slides HTML interativos."
},
"monitor": {
"title": "Monitor",
"desc": "Analisa continuamente os seus cadernos para detetar tendências e novos insights."
},
"diagramGen": {
"title": "Diagram Gen",
"desc": "Converte ideias em diagramas Excalidraw fluidos (mapas mentais, fluxogramas) com auto-layout."
},
"custom": {
"title": "Custom",
"desc": "Defina os seus próprios agentes com papéis e fontes de dados específicos."
}
},
"brainstorm": {
"label": "Ondas de pensamento",
"title": "Brainstorming radial em tempo real.",
"waveGeneration": {
"title": "Geração por ondas",
"desc": "Variações, analogias e depois disrupções. A IA leva o seu conceito inicial aos limites."
},
"collaboration": {
"title": "Colaboração nativa",
"desc": "Cursores fantasma IA, avatares sincronizados e movimento de nós em tempo real."
},
"export": {
"title": "Exportação semântica",
"desc": "Converta todo o brainstorming em notas estruturadas com um clique."
},
"disruptionLabel": "DISRUPÇÃO",
"disruptionText": "Arquitetura modular 2.0",
"analogyLabel": "ANALOGIA",
"analogyText": "O ciclo das marés"
},
"tech": {
"label": "Arquitetura e fornecedores",
"title": "Ligue o seu próprio modelo de IA.",
"tags": {
"title": "Tags",
"desc": "Configurável de forma independente com qualquer modelo."
},
"embeddings": {
"title": "Embeddings",
"desc": "Configurável de forma independente com qualquer modelo."
},
"chatRag": {
"title": "Chat RAG",
"desc": "Configurável de forma independente com qualquer modelo."
}
},
"pricing": {
"label": "Planos e preços",
"title": "Escolha o seu nível de amplificação.",
"desc": "Opções flexíveis para mentes criativas, do uso individual a grandes organizações.",
"monthly": "Mensal",
"annual": "Anual",
"perMonth": "/mês",
"perMonthAnnual": "/mês, faturado anualmente",
"perUser": "+ 3.90€/user",
"perUserAnnual": "+ 2.90€/user, billed annually",
"popular": "Mais popular",
"basic": {
"name": "Basic",
"desc": "Descubra a magia do Momento.",
"cta": "Começar",
"feature0": "100 notas máx.",
"feature1": "3 cadernos",
"feature2": "50 créditos IA (vitalícios)",
"feature3": "Pesquisa semântica",
"feature4": "Histórico 7 dias"
},
"pro": {
"name": "Pro",
"desc": "Para consultores e criadores exigentes.",
"cta": "Upgrade para Pro",
"feature0": "Notas ilimitadas",
"feature1": "BYOK (OpenAI/Anthropic)",
"feature2": "200 pesquisas semânticas",
"feature3": "Agentes (12 execuções/mês)",
"feature4": "Histórico 30 dias",
"feature5": "Suporte por email"
},
"business": {
"name": "Business",
"desc": "Para equipas e product managers.",
"cta": "Escolher Business",
"feature0": "10 colaboradores incluídos",
"feature1": "BYOK (13 fornecedores)",
"feature2": "1000 pesquisas semânticas",
"feature3": "Agentes (60 execuções/mês)",
"feature4": "Brainstorm ilimitado",
"feature5": "Acesso API"
},
"enterprise": {
"name": "Enterprise",
"desc": "Memória organizacional segura.",
"cta": "Contactar vendas",
"feature0": "Tudo do Business",
"feature1": "Agentes ilimitados",
"feature2": "SSO / SAML",
"feature3": "Audit Logs e SLA",
"feature4": "Suporte dedicado",
"feature5": "Onboarding ao vivo"
}
},
"byok": {
"label": "Tecnologia cloud aberta",
"title": "A estratégia BYOK",
"desc": "Já tem chaves API OpenAI, Anthropic ou Google? Ligue-as diretamente ao Momento. Use IA sem limites de crédito impostos, pagando apenas o que consome no seu fornecedor favorito.",
"noLockin": "Sem lock-in",
"noLockinDesc": "Mude de fornecedor em 1 clique.",
"cost": "Custos otimizados",
"costDesc": "Pague o preço direto da API.",
"configLabel": "Config multi-fornecedor"
},
"cta": {
"title1": "Pronto para libertar o seu",
"title2": "pleno potencial?",
"desc": "Junte-se a milhares de investigadores, designers e pensadores que já usam o Momento para construir o futuro.",
"button": "Lançar Momento"
},
"footer": {
"desc": "O segundo cérebro amplificado por IA. Feito para mentes criativas.",
"product": {
"title": "Produto",
"link0": "Changelog",
"link1": "Documentação",
"link2": "Roadmap",
"link0Href": "#",
"link1Href": "#",
"link2Href": "#"
},
"community": {
"title": "Comunidade",
"link0": "Discord",
"link1": "Twitter / X",
"link2": "LinkedIn",
"link0Href": "#",
"link1Href": "#",
"link2Href": "#"
},
"legal": {
"title": "Legal",
"link0": "Privacidade",
"link1": "Termos de serviço",
"link2": "Cookies",
"link0Href": "#",
"link1Href": "#",
"link2Href": "#"
}
}
}
}
}