# प्यानल विस्तार ## स्थापित र अनलाइन विस्तार हेर्नुहोस् {#browse} 1. right-panel ट्याब bar मा **दायाँ प्यानल अनुकूलन गर्नुहोस्** खोल्नुहोस्। 2. separator मुनिको **विस्तारहरू** विस्तार गर्नुहोस्। 3. स्थापित addon र आधिकारिक online catalogue को एउटै सूचीमा खोज्न **विस्तार खोज्नुहोस्** प्रयोग गर्नुहोस्। metadata का लागि प्रविष्टिमा hover/focus गर्नुहोस्। customization popup खुल्दा disclosure हरेकपटक संक्षिप्तबाट सुरु हुन्छ। स्थापित र online प्रविष्टि extension ID अनुसार एकत्र हुन्छन्; छुट्टै manager विन्डो वा installed/online मोड छैन। catalogue metadata हेर्दा लेखकको panel code download वा execute हुँदैन। catalogue [CodeNomad Extensions](https://github.com/NeuralNomadsAI/CodeNomad-Extensions) मा राखिन्छ; समावेश हुनु र दाबी गरिएका लेखक नाम signature वा विश्वासको प्रमाण होइनन्। catalogue अनुपलब्ध भए स्थापित विस्तार र **ZIP बाट स्थापना गर्नुहोस्…** उपलब्ध रहन्छन्। discovery पुनःप्रयास गर्न refresh गर्नुहोस्। popup संक्षिप्त वा बन्द गर्दा pending review/confirmation UI त्यागिन्छ; चुपचाप केही स्थापना हुँदैन। ## समीक्षा गरी निष्क्रिय स्थापना {#install} 1. catalogue प्रविष्टिमा **स्थापना गर्नुहोस्…**, वा छुट्टै ल्याएको package का लागि **ZIP बाट स्थापना गर्नुहोस्…** रोज्नुहोस्। 2. package ID, लेखक, repository, संस्करण, API/अनुमति र SHA-256 digest समीक्षा गर्नुहोस्। आवश्यक भए technical details विस्तार गर्नुहोस्। 3. publisher प्रमाणित गर्नुहोस् र उपलब्ध भए विश्वसनीय माध्यमबाट digest तुलना गर्नुहोस्। 4. code लाई विश्वास गर्दा मात्र **म यो प्याकेज र यसको लेखकलाई विश्वास गर्छु** चयन गरी **निष्क्रिय रूपमा स्थापना गर्नुहोस्** रोज्नुहोस्। निरीक्षणले चयनित package download/revalidate गर्छ; लेखक code चलाउँदैन। digest ले ठ्याक्कै byte चिनाउँछ, लेखक पहिचान होइन। catalogue package ठ्याक्कै घोषित GitHub release asset बाट आउँछन्, मनपरी URL बाट होइन। manual package `manifest.json` र self-contained `panel.html` मात्र भएका ZIP हुन्; अमान्य वा असमर्थित package अस्वीकार हुन्छन्। स्थापनालाई OpenCode restart चाहिँदैन र सक्रियता स्वतः दिँदैन। validation, conflict वा storage असफलताले फरक byte सहित retry को अनुमति दिँदैन। नयाँ स्थापना प्रयासअघि package फेरि निरीक्षण गर्नुहोस्। ## सक्रियता र दायरा बुझ्नुहोस् {#activate-scope} 1. **विस्तारहरू** disclosure माथिको addon row मा फर्कनुहोस्, जुन **दायाँ प्यानल अनुकूलन गर्नुहोस्** भित्र छ। स्थापित निष्क्रिय addon पनि त्यही सूचीमा रहन्छन्। 2. सक्रिय गर्न checkbox चयन गर्नुहोस्। अक्षम गर्न त्यही checkbox खाली गर्नुहोस्। त्यो checkbox मात्र सक्रियता नियन्त्रण हो: थप manager switch वा प्रति-विन्डो दृश्यता gate छैन। सक्रियता configuration भरिका परियोजनामा हुन्छ, प्रति फोल्डर होइन। रिमोट जडानमा यसले server को installed extension store प्रभावित गर्छ, हेर्ने उपकरण मात्र होइन। extension store चयनित CodeNomad कन्फिगरेसनछेउको `panel-extensions/` हो। एउटै configuration directory प्रयोग गर्ने छुट्टै desktop data profile ले विस्तार अलग **गर्दैनन्**। उल्टो, फरक configuration खोल्नु अन्यत्र स्थापित addon चलाउने अनुमति होइन। फरक बुझ्न [डेस्कटप विन्डो र डेटा](desktop.md) हेर्नुहोस्। सक्षम प्यानल चयन हुँदा mount हुन सक्छ; लुकाउँदा अस्थायी UI अवस्था हट्न सक्छ। अक्षम गर्दा सक्रियता खारेज हुन्छ। customization को **रिसेट गर्नुहोस्** ले built-in लेआउट मात्र फर्काउँछ, विस्तार सक्षम, अक्षम वा uninstall गर्दैन। ## बदल्नुहोस् वा हटाउनुहोस् {#replace-remove} 1. स्थापित package बदल्न **संस्करण बदल्नुहोस्…** वा उही ID को अर्को ZIP निरीक्षण गर्नुहोस्। 2. नयाँ digest र अनुमति समीक्षा, trust स्वीकार गरी निष्क्रिय स्थापना गर्नुहोस्। 3. प्रतिस्थापनलाई विश्वास गर्ने निर्णयपछि मात्र सामान्य checkbox बाट पुनःसक्रिय गर्नुहोस्। 4. uninstall गर्न लक्ष्य समीक्षा गरी **हटाउनुहोस्…** र **हटाउने पुष्टि गर्नुहोस्** प्रयोग गर्नुहोस्। अनुमति सूची उही भए पनि हरेक प्रतिस्थापनले सबै परियोजनामा सक्रियता खारेज गर्छ र प्यानलका आफ्नै सुरक्षित सेटिङ मेटाउँछ। validation/conflict/storage असफलताले स्थापित package जोगाउँछ। चुपचाप extension update हुँदैन। हटाइले package, सक्रियता सेटिङ र सुरक्षित प्यानल सेटिङ मेट्छ, OpenCode सत्र वा परियोजना फाइल होइन। नचाहेको code बाट पुनःप्राप्तिका लागि पहिले अक्षम गर्नुहोस्; प्रमाणित विश्वसनीय package मात्र पुनःस्थापना गर्नुहोस्। ## सन्दर्भ, asset सहमति र sandbox सीमा {#permissions-sandbox} | Contract | सक्रियताले दिने अनुमति | | --- | --- | | API 1 / `session.context` | हालको session identifier (वा कुनै होइन), interface भाषा र रूप। transcript पाठ वा filesystem पहुँच छैन। | | API 2 / `session.assets.read` plus context | सीमित current-session tool-result image/attachment metadata सूची र समर्थित embedded byte पढ्न स्पष्ट समीक्षा गरिएको अनुमति। सामान्य transcript, file वा URL पहुँच होइन। | | API 3 / `repository.workItems.read` र सन्दर्भ | GitHub, GitLab वा Gitea/Forgejo मा परियोजना repository का issues र pull requests का सीमित पृष्ठहरू सूचीबद्ध गर्ने र तीमध्ये एउटा ब्राउजरमा खोल्ने स्पष्ट रूपमा समीक्षा गरिएको अनुमति। यो फाइल, प्रमाणपत्र वा सामान्य नेटवर्क पहुँच होइन। | | API 4 / सन्दर्भ र तलका एक वा बढी अनुमति | समीक्षाले घोषित प्रत्येक अनुमतिका लागि एउटा वाक्य देखाउँछ; सक्रियताले सबैलाई एकसाथ दिन्छ, र प्रतिस्थापनले सबै खारेज गर्छ। | | `session.images.read` | प्रदर्शित कुराकानीमा read उपकरणले फर्काएका छविहरू पढ्ने, प्रमाणित गर्न सकिँदा उत्पादन स्थिति र वंशावलीसहित। | | `session.images.prompts` (`session.images.read` आवश्यक) | परियोजनाको छविहरू कुराकानीमा उत्पन्न प्रत्येक छविको prompt र model पढ्ने। | | `composer.prefill` | प्रदर्शित कुराकानीको कम्पोजरमा पाठ थप्ने। यसले कहिल्यै सन्देश पठाउँदैन। | | `images.conversation` | यस परियोजनाको छविहरू कुराकानी खोल्ने वा सुरु गर्ने। | | `opencode.designAgent` | यो विस्तार सक्षम रहेसम्म CodeNomad को Design agent र यसका छवि skill हरू OpenCode मा थप्छ। | | `panel.preferences` | यस प्यानलका आफ्नै सेटिङहरू सम्झने। | asset पहुँच हाल mount भएको host/session अनुसार हुन्छ, लेखकले छानेको session अनुसार होइन। local/remote reference अनुपलब्ध भनेर सूचीबद्ध हुन सक्छन्; asset API ले मनपरी remote URL ल्याउँदैन वा local file खोल्दैन। सत्र बदल्दा, disconnect वा consent खारेज गर्दा पुरानो पहुँच अमान्य हुन्छ। API 4 मा, छवि पठन पनि त्यसै गरी प्रदर्शित कुराकानी अनुसार हुन्छ, र agent ले त्यसमा फेरि पढेका छविहरू मात्र देखाउँछ। `session.images.prompts` भएको extension ले तपाईं वा agent ले छविहरू कुराकानीमा छविका लागि लेखेका prompt पढ्न सक्छ, र sandbox भए पनि तिनलाई अरूलाई दिन सक्छ, त्यसैले ती सुम्पन भरोसा गर्ने लेखकलाई मात्र यो अनुमति दिनुहोस्। `composer.prefill` ले थपेको पाठ तपाईंले सम्पादन नगरेसम्म वा **सन्देश पठाउनुहोस्** नरोजेसम्म कम्पोजरमा रहन्छ; यो कहिल्यै आदेशबाट सुरु हुँदैन, कहिल्यै खुला `@` उल्लेखमा अन्त्य हुँदैन, र छवि path सादा पाठका रूपमा उल्लेख गर्छ। कम्पोजरमा Ctrl+Z (macOS मा Cmd+Z) ले undo गर्दा यो हट्दैन। सुरक्षित प्यानल सेटिङ यस CodeNomad प्रोफाइलका हुन्, प्रति extension बढीमा 4 KiB; extension अक्षम गर्दा ती रहिरहन्छन्। वस्तुहरू परियोजना फोल्डरको `upstream` remote बाट, नभए `origin` बाट आउँछन्। CodeNomad ले तिनलाई तपाईंले पहिले नै साइन इन गरेको GitHub, GitLab वा Gitea CLI (`gh`, `glab`, `tea`) मार्फत, वा सार्वजनिक repository का लागि अज्ञात रूपमा पढ्छ र कुनै टोकन भण्डारण गर्दैन; एक्सटेन्सनले repository को नाम र वस्तुहरू मात्र देख्छ। अज्ञात पठन github.com, gitlab.com, codeberg.org र gitea.com मा मात्र हुन्छ; स्व-होस्ट गरिएको forge त्यसमा साइन इन गरिएको CLI मार्फत मात्र पढिन्छ। वस्तु खोल्दा CodeNomad ले त्यही forge मा त्यसको पृष्ठ तपाईंको ब्राउजरमा खोल्छ, बढीमा प्रति सेकेन्ड एक पटक; एक्सटेन्सनले अन्य ठेगानाहरू खोल्न सक्दैन। लेखक code सीमित iframe मा चल्छ, trusted application renderer मा होइन। native/OpenCode bridge, credential पहुँच, general RPC, form, popup वा download पाउँदैन; network API र बाह्य स्रोत प्रतिबन्धित छन्। विस्तार UI addon हुन्, [OpenCode plugin](integrations.md) होइनन्। sandbox process/CPU अलगाव वा स्वीकृत code हानिरहित हुने वाचा होइन। शत्रुतापूर्ण विस्तारले renderer अवरुद्ध गर्न सक्छ। विश्वसनीय लेखकका मात्र स्थापना गर्नुहोस्, secret नदिनुहोस्, र अप्रत्याशित व्यवहार भए addon अक्षम/हटाउनुहोस्। ## Design विस्तारसँग छविहरू बनाउनुहोस् {#design} **Design** विस्तार प्रोजेक्टको **छवि वार्तालाप** मा CodeNomad को Design एजेन्टसँग तपाईंले बनाउने छविहरूका लागि लाइट टेबल हो। यसले छविहरू देखाउँछ, सन्देश बक्समा अनुरोध तयार गर्छ र हरेक सिर्जना तपाईंले पठाउने सन्देशमा छोड्छ। 1. छवि मोडेल दिने प्रदायक जडान गर्नुहोस्। **सेटिङहरू → प्रदायकहरू → छविहरू** मा बन्द नगरिएसम्म छवि सिर्जना सक्रिय रहन्छ ([छवि सिर्जना र भण्डारण](providers.md#images))। 2. **दायाँ प्यानल अनुकूलन गर्नुहोस् → विस्तारहरू** मा, यसका अनुमति समीक्षा गरेपछि ([सन्दर्भ, asset सहमति र sandbox सीमा](#permissions-sandbox)) catalogue बाट **Design** स्थापना गर्नुहोस् ([समीक्षा गरी निष्क्रिय स्थापना](#install)), त्यसपछि यसको checkbox चयन गर्नुहोस् ([सक्रियता र दायरा बुझ्नुहोस्](#activate-scope))। 3. **Design** प्यानल खोल्नुहोस् र **छवि वार्तालाप खोल्नुहोस्** रोज्नुहोस्। विस्तार सक्षम रहेसम्म CodeNomad ले आफ्नो Design एजेन्ट र छवि skill हरू OpenCode मा थप्छ। तपाईंको आफ्नै `design` एजेन्ट र तपाईंका आफ्नै `design-*` skill हरूले सधैँ प्राथमिकता पाउँछन्; तपाईंले आफ्नै `design` एजेन्ट दिँदा प्यानलले **तपाईंको आफ्नै Design एजेन्ट प्रयोग भइरहेको छ।** देखाउँछ। छवि सिर्जना, छवि मोडेल वा Design एजेन्ट नहुँदा पनि प्यानलले भन्छ। ### छवि वार्तालाप {#design-conversation} हरेक प्रोजेक्ट फोल्डर वा worktree को आफ्नै छवि वार्तालाप हुन्छ, जसको शीर्षक **छविहरू** हो। **छवि वार्तालाप खोल्नुहोस्** ले त्यसलाई भेट्टाउँछ, वा Design एजेन्ट र त्यो एजेन्टसँगको नयाँ वार्तालापका लागि CodeNomad ले छान्ने मोडेलसहित बनाउँछ, अनि सन्देश बक्समा focus राखेर देखाउँछ; खोल्दा केही पठाइँदैन। पहिल्यैदेखि भएको छवि वार्तालापले आफ्नै मोडेल राख्छ। **नयाँ छवि वार्तालाप** ले खाली लाइट टेबलसहित अर्को वार्तालाप सुरु गर्छ, र वार्तालापमा धेरै छविहरू भएपछि प्यानलले यसको सुझाव दिन्छ; त्यसपछि **खोल्नुहोस्** ले सबैभन्दा नयाँ देखाउँछ। संग्रह गरिएका वा मेटाइएका छवि वार्तालापहरू छोडिन्छन्। आफूलाई चाहिएको कुरा लेखेर पठाउनुहोस्: एजेन्टले केही ढाँचा प्रश्न सोध्छ, कति छवि सिर्जना गर्ने भनेर बताउँछ, ती सिर्जना गर्छ, प्रत्येकलाई फेरि पढ्छ र समीक्षा गर्छ। छविहरू प्रोजेक्ट फोल्डरको `.codenomad/design/` मा सुरक्षित हुन्छन्। CodeNomad ले त्यो फोल्डर repository को स्थानीय Git exclusion (`.git/info/exclude`) मा थप्छ र `.gitignore` नछोई राख्छ; थप्न नसके प्यानलले **यस स्थानका छविहरू Git मा देखिन सक्छन्।** देखाउँछ। कुनै पालो undo गर्दा त्यसका छविहरू लाइट टेबलबाट हट्छन् तर फाइलहरू रहन्छन्, र एजेन्टले overwrite गरेको छवि फिर्ता ल्याउन सकिँदैन। एजेन्टले करिब 1K पिक्सेलका छवि माग्छ, तर प्रदायकहरूले ठूला छवि फर्काउन सक्छन्, र एकैपटक धेरै ठूला छविले साझा OpenCode सेवामा धेरै memory लिन सक्छन्। Design एजेन्ट प्रयोग गर्ने छवि वार्तालापमा त्यो एजेन्ट छैन भने, सन्देश बक्सले **Design एजेन्ट उपलब्ध छैन** देखाउँछ र पठाउन रोक्छ: **पूर्वनिर्धारित एजेन्ट प्रयोग गर्नुहोस्** रोज्नुहोस्, वा Design विस्तार फेरि सक्षम गर्नुहोस्। वार्तालापको chat मोडेलले छवि प्राप्त गर्न सक्दैन भने, एजेन्टले तिनलाई दृश्य रूपमा समीक्षा गर्न सक्दैन भनी प्यानलले चेतावनी दिन्छ; उसले फेरि पढेका छविहरू भने लाइट टेबलमा देखिइरहन्छन्। ### लाइट टेबल {#design-light-table} **लाइट टेबल** ले देखाइएको वार्तालापमा एजेन्टले फेरि पढेका छविहरू, नयाँदेखि पुरानोसम्म, जवाफअनुसार समूह बनाएर देखाउँछ। कुनै छवि चयन गर्दा त्यो ठूलो देखिन्छ र **साना आकारहरू** मा 16, 32 र 64 px का preview हुन्छन्; **तुलना** ले दुई छवि छेउछाउ राख्छ, र **पूरा आकारमा हेर्नुहोस्** ले viewer खोल्छ। साँघुरो प्यानलमा तुलना गर्न त्यसलाई चौडा गर्नुहोस्। वंश (**यसबाट बनेको**, **यसमा प्रयोग**) र छवि वार्तालापमा prompt र मोडेल, कुन सिर्जनाले छवि बनायो भनी CodeNomad ले प्रमाणित गर्न सक्दा मात्र देखिन्छन्; नत्र छविले आफ्ना पिक्सेल राख्छ र **उत्पत्ति प्रमाणित गर्न सकिँदैन** देखाउँछ। **सिर्जनाहरू** ले प्रत्येक छवि सिर्जना र यसको अवस्था सूचीबद्ध गर्छ; प्रगति वार्तालापमा हेर्नुहोस्। अर्को वार्तालापमा, प्यानलले त्यस वार्तालापमा फेरि पढिएका छविहरू prompt र अनुरोधबिना देखाउँछ र छवि वार्तालाप खोल्न प्रस्ताव गर्छ। छवि वार्तालापमा, **यहाँबाट सुरु गर्नुहोस्** (app icon वा logo जस्तो recipe), **परिष्कृत**, **भिन्नताहरू**, **दिशा लागू गर्नुहोस्**, **परियोजनामा सुरक्षित गर्नुहोस्…**, **एजेन्टलाई देखाउन भन्नुहोस्** र **फेरि प्रयास** ले सन्देश बक्समा सम्पादन गर्न मिल्ने पाठ मात्र थप्छन्: प्यानलले कहिल्यै सन्देश पठाउँदैन वा छवि सिर्जना गर्दैन। चयन गरिएको छविसम्बन्धी कार्यहरूले त्यसको प्रोजेक्टसापेक्ष path उद्धृत गर्छन्, र उत्पत्ति प्रमाणित हुने प्रोजेक्टका छवि मात्र उद्धृत गर्न सकिन्छ। अनुरोध सम्पादन गर्नुहोस्, अनि आफैँ पठाउनुहोस्। **परियोजनामा सुरक्षित गर्नुहोस्…** ले अनुरोधपछि तपाईंले टाइप गर्ने गन्तव्यमा छवि copy गर्न एजेन्टलाई भन्छ। **प्रति पालो छविहरू** (1 देखि 4, पूर्वनिर्धारित 3) नयाँ छवि सिर्जना गर्ने अनुरोधहरूमा राखिन्छ र प्यानलका सुरक्षित सेटिङमा रहन्छ। फोनमा प्यानल floating हुन्छ र अनुरोध थपेपछि बन्द हुन्छ। ### CodeNomad बिना Design एजेन्ट प्रयोग गर्नुहोस् {#design-without-codenomad} Design एजेन्ट र यसका skill हरू सामान्य OpenCode फाइलहरू हुन्। CodeNomad बिना OpenCode TUI वा अर्को client मा प्रयोग गर्न, [Design content फोल्डर](../../../packages/server/src/opencode/design/opencode/) भित्रको सामग्री प्रोजेक्टको `.opencode/` फोल्डरमा वा तपाईंको global OpenCode कन्फिगरेसन फोल्डर (`~/.config/opencode/`) मा copy गर्नुहोस्, र `NOTICE.md` तथा license पनि सँगै राख्नुहोस्। त्यसपछि **design** एजेन्ट चयन गर्नुहोस्; यसले आफ्ना skill हरू नामबाट load गर्छ, र अरू एजेन्टले तपाईंले नाम दिँदा मात्र ती प्रयोग गर्छन्। Design एजेन्ट र यसका skill हरूले [Open Design](https://github.com/nexu-io/open-design) (Apache-2.0) र [taste-skill](https://github.com/Leonxlnx/taste-skill) (MIT) का सामग्री रूपान्तरण गरेका छन्; `NOTICE.md` ले रूपान्तरण गरिएको प्रत्येक फाइल सूचीबद्ध गर्छ। Design विस्तारले MCP Assets विस्तारको code (MIT) पुनः प्रयोग गर्छ।