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

@@ -463,8 +463,8 @@
"undoAI": "لغو تبدیل هوش مصنوعی",
"undoApplied": "متن اصلی بازگردانده شد",
"minWordsError": "یادداشت باید حداقل ۵ کلمه داشته باشد.",
"wordCountMin": "حداقل {min} کلمه برای بازنویسی انتخاب کنید (فعلاً {current} کلمه)",
"wordCountMax": "حداکثر {max} کلمه برای بازنویسی انتخاب کنید (فعلاً {current} کلمه)",
"wordCountMin": "حداقل {min} کلمه لازم است ({current} کلمه فعلی)",
"wordCountMax": "حداکثر {max} کلمه مجاز ({current} کلمه فعلی)",
"genericError": "خطای هوش مصنوعی",
"actionError": "خطا در حین عمل هوش مصنوعی",
"appliedToNote": "در یادداشت اعمال شد",
@@ -630,7 +630,9 @@
"creative": "Creative",
"academic": "Academic",
"casual": "Casual"
}
},
"featureLocked": "این قابلیت نیازمند طرح PRO یا بالاتر است.",
"quotaExceeded": "محدودیت ماهانه تکمیل شده. ماه آینده بازنشانی می‌شود."
},
"titleSuggestions": {
"available": "پیشنهادات عنوان",
@@ -887,10 +889,11 @@
"showRecentNotes": "نمایش بخش یادداشت‌های اخیر",
"showRecentNotesDescription": "نمایش یادداشت‌های اخیر (۷ روز گذشته) در صفحه اصلی",
"recentNotesUpdateSuccess": "تنظیم یادداشت‌های اخیر با موفقیت به‌روزرسانی شد",
"recentNotesUpdateFailed": "به‌روزرسانی تنظیم یادداشت‌های اخیر شکست خورد"
"recentNotesUpdateFailed": "به‌روزرسانی تنظیم یادداشت‌های اخیر شکست خورد",
"tab": "پروفایل"
},
"aiSettings": {
"title": "تنظیمات هوش مصنوعی",
"title": "هوش مصنوعی",
"description": "ویژگی‌ها و ترجیحات هوش مصنوعی خود را پیکربندی کنید",
"features": "ویژگی‌های هوش مصنوعی",
"provider": "فروشنده هوش مصنوعی",
@@ -917,7 +920,8 @@
"autoLabeling": "پیشنهاد برچسب",
"autoLabelingDesc": "به طور خودکار برچسب‌ها را به یادداشت‌های شما پیشنهاد و اعمال می‌کند",
"noteHistory": "تاریخچه یادداشت",
"noteHistoryDesc": "فعال‌سازی اسنپ‌شات نسخه‌ها و بازیابی از تاریخچه"
"noteHistoryDesc": "فعال‌سازی اسنپ‌شات نسخه‌ها و بازیابی از تاریخچه",
"titleSuggestions": "پیشنهاد عنوان"
},
"general": {
"loading": "در حال بارگذاری...",
@@ -1115,7 +1119,13 @@
"languageDetection": "تشخیص زبان",
"languageDetectionDesc": "تشخیص خودکار زبان هر یادداشت",
"autoLabeling": "برچسب‌گذاری خودکار",
"autoLabelingDesc": "پیشنهاد و اعمال خودکار برچسب‌ها"
"autoLabelingDesc": "پیشنهاد و اعمال خودکار برچسب‌ها",
"fallbackSectionTitle": "ارائه‌دهنده پشتیبان (اختیاری)",
"fallbackSectionDescription": "در صورت خطای ارائه‌دهنده (429، 5xx) به‌صورت خودکار استفاده می‌شود. یک تلاش مجدد در ۱,۵ ثانیه.",
"fallbackProvider": "ارائه‌دهنده پشتیبان",
"fallbackModel": "مدل پشتیبان",
"fallbackNone": "هیچ (غیرفعال)",
"fallbackModelPlaceholder": "مثلاً gpt-4o-mini"
},
"resend": {
"title": "Resend (پیشنهادی)",
@@ -1173,6 +1183,8 @@
"deleteFailed": "شکست در حذف",
"roleUpdateSuccess": "نقش کاربر به {role} به‌روزرسانی شد",
"roleUpdateFailed": "شکست در به‌روزرسانی نقش",
"tierUpdateSuccess": "Subscription updated to {tier}",
"tierUpdateFailed": "Failed to update subscription",
"demote": "تنزل",
"promote": "ارتقا",
"confirmDelete": "مطمئن هستید؟ این عمل قابل بازگشت نیست.",
@@ -1180,6 +1192,7 @@
"name": "نام",
"email": "ایمیل",
"role": "نقش",
"subscription": "Subscription",
"createdAt": "تاریخ ایجاد",
"actions": "عملیات"
},
@@ -1317,7 +1330,8 @@
"documentation": "مستندات",
"reportIssues": "گزارش مشکلات",
"feedback": "بازخورد"
}
},
"tab": "درباره"
},
"support": {
"title": "پشتیبانی از توسعه Memento",
@@ -1371,7 +1385,7 @@
"loading": "در حال بارگذاری..."
},
"dataManagement": {
"title": "مدیریت داده",
"title": "دادهها",
"toolsDescription": "ابزارهایی برای حفظ سلامت پایگاه داده",
"exporting": "در حال صادرات...",
"importing": "در حال وارد کردن...",
@@ -1433,10 +1447,11 @@
"fontSystem": "فونت پیش‌فرض سیستم",
"fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono"
"fontJetBrainsMono": "JetBrains Mono",
"tab": "ظاهر"
},
"generalSettings": {
"title": "تنظیمات عمومی",
"title": "عمومی",
"description": "تنظیمات عمومی برنامه"
},
"toast": {
@@ -1622,7 +1637,7 @@
"collapse": "جمع کردن"
},
"mcpSettings": {
"title": "تنظیمات MCP",
"title": "MCP",
"description": "مدیریت کلیدهای API و پیکربندی ابزارهای خارجی",
"whatIsMcp": {
"title": "MCP چیست؟",
@@ -2211,7 +2226,9 @@
"exportDefaultNoteTitle": "Synthesis",
"exportOpening": "Opening…",
"ownerBadge": "Owner",
"waveBadge": "Wave {wave}"
"waveBadge": "Wave {wave}",
"quotaGuest": "میزبان جلسه به سقف هوش مصنوعی رسیده. از او بخواهید طرحش را ارتقا دهد.",
"quotaHost": "به سقف هوش مصنوعی این طوفان فکری رسیدید. برای ادامه، طرح خود را ارتقا دهید."
},
"usageMeter": {
"packName": "AI Discovery Pack",
@@ -2230,7 +2247,12 @@
"proChat": "100 chat messages / month",
"later": "Later",
"upgradePricing": "Upgrade to Pro",
"addApiKey": "Use your own API key (BYOK)"
"addApiKey": "Use your own API key (BYOK)",
"featureReformulate": "بازنویسی",
"featureChat": "پیام‌های هوش مصنوعی",
"featureBrainstormCreate": "ایجاد طوفان فکری",
"featureBrainstormExpand": "گسترش طوفان فکری",
"featureBrainstormEnrich": "غنی‌سازی طوفان فکری"
},
"byokSettings": {
"title": "Your API keys (BYOK)",
@@ -2323,6 +2345,216 @@
"checkoutSuccessBody": "به {tier} خوش آمدید. ویژگی‌های شما اکنون باز شده‌اند.",
"subscriptionType": "subscriptionType",
"renewalDate": "renewalDate",
"noRenewalDate": "—"
"noRenewalDate": "—",
"tab": "صورتحساب",
"currentUsage": "مصرف فعلی",
"currentPeriod": "دوره جاری",
"aiCredits": "اعتبار هوش مصنوعی",
"used": "استفاده شده",
"billing": "صورتحساب",
"renewal": "تمدید",
"paidPlanDesc": "اشتراک شما به‌طور خودکار تمدید می‌شود.",
"businessDescription": "برای تیم‌ها و مدیران محصول."
},
"landing": {
"nav": {
"features": "امکانات",
"agents": "دستیاران هوشمند",
"brainstorm": "طوفان فکری",
"pricing": "تعرفه‌ها",
"tech": "ساختار فنی",
"login": "ورود",
"cta": "شروع کنید"
},
"hero": {
"badge": "توانمند با هوش مصنوعی",
"title1": "مغز دوم شما،",
"title2": "حالا قوی‌تر از همیشه.",
"subtitle": "مومنتو یه noting app ساده نیست؛ یه سیستم هوشمندی‌ه که با ۶ نوع دستیار AI و جستجوی معنایی پیشرفته، لحظه‌به‌لحظه به ایده‌هاتون جان می‌بخشه و پخش‌شون می‌کنه.",
"cta": "همین الان ثبت‌نام کنید",
"secondary": "امکانات رو ببینید",
"memoryEcho": "Memory Echo",
"memoryEchoText": "\"ارتباط پیدا شد با پروژه طراحی پایدار شما از مارس ۲۰۲۴...\"",
"brainstormLive": "طوفان فکری زنده",
"ideasGenerated": "+۱۲ ایده تولید شد"
},
"features": {
"label": "توانایی‌های هوشمند",
"title": "هوشی روان و بی‌وقفه،",
"title2": "نفوذکرده در هر کلمه.",
"desc": "مومنتو با معماری چندمنبعی، ایده‌هاتون رو هماهنگ و مدیریت می‌کنه.",
"f1Title": "جستجوی معنایی",
"f1Desc": "کلمه‌کلیدی دور ریخته. اینجا معنا مهمه. موتور ترکیبی ما منظور پشت نوشته‌هاتون رو می‌فهمه، نه فقط کلماتش رو.",
"f2Title": "چت هوشمند و آگاه",
"f2Desc": "با دانش خودتون حرف بزنید. دستیارهای ما یادداشت‌هاتون رو می‌خونن، وب رو می‌گردن و اسناد رو تحلیل می‌کنن تا دقیق‌ترین جواب رو بهتون بدن.",
"f3Title": "نوشتار هوشمند",
"f3Desc": "از بازنویسی و پیشنهاد عنوان گرفته تا برچسب‌گذاری و خلاصه‌سازی خودکار — AI همیشه توی پس‌زمینه کار می‌کنه تا افکارتون منظم بشه."
},
"agents": {
"label": "دستیاران تخصصی",
"title": "کارای سخت رو بسپارید به ما.",
"desc": "۶ نوع دستیار هوشمند و خودکار برای راحت‌کردن تحقیق، خلاصه‌سازی و ارائه‌هاتون.",
"scraper": {
"title": "Scraper",
"desc": "آدرس‌ها رو اسکرپ می‌کنه، فیدهای 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": "معماری ماژولار ۲.۰",
"analogyLabel": "تشبیه",
"analogyText": "چرخه جزر و مد"
},
"tech": {
"label": "ساختار و ارائه‌دهندگان",
"title": "مدل AI خودتون رو وصل کنید.",
"tags": {
"title": "برچسب‌ها",
"desc": "مستقل از هر مدلی قابل تنظیم."
},
"embeddings": {
"title": "Embeddings",
"desc": "مستقل از هر مدلی قابل تنظیم."
},
"chatRag": {
"title": "Chat RAG",
"desc": "مستقل از هر مدلی قابل تنظیم."
}
},
"pricing": {
"label": "پلن‌ها و تعرفه‌ها",
"title": "سطح توانمندی خودتون رو انتخاب کنید.",
"desc": "گزینه‌های منعطف برای ذهن‌های خلاق — از استفاده شخصی تا سازمان‌های بزرگ.",
"monthly": "ماهانه",
"annual": "سالانه",
"perMonth": "/ماه",
"perMonthAnnual": "/ماه، پرداخت سالانه",
"perUser": "+ ۳,۹۰€/کاربر",
"perUserAnnual": "+ ۲,۹۰€/کاربر، پرداخت سالانه",
"popular": "پرطرفدارترین",
"basic": {
"name": "Basic",
"desc": "ذوق مومنتو رو بچشید.",
"cta": "شروع کنید",
"feature0": "حداکثر ۱۰۰ یادداشت",
"feature1": "۳ دفترچه",
"feature2": "۵۰ اعتبار AI (مادام‌العمر)",
"feature3": "جستجوی معنایی",
"feature4": "تاریخچه ۷ روزه"
},
"pro": {
"name": "Pro",
"desc": "برای مشاوران و خالق‌های سخت‌گیر.",
"cta": "ارتقا به پرو",
"feature0": "یادداشت نامحدود",
"feature1": "BYOK (OpenAI/Anthropic)",
"feature2": "۲۰۰ جستجوی معنایی",
"feature3": "دستیارها (۱۲ اجرا/ماه)",
"feature4": "تاریخچه ۳۰ روزه",
"feature5": "پشتیبانی ایمیل"
},
"business": {
"name": "Business",
"desc": "برای تیم‌ها و مدیران محصول.",
"cta": "انتخاب بیزینس",
"feature0": "۱۰ همکار شامل",
"feature1": "BYOK (۱۳ ارائه‌دهنده)",
"feature2": "۱۰۰۰ جستجوی معنایی",
"feature3": "دستیارها (۶۰ اجرا/ماه)",
"feature4": "طوفان فکری نامحدود",
"feature5": "دسترسی API"
},
"enterprise": {
"name": "Enterprise",
"desc": "حافظه سازمانی امن.",
"cta": "تماس با فروش",
"feature0": "همه امکانات بیزینس",
"feature1": "دستیارهای نامحدود",
"feature2": "SSO / SAML",
"feature3": "لاگ حسابرسی و SLA",
"feature4": "پشتیبانی اختصاصی",
"feature5": "آنبوردینگ زنده"
}
},
"byok": {
"label": "زیرساخت ابری باز",
"title": "استراتژی BYOK",
"desc": "کلید API اپن‌ای، آنتروپیک یا گوگل دارید؟ مستقیم وصلش کنید به مومنتو. بدون محدودیت اعتبار، فقط همون‌قدر هزینه می‌کنید که واقعاً مصرف کردید.",
"noLockin": "بدون قفل‌شدگی",
"noLockinDesc": "با یه کلیک ارائه‌دهنده عوض کنید.",
"cost": "هزینه بهینه",
"costDesc": "همون قیمت مستقیم API رو می‌دید.",
"configLabel": "تنظیمات چندمنبعی"
},
"cta": {
"title1": "آماده‌اید",
"title2": "استعداد واقعیتون رو شکوفا کنید؟",
"desc": "به هزاران پژوهشگر، طراح و متفکر ملحق بشید که از مومنتو برای ساختن آینده‌شون استفاده می‌کنن.",
"button": "اجرا مومنتو"
},
"footer": {
"desc": "مغز دوم هوشمند با AI. طراحی‌شده برای ذهن‌های خلاق.",
"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": "#"
}
}
}
}
}