dsh-composer-plus 1.23.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +12 -5
- package/README.es.md +12 -5
- package/README.fr.md +12 -5
- package/README.hi.md +12 -5
- package/README.id.md +12 -5
- package/README.ja.md +12 -5
- package/README.ko.md +12 -5
- package/README.md +12 -5
- package/README.pt-BR.md +12 -5
- package/README.ru.md +12 -5
- package/README.tr.md +12 -5
- package/README.vi.md +12 -5
- package/README.zh.md +12 -5
- package/assets/features/assistant.webp +0 -0
- package/client.js +148 -48
- package/index.js +334 -1
- package/package.json +2 -2
- package/release-notes.json +14 -14
- package/tether/gateway/server.mjs +17 -7
package/README.hi.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
फिर dsh रीस्टार्ट करें। (CLI डेस्कटॉप प्रोफ़ाइल में इंस्टॉल नहीं कर सकता; उस प्रोफ़ाइल को ऐप खुद संभालता है।)
|
|
31
31
|
|
|
32
|
-
> dsh का pnpm 24 घंटे से नए वर्शन छोड़ देता है। रिलीज़ के तुरंत बाद वर्शन भी लिखें: `dsh-composer-plus@1.
|
|
32
|
+
> dsh का pnpm 24 घंटे से नए वर्शन छोड़ देता है। रिलीज़ के तुरंत बाद वर्शन भी लिखें: `dsh-composer-plus@1.24.0`।
|
|
33
33
|
|
|
34
34
|
## सुविधाएं
|
|
35
35
|
|
|
@@ -75,6 +75,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
75
75
|
| **सुरक्षित फ़ाइलें** | <a id="feature-protectedfiles"></a>डिफ़ॉल्ट रूप से चालू। एजेंट के अपने फ़ाइल टूल आपके पैटर्न से मेल खाने वाली फ़ाइलें न पढ़ सकते हैं, न बदल सकते हैं: **पढ़ना और लिखना** पैटर्न के लिए किसी फ़ाइल पर `read`, `read_image` और `grep` मना किए जाते हैं, और दोनों तरह के पैटर्न के लिए `write`, `edit` और `str_replace_editor`। एजेंट वजह पढ़ता है और उसे आपसे पूछने को कहा जाता है। डिफ़ॉल्ट पैटर्न `.env*`, `*.pem` और `*.key` हैं। सेटिंग → Composer Plus → **सुरक्षित फ़ाइलें**: एक पैटर्न जोड़ें (जैसे `published/**` या `config/*.yml`), **पढ़ना और लिखना** और **सिर्फ़ लिखना** के बीच बदलने के लिए उसकी तरह पर क्लिक करें, ✕ से उसे हटाएं, या **डिफ़ॉल्ट इस्तेमाल करें** पर क्लिक करें। `/` के बिना पैटर्न किसी भी फ़ोल्डर में फ़ाइल के नाम से मेल खाता है। यह एक सुरक्षा रेलिंग है, सैंडबॉक्स नहीं: शेल कमांड (`cat .env`), स्क्रिप्ट या MCP टूल फिर भी फ़ाइल तक पहुंच सकते हैं (सीमाएं देखें)। | <a href="assets/features/protectedFiles.webp"><img src="assets/features/protectedFiles.webp" width="160" alt="स्क्रीनशॉट: सुरक्षित फ़ाइलें"></a> |
|
|
76
76
|
| **ब्लॉक की गई कमांड** | <a id="feature-blockedcommands"></a>डिफ़ॉल्ट रूप से चालू, खाली सूची के साथ। एजेंट की शेल कमांड (`bash`, `pwsh`) आपके नियमों से मेल खाने वाली कमांड नहीं चला सकतीं: **ब्लॉक** नियम कॉल को मना करता है (एजेंट वजह पढ़ता है और उसे आपसे पूछने को कहा जाता है), **पहले पूछना** नियम dsh का मंज़ूरी कार्ड दिखाता है, और कमांड सिर्फ़ तब चलती है जब आप उसकी अनुमति देते हैं। सेटिंग → Composer Plus → **ब्लॉक की गई कमांड**: एक नियम टाइप करें (जैसे `npm publish`, `git push --force` या `ssh *192.168.2.19`), **ब्लॉक** और **पहले पूछना** के बीच बदलने के लिए उसकी तरह पर क्लिक करें, फिर **जोड़ें** पर क्लिक करें; किसी नियम की तरह बदलने के लिए उसकी तरह पर क्लिक करें, ✕ से नियम हटाएं। नियम एक कमांड का नाम और वे शब्द होते हैं, जो इसी क्रम में उसके बाद आने चाहिए; `*` किसी भी टेक्स्ट से मेल खाता है। यह `&&`, `;`, `\|` के बाद, `$(…)`, `bash -c "…"` या `eval` के अंदर, और `sudo` या `env` के बाद भी कमांड ढूंढता है। यह एक सुरक्षा रेलिंग है, सैंडबॉक्स नहीं: कोई वैरिएबल (`$CMD`), स्क्रिप्ट फ़ाइल या दूसरा प्रोग्राम फिर भी कमांड चला सकता है (सीमाएं देखें)। | <a href="assets/features/blockedCommands.webp"><img src="assets/features/blockedCommands.webp" width="160" alt="स्क्रीनशॉट: ब्लॉक की गई कमांड"></a> |
|
|
77
77
|
| **टास्क बोर्ड** | <a id="feature-taskboard"></a>बायां साइडबार → **टास्क बोर्ड**, या dsh में कहीं भी `Cmd+Shift+K` (Windows और Linux पर `Ctrl+Shift+K`) दबाएं। आपकी dsh चैट का कानबान बोर्ड, उसी लाइव स्थिति के साथ जो साइडबार दिखाता है: जो चैट आपकी मंज़ूरी, जवाब या प्लान रिव्यू का इंतज़ार करती है, वह नारंगी बिंदु के साथ **समीक्षा** में है, चल रही चैट **प्रगति में** है, और खत्म हुई जो चैट आपने अभी नहीं खोली, वह **पूरा हुआ** में है (हरी)। चैट खोलने पर उसका कार्ड अपने आप **पूरा हुआ** से हट जाता है; पढ़ी गई खत्म हुई चैट देखने के लिए हरे कार्डों के नीचे **हाल में पूरे हुए (N)** पर क्लिक करें (सबसे नई 10, फिर **N पुराने टास्क दिखाएं**; खुला या बंद होना इस डिवाइस पर रहता है)। जो चैट बोर्ड के पीछे खुली रहते हुए खत्म होती है (**नया टास्क**), वह आपके खोलने तक हरी रहती है। प्रोजेक्ट सूची खोलने के लिए बोर्ड के ऊपर प्रोजेक्ट के नाम पर क्लिक करें, फिर कोई प्रोजेक्ट या **सभी प्रोजेक्ट** चुनें; हर चैट की अपनी ब्रांच का फ़ोल्डर अपने प्रोजेक्ट में गिना जाता है। चुनने के बाद, `Esc` दबाने पर या सूची के बाहर क्लिक करने पर सूची बंद हो जाती है। किसी प्रोजेक्ट को उसके नाम से ढूंढने के लिए सूची में सबसे ऊपर **प्रोजेक्ट खोजें** में टाइप करें (छोटे-बड़े अक्षर और एक्सेंट मायने नहीं रखते; `Esc` बॉक्स खाली करता है), पहला मिलान चुनने के लिए `Enter` दबाएं, और सिर्फ़ वे प्रोजेक्ट दिखाने के लिए जिनमें कोई चैट इंतज़ार कर रही है, चल रही है, बिना देखे खत्म हुई है या पिछले 2 घंटों में बदली है, **पिछले 2 घंटों में सक्रिय** पर क्लिक करें (यह सेटिंग इस डिवाइस पर रहती है)। **नया टास्क** (या `n`) बोर्ड पर दिख रहे प्रोजेक्ट में dsh की अपनी नई चैट खोलता है (**सभी प्रोजेक्ट** चुने होने पर उस प्रोजेक्ट में, जिसे dsh का नया सेशन चुनता है), ताकि आप किसी भी चैट की तरह फ़ाइलें जोड़ सकें, कमांड इस्तेमाल कर सकें और मॉडल चुन सकें। आपका पहला संदेश जाते ही बोर्ड अपने-आप लौट आता है। तब तक चैट **प्रगति में** कॉलम में सबसे ऊपर **नया टास्क** के रूप में इंतज़ार करती है: पहला संदेश लिखने के लिए उस पर क्लिक करें। जिस प्रोजेक्ट में कोई चैट आपका इंतज़ार कर रही है, प्रोजेक्ट सूची में उसके आगे नारंगी बिंदु दिखता है (जब कोई भी चैट इंतज़ार कर रही हो, तब ऊपर प्रोजेक्ट के नाम के पास भी यह दिखता है)। dsh चैट को नाम देता है और चैट का मॉडल उसी संदेश से ज़्यादा से ज़्यादा 3 टैग लिखता है। चैट खोलने के लिए कार्ड पर क्लिक करें। बोर्ड पर ही जवाब देने के लिए नारंगी कार्ड (या उसके **जवाब दें**) पर क्लिक करें; पूरी चैट के लिए पैनल में **चैट खोलें** है: **अस्वीकार करें** या **एक बार अनुमति दें**, प्लान के लिए **मंज़ूर करें** या **बदलावों का अनुरोध करें**, या सवाल के लिए विकल्प और अपना टेक्स्ट। किसी खत्म हुए कार्ड को बोर्ड से हटाने के लिए उसके **×** पर क्लिक करें, या **हाल में पूरे हुए** खोलकर उन कार्डों को बोर्ड से हटाने के लिए **पूरा हुआ** के ऊपर **सब हटाएं** पर क्लिक करें: यह पहले दिखाता है कि किस प्रोजेक्ट के कितने कार्ड हटेंगे, और बिना पढ़े (हरे) कार्ड बने रहते हैं। उसके बाद 8 सेकंड तक **पहले जैसा करें** कार्ड वापस लाता है; **पूरा हुआ** के नीचे **हटाए गए (N)** बोर्ड से हटे कार्डों की सूची दिखाता है, और **बोर्ड पर वापस रखें** किसी एक कार्ड को फिर से **पूरा हुआ** में दिखाता है। कोई चैट डिलीट नहीं होती: चैट dsh के साइडबार में बनी रहती हैं, बोर्ड रीस्टार्ट के बाद भी यह याद रखता है (Tether वही बोर्ड दिखाता है), और जो चैट फिर से चलती है, वह बोर्ड पर लौट आती है। **प्रगति में** के किसी कार्ड पर पॉइंटर रखें (या कीबोर्ड फ़ोकस उस पर ले जाएं), तो उसकी प्रगति दिखती है: चैट कितनी देर से चल रही है, उसकी करने वाले कामों की सूची का चरण, अभी चल रहा टूल और एजेंट की आखिरी लाइन। सेटिंग → Composer Plus → टास्क बोर्ड में **होवर पर प्रगति** से **तेज़ (AI के बिना)** (डिफ़ॉल्ट: सिर्फ़ चैट पढ़ता है) या **AI सारांश** (चैट के मॉडल को एक छोटी कॉल एक या दो वाक्य भी लिखती है) चुनें। | <a href="assets/features/taskBoard.webp"><img src="assets/features/taskBoard.webp" width="160" alt="स्क्रीनशॉट: टास्क बोर्ड"></a> |
|
|
78
|
+
| **असिस्टेंट** | <a id="feature-assistant"></a>डिफ़ॉल्ट रूप से बंद: इसे **सेटिंग → Composer Plus** में चालू करें। फिर बाएं साइडबार में **असिस्टेंट** पर क्लिक करें (**टास्क बोर्ड** के ठीक नीचे): यह एक स्थायी चैट खोलता है, जिसे आप ChatGPT या Grok चैट की तरह अपने निजी असिस्टेंट के रूप में इस्तेमाल करते हैं। पहली क्लिक `~/Assistant` फ़ोल्डर बनाती है, उसे “Assistant” प्रोजेक्ट के रूप में जोड़ती है और चैट को workspace-write अनुमति मोड और dsh के डिफ़ॉल्ट मॉडल के साथ शुरू करती है; उसके बाद हर क्लिक वही चैट खोलती है (आर्काइव की गई चैट वापस आती है, डिलीट की गई चैट फिर से बनती है)। इससे रिमाइंडर के लिए कहें (“2 मिनट में मुझे पानी पीना याद दिलाओ”): यह dsh के शेड्यूल किए गए टास्क इस्तेमाल करता है, इसलिए रिमाइंडर उस समय चैट को चलाता है, और मोबाइल कनेक्ट चालू होने पर Tether अपनी “Turn finished” सूचना भेजता है। इससे वेब पर खोजने के लिए कहें, या अपनी दूसरी चैट के बारे में पूछें: यह सभी प्रोजेक्ट की चैट की सूची दिखा सकता है (चल रही, आपका इंतज़ार कर रही या निष्क्रिय) और किसी एक चैट के सबसे नए संदेश पढ़ सकता है। यह किसी चैट को संदेश भी भेज सकता है, किसी प्रोजेक्ट में नई चैट शुरू कर सकता है, चल रही चैट रोक सकता है या किसी चैट को आर्काइव कर सकता है: इन चार कामों में से हर एक पहले dsh का मंज़ूरी कार्ड दिखाता है (Tether में भी), और जब तक आप **एक बार अनुमति दें** पर क्लिक नहीं करते, कुछ नहीं होता। इसमें डिलीट करने का कोई टूल नहीं है। ये टूल और इसके छोटे निर्देश सिर्फ़ इसी चैट में हैं; किसी वेब पेज या दूसरी चैट में पढ़ा गया टेक्स्ट डेटा माना जाता है, आदेश नहीं। हर बार बताने के बजाय अपनी प्रोफ़ाइल इस प्रोजेक्ट की मेमोरी में रखें (**प्रोजेक्ट मेमोरी**, विषय “profil”)। | <a href="assets/features/assistant.webp"><img src="assets/features/assistant.webp" width="160" alt="स्क्रीनशॉट: असिस्टेंट"></a> |
|
|
78
79
|
| **प्रोजेक्ट मेमोरी** | <a id="feature-projectmemory"></a>डिफ़ॉल्ट रूप से बंद: इसे **सेटिंग → Composer Plus** में चालू करें। हर प्रोजेक्ट फ़ोल्डर की अपनी मेमोरी होती है, जिसे उस प्रोजेक्ट की आगे की चैट पढ़ती हैं, जैसे DS Bot हर Bot के लिए एक मेमोरी रखता है। हर पूरे हुए टर्न के बाद चैट के मॉडल को एक कॉल नए संदेश पढ़ती है (रोलबैक किए गए नहीं), आपकी लंबे समय तक रहने वाली पसंद, फ़ैसले और तथ्य छोटे नोट के रूप में रखती है, और पुराने नोट बदलती या हटाती है। एजेंट खुद भी नोट सेव कर, हटा और खोज सकता है (`memory_remember`, `memory_forget`, `memory_recall`)। कोई नोट ग्लोबल भी हो सकता है: उसे हर प्रोजेक्ट पढ़ता है। नई चैट को नोट उसके सिस्टम प्रॉम्प्ट में मिलते हैं; बाद में सेव हुआ नोट अगली चैट से दिखता है। फ़ाइलें dsh के होम फ़ोल्डर में Markdown हैं (`storages/dsh-composer-plus/memory/`), कभी प्रोजेक्ट फ़ोल्डर में नहीं। उसी पंक्ति में **मेमोरी खोलें** हर सेव किया गया नोट प्रोजेक्ट के हिसाब से (और ग्लोबल मेमोरी) दिखाता है, फ़िल्टर के साथ। अपने शब्दों में लिखें कि क्या बदलना है (जैसे "मैंने yarn छोड़कर pnpm अपनाया"), फिर **बदलावों का प्रीव्यू**: dsh का डिफ़ॉल्ट मॉडल बदलाव सुझाता है, और सिर्फ़ **लागू करें** उन्हें सेव करता है। Tether में: चैट शीर्षक मेनू → Project memory। | <a href="assets/features/projectMemory.webp"><img src="assets/features/projectMemory.webp" width="160" alt="स्क्रीनशॉट: प्रोजेक्ट मेमोरी"></a> |
|
|
79
80
|
| **मेमोरी वर्शन इतिहास** | <a id="feature-memoryhistory"></a>**प्रोजेक्ट मेमोरी** चालू रहने पर डिफ़ॉल्ट रूप से चालू। मेमोरी की हर सेव से पहले (एजेंट, टर्न के बाद की समीक्षा, **मेमोरी खोलें**) नोट्स की पहले जैसी एक कॉपी रखी जाती है। **मेमोरी खोलें** में कोई प्रोजेक्ट या **ग्लोबल मेमोरी** चुनें, फिर **इतिहास**: तारीख के अनुसार वर्शन और हर वर्शन के बाद मेमोरी किसने बदली। कोई वर्शन चुनें तो रीस्टोर से क्या बदलेगा उसका diff दिखता है, फिर **रीस्टोर करें**। रीस्टोर से पहले के नोट्स भी रखे जाते हैं, इसलिए आप उसे पूर्ववत कर सकते हैं। हर मेमोरी के नवीनतम 50 वर्शन रहते हैं। Tether में: चैट शीर्षक मेनू → Project memory → History। | <a href="assets/features/memoryHistory.webp"><img src="assets/features/memoryHistory.webp" width="160" alt="स्क्रीनशॉट: मेमोरी वर्शन इतिहास"></a> |
|
|
80
81
|
| **मेमोरी को AGENTS.md में एक्सपोर्ट करें** | <a id="feature-memoryexport"></a>**मेमोरी खोलें** में कोई प्रोजेक्ट चुनें, फिर **AGENTS.md में एक्सपोर्ट करें**: उस प्रोजेक्ट के नोट्स उसके फ़ोल्डर की `AGENTS.md` के एक चिह्नित भाग में लिखे जाते हैं, ताकि आप उन्हें commit करके अपनी टीम और दूसरे एजेंट टूल के साथ साझा कर सकें। पहले बदलाव diff के रूप में दिखता है; केवल **AGENTS.md लिखें** से सेव होता है। अगला एक्सपोर्ट केवल यह भाग बदलता है। ग्लोबल मेमोरी, स्रोत और तारीखें नहीं लिखी जातीं। Tether में: चैट शीर्षक मेनू → Project memory → Export to AGENTS.md। | <a href="assets/features/memoryExport.webp"><img src="assets/features/memoryExport.webp" width="160" alt="स्क्रीनशॉट: मेमोरी को AGENTS.md में एक्सपोर्ट करें"></a> |
|
|
@@ -103,7 +104,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
103
104
|
| **विकल्प बटन** | <a id="feature-optionpicks"></a>जब कोई जवाब विकल्पों की सूची पर खत्म होता है ("विकल्प" शीर्षक या बोल्ड "विकल्प" पंक्ति के नीचे 1 से 9 आइटम की क्रमांकित सूची; "अगले कदम" और ऐप की भाषाओं में यही शब्द भी), तो जवाब के नीचे हर विकल्प के लिए एक बटन दिखता है। क्लिक करने पर पूरे विकल्प के साथ "Option N: …" आपके संदेश के रूप में भेजा जाता है, जैसे आपने उसे टाइप किया हो। "(अनुशंसित)" वाला विकल्प चिह्नित होता है। बटन केवल सबसे नए जवाब के नीचे दिखते हैं, जब चैट खाली हो और संदेश बॉक्स खाली हो; पहले से चुने गए जवाब और रोलबैक से वापस लिए गए जवाब में बटन नहीं होते। बटन दिखते समय अगले संदेश का अनुमान कोई सुझाव नहीं देता। एजेंट के प्रश्न कार्ड पर 1–9 कुंजियां क्लिक की तरह वह विकल्प चुनती हैं (जवाब वाले फ़ील्ड में नहीं, और प्रश्न दिखने के बाद पहले 0.8 सेकंड में नहीं)। | <a href="assets/features/optionPicks.webp"><img src="assets/features/optionPicks.webp" width="160" alt="स्क्रीनशॉट: विकल्प बटन"></a> |
|
|
104
105
|
| **ऐप्लिकेशन की भाषा** | <a id="feature-language"></a>सेटिंग → Composer Plus → **ऐप्लिकेशन की भाषा** पूरे dsh इंटरफ़ेस को Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt या हिन्दी में बदल देता है (नीचे देखें)। | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="स्क्रीनशॉट: ऐप्लिकेशन की भाषा"></a> |
|
|
105
106
|
| **मोबाइल कनेक्ट (iPhone)** | <a id="feature-mobileconnect"></a>[Tether](tether/) ऐप से अपने iPhone पर dsh का उपयोग करें, उसी Wi-Fi पर या [Tailscale](https://tailscale.com) के ज़रिए। इसे **सेटिंग → Composer Plus** में चालू करें (यह डिफ़ॉल्ट रूप से बंद रहता है, क्योंकि यह इस Mac पर एक नेटवर्क पोर्ट खोलता है)। फिर साइडबार में नीचे बाईं ओर **मोबाइल कनेक्ट** पर क्लिक करें: iPhone के कैमरा से (**Open in Tether** पर टैप करें) या Tether में **Scan code** से QR कोड स्कैन करें, **Connect** पर टैप करें और **Approve** पर क्लिक करें। पहले Tether इंस्टॉल करें: इसके बिना कैमरा यह कोड नहीं खोल सकता। फ़ोन आपकी चैट दिखाता है, संदेश भेजता है (फ़ोटो के साथ भी: कंपोज़र का **+** → Camera, Photos या Paste image), मंज़ूरियों और सवालों के जवाब देता है, और मॉडल व एजेंट बदलता है। आप जितने चाहें उतने Mac पेयर कर सकते हैं: ऐप में ऊपर बाईं ओर Mac का नाम उनके बीच बदलता है। **मोबाइल कनेक्ट** पैनल पेयर किए गए iPhone उनके पिछले कनेक्शन के समय के साथ दिखाता है: **Remove** किसी एक को तुरंत हटा देता है। “Tailscale only” लोकल नेटवर्क से कनेक्शन मना कर देता है (साझा Wi-Fi के लिए), और एक्सेस लॉग दिखाता है कि किसने कनेक्ट करने की कोशिश की। Tether में “Settings → Privacy” ऐप को Face ID से लॉक करता है। | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="स्क्रीनशॉट: मोबाइल कनेक्ट (iPhone)"></a> |
|
|
106
|
-
| **रिमोट कंप्यूटर** | <a id="feature-remotecomputers"></a>[Tailscale](https://tailscale.com) के ज़रिए अपने दूसरे Mac का dsh खोलें और उन्हें इसी dsh विंडो में इस्तेमाल करें। इसे हर Mac पर **सेटिंग → Composer Plus** में चालू करें (यह डिफ़ॉल्ट रूप से बंद रहता है, क्योंकि यह नेटवर्क पोर्ट खोलता है)। जिस Mac को आप खोलना चाहते हैं, उस पर **दूसरे कंप्यूटर को यह Mac खोलने दें** चालू करें, **पेयरिंग लिंक बनाएं** पर क्लिक करें और लिंक कॉपी करें। इस Mac पर बाएं साइडबार के कंप्यूटर पिकर में (ब्रांड नाम के दाईं ओर, **नया सेशन** के ऊपर) **कंप्यूटर जोड़ें…** चुनें, लिंक पेस्ट करें, एक **नाम** लिखें (यह Mac या किसी दूसरे कंप्यूटर का नाम नहीं) और **कनेक्ट करें** पर क्लिक करें। फिर दूसरे Mac पर **मंज़ूर करें** पर क्लिक करें। इसके बाद पिकर में **यह Mac** और आपके कंप्यूटर दिखते हैं: किसी एक को चुनें, तो उसका dsh इस पूरी विंडो में दिखता है, उसकी अपनी चैट, साइडबार, टूल और फ़ाइलों के साथ, जबकि यह Mac पीछे चलता रहता है।
|
|
107
|
+
| **रिमोट कंप्यूटर** | <a id="feature-remotecomputers"></a>[Tailscale](https://tailscale.com) के ज़रिए अपने दूसरे Mac का dsh खोलें और उन्हें इसी dsh विंडो में इस्तेमाल करें। इसे हर Mac पर **सेटिंग → Composer Plus** में चालू करें (यह डिफ़ॉल्ट रूप से बंद रहता है, क्योंकि यह नेटवर्क पोर्ट खोलता है)। जिस Mac को आप खोलना चाहते हैं, उस पर **दूसरे कंप्यूटर को यह Mac खोलने दें** चालू करें, **पेयरिंग लिंक बनाएं** पर क्लिक करें और लिंक कॉपी करें। इस Mac पर बाएं साइडबार के कंप्यूटर पिकर में (ब्रांड नाम के दाईं ओर, **नया सेशन** के ऊपर) **कंप्यूटर जोड़ें…** चुनें, लिंक पेस्ट करें, एक **नाम** लिखें (यह Mac या किसी दूसरे कंप्यूटर का नाम नहीं) और **कनेक्ट करें** पर क्लिक करें। फिर दूसरे Mac पर **मंज़ूर करें** पर क्लिक करें। इसके बाद पिकर में **यह Mac** और आपके कंप्यूटर दिखते हैं: किसी एक को चुनें, तो उसका dsh इस पूरी विंडो में दिखता है, उसकी अपनी चैट, साइडबार, टूल और फ़ाइलों के साथ, जबकि यह Mac पीछे चलता रहता है। पिकर उसी जगह रहता है और उस पर **इस Mac पर वापस जाएं** लिखा होता है: वापस आने के लिए उस पर क्लिक करें। एक से ज़्यादा कंप्यूटर होने पर क्लिक से मेनू खुलता है, जहां आप **यह Mac** या कोई दूसरा कंप्यूटर चुनते हैं। सेटिंग पैनल में आप कंप्यूटर का नाम बदल सकते हैं और उन्हें हटा सकते हैं। यह पैनल उन कंप्यूटर की सूची भी दिखाता है जो यह Mac खोल सकते हैं (**हटाएं** किसी एक को तुरंत डिस्कनेक्ट कर देता है)। | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="स्क्रीनशॉट: रिमोट कंप्यूटर"></a> |
|
|
107
108
|
| **अपने-आप अपडेट** | <a id="feature-autoupdate"></a>dsh शुरू होने पर प्लगइन [GitHub की नवीनतम रिलीज़](https://github.com/furkancak1r/dsh-composer-plus/releases/latest) जांचता है। अगर वह नई है और npm पर पहले से है, तो प्लगइन वही वर्शन dsh के अपने प्लगइन मैनेजर से इंस्टॉल करता है (सेटिंग → प्लगइन वाला ही रास्ता) और आपको सूचित करता है। इसे लोड करने के लिए dsh रीस्टार्ट करें। **सेटिंग → Composer Plus → Composer Plus अपडेट** वर्शन दिखाता है और उसमें **अपडेट जांचें** / **अभी अपडेट करें** बटन हैं। नए वर्शन के साथ dsh पहली बार शुरू होने पर **Composer Plus N में नया क्या है** विंडो उस वर्शन के रिलीज़ नोट्स **ऐप्लिकेशन की भाषा** में चुनी गई भाषा में एक बार दिखाती है (नोट्स नए वर्शन के साथ आते हैं, कोई अतिरिक्त नेटवर्क कॉल नहीं; जिस भाषा के नोट्स नहीं हैं, उसमें अंग्रेज़ी नोट्स दिखते हैं); **बंद करें** या `Esc` से यह बंद होती है। नोट्स के नीचे एक पंक्ति GitHub पर स्टार देने को कहती है, 30 दिनों में ज़्यादा से ज़्यादा एक बार (कोई नेटवर्क कॉल नहीं); **GitHub पर स्टार दें** या **फिर से न पूछें** पर क्लिक करने के बाद यह फिर नहीं दिखती। सेटिंग → प्लगइन या कॉपी किए गए फ़ोल्डर से अपडेट करने के बाद भी यह विंडो हर नए वर्शन पर एक बार दिखती है; पहली बार इंस्टॉल करने पर नहीं। अपडेट वाली पंक्ति में **इस वर्शन में नया क्या है** इसे फिर से खोलता है। जब डिस्क पर चल रहे वर्शन से नया वर्शन हो, तो पंक्ति dsh को रीस्टार्ट करने को कहती है। | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="स्क्रीनशॉट: अपने-आप अपडेट"></a> |
|
|
108
109
|
| **चालू/बंद फ़िल्टर** | <a id="feature-featurefilter"></a>**सेटिंग → Composer Plus** में **सुविधाएं खोजें** के पास: **सभी** सभी सुविधाएं दिखाता है, **चालू** केवल वे सुविधाएं जिनका स्विच चालू है, और **बंद** केवल वे जिनका स्विच बंद है। फ़ैसला हर पंक्ति का अपना स्विच करता है, dsh के Host में रखे स्विच भी (जैसे **मोबाइल कनेक्ट**)। यह खोज के साथ काम करता है: कोई शब्द लिखें और **बंद** चुनें, तो वह सुविधा मिलती है जिसे आपने बंद किया था। **चालू** या **बंद** चुने रहने पर जिस पंक्ति का स्विच आप बदलते हैं, वह तब तक दिखती है जब तक आप फिर से कोई फ़िल्टर नहीं चुनते, ताकि फ़ोकस उसके स्विच पर रहे। **चालू** और **बंद** में **ऐप्लिकेशन की भाषा** और **Composer Plus अपडेट** पंक्तियाँ छिप जाती हैं (उनका कोई स्विच नहीं है)। सेटिंग हर बार **सभी** के साथ खुलती है। | <a href="assets/features/featureFilter.webp"><img src="assets/features/featureFilter.webp" width="160" alt="स्क्रीनशॉट: चालू/बंद फ़िल्टर"></a> |
|
|
109
110
|
| **इश्यू रिपोर्ट करें** | <a id="feature-issuereport"></a>सेटिंग → Composer Plus → **इश्यू रिपोर्ट करें…** (परिचय के नीचे), या साइडबार में किसी चैट पर राइट-क्लिक करें (या उसका **…** मेन्यू खोलें) → **Composer Plus इश्यू रिपोर्ट करें…**। एक प्रकार चुनें: **बग**, **सुविधा का अनुरोध**, **सुधार**, **अनुवाद** या **सवाल**। उसे अपने शब्दों और अपनी भाषा में बताएं, फिर **ड्राफ़्ट लिखें** पर क्लिक करें (या `Cmd/Ctrl+Enter`)। dsh के डिफ़ॉल्ट मॉडल को एक कॉल अंग्रेज़ी में इश्यू लिखती है: प्रकार के प्रीफ़िक्स वाला शीर्षक (जैसे `[Bug]`) और उस प्रकार के सेक्शन (बग के लिए: What happened, Steps to reproduce, Expected, Actual), साथ में Composer Plus, dsh और सिस्टम के वर्शन वाली एक पंक्ति। शीर्षक और विवरण पढ़ें और संपादित करें; **फिर से लिखें** नया ड्राफ़्ट लिखता है। **इश्यू खोलें** उसे आपके GitHub CLI (`gh`) लॉगिन से Composer Plus की GitHub रिपॉज़िटरी में खोलता है और उसका लिंक दिखाता है। इश्यू सार्वजनिक होता है: जो टेक्स्ट कुंजी या पासवर्ड जैसा दिखता है, वह अस्वीकार होता है। जब `gh` उसे नहीं खोल पाता, तो **इसके बजाय GitHub पर खोलें** GitHub का अपना पेज ड्राफ़्ट भरे हुए खोलता है। | <a href="assets/features/issueReport.webp"><img src="assets/features/issueReport.webp" width="160" alt="स्क्रीनशॉट: इश्यू रिपोर्ट करें"></a> |
|
|
@@ -198,6 +199,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
198
199
|
- **नई चैट में जारी रखें:** जब तक आप क्लिक नहीं करते, कुछ नहीं चलता। फिर Host हिस्सा चैट (जैसे लक्ष्य जांच उसे पढ़ती है: रीज़निंग और रोलबैक किए गए कदम नहीं) चैट के अपने मॉडल को भेजता है और हैंडऑफ़ नोट दिखाता है; सिर्फ़ **नई चैट शुरू करें** नई चैट बनाता है। प्रोजेक्ट में कुछ नहीं लिखा जाता।
|
|
199
200
|
- **कॉन्टेक्स्ट का ब्योरा:** Host पर सिर्फ़ चैट लॉग पढ़ता है; कोई मॉडल कॉल नहीं, कोई प्रोजेक्ट फ़ाइल नहीं।
|
|
200
201
|
- **टास्क बोर्ड:** बोर्ड इस विंडो में dsh की अपनी सूचियों से dsh की अपनी चैट दिखाता है; यह अपना कोई चैट डेटा नहीं जोड़ता। **नया टास्क** dsh की अपनी नई चैट खोलता है, और पहला संदेश आप dsh के कंपोज़र में लिखते हैं, इसलिए मंज़ूरी, सैंडबॉक्स और चैट का मॉडल हमेशा की तरह लागू होते हैं। Host वाला हिस्सा उस चैट के पहले संदेश को कार्ड के प्रॉम्प्ट के रूप में रखता है और उसे (उसके पहले 4,000 अक्षर, और कुछ नहीं) उसी चैट के मॉडल को एक और अनुरोध में, बिना टूल के, ज़्यादा से ज़्यादा 3 टैग के लिए भेजता है। हर टास्क का प्रॉम्प्ट, टैग और शुरू होने का समय `$DSH_HOME/storages/dsh-composer-plus/board-chats.json` में रखा जाता है (सिर्फ़ मालिक की फ़ाइल, सबसे नए 2,000), साथ ही उन चैट की ID भी, जिन्हें आपने **×** या **सब हटाएं** से बोर्ड से हटाया है (सबसे नई 5,000); स्विच उसके बगल में `board-switch.json` में रहता है। किसी प्रोजेक्ट फ़ोल्डर में कुछ नहीं लिखा जाता। **जवाब दें** आपका जवाब dsh के अपने इंतज़ार कर रहे अनुरोध को उसी तरह भेजता है, जैसे चैट का अपना कार्ड भेजता है। पुराने वर्शन की पुरानी टास्क सूची (`board.json`) डिस्क पर जैसी थी वैसी ही रहती है और पढ़ी नहीं जाती। **होवर पर प्रगति** इस Mac पर चैट का लॉग पढ़ती है। **तेज़ (AI के बिना)** (डिफ़ॉल्ट) में कुछ नहीं भेजा जाता। **AI सारांश** में, जब तक किसी चल रहे कार्ड का प्रगति बॉक्स दिखता है (या जब तक Tether का बोर्ड खुला है, ज़्यादा से ज़्यादा 8 चल रहे कार्ड के लिए), Host हिस्सा उस चैट का सबसे नया हिस्सा (ज़्यादा से ज़्यादा लगभग 6,000 अक्षर: आपके संदेश, एजेंट के टेक्स्ट जवाब, उसके टूल कॉल और उनके नतीजों का आख़िरी हिस्सा; रीज़निंग और रोलबैक किए गए संदेश नहीं) बिना टूल के एक अनुरोध में चैट के मॉडल को भेजता है। यह दोबारा तभी भेजता है जब चैट आगे बढ़ी हो, और हर चैट के लिए ज़्यादा से ज़्यादा 20 सेकंड में एक बार। नोट सिर्फ़ मेमोरी में रहता है; सेटिंग `$DSH_HOME/storages/dsh-composer-plus/board-progress.json` में रहती है (सिर्फ़ मालिक की फ़ाइल)।
|
|
202
|
+
- **असिस्टेंट:** असिस्टेंट चैट `~/Assistant` में एक सामान्य dsh चैट है; किसी भी चैट की तरह इसकी मॉडल कॉल dsh के डिफ़ॉल्ट मॉडल को जाती हैं। इसके टूल इस Mac पर आपकी दूसरी चैट के लॉग पढ़ते हैं (शीर्षक, प्रोजेक्ट, स्थिति, और chat_read से उनके सबसे नए संदेश) और उन्हें उस मॉडल को सिर्फ़ तब देते हैं जब वह कोई टूल कॉल करता है। किसी चैट को संदेश भेजना, चैट शुरू करना, रोकना और आर्काइव करना, हर एक आपकी मंज़ूरी का इंतज़ार करता है। चैट ID `$DSH_HOME/storages/dsh-composer-plus/assistant.json` में और स्विच `assistant-switch.json` में रखा जाता है (सिर्फ़ मालिक की फ़ाइलें)। रिमाइंडर और ऑटोमेशन dsh के अपने शेड्यूल किए गए टास्क हैं। चैट जो मॉडल अनुरोध और वेब खोजें करती है, उनके सिवा कुछ भी इस Mac से बाहर नहीं जाता।
|
|
201
203
|
- **सुरक्षित फ़ाइलें:** सूची और स्विच `$DSH_HOME/storages/dsh-composer-plus/protected-files.json` में रहते हैं (सिर्फ़ मालिक की फ़ाइल)। जांच हर फ़ाइल टूल कॉल का सिर्फ़ पाथ (और उसका असली पाथ) पढ़ती है, फ़ाइल को कभी नहीं।
|
|
202
204
|
- **ब्लॉक की गई कमांड:** नियम और स्विच `$DSH_HOME/storages/dsh-composer-plus/blocked-commands.json` में रहते हैं (सिर्फ़ मालिक की फ़ाइल)। जांच हर `bash` और `pwsh` कॉल का सिर्फ़ कमांड टेक्स्ट पढ़ती है; यह न कुछ चलाती है, न कुछ भेजती है।
|
|
203
205
|
- **सीक्रेट इनपुट:** मान केवल जवाब के अनुरोध में कार्ड से (या Tether से, उस गेटवे के ज़रिए जो अनुरोध की सामग्री लॉग नहीं करता) Host तक जाता है। Host उसे `$DSH_HOME/storages/dsh-composer-plus/secrets/<यादृच्छिक नाम>` में लिखता है (फ़ोल्डर 0700, फ़ाइल 0600); प्रोजेक्ट, चैट लॉग या टूल परिणाम में कुछ नहीं जाता। Host उस चैट के बाद के टूल परिणामों में मान को `[secret]` से बदलने के लिए उसे मेमोरी में रखता है। फ़ाइल और यह प्रति चैट का टर्न खत्म होने पर और dsh शुरू होने पर हटा दी जाती हैं। स्विच पास की `secrets.json` फ़ाइल में है। एजेंट इस फ़ाइल के साथ जो कमांड चलाता है, वह मान को वहाँ भेज सकती है जहाँ वह कमांड भेजती है: यही इसका उद्देश्य है।
|
|
@@ -224,7 +226,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
224
226
|
- **चैट पंक्ति पर ब्रांच लेबल नहीं है:** साइडबार “एक ही सूची में” व्यू में नहीं है (“वर्कस्पेस” और “वर्कस्पेस ट्री” में किसी भी चैट पंक्ति पर लेबल नहीं दिखता), यह वर्शन इंस्टॉल करने के बाद से उस चैट में कोई टर्न नहीं हुआ, उसका फ़ोल्डर git रिपॉज़िटरी नहीं है, या **चैट पंक्तियों पर Git ब्रांच** बंद है। अपडेट के बाद dsh रीस्टार्ट करें (ब्रांच Host वाला हिस्सा दर्ज करता है)।
|
|
225
227
|
- **लक्ष्य जांच बताती है कि टेस्ट कोड 127 या "not found" के साथ बंद हुआ:** Finder या Dock से शुरू किए गए dsh का PATH आपके टर्मिनल से छोटा हो सकता है, इसलिए उसे `npm`, `pnpm` या `cargo` नहीं मिलता। dsh को टर्मिनल से शुरू करें, या **लक्ष्य जांच** → **संपादित करें** में पूरे पाथ के साथ अपनी टेस्ट कमांड सेट करें। **अभी चलाएं** नतीजा तुरंत दिखाता है।
|
|
226
228
|
- **लक्ष्य बंद नहीं होता और एजेंट काम करता रहता है:** **लक्ष्य जांच** को कोई विफल टेस्ट या अधूरा काम मिला; लक्ष्य के नीचे की पंक्ति वजह दिखाती है (ब्योरा देखने के लिए नतीजे पर पॉइंटर ले जाएं)। वजह या टेस्ट कमांड ठीक करें, या `/goal` या लक्ष्य बार से लक्ष्य खुद पूरा करें (उसकी जांच नहीं होती)।
|
|
227
|
-
- **रिलीज़ के तुरंत बाद इंस्टॉल विफल होता है:** वर्शन जोड़ें (`dsh-composer-plus@1.
|
|
229
|
+
- **रिलीज़ के तुरंत बाद इंस्टॉल विफल होता है:** वर्शन जोड़ें (`dsh-composer-plus@1.24.0`), ऊपर इंस्टॉल वाला नोट देखें।
|
|
228
230
|
- **अभी बैकअप लें कहता है "बैकअप की दूसरी कार्रवाई चल रही है":** किसी दूसरी dsh विंडो में या रेस्क्यू कंसोल में कोई कार्रवाई चल रही है (दोनों बैकअप फ़ोल्डर में एक लॉक फ़ाइल, `.composer-plus.lock`, साझा करते हैं)। उसके पूरा होने का इंतज़ार करें। अगर कोई कार्रवाई नहीं चल रही, तो अगली क्लिक पर बंद हो चुकी प्रोसेस का लॉक ले लिया जाता है।
|
|
229
231
|
- **रेस्क्यू कंसोल कहता है "dsh is running":** पहले dsh बंद करें। अगर dsh सच में बंद है, तो संदेश में बताई गई फ़ाइल किसी क्रैश के बाद बची रह गई है: उसे हटाएं और फिर से कोशिश करें।
|
|
230
232
|
- **बहाली के बाद dsh शुरू नहीं होता या कोई प्लगइन नहीं है:** किसी प्रोफ़ाइल के प्लगइन पैकेज फिर से इंस्टॉल करने होंगे। बहाली के बाद रेस्क्यू कंसोल यह करने का विकल्प देता है; या `$DSH_HOME/profiles/` के नीचे के हर उस फ़ोल्डर में `pnpm install` चलाएं, जिसकी सूची वह दिखाता है। जो सीक्रेट vault में नहीं थे (दूसरा कंप्यूटर), उन्हें फिर से डालना होगा: कंसोल उनकी सूची दिखाता है।
|
|
@@ -258,7 +260,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
258
260
|
- **प्रश्न कार्ड को विंडो में फ़िट करें** केवल dsh का प्रश्न कार्ड बदलता है, योजना समीक्षा कार्ड नहीं। यह कार्ड को dsh के मार्कअप (`data-question-key`, `data-question-scroll`) से ढूंढता है; अगर कोई dsh अपडेट यह मार्कअप बदलता है, तो कार्ड वैसा ही दिखता है जैसा dsh उसे बनाता है। कार्ड की ऊंचाई चैट के बजाय विंडो के अनुसार चलती है: किसी संकरे साइड पैनल की चैट में, ऊंचा कार्ड अब भी चैट के ऊपर तक जा सकता है।
|
|
259
261
|
- **चैट हेडर को विंडो में फ़िट करें** dsh के चैट हेडर को dsh के बनाए क्लास नामों (`_titleRow`, `_titleCluster`, `_crumbs`, `_headerActions`, `_headerUtilities`) से ढूंढता है, क्योंकि dsh इसके लेआउट के लिए कोई हुक नहीं देता। अगर dsh का अपडेट ये नाम बदल दे, तो हेडर वैसा ही दिखता है जैसा dsh बनाता है। बहुत संकरे चैट कॉलम में हेडर दो या तीन पंक्तियां ले सकता है, इसलिए संदेशों के ऊपर की जगह कम हो जाती है।
|
|
260
262
|
- **मोबाइल कनेक्ट** सिर्फ़ macOS पर काम करता है (यह `en0`, `openssl`, `swift` और `dns-sd` इस्तेमाल करता है)। यह तय पोर्ट 19390 और 19391 इस्तेमाल करता है, इसलिए हर Mac पर एक समय में सिर्फ़ एक dsh इसे चला सकता है (फ़ोन की Mac सूची में हर Mac एक एंट्री है)। `apns.json` में APNs कुंजी होने पर (देखें `tether/README.md`) Mac सूचनाएं Apple की पुश सेवा से भेजता है, इसलिए Tether बंद होने पर भी वे आती हैं; Mac जागा हुआ हो और dsh खुला हो। कुंजी के बिना फ़ोन को सूचनाएं सिर्फ़ तब मिलती हैं, जब Tether खुला हो या अभी-अभी बैकग्राउंड में गया हो। जब तक आप Tether में "Settings → Notifications → Send notifications" चालू नहीं करते, Tether सूचनाएं नहीं भेजता। Tether यह स्विच और इसके घंटे हर पेयर किए गए Mac के लिए अलग रखता है। यह स्विच हर Mac पर डिफ़ॉल्ट रूप से बंद रहता है, और इसे चालू करने पर iOS अनुमति मांगता है। iOS ऐप अभी App Store पर नहीं है: इसे Xcode से `tether/ios` से बनाएं। "Tailscale only" के लिए भी Mac पर Wi-Fi या Ethernet पता ज़रूरी है (गेटवे सिर्फ़ ऐसे पते के साथ शुरू होता है)। एक्सेस लॉग हर Mac का अलग होता है और सिर्फ़ सबसे नई 200 कोशिशें रखता है; एक मिनट के अंदर दोहराई गई कोशिश उसी पंक्ति की गिनती एक बढ़ाती है। हर सूचना में Mac और चैट का प्रोजेक्ट (`Studio Mac · recipe-box`), चैट का शीर्षक और टेक्स्ट दिखता है: Turn finished में एजेंट का आख़िरी जवाब दिखता है। APNs की के साथ यह टेक्स्ट Apple की पुश सेवा से होकर जाता है। Tether का ऐप लॉक iPhone की लॉक स्क्रीन पर सूचनाओं के प्रीव्यू नहीं छिपाता: उन्हें iOS सेटिंग में बंद करें। Tether के हरे बिंदु Mac के हिसाब से चलते हैं: जिस चैट को आप dsh में खोलते हैं, उसका बिंदु फ़ोन पर भी हट जाता है। जिस चैट को आप Tether में खोलते हैं, उसका बिंदु सिर्फ़ फ़ोन पर हटता है। Mac पर dsh का अपना बिंदु तब तक रहता है, जब तक आप चैट को वहां नहीं खोलते।
|
|
261
|
-
- **रिमोट कंप्यूटर** के लिए दोनों Mac पर Tailscale चाहिए, और जिस Mac को आप खोलते हैं, उस पर Composer Plus और यह फ़ीचर चालू होना चाहिए। वह Mac स्लीप में नहीं होना चाहिए और उस पर dsh चलना चाहिए। पिकर सिर्फ़ तब दिखता है, जब बायां साइडबार खुला हो (तब नहीं, जब उसमें सिर्फ़ आइकन दिखते हों)। दूसरे Mac
|
|
263
|
+
- **रिमोट कंप्यूटर** के लिए दोनों Mac पर Tailscale चाहिए, और जिस Mac को आप खोलते हैं, उस पर Composer Plus और यह फ़ीचर चालू होना चाहिए। वह Mac स्लीप में नहीं होना चाहिए और उस पर dsh चलना चाहिए। पिकर सिर्फ़ तब दिखता है, जब बायां साइडबार खुला हो (तब नहीं, जब उसमें सिर्फ़ आइकन दिखते हों)। अगर दूसरे Mac के पेज पर अपना पिकर नहीं है (वहां Composer Plus 1.23.0 से पुराना है), तो इस Mac का पिकर उसी जगह उस पेज के ऊपर दिखता है। अगर वहां 1.23.0 है, तो पिकर में उस Mac का नाम दिखता है: वापस आने के लिए उसके मेनू में **यह Mac** चुनें। आपने जो भी कंप्यूटर खोला है, उसका पेज तब तक मेमोरी में रहता है, जब तक आप यह फ़ीचर बंद न करें या dsh रीस्टार्ट न करें। डेस्कटॉप ऐप में दूसरे Mac का पेज एक एम्बेड किया हुआ पेज है: dsh के अपने कीबोर्ड शॉर्टकट (जैसे नई चैट) उसमें काम नहीं करते, और वहां फ़ाइल डाउनलोड, माइक्रोफ़ोन और सूचनाएं भी काम नहीं करतीं। यह पोर्ट 19392 इस्तेमाल करता है (हर Mac पर सिर्फ़ एक dsh दूसरे कंप्यूटर को अंदर आने दे सकता है)। दूसरे Mac के पेज से पिकर सिर्फ़ इस Mac के कंप्यूटरों के बीच बदलता है: आप दूसरे Mac के ज़रिए तीसरा Mac नहीं खोल सकते।
|
|
262
264
|
- सेशन लिंक चैट के अंदर काम करता है; उस पर क्लिक करने से चैट नहीं खुलती। **संदेश लिंक कॉपी करें** से बना लिंक अपना संदेश सिर्फ़ dsh 0.2.1 और बाद के वर्शन में खोलता है, और सिर्फ़ किसी चैट के संदेश से (dsh 0.2.0 में यूज़र टेक्स्ट के नियम नहीं हैं, इसलिए वहां लिंक कॉपी तो होता है, पर सादे टेक्स्ट की तरह दिखता है)। जो संदेश किसी रोलबैक ने हटाया, या जिसे कॉम्पैक्ट करने से dsh के लोड किए गए इतिहास से हटा दिया गया, वह नहीं दिख सकता: तब लिंक यही बताता है। 🔗 बटन dsh की संदेश पंक्तियों से जुड़ते हैं; अगर dsh का कोई अपडेट वह मार्कअप बदलता है, तो वे नहीं दिखते।
|
|
263
265
|
- **सभी को पढ़ा हुआ मार्क करें** dsh के अपने अपठित बिंदुओं को dsh के ऐसे हिस्से से बदलता है, जो सार्वजनिक API नहीं है (dsh के सेशन स्टेटस की `completionUnread` सूची)। अगर dsh का कोई अपडेट इसका नाम बदलता है, तो आइटम नहीं दिखता। आइटम dsh के प्रोजेक्ट वाले "…" मेन्यू में जाता है, जिसमें प्लगइन के लिए कोई slot नहीं है; अगर dsh वह मेन्यू बदलता है, तो भी आइटम नहीं दिखता।
|
|
264
266
|
- **कतार वाले संदेश को उसी जगह एडिट करें** उस संदेश को नहीं बदलता जो इस बीच भेजा जाने लगा, और उस संदेश को ओवरराइट नहीं करता जो इस बीच बदल गया (जैसे iPhone पर Tether में): एक सूचना यह बताती है। नई इमेज के लिए ऐसा मॉडल चाहिए जो इमेज लेता हो (dsh की अपनी इमेज सीमाएं लागू होती हैं), और नई फ़ाइल का अपलोड पूरा होने के बाद ही संदेश सेव हो सकता है। सिर्फ़ आपके अपने कतार वाले संदेश एडिट होते हैं: कतार में कोई लक्ष्य राउंड या किसी सवाल का जवाब एडिट नहीं होता। प्लगइन अपडेट के बाद सिर्फ़ टेक्स्ट वाले एडिट तुरंत काम करते हैं: इमेज या फ़ाइल वाला संदेश सेव करने से पहले dsh रीस्टार्ट करें (Host वाला हिस्सा शुरू होने पर लोड होता है)।
|
|
@@ -294,6 +296,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
294
296
|
- **तुर्की स्किल पैक** एक थर्ड-पार्टी स्किल इंस्टॉल करता है: इसके नियम Composer Plus से नहीं, लेखक के GitHub रिपॉज़िटरी से आते हैं, और नया संस्करण हमारी समीक्षा के बिना अगली दैनिक जाँच से उपयोग होता है। जाँच केवल यह साबित करती है कि फ़ाइलें वही हैं जो GitHub उस commit के लिए दिखाता है, यह नहीं कि नियम अच्छे हैं। स्किल कब लोड हो, यह मॉडल तय करता है (आप इसे नाम से भी बुला सकते हैं); नियम केवल तुर्की पाठ पर लागू होते हैं। Host वाला हिस्सा वही भाषा उपयोग करता है जो किसी ब्राउज़र ने आख़िर में बताई: दो ब्राउज़र अलग भाषाएँ उपयोग करें तो सबसे नई सूचना मान्य होती है। बिना लॉगिन GitHub प्रति घंटे 60 API कॉल की अनुमति देता है; अस्वीकृत जाँच इंस्टॉल की गई कॉपी रखती है और सेटिंग में कारण दिखाती है।
|
|
295
297
|
- **कोडबेस सुलझाएं** में स्किल की एक तय कॉपी है (caldoai/skills, कमिट f3cf477): मूल स्किल का बदलाव सिर्फ़ Composer Plus के नए वर्शन के साथ आता है। यह स्किल एक लंबा लक्ष्य चलाती है जो कई फ़ाइलें बदल सकता है, और इसके सब-एजेंट और जाँच बहुत टोकन खर्च करते हैं। जहाँ प्रोजेक्ट में टेस्ट नहीं हैं, वहाँ यह बिना पता चले व्यवहार बदल सकती है: इसे अलग ब्रांच पर शुरू करें और मर्ज से पहले diff पढ़ें। प्रोजेक्ट में, किसी कस्टम स्किल फ़ोल्डर में या `~/.dsh/skills` में उसी नाम की स्किल हो तो वह इसकी जगह ले लेती है। स्विच बंद रहने पर `/untangle-codebase` मॉडल को सामान्य टेक्स्ट की तरह जाता है।
|
|
296
298
|
- **टास्क बोर्ड** वे चैट दिखाता है जिन्हें dsh इस विंडो में अपनी सूची में दिखाता है: किसी प्रोजेक्ट के बाहर की चैट सिर्फ़ **सभी प्रोजेक्ट** में दिखती है, और हर चैट की अपनी ब्रांच का फ़ोल्डर (`<project>/.worktrees/<name>`) अपने प्रोजेक्ट में गिना जाता है। कार्ड का कॉलम चैट की लाइव स्थिति है, इसलिए कार्ड खींचे नहीं जा सकते: टर्न खत्म होने पर चैट **पूरा हुआ** में जाती है, एरर या रोकने के बाद भी, और फिर से चलने पर **प्रगति में** लौट आती है। हरा बिंदु dsh का अपना पूरा होने वाला बिंदु है, जिसे dsh सिर्फ़ इसी विंडो में रखता है: पेज फिर से लोड होने के बाद खत्म हुई चैट इसके बिना दिखती हैं। **पूरा हुआ** सबसे नई 50 चैट दिखाता है (**N पुराने टास्क दिखाएं** बाकी चैट दिखाता है)। **प्रोजेक्ट खोजें** किसी प्रोजेक्ट को सिर्फ़ उसके नाम से ढूंढता है, उसके फ़ोल्डर पाथ से नहीं। **पिछले 2 घंटों में सक्रिय** किसी प्रोजेक्ट को तब छिपाता है जब उसकी हर चैट 2 घंटे से पुरानी, निष्क्रिय और पढ़ी हुई हो; बोर्ड फिर भी वह प्रोजेक्ट दिखाता है जो आपने चुना है। **नया टास्क** इस विंडो की नई चैट में से सिर्फ़ सबसे नई चैट याद रखता है: अगर आप पहला संदेश जाने से पहले कोई दूसरी चैट खोलते हैं, तो वह चैट तब तक **प्रगति में** कॉलम में सबसे ऊपर **नया टास्क** के रूप में रहती है जब तक आप उसमें नहीं लिखते, लेकिन बोर्ड अपने-आप सिर्फ़ सबसे नई चैट के लिए लौटता है। पेज फिर से लोड होने के बाद बिना संदेश वाली नई चैट बोर्ड पर नहीं होती (dsh उसे अपने खाली नए सेशन के रूप में रखता है)। टैग हर टास्क के लिए उसके पहले संदेश से एक मॉडल कॉल से आते हैं: वे गलत हो सकते हैं, और जो चैट आपने बोर्ड पर शुरू नहीं की, उसके कोई टैग नहीं होते। शीर्षक dsh का अपना चैट शीर्षक है (dsh की शीर्षक सर्विस, चैट के मॉडल के साथ); जब तक वह नहीं आता, कार्ड पहले संदेश की पहली लाइन दिखाता है। **×** और **सब हटाएं** कार्ड को सिर्फ़ बोर्ड से हटाते हैं: कोई चैट डिलीट नहीं होती। **पहले जैसा करें** सिर्फ़ 8 सेकंड तक और सिर्फ़ इसी विंडो में दिखता है; बाद में **हटाए गए (N)** → **बोर्ड पर वापस रखें** किसी कार्ड को वापस लाता है, और जो चैट फिर से चलती है, वह अपने-आप लौट आती है। **सब हटाएं** पहले पूछता है और दिख रहे प्रोजेक्ट के पढ़े हुए खत्म हुए कार्ड हटाता है (**सभी प्रोजेक्ट** चुने होने पर सभी प्रोजेक्ट के), **N पुराने टास्क दिखाएं** के पीछे वाले कार्ड भी; बिना पढ़ा (हरा) कार्ड बना रहता है। dsh अपना हरा बिंदु सिर्फ़ इसी विंडो में रखता है, इसलिए पेज फिर से लोड होने के बाद सब हटाएं ऐसा कार्ड भी हटा सकता है जिसका जवाब आपने नहीं पढ़ा। यह सूची इस Mac पर हर विंडो और Tether के लिए रखी जाती है; जब इसमें 5,000 चैट हो जाती हैं, तो सबसे पुरानी चैट लौट आती हैं। **जवाब दें** चैट के सिर्फ़ सबसे नए अनुरोध का जवाब देता है: अगर उस अनुरोध का जवाब कहीं और (दूसरी विंडो, Tether, ऑटो रिव्यू) दिया जा चुका है या चैट कुछ नया पूछती है, तो पैनल यह बताता है और कुछ नहीं भेजता। पुराने वर्शन में टिप्पणियों और एजेंट टूल वाली टास्क सूची थी; वह अब नहीं है, और पुरानी `board.json` नहीं दिखाई जाती। विचार और रूप emanuele-em के [Kanzo](https://github.com/emanuele-em/kanzo) (AGPL-3.0) से लिए गए हैं; Composer Plus उसका कोई कोड इस्तेमाल नहीं करता। `Cmd+Shift+K` एक dsh शॉर्टकट है: Linux पर ब्राउज़र में इसकी कोई डिफ़ॉल्ट कुंजी नहीं होती (dsh के कीबोर्ड शॉर्टकट पेज में सेट करें), और कोई ब्राउज़र एक्सटेंशन या दूसरा ऐप इसे पहले ले सकता है। कार्ड **पूरा हुआ** से तब हटता है जब dsh का अपना हरा बिंदु चला जाता है (आपने चैट खोली), या, जो चैट बोर्ड के पीछे खुली चैट रहते हुए खत्म हुई, उसके लिए तब जब वह चैट ऊपर किसी पैनल के बिना दिखती है। पढ़ा गया यह हाल dsh के अपने बिंदुओं की तरह सिर्फ़ इसी dsh विंडो में रहता है: रीलोड के बाद या दूसरी विंडो में हर खत्म हुई चैट पढ़ी गई मानी जाती है, इसलिए वह **हाल में पूरे हुए** में होती है।
|
|
299
|
+
- **असिस्टेंट** में इस Mac की सभी विंडो के लिए एक ही चैट है। यह workspace-write अनुमति मोड में चलता है: यह फ़ाइलें सिर्फ़ `~/Assistant` में लिखता है, और उसके बाहर की कोई कमांड पहले पूछती है। जब आप चैट को बिना मंज़ूरी वाले मोड (पूरी एक्सेस) में बदलते हैं, तो dsh हर मंज़ूरी अस्वीकार कर देता है, इसलिए असिस्टेंट किसी चैट को संदेश नहीं भेज सकता, चैट शुरू नहीं कर सकता, रोक नहीं सकता या आर्काइव नहीं कर सकता। मंज़ूरी कार्ड सिर्फ़ इन छह टूल की रक्षा करता है: उस मोड वाली किसी भी चैट की तरह, असिस्टेंट की शेल कमांड अब भी नेटवर्क तक पहुंच सकती है। dsh 0.2.0 और 0.2.1 पर dsh के शेड्यूल टूल सिर्फ़ असिस्टेंट चैट के अपने रिमाइंडर देखते हैं, दूसरी चैट के ऑटोमेशन नहीं; dsh 0.2.2 से वे हर शेड्यूल किए गए टास्क की सूची दिखाते हैं और उसे बदलते हैं। chats_list आर्काइव की गई, खाली और सबएजेंट चैट को, और खुद असिस्टेंट चैट को छोड़ देता है; “आपका इंतज़ार कर रही” का मतलब है कि चल रही चैट में कोई खुली मंज़ूरी, सवाल या प्लान रिव्यू है। chat_read उपयोगकर्ता के संदेश और एजेंट के जवाब देता है (टूल आउटपुट नहीं), ज़्यादा से ज़्यादा 50 संदेश और लगभग 24,000 अक्षर। chat_archive ऐसी चैट को मना कर देता है जो अभी चल रही है या जिसके सक्रिय रिमाइंडर हैं। मॉडल अब भी पढ़े गए टेक्स्ट से गुमराह हो सकता है: मंज़ूरी कार्ड आख़िरी जांच है, इसलिए **एक बार अनुमति दें** पर क्लिक करने से पहले उसे पढ़ें।
|
|
297
300
|
- **रोकने के बाद भेजा संदेश पहले चलाएँ** केवल चैट रोकने के बाद काम करता है (या किसी विफल टर्न के बाद, या ऐसी चैट खोलने पर जिसमें अभी कतार है): किसी टर्न के चलते समय भेजा गया संदेश पहले की तरह कतार के अंत में प्रतीक्षा करता है। यह केवल आपके अपने कतार वाले संदेशों से आगे जाता है: अगर कतार में कोई लक्ष्य राउंड या किसी सवाल का जवाब प्रतीक्षा कर रहा है, तो dsh का अपना क्रम रहता है। यह dsh का एक ऐसा हिस्सा पढ़ता है जो सार्वजनिक API नहीं है (रोका गया टर्न अभी ख़त्म हो रहा है या नहीं); अगर किसी dsh अपडेट में उसका नाम बदलता है, तो संदेश उस टर्न के ख़त्म होने के बाद ही आगे जाता है। सबएजेंट चैट dsh का अपना क्रम रखती हैं।
|
|
298
301
|
- **प्रोजेक्ट मेमोरी** चैट के पहले फ़ोल्डर (dsh के प्रोजेक्ट फ़ोल्डर) की होती है: जो चैट `cd` से फ़ोल्डर बदलती है, वह अपने पहले प्रोजेक्ट की मेमोरी ही रखती है, और वही फ़ोल्डर उन्हीं फ़ाइलों तक जाने वाले दूसरे पाथ से खोला जाए तो वह भी यही मेमोरी साझा करता है। चैट शुरू होते समय अपना मेमोरी हिस्सा स्थिर कर देती है, इसलिए बाद में सेव हुआ नोट अगली चैट से दिखता है (`memory_recall` उसे तुरंत ढूंढ लेता है)। समीक्षा सिर्फ़ वही रखती है, जो मॉडल रखना तय करता है: वह कोई तथ्य छोड़ सकती है या कोई गलत बात रख सकती है; उन्हें **मेमोरी खोलें** में जांचें और वहीं बदलें, या dsh बंद होने पर फ़ाइलें हाथ से बदलें। **मेमोरी खोलें** चुने गए प्रोजेक्ट के नोट और ग्लोबल नोट (सभी नोट चुनने पर सभी प्रोजेक्ट; ज़्यादा से ज़्यादा लगभग 60,000 अक्षर, बाकी सिर्फ़ गिने जाते हैं और उस अनुरोध में नहीं बदल सकते) और आपका लिखा हुआ टेक्स्ट चैट के मॉडल को नहीं, dsh के डिफ़ॉल्ट मॉडल को भेजता है। प्रीव्यू Mac पर 30 मिनट तक और dsh के दोबारा शुरू होने तक रहता है; अगर इस बीच समीक्षा या एजेंट नोट बदल दे, तो **लागू करें** मना कर देता है और आपको फिर से प्रीव्यू लेना होता है। **लागू करें** किसी प्रीव्यू के सभी बदलाव सेव करता है या एक भी नहीं: अगर कोई बदलाव सेव नहीं हो पाता (जैसे MEMORY.md भर गई हो), तो नोट पहले जैसे रहते हैं और कारण दिखता है। आपके संदेश वाले हर पूरे टर्न पर एक मॉडल कॉल लगती है; विफल कॉल अगले टर्न के बाद वही संदेश फिर पढ़ती है। सब-एजेंट चैट की समीक्षा नहीं होती। यह विचार और फ़ाइल फ़ॉर्मैट [DS Bot](https://github.com/Fei2411/DS-Bot) (Apache-2.0) से लिए गए हैं; Composer Plus उसका कोई कोड इस्तेमाल नहीं करता और DS Bot की अपनी मेमोरी को कभी नहीं पढ़ता या लिखता।
|
|
299
302
|
- **मेमोरी वर्शन इतिहास** हर मेमोरी (हर प्रोजेक्ट और ग्लोबल मेमोरी) के नवीनतम 50 वर्शन रखता है; पुराने हटा दिए जाते हैं। एक वर्शन में एक नोट नहीं, उस प्रोजेक्ट की पूरी मेमोरी होती है। **रीस्टोर करें** उस वर्शन की सभी फ़ाइलें (विषय सहित) वापस रखता है, और वर्शन खोलने के बाद मेमोरी बदल गई हो तो मना कर देता है; रीस्टोर से पहले की मेमोरी एक नया वर्शन बन जाती है, इसलिए आप उसे पूर्ववत कर सकते हैं। स्विच बंद रहने पर कोई नया वर्शन नहीं रखा जाता और **रीस्टोर करें** मना कर देता है; रखे गए वर्शन बने रहते हैं। इस सुविधा से पहले का कोई वर्शन नहीं है: इतिहास इंस्टॉल करने के बाद की पहली सेव से शुरू होता है।
|
|
@@ -347,6 +350,8 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
347
350
|
|
|
348
351
|
**क्या मैं अपनी सभी चैट को कानबान बोर्ड की तरह देख सकता हूं और वहीं से नई चैट शुरू कर सकता हूं?** हां, **टास्क बोर्ड** से (डिफ़ॉल्ट रूप से चालू): इसे बाएं साइडबार में खोलें। हर चैट **प्रगति में**, **समीक्षा** (वह आपका इंतज़ार कर रही है) या **पूरा हुआ** में एक कार्ड है। **नया टास्क** प्रोजेक्ट में dsh की नई चैट खोलता है, और आपका पहला संदेश जाने पर बोर्ड लौट आता है; चैट खोले बिना जवाब देने के लिए नारंगी कार्ड पर **जवाब दें** पर क्लिक करें। **पूरा हुआ** में **सब हटाएं** पहले पूछता है और आपके पढ़े हुए खत्म हुए कार्ड बोर्ड से हटाता है; **पहले जैसा करें** और **हटाए गए (N)** उन्हें वापस लाते हैं, और चैट dsh में बनी रहती हैं।
|
|
349
352
|
|
|
353
|
+
**क्या मुझे ऐसी निजी असिस्टेंट चैट मिल सकती है जो मुझे याद दिलाए और मेरी दूसरी चैट संभाले?** हां, **असिस्टेंट** से (डिफ़ॉल्ट रूप से बंद): इसे सेटिंग → Composer Plus में चालू करें, फिर बाएं साइडबार में **असिस्टेंट** पर क्लिक करें। यह dsh के शेड्यूल किए गए टास्क से रिमाइंडर सेट करता है, वेब पर खोजता है, आपकी चैट की सूची दिखाता है और उन्हें पढ़ता है, और किसी चैट को संदेश भेजना या चैट शुरू करना, रोकना या आर्काइव करना सिर्फ़ आपकी मंज़ूरी के बाद करता है। अपनी प्रोफ़ाइल इसकी प्रोजेक्ट मेमोरी में, विषय “profil” में रखें।
|
|
354
|
+
|
|
350
355
|
**क्या dsh, dsh-backup की तरह, मेरी चैट और सेटिंग का बैकअप ले सकता है?** हां: **सेटिंग → Composer Plus → बैकअप → अभी बैकअप लें**। यह उसी फ़ॉर्मैट का आर्काइव उसी फ़ोल्डर (`~/Desktop/dsh-backups`) में लिखता है, इसलिए dsh-backup के आर्काइव भी दिखते हैं और बहाल हो सकते हैं, और आप dsh-backup हटा सकते हैं। तय समय पर बैकअप के लिए **अपने-आप बैकअप** चालू करें।
|
|
351
356
|
|
|
352
357
|
**dsh अब शुरू नहीं होता। बैकअप कैसे बहाल करें?** बैकअप फ़ोल्डर (`~/Desktop/dsh-backups`) खोलें और `Composer Plus Rescue.command` पर डबल-क्लिक करें (Linux: `composer-plus-rescue.sh`, Windows: `Composer Plus Rescue.cmd`)। `3) Restore a backup` चुनें, कोई एक बैकअप चुनें और `RESTORE` टाइप करें। यह dsh के बिना काम करता है।
|
|
@@ -389,7 +394,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
389
394
|
|
|
390
395
|
**मेरा iPhone खो गया। उसे मेरे Mac तक पहुंचने से कैसे रोकूं?** साइडबार में नीचे बाईं ओर **मोबाइल कनेक्ट** पर क्लिक करें और उस iPhone के पास **Remove** पर क्लिक करें। उसकी कुंजी तुरंत काम करना बंद कर देती है; वह सिर्फ़ नई पेयरिंग से वापस आ सकता है, जिसे आप Mac पर मंज़ूर करें।
|
|
391
396
|
|
|
392
|
-
**अपने दूसरे Mac की चैट इस Mac से कैसे जारी रखूं?** दूसरे Mac पर **सेटिंग → Composer Plus → रिमोट कंप्यूटर** और **दूसरे कंप्यूटर को यह Mac खोलने दें** चालू करें, **पेयरिंग लिंक बनाएं** पर क्लिक करें और लिंक कॉपी करें (इसे खुद को भेजें, जैसे AirDrop या नोट्स से)। इस Mac पर भी **रिमोट कंप्यूटर** चालू करें, बाएं साइडबार के पिकर में (ब्रांड नाम के दाईं ओर, **नया सेशन** के ऊपर) **कंप्यूटर जोड़ें…** चुनें, लिंक पेस्ट करें, एक **नाम** लिखें और **कनेक्ट करें** पर क्लिक करें। फिर दूसरे Mac पर **मंज़ूर करें** पर क्लिक करें। इसके बाद उस कंप्यूटर को उसी मेनू में चुनें: वह इस पूरी विंडो में दिखता है। वापस आने के लिए उसी जगह
|
|
397
|
+
**अपने दूसरे Mac की चैट इस Mac से कैसे जारी रखूं?** दूसरे Mac पर **सेटिंग → Composer Plus → रिमोट कंप्यूटर** और **दूसरे कंप्यूटर को यह Mac खोलने दें** चालू करें, **पेयरिंग लिंक बनाएं** पर क्लिक करें और लिंक कॉपी करें (इसे खुद को भेजें, जैसे AirDrop या नोट्स से)। इस Mac पर भी **रिमोट कंप्यूटर** चालू करें, बाएं साइडबार के पिकर में (ब्रांड नाम के दाईं ओर, **नया सेशन** के ऊपर) **कंप्यूटर जोड़ें…** चुनें, लिंक पेस्ट करें, एक **नाम** लिखें और **कनेक्ट करें** पर क्लिक करें। फिर दूसरे Mac पर **मंज़ूर करें** पर क्लिक करें। इसके बाद उस कंप्यूटर को उसी मेनू में चुनें: वह इस पूरी विंडो में दिखता है। वापस आने के लिए उसी जगह **इस Mac पर वापस जाएं** पर क्लिक करें। इस बीच इस Mac की चैट चलती रहती हैं।
|
|
393
398
|
|
|
394
399
|
**क्या मैं Tether को Face ID से लॉक कर सकता हूं?** हां: Tether में "Settings → Privacy → Lock with Face ID" चालू करें। इसके बाद Tether खुलते समय और जब आप उस पर वापस आते हैं, तब Face ID (या पासकोड) मांगता है।
|
|
395
400
|
|
|
@@ -499,6 +504,8 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-queue-stop-send.mjs /pat
|
|
|
499
504
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-queue-edit.mjs /path/to/dsh/lib/bin.js
|
|
500
505
|
# Task board: New task opens dsh's new chat and comes back after the first message, AI tags, live columns, Answer on the board, × with Undo, Clear all with its question (unread cards stay), Removed and Put back (kept after a restart), the switch
|
|
501
506
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-task-board.mjs /path/to/dsh/lib/bin.js
|
|
507
|
+
# Assistant: off by default, sidebar row under Task board, one chat in ~/Assistant (workspace-write), a reminder that runs the chat, chats_list, chat_send after its approval card, an injected chat_send rejected, no tools in other chats, automations of other chats (dsh 0.2.2+), switch off
|
|
508
|
+
SHOT=1 CHECK_DELAY=20 PLAYWRIGHT=/path/to/playwright node test/browser-assistant.mjs /path/to/dsh/lib/bin.js
|
|
502
509
|
```
|
|
503
510
|
|
|
504
511
|
```sh
|
package/README.id.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil itu dikelola oleh aplikasi.)
|
|
31
31
|
|
|
32
|
-
> pnpm milik dsh melewati versi yang berumur kurang dari 24 jam. Tepat setelah rilis, tambahkan versinya: `dsh-composer-plus@1.
|
|
32
|
+
> pnpm milik dsh melewati versi yang berumur kurang dari 24 jam. Tepat setelah rilis, tambahkan versinya: `dsh-composer-plus@1.24.0`.
|
|
33
33
|
|
|
34
34
|
## Fitur
|
|
35
35
|
|
|
@@ -75,6 +75,7 @@ Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil
|
|
|
75
75
|
| **File yang dilindungi** | <a id="feature-protectedfiles"></a>Aktif secara bawaan. Alat file milik agen sendiri tidak dapat membaca atau mengubah file yang cocok dengan pola Anda: `read`, `read_image`, dan `grep` pada file ditolak untuk pola **baca dan tulis**, sedangkan `write`, `edit`, dan `str_replace_editor` ditolak untuk kedua jenis. Agen membaca alasannya dan diminta untuk bertanya kepada Anda. Pola bawaannya `.env*`, `*.pem`, dan `*.key`. Pengaturan → Composer Plus → **File yang dilindungi**: tambahkan pola (misalnya `published/**` atau `config/*.yml`), klik jenisnya untuk beralih antara **baca dan tulis** dan **hanya tulis**, hapus dengan ✕, atau klik **Gunakan bawaan**. Pola tanpa `/` cocok dengan nama file di folder mana pun. Ini pagar pengaman, bukan sandbox: perintah shell (`cat .env`), skrip, atau alat MCP tetap dapat menjangkau file itu (lihat Batasan). | <a href="assets/features/protectedFiles.webp"><img src="assets/features/protectedFiles.webp" width="160" alt="Tangkapan layar: File yang dilindungi"></a> |
|
|
76
76
|
| **Perintah yang diblokir** | <a id="feature-blockedcommands"></a>Aktif secara bawaan, dengan daftar kosong. Perintah shell agen (`bash`, `pwsh`) tidak dapat menjalankan perintah yang cocok dengan aturan Anda: aturan **blokir** menolak panggilan itu (agen membaca alasannya dan diminta untuk bertanya kepada Anda), aturan **tanya dulu** menampilkan kartu persetujuan dsh, dan perintah hanya berjalan jika Anda mengizinkannya. Pengaturan → Composer Plus → **Perintah yang diblokir**: ketik aturan (misalnya `npm publish`, `git push --force`, atau `ssh *192.168.2.19`), klik jenisnya untuk beralih antara **blokir** dan **tanya dulu**, lalu klik **Tambah**; klik jenis sebuah aturan untuk mengubahnya, hapus aturan dengan ✕. Aturan adalah nama perintah dan kata-kata yang harus muncul sesudahnya dalam urutan ini; `*` cocok dengan teks apa pun. Fitur ini juga menemukan perintah sesudah `&&`, `;`, `\|`, di dalam `$(…)`, `bash -c "…"`, atau `eval`, dan sesudah `sudo` atau `env`. Ini pagar pengaman, bukan sandbox: variabel (`$CMD`), file skrip, atau program lain tetap dapat menjalankan perintah itu (lihat Batasan). | <a href="assets/features/blockedCommands.webp"><img src="assets/features/blockedCommands.webp" width="160" alt="Tangkapan layar: Perintah yang diblokir"></a> |
|
|
77
77
|
| **Papan tugas** | <a id="feature-taskboard"></a>Bilah samping kiri → **Papan tugas**, atau tekan `Cmd+Shift+K` (`Ctrl+Shift+K` di Windows dan Linux) di mana saja dalam dsh. Papan kanban obrolan dsh Anda dengan status langsung yang sama seperti di bilah samping: obrolan yang menunggu persetujuan, jawaban, atau tinjauan rencana Anda ada di **Ditinjau** dengan titik oranye, obrolan yang berjalan ada di **Sedang dikerjakan**, dan obrolan yang sudah selesai dan belum Anda buka ada di **Selesai** (hijau). Saat Anda membuka obrolan, kartunya keluar dari **Selesai** dengan sendirinya; klik **Baru selesai (N)** di bawah kartu hijau untuk melihat obrolan selesai yang sudah Anda baca (10 terbaru, lalu **Tampilkan N yang lebih lama**; terbuka atau tertutup disimpan di perangkat ini). Obrolan yang selesai saat terbuka di belakang papan (**Tugas baru**) tetap hijau sampai Anda membukanya. Klik nama proyek di bagian atas papan untuk membuka daftar proyek, lalu pilih proyek atau **Semua proyek**; folder branch per obrolan dihitung sebagai proyeknya. Daftar tertutup setelah Anda memilih, dengan `Esc`, atau dengan klik di luar daftar. Ketik di **Cari proyek** di bagian atas daftar untuk menemukan proyek berdasarkan namanya (huruf besar/kecil dan aksen tidak berpengaruh; `Esc` mengosongkan kotak), tekan `Enter` untuk memilih hasil pertama, dan klik **Aktif dalam 2 jam terakhir** untuk hanya menampilkan proyek dengan obrolan yang menunggu, berjalan, selesai tetapi belum dilihat, atau berubah dalam 2 jam terakhir (disimpan di perangkat ini). **Tugas baru** (atau `n`) membuka obrolan baru milik dsh sendiri di proyek yang ditampilkan papan (dengan **Semua proyek**, proyek yang dipilih Sesi Baru dsh), jadi Anda bisa menambahkan file, memakai perintah, dan memilih model seperti di obrolan mana pun. Saat pesan pertama Anda terkirim, papan kembali dengan sendirinya. Sampai saat itu, obrolan menunggu di bagian paling atas **Sedang dikerjakan** sebagai **Tugas baru**: klik obrolan itu untuk menulis pesan pertama. Proyek yang punya obrolan yang menunggu Anda memiliki titik oranye di daftar proyek (nama proyek di bagian atas juga memilikinya selama ada obrolan yang menunggu). dsh memberi nama obrolan, dan model obrolan menulis hingga 3 label dari pesan itu. Klik kartu untuk membuka obrolannya. Klik kartu oranye (atau **Jawab** di kartu itu) untuk menjawabnya di papan; panelnya punya **Buka obrolan** untuk seluruh obrolan: **Tolak** atau **Izinkan sekali**, **Setujui** atau **Minta perubahan** untuk rencana, atau pilihan dan teks Anda sendiri untuk pertanyaan. Klik **×** di kartu yang selesai untuk mengeluarkannya dari papan, atau buka **Baru selesai** lalu klik **Bersihkan semua** di bagian atas **Selesai** untuk mengeluarkan kartu-kartu itu dari papan: lebih dulu ditampilkan berapa kartu dari proyek mana yang keluar, dan kartu yang belum dibaca (hijau) tetap ada. Selama 8 detik setelahnya, **Urungkan** mengembalikan kartu-kartu itu; **Dikeluarkan (N)** di bawah **Selesai** menampilkan daftar kartu yang ada di luar papan, dan **Kembalikan** menampilkan satu kartu lagi di **Selesai**. Tidak ada obrolan yang dihapus: obrolan tetap ada di bilah samping dsh, papan mengingat hal ini setelah dimulai ulang (Tether menampilkan papan yang sama), dan obrolan yang berjalan lagi kembali ke papan. Arahkan penunjuk ke kartu di **Sedang dikerjakan** (atau pindahkan fokus keyboard ke kartu itu) untuk melihat progresnya: berapa lama obrolan berjalan, langkah dari daftar tugasnya, alat yang sedang berjalan, dan baris terakhir agen. Di Pengaturan → Composer Plus → Papan tugas, **Progres saat kursor di atas** memilih **Cepat (tanpa AI)** (default: hanya membaca obrolan) atau **Ringkasan AI** (satu panggilan singkat ke model obrolan juga menulis satu atau dua kalimat). | <a href="assets/features/taskBoard.webp"><img src="assets/features/taskBoard.webp" width="160" alt="Tangkapan layar: Papan tugas"></a> |
|
|
78
|
+
| **Asisten** | <a id="feature-assistant"></a>Nonaktif secara default: aktifkan di **Pengaturan → Composer Plus**. Lalu klik **Asisten** di bilah samping kiri (tepat di bawah **Papan tugas**): fitur ini membuka satu obrolan tetap yang Anda pakai sebagai asisten pribadi, seperti obrolan ChatGPT atau Grok. Klik pertama membuat folder `~/Assistant`, menambahkannya sebagai proyek “Assistant”, dan memulai obrolan dengan mode izin workspace-write dan model default dsh; setiap klik berikutnya membuka obrolan yang sama (obrolan yang diarsipkan kembali, obrolan yang dihapus dibuat lagi). Minta asisten mengingatkan Anda (“ingatkan saya minum air dalam 2 menit”): asisten memakai tugas terjadwal dsh, jadi pengingat menjalankan obrolan pada waktu itu, dan Tether mengirim notifikasi “Turn finished” saat Koneksi seluler aktif. Minta asisten mencari di web, atau tanyakan tentang obrolan Anda yang lain: asisten dapat menampilkan daftar obrolan semua proyek (berjalan, menunggu Anda, atau diam) dan membaca pesan terbaru dari satu obrolan. Asisten juga dapat mengirim pesan ke obrolan, memulai obrolan baru di proyek, menghentikan obrolan yang berjalan, atau mengarsipkan obrolan: masing-masing dari empat tindakan ini lebih dulu menampilkan kartu persetujuan dsh (juga di Tether), dan tidak ada yang terjadi sampai Anda mengklik **Izinkan sekali**. Asisten tidak punya alat hapus. Hanya obrolan ini yang memiliki alat-alat ini dan instruksi singkatnya; teks yang dibacanya di halaman web atau obrolan lain dihitung sebagai data, bukan perintah. Simpan profil Anda di memori proyek ini (**Memori proyek**, topik “profil”) daripada menyampaikannya setiap kali. | <a href="assets/features/assistant.webp"><img src="assets/features/assistant.webp" width="160" alt="Tangkapan layar: Asisten"></a> |
|
|
78
79
|
| **Memori proyek** | <a id="feature-projectmemory"></a>Nonaktif secara default: aktifkan di **Pengaturan → Composer Plus**. Setiap folder proyek mendapat memorinya sendiri, yang dibaca oleh obrolan berikutnya di proyek itu, seperti DS Bot menyimpan satu memori untuk setiap Bot. Setelah setiap giliran selesai, satu panggilan ke model obrolan membaca pesan baru (bukan yang ditarik oleh putar balik), menyimpan preferensi, keputusan, dan fakta Anda yang bertahan lama sebagai catatan singkat, serta mengubah atau menghapus catatan lama. Agen juga dapat menyimpan, menghapus, dan mencari catatan sendiri (`memory_remember`, `memory_forget`, `memory_recall`). Catatan juga bisa global: setiap proyek membacanya. Obrolan baru mendapat catatan di prompt sistemnya; catatan yang disimpan kemudian muncul mulai obrolan berikutnya. File berupa Markdown di folder home dsh (`storages/dsh-composer-plus/memory/`), tidak pernah di folder proyek. **Buka memori** di baris yang sama menampilkan semua catatan tersimpan, dikelompokkan per proyek (dan memori global), dengan saringan. Tulis dengan kata-kata Anda apa yang diubah (misalnya "saya beralih dari yarn ke pnpm"), lalu **Pratinjau perubahan**: model default dsh mengusulkan perubahan, dan hanya **Terapkan** yang menyimpannya. Di Tether: menu judul obrolan → Project memory. | <a href="assets/features/projectMemory.webp"><img src="assets/features/projectMemory.webp" width="160" alt="Tangkapan layar: Memori proyek"></a> |
|
|
79
80
|
| **Riwayat versi memori** | <a id="feature-memoryhistory"></a>Aktif secara default selama **Memori proyek** aktif. Sebelum setiap penyimpanan memori (agen, tinjauan setelah giliran, **Buka memori**), salinan catatan seperti sebelumnya disimpan. Di **Buka memori**, pilih proyek atau **Memori global**, lalu **Riwayat**: versi menurut tanggal dan siapa yang mengubah memori setelah setiap versi. Pilih versi untuk melihat sebagai diff apa yang diubah pemulihan, lalu **Pulihkan**. Catatan sebelum pemulihan juga disimpan, jadi Anda bisa membatalkannya. 50 versi terbaru dari setiap memori tetap ada. Di Tether: menu judul chat → Project memory → History. | <a href="assets/features/memoryHistory.webp"><img src="assets/features/memoryHistory.webp" width="160" alt="Tangkapan layar: Riwayat versi memori"></a> |
|
|
80
81
|
| **Ekspor memori ke AGENTS.md** | <a id="feature-memoryexport"></a>Di **Buka memori**, pilih proyek, lalu **Ekspor ke AGENTS.md**: catatan proyek itu masuk ke bagian bertanda di `AGENTS.md` di foldernya, sehingga Anda bisa meng-commit-nya dan membagikannya dengan tim serta alat agen lain. Anda melihat perubahannya sebagai diff dulu; hanya **Tulis AGENTS.md** yang menyimpannya. Ekspor berikutnya hanya mengganti bagian itu. Memori global, sumber, dan tanggal tidak ikut. Di Tether: menu judul chat → Project memory → Export to AGENTS.md. | <a href="assets/features/memoryExport.webp"><img src="assets/features/memoryExport.webp" width="160" alt="Tangkapan layar: Ekspor memori ke AGENTS.md"></a> |
|
|
@@ -103,7 +104,7 @@ Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil
|
|
|
103
104
|
| **Tombol opsi** | <a id="feature-optionpicks"></a>Saat jawaban diakhiri daftar opsi (daftar bernomor 1 sampai 9 butir di bawah judul "Opsi" atau baris tebal "Opsi", juga "Langkah selanjutnya" dan kata yang sama dalam bahasa aplikasi), tombol untuk setiap opsi muncul di bawah jawaban. Klik mengirim "Option N: …" beserta seluruh opsi sebagai pesan Anda, seolah-olah Anda mengetiknya. Opsi yang bertanda "(disarankan)" ditandai. Tombol hanya muncul di bawah jawaban terbaru, saat obrolan sedang diam dan kotak pesan kosong; jawaban yang sudah dipilih dan jawaban yang ditarik oleh rollback tidak memiliki tombol. Selama tombol tampil, Prediksi pesan berikutnya tidak memberi tebakan. Pada kartu pertanyaan agen, tombol 1–9 memilih opsi itu seperti klik (tidak di kolom jawaban, dan tidak dalam 0,8 detik pertama setelah pertanyaan muncul). | <a href="assets/features/optionPicks.webp"><img src="assets/features/optionPicks.webp" width="160" alt="Tangkapan layar: Tombol opsi"></a> |
|
|
104
105
|
| **Bahasa aplikasi** | <a id="feature-language"></a>Pengaturan → Composer Plus → **Bahasa aplikasi** mengganti seluruh antarmuka dsh ke Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt, atau हिन्दी (lihat di bawah). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="Tangkapan layar: Bahasa aplikasi"></a> |
|
|
105
106
|
| **Koneksi seluler (iPhone)** | <a id="feature-mobileconnect"></a>Gunakan dsh dari iPhone Anda dengan aplikasi [Tether](tether/), di Wi-Fi yang sama atau melalui [Tailscale](https://tailscale.com). Aktifkan di **Pengaturan → Composer Plus** (nonaktif secara default karena membuka port jaringan di Mac ini). Lalu klik **Koneksi seluler** di kiri bawah bilah samping: pindai kode QR dengan Kamera iPhone (ketuk **Open in Tether**) atau dengan **Scan code** di Tether, ketuk **Connect**, lalu klik **Approve**. Instal Tether terlebih dahulu: tanpa aplikasi itu, Kamera tidak dapat membuka kode tersebut. Ponsel menampilkan obrolan Anda, mengirim pesan (dengan foto: **+** di kotak pesan → Camera, Photos, atau Paste image), menjawab persetujuan dan pertanyaan, serta mengganti model dan agen. Pasangkan Mac sebanyak yang Anda mau: nama Mac di kiri atas aplikasi berpindah di antara Mac tersebut. Panel **Koneksi seluler** menampilkan iPhone yang dipasangkan beserta koneksi terakhirnya: **Remove** langsung memutus salah satunya. “Tailscale only” menolak jaringan lokal (untuk Wi-Fi bersama), dan log akses menampilkan siapa yang mencoba terhubung. Di Tether, “Settings → Privacy” mengunci aplikasi dengan Face ID. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Tangkapan layar: Koneksi seluler (iPhone)"></a> |
|
|
106
|
-
| **Komputer jarak jauh** | <a id="feature-remotecomputers"></a>Buka dsh di Mac Anda yang lain melalui [Tailscale](https://tailscale.com) dan gunakan di jendela dsh ini. Aktifkan di **Pengaturan → Composer Plus** pada setiap Mac (nonaktif secara default karena membuka port jaringan). Di Mac yang ingin Anda buka, aktifkan **Izinkan komputer lain membuka Mac ini**, klik **Buat tautan pemasangan**, lalu salin tautannya. Di Mac ini, pilih **Tambahkan komputer…** di pemilih komputer pada bilah samping kiri (di sebelah kanan nama merek, di atas **Sesi Baru**), tempel tautannya, ketik **Nama** (bukan nama Mac ini atau nama komputer lain), lalu klik **Hubungkan**. Setelah itu, klik **Setujui** di Mac yang lain. Pemilih lalu menampilkan **Mac ini** dan komputer Anda: pilih salah satu, dan dsh-nya memenuhi jendela ini, dengan obrolan, bilah samping, alat, dan file miliknya sendiri, sementara Mac ini tetap berjalan di belakangnya.
|
|
107
|
+
| **Komputer jarak jauh** | <a id="feature-remotecomputers"></a>Buka dsh di Mac Anda yang lain melalui [Tailscale](https://tailscale.com) dan gunakan di jendela dsh ini. Aktifkan di **Pengaturan → Composer Plus** pada setiap Mac (nonaktif secara default karena membuka port jaringan). Di Mac yang ingin Anda buka, aktifkan **Izinkan komputer lain membuka Mac ini**, klik **Buat tautan pemasangan**, lalu salin tautannya. Di Mac ini, pilih **Tambahkan komputer…** di pemilih komputer pada bilah samping kiri (di sebelah kanan nama merek, di atas **Sesi Baru**), tempel tautannya, ketik **Nama** (bukan nama Mac ini atau nama komputer lain), lalu klik **Hubungkan**. Setelah itu, klik **Setujui** di Mac yang lain. Pemilih lalu menampilkan **Mac ini** dan komputer Anda: pilih salah satu, dan dsh-nya memenuhi jendela ini, dengan obrolan, bilah samping, alat, dan file miliknya sendiri, sementara Mac ini tetap berjalan di belakangnya. Pemilih tetap di tempat yang sama dan menampilkan **Kembali ke Mac ini**: klik untuk kembali. Jika Anda punya lebih dari satu komputer, klik itu membuka menu, tempat Anda memilih **Mac ini** atau komputer lain. Panel Pengaturan dapat mengganti nama dan menghapus komputer, serta menampilkan komputer yang dapat membuka Mac ini (**Hapus** langsung memutus salah satunya). | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="Tangkapan layar: Komputer jarak jauh"></a> |
|
|
107
108
|
| **Pembaruan otomatis** | <a id="feature-autoupdate"></a>Saat dsh dimulai, plugin memeriksa [rilis GitHub terbaru](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Jika rilis itu lebih baru dan sudah ada di npm, plugin memasang versi persis itu melalui pengelola plugin bawaan dsh (jalur yang sama dengan Pengaturan → Plugin) dan memberi tahu Anda. Mulai ulang dsh untuk memuatnya. **Pengaturan → Composer Plus → Pembaruan Composer Plus** menampilkan versi dan memiliki **Periksa pembaruan** / **Perbarui sekarang**. Saat dsh pertama kali dimulai dengan versi baru, jendela **Yang baru di Composer Plus N** menampilkan catatan rilis versi itu satu kali dalam bahasa **Bahasa aplikasi** (catatan ikut bersama versi baru, tanpa panggilan jaringan lain; bahasa tanpa catatan menampilkan catatan berbahasa Inggris); **Tutup** atau `Esc` menutupnya. Di bawah catatan, satu baris meminta bintang di GitHub, paling sering sekali dalam 30 hari (tanpa panggilan jaringan); setelah **Beri bintang di GitHub** atau **Jangan tanya lagi**, baris itu tidak muncul lagi. Jendela ini juga muncul setelah pembaruan lewat Pengaturan → Plugin atau folder yang disalin, sekali untuk setiap versi baru; tidak pada pemasangan pertama. **Yang baru di versi ini** di baris pembaruan membukanya lagi. Jika di disk ada versi yang lebih baru daripada yang berjalan, baris itu meminta Anda memulai ulang dsh. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Tangkapan layar: Pembaruan otomatis"></a> |
|
|
108
109
|
| **Filter aktif/nonaktif** | <a id="feature-featurefilter"></a>Di samping **Cari fitur** di **Pengaturan → Composer Plus**: **Semua** menampilkan semua fitur, **Aktif** hanya fitur yang sakelarnya aktif, dan **Nonaktif** hanya fitur yang sakelarnya nonaktif. Yang menentukan adalah sakelar setiap baris, termasuk sakelar yang disimpan Host dsh (misalnya **Koneksi seluler**). Filter ini bekerja bersama pencarian: ketik sebuah kata lalu pilih **Nonaktif** untuk menemukan fitur yang Anda matikan. Baris yang Anda alihkan saat **Aktif** atau **Nonaktif** dipilih tetap ada sampai Anda memilih filter lagi, sehingga fokus tetap di sakelarnya. **Aktif** dan **Nonaktif** menyembunyikan baris **Bahasa aplikasi** dan **Pembaruan Composer Plus** (keduanya tidak punya sakelar). Pengaturan selalu terbuka dengan **Semua**. | <a href="assets/features/featureFilter.webp"><img src="assets/features/featureFilter.webp" width="160" alt="Tangkapan layar: Filter aktif/nonaktif"></a> |
|
|
109
110
|
| **Laporkan isu** | <a id="feature-issuereport"></a>Pengaturan → Composer Plus → **Laporkan isu…** (di bawah pengantar), atau klik kanan obrolan di bilah samping (atau buka menu **…** obrolan itu) → **Laporkan isu Composer Plus…**. Pilih jenis: **Bug**, **Permintaan fitur**, **Peningkatan**, **Terjemahan**, atau **Pertanyaan**. Jelaskan dengan kata-kata dan bahasa Anda sendiri, lalu klik **Tulis draf** (atau `Cmd/Ctrl+Enter`). Satu panggilan ke model default dsh menulis isu dalam bahasa Inggris: judul dengan awalan jenisnya (misalnya `[Bug]`) dan bagian-bagian dari jenis itu (untuk bug: What happened, Steps to reproduce, Expected, Actual), ditambah satu baris berisi versi Composer Plus, dsh, dan sistem. Baca dan edit judul serta deskripsinya; **Tulis ulang** menulis draf baru. **Buka isu** membukanya di repositori GitHub Composer Plus dengan login GitHub CLI (`gh`) Anda dan menampilkan tautannya. Isu ini publik: teks yang tampak seperti kunci atau kata sandi ditolak. Jika `gh` tidak dapat membukanya, **Buka di GitHub sebagai gantinya** membuka halaman GitHub sendiri dengan draf yang sudah terisi. | <a href="assets/features/issueReport.webp"><img src="assets/features/issueReport.webp" width="160" alt="Tangkapan layar: Laporkan isu"></a> |
|
|
@@ -198,6 +199,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
198
199
|
- **Lanjutkan di obrolan baru:** tidak ada yang berjalan sampai Anda mengkliknya. Lalu bagian Host mengirim obrolan (seperti yang dibaca Pemeriksaan tujuan: tanpa penalaran, tanpa langkah yang ditarik oleh putar balik) ke model obrolan itu sendiri dan menampilkan catatan serah terima; hanya **Mulai obrolan baru** yang membuat obrolan baru. Tidak ada yang ditulis ke proyek.
|
|
199
200
|
- **Rincian konteks:** bagian Host hanya membaca log obrolan; tanpa panggilan model, tanpa file proyek.
|
|
200
201
|
- **Papan tugas:** papan menampilkan obrolan dsh sendiri dari daftar dsh sendiri di jendela ini; papan tidak menambahkan data obrolan miliknya sendiri. **Tugas baru** membuka obrolan baru milik dsh sendiri, dan Anda menulis pesan pertama di kotak pesan dsh, jadi persetujuan, sandbox, dan model obrolan berlaku seperti biasa. Bagian Host menyimpan pesan pertama obrolan itu sebagai prompt kartu dan mengirimnya (4.000 karakter pertamanya, tidak ada yang lain) ke model obrolan tersebut dalam satu permintaan lagi, tanpa alat, untuk mendapatkan hingga 3 label. Prompt, label, dan waktu mulai setiap tugas disimpan di `$DSH_HOME/storages/dsh-composer-plus/board-chats.json` (file hanya untuk pemilik, 2.000 yang terbaru), bersama ID obrolan yang Anda keluarkan dari papan dengan **×** atau **Bersihkan semua** (5.000 yang terbaru); sakelarnya ada di `board-switch.json` di sebelahnya. Tidak ada yang ditulis ke folder proyek. **Jawab** mengirim jawaban Anda ke permintaan dsh sendiri yang tertunda, sama seperti kartu milik obrolan itu sendiri. Daftar tugas lama dari versi sebelumnya (`board.json`) tetap ada di disk seperti semula dan tidak dibaca. **Progres saat kursor di atas** membaca log obrolan di Mac ini. Dengan **Cepat (tanpa AI)** (default), tidak ada yang dikirim. Dengan **Ringkasan AI**, selama kotak progres kartu yang sedang berjalan tampil (atau selama papan Tether terbuka, untuk paling banyak 8 kartu yang berjalan), bagian Host mengirim bagian terbaru obrolan itu (paling banyak sekitar 6.000 karakter: pesan Anda, balasan teks agen, panggilan alatnya dan akhir hasilnya; tanpa penalaran dan tanpa pesan yang ditarik oleh putar balik) ke model obrolan itu, sebagai satu permintaan tanpa alat. Bagian Host mengirim lagi hanya setelah obrolan berlanjut, paling sering sekali setiap 20 detik per obrolan. Catatan itu hanya disimpan di memori; pengaturannya ada di `$DSH_HOME/storages/dsh-composer-plus/board-progress.json` (file hanya untuk pemilik).
|
|
202
|
+
- **Asisten:** obrolan asisten adalah obrolan dsh biasa di `~/Assistant`; panggilan modelnya dikirim ke model default dsh seperti di obrolan mana pun. Alat-alatnya membaca log obrolan Anda yang lain di Mac ini (judul, proyek, status, dan dengan chat_read pesan terbarunya) dan memberikannya ke model itu hanya saat model memanggil alat. Mengirim pesan ke obrolan, memulai, menghentikan, dan mengarsipkan obrolan masing-masing menunggu persetujuan Anda. ID obrolan disimpan di `$DSH_HOME/storages/dsh-composer-plus/assistant.json` dan sakelarnya di `assistant-switch.json` (file hanya untuk pemilik). Pengingat dan otomatisasi adalah tugas terjadwal milik dsh sendiri. Tidak ada yang keluar dari Mac ini kecuali permintaan model dan pencarian web yang dibuat obrolan itu.
|
|
201
203
|
- **File yang dilindungi:** daftar dan sakelarnya ada di `$DSH_HOME/storages/dsh-composer-plus/protected-files.json` (file hanya untuk pemilik). Pemeriksaan hanya membaca path dari setiap panggilan alat file (dan path aslinya), tidak pernah membaca file itu.
|
|
202
204
|
- **Perintah yang diblokir:** aturan dan sakelarnya ada di `$DSH_HOME/storages/dsh-composer-plus/blocked-commands.json` (file hanya untuk pemilik). Pemeriksaan hanya membaca teks perintah dari setiap panggilan `bash` dan `pwsh`; pemeriksaan tidak menjalankan apa pun dan tidak mengirim apa pun.
|
|
203
205
|
- **Input rahasia:** nilai dikirim dari kartu (atau dari Tether, lewat gateway yang tidak mencatat isi permintaan) ke Host hanya dalam permintaan jawaban. Host menulisnya ke `$DSH_HOME/storages/dsh-composer-plus/secrets/<nama acak>` (folder 0700, file 0600); tidak ada yang masuk ke proyek, log obrolan, atau hasil alat. Host menyimpan nilai di memori untuk menggantinya dengan `[secret]` di hasil alat berikutnya dalam obrolan itu. File dan salinan itu dihapus saat giliran obrolan berakhir dan saat dsh dimulai. Sakelarnya ada di `secrets.json` di sebelahnya. Perintah yang dijalankan agen dengan file itu dapat mengirim nilai ke tempat yang dituju perintah itu: itulah tujuannya.
|
|
@@ -224,7 +226,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
224
226
|
- **Tidak ada label branch di baris obrolan:** bilah samping tidak dalam tampilan “Dalam satu daftar” (dalam “Ruang Kerja” dan “Pohon Ruang Kerja”, tidak ada baris obrolan yang menampilkan label), obrolan itu belum memiliki giliran sejak Anda memasang versi ini, foldernya bukan repositori git, atau **Branch Git di baris obrolan** nonaktif. Setelah pembaruan, mulai ulang dsh (bagian Host mencatat branch).
|
|
225
227
|
- **Pemeriksaan tujuan menyebut pengujian keluar dengan kode 127 atau "not found":** dsh yang dimulai dari Finder atau Dock dapat memiliki PATH yang lebih pendek daripada terminal Anda, sehingga tidak menemukan `npm`, `pnpm`, atau `cargo`. Mulai dsh dari terminal, atau atur perintah pengujian Anda sendiri dengan jalur lengkap di **Pemeriksaan tujuan** → **Edit**. **Jalankan sekarang** langsung menampilkan hasilnya.
|
|
226
228
|
- **Tujuan tidak ditutup dan agen terus bekerja:** **Pemeriksaan tujuan** menemukan pengujian yang gagal atau pekerjaan yang belum selesai; baris di bawah tujuan menampilkan alasannya (arahkan penunjuk ke hasil untuk melihat detailnya). Perbaiki penyebabnya atau perintah pengujiannya, atau selesaikan tujuan sendiri dengan `/goal` atau bilah tujuan (penyelesaian itu tidak diperiksa).
|
|
227
|
-
- **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.
|
|
229
|
+
- **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.24.0`), lihat catatan pemasangan di atas.
|
|
228
230
|
- **Cadangkan sekarang menyatakan "Tindakan pencadangan lain sedang berjalan":** ada tindakan yang berjalan di jendela dsh lain atau di konsol penyelamat (keduanya berbagi file kunci, `.composer-plus.lock`, di folder cadangan). Tunggu sampai tindakan itu selesai. Jika tidak ada tindakan yang berjalan, kunci milik proses yang sudah ditutup diambil alih pada klik berikutnya.
|
|
229
231
|
- **Konsol penyelamat menyatakan "dsh is running":** keluar dari dsh terlebih dahulu. Jika dsh memang sudah tertutup, file yang disebut dalam pesan itu tersisa dari crash: hapus file itu dan coba lagi.
|
|
230
232
|
- **Setelah pemulihan, dsh tidak mau dimulai atau ada plugin yang hilang:** paket plugin sebuah profil harus dipasang lagi. Konsol penyelamat menawarkannya setelah pemulihan; atau jalankan `pnpm install` di setiap folder di bawah `$DSH_HOME/profiles/` yang dicantumkannya. Rahasia yang tidak ada di vault (komputer lain) harus dimasukkan lagi: konsol mencantumkannya.
|
|
@@ -258,7 +260,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
258
260
|
- **Sesuaikan kartu pertanyaan dengan jendela** hanya mengubah kartu pertanyaan dsh, bukan kartu tinjauan rencana. Fitur ini menemukan kartu melalui markup dsh (`data-question-key`, `data-question-scroll`); jika pembaruan dsh mengubah markup itu, kartu tampil seperti yang digambar dsh. Tinggi kartu mengikuti jendela, bukan chat: di chat dalam panel samping yang sempit, kartu yang tinggi masih dapat melewati bagian atas chat.
|
|
259
261
|
- **Sesuaikan header chat dengan jendela** menemukan header chat dsh dari nama kelas yang dibuat dsh (`_titleRow`, `_titleCluster`, `_crumbs`, `_headerActions`, `_headerUtilities`), karena dsh tidak menyediakan kait tata letak untuknya. Jika pembaruan dsh mengganti nama itu, header tampil seperti yang digambar dsh. Di kolom chat yang sangat sempit header bisa memakai dua atau tiga baris, sehingga ruang di atas pesan menjadi lebih kecil.
|
|
260
262
|
- **Koneksi seluler** hanya berfungsi di macOS (memakai `en0`, `openssl`, `swift`, dan `dns-sd`). Fitur ini memakai port tetap 19390 dan 19391, jadi hanya satu dsh di setiap Mac yang dapat menjalankannya pada satu waktu (setiap Mac adalah satu entri dalam daftar Mac di ponsel). Dengan kunci APNs di `apns.json` (lihat `tether/README.md`), Mac mengirim notifikasi lewat layanan push Apple, jadi notifikasi tetap datang saat Tether tertutup; Mac harus menyala dengan dsh terbuka. Tanpa kunci itu, ponsel hanya mendapat notifikasi saat Tether terbuka atau baru saja masuk ke latar belakang. Tether hanya mengirimnya setelah Anda mengaktifkan "Settings → Notifications → Send notifications" di Tether. Tether menyimpan opsi ini dan jam-jamnya secara terpisah untuk setiap Mac yang dipasangkan. Opsi ini nonaktif secara default di setiap Mac, dan iOS meminta izin saat Anda mengaktifkannya. Aplikasi iOS belum ada di App Store: bangun aplikasi itu dari `tether/ios` dengan Xcode. "Tailscale only" tetap memerlukan alamat Wi-Fi atau Ethernet di Mac (gateway hanya mulai jika ada alamat itu). Log akses terpisah untuk setiap Mac dan hanya menyimpan 200 percobaan terbaru; percobaan yang berulang dalam satu menit menambah hitungan satu pada baris yang sama. Kunci aplikasi Setiap notifikasi menampilkan Mac dan proyek chat (`Studio Mac · recipe-box`), judul chat, dan teksnya: Turn finished menampilkan balasan terakhir agen. Dengan kunci APNs, teks ini melewati layanan push Apple. Tether tidak menyembunyikan pratinjau notifikasi di Layar Terkunci iPhone: matikan pratinjau itu di Pengaturan iOS. Titik hijau di Tether mengikuti Mac: chat yang Anda buka di dsh juga kehilangan titiknya di ponsel. Chat yang Anda buka di Tether hanya kehilangan titiknya di ponsel. Titik milik dsh di Mac tetap ada sampai Anda membuka chat itu di Mac.
|
|
261
|
-
- **Komputer jarak jauh** memerlukan Tailscale di kedua Mac, dan Composer Plus dengan fitur ini aktif di Mac yang Anda buka. Mac itu tidak boleh dalam mode tidur, dan dsh harus berjalan di sana. Pemilih hanya tampil saat bilah samping kiri terbuka (tidak saat bilah itu hanya menampilkan ikon).
|
|
263
|
+
- **Komputer jarak jauh** memerlukan Tailscale di kedua Mac, dan Composer Plus dengan fitur ini aktif di Mac yang Anda buka. Mac itu tidak boleh dalam mode tidur, dan dsh harus berjalan di sana. Pemilih hanya tampil saat bilah samping kiri terbuka (tidak saat bilah itu hanya menampilkan ikon). Jika halaman Mac lain tidak punya pemilih sendiri (Composer Plus di sana lebih lama dari 1.23.0), pemilih Mac ini muncul di atas halaman itu di tempat yang sama. Jika di sana ada 1.23.0, pemilih menampilkan nama Mac itu: pilih **Mac ini** di menunya untuk kembali. Setiap komputer yang Anda buka menyimpan halamannya di memori sampai Anda menonaktifkan fitur ini atau memulai ulang dsh. Di aplikasi desktop, halaman Mac lain adalah halaman tersemat: pintasan keyboard dsh sendiri (misalnya obrolan baru) tidak berfungsi di dalamnya, dan unduhan file, mikrofon, serta notifikasi juga tidak berfungsi di sana. Fitur ini memakai port 19392 (hanya satu dsh di setiap Mac yang dapat mengizinkan komputer lain masuk). Dari halaman Mac lain, pemilih hanya beralih di antara komputer Mac ini: Anda tidak dapat membuka Mac ketiga melalui Mac lain.
|
|
262
264
|
- Tautan sesi berfungsi di dalam obrolan; mengkliknya tidak membuka obrolan. Tautan dari **Salin tautan pesan** membuka pesannya hanya di dsh 0.2.1 dan yang lebih baru, dan hanya dari pesan di obrolan (dsh 0.2.0 tidak punya aturan teks pengguna, jadi di sana tautan tetap disalin, tetapi tampil sebagai teks biasa). Pesan yang dikeluarkan oleh putar balik, atau yang dihapus oleh pemadatan dari riwayat yang dimuat dsh, tidak dapat ditampilkan: tautan lalu memberi tahu hal itu. Tombol 🔗 menempel ke baris pesan dsh; jika pembaruan dsh mengubah markup itu, tombol tidak tampil.
|
|
263
265
|
- **Tandai semua sudah dibaca** mengubah titik belum dibaca milik dsh melalui bagian dsh yang bukan API publik (daftar `completionUnread` di status sesi dsh). Jika pembaruan dsh mengganti namanya, item ini tidak tampil. Item ini masuk ke menu "…" proyek di dsh, yang tidak punya slot untuk plugin; jika dsh mengubah menu itu, item ini juga tidak tampil.
|
|
264
266
|
- **Edit pesan antrean di tempat** tidak mengubah pesan yang sementara itu mulai terkirim, dan tidak menimpa pesan yang sementara itu berubah (misalnya di Tether pada iPhone): sebuah pemberitahuan menyampaikannya. Gambar baru memerlukan model yang menerima gambar (batas gambar bawaan dsh berlaku), dan file baru harus selesai diunggah sebelum Anda dapat menyimpan. Hanya pesan antrean milik Anda sendiri yang dapat diedit: putaran tujuan atau balasan pertanyaan di antrean tidak. Setelah plugin diperbarui, hanya pengeditan teks yang langsung berfungsi: mulai ulang dsh sebelum menyimpan pesan dengan gambar atau file (bagian Host dimuat saat dsh dimulai).
|
|
@@ -294,6 +296,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
294
296
|
- **Paket skill bahasa Turki** memasang skill pihak ketiga: aturannya berasal dari repositori GitHub penulisnya, bukan dari Composer Plus, dan versi baru dipakai sejak pemeriksaan harian berikutnya tanpa kami tinjau. Pemeriksaan membuktikan bahwa file-file itu sama dengan yang didaftar GitHub untuk commit tersebut, bukan bahwa aturannya baik. Model yang memutuskan kapan memuat skill (Anda juga bisa memanggilnya dengan nama); aturannya hanya berlaku untuk teks bahasa Turki. Bagian Host memakai bahasa yang terakhir dilaporkan browser: jika dua browser memakai bahasa berbeda, yang terbaru yang berlaku. Tanpa login, GitHub mengizinkan 60 panggilan API per jam; pemeriksaan yang ditolak tetap memakai salinan yang terpasang dan menampilkan alasannya di Pengaturan.
|
|
295
297
|
- **Rapikan basis kode** membawa salinan tetap dari skill ini (caldoai/skills, commit f3cf477): perubahan pada aslinya hanya datang dengan versi Composer Plus yang baru. Skill ini menjalankan tujuan panjang yang dapat mengubah banyak file, dan subagen serta pemeriksaannya memakai banyak token. Di bagian proyek yang tidak punya tes, skill ini dapat mengubah perilaku tanpa terlihat: mulai di branch tersendiri dan baca diff sebelum merge. Skill dengan nama yang sama di proyek, di folder skill kustom, atau di `~/.dsh/skills` menggantikannya. Selama sakelar mati, `/untangle-codebase` dikirim ke model sebagai teks biasa.
|
|
296
298
|
- **Papan tugas** menampilkan obrolan yang didaftar dsh di jendela ini: obrolan di luar proyek hanya tampil di **Semua proyek**, dan folder branch per obrolan (`<project>/.worktrees/<name>`) dihitung sebagai proyeknya. Kolom kartu adalah status langsung obrolannya, jadi kartu tidak bisa diseret: obrolan pindah ke **Selesai** saat gilirannya berakhir, juga setelah error atau dihentikan, dan kembali ke **Sedang dikerjakan** saat berjalan lagi. Titik hijau adalah titik selesai milik dsh sendiri, yang hanya disimpan dsh di jendela ini: setelah halaman dimuat ulang, obrolan yang selesai tampil tanpa titik itu. **Selesai** menampilkan 50 obrolan terbaru (**Tampilkan N yang lebih lama** menampilkan sisanya). **Cari proyek** menemukan proyek hanya berdasarkan namanya, bukan berdasarkan jalur foldernya. **Aktif dalam 2 jam terakhir** menyembunyikan proyek jika setiap obrolannya lebih lama dari 2 jam, tidak aktif, dan sudah dibaca; papan tetap menampilkan proyek yang Anda pilih. **Tugas baru** hanya mengingat obrolan baru terbaru di jendela ini: jika Anda membuka obrolan lain sebelum pesan pertama, obrolan itu tetap di bagian paling atas **Sedang dikerjakan** sebagai **Tugas baru** sampai Anda menulis di dalamnya, tetapi papan kembali dengan sendirinya hanya untuk yang terbaru. Setelah halaman dimuat ulang, obrolan baru tanpa pesan tidak ada di papan (dsh menyimpannya sebagai Sesi Baru miliknya yang kosong). Label berasal dari satu panggilan model per tugas, dari pesan pertamanya: label bisa salah, dan obrolan yang tidak Anda mulai di papan tidak punya label. Judulnya adalah judul obrolan milik dsh sendiri (layanan judul dsh, dengan model obrolan); sampai judul itu ada, kartu menampilkan baris pertama dari pesan pertama. **×** dan **Bersihkan semua** hanya mengeluarkan kartu dari papan: tidak ada obrolan yang dihapus. **Urungkan** hanya tampil selama 8 detik, di jendela ini; setelah itu, **Dikeluarkan (N)** → **Kembalikan** mengembalikan kartu, dan obrolan yang berjalan lagi kembali dengan sendirinya. **Bersihkan semua** bertanya dulu dan mengeluarkan kartu selesai yang sudah dibaca dari proyek yang ditampilkan (semua proyek dengan **Semua proyek**), termasuk kartu di balik **Tampilkan N yang lebih lama**; kartu yang belum dibaca (hijau) tetap ada. dsh menyimpan titik hijaunya hanya di jendela ini, jadi setelah halaman dimuat ulang, Bersihkan semua bisa mengeluarkan kartu yang jawabannya belum Anda baca. Daftarnya disimpan di Mac ini untuk setiap jendela dan untuk Tether; saat daftar berisi 5.000 obrolan, yang paling lama kembali. **Jawab** hanya menjawab permintaan terbaru obrolan: jika permintaan itu sudah dijawab di tempat lain (jendela lain, Tether, Tinjauan otomatis) atau obrolan menanyakan hal baru, panel memberi tahu hal itu dan tidak mengirim apa pun. Versi sebelumnya punya daftar tugas dengan komentar dan alat agen; semuanya sudah tidak ada, dan `board.json` lama tidak ditampilkan. Ide dan tampilannya berasal dari [Kanzo](https://github.com/emanuele-em/kanzo) karya emanuele-em (AGPL-3.0); Composer Plus tidak memakai kodenya. `Cmd+Shift+K` adalah pintasan dsh: di browser pada Linux, pintasan ini tidak punya tombol bawaan (atur di halaman pintasan keyboard dsh), dan ekstensi browser atau aplikasi lain bisa memakainya lebih dulu. Kartu keluar dari **Selesai** saat titik hijau dsh sendiri hilang (Anda membuka obrolannya) atau, untuk obrolan yang selesai di belakang papan saat menjadi obrolan yang terbuka, saat obrolan itu tampil tanpa panel di atasnya. Status dibaca ini hanya ada di jendela dsh ini, seperti titik dsh: setelah memuat ulang atau di jendela lain, setiap obrolan selesai dianggap sudah dibaca, jadi ada di **Baru selesai**.
|
|
299
|
+
- **Asisten** punya satu obrolan untuk semua jendela di Mac ini. Asisten berjalan dengan mode izin workspace-write: asisten hanya menulis file di `~/Assistant`, dan perintah di luar folder itu bertanya dulu. Jika Anda mengalihkan obrolan ke mode tanpa persetujuan (Akses penuh), dsh menolak setiap persetujuan, sehingga asisten tidak dapat mengirim pesan ke obrolan, memulai, menghentikan, atau mengarsipkan obrolan. Kartu persetujuan hanya menjaga enam alat itu: perintah shell dari asisten tetap dapat menjangkau jaringan, seperti di obrolan mana pun dengan mode itu. Di dsh 0.2.0 dan 0.2.1, alat jadwal dsh hanya melihat pengingat milik obrolan asisten itu sendiri, bukan otomatisasi obrolan lain; mulai dsh 0.2.2, alat itu menampilkan dan mengubah setiap tugas terjadwal. chats_list tidak menyertakan obrolan yang diarsipkan, obrolan kosong, obrolan subagen, dan obrolan asisten itu sendiri; “menunggu Anda” berarti ada persetujuan, pertanyaan, atau tinjauan rencana yang terbuka di obrolan yang berjalan. chat_read memberikan pesan pengguna dan balasan agen (tanpa output alat), paling banyak 50 pesan dan sekitar 24.000 karakter. chat_archive menolak obrolan yang masih berjalan atau masih punya pengingat aktif. Model tetap bisa tertipu oleh teks yang dibacanya: kartu persetujuan adalah pemeriksaan terakhir, jadi bacalah kartu itu sebelum Anda mengklik **Izinkan sekali**.
|
|
297
300
|
- **Dahulukan pesan setelah Hentikan** hanya bekerja setelah Anda menghentikan obrolan (atau setelah giliran yang gagal, atau saat Anda membuka obrolan yang masih punya antrean): pesan yang Anda kirim saat sebuah giliran berjalan tetap menunggu di akhir antrean. Pesan itu hanya mendahului pesan antrean milik Anda sendiri: jika ada putaran tujuan atau balasan pertanyaan yang menunggu di antrean, urutan dsh tetap. Fitur ini membaca bagian dsh yang bukan API publik (apakah giliran yang dihentikan masih sedang berakhir); jika pembaruan dsh mengganti namanya, pesan baru dipindah ke depan setelah giliran itu selesai. Obrolan subagen tetap memakai urutan dsh.
|
|
298
301
|
- **Memori proyek** milik folder pertama obrolan (folder proyek dsh): obrolan yang mengganti foldernya dengan `cd` tetap memakai memori proyek pertamanya, dan folder yang sama yang dibuka lewat path lain ke file yang sama memakai memori yang sama. Obrolan membekukan bagian memorinya saat dimulai, jadi catatan yang disimpan kemudian muncul mulai obrolan berikutnya (`memory_recall` langsung menemukannya). Tinjauan hanya menyimpan apa yang diputuskan model: tinjauan bisa melewatkan fakta atau menyimpan yang salah; periksa di **Buka memori** dan ubah di sana, atau edit file-nya secara manual saat dsh tertutup. **Buka memori** mengirim catatan proyek yang dipilih dan catatan global (semua proyek saat Anda memilih Semua catatan; paling banyak sekitar 60.000 karakter, sisanya hanya dihitung dan tidak dapat diubah dalam permintaan itu) serta teks Anda ke model default dsh, bukan ke model obrolan. Pratinjau disimpan di Mac selama 30 menit dan sampai dsh dimulai ulang; jika tinjauan atau agen mengubah catatan di antaranya, **Terapkan** menolak dan Anda meminta pratinjau lagi. **Terapkan** menyimpan semua perubahan dari satu pratinjau atau tidak sama sekali: jika satu perubahan tidak bisa disimpan (misalnya MEMORY.md sudah penuh), catatan tetap seperti semula dan alasannya ditampilkan. Setiap giliran selesai yang berisi pesan dari Anda memakan satu panggilan model; panggilan yang gagal membaca pesan yang sama lagi setelah giliran berikutnya. Obrolan subagen tidak ditinjau. Ide dan format file berasal dari [DS Bot](https://github.com/Fei2411/DS-Bot) (Apache-2.0); Composer Plus tidak memakai kodenya dan tidak pernah membaca atau menulis memori milik DS Bot sendiri.
|
|
299
302
|
- **Riwayat versi memori** menyimpan 50 versi terbaru dari setiap memori (setiap proyek dan memori global); yang lebih lama dihapus. Satu versi berisi seluruh memori proyek itu, bukan satu catatan. **Pulihkan** mengembalikan semua file dari versi itu (termasuk topik) dan menolak jika memori berubah setelah Anda membuka versi itu; memori sebelum pemulihan menjadi versi baru, jadi Anda bisa membatalkannya. Selama sakelar nonaktif, tidak ada versi baru yang disimpan dan **Pulihkan** menolak; versi yang sudah disimpan tetap ada. Tidak ada versi dari sebelum fitur ini: riwayat dimulai dari penyimpanan pertama setelah Anda memasangnya.
|
|
@@ -347,6 +350,8 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
347
350
|
|
|
348
351
|
**Bisakah saya melihat semua obrolan saya sebagai papan kanban dan memulai obrolan baru dari sana?** Bisa, dengan **Papan tugas** (aktif secara default): buka di bilah samping kiri. Setiap obrolan adalah kartu di **Sedang dikerjakan**, **Ditinjau** (obrolan menunggu Anda), atau **Selesai**. **Tugas baru** membuka obrolan baru dsh di proyek, dan papan kembali saat pesan pertama Anda terkirim; klik **Jawab** di kartu oranye untuk menjawabnya tanpa membuka obrolan. **Bersihkan semua** di **Selesai** bertanya dulu dan mengeluarkan kartu selesai yang sudah Anda baca dari papan; **Urungkan** dan **Dikeluarkan (N)** mengembalikannya, dan obrolannya tetap ada di dsh.
|
|
349
352
|
|
|
353
|
+
**Bisakah saya punya obrolan asisten pribadi yang mengingatkan saya dan mengelola obrolan saya yang lain?** Bisa, dengan **Asisten** (nonaktif secara default): aktifkan di Pengaturan → Composer Plus, lalu klik **Asisten** di bilah samping kiri. Asisten membuat pengingat dengan tugas terjadwal dsh, mencari di web, menampilkan daftar dan membaca obrolan Anda, serta mengirim pesan ke obrolan atau memulai, menghentikan, atau mengarsipkan obrolan hanya setelah Anda menyetujuinya. Simpan profil Anda di memori proyeknya, topik “profil”.
|
|
354
|
+
|
|
350
355
|
**Bisakah dsh mencadangkan obrolan dan pengaturan saya, seperti dsh-backup?** Bisa: **Pengaturan → Composer Plus → Pencadangan → Cadangkan sekarang**. Fitur ini menulis format arsip yang sama ke folder yang sama (`~/Desktop/dsh-backups`), jadi arsip dsh-backup juga tampil dan dapat dipulihkan, dan Anda dapat menghapus dsh-backup. Aktifkan **Pencadangan otomatis** untuk pencadangan terjadwal.
|
|
351
356
|
|
|
352
357
|
**dsh tidak mau dimulai lagi. Bagaimana cara memulihkan cadangan?** Buka folder cadangan (`~/Desktop/dsh-backups`) dan klik dua kali `Composer Plus Rescue.command` (Linux: `composer-plus-rescue.sh`, Windows: `Composer Plus Rescue.cmd`). Pilih `3) Restore a backup`, pilih satu cadangan, lalu ketik `RESTORE`. Cara ini berjalan tanpa dsh.
|
|
@@ -389,7 +394,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
389
394
|
|
|
390
395
|
**iPhone saya hilang. Bagaimana cara mencegahnya mengakses Mac saya?** Klik **Koneksi seluler** di kiri bawah bilah samping, lalu klik **Remove** di samping iPhone itu. Kuncinya langsung tidak berfungsi; iPhone itu hanya dapat kembali dengan pemasangan baru yang Anda setujui di Mac.
|
|
391
396
|
|
|
392
|
-
**Bagaimana cara melanjutkan obrolan dari Mac saya yang lain di Mac ini?** Di Mac yang lain, aktifkan **Pengaturan → Composer Plus → Komputer jarak jauh** dan **Izinkan komputer lain membuka Mac ini**, klik **Buat tautan pemasangan**, lalu salin tautannya (kirim ke diri Anda sendiri, misalnya dengan AirDrop atau Catatan). Di Mac ini, aktifkan juga **Komputer jarak jauh**, pilih **Tambahkan komputer…** di pemilih pada bilah samping kiri (di sebelah kanan nama merek, di atas **Sesi Baru**), tempel tautannya, ketik **Nama**, lalu klik **Hubungkan**. Setelah itu, klik **Setujui** di Mac yang lain. Sejak saat itu, pilih komputer tersebut di menu yang sama: komputer itu memenuhi jendela ini.
|
|
397
|
+
**Bagaimana cara melanjutkan obrolan dari Mac saya yang lain di Mac ini?** Di Mac yang lain, aktifkan **Pengaturan → Composer Plus → Komputer jarak jauh** dan **Izinkan komputer lain membuka Mac ini**, klik **Buat tautan pemasangan**, lalu salin tautannya (kirim ke diri Anda sendiri, misalnya dengan AirDrop atau Catatan). Di Mac ini, aktifkan juga **Komputer jarak jauh**, pilih **Tambahkan komputer…** di pemilih pada bilah samping kiri (di sebelah kanan nama merek, di atas **Sesi Baru**), tempel tautannya, ketik **Nama**, lalu klik **Hubungkan**. Setelah itu, klik **Setujui** di Mac yang lain. Sejak saat itu, pilih komputer tersebut di menu yang sama: komputer itu memenuhi jendela ini. Klik **Kembali ke Mac ini** di tempat yang sama untuk kembali. Sementara itu, obrolan di Mac ini tetap berjalan.
|
|
393
398
|
|
|
394
399
|
**Bisakah saya mengunci Tether dengan Face ID?** Bisa: di Tether, aktifkan "Settings → Privacy → Lock with Face ID". Setelah itu, Tether meminta Face ID (atau kode sandi) saat dibuka dan saat Anda kembali ke aplikasi itu.
|
|
395
400
|
|
|
@@ -499,6 +504,8 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-queue-stop-send.mjs /pat
|
|
|
499
504
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-queue-edit.mjs /path/to/dsh/lib/bin.js
|
|
500
505
|
# Task board: New task opens dsh's new chat and comes back after the first message, AI tags, live columns, Answer on the board, × with Undo, Clear all with its question (unread cards stay), Removed and Put back (kept after a restart), the switch
|
|
501
506
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-task-board.mjs /path/to/dsh/lib/bin.js
|
|
507
|
+
# Assistant: off by default, sidebar row under Task board, one chat in ~/Assistant (workspace-write), a reminder that runs the chat, chats_list, chat_send after its approval card, an injected chat_send rejected, no tools in other chats, automations of other chats (dsh 0.2.2+), switch off
|
|
508
|
+
SHOT=1 CHECK_DELAY=20 PLAYWRIGHT=/path/to/playwright node test/browser-assistant.mjs /path/to/dsh/lib/bin.js
|
|
502
509
|
```
|
|
503
510
|
|
|
504
511
|
```sh
|