पर्सनल एक्सटेंशन
Personal Extension कोड का एक छोटा टुकड़ा है, जो Marinara में कोई बटन, पैनल या हेल्पर जोड़ता है। Professor Mari आपके लिए एक्सटेंशन लिख सकती है, और वह कभी चलेगा या नहीं, यह आप तय करते हैं। इस गाइड में एक्सटेंशन जाँचने, चालू करने, एक्सपोर्ट करने और रिकवर करने के बारे में बताया गया है। अपना एक्सटेंशन लिखने के लिए अपनी Personal Extensions लिखना देखें।
कौन सा एक्सटेंशन क्या है
| नाम | यह क्या है |
| Personal Extension | ऐसा एक्सटेंशन जो Professor Mari ने आपके लिए लिखा है। यह Settings → Addons (सेटिंग्स → ऐडऑन) में ड्राफ़्ट के रूप में दिखता है। |
| External Extension | किसी और से मिला एक्सटेंशन, या आपका खुद लिखा एक्सटेंशन। इसके लिए थर्ड-पार्टी इंपोर्ट की इजाज़त देना में बताए गए अतिरिक्त कदम ज़रूरी हैं। |
| Browser Extension | आपके ब्राउज़र के अंदर सैंडबॉक्स में चलता है। डिफ़ॉल्ट रूप से सुरक्षित। |
| Server Extension | उस कंप्यूटर पर चलता है जिस पर Marinara चलता है, ऑपरेटिंग सिस्टम के सैंडबॉक्स में। इसके लिए सपोर्टेड प्लैटफ़ॉर्म चाहिए। |
| Full page access | एक परमिशन, जो सैंडबॉक्स हटा देती है। सिर्फ़ उस कोड के लिए, जिस पर आपको पूरा भरोसा हो। |
किसी का शेयर किया एक्सटेंशन इंस्टॉल करना
शुरू करने से पहले: थर्ड-पार्टी इंपोर्ट की इजाज़त देना में बताए गए दोनों कदम पूरे करें। उनके बिना इंपोर्ट बटन छिपे रहते हैं।
- Settings → Addons खोलें। External Extensions (बाहरी एक्सटेंशन) में
.zip,.json,.cssया.jsफ़ाइल के लिए Import Extension File (एक्सटेंशन फ़ाइल इंपोर्ट करें) चुनें, या फ़ोल्डर के लिए Import Extension Folder (एक्सटेंशन फ़ोल्डर इंपोर्ट करें) चुनें। - नया ड्राफ़्ट खोलें। यह बंद रहता है और अपना कोड और एक हैश दिखाता है। हैश यानी ठीक उसी कोड का एक छोटा फ़िंगरप्रिंट (Marinara इसके लिए SHA-256 इस्तेमाल करता है)।
- कोड और Requested access (माँगी गई पहुँच) की लिस्ट पढ़ें।
- Review and Run (रिव्यू करें और चलाएँ) तभी चुनें, जब आप ठीक उसी वर्ज़न को स्वीकार करते हों। इसके बाद एक्सटेंशन चालू दिखता है।
अगर यह काम नहीं किया: इंपोर्ट बटन न दिखें, तो दोनों में से कोई एक कदम पूरा नहीं हुआ है। .env बदलने के बाद Marinara रीस्टार्ट करना न भूलें।
Professor Mari का बनाया एक्सटेंशन जाँचना
शुरू करने से पहले: Professor Mari से एक एक्सटेंशन बनाने को कहें। वह कोड सेव कर सकती है, पर उसे न मंज़ूरी दे सकती है और न चालू कर सकती है। इस सेक्शन में कोई New Draft बटन नहीं है और कोई इंपोर्ट कंट्रोल भी नहीं है।
- Settings → Addons → Personal Extensions (सेटिंग्स → ऐडऑन → पर्सनल एक्सटेंशन) खोलें। कोई ड्राफ़्ट न हो, तो वहाँ यह लिखा होता है: "Ask Professor Mari to create an extension for you. Nothing runs until you enable it and approve the exact code hash."
- ड्राफ़्ट खोलें और कोड पढ़ें। हैश और Requested access की लिस्ट जाँचें।
- Review and Run तभी चुनें, जब आप ठीक उसी वर्ज़न को स्वीकार करते हों।
हर ड्राफ़्ट शुरुआत में बंद रहता है। कोड में कोई भी बदलाव, परमिशन में बदलाव या वापस लाया गया रिविज़न एक्सटेंशन को बंद कर देता है, और फिर नई मंज़ूरी चाहिए होती है।
Warning: सैंडबॉक्स कोड के काम सीमित करता है, पर कोड को भरोसेमंद नहीं बनाता। नुकसान पहुँचाने वाला एक्सटेंशन फिर भी तब तक प्रोसेसर का समय बर्बाद कर सकता है, जब तक कोई वॉचडॉग (बेकाबू कोड को रोकने वाला टाइमर) उसे बंद न कर दे। वह अपना स्टोरेज सीमा तक भर सकता है, या लॉग के ज़रिए आपको गुमराह कर सकता है। फ़ुल पेज एक्सटेंशन जान-बूझकर सैंडबॉक्स छोड़ देते हैं। चालू करने से पहले कोड पढ़ें, और थर्ड-पार्टी कोड की हर लाइन जाँचें।
अगर यह काम नहीं किया: Professor Mari के बदलाव और कोई भी वापस लाया गया रिविज़न ड्राफ़्ट को फिर से बंद कर देते हैं। उसे दोबारा जाँचें और पक्का करें कि डायलॉग विंडो में दिख रहा हैश वही है जो आपने पढ़ा था।
एक्सटेंशन क्या कर सकता है
Browser Extension आपके ब्राउज़र के अंदर एक सैंडबॉक्स (बाकी सब से अलग किया हुआ घेरा) में चलता है। यह Marinara के पेज, कुकीज़, ब्राउज़र स्टोरेज या नेटवर्क तक नहीं पहुँच सकता। यह ये काम कर सकता है:
- निजी स्टोरेज रखना और लॉग लिखना
- ऐसे बटन, मेन्यू आइटम और पैनल जोड़ना, जिन्हें Marinara आपकी थीम में बनाता है
- खुली चैट के ID पढ़ना
- सक्रिय कैरेक्टर या पर्सोना के चुनिंदा फ़ील्ड पढ़ना, सिर्फ़ तब जब आप वे परमिशन मंज़ूर करें
पूरी लिस्ट अपनी Personal Extensions लिखना में है।
Server Extension ऑपरेटिंग सिस्टम के सैंडबॉक्स के अंदर एक अलग Node प्रोसेस (सर्वर कंप्यूटर पर चलने वाला एक प्रोग्राम) में चलता है। यह Marinara की फ़ाइलों, आपकी फ़ाइलों, सर्वर के सीक्रेट, नेटवर्क, चाइल्ड प्रोसेस, वर्कर या नेटिव ऐडऑन तक नहीं पहुँच सकता।
प्लैटफ़ॉर्म सपोर्ट
Browser Extensions को सैंडबॉक्स ब्राउज़र खुद देता है, इसलिए ये हर जगह चलते हैं। Server Extensions के लिए ऑपरेटिंग सिस्टम का सपोर्टेड सैंडबॉक्स चाहिए। जहाँ ऐसा कोई सैंडबॉक्स नहीं है, वहाँ ये बंद रहते हैं, और Marinara इन्हें सैंडबॉक्स के बिना कभी नहीं चलाता।
| प्लैटफ़ॉर्म | Server Extensions |
| macOS | Seatbelt से सैंडबॉक्स में, जो macOS का सैंडबॉक्स है |
| Linux (Bubblewrap के साथ) | Bubblewrap से सैंडबॉक्स में, जो Linux का एक सैंडबॉक्स टूल है |
Linux (bwrap के बिना) | बंद: bwrap इंस्टॉल करें |
| Docker (डिफ़ॉल्ट) | बंद: कंटेनर की अनुमतियाँ |
| Windows | बंद: Browser Extension इस्तेमाल करें |
| Android | बंद: Browser Extension इस्तेमाल करें |
Browser Extensions हर प्लैटफ़ॉर्म पर सैंडबॉक्स में चलते हैं। फ़ुल पेज External Extensions कहीं भी सैंडबॉक्स में नहीं चलते, और उन पर आपको हमेशा साफ़ तौर पर भरोसा जताना पड़ता है।
आधिकारिक Docker इमेज में Bubblewrap मौजूद है, लेकिन उसका डिफ़ॉल्ट कंटेनर वे नेस्टेड नेमस्पेस और माउंट नहीं बना सकता जिनकी Bubblewrap को ज़रूरत होती है। Marinara रनटाइम पर सैंडबॉक्स की जाँच करता है, और कंटेनर इसकी इजाज़त न दे तो Server Extensions बंद रखता है। Docker की अनुमतियाँ ओवरराइड करने के तरीके और सुरक्षा पर उसके असर के लिए समस्या-समाधान देखें।
Windows और Android पर कोई सपोर्टेड प्रोसेस सैंडबॉक्स नहीं है, इसलिए वहाँ Server Extensions उपलब्ध नहीं हैं। Browser Extension इस्तेमाल करें, या Marinara सर्वर को macOS पर या bwrap वाले Linux पर चलाएँ।
थर्ड-पार्टी इंपोर्ट की इजाज़त देना
थर्ड-पार्टी इंपोर्ट डिफ़ॉल्ट रूप से लॉक और छिपे रहते हैं, क्योंकि वे दूसरे लोगों का लिखा कोड चलाते हैं। इन्हें दो कदम खोलते हैं:
- जिस कंप्यूटर पर Marinara चलता है, वहाँ
.envफ़ाइल मेंENABLE_EXTERNAL_EXTENSIONS=trueसेट करें, फिर Marinara रीस्टार्ट करें। सर्वर कॉन्फ़िगरेशन रेफ़रेंस देखें। - Settings → Advanced → Danger Zone (सेटिंग्स → एडवांस्ड → डेंजर ज़ोन) खोलें, डेटा मिटाने वाले कंट्रोल से नीचे स्क्रॉल करें, चेतावनी पढ़ें और Allow third-party extension imports (थर्ड-पार्टी एक्सटेंशन इंपोर्ट की इजाज़त दें) चालू करें।
इसके बाद Settings → Addons में फ़ाइल और फ़ोल्डर इंपोर्ट करने के कंट्रोल के साथ External Extensions दिखता है। सपोर्टेड फ़ॉर्मैट:
.personal-extension.zipऔर इससे मेल खाते.zipपैकेज.jsonमैनिफ़ेस्ट.css.js,.mjsऔर.cjs.server.js,.server.mjsऔर.server.cjs
इंपोर्ट के साथ मंज़ूरी कभी नहीं आती, और इंपोर्ट खुद को चालू नहीं कर सकते। ज़्यादातर Browser Extensions को सुरक्षित सैंडबॉक्स में ही रहना चाहिए। Full page access (पूरे पेज की पहुँच) वाला पैकेज अलग है:
- उसका कोड Marinara के पेज में चलता है, बिना सैंडबॉक्स के।
- वह चैट और कार्ड पढ़ सकता है, ब्राउज़र स्टोरेज इस्तेमाल कर सकता है, नेटवर्क रिक्वेस्ट भेज सकता है और Marinara के अपने API कॉल कर सकता है।
- उसे तभी चालू करें, जब आपने ठीक उसी वर्ज़न को जाँच लिया हो और उस पर भरोसा करते हों।
- Professor Mari के ड्राफ़्ट यह परमिशन नहीं माँग सकते।
पुराने, प्रोफ़ाइल से इंपोर्ट हुए, हाथ से रखे गए और अनजान स्रोत वाले रिकॉर्ड भी बाहरी माने जाते हैं। ये छिपे रहते हैं, इन्हें मंज़ूरी नहीं दी जा सकती, और दोनों कदम पूरे होने तक ये नहीं चलते।
इनमें से कोई भी कदम बंद करने पर सारे इंपोर्ट किए गए एक्सटेंशन बंद हो जाते हैं। उसे दोबारा चालू करने पर वे फिर से नहीं चलते। कोई फ़ुल पेज एक्सटेंशन अपने पीछे बदलाव छोड़ गया हो, तो पेज रीलोड करें।
अगर यह काम नहीं किया: इंपोर्ट कंट्रोल न दिखें, तो जाँचें कि दोनों कदम पूरे हो गए हैं, और आप सर्वर वाले कंप्यूटर पर हैं या आपने Settings → Advanced → Admin Access (सेटिंग्स → एडवांस्ड → एडमिन एक्सेस) में एडमिन सीक्रेट सेव कर दिया है।
एक्सपोर्ट, रिविज़न और रिकवरी
पोर्टेबल पैकेज डाउनलोड करने के लिए एक्सटेंशन की एक्सपोर्ट कार्रवाई इस्तेमाल करें। एक्सपोर्ट किए और वापस लाए गए पैकेज बंद ही रहते हैं। कोई रिविज़न वापस लाने पर भी वह बंद ड्राफ़्ट बन जाता है।
Settings → Addons → Extension revision history (सेटिंग्स → ऐडऑन → एक्सटेंशन रिविज़न हिस्ट्री) तय करता है कि हर Personal Extension और External Extension के कोड के कितने पिछले वर्ज़न रखे जाएँ। डिफ़ॉल्ट 10 है। 0 से 10 तक चुनें, जहाँ 0 हिस्ट्री बंद कर देता है। सीमा कम करने पर पुराने रिविज़न हमेशा के लिए हटाने से पहले पुष्टि माँगी जाती है। मौजूदा कोड, मंज़ूरियाँ, चालू होने की हालत और सेव किया गया एक्सटेंशन डेटा बना रहता है। Professor Mari के ज़रिए किए गए बदलाव भी इसी सीमा का पालन करते हैं।
एक्सटेंशन गड़बड़ करे तो Disable (बंद करें) चुनें। इंटरफ़ेस उपलब्ध न हो, तो Marinara बंद करें और installed_extensions के मेल खाते रिकॉर्ड की enabled वैल्यू "false" कर दें। approvedHash हाथ से कभी सेट न करें।
मिलती-जुलती गाइड
- अपनी Personal Extensions लिखना
- Professor Mari
- सर्वर कॉन्फ़िगरेशन
- बैकअप और रिस्टोर
- रिमोट एक्सेस