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": "최근 노트 설정 업데이트 실패"
},
"aiSettings": {
"title": "AI 설정",
"title": "AI",
"description": "AI 기반 기능 및 환경설정 구성",
"features": "AI 기능",
"provider": "AI 공급자",
@@ -917,7 +917,8 @@
"autoLabeling": "라벨 제안",
"autoLabelingDesc": "노트에 라벨을 자동으로 제안하고 적용합니다.",
"noteHistory": "메모 기록",
"noteHistoryDesc": "버전 스냅샷 및 기록 복원 활성화"
"noteHistoryDesc": "버전 스냅샷 및 기록 복원 활성화",
"titleSuggestions": "제목 제안"
},
"general": {
"loading": "로딩 중...",
@@ -1115,7 +1116,13 @@
"languageDetection": "언어 감지",
"languageDetectionDesc": "각 노트의 언어 자동 감지",
"autoLabeling": "자동 라벨링",
"autoLabelingDesc": "라벨 자동 제안 및 적용"
"autoLabelingDesc": "라벨 자동 제안 및 적용",
"fallbackSectionTitle": "대체 제공업체(선택)",
"fallbackSectionDescription": "제공업체 오류(429, 5xx) 시 자동 사용. 1.5초 이내 1회 재시도.",
"fallbackProvider": "대체 제공업체",
"fallbackModel": "대체 모델",
"fallbackNone": "없음(비활성화)",
"fallbackModelPlaceholder": "예: gpt-4o-mini"
},
"resend": {
"title": "Resend (권장)",
@@ -1173,6 +1180,8 @@
"deleteFailed": "삭제 실패",
"roleUpdateSuccess": "사용자 역할이 {role}(으)로 업데이트되었습니다",
"roleUpdateFailed": "역할 업데이트 실패",
"tierUpdateSuccess": "Subscription updated to {tier}",
"tierUpdateFailed": "Failed to update subscription",
"demote": "강등",
"promote": "승격",
"confirmDelete": "확실합니까? 이 작업은 되돌릴 수 없습니다.",
@@ -1180,6 +1189,7 @@
"name": "이름",
"email": "이메일",
"role": "역할",
"subscription": "Subscription",
"createdAt": "생성일",
"actions": "작업"
},
@@ -1371,7 +1381,7 @@
"loading": "로딩 중..."
},
"dataManagement": {
"title": "데이터 관리",
"title": "Data",
"toolsDescription": "데이터베이스 상태를 유지하는 도구",
"exporting": "내보내는 중...",
"importing": "가져오는 중...",
@@ -1436,7 +1446,7 @@
"fontJetBrainsMono": "JetBrains Mono"
},
"generalSettings": {
"title": "일반 설정",
"title": "General",
"description": "일반 애플리케이션 설정"
},
"toast": {
@@ -1622,7 +1632,7 @@
"collapse": "접기"
},
"mcpSettings": {
"title": "MCP 설정",
"title": "MCP",
"description": "API 키 관리 및 외부 도구 구성",
"whatIsMcp": {
"title": "MCP란 무엇인가요?",
@@ -2211,7 +2221,9 @@
"exportDefaultNoteTitle": "Synthesis",
"exportOpening": "Opening…",
"ownerBadge": "Owner",
"waveBadge": "Wave {wave}"
"waveBadge": "Wave {wave}",
"quotaGuest": "세션 호스트의 AI 한도에 도달했습니다. 플랜 업그레이드를 요청하세요.",
"quotaHost": "이 브레인스토밍의 AI 한도에 도달했습니다. 계속하려면 플랜을 업그레이드하세요."
},
"usageMeter": {
"packName": "AI Discovery Pack",
@@ -2323,6 +2335,215 @@
"checkoutSuccessBody": "{tier}에 오신 것을 환영합니다.",
"subscriptionType": "subscriptionType",
"renewalDate": "renewalDate",
"noRenewalDate": "—"
"noRenewalDate": "—",
"currentUsage": "현재 사용량",
"currentPeriod": "현재 기간",
"aiCredits": "AI 크레딧",
"used": "사용됨",
"billing": "결제",
"renewal": "갱신",
"paidPlanDesc": "구독이 자동으로 갱신됩니다.",
"businessDescription": "팀 및 프로덕트 리더를 위한 요금제."
},
"landing": {
"nav": {
"features": "기능",
"agents": "AI 에이전트",
"brainstorm": "Brainstorm",
"pricing": "요금",
"tech": "아키텍처",
"login": "로그인",
"cta": "시작하기"
},
"hero": {
"badge": "인공지능으로 구동",
"title1": "당신의 제2의 뇌,",
"title2": "드디어 증폭됩니다.",
"subtitle": "Momento는 단순한 메모 앱이 아닙니다. 6종류의 AI 에이전트와 최첨단 시맨틱 검색으로 아이디어를 실시간으로 연결·분석·발전시키는 지능형 생태계입니다.",
"cta": "지금 가입하기",
"secondary": "기능 보기",
"memoryEcho": "Memory Echo",
"memoryEchoText": "\"2024년 3월 지속 가능 디자인 프로젝트와의 연결 감지...\"",
"brainstormLive": "Brainstorm Live",
"ideasGenerated": "+12개 아이디어 생성"
},
"features": {
"label": "AI 역량",
"title": "유연한 지능,",
"title2": "모든 단어에 스며듭니다.",
"desc": "Momento는 멀티 프로바이더 아키텍처로 아이디어를 조율합니다.",
"f1Title": "시맨틱 검색",
"f1Desc": "키워드 검색은 그만. 개념으로 찾으세요. 하이브리드 Vector + FTS 엔진이 노트 뒤의 의도를 이해합니다.",
"f2Title": "컨텍스트 RAG 채팅",
"f2Desc": "지식과 대화하세요. 에이전트가 노트를 읽고, 웹을 탐색하며, 문서를 분석해 정확히 답합니다.",
"f3Title": "증강 글쓰기",
"f3Desc": "재작성, 제목 제안, 자동 태깅, 요약. AI가 백그라운드에서 사고를 구조화합니다."
},
"agents": {
"label": "전문 에이전트",
"title": "복잡한 작업을 위임하세요.",
"desc": "연구, 요약, 프레젠테이션을 자동화하는 6종류의 자율 AI 에이전트.",
"scraper": {
"title": "Scraper",
"desc": "URL을 수집하고 RSS를 파싱하며 이미지 배치까지 똑똑하게 정보를 종합합니다."
},
"researcher": {
"title": "Researcher",
"desc": "복잡한 쿼리를 생성하고 웹 소스를 탐색해 구조화된 연구 노트를 작성합니다."
},
"slideGen": {
"title": "Slide Gen",
"desc": "노트를 전문 PowerPoint 또는 인터랙티브 HTML 슬라이드로 변환합니다."
},
"monitor": {
"title": "Monitor",
"desc": "노트북을 지속 분석해 트렌드와 새로운 인사이트를 감지합니다."
},
"diagramGen": {
"title": "Diagram Gen",
"desc": "아이디어를 Excalidraw의 유려한 다이어그램(마인드맵, 플로차트)으로 자동 배치합니다."
},
"custom": {
"title": "Custom",
"desc": "역할과 데이터 소스를 지정한 맞춤 에이전트를 정의하세요."
}
},
"brainstorm": {
"label": "사고의 파동",
"title": "실시간 방사형 브레인스토밍.",
"waveGeneration": {
"title": "웨이브 생성",
"desc": "변형, 유추, 그다음 파괴적 혁신. AI가 초기 개념을 한계까지 밀어냅니다."
},
"collaboration": {
"title": "네이티브 협업",
"desc": "AI 고스트 커서, 동기화된 아바타, 실시간 노드 이동."
},
"export": {
"title": "시맨틱보내기",
"desc": "브레인스토밍 전체를 한 번의 클릭으로 구조화된 노트로 변환."
},
"disruptionLabel": "파괴적 혁신",
"disruptionText": "모듈형 아키텍처 2.0",
"analogyLabel": "유추",
"analogyText": "조석의 리듬"
},
"tech": {
"label": "아키텍처 및 프로바이더",
"title": "자신만의 AI 모델을 연결하세요.",
"tags": {
"title": "Tags",
"desc": "어떤 모델과도 독립적으로 설정 가능."
},
"embeddings": {
"title": "Embeddings",
"desc": "어떤 모델과도 독립적으로 설정 가능."
},
"chatRag": {
"title": "Chat RAG",
"desc": "어떤 모델과도 독립적으로 설정 가능."
}
},
"pricing": {
"label": "플랜 및 요금",
"title": "증폭 수준을 선택하세요.",
"desc": "개인 사용부터 대규모 조직까지, 창의적인 분들을 위한 유연한 옵션.",
"monthly": "월간",
"annual": "연간",
"perMonth": "/월",
"perMonthAnnual": "/월, 연간 결제",
"perUser": "+ 3.90€/user",
"perUserAnnual": "+ 2.90€/user, billed annually",
"popular": "가장 인기",
"basic": {
"name": "Basic",
"desc": "Momento의 마법을 경험하세요.",
"cta": "시작하기",
"feature0": "최대 100개 노트",
"feature1": "3개 노트북",
"feature2": "AI 크레딧 50 (평생)",
"feature3": "시맨틱 검색",
"feature4": "7일 기록"
},
"pro": {
"name": "Pro",
"desc": "까다로운 컨설턴트와 크리에이터를 위해.",
"cta": "Pro로 업그레이드",
"feature0": "무제한 노트",
"feature1": "BYOK (OpenAI/Anthropic)",
"feature2": "시맨틱 검색 200회",
"feature3": "에이전트 (월 12회)",
"feature4": "30일 기록",
"feature5": "이메일 지원"
},
"business": {
"name": "Business",
"desc": "팀과 프로덕트 매니저를 위해.",
"cta": "Business 선택",
"feature0": "10명 협업자 포함",
"feature1": "BYOK (13개 프로바이더)",
"feature2": "시맨틱 검색 1000회",
"feature3": "에이전트 (월 60회)",
"feature4": "무제한 브레인스토밍",
"feature5": "API 액세스"
},
"enterprise": {
"name": "Enterprise",
"desc": "안전한 조직 메모리.",
"cta": "영업 문의",
"feature0": "Business 전체",
"feature1": "무제한 에이전트",
"feature2": "SSO / SAML",
"feature3": "감사 로그 및 SLA",
"feature4": "전담 지원",
"feature5": "라이브 온보딩"
}
},
"byok": {
"label": "오픈 클라우드 기술",
"title": "BYOK 전략",
"desc": "OpenAI, Anthropic, Google API 키가 있으신가요? Momento에 직접 연결하세요. 강제 크레딧 한도 없이, 선호하는 프로바이더의 실제 사용량만 지불합니다.",
"noLockin": "락인 없음",
"noLockinDesc": "클릭 한 번으로 프로바이더 변경.",
"cost": "최적화된 비용",
"costDesc": "API 직접 가격으로 지불.",
"configLabel": "멀티 프로바이더 설정"
},
"cta": {
"title1": "당신의",
"title2": "잠재력을 깨울 준비가 되셨나요?",
"desc": "Momento로 미래를 만들고 있는 수천 명의 연구자, 디자이너, 사상가와 함께하세요.",
"button": "Momento 실행"
},
"footer": {
"desc": "AI로 증폭된 제2의 뇌. 창의적인 분들을 위해.",
"product": {
"title": "제품",
"link0": "변경 이력",
"link1": "문서",
"link2": "로드맵",
"link0Href": "#",
"link1Href": "#",
"link2Href": "#"
},
"community": {
"title": "커뮤니티",
"link0": "Discord",
"link1": "Twitter / X",
"link2": "LinkedIn",
"link0Href": "#",
"link1Href": "#",
"link2Href": "#"
},
"legal": {
"title": "법적 고지",
"link0": "개인정보",
"link1": "이용약관",
"link2": "쿠키 정책",
"link0Href": "#",
"link1Href": "#",
"link2Href": "#"
}
}
}
}
}