প্রকল্প সম্পর্কে
Prompt Save Reuse হলো Chrome এবং Edge-এর জন্য একটি Manifest V3 ব্রাউজার এক্সটেনশন যা AI চ্যাট কম্পোজারে টাইপ করা টেক্সট সংরক্ষণ করে এবং যখন প্রয়োজন তখন তা ফিরিয়ে আনে। এটি তাদের জন্য যারা চ্যাট সেশনের মধ্যে একই নির্দেশনা বারবার টাইপ বা পেস্ট করেন এবং একটি এক-ইশারায় উপায় চান।
সমর্থিত প্ল্যাটফর্ম (সাতটি): ChatGPT, Gemini, Claude, Perplexity, Grok, Mistral এবং DeepSeek।
মিথস্ক্রিয়া মডেল
- কম্পোজার বা টুলবার আইকনে একক ক্লিক: এই কথোপকথনের URL-এর জন্য বর্তমান কম্পোজার টেক্সট সংরক্ষণ করে। কম্পোজার খালি থাকলে, সেই URL-এর জন্য সংরক্ষিত টেক্সট পুনরুদ্ধার করে।
- কম্পোজার বা টুলবার আইকনে ডাবল ক্লিক: সংরক্ষিত টেক্সটটি বর্তমান কম্পোজার সামগ্রীর নীচে একটি ফাঁকা লাইন দিয়ে যুক্ত করে।
- টুলবার আইকনে ডান ক্লিক: প্রসঙ্গ মেনুতে সমস্ত সংরক্ষিত ডেটা মুছুন, ব্যবহারকারী গাইড খুলুন, ডেভেলপার প্রোফাইল খুলুন।
- কীবোর্ড শর্টকাট: সংরক্ষণ করতে 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-এ কথোপকথনের URL অনুযায়ী প্রম্পট সংরক্ষণ করুন।
- activeTab: বর্তমানে ব্যবহৃত চ্যাট ট্যাবে কাজ করুন।
- scripting: শর্টকাট এবং টুলবার আইকনের জন্য সেই ট্যাবে সংরক্ষণ এবং যুক্ত ফাংশন চালান।
- contextMenus: টুলবার আইকনে ডান-ক্লিক মেনু প্রদান করুন।
README-তে বলা হয়েছে সাতটি মিলে যাওয়া চ্যাট ডোমেইন ছাড়া কোনো হোস্ট অনুমতি নেই, এক্সটেনশনের নিজস্ব কোনো নেটওয়ার্ক অনুরোধ নেই এবং কোনো বিশ্লেষণ নেই।
লেখকের বর্ণনা করা উল্লেখযোগ্য প্রকৌশল বিবরণ
- পপআপ ছাড়া একটি লক্ষ্যে দুটি ইশারা: ব্রাউজারগুলিতে টুলবার অ্যাকশনের জন্য নেটিভ ডাবল-ক্লিক ইভেন্ট নেই, তাই background.js এবং content.js প্রতিটিতে 300 ms টাইমার থাকে। প্রথম ক্লিক একক-ক্লিক হ্যান্ডলার নির্ধারণ করে; উইন্ডোর মধ্যে দ্বিতীয় ক্লিক এটি বাতিল করে এবং ডাবল-ক্লিক হ্যান্ডলার চালায়। বলা হয়েছে যে প্রতিটি একক-ক্লিক ক্রিয়া ইচ্ছাকৃতভাবে 300 ms বিলম্বিত হয়।
- সাতটি চ্যাট UI জুড়ে একটি সন্নিবেশ পথ: findInputField() একটি অর্ডারযুক্ত সিলেক্টর ক্যাসকেড, প্রতি-সাইট শাখা নয়, যা ProseMirror contenteditable, ChatGPT-এর #prompt-textarea, একটি Quill .ql-editor, Perplexity-এর #ask-input এবং DeepSeek-এর প্লেসহোল্ডার-মিলে যাওয়া textarea কভার করে। insertText() তিনটি উপায়ে শাখা করে কারণ ফ্রেমওয়ার্ক-নিয়ন্ত্রিত ইনপুট সরাসরি .value অ্যাসাইনমেন্ট ওভাররাইট করে: প্রোটোটাইপ নেটিভ ভ্যালু সেটার এবং textarea এবং input-এর জন্য একটি প্রেরিত ইনপুট ইভেন্ট, Lexical এডিটরদের জন্য document.execCommand("insertText"), এবং অন্যান্য contenteditable কম্পোজারদের জন্য innerHTML এবং একটি ইনপুট ইভেন্ট।
- কন্টেন্ট স্ক্রিপ্ট চালানোর সময় কম্পোজার থাকে না: সাতটি সাইটই সিঙ্গেল-পেজ অ্যাপ এবং ইনপুটটি পরে মাউন্ট হয় এবং নেভিগেশনে পুনরায় মাউন্ট হয়, তাই একটি MutationObserver এটি দেখে এবং লিসেনার পুনরায় সংযুক্ত করে।
- URL অনুযায়ী স্টোরেজ: প্রতি কথোপকথনে একটি সংরক্ষিত প্রম্পট, chrome.storage.sync-এ স্থানীয় নয়, তাই এটি ব্রাউজার প্রোফাইল অনুসরণ করে; ট্রেড-অফ হল সিঙ্ক কোটা, যেখানে যথেষ্ট দীর্ঘ প্রম্পট সংরক্ষণ হবে না।
README-তে বলা পরিচিত সীমাবদ্ধতা
- সিলেক্টরগুলি ভঙ্গুর অংশ: যখন একটি প্ল্যাটফর্ম নতুন কম্পোজার পাঠায়, findInputField() ম্যাচ করা বন্ধ করে দেয় এবং সিলেক্টর তালিকা আপডেট না হওয়া পর্যন্ত এক্সটেনশনটি সেই সাইটে নীরব থাকে।
- ব্যর্থ সংরক্ষণ নীরব; কোনো ইনপুট ফিল্ড না পাওয়া গেলে, কিছুই ব্যবহারকারীকে জানায় না (ইস্যু #13-এ ট্র্যাক করা হয়েছে)।
- chrome.storage.sync-এ কোটা আছে; যথেষ্ট দীর্ঘ প্রম্পট প্রতি-আইটেম আকারের সীমা অতিক্রম করে এবং সংরক্ষণ করে না।
- একক-ক্লিক ক্রিয়াগুলি ডিজাইন অনুসারে 300 ms বিলম্ব বহন করে।
- কোনো স্বয়ংক্রিয় পরীক্ষা নেই (ইস্যু #8 এবং #9-এ ট্র্যাক করা হয়েছে)।
- প্রতি URL-এ একটি প্রম্পট: কোনো নামযুক্ত প্রম্পট লাইব্রেরি নেই, এবং আবার সংরক্ষণ করলে ওভাররাইট হয়।
প্রকল্পের অবস্থা এবং অবদান
- Chrome Web Store তালিকা সংস্করণ 3.0-এ লাইভ; Edge Add-ons তালিকা লাইভ।
- অবদান খোলা, good first issue এবং hacktoberfest লেবেলযুক্ত ইস্যু সহ; CONTRIBUTING.md এবং CODE_OF_CONDUCT.md উল্লেখ করা হয়েছে। পরীক্ষার নির্দেশনা হল আনপ্যাক করা এক্সটেনশন লোড করুন এবং সাতটি সমর্থিত সাইটের মধ্যে অন্তত একটিতে পরিবর্তনটি অনুশীলন করুন।
- যোগাযোগ GitHub ইস্যু বা LinkedIn (linkedin.com/in/atj393) এর মাধ্যমে।
লাইসেন্স
একটি কাস্টম লাইসেন্স, MIT নয়। README এটিকে এই প্রকল্পে অবদান রাখার উদ্দেশ্যে ব্যবহার, পরিবর্তন এবং প্রকাশের অধিকার প্রদান হিসাবে সংক্ষিপ্ত করে, ডেরিভেটিভ কাজগুলিকে একই শর্ত রাখতে প্রয়োজন, এবং ব্যক্তিগত ব্যবহার, বাণিজ্যিক ব্যবহার, সাবলাইসেন্সিং এবং সফ্টওয়্যারটি পরিবর্তন ছাড়াই পুনর্বিতরণ স্পষ্টভাবে নিষিদ্ধ করে। সম্পূর্ণ পাঠ্য লাইসেন্স ফাইলে রয়েছে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.