dsh-composer-plus 1.21.0 → 1.22.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 +6 -5
- package/README.es.md +6 -5
- package/README.fr.md +6 -5
- package/README.hi.md +6 -5
- package/README.id.md +6 -5
- package/README.ja.md +6 -5
- package/README.ko.md +6 -5
- package/README.md +6 -5
- package/README.pt-BR.md +6 -5
- package/README.ru.md +6 -5
- package/README.tr.md +6 -5
- package/README.vi.md +6 -5
- package/README.zh.md +6 -5
- package/client.js +107 -40
- package/index.js +70 -8
- package/package.json +2 -2
- package/release-notes.json +14 -14
- package/tether/gateway/server.mjs +129 -8
package/README.de.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
Starte dsh danach neu. (Die CLI kann nicht in das Desktop-Profil installieren; dieses Profil verwaltet die App.)
|
|
31
31
|
|
|
32
|
-
> Das pnpm von dsh überspringt Versionen, die jünger als 24 Stunden sind. Gib direkt nach einem Release die Version mit an: `dsh-composer-plus@1.
|
|
32
|
+
> Das pnpm von dsh überspringt Versionen, die jünger als 24 Stunden sind. Gib direkt nach einem Release die Version mit an: `dsh-composer-plus@1.22.0`.
|
|
33
33
|
|
|
34
34
|
## Funktionen
|
|
35
35
|
|
|
@@ -100,7 +100,7 @@ Starte dsh danach neu. (Die CLI kann nicht in das Desktop-Profil installieren; d
|
|
|
100
100
|
| **App-Sprache** | <a id="feature-language"></a>Einstellungen → Composer Plus → **App-Sprache** stellt die ganze dsh-Oberfläche auf Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt oder हिन्दी um (siehe unten). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="Screenshot: App-Sprache"></a> |
|
|
101
101
|
| **Mobile Verbindung (iPhone)** | <a id="feature-mobileconnect"></a>Nutze dsh mit der App [Tether](tether/) von deinem iPhone aus, im selben WLAN oder über [Tailscale](https://tailscale.com). Schalte die Funktion unter **Einstellungen → Composer Plus** ein (sie ist standardmäßig aus, weil sie einen Netzwerkport auf diesem Mac öffnet). Klicke dann unten links in der Seitenleiste auf **Mobile Verbindung**: Scanne den QR-Code mit der iPhone-Kamera (tippe auf **Open in Tether**) oder mit **Scan code** in Tether, tippe auf **Connect** und klicke auf **Approve**. Installiere Tether zuerst: Ohne die App kann die Kamera den Code nicht öffnen. Das Telefon zeigt deine Chats, sendet Nachrichten (mit Fotos: das **+** im Eingabefeld → Camera, Photos oder Paste image), beantwortet Genehmigungen und Fragen und wechselt Modelle und Agenten. Kopple so viele Macs, wie du willst: Mit dem Mac-Namen oben links in der App wechselst du zwischen ihnen. Das Panel **Mobile Verbindung** listet die gekoppelten iPhones mit ihrer letzten Verbindung auf: **Remove** trennt eines sofort. „Tailscale only“ lehnt das lokale Netzwerk ab (für ein geteiltes WLAN), und das Zugriffsprotokoll zeigt, wer sich verbinden wollte. In Tether sperrt „Settings → Privacy“ die App mit Face ID. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Screenshot: Mobile Verbindung (iPhone)"></a> |
|
|
102
102
|
| **Remote-Computer** | <a id="feature-remotecomputers"></a>Öffne dsh auf deinen anderen Macs über [Tailscale](https://tailscale.com) und setze ihre Chats hier fort. Schalte die Funktion auf jedem Mac unter **Einstellungen → Composer Plus** ein (sie ist standardmäßig aus, weil sie Netzwerkports öffnet). Schalte auf dem Mac, den du öffnen willst, **Anderen Computern erlauben, diesen Mac zu öffnen** ein, klicke auf **Kopplungslink erstellen** und kopiere den Link. Wähle auf diesem Mac in der Computerauswahl links vom Chattitel **Computer hinzufügen…**, füge den Link ein und klicke auf **Verbinden**. Klicke dann auf dem anderen Mac auf **Genehmigen**. Danach listet die Auswahl **Dieser Mac** und deine Computer auf: Wähle einen, und sein dsh öffnet sich im Browser-Tab der rechten Seitenleiste (oder in einem Browserfenster), mit seinen eigenen Chats, Tools und Dateien. Im Einstellungsbereich kannst du Computer umbenennen und entfernen. Dort siehst du auch die Computer, die diesen Mac öffnen können (**Entfernen** trennt einen sofort). | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="Screenshot: Remote-Computer"></a> |
|
|
103
|
-
| **Automatische Updates** | <a id="feature-autoupdate"></a>Wenn dsh startet, prüft das Plugin das [neueste GitHub-Release](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Ist es neuer und schon auf npm, installiert das Plugin genau diese Version über die eigene Plugin-Verwaltung von dsh (derselbe Weg wie Einstellungen → Plugins) und benachrichtigt dich. Starte dsh neu, um die Version zu laden. **Einstellungen → Composer Plus → Composer-Plus-Updates** zeigt die Version und hat **Nach Updates suchen** / **Jetzt aktualisieren**. Beim ersten Start von dsh mit der neuen Version zeigt ein Fenster **Neu in Composer Plus N** einmal die Release Notes dieser Version in der Sprache von **App-Sprache** (sie kommen mit der neuen Version, ohne weiteren Netzwerkaufruf; eine Sprache ohne Notes zeigt die englischen); **Schließen** oder `Esc` schließt es. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Screenshot: Automatische Updates"></a> |
|
|
103
|
+
| **Automatische Updates** | <a id="feature-autoupdate"></a>Wenn dsh startet, prüft das Plugin das [neueste GitHub-Release](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Ist es neuer und schon auf npm, installiert das Plugin genau diese Version über die eigene Plugin-Verwaltung von dsh (derselbe Weg wie Einstellungen → Plugins) und benachrichtigt dich. Starte dsh neu, um die Version zu laden. **Einstellungen → Composer Plus → Composer-Plus-Updates** zeigt die Version und hat **Nach Updates suchen** / **Jetzt aktualisieren**. Beim ersten Start von dsh mit der neuen Version zeigt ein Fenster **Neu in Composer Plus N** einmal die Release Notes dieser Version in der Sprache von **App-Sprache** (sie kommen mit der neuen Version, ohne weiteren Netzwerkaufruf; eine Sprache ohne Notes zeigt die englischen); **Schließen** oder `Esc` schließt es. Das Fenster erscheint auch nach einem Update über Einstellungen → Plugins oder einen kopierten Ordner, einmal je neuer Version; nicht bei der ersten Installation. **Neu in dieser Version** in der Update-Zeile öffnet es erneut. Liegt auf der Festplatte eine neuere Version als die laufende, bittet die Zeile um einen Neustart von dsh. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Screenshot: Automatische Updates"></a> |
|
|
104
104
|
| **Sicherung** | <a id="feature-backup"></a>Einstellungen → Composer Plus → **Sicherung** → **Jetzt sichern** schreibt dein ganzes dsh-Home (Chats, Einstellungen, Plugins, MCP, Skills) mit Prüfsumme in ein einziges Archiv in `~/Desktop/dsh-backups`. Geheimnisse werden im Archiv maskiert: Dateien mit Anmeldedaten, Schlüsseldateien (`.pem`, `.key`) und die Werte token, secret und password der yml-Einstellungen bleiben nur auf diesem Computer, im `vault` des Ordners. `cache/`, `dsh-runtimes/` und `node_modules` kommen nicht ins Archiv (dsh erstellt sie neu). Jede Sicherung in der Liste hat **Prüfen** (liest sie vollständig), **Für einen anderen Computer** (ein Ordner zum Kopieren auf den neuen Computer, mit der Rettungskonsole) und **Löschen**. Archive von dsh-backup im selben Ordner erscheinen und funktionieren auch. Zum Wiederherstellen beende dsh und nutze die Rettungskonsole. | <a href="assets/features/backup.webp"><img src="assets/features/backup.webp" width="160" alt="Screenshot: Sicherung"></a> |
|
|
105
105
|
| **Automatische Sicherung** | <a id="feature-autobackup"></a>Schalte **Automatische Sicherung** ein (standardmäßig aus: Jede Kopie ist etwa so groß wie dein dsh-Home ohne seinen Cache). Wähle, wie oft gesichert wird (**Alle**: 6 Stunden bis 7 Tage, standardmäßig 24 Stunden) und wie viele Sicherungen bleiben (**Behalten**: 3 bis 14, standardmäßig 7). Der nächste Zeitpunkt steht unter dem Schalter; eine fehlgeschlagene Sicherung erscheint dort auch und wird 30 Minuten später erneut versucht. Wenn dsh oder Composer Plus mit einer neuen Version startet, entsteht kurz nach dem Start ein Snapshot, bevor die neue Version deine Daten lange benutzt hat (die zwei neuesten bleiben, markiert mit **Vor einem Upgrade**). | <a href="assets/features/autoBackup.webp"><img src="assets/features/autoBackup.webp" width="160" alt="Screenshot: Automatische Sicherung"></a> |
|
|
106
106
|
| **Sitzungsprotokoll-Prüfung** | <a id="feature-sessiondoctor"></a>**Sitzungsprotokolle prüfen** liest das Protokoll jedes Chats und listet die auf, die dsh nicht öffnen kann (ein defekter Frame, ein abgeschnittener Datensatz, eine falsche Sequenznummer). Ein abgerissenes Ende wird nicht aufgelistet: dsh repariert es selbst. **Aus Sicherungen reparieren** legt die Kopie aus der neuesten Sicherung zurück, die eine intakte Kopie enthält, und behält die beschädigte Datei daneben (`.corrupt-<Zeit>`). Nachrichten, die nach dieser Sicherung geschrieben wurden, sind nicht in der Kopie. Ein Chat, der in diesem dsh offen ist, wird hier nicht repariert: Beende dsh und repariere ihn in der Rettungskonsole. | <a href="assets/features/sessionDoctor.webp"><img src="assets/features/sessionDoctor.webp" width="160" alt="Screenshot: Sitzungsprotokoll-Prüfung"></a> |
|
|
@@ -215,7 +215,7 @@ Getestet mit dsh `0.2.0-rc.2` (Desktop und Web) und `0.2.1-rc.2` (Web). Die CI f
|
|
|
215
215
|
- **Kein Branch-Etikett an einer Chatzeile:** Die Seitenleiste ist nicht in „In einer Liste“ (in „Arbeitsbereich“ und „Arbeitsbereichsbaum“ zeigt keine Chatzeile ein Etikett), der Chat hatte seit der Installation dieser Version keine Runde, sein Ordner ist kein git-Repository, oder **Git-Branch in Chatzeilen** ist aus. Starte dsh nach einem Update neu (die Host-Hälfte zeichnet den Branch auf).
|
|
216
216
|
- **Zielprüfung meldet, dass der Test mit Code 127 oder „not found“ beendet wurde:** Ein dsh, das aus dem Finder oder dem Dock gestartet wurde, kann einen kürzeren PATH als dein Terminal haben und findet daher `npm`, `pnpm` oder `cargo` nicht. Starte dsh aus einem Terminal, oder lege unter **Zielprüfung** → **Bearbeiten** deinen eigenen Testbefehl mit dem vollständigen Pfad fest. **Jetzt ausführen** zeigt das Ergebnis sofort.
|
|
217
217
|
- **Das Ziel schließt sich nicht und der Agent arbeitet weiter:** **Zielprüfung** hat einen fehlschlagenden Test oder fehlende Arbeit gefunden. Die Zeile unter dem Ziel zeigt den Grund (fahre mit der Maus über das Ergebnis, um die Details zu sehen). Behebe die Ursache oder den Testbefehl, oder schließe das Ziel selbst mit `/goal` oder der Zielleiste ab (das wird nicht geprüft).
|
|
218
|
-
- **Die Installation schlägt direkt nach einem Release fehl:** Gib die Version mit an (`dsh-composer-plus@1.
|
|
218
|
+
- **Die Installation schlägt direkt nach einem Release fehl:** Gib die Version mit an (`dsh-composer-plus@1.22.0`), siehe den Hinweis zur Installation oben.
|
|
219
219
|
- **Jetzt sichern meldet „Eine andere Sicherungsaktion läuft“:** Eine Aktion läuft in einem anderen dsh-Fenster oder in der Rettungskonsole (sie teilen sich eine Sperrdatei, `.composer-plus.lock`, im Sicherungsordner). Warte, bis sie fertig ist. Läuft keine Aktion, wird die Sperre eines beendeten Prozesses beim nächsten Klick übernommen.
|
|
220
220
|
- **Die Rettungskonsole meldet „dsh is running“:** Beende zuerst dsh. Ist dsh wirklich geschlossen, ist die in der Meldung genannte Datei von einem Absturz übrig: Entferne sie und versuche es erneut.
|
|
221
221
|
- **Nach einer Wiederherstellung startet dsh nicht oder ein Plugin fehlt:** Die Plugin-Pakete eines Profils müssen neu installiert werden. Die Rettungskonsole bietet das nach einer Wiederherstellung an; oder führe `pnpm install` in jedem Ordner unter `$DSH_HOME/profiles/` aus, den sie auflistet. Geheimnisse, die nicht im vault waren (anderer Computer), müssen neu eingegeben werden: Die Konsole listet sie auf.
|
|
@@ -236,6 +236,7 @@ Getestet mit dsh `0.2.0-rc.2` (Desktop und Web) und `0.2.1-rc.2` (Web). Die CI f
|
|
|
236
236
|
- Die Warteschlange von dsh hat keine `move`-Aktion. Deshalb verschiebt die Host-Hälfte des Plugins die eingereihte Nachricht selbst in der Warteschlange von dsh (eine Änderung, dieselbe Nachricht). Nachrichten mit Bildern oder Dateien lassen sich ebenfalls verschieben. Nur deine eigenen Nachrichten lassen sich verschieben: Eine Zielrunde oder eine Antwort auf eine Frage in der Warteschlange bleibt an ihrem Platz. Beginnt das Senden einer Nachricht, während du ziehst, wird nichts verschoben, und ein Hinweis meldet das.
|
|
237
237
|
- dsh 0.2.1 lädt ein Update sofort, wenn die neue Version keine Einstellungen von dsh ändert. Andernfalls und unter dsh 0.2.0 starte dsh neu, um das Update zu laden. Das Plugin startet dsh nie für dich neu. Web-/CLI-Profile ohne die Plugin-Verwaltung von dsh melden nur eine neue Version.
|
|
238
238
|
- **Neu in Composer Plus N** zeigt die Notes in der Sprache von **App-Sprache**. Eine UI-Sprache mit einer anderen Region bekommt die Notes ihrer Grundsprache (`en-GB` die englischen, `zh-TW` die chinesischen von `zh`). Eine Sprache ohne Notes (eine, die ein anderes Sprachpaket hinzufügt, oder `pt-PT`, das nicht `pt-BR` ist) zeigt die englischen Notes. Die Notes kommen mit der neuen Version. Hat die laufende Kopie keine lesbare Notes-Datei (`release-notes.json`), zeigt das Fenster die englischen Notes von GitHub.
|
|
239
|
+
- Eine Version, die installiert wird, während dsh läuft (ein Update über Einstellungen → Plugins oder einen kopierten Ordner), lädt erst nach einem Neustart von dsh. Bis dahin zeigt **Composer-Plus-Updates** die laufende Version und bittet um einen Neustart. Ihr Fenster **Neu in Composer Plus N** erscheint einmal beim ersten Start dieser Version. Der erste Start nach der Installation dieses Plugins zeigt kein Fenster; **Neu in dieser Version** öffnet die Notes der laufenden Version.
|
|
239
240
|
- **Mit Notiz ablehnen** sendet die Notiz als Nachricht in die wartende Runde und lehnt dann die Anfrage ab. dsh zeigt die Notiz im Chat als deine Nachricht. Solange das Notizfeld offen ist, zeigt die Karte nur **Abbrechen** und **Ablehnen**, sodass ein Klick die Anfrage nicht aus Versehen zulassen kann. `Esc` oder **Abbrechen** bringt die Schaltflächen von dsh zurück. Eine leere Notiz sendet nichts (nutze die eigene Schaltfläche **Ablehnen** von dsh). Schlägt die Ablehnung fehl, nachdem die Notiz gesendet wurde (zum Beispiel, weil die Anfrage inzwischen an anderer Stelle beantwortet wurde), bleibt die Notiz im Chat, und das Modell liest sie bei seinem nächsten Schritt. Die Schaltfläche kommt in das Markup der Genehmigungskarte von dsh (`data-approval-key`), weil dsh keinen Platz für Aktionen der Karte hat. Ändert ein dsh-Update dieses Markup, erscheint die Schaltfläche nicht, und die eigene Schaltfläche **Ablehnen** von dsh funktioniert wie zuvor. Eine Notiz kann höchstens 4.000 Zeichen haben.
|
|
240
241
|
- **Geheime Eingabe** verbirgt nur den genauen Text eines Werts: `[secret]` ersetzt ihn in den späteren Tool-Ergebnissen desselben Chats. Der Agent kann die Datei trotzdem mit einem Shell-Befehl lesen und den Wert in anderer Form ausgeben (base64, ein Teil davon, mit Leerzeichen), und diese Form erreicht das Modell. Die eigenen Datei-Tools des Agenten (read, grep, write, edit) können den Geheimnis-Ordner nicht öffnen. Ist der Wert auch ein häufiges Wort, zeigen andere Ergebnisse dieses Chats ebenfalls `[secret]`. Die Datei bleibt bis zum Ende des Durchgangs; beendet sich dsh währenddessen, löscht der nächste Start sie. Ein Chat kann jeweils nur eine offene Anfrage haben. Das Tool fügt jeder Modellanfrage etwa 870 Zeichen hinzu (geschätzt etwa 220 Tokens): Schalte es aus, wenn du es nicht nutzt.
|
|
241
242
|
- **In Antwort zitieren** zitiert den Text so, wie die Seite ihn zeigt: Ein Codeblock, eine Tabelle oder eine Liste kommt als einfache Zeilen, ohne Markdown-Zeichen. Eine Markierung, die in einer Antwort beginnt und in einer anderen endet oder das Nachdenken, eine Tool-Zeile oder deine eigene Nachricht berührt, zeigt keine Schaltfläche: Markiere innerhalb einer Antwort. Die Schaltfläche findet die Antwort über die Chatstruktur von dsh, weil dsh keinen Slot für eine Textmarkierung hat; ändert ein dsh-Update diese Struktur, erscheint die Schaltfläche nicht. Steht das Zitat am Ende des Felds, folgt eine weitere leere Zeile, damit die nächste getippte Zeile darunter beginnt; dsh entfernt leere Zeilen am Ende beim Senden.
|
|
@@ -245,7 +246,7 @@ Getestet mit dsh `0.2.0-rc.2` (Desktop und Web) und `0.2.1-rc.2` (Web). Die CI f
|
|
|
245
246
|
- **Fokus im Eingabefeld behalten** gibt den Fokus nur nach einem `/`-Befehl oder Skill zurück. Während dsh den Befehl auflöst, bleibt das Eingabefeld einige Millisekunden lang schreibgeschützt. Tasten, die du in dieser Zeit drückst, gehen verloren. Wenn das `/`-Menü von dsh noch offen ist, wählt `Enter` die markierte Zeile und sendet nicht.
|
|
246
247
|
- **Fragekarte an das Fenster anpassen** ändert nur die Fragekarte von dsh, nicht die Karte zur Planprüfung. Sie findet die Karte über das Markup von dsh (`data-question-key`, `data-question-scroll`); ändert ein dsh-Update dieses Markup, erscheint die Karte so, wie dsh sie zeichnet. Die Höhe der Karte folgt dem Fenster, nicht dem Chat: In einem Chat in einem schmalen Seitenbereich kann eine hohe Karte noch über den Chat hinausragen.
|
|
247
248
|
- **Chat-Kopfzeile an Fenster anpassen** findet die Chat-Kopfzeile von dsh über ihre generierten Klassennamen (`_titleRow`, `_titleCluster`, `_crumbs`, `_headerActions`, `_headerUtilities`), weil dsh dafür keinen Layout-Haken bietet. Benennt ein dsh-Update sie um, erscheint die Kopfzeile so, wie dsh sie zeichnet. In einer sehr schmalen Chat-Spalte kann die Kopfzeile zwei oder drei Zeilen belegen, sodass über den Nachrichten weniger Platz bleibt.
|
|
248
|
-
- **Mobile Verbindung** funktioniert nur unter macOS (sie nutzt `en0`, `openssl`, `swift` und `dns-sd`). Sie nutzt die festen Ports 19390 und 19391. Daher kann auf jedem Mac nur ein dsh sie gleichzeitig ausführen (jeder Mac ist ein Eintrag in der Mac-Liste des Telefons).
|
|
249
|
+
- **Mobile Verbindung** funktioniert nur unter macOS (sie nutzt `en0`, `openssl`, `swift` und `dns-sd`). Sie nutzt die festen Ports 19390 und 19391. Daher kann auf jedem Mac nur ein dsh sie gleichzeitig ausführen (jeder Mac ist ein Eintrag in der Mac-Liste des Telefons). Mit einem APNs-Schlüssel in `apns.json` (siehe `tether/README.md`) sendet der Mac die Benachrichtigungen über Apples Push-Dienst, sodass sie auch bei geschlossenem Tether ankommen; der Mac muss wach sein und dsh offen. Ohne den Schlüssel bekommt das Telefon sie nur, solange Tether offen ist oder gerade in den Hintergrund gewechselt ist. Tether sendet sie erst, wenn du in Tether „Settings → Notifications → Send notifications“ einschaltest. Tether speichert den Schalter und seine Uhrzeiten für jeden gekoppelten Mac getrennt. Der Schalter ist auf jedem Mac standardmäßig aus, und iOS fragt beim Einschalten nach der Erlaubnis. Die iOS-App ist noch nicht im App Store: Baue sie mit Xcode aus `tether/ios`. „Tailscale only“ braucht trotzdem eine WLAN- oder Ethernet-Adresse auf dem Mac (das Gateway startet nur mit einer solchen Adresse). Das Zugriffsprotokoll gilt pro Mac und speichert nur die neuesten 200 Versuche. Ein wiederholter Versuch innerhalb einer Minute zählt dieselbe Zeile um eins hoch. Jede Mitteilung zeigt den Mac und das Projekt des Chats (`Studio Mac · recipe-box`), den Titel des Chats und den Text: Turn finished zeigt die letzte Antwort des Agenten. Mit dem APNs-Schlüssel geht dieser Text über Apples Push-Dienst. Die App-Sperre von Tether blendet Mitteilungsvorschauen auf dem Sperrbildschirm des iPhone nicht aus: Schalte sie in den iOS-Einstellungen aus. Die grünen Punkte in Tether folgen dem Mac: Ein Chat, den du in dsh öffnest, verliert seinen Punkt auch auf dem Telefon. Ein Chat, den du in Tether öffnest, verliert seinen Punkt nur auf den Telefonen. Der eigene Punkt von dsh auf dem Mac bleibt, bis du den Chat dort öffnest.
|
|
249
250
|
- **Remote-Computer** braucht Tailscale auf beiden Macs und Composer Plus mit eingeschalteter Funktion auf dem Mac, den du öffnest. Dieser Mac muss wach sein, und dsh muss dort laufen. Der andere Computer öffnet sich im Browser-Tab der rechten Seitenleiste des Chats, der gerade zu sehen ist. Der Tab gehört zu diesem Chat, deshalb zeigt ein anderer Chat seine eigene Seitenleiste. Ohne Chat (oder in dsh web ohne Browser-Tab) öffnet sich der Computer in einem Browserfenster. Die Auswahl erscheint nur, wenn ein Chat oder der Bildschirm für einen neuen Chat im Hauptbereich ist, nicht auf der Aufgabentafel. Die Funktion nutzt Port 19392 (nur ein dsh pro Mac kann andere Computer hereinlassen). Ein Computer, den du in der Seite eines anderen Computers geöffnet hast, hat keine Auswahl. Von dort kannst du also keinen dritten Mac öffnen.
|
|
250
251
|
- Ein Sitzungslink funktioniert in Chats; ein Klick darauf öffnet den Chat nicht. Ein mit **Nachrichtenlink kopieren** erstellter Link öffnet seine Nachricht nur ab dsh 0.2.1 und nur aus einer Nachricht in einem Chat (dsh 0.2.0 hat keine Regeln für Benutzertext, dort wird der Link kopiert, erscheint aber als einfacher Text). Eine Nachricht, die ein Zurücknehmen entfernt hat oder die die Komprimierung aus dem Verlauf entfernt hat, den dsh lädt, kann nicht angezeigt werden: Der Link sagt das dann. Die 🔗-Schaltflächen hängen sich an die Nachrichtenzeilen von dsh. Wenn ein dsh-Update dieses Markup ändert, erscheinen sie nicht.
|
|
251
252
|
- **Alle als gelesen markieren** ändert die eigenen Ungelesen-Punkte von dsh über einen Teil von dsh, der keine öffentliche API ist (die Liste `completionUnread` im Sitzungsstatus von dsh). Wenn ein dsh-Update sie umbenennt, erscheint der Eintrag nicht. Der Eintrag kommt in das „…“-Menü des Projekts in dsh, das keinen Platz für Plugins hat. Wenn dsh dieses Menü ändert, erscheint der Eintrag ebenfalls nicht.
|
|
@@ -423,7 +424,7 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-agentbox-ideas.mjs /path
|
|
|
423
424
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-t3code-ideas.mjs /path/to/dsh/lib/bin.js
|
|
424
425
|
# every Settings feature row shows a loading screenshot and a ? link to its README row
|
|
425
426
|
PLAYWRIGHT=/path/to/playwright node test/browser-settings-shots.mjs /path/to/dsh/lib/bin.js
|
|
426
|
-
# What's new after an update: the release notes show once, Esc and Close close them
|
|
427
|
+
# What's new after an update: the release notes show once (also after an install through another path), Esc and Close close them; Settings → What’s new in this version opens them again
|
|
427
428
|
PLAYWRIGHT=/path/to/playwright node test/browser-whats-new.mjs /path/to/dsh/lib/bin.js
|
|
428
429
|
# README feature anchors (the ? links) on github.com, headless: each #feature-… shows the start of its row
|
|
429
430
|
PLAYWRIGHT=/path/to/playwright node test/browser-readme-anchors.mjs
|
package/README.es.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
Después, reinicia dsh. (La CLI no puede instalar en el perfil de escritorio: de eso se encarga la app).
|
|
31
31
|
|
|
32
|
-
> El pnpm de dsh omite las versiones publicadas hace menos de 24 horas. Justo después de una versión nueva, añade la versión: `dsh-composer-plus@1.
|
|
32
|
+
> El pnpm de dsh omite las versiones publicadas hace menos de 24 horas. Justo después de una versión nueva, añade la versión: `dsh-composer-plus@1.22.0`.
|
|
33
33
|
|
|
34
34
|
## Funciones
|
|
35
35
|
|
|
@@ -100,7 +100,7 @@ Después, reinicia dsh. (La CLI no puede instalar en el perfil de escritorio: de
|
|
|
100
100
|
| **Idioma de la aplicación** | <a id="feature-language"></a>Configuración → Composer Plus → **Idioma de la aplicación** cambia toda la interfaz de dsh a Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt o हिन्दी (consulta más abajo). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="Captura: Idioma de la aplicación"></a> |
|
|
101
101
|
| **Conexión móvil (iPhone)** | <a id="feature-mobileconnect"></a>Usa dsh desde tu iPhone con la app [Tether](tether/), en la misma red Wi-Fi o a través de [Tailscale](https://tailscale.com). Actívala en **Configuración → Composer Plus** (está desactivada de forma predeterminada, porque abre un puerto de red en este Mac). Después haz clic en **Conexión móvil**, abajo a la izquierda de la barra lateral: escanea el código QR con la Cámara del iPhone (toca **Open in Tether**) o con **Scan code** en Tether, toca **Connect** y haz clic en **Approve**. Primero instala Tether: sin la app, la Cámara no puede abrir el código. El teléfono muestra tus chats, envía mensajes (con fotos: el **+** del editor → Camera, Photos o Paste image), responde aprobaciones y preguntas, y cambia de modelo y de agente. Empareja todos los Mac que quieras: el nombre del Mac, arriba a la izquierda en la app, te permite cambiar entre ellos. El panel **Conexión móvil** muestra los iPhone emparejados con su última conexión: **Remove** desconecta uno al instante. “Tailscale only” rechaza la red local (para una red Wi-Fi compartida), y el registro de accesos muestra quién intentó conectarse. En Tether, “Settings → Privacy” bloquea la app con Face ID. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Captura: Conexión móvil (iPhone)"></a> |
|
|
102
102
|
| **Equipos remotos** | <a id="feature-remotecomputers"></a>Abre el dsh de tus otros Mac a través de [Tailscale](https://tailscale.com) y continúa sus chats aquí. Actívala en **Configuración → Composer Plus** en cada Mac (está desactivada de forma predeterminada, porque abre puertos de red). En el Mac que quieres abrir, activa **Permitir que otros equipos abran este Mac**, haz clic en **Crear enlace de emparejamiento** y copia el enlace. En este Mac, elige **Añadir un equipo…** en el selector de equipos, a la izquierda del título del chat, pega el enlace y haz clic en **Conectar**. Después haz clic en **Aprobar** en el otro Mac. Desde entonces, el selector muestra **Este Mac** y tus equipos: elige uno y su dsh se abre en la pestaña Navegador de la barra lateral derecha (o en una ventana del navegador), con sus propios chats, herramientas y archivos. El panel de Configuración cambia el nombre de los equipos y los quita, y muestra los equipos que pueden abrir este Mac (**Quitar** desconecta uno al instante). | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="Captura: Equipos remotos"></a> |
|
|
103
|
-
| **Actualizaciones automáticas** | <a id="feature-autoupdate"></a>Al iniciar dsh, el plugin consulta la [última versión publicada en GitHub](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Si es más reciente y ya está en npm, instala esa versión exacta con el gestor de plugins propio de dsh (el mismo camino que Configuración → Plugins) y te avisa. Reinicia dsh para cargarla. **Configuración → Composer Plus → Actualizaciones de Composer Plus** muestra la versión y tiene los botones **Buscar actualizaciones** / **Actualizar ahora**. La primera vez que dsh se inicia con la nueva versión, una ventana **Novedades de Composer Plus N** muestra una vez las notas de esa versión en el idioma de **Idioma de la aplicación** (llegan con la nueva versión, sin otra llamada de red; un idioma sin notas muestra las notas en inglés); **Cerrar** o `Esc` la cierra. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Captura: Actualizaciones automáticas"></a> |
|
|
103
|
+
| **Actualizaciones automáticas** | <a id="feature-autoupdate"></a>Al iniciar dsh, el plugin consulta la [última versión publicada en GitHub](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Si es más reciente y ya está en npm, instala esa versión exacta con el gestor de plugins propio de dsh (el mismo camino que Configuración → Plugins) y te avisa. Reinicia dsh para cargarla. **Configuración → Composer Plus → Actualizaciones de Composer Plus** muestra la versión y tiene los botones **Buscar actualizaciones** / **Actualizar ahora**. La primera vez que dsh se inicia con la nueva versión, una ventana **Novedades de Composer Plus N** muestra una vez las notas de esa versión en el idioma de **Idioma de la aplicación** (llegan con la nueva versión, sin otra llamada de red; un idioma sin notas muestra las notas en inglés); **Cerrar** o `Esc` la cierra. La ventana también aparece tras una actualización desde Configuración → Plugins o una carpeta copiada, una vez por versión nueva; no en la primera instalación. **Novedades de esta versión** en la fila de actualizaciones la abre de nuevo. Si en el disco hay una versión más reciente que la que se ejecuta, la fila pide reiniciar dsh. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Captura: Actualizaciones automáticas"></a> |
|
|
104
104
|
| **Copia de seguridad** | <a id="feature-backup"></a>Configuración → Composer Plus → **Copia de seguridad** → **Hacer copia ahora** guarda todo tu directorio home de dsh (chats, ajustes, plugins, MCP, skills) en un único archivo comprimido en `~/Desktop/dsh-backups`, con una suma de comprobación. Los secretos se ocultan en el archivo comprimido: los archivos de credenciales, los archivos de claves (`.pem`, `.key`) y los valores token, secret y password de los ajustes yml se quedan solo en este equipo, en el `vault` de la carpeta. `cache/`, `dsh-runtimes/` y `node_modules` no entran en el archivo comprimido (dsh los vuelve a crear). Cada copia de seguridad de la lista tiene **Comprobar** (la lee completa), **Para otro equipo** (una carpeta para copiar al equipo nuevo, con la consola de rescate) y **Eliminar**. Los archivos comprimidos de dsh-backup en la misma carpeta también aparecen y funcionan. Para restaurar, sal de dsh y usa la consola de rescate. | <a href="assets/features/backup.webp"><img src="assets/features/backup.webp" width="160" alt="Captura: Copia de seguridad"></a> |
|
|
105
105
|
| **Copia de seguridad automática** | <a id="feature-autobackup"></a>Activa **Copia de seguridad automática** (desactivada de forma predeterminada: cada copia ocupa más o menos lo mismo que tu directorio home de dsh sin su caché). Elige la frecuencia (**Cada**: de 6 horas a 7 días, 24 horas de forma predeterminada) y cuántas copias de seguridad se conservan (**Conservar**: de 3 a 14, 7 de forma predeterminada). La hora de la próxima copia aparece bajo el interruptor; una copia fallida también aparece allí y se vuelve a intentar 30 minutos después. Cuando dsh o Composer Plus se inicia con una versión nueva, se toma una instantánea poco después del inicio, antes de que la versión nueva haya usado tus datos mucho tiempo (se conservan las dos más recientes, marcadas como **Antes de una actualización**). | <a href="assets/features/autoBackup.webp"><img src="assets/features/autoBackup.webp" width="160" alt="Captura: Copia de seguridad automática"></a> |
|
|
106
106
|
| **Comprobación de registros de sesión** | <a id="feature-sessiondoctor"></a>**Comprobar registros de sesión** lee el registro de cada chat y muestra los que dsh no puede abrir (un bloque roto, una entrada cortada, un número de secuencia incorrecto). Un final incompleto no aparece en la lista: dsh lo repara por sí mismo. **Reparar desde copias de seguridad** vuelve a poner la copia de la copia de seguridad más reciente que tenga una versión sana y guarda el archivo dañado a su lado (`.corrupt-<hora>`). Los mensajes escritos después de esa copia de seguridad no están en la copia. Un chat abierto en este dsh no se repara aquí: sal de dsh y repáralo en la consola de rescate. | <a href="assets/features/sessionDoctor.webp"><img src="assets/features/sessionDoctor.webp" width="160" alt="Captura: Comprobación de registros de sesión"></a> |
|
|
@@ -215,7 +215,7 @@ Probado en dsh `0.2.0-rc.2` (escritorio y web) y `0.2.1-rc.2` (web). La CI ejecu
|
|
|
215
215
|
- **No hay etiqueta de rama en una fila de chat:** la barra lateral no está en «En una sola lista» (en «Espacio de trabajo» y «Árbol de espacios de trabajo», ninguna fila de chat muestra una etiqueta), el chat no tuvo ningún turno desde que instalaste esta versión, su carpeta no es un repositorio git o **Rama de Git en las filas de chat** está desactivada. Después de una actualización, reinicia dsh (la parte Host registra la rama).
|
|
216
216
|
- **Comprobación del objetivo dice que la prueba terminó con el código 127 o «not found»:** dsh iniciado desde el Finder o el Dock puede tener un PATH más corto que tu terminal, así que no encuentra `npm`, `pnpm` ni `cargo`. Inicia dsh desde una terminal, o define tu propio comando de prueba con la ruta completa en **Comprobación del objetivo** → **Editar**. **Ejecutar ahora** muestra el resultado al momento.
|
|
217
217
|
- **El objetivo no se cierra y el agente sigue trabajando:** **Comprobación del objetivo** encontró una prueba fallida o trabajo pendiente; la fila bajo el objetivo muestra el motivo (pasa el puntero por el resultado para ver los detalles). Corrige la causa o el comando de prueba, o completa el objetivo tú mismo con `/goal` o con la barra del objetivo (eso no se comprueba).
|
|
218
|
-
- **La instalación falla justo después de una versión nueva:** añade la versión (`dsh-composer-plus@1.
|
|
218
|
+
- **La instalación falla justo después de una versión nueva:** añade la versión (`dsh-composer-plus@1.22.0`); consulta la nota de instalación de más arriba.
|
|
219
219
|
- **Hacer copia ahora dice «Ya hay otra acción de copia de seguridad en curso»:** hay una acción en marcha en otra ventana de dsh o en la consola de rescate (comparten un archivo de bloqueo, `.composer-plus.lock`, en la carpeta de copias de seguridad). Espera a que termine. Si no hay ninguna acción en marcha, el siguiente clic toma el bloqueo de un proceso cerrado.
|
|
220
220
|
- **La consola de rescate dice «dsh is running»:** primero sal de dsh. Si dsh está realmente cerrado, el archivo que nombra el mensaje quedó de un cierre inesperado: elimínalo y vuelve a intentarlo.
|
|
221
221
|
- **Después de una restauración, dsh no se inicia o falta un plugin:** hay que volver a instalar los paquetes de plugins de un perfil. La consola de rescate lo ofrece después de una restauración; o ejecuta `pnpm install` en cada carpeta de `$DSH_HOME/profiles/` que indique. Los secretos que no estaban en el vault (otro equipo) hay que introducirlos de nuevo: la consola los enumera.
|
|
@@ -236,6 +236,7 @@ Probado en dsh `0.2.0-rc.2` (escritorio y web) y `0.2.1-rc.2` (web). La CI ejecu
|
|
|
236
236
|
- La cola de dsh no tiene una acción `move`, así que la parte Host del plugin mueve el propio mensaje dentro de la cola de dsh (un solo cambio, el mismo mensaje). Los mensajes con imágenes o archivos también se mueven. Solo se mueven tus propios mensajes: una ronda de un objetivo o una respuesta a una pregunta en la cola se queda donde está. Si un mensaje empieza a enviarse mientras arrastras, no se mueve nada y un aviso lo indica.
|
|
237
237
|
- dsh 0.2.1 carga una actualización de inmediato cuando la nueva versión no cambia ningún ajuste de dsh; en caso contrario, y en dsh 0.2.0, reinicia dsh para cargarla. El plugin nunca reinicia dsh por ti. Los perfiles web/CLI sin el gestor de plugins de dsh solo avisan de que hay una versión nueva.
|
|
238
238
|
- **Novedades de Composer Plus N** muestra las notas en el idioma de **Idioma de la aplicación**. Un idioma de interfaz con otra región recibe las notas de su idioma base (`en-GB` recibe las notas en inglés y `zh-TW`, las notas en chino de `zh`). Un idioma sin notas (uno que añade otro paquete de idioma, o `pt-PT`, que no es `pt-BR`) muestra las notas en inglés. Las notas llegan con la nueva versión. Si la copia en ejecución no tiene un archivo de notas legible (`release-notes.json`), la ventana muestra las notas en inglés de GitHub.
|
|
239
|
+
- Una versión que se instala mientras dsh se ejecuta (una actualización desde Configuración → Plugins o una carpeta copiada) se carga solo tras reiniciar dsh: hasta entonces, **Actualizaciones de Composer Plus** muestra la versión en ejecución y pide reiniciar. Su ventana **Novedades de Composer Plus N** aparece una vez en el primer inicio de esa versión. El primer inicio después de instalar este plugin no muestra ninguna ventana; **Novedades de esta versión** abre las notas de la versión en ejecución.
|
|
239
240
|
- **Rechazar con nota** envía la nota como un mensaje dentro del turno que espera y después rechaza la solicitud; dsh muestra la nota en el chat como un mensaje tuyo. Mientras el campo de la nota está abierto, la tarjeta muestra solo **Cancelar** y **Rechazar**, así que un clic no puede permitir la solicitud por error; `Esc` o **Cancelar** devuelve los botones de dsh. Una nota vacía no envía nada (usa el propio **Rechazar** de dsh). Si el rechazo falla después de enviar la nota (por ejemplo, porque mientras tanto la solicitud se respondió en otro lugar), la nota se queda en el chat y el modelo la lee en su siguiente paso. El botón va en el marcado de la tarjeta de aprobación de dsh (`data-approval-key`), porque dsh no tiene un espacio para acciones de la tarjeta; si una actualización de dsh cambia ese marcado, el botón no aparece y el propio **Rechazar** de dsh funciona como antes. Una nota puede tener como máximo 4.000 caracteres.
|
|
240
241
|
- **Entrada secreta** oculta solo el texto exacto de un valor: `[secret]` lo reemplaza en los resultados de herramienta posteriores del mismo chat. El agente aún puede leer el archivo con un comando de shell e imprimir el valor de otra forma (base64, una parte, con espacios), y esa forma llega al modelo. Las herramientas de archivos del propio agente (read, grep, write, edit) no pueden abrir la carpeta de secretos. Si el valor también es una palabra común, otros resultados de ese chat también muestran `[secret]`. El archivo se mantiene hasta que termina el turno; si dsh se cierra durante el turno, el siguiente inicio lo borra. Un chat puede tener una sola solicitud abierta a la vez. La herramienta añade unos 870 caracteres (unos 220 tokens, estimado) a cada solicitud al modelo: desactívala si no la usas.
|
|
241
242
|
- **Citar en la respuesta** cita el texto tal como lo muestra la página: un bloque de código, una tabla o una lista llegan como líneas simples, sin sus marcas de Markdown. Una selección que empieza en una respuesta y termina en otra, o que toca el razonamiento, una fila de herramienta o tu propio mensaje, no muestra el botón: selecciona dentro de una sola respuesta. El botón encuentra la respuesta por la estructura del chat de dsh, porque dsh no tiene un slot para la selección de texto; si una actualización de dsh cambia esa estructura, el botón no aparece. Cuando la cita queda al final del campo, se añade una línea vacía más para que la siguiente línea que escribas empiece debajo; dsh quita las líneas vacías del final al enviar.
|
|
@@ -245,7 +246,7 @@ Probado en dsh `0.2.0-rc.2` (escritorio y web) y `0.2.1-rc.2` (web). La CI ejecu
|
|
|
245
246
|
- **Mantener el foco en el editor** solo devuelve el foco después de un comando `/` o una skill. Mientras dsh resuelve el comando, el editor queda en solo lectura unos milisegundos, así que las teclas que pulses en ese tiempo se pierden. Si el menú `/` de dsh sigue abierto, `Enter` elige la fila resaltada y no envía.
|
|
246
247
|
- **Ajustar la tarjeta de pregunta a la ventana** cambia solo la tarjeta de pregunta de dsh, no la tarjeta de revisión del plan. Encuentra la tarjeta por el marcado de dsh (`data-question-key`, `data-question-scroll`); si una actualización de dsh cambia ese marcado, la tarjeta se ve como la dibuja dsh. La altura de la tarjeta sigue a la ventana, no al chat: en un chat dentro de un panel lateral estrecho, una tarjeta alta puede sobresalir por encima del chat.
|
|
247
248
|
- **Ajustar la cabecera del chat a la ventana** encuentra la cabecera del chat de dsh por sus nombres de clase generados (`_titleRow`, `_titleCluster`, `_crumbs`, `_headerActions`, `_headerUtilities`), porque dsh no ofrece un punto de enganche para su diseño. Si una actualización de dsh los cambia, la cabecera se muestra como la dibuja dsh. En una columna de chat muy estrecha la cabecera puede ocupar dos o tres líneas, así que queda menos espacio sobre los mensajes.
|
|
248
|
-
- **Conexión móvil** solo funciona en macOS (usa `en0`, `openssl`, `swift` y `dns-sd`). Usa los puertos fijos 19390 y 19391, así que solo un dsh por Mac puede ejecutarla a la vez (cada Mac es una entrada en la lista de Mac del teléfono).
|
|
249
|
+
- **Conexión móvil** solo funciona en macOS (usa `en0`, `openssl`, `swift` y `dns-sd`). Usa los puertos fijos 19390 y 19391, así que solo un dsh por Mac puede ejecutarla a la vez (cada Mac es una entrada en la lista de Mac del teléfono). Con una clave APNs en `apns.json` (consulta `tether/README.md`), el Mac envía las notificaciones mediante el servicio push de Apple, así que llegan también con Tether cerrada; el Mac debe estar activo y con dsh abierto. Sin la clave, el teléfono solo las recibe mientras Tether está abierta o acaba de pasar a segundo plano. Tether solo las envía después de que actives «Settings → Notifications → Send notifications» en Tether. Tether guarda esta opción y su horario por separado para cada Mac emparejado. Está desactivada de forma predeterminada en cada Mac, e iOS pide el permiso cuando la activas. La app de iOS aún no está en la App Store: compílala desde `tether/ios` con Xcode. «Tailscale only» sigue necesitando una dirección Wi-Fi o Ethernet en el Mac (la pasarela solo se inicia con una). El registro de accesos es propio de cada Mac y solo guarda los 200 intentos más recientes; un intento repetido en menos de un minuto suma uno a la misma fila. Cada notificación muestra el Mac y el proyecto del chat (`Studio Mac · recipe-box`), el título del chat y el texto: Turn finished muestra la última respuesta del agente. Con la clave de APNs, este texto pasa por el servicio push de Apple. El bloqueo de la app Tether no oculta las vistas previas de las notificaciones en la pantalla bloqueada del iPhone: desactívalas en Ajustes de iOS. Los puntos verdes de Tether siguen al Mac: un chat que abres en dsh también pierde su punto en el teléfono. Un chat que abres en Tether pierde su punto solo en los teléfonos. El punto propio de dsh en el Mac se queda hasta que abres el chat allí.
|
|
249
250
|
- **Equipos remotos** necesita Tailscale en los dos Mac, y Composer Plus con esta función activada en el Mac que abres. Ese Mac no debe estar en reposo, y dsh debe estar en ejecución en él. El otro equipo se abre en la pestaña Navegador de la barra lateral derecha del chat que está en pantalla. La pestaña pertenece a ese chat, así que otro chat muestra su propia barra lateral. Sin un chat (o en dsh web sin su pestaña Navegador), el equipo se abre en una ventana del navegador. El selector solo aparece cuando hay un chat o la pantalla de nuevo chat en el área principal, no en el Tablero de tareas. Usa el puerto 19392 (solo un dsh por Mac puede dejar entrar a otros equipos). Un equipo que abriste dentro de la página de otro equipo no tiene selector, así que desde allí no puedes abrir un tercer Mac.
|
|
250
251
|
- Un enlace de sesión funciona dentro de los chats; hacer clic en él no abre el chat. Un enlace creado con **Copiar enlace del mensaje** abre su mensaje solo en dsh 0.2.1 y posteriores, y solo desde un mensaje de un chat (dsh 0.2.0 no tiene reglas de texto de usuario, así que allí el enlace se copia, pero se muestra como texto normal). Un mensaje que una reversión quitó, o que la compactación eliminó del historial que carga dsh, no se puede mostrar: el enlace lo indica. Los botones 🔗 se enganchan a las filas de mensajes de dsh; si una actualización de dsh cambia ese marcado, no aparecen.
|
|
251
252
|
- **Marcar todo como leído** cambia los puntos de no leído propios de dsh mediante una parte de dsh que no es una API pública (la lista `completionUnread` del estado de sesión de dsh). Si una actualización de dsh le cambia el nombre, el elemento no aparece. El elemento va en el menú «…» del proyecto de dsh, que no tiene un espacio para plugins; si dsh cambia ese menú, el elemento tampoco aparece.
|
|
@@ -423,7 +424,7 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-agentbox-ideas.mjs /path
|
|
|
423
424
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-t3code-ideas.mjs /path/to/dsh/lib/bin.js
|
|
424
425
|
# every Settings feature row shows a loading screenshot and a ? link to its README row
|
|
425
426
|
PLAYWRIGHT=/path/to/playwright node test/browser-settings-shots.mjs /path/to/dsh/lib/bin.js
|
|
426
|
-
# What's new after an update: the release notes show once, Esc and Close close them
|
|
427
|
+
# What's new after an update: the release notes show once (also after an install through another path), Esc and Close close them; Settings → What’s new in this version opens them again
|
|
427
428
|
PLAYWRIGHT=/path/to/playwright node test/browser-whats-new.mjs /path/to/dsh/lib/bin.js
|
|
428
429
|
# README feature anchors (the ? links) on github.com, headless: each #feature-… shows the start of its row
|
|
429
430
|
PLAYWRIGHT=/path/to/playwright node test/browser-readme-anchors.mjs
|
package/README.fr.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
Redémarrez ensuite dsh. (La CLI ne peut pas installer dans le profil de bureau ; c’est l’app qui le gère.)
|
|
31
31
|
|
|
32
|
-
> Le pnpm de dsh ignore les versions publiées depuis moins de 24 heures. Juste après une nouvelle version, ajoutez le numéro de version : `dsh-composer-plus@1.
|
|
32
|
+
> Le pnpm de dsh ignore les versions publiées depuis moins de 24 heures. Juste après une nouvelle version, ajoutez le numéro de version : `dsh-composer-plus@1.22.0`.
|
|
33
33
|
|
|
34
34
|
## Fonctionnalités
|
|
35
35
|
|
|
@@ -100,7 +100,7 @@ Redémarrez ensuite dsh. (La CLI ne peut pas installer dans le profil de bureau
|
|
|
100
100
|
| **Langue de l’application** | <a id="feature-language"></a>Réglages → Composer Plus → **Langue de l’application** passe toute l’interface de dsh en Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt ou हिन्दी (voir ci-dessous). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="Capture d’écran : Langue de l’application"></a> |
|
|
101
101
|
| **Connexion mobile (iPhone)** | <a id="feature-mobileconnect"></a>Utilisez dsh depuis votre iPhone avec l’app [Tether](tether/), sur le même réseau Wi-Fi ou via [Tailscale](https://tailscale.com). Activez-la dans **Réglages → Composer Plus** (elle est désactivée par défaut, car elle ouvre un port réseau sur ce Mac). Cliquez ensuite sur **Connexion mobile** en bas à gauche de la barre latérale : scannez le code QR avec l’app Appareil photo de l’iPhone (touchez **Open in Tether**) ou avec **Scan code** dans Tether, touchez **Connect** et cliquez sur **Approve**. Installez d’abord Tether : sans elle, l’app Appareil photo ne peut pas ouvrir le code. Le téléphone affiche vos discussions, envoie des messages (avec des photos : le **+** de la zone de saisie → Camera, Photos ou Paste image), répond aux approbations et aux questions, et change de modèle et d’agent. Appairez autant de Mac que vous voulez : le nom du Mac, en haut à gauche de l’app, permet de passer de l’un à l’autre. Le panneau **Connexion mobile** liste les iPhone appairés avec leur dernière connexion : **Remove** en déconnecte un tout de suite. « Tailscale only » refuse le réseau local (pour un Wi-Fi partagé), et le journal d’accès montre qui a essayé de se connecter. Dans Tether, « Settings → Privacy » verrouille l’app avec Face ID. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Capture d’écran : Connexion mobile (iPhone)"></a> |
|
|
102
102
|
| **Ordinateurs distants** | <a id="feature-remotecomputers"></a>Ouvrez le dsh de vos autres Mac via [Tailscale](https://tailscale.com) et poursuivez leurs discussions ici. Activez la fonction dans **Réglages → Composer Plus** sur chaque Mac (elle est désactivée par défaut, car elle ouvre des ports réseau). Sur le Mac que vous voulez ouvrir, activez **Autoriser d’autres ordinateurs à ouvrir ce Mac**, cliquez sur **Créer un lien d’appairage** et copiez le lien. Sur ce Mac, choisissez **Ajouter un ordinateur…** dans le sélecteur d’ordinateurs, à gauche du titre de la discussion, collez le lien et cliquez sur **Connecter**. Cliquez ensuite sur **Approuver** sur l’autre Mac. Le sélecteur liste alors **Ce Mac** et vos ordinateurs : choisissez-en un, et son dsh s’ouvre dans l’onglet Navigateur de la barre latérale droite (ou dans une fenêtre du navigateur), avec ses propres discussions, outils et fichiers. Le panneau des réglages renomme et supprime les ordinateurs, et liste les ordinateurs qui peuvent ouvrir ce Mac (**Supprimer** en déconnecte un tout de suite). | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="Capture d’écran : Ordinateurs distants"></a> |
|
|
103
|
-
| **Mises à jour automatiques** | <a id="feature-autoupdate"></a>Au démarrage de dsh, le plugin vérifie la [dernière version sur GitHub](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Si elle est plus récente et déjà sur npm, il installe exactement cette version avec le gestionnaire de plugins de dsh (le même chemin que Réglages → Plugins) et vous avertit. Redémarrez dsh pour la charger. **Réglages → Composer Plus → Mises à jour de Composer Plus** affiche la version et propose **Rechercher des mises à jour** / **Mettre à jour**. Au premier démarrage de dsh avec la nouvelle version, une fenêtre **Nouveautés de Composer Plus N** affiche une fois les notes de cette version dans la langue de **Langue de l’application** (elles arrivent avec la nouvelle version, sans autre appel réseau ; une langue sans notes affiche les notes en anglais) ; **Fermer** ou `Esc` la ferme. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Capture d’écran : Mises à jour automatiques"></a> |
|
|
103
|
+
| **Mises à jour automatiques** | <a id="feature-autoupdate"></a>Au démarrage de dsh, le plugin vérifie la [dernière version sur GitHub](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Si elle est plus récente et déjà sur npm, il installe exactement cette version avec le gestionnaire de plugins de dsh (le même chemin que Réglages → Plugins) et vous avertit. Redémarrez dsh pour la charger. **Réglages → Composer Plus → Mises à jour de Composer Plus** affiche la version et propose **Rechercher des mises à jour** / **Mettre à jour**. Au premier démarrage de dsh avec la nouvelle version, une fenêtre **Nouveautés de Composer Plus N** affiche une fois les notes de cette version dans la langue de **Langue de l’application** (elles arrivent avec la nouvelle version, sans autre appel réseau ; une langue sans notes affiche les notes en anglais) ; **Fermer** ou `Esc` la ferme. La fenêtre s’affiche aussi après une mise à jour par Réglages → Plugins ou par un dossier copié, une fois par nouvelle version ; pas à la première installation. **Nouveautés de cette version** dans la ligne des mises à jour la rouvre. Si le disque contient une version plus récente que celle qui tourne, la ligne demande de redémarrer dsh. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Capture d’écran : Mises à jour automatiques"></a> |
|
|
104
104
|
| **Sauvegarde** | <a id="feature-backup"></a>Réglages → Composer Plus → **Sauvegarde** → **Sauvegarder maintenant** écrit tout votre dossier personnel de dsh (discussions, réglages, plugins, MCP, compétences) dans une seule archive dans `~/Desktop/dsh-backups`, avec une somme de contrôle. Les secrets sont masqués dans l’archive : les fichiers d’identifiants, les fichiers de clés (`.pem`, `.key`) et les valeurs token, secret et password des réglages yml restent uniquement sur cet ordinateur, dans le `vault` du dossier. `cache/`, `dsh-runtimes/` et `node_modules` ne vont pas dans l’archive (dsh les recrée). Chaque sauvegarde de la liste a **Vérifier** (la lit entièrement), **Pour un autre ordinateur** (un dossier à copier sur le nouvel ordinateur, avec la console de secours) et **Supprimer**. Les archives de dsh-backup dans le même dossier s’affichent et fonctionnent aussi. Pour restaurer, quittez dsh et utilisez la console de secours. | <a href="assets/features/backup.webp"><img src="assets/features/backup.webp" width="160" alt="Capture d’écran : Sauvegarde"></a> |
|
|
105
105
|
| **Sauvegarde automatique** | <a id="feature-autobackup"></a>Activez **Sauvegarde automatique** (désactivée par défaut : chaque copie est à peu près aussi grande que votre dossier personnel de dsh sans son cache). Choisissez la fréquence (**Toutes les** : de 6 heures à 7 jours, 24 heures par défaut) et le nombre de sauvegardes conservées (**Conserver** : de 3 à 14, 7 par défaut). L’heure de la prochaine sauvegarde s’affiche sous l’interrupteur ; une sauvegarde qui a échoué s’y affiche aussi et est relancée 30 minutes plus tard. Quand dsh ou Composer Plus démarre avec une nouvelle version, un instantané est pris peu après le démarrage, avant que la nouvelle version ait longtemps utilisé vos données (les deux plus récents restent, marqués **Avant une mise à niveau**). | <a href="assets/features/autoBackup.webp"><img src="assets/features/autoBackup.webp" width="160" alt="Capture d’écran : Sauvegarde automatique"></a> |
|
|
106
106
|
| **Vérification des journaux de session** | <a id="feature-sessiondoctor"></a>**Vérifier les journaux de session** lit le journal de chaque discussion et liste ceux que dsh ne peut pas ouvrir (une trame cassée, un enregistrement coupé, un mauvais numéro de séquence). Une fin incomplète n’est pas listée : dsh la répare lui-même. **Réparer depuis les sauvegardes** remet la copie de la sauvegarde la plus récente qui en contient une saine et garde le fichier endommagé à côté (`.corrupt-<heure>`). Les messages écrits après cette sauvegarde ne sont pas dans la copie. Une discussion ouverte dans ce dsh n’est pas réparée ici : quittez dsh et réparez-la dans la console de secours. | <a href="assets/features/sessionDoctor.webp"><img src="assets/features/sessionDoctor.webp" width="160" alt="Capture d’écran : Vérification des journaux de session"></a> |
|
|
@@ -215,7 +215,7 @@ Testé sur dsh `0.2.0-rc.2` (bureau et web) et `0.2.1-rc.2` (web). La CI exécut
|
|
|
215
215
|
- **Pas de pastille de branche sur une ligne de discussion :** la barre latérale n’est pas en « Dans une seule liste » (dans « Espace de travail » et « Arborescence des espaces de travail », aucune ligne de discussion n’affiche de pastille), la discussion n’a eu aucun tour depuis que vous avez installé cette version, son dossier n’est pas un dépôt git, ou **Branche Git sur les lignes de discussion** est désactivée. Après une mise à jour, redémarrez dsh (la partie hôte enregistre la branche).
|
|
216
216
|
- **Vérification de l’objectif indique que le test s’est terminé avec le code 127 ou « not found » :** dsh démarré depuis le Finder ou le Dock peut avoir un PATH plus court que votre terminal : il ne trouve donc pas `npm`, `pnpm` ou `cargo`. Démarrez dsh depuis un terminal, ou définissez votre propre commande de test avec le chemin complet sous **Vérification de l’objectif** → **Modifier**. **Lancer maintenant** affiche le résultat tout de suite.
|
|
217
217
|
- **L’objectif ne se ferme pas et l’agent continue de travailler :** **Vérification de l’objectif** a trouvé un test en échec ou du travail manquant ; la ligne sous l’objectif indique pourquoi (survolez le résultat pour voir les détails). Corrigez la cause ou la commande de test, ou terminez l’objectif vous-même avec `/goal` ou la barre de l’objectif (ce n’est pas vérifié).
|
|
218
|
-
- **L’installation échoue juste après une nouvelle version :** ajoutez la version (`dsh-composer-plus@1.
|
|
218
|
+
- **L’installation échoue juste après une nouvelle version :** ajoutez la version (`dsh-composer-plus@1.22.0`) ; voir la note d’installation plus haut.
|
|
219
219
|
- **Sauvegarder maintenant indique « Une autre action de sauvegarde est en cours » :** une action tourne dans une autre fenêtre de dsh ou dans la console de secours (elles partagent un fichier de verrou, `.composer-plus.lock`, dans le dossier de sauvegarde). Attendez qu’elle se termine. Si aucune action ne tourne, le verrou d’un processus fermé est repris au clic suivant.
|
|
220
220
|
- **La console de secours indique « dsh is running » :** quittez d’abord dsh. Si dsh est vraiment fermé, le fichier nommé dans le message reste d’un plantage : supprimez-le et réessayez.
|
|
221
221
|
- **Après une restauration, dsh ne démarre pas ou un plugin manque :** les paquets de plugins d’un profil doivent être réinstallés. La console de secours le propose après une restauration ; sinon, exécutez `pnpm install` dans chaque dossier sous `$DSH_HOME/profiles/` qu’elle liste. Les secrets qui n’étaient pas dans le vault (autre ordinateur) doivent être saisis de nouveau : la console les liste.
|
|
@@ -236,6 +236,7 @@ Testé sur dsh `0.2.0-rc.2` (bureau et web) et `0.2.1-rc.2` (web). La CI exécut
|
|
|
236
236
|
- La file d’attente de dsh n’a pas d’action `move` : la partie hôte du plugin déplace donc le message lui-même dans la file d’attente de dsh (une seule modification, le même message). Les messages avec des images ou des fichiers se déplacent aussi. Seuls vos propres messages se déplacent : une itération d’objectif ou une réponse à une question dans la file reste à sa place. Si l’envoi d’un message commence pendant que vous faites glisser, rien n’est déplacé et un avis le signale.
|
|
237
237
|
- dsh 0.2.1 charge une mise à jour immédiatement quand la nouvelle version ne modifie aucun réglage de dsh ; sinon, et sur dsh 0.2.0, redémarrez dsh pour la charger. Le plugin ne redémarre jamais dsh à votre place. Les profils web/CLI sans le gestionnaire de plugins de dsh signalent seulement qu’une nouvelle version existe.
|
|
238
238
|
- **Nouveautés de Composer Plus N** affiche les notes dans la langue de **Langue de l’application**. Une langue d’interface avec une autre région reçoit les notes de sa langue de base (`en-GB` reçoit les notes en anglais, `zh-TW` les notes en chinois de `zh`). Une langue sans notes (ajoutée par un autre pack de langue, ou `pt-PT`, qui n’est pas `pt-BR`) affiche les notes en anglais. Les notes arrivent avec la nouvelle version. Si la copie en cours n’a pas de fichier de notes lisible (`release-notes.json`), la fenêtre affiche les notes en anglais de GitHub.
|
|
239
|
+
- Une version installée pendant que dsh tourne (une mise à jour par Réglages → Plugins ou par un dossier copié) ne se charge qu’après un redémarrage de dsh : jusque-là, **Mises à jour de Composer Plus** affiche la version en cours et demande un redémarrage. Sa fenêtre **Nouveautés de Composer Plus N** s’affiche une fois au premier démarrage de cette version. Le premier démarrage après l’installation de ce plugin n’affiche aucune fenêtre ; **Nouveautés de cette version** ouvre les notes de la version en cours.
|
|
239
240
|
- **Refuser avec une note** envoie la note comme un message dans le tour en attente, puis refuse la demande ; dsh affiche la note dans la discussion comme votre message. Tant que le champ de la note est ouvert, la carte n’affiche que **Annuler** et **Refuser** : un clic ne peut donc pas autoriser la demande par erreur ; `Esc` ou **Annuler** fait revenir les boutons de dsh. Une note vide n’envoie rien (utilisez le propre bouton **Refuser** de dsh). Si le refus échoue après l’envoi de la note (par exemple, la demande a reçu une réponse ailleurs entre-temps), la note reste dans la discussion et le modèle la lit à sa prochaine étape. Le bouton va dans le balisage de la carte d’approbation de dsh (`data-approval-key`), car dsh n’a pas d’emplacement pour les actions de la carte ; si une mise à jour de dsh change ce balisage, le bouton ne s’affiche pas et le propre bouton **Refuser** de dsh fonctionne comme avant. Une note peut avoir au plus 4 000 caractères.
|
|
240
241
|
- **Saisie secrète** masque seulement le texte exact d’une valeur : `[secret]` la remplace dans les résultats d’outil suivants de la même discussion. L’agent peut quand même lire le fichier avec une commande shell et afficher la valeur sous une autre forme (base64, une partie, avec des espaces), et cette forme atteint le modèle. Les outils de fichiers de l’agent (read, grep, write, edit) ne peuvent pas ouvrir le dossier des secrets. Si la valeur est aussi un mot courant, d’autres résultats de cette discussion affichent aussi `[secret]`. Le fichier reste jusqu’à la fin du tour ; si dsh se ferme pendant le tour, le démarrage suivant le supprime. Une discussion peut avoir une seule demande ouverte à la fois. L’outil ajoute environ 870 caractères (environ 220 jetons, estimation) à chaque requête au modèle : désactivez-le quand vous ne l’utilisez pas.
|
|
241
242
|
- **Citer dans la réponse** cite le texte tel que la page l’affiche : un bloc de code, un tableau ou une liste arrivent en lignes simples, sans leurs marques Markdown. Une sélection qui commence dans une réponse et finit dans une autre, ou qui touche le raisonnement, une ligne d’outil ou votre propre message, n’affiche pas le bouton : sélectionnez dans une seule réponse. Le bouton trouve la réponse par la structure de discussion de dsh, car dsh n’a pas de slot pour une sélection de texte ; si une mise à jour de dsh change cette structure, le bouton ne s’affiche pas. Quand la citation termine le champ, une ligne vide de plus suit pour que la ligne suivante commence en dessous ; dsh retire les lignes vides de la fin à l’envoi.
|
|
@@ -245,7 +246,7 @@ Testé sur dsh `0.2.0-rc.2` (bureau et web) et `0.2.1-rc.2` (web). La CI exécut
|
|
|
245
246
|
- **Garder le focus dans la zone de saisie** ne rend le focus qu’après une commande `/` ou une compétence. Pendant que dsh résout la commande, la zone de saisie reste en lecture seule pendant quelques millisecondes : les touches tapées pendant ce temps sont perdues. Si le menu `/` de dsh est encore ouvert, `Enter` choisit la ligne en surbrillance et n’envoie pas le message.
|
|
246
247
|
- **Adapter la carte de question à la fenêtre** ne modifie que la carte de question de dsh, pas la carte de revue du plan. Elle trouve la carte grâce au balisage de dsh (`data-question-key`, `data-question-scroll`) ; si une mise à jour de dsh change ce balisage, la carte s’affiche comme dsh la dessine. La hauteur de la carte suit la fenêtre, pas la conversation : dans une conversation affichée dans un panneau latéral étroit, une carte haute peut encore dépasser le haut de la conversation.
|
|
247
248
|
- **Adapter l’en-tête de la conversation à la fenêtre** trouve l’en-tête de la conversation de dsh par ses noms de classe générés (`_titleRow`, `_titleCluster`, `_crumbs`, `_headerActions`, `_headerUtilities`), car dsh n’offre pas de point d’accroche pour sa mise en page. Si une mise à jour de dsh les renomme, l’en-tête s’affiche comme dsh le dessine. Dans une colonne de conversation très étroite, l’en-tête peut prendre deux ou trois lignes, et la zone au-dessus des messages devient plus basse.
|
|
248
|
-
- **Connexion mobile** ne fonctionne que sur macOS (elle utilise `en0`, `openssl`, `swift` et `dns-sd`). Elle utilise les ports fixes 19390 et 19391 : un seul dsh par Mac peut donc l’exécuter à la fois (chaque Mac est une entrée dans la liste des Mac du téléphone).
|
|
249
|
+
- **Connexion mobile** ne fonctionne que sur macOS (elle utilise `en0`, `openssl`, `swift` et `dns-sd`). Elle utilise les ports fixes 19390 et 19391 : un seul dsh par Mac peut donc l’exécuter à la fois (chaque Mac est une entrée dans la liste des Mac du téléphone). Avec une clé APNs dans `apns.json` (voir `tether/README.md`), le Mac envoie les notifications par le service push d'Apple : elles arrivent aussi quand Tether est fermé ; le Mac doit être éveillé avec dsh ouvert. Sans la clé, le téléphone ne les reçoit que lorsque Tether est ouvert ou vient de passer en arrière-plan. Tether ne les envoie qu’après que vous avez activé « Settings → Notifications → Send notifications » dans Tether. Tether garde cette option et sa plage horaire séparément pour chaque Mac appairé. Elle est désactivée par défaut sur chaque Mac, et iOS demande l’autorisation quand vous l’activez. L’app iOS n’est pas encore sur l’App Store : compilez-la depuis `tether/ios` avec Xcode. « Tailscale only » demande quand même une adresse Wi-Fi ou Ethernet sur le Mac (la passerelle ne démarre qu’avec une telle adresse). Le journal d’accès est propre à chaque Mac et ne garde que les 200 tentatives les plus récentes ; une tentative répétée en moins d’une minute augmente de un le compteur de la même ligne. Chaque notification indique le Mac et le projet du chat (`Studio Mac · recipe-box`), le titre du chat et le texte : Turn finished affiche la dernière réponse de l’agent. Avec la clé APNs, ce texte passe par le service push d’Apple. Le verrouillage de Tether ne masque pas les aperçus des notifications sur l’écran verrouillé de l’iPhone : désactivez-les dans les Réglages d’iOS. Les points verts de Tether suivent le Mac : une conversation que vous ouvrez dans dsh perd aussi son point sur le téléphone. Une conversation que vous ouvrez dans Tether perd son point seulement sur les téléphones. Le point de dsh sur le Mac reste jusqu’à ce que vous ouvriez la conversation sur le Mac.
|
|
249
250
|
- **Ordinateurs distants** a besoin de Tailscale sur les deux Mac, et de Composer Plus avec cette fonction activée sur le Mac que vous ouvrez. Ce Mac doit être éveillé, avec dsh en cours d’exécution. L’autre ordinateur s’ouvre dans l’onglet Navigateur de la barre latérale droite de la discussion à l’écran. L’onglet appartient à cette discussion : une autre discussion affiche donc sa propre barre latérale. Sans discussion (ou dans dsh web sans son onglet Navigateur), l’ordinateur s’ouvre dans une fenêtre du navigateur. Le sélecteur n’apparaît que si une discussion ou l’écran de nouvelle discussion occupe la zone principale, pas sur le Tableau des tâches. La fonction utilise le port 19392 (un seul dsh par Mac peut laisser entrer d’autres ordinateurs). Un ordinateur que vous avez ouvert dans la page d’un autre ordinateur n’a pas de sélecteur : vous ne pouvez donc pas ouvrir un troisième Mac depuis cette page.
|
|
250
251
|
- Un lien de session fonctionne dans les discussions ; un clic dessus n’ouvre pas la discussion. Un lien créé avec **Copier le lien du message** n’ouvre son message que sur dsh 0.2.1 et versions ultérieures, et seulement depuis un message dans une discussion (dsh 0.2.0 n’a pas de règles de texte utilisateur : le lien y est copié, mais s’affiche comme texte simple). Un message qu’une annulation a retiré, ou que la compaction a enlevé de l’historique que dsh charge, ne peut pas être affiché : le lien le dit alors. Les boutons 🔗 s’attachent aux lignes de message de dsh ; si une mise à jour de dsh change ce balisage, ils ne s’affichent pas.
|
|
251
252
|
- **Tout marquer comme lu** change les points non lus de dsh lui-même par une partie de dsh qui n’est pas une API publique (la liste `completionUnread` de l’état des sessions de dsh). Si une mise à jour de dsh la renomme, l’élément ne s’affiche pas. L’élément va dans le menu « … » du projet de dsh, qui n’a pas d’emplacement pour les plugins ; si dsh change ce menu, l’élément ne s’affiche pas non plus.
|
|
@@ -423,7 +424,7 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-agentbox-ideas.mjs /path
|
|
|
423
424
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-t3code-ideas.mjs /path/to/dsh/lib/bin.js
|
|
424
425
|
# every Settings feature row shows a loading screenshot and a ? link to its README row
|
|
425
426
|
PLAYWRIGHT=/path/to/playwright node test/browser-settings-shots.mjs /path/to/dsh/lib/bin.js
|
|
426
|
-
# What's new after an update: the release notes show once, Esc and Close close them
|
|
427
|
+
# What's new after an update: the release notes show once (also after an install through another path), Esc and Close close them; Settings → What’s new in this version opens them again
|
|
427
428
|
PLAYWRIGHT=/path/to/playwright node test/browser-whats-new.mjs /path/to/dsh/lib/bin.js
|
|
428
429
|
# README feature anchors (the ? links) on github.com, headless: each #feature-… shows the start of its row
|
|
429
430
|
PLAYWRIGHT=/path/to/playwright node test/browser-readme-anchors.mjs
|
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.22.0`।
|
|
33
33
|
|
|
34
34
|
## सुविधाएं
|
|
35
35
|
|
|
@@ -100,7 +100,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
100
100
|
| **ऐप्लिकेशन की भाषा** | <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> |
|
|
101
101
|
| **मोबाइल कनेक्ट (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> |
|
|
102
102
|
| **रिमोट कंप्यूटर** | <a id="feature-remotecomputers"></a>[Tailscale](https://tailscale.com) के ज़रिए अपने दूसरे Mac का dsh खोलें और उनकी चैट यहीं जारी रखें। इसे हर Mac पर **सेटिंग → Composer Plus** में चालू करें (यह डिफ़ॉल्ट रूप से बंद रहता है, क्योंकि यह नेटवर्क पोर्ट खोलता है)। जिस Mac को आप खोलना चाहते हैं, उस पर **दूसरे कंप्यूटर को यह Mac खोलने दें** चालू करें, **पेयरिंग लिंक बनाएं** पर क्लिक करें और लिंक कॉपी करें। इस Mac पर चैट के शीर्षक के बाईं ओर कंप्यूटर पिकर में **कंप्यूटर जोड़ें…** चुनें, लिंक पेस्ट करें और **कनेक्ट करें** पर क्लिक करें। फिर दूसरे Mac पर **मंज़ूर करें** पर क्लिक करें। इसके बाद पिकर में **यह Mac** और आपके कंप्यूटर दिखते हैं: किसी एक को चुनें, तो उसका dsh दाएं साइडबार के ब्राउज़र टैब में (या ब्राउज़र विंडो में) खुलता है, उसकी अपनी चैट, टूल और फ़ाइलों के साथ। सेटिंग पैनल में आप कंप्यूटर का नाम बदल सकते हैं और उन्हें हटा सकते हैं। यह पैनल उन कंप्यूटर की सूची भी दिखाता है जो यह Mac खोल सकते हैं (**हटाएं** किसी एक को तुरंत डिस्कनेक्ट कर देता है)। | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="स्क्रीनशॉट: रिमोट कंप्यूटर"></a> |
|
|
103
|
-
| **अपने-आप अपडेट** | <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` से यह बंद होती है। | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="स्क्रीनशॉट: अपने-आप अपडेट"></a> |
|
|
103
|
+
| **अपने-आप अपडेट** | <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` से यह बंद होती है। सेटिंग → प्लगइन या कॉपी किए गए फ़ोल्डर से अपडेट करने के बाद भी यह विंडो हर नए वर्शन पर एक बार दिखती है; पहली बार इंस्टॉल करने पर नहीं। अपडेट वाली पंक्ति में **इस वर्शन में नया क्या है** इसे फिर से खोलता है। जब डिस्क पर चल रहे वर्शन से नया वर्शन हो, तो पंक्ति dsh को रीस्टार्ट करने को कहती है। | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="स्क्रीनशॉट: अपने-आप अपडेट"></a> |
|
|
104
104
|
| **बैकअप** | <a id="feature-backup"></a>सेटिंग → Composer Plus → **बैकअप** → **अभी बैकअप लें** आपके पूरे dsh होम (चैट, सेटिंग, प्लगइन, MCP, Skills) को चेकसम के साथ `~/Desktop/dsh-backups` में एक आर्काइव में लिखता है। आर्काइव में सीक्रेट मास्क किए जाते हैं: क्रेडेंशियल फ़ाइलें, की फ़ाइलें (`.pem`, `.key`) और yml सेटिंग के token, secret और password मान सिर्फ़ इसी कंप्यूटर पर, फ़ोल्डर के `vault` में रहते हैं। `cache/`, `dsh-runtimes/` और `node_modules` आर्काइव में नहीं जाते (dsh उन्हें फिर से बनाता है)। सूची के हर बैकअप में **जांचें** (उसे पूरा पढ़ता है), **दूसरे कंप्यूटर के लिए** (नए कंप्यूटर पर कॉपी करने के लिए एक फ़ोल्डर, रेस्क्यू कंसोल के साथ) और **हटाएं** हैं। उसी फ़ोल्डर में dsh-backup के आर्काइव भी दिखते हैं और काम करते हैं। बहाल करने के लिए dsh बंद करें और रेस्क्यू कंसोल का उपयोग करें। | <a href="assets/features/backup.webp"><img src="assets/features/backup.webp" width="160" alt="स्क्रीनशॉट: बैकअप"></a> |
|
|
105
105
|
| **अपने-आप बैकअप** | <a id="feature-autobackup"></a>**अपने-आप बैकअप** चालू करें (डिफ़ॉल्ट रूप से बंद: हर कॉपी लगभग उतनी बड़ी होती है जितना कैश के बिना आपका dsh होम)। चुनें कि बैकअप कितनी बार हो (**हर**: 6 घंटे से 7 दिन, डिफ़ॉल्ट 24 घंटे) और कितने बैकअप रखे जाएं (**रखें**: 3 से 14, डिफ़ॉल्ट 7)। अगला समय स्विच के नीचे दिखता है; विफल बैकअप भी वहीं दिखता है और 30 मिनट बाद फिर से आज़माया जाता है। जब dsh या Composer Plus नए वर्शन के साथ शुरू होता है, तो शुरू होने के कुछ ही देर बाद, नए वर्शन के आपके डेटा का लंबे समय तक उपयोग करने से पहले, एक स्नैपशॉट लिया जाता है (सबसे नए दो रखे जाते हैं, **अपग्रेड से पहले** के निशान के साथ)। | <a href="assets/features/autoBackup.webp"><img src="assets/features/autoBackup.webp" width="160" alt="स्क्रीनशॉट: अपने-आप बैकअप"></a> |
|
|
106
106
|
| **सेशन लॉग जांच** | <a id="feature-sessiondoctor"></a>**सेशन लॉग जांचें** हर चैट का लॉग पढ़ता है और उन लॉग की सूची दिखाता है जिन्हें dsh नहीं खोल सकता (टूटा फ़्रेम, कटा हुआ रिकॉर्ड, गलत क्रम संख्या)। अधूरा आखिरी हिस्सा सूची में नहीं आता: dsh उसे खुद ठीक करता है। **बैकअप से ठीक करें** उस सबसे नए बैकअप से कॉपी वापस रखता है जिसमें सही कॉपी है, और खराब फ़ाइल को उसके बगल में रखता है (`.corrupt-<समय>`)। उस बैकअप के बाद लिखे गए संदेश कॉपी में नहीं होते। इस dsh में खुली चैट यहां ठीक नहीं की जाती: dsh बंद करें और उसे रेस्क्यू कंसोल में ठीक करें। | <a href="assets/features/sessionDoctor.webp"><img src="assets/features/sessionDoctor.webp" width="160" alt="स्क्रीनशॉट: सेशन लॉग जांच"></a> |
|
|
@@ -215,7 +215,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
215
215
|
- **चैट पंक्ति पर ब्रांच लेबल नहीं है:** साइडबार “एक ही सूची में” व्यू में नहीं है (“वर्कस्पेस” और “वर्कस्पेस ट्री” में किसी भी चैट पंक्ति पर लेबल नहीं दिखता), यह वर्शन इंस्टॉल करने के बाद से उस चैट में कोई टर्न नहीं हुआ, उसका फ़ोल्डर git रिपॉज़िटरी नहीं है, या **चैट पंक्तियों पर Git ब्रांच** बंद है। अपडेट के बाद dsh रीस्टार्ट करें (ब्रांच Host वाला हिस्सा दर्ज करता है)।
|
|
216
216
|
- **लक्ष्य जांच बताती है कि टेस्ट कोड 127 या "not found" के साथ बंद हुआ:** Finder या Dock से शुरू किए गए dsh का PATH आपके टर्मिनल से छोटा हो सकता है, इसलिए उसे `npm`, `pnpm` या `cargo` नहीं मिलता। dsh को टर्मिनल से शुरू करें, या **लक्ष्य जांच** → **संपादित करें** में पूरे पाथ के साथ अपनी टेस्ट कमांड सेट करें। **अभी चलाएं** नतीजा तुरंत दिखाता है।
|
|
217
217
|
- **लक्ष्य बंद नहीं होता और एजेंट काम करता रहता है:** **लक्ष्य जांच** को कोई विफल टेस्ट या अधूरा काम मिला; लक्ष्य के नीचे की पंक्ति वजह दिखाती है (ब्योरा देखने के लिए नतीजे पर पॉइंटर ले जाएं)। वजह या टेस्ट कमांड ठीक करें, या `/goal` या लक्ष्य बार से लक्ष्य खुद पूरा करें (उसकी जांच नहीं होती)।
|
|
218
|
-
- **रिलीज़ के तुरंत बाद इंस्टॉल विफल होता है:** वर्शन जोड़ें (`dsh-composer-plus@1.
|
|
218
|
+
- **रिलीज़ के तुरंत बाद इंस्टॉल विफल होता है:** वर्शन जोड़ें (`dsh-composer-plus@1.22.0`), ऊपर इंस्टॉल वाला नोट देखें।
|
|
219
219
|
- **अभी बैकअप लें कहता है "बैकअप की दूसरी कार्रवाई चल रही है":** किसी दूसरी dsh विंडो में या रेस्क्यू कंसोल में कोई कार्रवाई चल रही है (दोनों बैकअप फ़ोल्डर में एक लॉक फ़ाइल, `.composer-plus.lock`, साझा करते हैं)। उसके पूरा होने का इंतज़ार करें। अगर कोई कार्रवाई नहीं चल रही, तो अगली क्लिक पर बंद हो चुकी प्रोसेस का लॉक ले लिया जाता है।
|
|
220
220
|
- **रेस्क्यू कंसोल कहता है "dsh is running":** पहले dsh बंद करें। अगर dsh सच में बंद है, तो संदेश में बताई गई फ़ाइल किसी क्रैश के बाद बची रह गई है: उसे हटाएं और फिर से कोशिश करें।
|
|
221
221
|
- **बहाली के बाद dsh शुरू नहीं होता या कोई प्लगइन नहीं है:** किसी प्रोफ़ाइल के प्लगइन पैकेज फिर से इंस्टॉल करने होंगे। बहाली के बाद रेस्क्यू कंसोल यह करने का विकल्प देता है; या `$DSH_HOME/profiles/` के नीचे के हर उस फ़ोल्डर में `pnpm install` चलाएं, जिसकी सूची वह दिखाता है। जो सीक्रेट vault में नहीं थे (दूसरा कंप्यूटर), उन्हें फिर से डालना होगा: कंसोल उनकी सूची दिखाता है।
|
|
@@ -236,6 +236,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
236
236
|
- dsh की कतार में `move` कार्रवाई नहीं है, इसलिए प्लगइन का Host वाला हिस्सा कतार वाले संदेश को ही dsh की कतार में खिसकाता है (एक बदलाव, वही संदेश)। इमेज या फ़ाइलों वाले संदेश भी खिसकते हैं। सिर्फ़ आपके अपने संदेश खिसकते हैं: कतार में कोई लक्ष्य राउंड या किसी सवाल का जवाब अपनी जगह पर रहता है। अगर आपके खींचते समय कोई संदेश भेजा जाना शुरू हो जाता है, तो कुछ नहीं खिसकता और एक सूचना यह बताती है।
|
|
237
237
|
- अगर नया वर्शन dsh की कोई सेटिंग नहीं बदलता, तो dsh 0.2.1 अपडेट तुरंत लोड करता है; बाकी मामलों में, और dsh 0.2.0 पर, इसे लोड करने के लिए dsh रीस्टार्ट करें। प्लगइन आपके लिए dsh कभी रीस्टार्ट नहीं करता। जिन वेब/CLI प्रोफ़ाइल में dsh का प्लगइन मैनेजर नहीं है, वे सिर्फ़ नए वर्शन की जानकारी देती हैं।
|
|
238
238
|
- **Composer Plus N में नया क्या है** नोट्स को **ऐप्लिकेशन की भाषा** की भाषा में दिखाता है। किसी दूसरे क्षेत्र वाली UI भाषा को उसकी मूल भाषा के नोट्स मिलते हैं (`en-GB` को अंग्रेज़ी नोट्स, `zh-TW` को `zh` के चीनी नोट्स)। जिस भाषा के नोट्स नहीं हैं (जिसे कोई दूसरा भाषा पैक जोड़ता है, या `pt-PT`, जो `pt-BR` नहीं है), उसमें अंग्रेज़ी नोट्स दिखते हैं। नोट्स नए वर्शन के साथ आते हैं। अगर चल रही कॉपी में पढ़ने लायक नोट्स फ़ाइल (`release-notes.json`) नहीं है, तो विंडो GitHub के अंग्रेज़ी नोट्स दिखाती है।
|
|
239
|
+
- dsh चलते समय इंस्टॉल हुआ वर्शन (सेटिंग → प्लगइन या कॉपी किए गए फ़ोल्डर से अपडेट) dsh को रीस्टार्ट करने के बाद ही लोड होता है: तब तक **Composer Plus अपडेट** चल रहा वर्शन दिखाता है और रीस्टार्ट करने को कहता है। उस वर्शन की **Composer Plus N में नया क्या है** विंडो उस वर्शन की पहली शुरुआत पर एक बार दिखती है। इस प्लगइन को पहली बार इंस्टॉल करने के बाद की पहली शुरुआत पर विंडो नहीं दिखती; **इस वर्शन में नया क्या है** चल रहे वर्शन के नोट्स खोलता है।
|
|
239
240
|
- **नोट के साथ अस्वीकार करें** नोट को इंतज़ार कर रहे टर्न में एक संदेश के रूप में भेजता है, फिर अनुरोध अस्वीकार करता है; dsh नोट को चैट में आपके संदेश के रूप में दिखाता है। जब नोट फ़ील्ड खुली रहती है, तब कार्ड पर सिर्फ़ **रद्द करें** और **अस्वीकार करें** दिखते हैं, इसलिए कोई क्लिक गलती से अनुरोध को अनुमति नहीं दे सकता; `Esc` या **रद्द करें** से dsh के बटन वापस आ जाते हैं। खाली नोट कुछ नहीं भेजता (dsh का अपना **अस्वीकार करें** इस्तेमाल करें)। अगर नोट जाने के बाद अस्वीकार करना विफल होता है (उदाहरण के लिए, इस बीच अनुरोध का जवाब कहीं और दे दिया गया), तो नोट चैट में रहता है और मॉडल उसे अपने अगले कदम पर पढ़ता है। बटन dsh के मंज़ूरी कार्ड के मार्कअप (`data-approval-key`) में जाता है, क्योंकि dsh में कार्ड की कार्रवाइयों के लिए कोई जगह (slot) नहीं है; अगर dsh का कोई अपडेट वह मार्कअप बदलता है, तो बटन नहीं दिखता और dsh का अपना **अस्वीकार करें** पहले की तरह काम करता है। एक नोट में ज़्यादा से ज़्यादा 4,000 अक्षर हो सकते हैं।
|
|
240
241
|
- **सीक्रेट इनपुट** मान के केवल सटीक टेक्स्ट को छिपाता है: उसी चैट के बाद के टूल परिणामों में उसकी जगह `[secret]` आता है। फिर भी एजेंट शेल कमांड से फ़ाइल पढ़कर मान को किसी दूसरे रूप में (base64, उसका एक हिस्सा, बीच में स्पेस के साथ) प्रिंट कर सकता है, और वह रूप मॉडल तक पहुँचता है। एजेंट के अपने फ़ाइल टूल (read, grep, write, edit) सीक्रेट फ़ोल्डर नहीं खोल सकते। अगर मान कोई आम शब्द भी है, तो उस चैट के दूसरे परिणामों में भी `[secret]` दिखता है। फ़ाइल टर्न खत्म होने तक रहती है; अगर टर्न के बीच dsh बंद हो जाए, तो अगली शुरुआत उसे हटा देती है। एक चैट में एक समय में केवल एक खुला अनुरोध हो सकता है। यह टूल हर मॉडल अनुरोध में लगभग 870 अक्षर (अनुमानित लगभग 220 टोकन) जोड़ता है: उपयोग न करें तो इसे बंद करें।
|
|
241
242
|
- **जवाब में उद्धरण** टेक्स्ट को वैसे ही उद्धृत करता है जैसा पेज दिखाता है: कोड ब्लॉक, तालिका या सूची बिना Markdown चिह्नों के सादी पंक्तियों के रूप में आती है। अगर चुनाव एक जवाब में शुरू होकर दूसरे में खत्म होता है, या सोच, किसी टूल पंक्ति या आपके अपने संदेश को छूता है, तो बटन नहीं दिखता: एक ही जवाब के अंदर चुनें। dsh में टेक्स्ट चुनाव के लिए कोई स्लॉट नहीं है, इसलिए बटन dsh की चैट संरचना से जवाब ढूंढता है; अगर dsh अपडेट यह संरचना बदल दे, तो बटन नहीं दिखेगा। जब उद्धरण फ़ील्ड के अंत में आता है, तो उसके बाद एक और खाली पंक्ति जुड़ती है, ताकि आपकी अगली पंक्ति उसके नीचे शुरू हो; भेजते समय dsh अंत की खाली पंक्तियां हटा देता है।
|
|
@@ -245,7 +246,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
245
246
|
- **कंपोज़र में फ़ोकस बनाए रखें** सिर्फ़ `/` कमांड या स्किल के बाद फ़ोकस वापस देता है। जब तक dsh कमांड प्रोसेस करता है, कंपोज़र कुछ मिलीसेकंड तक सिर्फ़ पढ़ने लायक रहता है, इसलिए उस समय दबाई गई कुंजियां खो जाती हैं। अगर dsh का `/` मेन्यू अभी भी खुला है, तो `Enter` हाइलाइट की गई पंक्ति चुनता है और कुछ नहीं भेजता।
|
|
246
247
|
- **प्रश्न कार्ड को विंडो में फ़िट करें** केवल dsh का प्रश्न कार्ड बदलता है, योजना समीक्षा कार्ड नहीं। यह कार्ड को dsh के मार्कअप (`data-question-key`, `data-question-scroll`) से ढूंढता है; अगर कोई dsh अपडेट यह मार्कअप बदलता है, तो कार्ड वैसा ही दिखता है जैसा dsh उसे बनाता है। कार्ड की ऊंचाई चैट के बजाय विंडो के अनुसार चलती है: किसी संकरे साइड पैनल की चैट में, ऊंचा कार्ड अब भी चैट के ऊपर तक जा सकता है।
|
|
247
248
|
- **चैट हेडर को विंडो में फ़िट करें** dsh के चैट हेडर को dsh के बनाए क्लास नामों (`_titleRow`, `_titleCluster`, `_crumbs`, `_headerActions`, `_headerUtilities`) से ढूंढता है, क्योंकि dsh इसके लेआउट के लिए कोई हुक नहीं देता। अगर dsh का अपडेट ये नाम बदल दे, तो हेडर वैसा ही दिखता है जैसा dsh बनाता है। बहुत संकरे चैट कॉलम में हेडर दो या तीन पंक्तियां ले सकता है, इसलिए संदेशों के ऊपर की जगह कम हो जाती है।
|
|
248
|
-
- **मोबाइल कनेक्ट** सिर्फ़ macOS पर काम करता है (यह `en0`, `openssl`, `swift` और `dns-sd` इस्तेमाल करता है)। यह तय पोर्ट 19390 और 19391 इस्तेमाल करता है, इसलिए हर Mac पर एक समय में सिर्फ़ एक dsh इसे चला सकता है (फ़ोन की Mac सूची में हर Mac एक एंट्री है)। फ़ोन को सूचनाएं सिर्फ़ तब मिलती हैं, जब Tether खुला हो या अभी-अभी बैकग्राउंड में गया
|
|
249
|
+
- **मोबाइल कनेक्ट** सिर्फ़ 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 का अपना बिंदु तब तक रहता है, जब तक आप चैट को वहां नहीं खोलते।
|
|
249
250
|
- **रिमोट कंप्यूटर** के लिए दोनों Mac पर Tailscale चाहिए, और जिस Mac को आप खोलते हैं, उस पर Composer Plus और यह फ़ीचर चालू होना चाहिए। वह Mac स्लीप में नहीं होना चाहिए और उस पर dsh चलना चाहिए। दूसरा कंप्यूटर स्क्रीन पर दिख रही चैट के दाएं साइडबार के ब्राउज़र टैब में खुलता है। यह टैब उसी चैट का होता है, इसलिए दूसरी चैट अपना साइडबार दिखाती है। चैट न हो (या ब्राउज़र टैब के बिना dsh web हो), तो कंप्यूटर ब्राउज़र विंडो में खुलता है। पिकर सिर्फ़ तब दिखता है, जब मुख्य हिस्से में कोई चैट या नई चैट की स्क्रीन हो; टास्क बोर्ड पर यह नहीं दिखता। यह पोर्ट 19392 इस्तेमाल करता है (हर Mac पर सिर्फ़ एक dsh दूसरे कंप्यूटर को अंदर आने दे सकता है)। जिस कंप्यूटर को आपने किसी दूसरे कंप्यूटर के पेज के अंदर खोला है, उसमें पिकर नहीं होता, इसलिए वहां से आप तीसरा Mac नहीं खोल सकते।
|
|
250
251
|
- सेशन लिंक चैट के अंदर काम करता है; उस पर क्लिक करने से चैट नहीं खुलती। **संदेश लिंक कॉपी करें** से बना लिंक अपना संदेश सिर्फ़ dsh 0.2.1 और बाद के वर्शन में खोलता है, और सिर्फ़ किसी चैट के संदेश से (dsh 0.2.0 में यूज़र टेक्स्ट के नियम नहीं हैं, इसलिए वहां लिंक कॉपी तो होता है, पर सादे टेक्स्ट की तरह दिखता है)। जो संदेश किसी रोलबैक ने हटाया, या जिसे कॉम्पैक्ट करने से dsh के लोड किए गए इतिहास से हटा दिया गया, वह नहीं दिख सकता: तब लिंक यही बताता है। 🔗 बटन dsh की संदेश पंक्तियों से जुड़ते हैं; अगर dsh का कोई अपडेट वह मार्कअप बदलता है, तो वे नहीं दिखते।
|
|
251
252
|
- **सभी को पढ़ा हुआ मार्क करें** dsh के अपने अपठित बिंदुओं को dsh के ऐसे हिस्से से बदलता है, जो सार्वजनिक API नहीं है (dsh के सेशन स्टेटस की `completionUnread` सूची)। अगर dsh का कोई अपडेट इसका नाम बदलता है, तो आइटम नहीं दिखता। आइटम dsh के प्रोजेक्ट वाले "…" मेन्यू में जाता है, जिसमें प्लगइन के लिए कोई slot नहीं है; अगर dsh वह मेन्यू बदलता है, तो भी आइटम नहीं दिखता।
|
|
@@ -423,7 +424,7 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-agentbox-ideas.mjs /path
|
|
|
423
424
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-t3code-ideas.mjs /path/to/dsh/lib/bin.js
|
|
424
425
|
# every Settings feature row shows a loading screenshot and a ? link to its README row
|
|
425
426
|
PLAYWRIGHT=/path/to/playwright node test/browser-settings-shots.mjs /path/to/dsh/lib/bin.js
|
|
426
|
-
# What's new after an update: the release notes show once, Esc and Close close them
|
|
427
|
+
# What's new after an update: the release notes show once (also after an install through another path), Esc and Close close them; Settings → What’s new in this version opens them again
|
|
427
428
|
PLAYWRIGHT=/path/to/playwright node test/browser-whats-new.mjs /path/to/dsh/lib/bin.js
|
|
428
429
|
# README feature anchors (the ? links) on github.com, headless: each #feature-… shows the start of its row
|
|
429
430
|
PLAYWRIGHT=/path/to/playwright node test/browser-readme-anchors.mjs
|
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.22.0`.
|
|
33
33
|
|
|
34
34
|
## Fitur
|
|
35
35
|
|
|
@@ -100,7 +100,7 @@ Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil
|
|
|
100
100
|
| **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> |
|
|
101
101
|
| **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> |
|
|
102
102
|
| **Komputer jarak jauh** | <a id="feature-remotecomputers"></a>Buka dsh di Mac Anda yang lain melalui [Tailscale](https://tailscale.com) dan lanjutkan obrolannya di sini. 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 di sebelah kiri judul obrolan, tempel tautannya, 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 terbuka di tab Browser pada bilah samping kanan (atau di jendela browser), dengan obrolan, alat, dan file miliknya sendiri. 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> |
|
|
103
|
-
| **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. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Tangkapan layar: Pembaruan otomatis"></a> |
|
|
103
|
+
| **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. 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> |
|
|
104
104
|
| **Pencadangan** | <a id="feature-backup"></a>Pengaturan → Composer Plus → **Pencadangan** → **Cadangkan sekarang** menulis seluruh dsh home Anda (obrolan, pengaturan, plugin, MCP, skill) ke dalam satu arsip di `~/Desktop/dsh-backups`, beserta checksum. Rahasia disamarkan di dalam arsip: file kredensial, file kunci (`.pem`, `.key`), serta nilai token, secret, dan password di pengaturan yml hanya tetap ada di komputer ini, di `vault` folder tersebut. `cache/`, `dsh-runtimes/`, dan `node_modules` tidak masuk ke arsip (dsh membuatnya lagi). Setiap cadangan dalam daftar memiliki **Periksa** (membacanya sampai habis), **Untuk komputer lain** (folder untuk disalin ke komputer baru, beserta konsol penyelamat), dan **Hapus**. Arsip dsh-backup di folder yang sama juga tampil dan dapat dipakai. Untuk memulihkan, keluar dari dsh dan gunakan konsol penyelamat. | <a href="assets/features/backup.webp"><img src="assets/features/backup.webp" width="160" alt="Tangkapan layar: Pencadangan"></a> |
|
|
105
105
|
| **Pencadangan otomatis** | <a id="feature-autobackup"></a>Aktifkan **Pencadangan otomatis** (nonaktif secara default: setiap salinan kira-kira sebesar dsh home Anda tanpa cache-nya). Pilih seberapa sering (**Setiap**: 6 jam sampai 7 hari, default 24 jam) dan berapa banyak cadangan yang disimpan (**Simpan**: 3 sampai 14, default 7). Waktu berikutnya tampil di bawah sakelar; pencadangan yang gagal juga tampil di sana dan dicoba lagi 30 menit kemudian. Saat dsh atau Composer Plus dimulai dengan versi baru, snapshot dibuat segera setelah dimulai, sebelum versi baru lama memakai data Anda (dua yang terbaru disimpan, ditandai **Sebelum peningkatan**). | <a href="assets/features/autoBackup.webp"><img src="assets/features/autoBackup.webp" width="160" alt="Tangkapan layar: Pencadangan otomatis"></a> |
|
|
106
106
|
| **Pemeriksaan log sesi** | <a id="feature-sessiondoctor"></a>**Periksa log sesi** membaca log setiap obrolan dan menampilkan log yang tidak dapat dibuka dsh (frame rusak, catatan terpotong, nomor urut salah). Bagian akhir yang tidak lengkap tidak ditampilkan: dsh memperbaikinya sendiri. **Perbaiki dari cadangan** mengembalikan salinan dari cadangan terbaru yang memiliki salinan sehat, dan menyimpan file yang rusak di sebelahnya (`.corrupt-<waktu>`). Pesan yang ditulis setelah cadangan itu tidak ada di salinan. Obrolan yang terbuka di dsh ini tidak diperbaiki di sini: keluar dari dsh dan perbaiki obrolan itu di konsol penyelamat. | <a href="assets/features/sessionDoctor.webp"><img src="assets/features/sessionDoctor.webp" width="160" alt="Tangkapan layar: Pemeriksaan log sesi"></a> |
|
|
@@ -215,7 +215,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
215
215
|
- **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).
|
|
216
216
|
- **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.
|
|
217
217
|
- **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).
|
|
218
|
-
- **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.
|
|
218
|
+
- **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.22.0`), lihat catatan pemasangan di atas.
|
|
219
219
|
- **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.
|
|
220
220
|
- **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.
|
|
221
221
|
- **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.
|
|
@@ -236,6 +236,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
236
236
|
- Antrean dsh tidak memiliki tindakan `move`, jadi bagian Host plugin memindahkan pesan antrean itu sendiri di dalam antrean dsh (satu perubahan, pesan yang sama). Pesan dengan gambar atau file juga dapat dipindahkan. Hanya pesan Anda sendiri yang dapat dipindahkan: putaran tujuan atau balasan pertanyaan di antrean tetap di tempatnya. Jika sebuah pesan mulai dikirim saat Anda menyeret, tidak ada yang dipindahkan dan muncul pemberitahuan tentang hal itu.
|
|
237
237
|
- dsh 0.2.1 langsung memuat pembaruan jika versi baru tidak mengubah pengaturan dsh apa pun; dalam kasus lain, dan pada dsh 0.2.0, mulai ulang dsh untuk memuatnya. Plugin tidak pernah memulai ulang dsh untuk Anda. Profil web/CLI tanpa pengelola plugin dsh hanya melaporkan adanya versi baru.
|
|
238
238
|
- **Yang baru di Composer Plus N** menampilkan catatan dalam bahasa **Bahasa aplikasi**. Bahasa antarmuka dengan wilayah lain mendapat catatan bahasa dasarnya (`en-GB` mendapat catatan bahasa Inggris, `zh-TW` catatan bahasa Tionghoa dari `zh`). Bahasa tanpa catatan (bahasa yang ditambahkan paket bahasa lain, atau `pt-PT`, yang bukan `pt-BR`) menampilkan catatan bahasa Inggris. Catatan ikut bersama versi baru. Jika salinan yang berjalan tidak memiliki berkas catatan yang dapat dibaca (`release-notes.json`), jendela menampilkan catatan bahasa Inggris dari GitHub.
|
|
239
|
+
- Versi yang terpasang saat dsh berjalan (pembaruan lewat Pengaturan → Plugin atau folder yang disalin) baru dimuat setelah dsh dimulai ulang: sampai saat itu, **Pembaruan Composer Plus** menampilkan versi yang berjalan dan meminta mulai ulang. Jendela **Yang baru di Composer Plus N** versi itu muncul sekali pada awal pertama versi tersebut. Awal pertama setelah plugin ini dipasang tidak menampilkan jendela; **Yang baru di versi ini** membuka catatan versi yang berjalan.
|
|
239
240
|
- **Tolak dengan catatan** mengirim catatan sebagai pesan ke giliran yang menunggu, lalu menolak permintaan; dsh menampilkan catatan itu di obrolan sebagai pesan Anda. Selama kolom catatan terbuka, kartu hanya menampilkan **Batal** dan **Tolak**, jadi satu klik tidak dapat mengizinkan permintaan secara tidak sengaja; `Esc` atau **Batal** mengembalikan tombol-tombol dsh. Catatan kosong tidak mengirim apa pun (gunakan **Tolak** milik dsh sendiri). Jika penolakan gagal setelah catatan terkirim (misalnya, permintaan itu sementara itu sudah dijawab di tempat lain), catatan tetap ada di obrolan dan model membacanya di langkah berikutnya. Tombol ini masuk ke markup kartu persetujuan dsh (`data-approval-key`), karena dsh tidak punya slot untuk tindakan kartu; jika pembaruan dsh mengubah markup itu, tombol tidak tampil dan **Tolak** milik dsh sendiri tetap berfungsi seperti sebelumnya. Satu catatan paling banyak berisi 4.000 karakter.
|
|
240
241
|
- **Input rahasia** hanya menyembunyikan teks persis dari sebuah nilai: `[secret]` menggantikannya di hasil alat berikutnya dalam obrolan yang sama. Agen tetap dapat membaca file dengan perintah shell dan mencetak nilai dalam bentuk lain (base64, sebagian, dengan spasi), dan bentuk itu sampai ke model. Alat file milik agen (read, grep, write, edit) tidak dapat membuka folder rahasia. Jika nilai itu juga kata yang umum, hasil lain dalam obrolan itu juga menampilkan `[secret]`. File tetap ada sampai giliran berakhir; jika dsh tertutup selama giliran, start berikutnya menghapusnya. Satu obrolan hanya dapat punya satu permintaan terbuka pada satu waktu. Alat ini menambahkan sekitar 870 karakter (sekitar 220 token, perkiraan) ke setiap permintaan model: nonaktifkan jika tidak dipakai.
|
|
241
242
|
- **Kutip dalam balasan** mengutip teks seperti yang ditampilkan halaman: blok kode, tabel, atau daftar menjadi baris biasa tanpa tanda Markdown. Pilihan yang mulai di satu jawaban dan berakhir di jawaban lain, atau yang menyentuh proses berpikir, baris alat, atau pesan Anda sendiri, tidak menampilkan tombol: pilih di dalam satu jawaban saja. Tombol menemukan jawaban lewat struktur obrolan dsh, karena dsh tidak punya slot untuk pilihan teks; jika pembaruan dsh mengubah struktur itu, tombol tidak muncul. Jika kutipan berada di akhir kolom, satu baris kosong lagi ditambahkan agar baris berikutnya yang Anda ketik mulai di bawahnya; dsh menghapus baris kosong di akhir saat mengirim.
|
|
@@ -245,7 +246,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
245
246
|
- **Pertahankan fokus composer** mengembalikan fokus hanya setelah perintah `/` atau skill. Saat dsh memproses perintah, kotak pesan tetap hanya-baca selama beberapa milidetik, jadi tombol yang ditekan dalam waktu itu hilang. Jika menu `/` dsh masih terbuka, `Enter` memilih baris yang disorot dan tidak mengirim.
|
|
246
247
|
- **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.
|
|
247
248
|
- **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.
|
|
248
|
-
- **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).
|
|
249
|
+
- **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.
|
|
249
250
|
- **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. Komputer lain terbuka di tab Browser pada bilah samping kanan obrolan yang ada di layar. Tab itu milik obrolan tersebut, jadi obrolan lain menampilkan bilah sampingnya sendiri. Tanpa obrolan (atau di dsh web tanpa tab Browser), komputer terbuka di jendela browser. Pemilih hanya tampil saat obrolan atau layar obrolan baru ada di area utama, tidak di Papan tugas. Fitur ini memakai port 19392 (hanya satu dsh di setiap Mac yang dapat mengizinkan komputer lain masuk). Komputer yang Anda buka di dalam halaman komputer lain tidak memiliki pemilih, jadi Anda tidak dapat membuka Mac ketiga dari sana.
|
|
250
251
|
- 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.
|
|
251
252
|
- **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.
|
|
@@ -423,7 +424,7 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-agentbox-ideas.mjs /path
|
|
|
423
424
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-t3code-ideas.mjs /path/to/dsh/lib/bin.js
|
|
424
425
|
# every Settings feature row shows a loading screenshot and a ? link to its README row
|
|
425
426
|
PLAYWRIGHT=/path/to/playwright node test/browser-settings-shots.mjs /path/to/dsh/lib/bin.js
|
|
426
|
-
# What's new after an update: the release notes show once, Esc and Close close them
|
|
427
|
+
# What's new after an update: the release notes show once (also after an install through another path), Esc and Close close them; Settings → What’s new in this version opens them again
|
|
427
428
|
PLAYWRIGHT=/path/to/playwright node test/browser-whats-new.mjs /path/to/dsh/lib/bin.js
|
|
428
429
|
# README feature anchors (the ? links) on github.com, headless: each #feature-… shows the start of its row
|
|
429
430
|
PLAYWRIGHT=/path/to/playwright node test/browser-readme-anchors.mjs
|