عن المشروع

Prompt Save Reuse هي إضافة متصفح Manifest V3 لمتصفحي Chrome وEdge تخزّن النص الذي كتبته في محرر دردشة الذكاء الاصطناعي وتعيده عند الحاجة. وهي موجّهة إلى من يعيدون كتابة أو لصق التعليمات نفسها عبر جلسات الدردشة ويريدون طريقة بإيماءة واحدة للاحتفاظ بها. المنصات المدعومة (سبع): ChatGPT وGemini وClaude وPerplexity وGrok وMistral وDeepSeek. نموذج التفاعل - نقرة واحدة على المحرر أو أيقونة شريط الأدوات: تحفظ نص المحرر الحالي لرابط هذه المحادثة. إذا كان المحرر فارغًا، فإنها تستعيد النص المحفوظ لذلك الرابط بدلًا من ذلك. - نقرتان على المحرر أو أيقونة شريط الأدوات: تلحق النص المحفوظ أسفل محتوى المحرر الحالي، مفصولًا بسطر فارغ. - النقر بزر الفأرة الأيمن على أيقونة شريط الأدوات: قائمة سياقية لمسح كل البيانات المحفوظة، وفتح دليل المستخدم، وفتح ملف المطوّر. - اختصارات لوحة المفاتيح: Ctrl+Shift+1 للحفظ، وCtrl+Shift+2 للإلحاق. لا توجد نافذة منبثقة ولا لوحة جانبية؛ الواجهة كلها هي المحرر بالإضافة إلى زر شريط الأدوات. يُحفظ النص في chrome.storage.sync، فيتبع ملف تعريف المتصفح عبر الأجهزة. التثبيت - روابط Chrome Web Store وMicrosoft Edge Add-ons موجودة في README. - من المصدر: استنسخ المستودع، وافتح chrome://extensions، وفعّل وضع المطوّر، وانقر Load unpacked واختر مجلد المستودع. لا توجد خطوة بناء ولا تبعيات؛ التقنية هي JavaScript عادية. الأذونات والخصوصية - storage: حفظ المطالبات مرتبطة برابط المحادثة في chrome.storage.sync. - activeTab: العمل على تبويب الدردشة المستخدم حاليًا. - scripting: تشغيل دوال الحفظ والإلحاق في ذلك التبويب للاختصارات وأيقونة شريط الأدوات. - contextMenus: توفير قائمة النقر بزر الفأرة الأيمن على أيقونة شريط الأدوات. يذكر README أنه لا يوجد إذن مضيف يتجاوز نطاقات الدردشة السبع المطابقة، ولا طلب شبكة من الإضافة نفسها، ولا تحليلات. تفاصيل هندسية بارزة يصفها المؤلف - إيماءتان على هدف واحد دون نافذة منبثقة: لأن المتصفحات لا تملك حدث نقر مزدوج أصلي لإجراء شريط الأدوات، يحتفظ كل من background.js وcontent.js بمؤقت 300 مللي ثانية. النقرة الأولى تجدول معالج النقرة الواحدة؛ والنقرة الثانية داخل النافذة تلغيه وتشغّل معالج النقر المزدوج. والنتيجة المذكورة هي أن كل إجراء بنقرة واحدة يتأخر عمدًا 300 مللي ثانية. - مسار إدراج واحد عبر سبع واجهات دردشة: findInputField() هو تتابع محددات مرتّب بدلًا من فروع لكل موقع، ويغطي ProseMirror contenteditable، و#prompt-textarea في ChatGPT، و.ql-editor في Quill، و#ask-input في Perplexity، وtextarea المطابق للعنصر النائب في DeepSeek. وتتفرع insertText() بثلاث طرق لأن المدخلات التي تتحكم بها الأطر تتجاوز الإسناد المباشر لـ .value: مُعيّن القيمة الأصلي في النموذج الأولي مع إرسال حدث input لـ textarea وinput، وdocument.execCommand("insertText") لمحررات Lexical، وinnerHTML مع حدث input لمحررات contenteditable الأخرى. - المحرر غير موجود عند تشغيل سكربت المحتوى: المواقع السبعة كلها تطبيقات صفحة واحدة، ويُركّب حقل الإدخال لاحقًا ويُعاد تركيبه عند التنقل، لذا يراقبه MutationObserver ويعيد ربط المستمعين. - تخزين مرتبط بالرابط: مطالبة محفوظة واحدة لكل محادثة، في chrome.storage.sync بدلًا من local، فتتبع ملف تعريف المتصفح؛ والمقايضة هي حصة المزامنة، حيث لن تُحفظ مطالبة طويلة بما يكفي. القيود المعروفة المذكورة في README - المحددات هي الجزء الهش: عندما تطلق منصة محررًا جديدًا، يتوقف findInputField() عن المطابقة وتصمت الإضافة على ذلك الموقع حتى تُحدَّث قائمة المحددات. - فشل الحفظ صامت؛ إذا لم يُعثر على حقل إدخال، لا شيء يخبر المستخدم (متابع في issue #13). - لـ chrome.storage.sync حصص؛ مطالبة طويلة بما يكفي تتجاوز حد الحجم لكل عنصر ولا تُحفظ. - إجراءات النقرة الواحدة تحمل تأخيرًا 300 مللي ثانية بحكم التصميم. - لا توجد اختبارات آلية (متابعة في issue #8 و#9). - مطالبة واحدة لكل رابط: لا توجد مكتبة مطالبات مسمّاة، والحفظ مرة أخرى يستبدل. حالة المشروع والمساهمة - قائمة Chrome Web Store متاحة عند الإصدار 3.0؛ وقائمة Edge Add-ons متاحة. - المساهمات مفتوحة، مع issues موسومة good first issue وhacktoberfest؛ ويُشار إلى CONTRIBUTING.md وCODE_OF_CONDUCT.md. إرشادات الاختبار هي تحميل الإضافة غير المحزومة وتجربة التغيير على واحد على الأقل من المواقع السبعة المدعومة. - التواصل عبر issues في GitHub أو LinkedIn (linkedin.com/in/atj393). الترخيص ترخيص مخصص، ليس MIT. يلخصه README بأنه يمنح الحق في الاستخدام والتعديل ونشر التغييرات لغرض المساهمة في هذا المشروع، ويشترط أن تحتفظ الأعمال المشتقة بالشروط نفسها، ويحظر صراحة الاستخدام الخاص والاستخدام التجاري والترخيص الفرعي وإعادة توزيع البرنامج كما هو دون تعديل. النص الكامل في ملف الترخيص.