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

@@ -0,0 +1,184 @@
{
"sidebar.sharedNotebookBadge": "· المشاركة",
"notes.ideaOrigin": "أصل الفكرة",
"notes.noNoteLink": "فكرة توليدية بحتة",
"notes.dismiss": "غير ذات صلة",
"ai.contextSourceHeading": "مصدر السياق",
"ai.tones.professional": "احترافي",
"ai.tones.creative": "مبدع",
"ai.tones.academic": "أكاديمي",
"ai.tones.casual": "استرخاء",
"settings.themeBaseGroup": "عرض",
"settings.themePalettesGroup": "لوحات الألوان",
"settings.themeSepia": "بني داكن",
"settings.themeMidnight": "منتصف الليل",
"settings.themeGreen": "أخضر",
"settings.themeLavender": "لافندر",
"settings.themeSand": "رمل",
"settings.themeOcean": "محيط",
"settings.themeSunset": "غروب",
"settings.themeBlue": "أزرق",
"aiSettings.title": "منظمة العفو الدولية",
"admin.ai.providerOllamaOption": "🦙 أولاما (محلي ومجاني)",
"admin.ai.providerCustomOption": "🔧 متوافق مع OpenAI المخصص",
"admin.users.tierUpdateSuccess": "تم تحديث الاشتراك إلى {tier}",
"admin.users.tierUpdateFailed": "فشل تحديث الاشتراك",
"admin.users.table.subscription": "الاشتراك",
"admin.tools.brave": "واجهة برمجة تطبيقات البحث الشجاع",
"dataManagement.title": "بيانات",
"appearance.fontInterDefault": "إنتر (افتراضي)",
"usageMeter.packName": "حزمة اكتشاف الذكاء الاصطناعي",
"usageMeter.featureSearch": "بحث",
"usageMeter.featureTags": "التسميات",
"usageMeter.featureTitles": "الأوراق المالية",
"usageMeter.unlimited": "غير محدود",
"usageMeter.remaining": "{عدد} متبقي",
"usageMeter.upgradeTitle": "اذهب برو",
"usageMeter.upgradeDescription": "لقد استخدمت جميع الاعتمادات من حزمة اكتشاف الذكاء الاصطناعي. قم بالترقية إلى Pro للحصول على أحرف كبيرة وميزات إضافية.",
"usageMeter.proIncludes": "برو يشمل:",
"usageMeter.proSearch": "100 عملية بحث دلالية / شهر",
"usageMeter.proTags": "200 ملصق تلقائي / شهر",
"usageMeter.proTitles": "200 عنوان سيارة / شهر",
"usageMeter.proReformulate": "50 إعادة صياغة / شهر",
"usageMeter.proChat": "100 رسالة دردشة / شهر",
"usageMeter.later": "لاحقاً",
"usageMeter.upgradePricing": "اذهب برو",
"usageMeter.addApiKey": "استخدم مفتاح API الخاص بك (BYOK)",
"generalSettings.title": "الجنرالات",
"agents.form.back": "خلف",
"agents.help.howToUseContent": "1. انقر على **\"الوكيل الجديد\"** (أو ابدأ بـ **القالب** في أسفل الصفحة)\n2. اختر **نوع الوكيل** (باحث، مراقب، مشرف، مخصص)\n3. أعطه **اسمًا** واملأ الحقول الخاصة بالنوع\n4. اختر بشكل اختياري **دفتر ملاحظات مستهدفًا** أو احفظ النتائج\n5. حدد **التردد** (يدويًا = تقوم بتشغيله بنفسك)\n6. انقر فوق **إنشاء**، ثم اضغط على الزر **تنفيذ** الموجود على بطاقة الوكيل\n7. بمجرد الانتهاء، تظهر ملاحظة جديدة في دفتر ملاحظاتك المستهدف",
"agents.help.advancedContent": "انقر على **\"الوضع المتقدم\"** في أسفل النموذج للوصول إلى الإعدادات الإضافية.\n\n### تعليمات الذكاء الاصطناعي\n\nيتيح لك هذا الحقل **تجاوز موجه النظام الافتراضي** للوكيل. إذا تركته فارغًا، فسيستخدم الوكيل مطالبة تلقائية تتناسب مع نوعه.\n\n**لماذا تستخدمه؟** أنت تريد التحكم في سلوك الوكيل تمامًا. على سبيل المثال:\n- \"اكتب الملخص باللغة الإنجليزية، حتى لو كانت المصادر باللغة الفرنسية\"\n- \"قم بتنظيم الملاحظة باستخدام الأقسام: السياق، النقاط الرئيسية، الرأي الشخصي\"\n- \"تجاهل المقالات التي مضى عليها أكثر من 30 يومًا وركز على الأخبار الأخيرة\"\n- \"لكل موضوع تم اكتشافه، يقدم 3 طرق للدراسة المتعمقة مع الروابط\"\n\n> **ملاحظة:** تحل تعليماتك محل التعليمات الافتراضية، وليس إضافة إليها.\n\n### الحد الأقصى للتكرارات\n\nهذا هو **الحد الأقصى لعدد الدورات** التي يمكن للوكيل تنفيذها. دورة واحدة = يفكر الوكيل، ويستدعي أداة، ويقرأ النتيجة، ثم يقرر الإجراء التالي.\n\n- **3-5 تكرارات:** للمهام البسيطة (نسخ صفحة واحدة)\n- **10 تكرارات (افتراضي):** توازن جيد في معظم الحالات\n- **15-25 تكرارًا:** لعمليات البحث العميق حيث يجب على الوكيل استكشاف عدة طرق\n\n> **تنبيه:** المزيد من التكرارات = المزيد من الوقت وربما المزيد من تكاليف واجهة برمجة التطبيقات (API).",
"agents.help.frequencyContent": "| التردد | السلوك\n|---------------|------------\n| **دليل** | قمت بالنقر فوق \"تشغيل\" - لا توجد جدولة تلقائية\n| **كل ساعة** | يعمل كل ساعة\n| **يوميا** | يعمل مرة واحدة في اليوم\n| **أسبوعي** | يعمل مرة واحدة في الأسبوع\n| **شهري** | يتم تشغيله مرة واحدة في الشهر\n\n> **نصيحة:** ابدأ بـ \"يدويًا\" لاختبار وكيلك، ثم قم بالتبديل إلى التردد التلقائي بمجرد الرضا.",
"agents.help.targetNotebookContent": "عندما يكمل الوكيل مهمته، **ينشئ ملاحظة**. يحدد **دفتر الملاحظات المستهدف** الوجهة التي ستذهب إليها:\n\n- **البريد الوارد** (افتراضي) — تنتقل الملاحظة إلى ملاحظاتك العامة\n- **دفتر ملاحظات محدد** — اختر دفتر ملاحظات للحفاظ على تنظيم النتائج\n\n> **نصيحة:** قم بإنشاء دفتر ملاحظات مخصص مثل \"تقارير الوكيل\" لتجميع المحتوى الآلي بالكامل بشكل مركزي.",
"richTextEditor.imageUrlPlaceholder": "https://example.com/image.png",
"brainstorm.title": "موجات الفكر",
"brainstorm.subtitle": "توسيع أبعاد الإمكانات",
"brainstorm.placeholder": "أدخل مفهومًا لاستكشافه...",
"brainstorm.generating": "الذكاء الاصطناعي يحصد بذور الفكر...",
"brainstorm.newBrainstorm": "العصف الذهني الجديد",
"brainstorm.noSessions": "لا العصف الذهني حتى الآن",
"brainstorm.startOne": "للبدء",
"brainstorm.sessions": "جلسات العصف الذهني",
"brainstorm.seedLabel": "فكرة المصدر",
"brainstorm.brainstormThisIdea": "طرح هذه الفكرة",
"brainstorm.startBrainstorm": "ابدأ العصف الذهني",
"brainstorm.spatialMode": "وضع استكشاف الفضاء",
"brainstorm.wave1": "الموجة 1",
"brainstorm.wave2": "الموجة 2",
"brainstorm.wave3": "الموجة 3",
"brainstorm.export": "يصدّر",
"brainstorm.exporting": "يصدّر...",
"brainstorm.wave": "موجة",
"brainstorm.novelty": "أصالة",
"brainstorm.originConnection": "الارتباط بالأصل",
"brainstorm.linkedNotes": "ملاحظات ذات صلة",
"brainstorm.deepen": "حفر",
"brainstorm.deepening": "جيل...",
"brainstorm.extract": "قم بإنشاء ملاحظة",
"brainstorm.converting": "تحويل...",
"brainstorm.dismiss": "غير ذات صلة",
"brainstorm.noteCreated": "تم إنشاء الملاحظة",
"brainstorm.ideas": "أفكار",
"brainstorm.cancel": "يلغي",
"brainstorm.delete": "يمسح",
"brainstorm.ideaOrigin": "أصل الفكرة",
"brainstorm.noNoteLink": "فكرة توليدية بحتة",
"brainstorm.derived_from": "مشتقة من",
"brainstorm.opposes": "في معارضة",
"brainstorm.extends": "يمتد",
"brainstorm.synthesizes": "توليف",
"brainstorm.transposes": "تبديل",
"brainstorm.none_found": "لا يوجد رابط",
"brainstorm.viewNote": "انظر الملاحظة",
"brainstorm.addIdea": "أضف فكرة",
"brainstorm.manualIdeaPrompt": "عنوان فكرتك:",
"brainstorm.invite": "يدعو",
"brainstorm.linkCopied": "تم نسخ رابط الدعوة!",
"brainstorm.shareDialogTitle": "شارك العصف الذهني",
"brainstorm.shareSearchLabel": "ابحث عن شخص",
"brainstorm.shareNameOrEmailPlaceholder": "الاسم أو البريد الإلكتروني…",
"brainstorm.shareSubmit": "يشارك",
"brainstorm.shareSubmitting": "إرسال…",
"brainstorm.shareFooterHint": "سيتلقى الشخص إشعارًا بالقبول أو الرفض.",
"brainstorm.sharePublicLink": "الرابط العام",
"brainstorm.shareGuestsCanEdit": "السماح للضيوف بالتحرير",
"brainstorm.feedbackInviteSent": "تم إرسال الدعوة!",
"brainstorm.feedbackInviteResent": "عادت الدعوة!",
"brainstorm.feedbackAlreadyShared": "هذا الشخص لديه حق الوصول إلى هذا العصف الذهني بالفعل.",
"brainstorm.feedbackAlreadyPending": "هناك دعوة معلقة بالفعل لهذا الشخص.",
"brainstorm.feedbackGenericError": "خطأ",
"brainstorm.unnamedPerson": "لم يذكر اسمه",
"brainstorm.canvasEditTitleReply": "إجابة",
"brainstorm.canvasEditTitleNewIdea": "فكرة جديدة",
"brainstorm.canvasPlaceholderReply": "إجابتك…",
"brainstorm.canvasPlaceholderIdea": "فكرتك…",
"brainstorm.canvasShortcutSave": "يحفظ",
"brainstorm.canvasShortcutCancel": "يلغي",
"brainstorm.canvasChildBranch": "طفل",
"brainstorm.canvasDoubleClickHint": "انقر نقرًا مزدوجًا لإضافة فكرة",
"brainstorm.ideaDetailConnection": "اتصال",
"brainstorm.ideaDetailNovelty": "أصالة",
"brainstorm.ideaDetailWave": "موجة",
"brainstorm.waveFlavorAnalogy": "تشبيه",
"brainstorm.liveCollaborationTitle": "التعاون المباشر",
"brainstorm.liveStatus": "يعيش",
"brainstorm.liveYouMarker": "(أنت)",
"brainstorm.liveOtherParticipants": "{عدد} مشاركين آخرين",
"brainstorm.guestReadOnlyNotice": "أنت تشاهد هذا العصف الذهني كضيف. قم بتسجيل الدخول للتحرير.",
"brainstorm.impactNotesEnriched": "{count} ملاحظة (ملاحظات) غنية",
"brainstorm.impactNotesMarkedDry": "{count} ملاحظة (ملاحظات) تم وضع علامة عليها جافة",
"brainstorm.exportNotebookPrefix": "دفتر :",
"brainstorm.playbackStep": "الخطوة {الحالية}/{الإجمالي}",
"brainstorm.playbackStepsCount": "{عدد} خطوات",
"brainstorm.playbackReturnToLive": "العودة للعيش",
"brainstorm.canvasWaitingHint": "اللوحة تنتظر شرارتك...",
"brainstorm.seedNodeBadge": "بذور",
"brainstorm.originalSeedDescription": "فكرة المصدر الأولي",
"brainstorm.convertedToNoteStatus": "تم تحويله إلى تصنيف",
"brainstorm.toastExpandSuccess": "أفكار موسعة!",
"brainstorm.toastExpandFailed": "فشل التوسيع",
"brainstorm.toastDismissSuccess": "تم رفض الفكرة",
"brainstorm.toastDismissFailed": "فشل الفجوة",
"brainstorm.toastConvertSuccess": "تحولت الفكرة إلى مذكرة!",
"brainstorm.toastConvertFailed": "فشل التحويل",
"brainstorm.toastExportNoteSuccess": "تصديرها كملاحظة!",
"brainstorm.toastExportFailed": "فشل التصدير",
"brainstorm.legendSeed": "بذرة",
"brainstorm.legendDisruptions": "الانفصال",
"brainstorm.exportFailedMessage": "فشل التصدير",
"brainstorm.exportDefaultNoteTitle": "توليف",
"brainstorm.exportOpening": "افتتاح…",
"brainstorm.ownerBadge": "مالك",
"brainstorm.waveBadge": "موجة {موجة}",
"byokSettings.title": "مفاتيح API الخاصة بك (BYOK)",
"byokSettings.description": "قم بتوصيل مفاتيح البائع الخاصة بك لتجاوز حصص Discovery Pack. يتم تشفير المفاتيح في حالة الراحة.",
"byokSettings.badgeActive": "BYOK نشط",
"byokSettings.tierRequired": "يتطلب BYOK اشتراك Pro أو أعلى.",
"byokSettings.provider": "مزود",
"byokSettings.providerPlaceholder": "اختر موردًا",
"byokSettings.alias": "الصياغة (اختياري)",
"byokSettings.aliasPlaceholder": "السابق. OpenAI برو",
"byokSettings.apiKey": "مفتاح واجهة برمجة التطبيقات",
"byokSettings.save": "حفظ المفتاح",
"byokSettings.saved": "مفتاح API المسجل",
"byokSettings.deleted": "تمت إزالة مفتاح API",
"byokSettings.error": "غير قادر على تسجيل المفتاح",
"byokSettings.loadError": "غير قادر على تحميل المفاتيح",
"byokSettings.loading": "تحميل...",
"byokSettings.empty": "لم يتم تكوين مفتاح API.",
"byokSettings.confirmDelete": "هل تريد حذف مفتاح واجهة برمجة التطبيقات هذا نهائيًا؟",
"billing.enterpriseTitle": "عمل",
"landing.pricing.perUser": "+ 3.90 يورو لكل مستخدم",
"landing.pricing.perUserAnnual": "+ 2.90 يورو لكل مستخدم، يتم إصدار الفاتورة سنويًا",
"ai.featureLocked": "تتطلب هذه الميزة خطة PRO أو أعلى.",
"ai.quotaExceeded": "تم الوصول إلى الحد الشهري. إعادة تعيين الشهر المقبل.",
"profile.tab": "حساب تعريفي",
"about.tab": "عن",
"appearance.tab": "مظهر",
"billing.tab": "الفواتير",
"usageMeter.featureChat": "رسائل الذكاء الاصطناعي",
"usageMeter.featureReformulate": "إعادة الصياغة",
"usageMeter.featureBrainstormCreate": "إبداعات العصف الذهني",
"usageMeter.featureBrainstormExpand": "ملحقات العصف الذهني",
"usageMeter.featureBrainstormEnrich": "إثراء العصف الذهني"
}