dsh-composer-plus 1.14.0 → 1.15.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 -6
- package/README.es.md +6 -6
- package/README.fr.md +6 -6
- package/README.hi.md +6 -6
- package/README.id.md +6 -6
- package/README.ja.md +6 -6
- package/README.ko.md +6 -6
- package/README.md +6 -6
- package/README.pt-BR.md +6 -6
- package/README.ru.md +6 -6
- package/README.tr.md +6 -6
- package/README.vi.md +6 -6
- package/README.zh.md +6 -6
- package/client.js +74 -21
- package/index.js +35 -7
- package/package.json +1 -1
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.15.0`.
|
|
33
33
|
|
|
34
34
|
## Funktionen
|
|
35
35
|
|
|
@@ -57,14 +57,14 @@ Starte dsh danach neu. (Die CLI kann nicht in das Desktop-Profil installieren; d
|
|
|
57
57
|
| **Projektsuche im neuen Chat** | <a id="feature-projectpicker"></a>Neuer Chat → die Projektschaltfläche über dem Eingabefeld. Die Projekte erscheinen in A–Z-Reihenfolge, oben mit dem Feld **Projekte durchsuchen**. Gib einen Teil eines Namens ein (Groß- und Kleinschreibung und Akzente spielen keine Rolle) und drücke `Enter`, um den ersten Treffer zu wählen. Passt nichts, erscheint **Kein passendes Projekt**. Die gespeicherte Projektreihenfolge von dsh in der Seitenleiste ändert sich nicht. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Screenshot: Projektsuche im neuen Chat"></a> |
|
|
58
58
|
| **Standard-Arbeitsbereich für Neue Sitzung** | <a id="feature-defaultworkspace"></a>Einstellungen → Composer Plus → **Standard-Arbeitsbereich für Neue Sitzung** → **Neue Sitzung öffnen in**: Wähle ein Projekt oder **Allgemeiner Ordner (default-workspace)** (der Standard: der eigene Ordner von dsh, `Documents/deepseek-harness/default-workspace`, der bei der ersten Nutzung entsteht). Dann öffnet die Schaltfläche **Neue Sitzung** oben in der Seitenleiste (und ihr Tastenkürzel) den neuen Chat immer dort, auch während ein Chat eines anderen Projekts offen ist. Das `+` neben einem Projekt öffnet weiterhin dieses Projekt, und die Projektschaltfläche über dem Eingabefeld des neuen Chats wechselt weiterhin das Projekt. | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="Screenshot: Standard-Arbeitsbereich für Neue Sitzung"></a> |
|
|
59
59
|
| **Im Chat suchen** | <a id="feature-findinchat"></a>Drücke in einem Chat `Cmd+F` auf einem Mac (`Ctrl+F` unter Windows und Linux): Über dem Chat öffnet sich ein Suchfeld. Tippe ein Wort: Jeder Treffer in den Nachrichten und Antworten auf dem Bildschirm wird hervorgehoben, der aktuelle in einer kräftigeren Farbe, und das Feld zeigt n / gesamt. `Enter` oder `↓` springt zum nächsten Treffer und `Shift+Enter` oder `↑` zum vorherigen (auch die Pfeilschaltflächen); der Chat scrollt den Treffer in die Mitte. Groß- und Kleinschreibung, Akzente und das türkische punktlose ı spielen keine Rolle. `Esc` schließt das Feld und setzt den Cursor wieder dorthin, wo er war. Die Suche folgt dem Chat, während eine Antwort eintrifft. | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="Screenshot: Im Chat suchen"></a> |
|
|
60
|
-
| **Ein Branch pro Chat** | <a id="feature-worktreechats"></a>Neuer Chat → die Schaltfläche
|
|
60
|
+
| **Ein Branch pro Chat** | <a id="feature-worktreechats"></a>Neuer Chat → die Schaltfläche main (Branch-Symbol) zwischen der Projektschaltfläche und der Modusschaltfläche → **Neuer Branch**. Gib dann die erste Nachricht ein und sende sie. Die erste Nachricht kann Bilder und Dateien enthalten. Die KI benennt den Branch (`feat/…`, `fix/…`) nach dieser Nachricht, Composer Plus legt dafür einen Git-Worktree in `<project>/.worktrees/` an, kopiert die ignorierten Dateien, die `.worktreeinclude` auflistet (zum Beispiel `.env` und `node_modules/`), und öffnet dort einen neuen Chat mit deiner Nachricht. Die Kopfzeile des offenen Chats zeigt ⑂ Branch · N Änderungen · ↑ ↓ (oder **nicht gepusht**); klicke darauf, um **Änderungen** zu öffnen. Dasselbe Menü listet die offenen Worktrees auf: Wähle einen, um darin einen Chat zu starten. Um die Branch-Ordner in der Seitenleiste in ihrem Projekt zu sehen, wähle in dsh **Ansichtsoptionen** → **Arbeitsbereichsbaum**. | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="Screenshot: Ein Branch pro Chat"></a> |
|
|
61
61
|
| **Vorhersage der nächsten Nachricht** | <a id="feature-nextprediction"></a>Standardmäßig an: Du kannst die Funktion unter **Einstellungen → Composer Plus** ausschalten. Wenn der Agent eine Runde beendet (keine gestoppte oder fehlgeschlagene), zeigt das leere Eingabefeld in Grau eine Vermutung deiner nächsten Nachricht, mit dem Hinweis **Tab zum Übernehmen**. `Tab` setzt den Text ins Eingabefeld, sendet ihn aber nicht. `Esc` blendet die Vermutung für diese Runde aus. Auch Tippen blendet sie aus, und eine neue Runde ersetzt sie. Das Menü **Modell** unter dem Schalter listet die eigenen Modelle von dsh (dieselbe Liste wie im Modellmenü von dsh). **dsh-Standard** ist vorausgewählt und folgt dem Standardmodell von dsh. Jede beendete Runde kostet einen kurzen Modellaufruf. In Tether erscheint die Vermutung über dem leeren Eingabefeld: Tippe darauf, um sie ins Feld zu setzen. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Screenshot: Vorhersage der nächsten Nachricht"></a> |
|
|
62
62
|
| **Beim Tippen vervollständigen** | <a id="feature-typingcompletion"></a>Standardmäßig aus: Du kannst die Funktion unter **Einstellungen → Composer Plus** einschalten. Während du tippst, zeigt grauer Text direkt nach dem Cursor, wie deine Nachricht weitergehen kann. `Tab` fügt ihn der Nachricht hinzu, sendet sie aber nicht. `Esc` blendet ihn aus. Er schlägt nur deine eigenen nächsten Wörter vor: nie eine Antwort an dich und keine erfundenen Fehlertexte oder Namen. Wenn die Nachricht fertig aussieht oder das Modell nicht sicher ist, erscheint nichts. Wenn du die nächsten Buchstaben des grauen Texts tippst, bleibt er stehen, ohne neuen Modellaufruf. Die Funktion hat ein eigenes Menü **Modell** unter ihrem Schalter. Der erste Eintrag, **Wie Vorhersage der nächsten Nachricht**, nutzt das Modell von **Vorhersage der nächsten Nachricht** (das ist der Standard). Wähle ein anderes Modell, um für jede Funktion ein eigenes Modell zu nutzen, zum Beispiel ein schnelleres Modell für Vervollständigungen. Sie macht bei jeder Pause beim Tippen einen Modellaufruf und verbraucht deshalb viel mehr Tokens als die Vorhersage: Wähle ein schnelles, günstiges Modell. Sie läuft nicht bei einem Slash-Befehl, bei einer Nachricht mit einem Datei-Chip oder wenn der Cursor nicht am Ende steht. In Tether erscheint der Rest beim Tippen über dem Feld: Tippe darauf, um ihn hinzuzufügen. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Screenshot: Beim Tippen vervollständigen"></a> |
|
|
63
63
|
| **Prompt verbessern** | <a id="feature-promptimprove"></a>Tippe eine grobe Anfrage und klicke dann auf den Zauberstab (**Prompt verbessern**) neben dem Modellmenü. Ein Modellaufruf schreibt sie als klareren Prompt neu: zuerst das Ziel, kurze nummerierte Schritte, wenn es mehrere Teile gibt, und die Prüfung, die laufen soll. Die Funktion liest diesen Chat (ohne zurückgenommene Nachrichten), README, AGENTS.md und Manifest des Projekts, die geänderten Dateien und die Dateien, deren Namen zu deinen Wörtern passen, und behält deine Sprache bei. Sie erfindet nie Dateinamen. Der neue Text ersetzt deinen Entwurf, wird aber nicht gesendet: Lies ihn, bearbeite ihn und drücke dann `Enter`. `Cmd/Ctrl+Z` holt deinen Text in einem Schritt zurück, ebenso die Schaltfläche (**Verbesserung rückgängig machen**). Wenn du tippst, während sie arbeitet, bleibt dein neuer Text stehen. `Esc` oder ein zweiter Klick bricht ab. Sie hat ein eigenes Menü **Modell** in den Einstellungen (Standard: **Wie das Modell des Chats**). Nicht für Slash-Befehle oder eine Nachricht mit einem Datei-Chip. In Tether ist der Zauberstab neben dem Feld. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Screenshot: Prompt verbessern"></a> |
|
|
64
64
|
| **Zielprüfung** | <a id="feature-goalcheck"></a>Starte ein Ziel mit `/goal`. Wenn der Agent das Ziel in einem automatischen Durchlauf als abgeschlossen markiert, schließt sich das Ziel erst nach zwei Prüfungen. Zuerst läuft der Testbefehl des Projekts im Ordner des Chats, im Sandbox-Modus des Chats. Der Befehl ist dein eigener oder der, der in `package.json`, `Makefile`, `Cargo.toml`, `go.mod` oder pytest gefunden wird. Wenn der neueste eigene Schritt des Agenten ein erfolgreicher Lauf dieses Tests war, läuft er nicht noch einmal. Dann liest ein unabhängiger Modellaufruf ohne Werkzeuge das Ziel, diesen Chat, `git status` und das Testergebnis. Schlägt eine Prüfung fehl, bleibt das Ziel aktiv, der Agent liest den Grund, und der nächste Durchlauf geht weiter. Eine Zeile unter der Zielleiste (**Zielprüfung**) zeigt den Test und das letzte Ergebnis. **Bearbeiten** legt deinen eigenen Testbefehl und ein Zeit- oder Token-Limit fest; über dem Limit wird das Ziel blockiert. **Jetzt ausführen** führt die Prüfung aus, ohne das Ziel zu schließen. Die Funktion hat ein eigenes Menü **Modell** in den Einstellungen (Standard: **Wie das Modell des Chats**). Wenn du das Ziel selbst abschließt, wird nichts geprüft. | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="Screenshot: Zielprüfung"></a> |
|
|
65
65
|
| **Für diesen Chat zulassen** | <a id="feature-allowforchat"></a>Wenn die automatische Prüfung dich fragt, bekommt die Genehmigungskarte **Für diesen Chat zulassen**: Dasselbe Tool ist im selben Chat ab dann erlaubt, mit beliebigen Argumenten, bis das Zeitlimit abläuft (standardmäßig 1 Stunde; wähle es unter **Einstellungen → Composer Plus → Für diesen Chat zulassen**). Danach fragt der Agent wieder. Ein Chip in der Kopfzeile listet die Freigaben mit ihrer Endzeit auf und widerruft sie. Freigaben bleiben nach einem Neustart erhalten. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Screenshot: Für diesen Chat zulassen"></a> |
|
|
66
66
|
| **Projektstatus** | <a id="feature-projectstatus"></a>Eine Projektzeile in der Seitenleiste zeigt dieselbe Markierung (Spinner / wartet / fertig) wie ihre Chats. So zeigt auch ein eingeklapptes Projekt, dass ein Chat darin arbeitet oder dich braucht. Ein Chat, der auf dich wartet, kommt zuerst, dann ein fertiger Chat, den du noch nicht geöffnet hast (der grüne Punkt, auch während ein anderer Chat noch läuft), dann der Spinner. Fahre mit der Maus darüber, um Details zu sehen. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Screenshot: Projektstatus"></a> |
|
|
67
|
-
| **Git-Branch in Chatzeilen** | <a id="feature-sessionbranch"></a>Jede Chatzeile in der Seitenleiste zeigt ein kleines graues Etikett mit dem git-Branch, auf dem der Projektordner des Chats in dessen letzter Runde war (zum Beispiel `main` oder `feature/login`; ein losgelöster HEAD zeigt seine kurze Commit-ID in Klammern). Zwei Chats eines Projekts auf verschiedenen Branches sehen nicht mehr gleich aus, und du siehst sofort, wenn du einen Chat auf dem falschen Branch fortsetzen willst. Fahre mit der Maus über das Etikett, um den vollen Namen zu sehen. Die Host-Hälfte liest den Branch (`git branch --show-current`, nur lesend), wenn eine Runde beginnt und wenn sie endet; ein Chat ohne Runde seit der Installation oder ein Ordner, der kein git-Repository ist, zeigt kein Etikett. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Screenshot: Git-Branch in Chatzeilen"></a> |
|
|
67
|
+
| **Git-Branch in Chatzeilen** | <a id="feature-sessionbranch"></a>Jede Chatzeile in der Seitenleiste zeigt ein kleines graues Etikett mit dem git-Branch, auf dem der Projektordner des Chats in dessen letzter Runde war (zum Beispiel `main` oder `feature/login`; ein losgelöster HEAD zeigt seine kurze Commit-ID in Klammern). Zwei Chats eines Projekts auf verschiedenen Branches sehen nicht mehr gleich aus, und du siehst sofort, wenn du einen Chat auf dem falschen Branch fortsetzen willst. Fahre mit der Maus über das Etikett, um den vollen Namen zu sehen. Die Host-Hälfte liest den Branch (`git branch --show-current`, nur lesend), wenn eine Runde beginnt und wenn sie endet; ein Chat ohne Runde seit der Installation oder ein Ordner, der kein git-Repository ist, zeigt kein Etikett. Wenn die Projektzeile über dem Chat denselben Namen wie der Branch hat (zum Beispiel ein Ordner von „Ein Branch pro Chat“), zeigt die Chatzeile kein Etikett, aber „In einer Liste“ zeigt es weiterhin. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Screenshot: Git-Branch in Chatzeilen"></a> |
|
|
68
68
|
| **Alle als gelesen markieren** | <a id="feature-markprojectread"></a>Klicke in der Seitenleiste auf die Schaltfläche **…** eines Projekts → **Alle als gelesen markieren**. Bei allen Chats in diesem Projekt verschwindet sofort der grüne Punkt für ungelesene Chats. Andere Projekte behalten ihre Punkte. Der Eintrag ist ausgegraut (**Keine ungelesenen Chats**), wenn das Projekt keine hat. | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="Screenshot: Alle als gelesen markieren"></a> |
|
|
69
69
|
| **Aktive Projekte zuerst** | <a id="feature-activeprojectsfirst"></a>Wenn ein Chat zu laufen beginnt oder dich braucht, rückt sein Projekt mit der eigenen Zeilenanimation von dsh an den Anfang der Seitenleiste (dieselbe Bewegung wie beim Hinziehen von Hand). Fertige Projekte bleiben, wo sie sind; ziehe sie wie gewohnt an eine beliebige Stelle. Die Verschiebungen werden in der Projektreihenfolge von dsh gespeichert. Wenn du die Funktion ausschaltest, bleibt die aktuelle Reihenfolge also erhalten. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Screenshot: Aktive Projekte zuerst"></a> |
|
|
70
70
|
| **Filter für aktuelle Projekte** | <a id="feature-recentprojects"></a>Seitenleiste → Ansichtsoptionen (Schieberegler-Symbol) → **In den letzten 2 Stunden aktiv**. Solange diese Option ausgewählt ist, zeigt die Seitenleiste nur Projekte mit einem Chat, der in den letzten 2 Stunden aktiv war. Das ist ein Chat, der in dieser Zeit aktualisiert wurde, ein laufender oder wartender Chat, der geöffnete Chat oder ein fertiger Chat, den du noch nicht geöffnet hast (der grüne „Fertig“-Punkt von dsh), auch nach den 2 Stunden. Projekte ohne einen solchen Chat sind ausgeblendet, auch neue und leere Projekte. Wähle die Option erneut, um alle Projekte zu zeigen. Die Auswahl bleibt auf diesem Gerät gespeichert. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Screenshot: Filter für aktuelle Projekte"></a> |
|
|
@@ -169,7 +169,7 @@ Getestet mit dsh `0.2.0-rc.2` (Desktop und Web) und `0.2.1-rc.2` (Web). Die CI f
|
|
|
169
169
|
- **Kein Branch-Etikett an einer Chatzeile:** 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).
|
|
170
170
|
- **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.
|
|
171
171
|
- **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).
|
|
172
|
-
- **Die Installation schlägt direkt nach einem Release fehl:** Gib die Version mit an (`dsh-composer-plus@1.
|
|
172
|
+
- **Die Installation schlägt direkt nach einem Release fehl:** Gib die Version mit an (`dsh-composer-plus@1.15.0`), siehe den Hinweis zur Installation oben.
|
|
173
173
|
|
|
174
174
|
## Grenzen
|
|
175
175
|
|
|
@@ -195,7 +195,7 @@ Getestet mit dsh `0.2.0-rc.2` (Desktop und Web) und `0.2.1-rc.2` (Web). Die CI f
|
|
|
195
195
|
- **Dieser Chat** zählt nur Dateien, die die Datei-Tools von dsh (`write`, `edit`, `str_replace_editor`) geschrieben haben. Dateien, die ein Befehl (`bash`) geändert hat, sind nicht in dieser Ansicht. Sie erscheinen unter **Nicht committet**. Ohne Snapshot von Runde zurücknehmen für den Chat (Runde zurücknehmen aus, dsh-rewind-plugin installiert oder ein Chat, der älter als das Plugin ist) vergleicht die Ansicht mit dem letzten Commit und sagt das. Runde zurücknehmen behält die 50 neuesten Snapshots eines Chats: In einem längeren Chat vergleicht die Ansicht mit dem ältesten behaltenen, nennt die Nachricht und zählt frühere Änderungen nicht. **Leerraum-Änderungen ausblenden** ist `git diff -w`: Auch eine Zeile, die sich nur in Leerzeichen in ihrem Inneren geändert hat, wird ausgeblendet.
|
|
196
196
|
- **GitHub-Issue öffnen** braucht das GitHub CLI (`gh`) im PATH von dsh und ein GitHub-Remote im Ordner des Chats. Es läuft höchstens 60 s. Dauert `gh` länger, kann das Issue auf GitHub existieren, ohne dass sein Link in der Liste steht (sieh auf GitHub nach, bevor du erneut klickst: Die Liste liest den Link nur aus einem abgeschlossenen Lauf, ein neuer Klick kann also ein zweites Issue öffnen). Ein Ordner mit mehr als einem GitHub-Remote nutzt den eigenen Standard von `gh` (`gh repo set-default`).
|
|
197
197
|
- **Chats, die diese Datei geändert haben** kennt wie **Dieser Chat** nur die Datei-Tools von dsh (`write`, `edit`, `str_replace_editor`): Eine Änderung durch einen Befehl (`bash`) wird nicht aufgeführt. Die Liste liest die neuesten 300 Chats des Repositorys (nach ihrem Erstellungszeitpunkt) und sagt es, wenn es mehr gibt. Sie zeigt höchstens 100 Zeilen. Eine umbenannte Datei steht unter dem Namen, den das Tool geschrieben hat. Ein Chat, dessen Ordner außerhalb des Repositorys liegt (auch über einen anderen Pfad zu denselben Dateien), zählt nicht. Das erste Öffnen nach einem Start von dsh liest alle Chatprotokolle des Repositorys (etwa 4 s für 275 Chats). Spätere Aufrufe lesen nur die Chats, die sich seitdem geändert haben.
|
|
198
|
-
- **Git-Branch in Chatzeilen** zeigt den Branch des Chat-Ordners zu Beginn oder am Ende der letzten Runde, nicht den aktuellen Branch: Ein Branch-Wechsel außerhalb einer Runde erscheint erst nach der nächsten Runde. Chats von vor dieser Version zeigen bis zu ihrer nächsten Runde kein Etikett. Das Etikett sitzt im Markup der Chatzeilen von dsh (dsh hat dort keinen Platz dafür). Wenn ein dsh-Update dieses Markup ändert, erscheint kein Etikett.
|
|
198
|
+
- **Git-Branch in Chatzeilen** zeigt den Branch des Chat-Ordners zu Beginn oder am Ende der letzten Runde, nicht den aktuellen Branch: Ein Branch-Wechsel außerhalb einer Runde erscheint erst nach der nächsten Runde. Chats von vor dieser Version zeigen bis zu ihrer nächsten Runde kein Etikett. Das Etikett sitzt im Markup der Chatzeilen von dsh (dsh hat dort keinen Platz dafür). Wenn ein dsh-Update dieses Markup ändert, erscheint kein Etikett. Wenn die Projektzeile über dem Chat denselben Namen wie der Branch hat (zum Beispiel ein Ordner von „Ein Branch pro Chat“), zeigt die Chatzeile kein Etikett, aber „In einer Liste“ zeigt es weiterhin.
|
|
199
199
|
- **Im Chat suchen** durchsucht nur, was die Seite zeigt: die geladenen Nachrichten und Antworten (scrolle nach oben oder klicke auf **Ältere laden** für ältere), nicht geschlossene Tool-Schritte und nicht den eingeklappten Text in der Ausgabe eines Tools. Die Suche zählt höchstens 2.000 Treffer (dann „2000+“). Sie nutzt die Highlight-API des Browsers (Chromium 105 und neuer; die Desktop-App hat sie): In einem älteren Browser funktionieren die Zählung und das Springen ohne die Farbe. `Cmd+F` auf einem Mac (`Ctrl+F` unter Windows und Linux) öffnet sie nur, solange ein Chat auf dem Bildschirm ist. Anderswo funktioniert die eigene Suche des Browsers wie bisher. Auf einem Mac behält `Ctrl+F` in Textfeldern seine macOS-Funktion (der Cursor geht ein Zeichen weiter).
|
|
200
200
|
- Eine Benachrichtigung, die vor einem Neustart gesendet wurde, holt dsh beim Klicken nur in den Vordergrund.
|
|
201
201
|
- Aktive Projekte werden über die gespeicherte Projektreihenfolge von dsh verschoben. Die neue Reihenfolge bleibt also nach einem Neustart erhalten. Chats außerhalb eines Projekts („Ohne Gruppe“) lassen sich nicht verschieben; dsh listet sie immer zuletzt.
|
|
@@ -271,7 +271,7 @@ Getestet mit dsh `0.2.0-rc.2` (Desktop und Web) und `0.2.1-rc.2` (Web). Die CI f
|
|
|
271
271
|
|
|
272
272
|
**Wie öffnet sich Neue Sitzung immer im selben Projekt?** Einstellungen → Composer Plus → **Standard-Arbeitsbereich für Neue Sitzung** → **Neue Sitzung öffnen in** → wähle das Projekt. Das `+` neben einem anderen Projekt öffnet weiterhin dieses Projekt.
|
|
273
273
|
|
|
274
|
-
**Wie arbeite ich gleichzeitig an mehreren Funktionen eines Projekts, jede auf ihrem eigenen Branch?** Mit **Ein Branch pro Chat**: neuer Chat → die Schaltfläche
|
|
274
|
+
**Wie arbeite ich gleichzeitig an mehreren Funktionen eines Projekts, jede auf ihrem eigenen Branch?** Mit **Ein Branch pro Chat**: neuer Chat → die Schaltfläche main mit dem Branch-Symbol → **Neuer Branch**, dann sende die erste Nachricht. Jeder Chat bekommt einen eigenen Branch und einen eigenen Worktree-Ordner, mit deiner `.env` und deinem `node_modules`, wenn `.worktreeinclude` sie auflistet. Die Kopfzeile des Chats zeigt, auf welchem Branch du bist.
|
|
275
275
|
|
|
276
276
|
**Kann ich ein Foto von meinem iPhone senden?** Ja. Tippe in einem Tether-Chat auf **+** neben dem Nachrichtenfeld → Camera, Photos (bis zu 4) oder Paste image. Die Fotos kommen als Anhänge deiner Nachricht in den Chat auf dem Mac, daher sieht das Modell sie.
|
|
277
277
|
|
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.15.0`.
|
|
33
33
|
|
|
34
34
|
## Funciones
|
|
35
35
|
|
|
@@ -57,14 +57,14 @@ Después, reinicia dsh. (La CLI no puede instalar en el perfil de escritorio: de
|
|
|
57
57
|
| **Búsqueda de proyectos en un chat nuevo** | <a id="feature-projectpicker"></a>Chat nuevo → el botón de proyecto encima del editor. Los proyectos aparecen en orden A–Z, con un cuadro **Buscar proyectos** arriba. Escribe parte de un nombre (sin distinguir mayúsculas ni acentos) y pulsa `Enter` para elegir la primera coincidencia. Si nada coincide, aparece **Ningún proyecto coincide**. El orden de proyectos guardado de dsh en la barra lateral no cambia. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Captura: Búsqueda de proyectos en un chat nuevo"></a> |
|
|
58
58
|
| **Espacio de trabajo predeterminado para Nueva sesión** | <a id="feature-defaultworkspace"></a>Configuración → Composer Plus → **Espacio de trabajo predeterminado para Nueva sesión** → **Abrir Nueva sesión en**: elige un proyecto o **Carpeta general (default-workspace)** (la opción predeterminada: la propia carpeta de dsh `Documents/deepseek-harness/default-workspace`, que se crea en el primer uso). Después, **Nueva sesión** en la parte superior de la barra lateral (y su atajo) siempre abre el chat nuevo allí, también mientras está abierto un chat de otro proyecto. El `+` junto a un proyecto sigue abriendo ese proyecto, y el botón de proyecto encima del editor del chat nuevo sigue cambiando el proyecto. | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="Captura: Espacio de trabajo predeterminado para Nueva sesión"></a> |
|
|
59
59
|
| **Buscar en el chat** | <a id="feature-findinchat"></a>Pulsa `Cmd+F` en un Mac (`Ctrl+F` en Windows y Linux) en un chat: se abre un cuadro de búsqueda sobre él. Escribe una palabra: se resaltan todas las coincidencias en los mensajes y respuestas que hay en pantalla, la actual con un color más intenso, y el cuadro muestra n / total. `Enter` o `↓` va a la coincidencia siguiente y `Shift+Enter` o `↑` a la anterior (también los botones de flecha); el chat desplaza la coincidencia hasta el centro. No importan las mayúsculas, los acentos ni la ı sin punto del turco. `Esc` cierra el cuadro y devuelve el cursor a donde estaba. La búsqueda sigue el chat mientras llega una respuesta. | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="Captura: Buscar en el chat"></a> |
|
|
60
|
-
| **Una rama por chat** | <a id="feature-worktreechats"></a>Chat nuevo → el botón
|
|
60
|
+
| **Una rama por chat** | <a id="feature-worktreechats"></a>Chat nuevo → el botón main (icono de rama) entre el botón de proyecto y el botón de modo → **Nueva rama**; luego escribe el primer mensaje y envíalo. El primer mensaje puede llevar imágenes y archivos. La IA nombra la rama (`feat/…`, `fix/…`) a partir de ese mensaje, Composer Plus crea para ella un worktree de git en `<project>/.worktrees/`, copia los archivos ignorados que lista `.worktreeinclude` (por ejemplo `.env` y `node_modules/`) y abre allí un chat nuevo con tu mensaje. La cabecera del chat abierto muestra ⑂ rama · N cambios · ↑ ↓ (o **sin enviar**); haz clic en ella para abrir **Cambios**. El mismo menú lista los worktrees abiertos: elige uno para iniciar un chat en él. Para ver las carpetas de las ramas dentro de su proyecto en la barra lateral, elige en dsh **Opciones de vista** → **Árbol de espacios de trabajo**. | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="Captura: Una rama por chat"></a> |
|
|
61
61
|
| **Predicción del siguiente mensaje** | <a id="feature-nextprediction"></a>Activada de forma predeterminada; puedes desactivarla en **Configuración → Composer Plus**. Cuando el agente termina un turno (no uno detenido o fallido), el editor vacío muestra en gris una predicción de tu siguiente mensaje, con la indicación **Tab para aceptar**. `Tab` pone el texto en el editor, pero no lo envía. `Esc` la oculta durante ese turno. Si empiezas a escribir, también se oculta, y un turno nuevo la sustituye. El menú **Modelo** bajo el interruptor muestra los modelos propios de dsh (la misma lista que el menú de modelos de dsh). **Predeterminado de dsh** está seleccionado de forma predeterminada y sigue el modelo predeterminado de dsh. Cada turno terminado cuesta una llamada breve al modelo. En Tether, la predicción aparece encima del editor vacío: tócala para ponerla en el campo. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Captura: Predicción del siguiente mensaje"></a> |
|
|
62
62
|
| **Completar al escribir** | <a id="feature-typingcompletion"></a>Desactivado de forma predeterminada; puedes activarlo en **Configuración → Composer Plus**. Mientras escribes, un texto gris justo después del cursor muestra cómo puede seguir tu mensaje. `Tab` lo añade al mensaje, pero no lo envía. `Esc` lo oculta. Solo sugiere tus propias palabras siguientes: nunca una respuesta para ti, ni textos de error o nombres inventados. Si el mensaje parece completo o el modelo no está seguro, no aparece nada. Si escribes las letras siguientes del texto gris, este se mantiene, sin una nueva llamada al modelo. Tiene su propio menú **Modelo** bajo su interruptor. Su primera opción, **Igual que la predicción del siguiente mensaje**, usa el modelo de **Predicción del siguiente mensaje** (es la opción predeterminada); elige otro modelo para usar uno distinto en cada función, por ejemplo un modelo más rápido para las compleciones. Hace una llamada al modelo en cada pausa mientras escribes, así que gasta muchos más tokens que la predicción: elige un modelo rápido y de bajo coste. No se ejecuta con un comando de barra, con un mensaje que tenga un chip de archivo ni cuando el cursor no está al final. En Tether, el resto aparece encima del campo mientras escribes: tócalo para añadirlo. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Captura: Completar al escribir"></a> |
|
|
63
63
|
| **Mejorar prompt** | <a id="feature-promptimprove"></a>Escribe una petición aproximada y luego haz clic en la varita mágica (**Mejorar prompt**) junto al menú de modelos. Una llamada al modelo la reescribe como un prompt más claro: primero el objetivo, pasos numerados cortos cuando hay varias partes y la comprobación que hay que ejecutar. Lee este chat (sin los mensajes revertidos), el README, AGENTS.md y el manifiesto del proyecto, los archivos modificados y los archivos cuyo nombre coincide con tus palabras, y mantiene tu idioma. Nunca inventa nombres de archivo. El texto nuevo sustituye tu borrador, pero no se envía: léelo, edítalo y luego pulsa `Enter`. `Cmd/Ctrl+Z` recupera tu texto en un solo paso, y el botón (**Deshacer mejora**) también. Si escribes mientras trabaja, tu texto nuevo se mantiene. `Esc` o un segundo clic lo cancela. Tiene su propio menú **Modelo** en Configuración (predeterminado: **Igual que el modelo del chat**). No funciona con comandos de barra ni con un mensaje que tenga un chip de archivo. En Tether, la varita está junto al campo. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Captura: Mejorar prompt"></a> |
|
|
64
64
|
| **Comprobación del objetivo** | <a id="feature-goalcheck"></a>Empieza un objetivo con `/goal`. Cuando el agente marca el objetivo como completado en una ronda automática, el objetivo solo se cierra tras dos comprobaciones. Primero, el comando de prueba del proyecto se ejecuta en la carpeta del chat, con el modo sandbox del chat. El comando es el tuyo o el que se encuentra en `package.json`, `Makefile`, `Cargo.toml`, `go.mod` o pytest. Si el paso más reciente del propio agente fue una ejecución correcta de esa prueba, no se vuelve a ejecutar. Después, una llamada independiente al modelo, sin herramientas, lee el objetivo, este chat, `git status` y el resultado de la prueba. Si una comprobación falla, el objetivo sigue activo y el agente lee el motivo; luego continúa la ronda siguiente. Una fila bajo la barra del objetivo (**Comprobación del objetivo**) muestra la prueba y el último resultado. **Editar** define tu propio comando de prueba y un límite de tiempo o de tokens; al superar el límite, el objetivo queda bloqueado. **Ejecutar ahora** ejecuta la comprobación sin cerrar el objetivo. Tiene su propio menú **Modelo** en Configuración (predeterminado: **Igual que el modelo del chat**). Cuando completas el objetivo tú mismo, no se comprueba nada. | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="Captura: Comprobación del objetivo"></a> |
|
|
65
65
|
| **Permitir en este chat** | <a id="feature-allowforchat"></a>Cuando la revisión automática te pregunta, la tarjeta de aprobación muestra **Permitir en este chat**: a partir de entonces, la misma herramienta en el mismo chat queda permitida, con cualquier argumento, hasta que termina el límite de tiempo (1 hora por defecto; elígelo en **Configuración → Composer Plus → Permitir en este chat**). Después, el agente vuelve a preguntar. Un chip en la cabecera muestra los permisos concedidos con su hora de fin y permite revocarlos. Los permisos se mantienen tras un reinicio. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Captura: Permitir en este chat"></a> |
|
|
66
66
|
| **Estado del proyecto** | <a id="feature-projectstatus"></a>La fila de un proyecto en la barra lateral muestra el mismo indicador de en ejecución / en espera / terminado que sus chats, así que un proyecto contraído también te dice que un chat de dentro está trabajando o te necesita. Primero se muestra un chat que te espera, luego un chat terminado que aún no has abierto (el punto verde, también mientras otro chat sigue en ejecución) y luego el indicador de en ejecución. Pasa el puntero por encima para ver los detalles. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Captura: Estado del proyecto"></a> |
|
|
67
|
-
| **Rama de Git en las filas de chat** | <a id="feature-sessionbranch"></a>Cada fila de chat de la barra lateral muestra una pequeña etiqueta gris con la rama de git en la que estaba la carpeta del proyecto del chat en su último turno (por ejemplo `main` o `feature/login`; un HEAD separado muestra su id de commit corto entre paréntesis). Dos chats de un mismo proyecto en ramas distintas ya no se ven iguales, y ves enseguida cuándo vas a continuar un chat en la rama equivocada. Pasa el puntero por la etiqueta para ver el nombre completo. La parte Host lee la rama (`git branch --show-current`, solo lectura) cuando un turno empieza y cuando termina; un chat sin turnos desde que instalaste esto, o una carpeta que no es un repositorio git, no muestra etiqueta. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Captura: Rama de Git en las filas de chat"></a> |
|
|
67
|
+
| **Rama de Git en las filas de chat** | <a id="feature-sessionbranch"></a>Cada fila de chat de la barra lateral muestra una pequeña etiqueta gris con la rama de git en la que estaba la carpeta del proyecto del chat en su último turno (por ejemplo `main` o `feature/login`; un HEAD separado muestra su id de commit corto entre paréntesis). Dos chats de un mismo proyecto en ramas distintas ya no se ven iguales, y ves enseguida cuándo vas a continuar un chat en la rama equivocada. Pasa el puntero por la etiqueta para ver el nombre completo. La parte Host lee la rama (`git branch --show-current`, solo lectura) cuando un turno empieza y cuando termina; un chat sin turnos desde que instalaste esto, o una carpeta que no es un repositorio git, no muestra etiqueta. Si la fila de proyecto sobre el chat tiene el mismo nombre que la rama (por ejemplo, una carpeta de «Una rama por chat»), la fila del chat no muestra la etiqueta, pero «En una sola lista» sí la muestra. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Captura: Rama de Git en las filas de chat"></a> |
|
|
68
68
|
| **Marcar todo como leído** | <a id="feature-markprojectread"></a>En la barra lateral, haz clic en el botón **…** de un proyecto → **Marcar todo como leído**. Todos los chats de ese proyecto pierden su punto verde de no leído a la vez; los demás proyectos conservan los suyos. La opción aparece en gris (**No hay chats sin leer**) cuando el proyecto no tiene ninguno. | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="Captura: Marcar todo como leído"></a> |
|
|
69
69
|
| **Proyectos activos primero** | <a id="feature-activeprojectsfirst"></a>Cuando un chat empieza a ejecutarse o te necesita, su proyecto sube al principio de la barra lateral con la animación de filas propia de dsh (el mismo movimiento que al arrastrarlo allí). Los proyectos terminados se quedan donde están; arrástralos a donde quieras, como siempre. Los movimientos se guardan en el orden de proyectos de dsh, así que al desactivar esta función se mantiene el orden actual. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Captura: Proyectos activos primero"></a> |
|
|
70
70
|
| **Filtro de proyectos recientes** | <a id="feature-recentprojects"></a>Barra lateral → opciones de vista (icono de controles deslizantes) → **Activos en las últimas 2 horas**. Mientras está seleccionado, la barra lateral solo muestra los proyectos con un chat activo en las últimas 2 horas: un chat actualizado en ese tiempo, un chat en ejecución o en espera, el chat abierto o un chat terminado que aún no has abierto (el punto verde de “terminado” de dsh), también después de las 2 horas. Los proyectos sin un chat así se ocultan, también los nuevos y vacíos. Selecciónalo otra vez para mostrar todos los proyectos. La elección se guarda en este dispositivo. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Captura: Filtro de proyectos recientes"></a> |
|
|
@@ -169,7 +169,7 @@ Probado en dsh `0.2.0-rc.2` (escritorio y web) y `0.2.1-rc.2` (web). La CI ejecu
|
|
|
169
169
|
- **No hay etiqueta de rama en una fila de chat:** 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).
|
|
170
170
|
- **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.
|
|
171
171
|
- **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).
|
|
172
|
-
- **La instalación falla justo después de una versión nueva:** añade la versión (`dsh-composer-plus@1.
|
|
172
|
+
- **La instalación falla justo después de una versión nueva:** añade la versión (`dsh-composer-plus@1.15.0`); consulta la nota de instalación de más arriba.
|
|
173
173
|
|
|
174
174
|
## Límites
|
|
175
175
|
|
|
@@ -195,7 +195,7 @@ Probado en dsh `0.2.0-rc.2` (escritorio y web) y `0.2.1-rc.2` (web). La CI ejecu
|
|
|
195
195
|
- **Este chat** solo cuenta los archivos que escribieron las herramientas de archivos de dsh (`write`, `edit`, `str_replace_editor`). Los archivos que cambió un comando (`bash`) no están en esta vista; aparecen en **Sin confirmar**. Sin una instantánea de Revertir turno del chat (Revertir turno desactivado, dsh-rewind-plugin instalado o un chat anterior al plugin), la vista compara con el último commit y lo indica. Revertir turno guarda las 50 instantáneas más recientes de un chat: en un chat más largo, la vista compara con la más antigua que se guardó, indica desde qué mensaje y no cuenta los cambios anteriores. **Ocultar cambios de espacios en blanco** es `git diff -w`: también se oculta una línea que solo cambió en los espacios de su interior.
|
|
196
196
|
- **Abrir issue en GitHub** necesita GitHub CLI (`gh`) en el PATH de dsh y un remoto de GitHub en la carpeta del chat. Se ejecuta como máximo 60 s; si `gh` tarda más, la issue puede existir en GitHub sin su enlace en la lista (antes de volver a hacer clic, mira en GitHub: la lista solo lee el enlace de una ejecución terminada, así que otro clic puede abrir una segunda issue). Una carpeta con más de un remoto de GitHub usa el valor predeterminado del propio `gh` (`gh repo set-default`).
|
|
197
197
|
- **Chats que cambiaron este archivo** solo conoce las herramientas de archivos de dsh (`write`, `edit`, `str_replace_editor`), como **Este chat**: un cambio hecho por un comando (`bash`) no aparece. Lee los 300 chats más recientes del repositorio (según cuándo se crearon) y lo indica cuando hay más; muestra como máximo 100 filas. Un archivo renombrado aparece con el nombre que escribió la herramienta. No cuenta un chat cuya carpeta está fuera del repositorio (tampoco a través de otra ruta a los mismos archivos). La primera vez que se abre después de iniciar dsh, lee todos los registros de chat del repositorio (unos 4 s para 275 chats); las siguientes veces solo lee los chats que cambiaron desde entonces.
|
|
198
|
-
- **Rama de Git en las filas de chat** muestra la rama de la carpeta del chat cuando su último turno empezó o terminó, no la rama actual: un cambio de rama fuera de un turno aparece después del siguiente turno. Los chats de antes de esta versión no muestran etiqueta hasta su siguiente turno. La etiqueta va en el marcado de las filas de chat de dsh (dsh no tiene un espacio ahí); si una actualización de dsh cambia ese marcado, no aparece ninguna etiqueta.
|
|
198
|
+
- **Rama de Git en las filas de chat** muestra la rama de la carpeta del chat cuando su último turno empezó o terminó, no la rama actual: un cambio de rama fuera de un turno aparece después del siguiente turno. Los chats de antes de esta versión no muestran etiqueta hasta su siguiente turno. La etiqueta va en el marcado de las filas de chat de dsh (dsh no tiene un espacio ahí); si una actualización de dsh cambia ese marcado, no aparece ninguna etiqueta. Si la fila de proyecto sobre el chat tiene el mismo nombre que la rama (por ejemplo, una carpeta de «Una rama por chat»), la fila del chat no muestra la etiqueta, pero «En una sola lista» sí la muestra.
|
|
199
199
|
- **Buscar en el chat** solo busca en lo que muestra la página: los mensajes y respuestas cargados (desplázate hacia arriba o haz clic en **Cargar anteriores** para ver los más antiguos), no en los pasos de herramientas cerrados ni en el texto plegado dentro de la salida de una herramienta. Cuenta como máximo 2.000 coincidencias (después, «2000+»). Usa la API de resaltado del navegador (Chromium 105 y posteriores; la app de escritorio la tiene): en un navegador más antiguo, el recuento y los saltos funcionan sin el color. `Cmd+F` en un Mac (`Ctrl+F` en Windows y Linux) solo lo abre mientras hay un chat en pantalla; en otros lugares, la búsqueda propia del navegador funciona como antes. En un Mac, `Ctrl+F` mantiene su uso de macOS en los campos de texto (el cursor avanza un carácter).
|
|
200
200
|
- Al hacer clic en una notificación enviada antes de un reinicio, solo se trae dsh al frente.
|
|
201
201
|
- Los proyectos activos se mueven con el orden de proyectos guardado de dsh, así que el nuevo orden se mantiene tras un reinicio. Los chats que no pertenecen a ningún proyecto («Sin agrupar») no se pueden mover; dsh siempre los muestra al final.
|
|
@@ -271,7 +271,7 @@ Probado en dsh `0.2.0-rc.2` (escritorio y web) y `0.2.1-rc.2` (web). La CI ejecu
|
|
|
271
271
|
|
|
272
272
|
**¿Cómo hago que Nueva sesión se abra siempre en el mismo proyecto?** Configuración → Composer Plus → **Espacio de trabajo predeterminado para Nueva sesión** → **Abrir Nueva sesión en** → elige el proyecto. El `+` junto a otro proyecto sigue abriendo ese proyecto.
|
|
273
273
|
|
|
274
|
-
**¿Cómo trabajo en varias funciones de un proyecto a la vez, cada una en su propia rama?** Con **Una rama por chat**: chat nuevo → el botón
|
|
274
|
+
**¿Cómo trabajo en varias funciones de un proyecto a la vez, cada una en su propia rama?** Con **Una rama por chat**: chat nuevo → el botón main con el icono de rama → **Nueva rama**, y luego envía el primer mensaje. Cada chat tiene su propia rama y su carpeta de worktree, con tu `.env` y tu `node_modules` cuando `.worktreeinclude` los lista. La cabecera del chat muestra en qué rama estás.
|
|
275
275
|
|
|
276
276
|
**¿Puedo enviar una foto desde mi iPhone?** Sí. En un chat de Tether, toca **+** junto al campo de mensaje → Camera, Photos (hasta 4) o Paste image. Las fotos llegan al chat del Mac como adjuntos de tu mensaje, así que el modelo las ve.
|
|
277
277
|
|
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.15.0`.
|
|
33
33
|
|
|
34
34
|
## Fonctionnalités
|
|
35
35
|
|
|
@@ -57,14 +57,14 @@ Redémarrez ensuite dsh. (La CLI ne peut pas installer dans le profil de bureau
|
|
|
57
57
|
| **Recherche de projet dans une nouvelle discussion** | <a id="feature-projectpicker"></a>Nouvelle discussion → le bouton de projet au-dessus de la zone de saisie. Les projets s’affichent dans l’ordre A–Z, avec un champ **Rechercher des projets** en haut. Tapez une partie d’un nom (sans tenir compte de la casse ni des accents) et appuyez sur `Enter` pour choisir le premier résultat. Si rien ne correspond, **Aucun projet ne correspond** s’affiche. L’ordre des projets enregistré par dsh dans la barre latérale ne change pas. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Capture d’écran : Recherche de projet dans une nouvelle discussion"></a> |
|
|
58
58
|
| **Espace de travail par défaut pour Nouvelle session** | <a id="feature-defaultworkspace"></a>Réglages → Composer Plus → **Espace de travail par défaut pour Nouvelle session** → **Ouvrir Nouvelle session dans** : choisissez un projet ou **Dossier général (default-workspace)** (la valeur par défaut : le dossier de dsh `Documents/deepseek-harness/default-workspace`, créé à la première utilisation). Ensuite, **Nouvelle session** en haut de la barre latérale (et son raccourci) ouvre toujours la nouvelle discussion à cet endroit, même quand une discussion d’un autre projet est ouverte. Le `+` à côté d’un projet ouvre toujours ce projet, et le bouton de projet au-dessus de la zone de saisie de la nouvelle discussion change toujours le projet. | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="Capture d’écran : Espace de travail par défaut pour Nouvelle session"></a> |
|
|
59
59
|
| **Rechercher dans la discussion** | <a id="feature-findinchat"></a>Appuyez sur `Cmd+F` sur un Mac (`Ctrl+F` sous Windows et Linux) dans une discussion : un champ de recherche s’ouvre au-dessus. Tapez un mot : chaque résultat dans les messages et les réponses à l’écran est surligné, le résultat actuel dans une couleur plus forte, et le champ affiche n / total. `Enter` ou `↓` passe au résultat suivant et `Shift+Enter` ou `↑` au précédent (les boutons fléchés aussi) ; la discussion fait défiler le résultat jusqu’au milieu. Les majuscules, les accents et le ı sans point du turc ne comptent pas. `Esc` ferme le champ et remet le curseur là où il était. La recherche suit la discussion pendant qu’une réponse arrive. | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="Capture d’écran : Rechercher dans la discussion"></a> |
|
|
60
|
-
| **Une branche par discussion** | <a id="feature-worktreechats"></a>Nouvelle discussion → le bouton
|
|
60
|
+
| **Une branche par discussion** | <a id="feature-worktreechats"></a>Nouvelle discussion → le bouton main (icône de branche) entre le bouton de projet et le bouton de mode → **Nouvelle branche**, puis tapez le premier message et envoyez-le. Le premier message peut contenir des images et des fichiers. L’IA nomme la branche (`feat/…`, `fix/…`) d’après ce message, Composer Plus crée pour elle un worktree git dans `<project>/.worktrees/`, copie les fichiers ignorés que liste `.worktreeinclude` (par exemple `.env` et `node_modules/`) et y ouvre une nouvelle discussion avec votre message. L’en-tête de la discussion ouverte affiche ⑂ branche · N modifications · ↑ ↓ (ou **non poussée**) ; cliquez dessus pour ouvrir **Modifications**. Le même menu liste les worktrees ouverts : choisissez-en un pour y lancer une discussion. Pour voir les dossiers des branches dans leur projet dans la barre latérale, choisissez dans dsh **Options d’affichage** → **Arborescence des espaces de travail**. | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="Capture d’écran : Une branche par discussion"></a> |
|
|
61
61
|
| **Prédiction du message suivant** | <a id="feature-nextprediction"></a>Activée par défaut ; vous pouvez la désactiver dans **Réglages → Composer Plus**. Quand l’agent termine un tour (pas un tour arrêté ou en échec), la zone de saisie vide affiche en gris une prédiction de votre prochain message, avec l’indication **Tab pour accepter**. `Tab` place le texte dans la zone de saisie, sans l’envoyer. `Esc` la masque pour ce tour. Taper du texte la masque aussi, et un nouveau tour la remplace. Le menu **Modèle**, sous l’interrupteur, liste les modèles de dsh (la même liste que le menu des modèles de dsh). **Défaut de dsh** est sélectionné par défaut et suit le modèle par défaut de dsh. Chaque tour terminé coûte un court appel au modèle. Dans Tether, la prédiction s’affiche au-dessus de la zone de saisie vide : touchez-la pour la placer dans le champ. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Capture d’écran : Prédiction du message suivant"></a> |
|
|
62
62
|
| **Compléter pendant la saisie** | <a id="feature-typingcompletion"></a>Désactivé par défaut ; vous pouvez l’activer dans **Réglages → Composer Plus**. Pendant que vous tapez, un texte gris juste après le curseur montre comment votre message peut continuer. `Tab` l’ajoute au message, sans l’envoyer. `Esc` le masque. Il ne propose que vos propres mots suivants : jamais une réponse qui vous est adressée, ni des textes d’erreur ou des noms inventés. Si le message semble complet ou si le modèle n’est pas sûr, rien ne s’affiche. Si vous tapez les lettres suivantes du texte gris, il reste affiché, sans nouvel appel au modèle. Cette fonctionnalité a son propre menu **Modèle** sous son interrupteur. Sa première option, **Comme la prédiction du message suivant**, utilise le modèle de **Prédiction du message suivant** (c’est l’option par défaut) ; choisissez un autre modèle pour utiliser un modèle différent pour chaque fonctionnalité, par exemple un modèle plus rapide pour les complétions. Elle fait un appel au modèle à chaque pause pendant la saisie : elle consomme donc beaucoup plus de tokens que la prédiction. Choisissez un modèle rapide et peu coûteux. Elle ne s’exécute pas pour une commande slash, un message avec une pastille de fichier, ou quand le curseur n’est pas à la fin. Dans Tether, la suite s’affiche au-dessus du champ pendant la saisie : touchez-la pour l’ajouter. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Capture d’écran : Compléter pendant la saisie"></a> |
|
|
63
63
|
| **Améliorer le prompt** | <a id="feature-promptimprove"></a>Tapez une demande approximative, puis cliquez sur la baguette magique (**Améliorer le prompt**) à côté du menu des modèles. Un appel au modèle la réécrit en un prompt plus clair : l’objectif d’abord, de courtes étapes numérotées quand il y a plusieurs parties, et la vérification à lancer. Il lit cette discussion (sans les messages retirés par une annulation), le README, AGENTS.md et le manifeste du projet, les fichiers modifiés et les fichiers dont le nom correspond à vos mots, et garde votre langue. Il n’invente jamais de noms de fichiers. Le nouveau texte remplace votre brouillon, mais n’est pas envoyé : lisez-le, modifiez-le, puis appuyez sur `Enter`. `Cmd/Ctrl+Z` rétablit votre texte en une étape, tout comme le bouton (**Annuler l’amélioration**). Si vous tapez pendant qu’il travaille, votre nouveau texte reste. `Esc` ou un second clic annule. Il a son propre menu **Modèle** dans les Réglages (par défaut : **Comme le modèle de la discussion**). Pas pour les commandes slash ni pour un message avec une pastille de fichier. Dans Tether, la baguette est à côté du champ. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Capture d’écran : Améliorer le prompt"></a> |
|
|
64
64
|
| **Vérification de l’objectif** | <a id="feature-goalcheck"></a>Lancez un objectif avec `/goal`. Quand l’agent marque l’objectif comme terminé lors d’une itération automatique, l’objectif ne se ferme qu’après deux vérifications. D’abord, la commande de test du projet s’exécute dans le dossier de la discussion, avec le mode sandbox de la discussion. La commande est la vôtre ou celle trouvée dans `package.json`, `Makefile`, `Cargo.toml`, `go.mod` ou pytest. Quand la dernière étape de l’agent lui-même était une exécution réussie de ce test, il n’est pas relancé. Ensuite, un appel indépendant au modèle, sans outils, lit l’objectif, cette discussion, `git status` et le résultat du test. Si une vérification échoue, l’objectif reste actif et l’agent lit pourquoi, puis l’itération suivante continue. Une ligne sous la barre de l’objectif (**Vérification de l’objectif**) affiche le test et le dernier résultat. **Modifier** définit votre propre commande de test et une limite de temps ou de tokens ; au-delà de la limite, l’objectif devient bloqué. **Lancer maintenant** lance la vérification sans fermer l’objectif. Il a son propre menu **Modèle** dans les Réglages (par défaut : **Comme le modèle de la discussion**). Quand vous terminez l’objectif vous-même, rien n’est vérifié. | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="Capture d’écran : Vérification de l’objectif"></a> |
|
|
65
65
|
| **Autoriser pour cette discussion** | <a id="feature-allowforchat"></a>Quand la revue automatique vous demande votre avis, la carte d’approbation propose **Autoriser pour cette discussion** : le même outil dans la même discussion est ensuite autorisé, quels que soient les arguments, jusqu’à la fin de la limite de temps (1 heure par défaut ; choisissez-la dans **Réglages → Composer Plus → Autoriser pour cette discussion**). Ensuite, l’agent demande à nouveau. Une pastille dans l’en-tête liste les autorisations avec leur heure de fin et permet de les révoquer. Les autorisations restent valables après un redémarrage. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Capture d’écran : Autoriser pour cette discussion"></a> |
|
|
66
66
|
| **Statut du projet** | <a id="feature-projectstatus"></a>La ligne d’un projet dans la barre latérale affiche le même indicateur en cours / en attente / terminé que ses discussions : même replié, un projet vous indique donc qu’une discussion travaille ou a besoin de vous. Une discussion qui vous attend s’affiche en premier, puis une discussion terminée que vous n’avez pas encore ouverte (le point vert, même pendant qu’une autre discussion est encore en cours), puis l’indicateur en cours. Survolez-le pour voir les détails. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Capture d’écran : Statut du projet"></a> |
|
|
67
|
-
| **Branche Git sur les lignes de discussion** | <a id="feature-sessionbranch"></a>Chaque ligne de discussion de la barre latérale affiche une petite pastille grise avec la branche git sur laquelle se trouvait le dossier du projet de la discussion lors de son dernier tour (par exemple `main` ou `feature/login` ; un HEAD détaché affiche son identifiant de commit court entre parenthèses). Deux discussions d’un même projet sur des branches différentes ne se ressemblent plus, et vous voyez tout de suite quand vous allez continuer une discussion sur la mauvaise branche. Survolez la pastille pour voir le nom complet. La partie hôte lit la branche (`git branch --show-current`, en lecture seule) au début et à la fin de chaque tour ; une discussion sans tour depuis que vous avez installé cette fonctionnalité, ou un dossier qui n’est pas un dépôt git, n’affiche pas de pastille. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Capture d’écran : Branche Git sur les lignes de discussion"></a> |
|
|
67
|
+
| **Branche Git sur les lignes de discussion** | <a id="feature-sessionbranch"></a>Chaque ligne de discussion de la barre latérale affiche une petite pastille grise avec la branche git sur laquelle se trouvait le dossier du projet de la discussion lors de son dernier tour (par exemple `main` ou `feature/login` ; un HEAD détaché affiche son identifiant de commit court entre parenthèses). Deux discussions d’un même projet sur des branches différentes ne se ressemblent plus, et vous voyez tout de suite quand vous allez continuer une discussion sur la mauvaise branche. Survolez la pastille pour voir le nom complet. La partie hôte lit la branche (`git branch --show-current`, en lecture seule) au début et à la fin de chaque tour ; une discussion sans tour depuis que vous avez installé cette fonctionnalité, ou un dossier qui n’est pas un dépôt git, n’affiche pas de pastille. Si la ligne de projet au-dessus de la discussion porte le même nom que la branche (par exemple un dossier « Une branche par discussion »), la ligne de discussion n’affiche pas de pastille, mais « Dans une seule liste » l’affiche toujours. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Capture d’écran : Branche Git sur les lignes de discussion"></a> |
|
|
68
68
|
| **Tout marquer comme lu** | <a id="feature-markprojectread"></a>Dans la barre latérale, cliquez sur le bouton **…** d’un projet → **Tout marquer comme lu**. Le point vert non lu disparaît d’un coup de toutes les discussions de ce projet ; les autres projets gardent le leur. L’élément est grisé (**Aucune discussion non lue**) quand le projet n’en a aucune. | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="Capture d’écran : Tout marquer comme lu"></a> |
|
|
69
69
|
| **Projets actifs en premier** | <a id="feature-activeprojectsfirst"></a>Quand une discussion commence à s’exécuter ou a besoin de vous, son projet monte en haut de la barre latérale avec l’animation de ligne de dsh (le même mouvement que si vous l’y faisiez glisser). Les projets terminés restent à leur place ; faites-les glisser où vous voulez, comme d’habitude. Les déplacements sont enregistrés dans l’ordre des projets de dsh : si vous désactivez cette fonctionnalité, l’ordre actuel reste. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Capture d’écran : Projets actifs en premier"></a> |
|
|
70
70
|
| **Filtre des projets récents** | <a id="feature-recentprojects"></a>Barre latérale → options d’affichage (icône de curseurs) → **Actifs au cours des 2 dernières heures**. Tant que cette option est sélectionnée, la barre latérale n’affiche que les projets qui ont une discussion active au cours des 2 dernières heures : une discussion mise à jour pendant ce temps, une discussion en cours ou en attente, la discussion ouverte, ou une discussion terminée que vous n’avez pas encore ouverte (le point vert « terminé » de dsh), même après les 2 heures. Les projets sans une telle discussion sont masqués, y compris les projets nouveaux et vides. Sélectionnez de nouveau l’option pour afficher tous les projets. Le choix est conservé sur cet appareil. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Capture d’écran : Filtre des projets récents"></a> |
|
|
@@ -169,7 +169,7 @@ Testé sur dsh `0.2.0-rc.2` (bureau et web) et `0.2.1-rc.2` (web). La CI exécut
|
|
|
169
169
|
- **Pas de pastille de branche sur une ligne de discussion :** 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).
|
|
170
170
|
- **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.
|
|
171
171
|
- **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é).
|
|
172
|
-
- **L’installation échoue juste après une nouvelle version :** ajoutez la version (`dsh-composer-plus@1.
|
|
172
|
+
- **L’installation échoue juste après une nouvelle version :** ajoutez la version (`dsh-composer-plus@1.15.0`) ; voir la note d’installation plus haut.
|
|
173
173
|
|
|
174
174
|
## Limites
|
|
175
175
|
|
|
@@ -195,7 +195,7 @@ Testé sur dsh `0.2.0-rc.2` (bureau et web) et `0.2.1-rc.2` (web). La CI exécut
|
|
|
195
195
|
- **Cette discussion** ne compte que les fichiers écrits par les outils de fichiers de dsh (`write`, `edit`, `str_replace_editor`). Les fichiers modifiés par une commande (`bash`) ne sont pas dans cette vue ; ils apparaissent sous **Non validées**. Sans instantané de l’Annulation de tour pour la discussion (Annulation de tour désactivée, dsh-rewind-plugin installé, ou discussion plus ancienne que le plugin), la vue compare avec le dernier commit et l’indique. L’Annulation de tour garde les 50 instantanés les plus récents d’une discussion : dans une discussion plus longue, la vue compare avec le plus ancien gardé, indique à partir de quel message et ne compte pas les modifications antérieures. **Masquer les modifications d’espaces** correspond à `git diff -w` : une ligne qui n’a changé que par des espaces à l’intérieur est aussi masquée.
|
|
196
196
|
- **Ouvrir une issue GitHub** a besoin de GitHub CLI (`gh`) dans le PATH de dsh et d’un dépôt distant GitHub dans le dossier de la discussion. L’action dure au plus 60 s ; si `gh` met plus longtemps, l’issue peut exister sur GitHub sans son lien dans la liste (avant de cliquer à nouveau, regardez sur GitHub : la liste ne lit le lien que d’une exécution terminée, donc un nouveau clic peut ouvrir une deuxième issue). Un dossier avec plus d’un dépôt distant GitHub utilise la valeur par défaut de `gh` lui-même (`gh repo set-default`).
|
|
197
197
|
- **Discussions qui ont modifié ce fichier** ne connaît que les outils de fichiers de dsh (`write`, `edit`, `str_replace_editor`), comme **Cette discussion** : une modification faite par une commande (`bash`) n’est pas listée. La liste lit les 300 discussions les plus récentes du dépôt (selon leur date de création) et le signale quand il y en a plus ; elle affiche au plus 100 lignes. Un fichier renommé est listé sous le nom que l’outil a écrit. Une discussion dont le dossier est hors du dépôt (y compris par un autre chemin vers les mêmes fichiers) n’est pas comptée. La première ouverture après le démarrage de dsh lit tous les journaux de discussion du dépôt (environ 4 s pour 275 discussions) ; les ouvertures suivantes ne lisent que les discussions modifiées depuis.
|
|
198
|
-
- **Branche Git sur les lignes de discussion** affiche la branche du dossier de la discussion au début ou à la fin de son dernier tour, pas la branche actuelle : un changement de branche hors d’un tour s’affiche après le tour suivant. Les discussions antérieures à cette version n’affichent pas de pastille avant leur prochain tour. La pastille se place dans le balisage des lignes de discussion de dsh (dsh n’a pas d’emplacement prévu à cet endroit) ; si une mise à jour de dsh change ce balisage, aucune pastille ne s’affiche.
|
|
198
|
+
- **Branche Git sur les lignes de discussion** affiche la branche du dossier de la discussion au début ou à la fin de son dernier tour, pas la branche actuelle : un changement de branche hors d’un tour s’affiche après le tour suivant. Les discussions antérieures à cette version n’affichent pas de pastille avant leur prochain tour. La pastille se place dans le balisage des lignes de discussion de dsh (dsh n’a pas d’emplacement prévu à cet endroit) ; si une mise à jour de dsh change ce balisage, aucune pastille ne s’affiche. Si la ligne de projet au-dessus de la discussion porte le même nom que la branche (par exemple un dossier « Une branche par discussion »), la ligne de discussion n’affiche pas de pastille, mais « Dans une seule liste » l’affiche toujours.
|
|
199
199
|
- **Rechercher dans la discussion** ne cherche que dans ce que la page affiche : les messages et les réponses chargés (faites défiler vers le haut ou cliquez sur **Charger les précédents** pour les plus anciens), ni dans les étapes d’outil fermées, ni dans le texte replié de la sortie d’un outil. La recherche compte au plus 2 000 résultats (puis « 2000+ »). Elle utilise l’API de surlignage du navigateur (Chromium 105 et plus récent ; l’app de bureau l’a) : dans un navigateur plus ancien, le compteur et les déplacements fonctionnent sans la couleur. `Cmd+F` sur un Mac (`Ctrl+F` sous Windows et Linux) ne l’ouvre que lorsqu’une discussion est à l’écran ; ailleurs, la recherche du navigateur fonctionne comme avant. Sur un Mac, `Ctrl+F` garde son rôle macOS dans les champs de texte (le curseur avance d’un caractère).
|
|
200
200
|
- Une notification envoyée avant un redémarrage ne fait que ramener dsh au premier plan quand vous cliquez dessus.
|
|
201
201
|
- Les projets actifs sont déplacés avec l’ordre des projets enregistré par dsh : le nouvel ordre est donc conservé après un redémarrage. Les discussions hors de tout projet (« Sans groupe ») ne peuvent pas être déplacées ; dsh les liste toujours en dernier.
|
|
@@ -271,7 +271,7 @@ Testé sur dsh `0.2.0-rc.2` (bureau et web) et `0.2.1-rc.2` (web). La CI exécut
|
|
|
271
271
|
|
|
272
272
|
**Comment ouvrir Nouvelle session toujours dans le même projet ?** Réglages → Composer Plus → **Espace de travail par défaut pour Nouvelle session** → **Ouvrir Nouvelle session dans** → choisissez le projet. Le `+` à côté d’un autre projet ouvre toujours ce projet.
|
|
273
273
|
|
|
274
|
-
**Comment travailler sur plusieurs fonctionnalités d’un même projet en même temps, chacune sur sa propre branche ?** Avec **Une branche par discussion** : nouvelle discussion → le bouton
|
|
274
|
+
**Comment travailler sur plusieurs fonctionnalités d’un même projet en même temps, chacune sur sa propre branche ?** Avec **Une branche par discussion** : nouvelle discussion → le bouton main avec l’icône de branche → **Nouvelle branche**, puis envoyez le premier message. Chaque discussion a sa propre branche et son propre dossier de worktree, avec votre `.env` et votre `node_modules` quand `.worktreeinclude` les liste. L’en-tête de la discussion indique sur quelle branche vous êtes.
|
|
275
275
|
|
|
276
276
|
**Puis-je envoyer une photo depuis mon iPhone ?** Oui. Dans une discussion Tether, touchez **+** à côté du champ de message → Camera, Photos (jusqu’à 4) ou Paste image. Les photos arrivent dans la discussion sur le Mac comme pièces jointes de votre message, donc le modèle les voit.
|
|
277
277
|
|
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.15.0`।
|
|
33
33
|
|
|
34
34
|
## सुविधाएं
|
|
35
35
|
|
|
@@ -57,14 +57,14 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
57
57
|
| **नई चैट में प्रोजेक्ट खोज** | <a id="feature-projectpicker"></a>नई चैट → कंपोज़र के ऊपर वाला प्रोजेक्ट बटन। प्रोजेक्ट A–Z क्रम में दिखते हैं, और सबसे ऊपर **प्रोजेक्ट खोजें** बॉक्स होता है। नाम का कोई हिस्सा लिखें (बड़े-छोटे अक्षरों और एक्सेंट से फ़र्क नहीं पड़ता) और पहला मिलान चुनने के लिए `Enter` दबाएं। कुछ भी न मिले, तो **कोई मिलता-जुलता प्रोजेक्ट नहीं** दिखता है। साइडबार में dsh का सेव किया गया प्रोजेक्ट क्रम नहीं बदलता। | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="स्क्रीनशॉट: नई चैट में प्रोजेक्ट खोज"></a> |
|
|
58
58
|
| **नया सेशन के लिए डिफ़ॉल्ट वर्कस्पेस** | <a id="feature-defaultworkspace"></a>सेटिंग → Composer Plus → **नया सेशन के लिए डिफ़ॉल्ट वर्कस्पेस** → **नया सेशन यहाँ खोलें**: कोई प्रोजेक्ट चुनें, या **सामान्य फ़ोल्डर (default-workspace)** चुनें (डिफ़ॉल्ट: dsh का अपना फ़ोल्डर `Documents/deepseek-harness/default-workspace`, जो पहली बार इस्तेमाल करने पर बनता है)। इसके बाद साइडबार में सबसे ऊपर वाला **नया सेशन** (और उसका शॉर्टकट) नई चैट हमेशा वहीं खोलता है, तब भी जब किसी दूसरे प्रोजेक्ट की चैट खुली हो। किसी प्रोजेक्ट के पास वाला `+` अब भी वही प्रोजेक्ट खोलता है, और नई चैट में कंपोज़र के ऊपर वाला प्रोजेक्ट बटन अब भी प्रोजेक्ट बदलता है। | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="स्क्रीनशॉट: नया सेशन के लिए डिफ़ॉल्ट वर्कस्पेस"></a> |
|
|
59
59
|
| **चैट में खोजें** | <a id="feature-findinchat"></a>किसी चैट में Mac पर `Cmd+F` (Windows और Linux पर `Ctrl+F`) दबाएं: उसके ऊपर एक खोज बॉक्स खुलता है। कोई शब्द लिखें: स्क्रीन पर दिख रहे संदेशों और जवाबों में हर मिलान हाइलाइट होता है, मौजूदा मिलान ज़्यादा गहरे रंग में, और बॉक्स n / कुल दिखाता है। `Enter` या `↓` अगले मिलान पर और `Shift+Enter` या `↑` पिछले मिलान पर ले जाता है (तीर वाले बटन भी); चैट मिलान को बीच तक स्क्रॉल करती है। बड़े-छोटे अक्षर, एक्सेंट और तुर्की का बिना बिंदु वाला ı मायने नहीं रखते। `Esc` बॉक्स बंद करता है और कर्सर को उसकी पिछली जगह पर वापस रखता है। जवाब आते समय भी खोज चैट के साथ चलती रहती है। | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="स्क्रीनशॉट: चैट में खोजें"></a> |
|
|
60
|
-
| **हर चैट की अपनी ब्रांच** | <a id="feature-worktreechats"></a>नई चैट → प्रोजेक्ट बटन के
|
|
60
|
+
| **हर चैट की अपनी ब्रांच** | <a id="feature-worktreechats"></a>नई चैट → प्रोजेक्ट बटन और मोड बटन के बीच वाला main बटन (ब्रांच आइकन) → **नई ब्रांच**, फिर पहला संदेश लिखें और भेजें। पहले संदेश के साथ इमेज और फ़ाइलें भेजी जा सकती हैं। AI उसी संदेश से ब्रांच का नाम रखता है (`feat/…`, `fix/…`), Composer Plus उसके लिए `<project>/.worktrees/` में एक git worktree बनाता है, `.worktreeinclude` में दी गई अनदेखी फ़ाइलें (जैसे `.env` और `node_modules/`) कॉपी करता है और वहां आपके संदेश के साथ नई चैट खोलता है। खुली चैट का हेडर ⑂ ब्रांच · N बदलाव · ↑ ↓ (या **push नहीं हुई**) दिखाता है; **बदलाव** खोलने के लिए उस पर क्लिक करें। उसी मेन्यू में खुले worktree की सूची होती है: उनमें से किसी एक में चैट शुरू करने के लिए उसे चुनें। साइडबार में ब्रांच फ़ोल्डर उनके प्रोजेक्ट के अंदर देखने के लिए dsh के **व्यू के विकल्प** → **वर्कस्पेस ट्री** चुनें। | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="स्क्रीनशॉट: हर चैट की अपनी ब्रांच"></a> |
|
|
61
61
|
| **अगले संदेश का अनुमान** | <a id="feature-nextprediction"></a>डिफ़ॉल्ट रूप से चालू: आप इसे **सेटिंग → Composer Plus** में बंद कर सकते हैं। जब एजेंट कोई टर्न पूरा करता है (रुका हुआ या विफल टर्न नहीं), तो खाली कंपोज़र ग्रे टेक्स्ट में आपके अगले संदेश का अनुमान दिखाता है, साथ में **स्वीकार करने के लिए Tab** संकेत होता है। `Tab` टेक्स्ट को कंपोज़र में डालता है, पर भेजता नहीं। `Esc` उस टर्न के लिए अनुमान छिपा देता है। टाइप करना शुरू करने पर भी यह छिप जाता है, और नया टर्न इसे बदल देता है। स्विच के नीचे का **मॉडल** मेन्यू dsh के अपने मॉडल दिखाता है (वही सूची, जो dsh के मॉडल मेन्यू में है)। डिफ़ॉल्ट रूप से **dsh डिफ़ॉल्ट** चुना होता है, जो dsh के डिफ़ॉल्ट मॉडल के अनुसार चलता है। हर पूरे हुए टर्न पर एक छोटी मॉडल कॉल होती है। Tether में अनुमान खाली कंपोज़र के ऊपर दिखता है: उसे फ़ील्ड में डालने के लिए उस पर टैप करें। | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="स्क्रीनशॉट: अगले संदेश का अनुमान"></a> |
|
|
62
62
|
| **टाइप करते समय पूरा करें** | <a id="feature-typingcompletion"></a>डिफ़ॉल्ट रूप से बंद: आप इसे **सेटिंग → Composer Plus** में चालू कर सकते हैं। जब आप टाइप करते हैं, कर्सर के ठीक बाद ग्रे टेक्स्ट दिखाता है कि आपका संदेश आगे कैसे बढ़ सकता है। `Tab` इसे संदेश में जोड़ता है, पर भेजता नहीं। `Esc` इसे छिपा देता है। यह केवल आपके अपने अगले शब्द सुझाता है: आपको कभी जवाब नहीं देता, और कोई गढ़ा हुआ त्रुटि संदेश या नाम नहीं जोड़ता। अगर संदेश पूरा लगता है या मॉडल को भरोसा नहीं है, तो कुछ नहीं दिखता। ग्रे टेक्स्ट के अगले अक्षर टाइप करने पर यह बना रहता है, और नई मॉडल कॉल नहीं होती। इसके स्विच के नीचे इसका अपना **मॉडल** मेन्यू है। इसकी पहली एंट्री, **अगले संदेश के अनुमान जैसा**, **अगले संदेश का अनुमान** वाला मॉडल इस्तेमाल करती है (डिफ़ॉल्ट); हर सुविधा के लिए अलग मॉडल इस्तेमाल करने के लिए कोई दूसरा मॉडल चुनें, जैसे पूरा करने के लिए कोई तेज़ मॉडल। टाइप करते समय हर ठहराव पर यह एक मॉडल कॉल करता है, इसलिए यह अनुमान से कहीं ज़्यादा टोकन खर्च करता है: कोई तेज़ और कम लागत वाला मॉडल चुनें। यह स्लैश कमांड पर, फ़ाइल चिप वाले संदेश पर, या कर्सर के आख़िर में न होने पर नहीं चलता। Tether में टाइप करते समय बाकी टेक्स्ट फ़ील्ड के ऊपर दिखता है: उसे जोड़ने के लिए उस पर टैप करें। | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="स्क्रीनशॉट: टाइप करते समय पूरा करें"></a> |
|
|
63
63
|
| **प्रॉम्प्ट बेहतर करें** | <a id="feature-promptimprove"></a>कोई मोटा-मोटा अनुरोध टाइप करें, फिर मॉडल मेन्यू के पास जादुई छड़ी (**प्रॉम्प्ट बेहतर करें**) पर क्लिक करें। एक मॉडल कॉल उसे ज़्यादा साफ़ प्रॉम्प्ट के रूप में दोबारा लिखती है: पहले लक्ष्य, कई हिस्से हों तो छोटे क्रमांकित चरण, और चलाने वाली जांच। यह इस चैट (रोलबैक किए गए संदेशों को छोड़कर), प्रोजेक्ट की README, AGENTS.md और मैनिफ़ेस्ट, बदली गई फ़ाइलों और उन फ़ाइलों को पढ़ता है जिनके नाम आपके शब्दों से मिलते हैं, और आपकी भाषा बनाए रखता है। यह कभी फ़ाइलों के नाम नहीं गढ़ता। नया टेक्स्ट आपके ड्राफ़्ट की जगह ले लेता है, पर भेजा नहीं जाता: उसे पढ़ें, बदलें, फिर `Enter` दबाएं। `Cmd/Ctrl+Z` आपका टेक्स्ट एक चरण में वापस लाता है, और बटन (**सुधार वापस लें**) भी। अगर इसके काम करते समय आप टाइप करते हैं, तो आपका नया टेक्स्ट बना रहता है। `Esc` या दूसरा क्लिक इसे रद्द करता है। सेटिंग में इसका अपना **मॉडल** मेन्यू है (डिफ़ॉल्ट: **चैट के मॉडल जैसा**)। स्लैश कमांड या फ़ाइल चिप वाले संदेश के लिए नहीं। Tether में छड़ी फ़ील्ड के पास है। | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="स्क्रीनशॉट: प्रॉम्प्ट बेहतर करें"></a> |
|
|
64
64
|
| **लक्ष्य जांच** | <a id="feature-goalcheck"></a>`/goal` से एक लक्ष्य शुरू करें। जब एजेंट किसी अपने-आप चलने वाले राउंड में लक्ष्य को पूरा मार्क करता है, तो लक्ष्य दो जांचों के बाद ही बंद होता है। पहले, प्रोजेक्ट की टेस्ट कमांड चैट के फ़ोल्डर में, चैट के सैंडबॉक्स मोड में चलती है। कमांड आपकी अपनी होती है या वह जो `package.json`, `Makefile`, `Cargo.toml`, `go.mod` या pytest में मिली। अगर एजेंट का अपना सबसे नया कदम इसी टेस्ट का सफल रन था, तो यह दोबारा नहीं चलती। फिर एक स्वतंत्र मॉडल कॉल, बिना टूल के, लक्ष्य, यह चैट, `git status` और टेस्ट का नतीजा पढ़ती है। अगर कोई जांच विफल होती है, तो लक्ष्य सक्रिय रहता है, एजेंट वजह पढ़ता है, फिर अगला राउंड चलता है। लक्ष्य बार के नीचे एक पंक्ति (**लक्ष्य जांच**) टेस्ट और पिछला नतीजा दिखाती है। **संपादित करें** से आप अपनी टेस्ट कमांड और समय या टोकन की सीमा तय करते हैं; सीमा पार होने पर लक्ष्य अवरुद्ध हो जाता है। **अभी चलाएं** लक्ष्य को बंद किए बिना जांच चलाता है। सेटिंग में इसका अपना **मॉडल** मेन्यू है (डिफ़ॉल्ट: **चैट के मॉडल जैसा**)। जब आप खुद लक्ष्य पूरा करते हैं, तो कुछ भी नहीं जांचा जाता। | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="स्क्रीनशॉट: लक्ष्य जांच"></a> |
|
|
65
65
|
| **इस चैट के लिए अनुमति दें** | <a id="feature-allowforchat"></a>जब ऑटो रिव्यू आपसे पूछता है, तो मंज़ूरी कार्ड पर **इस चैट के लिए अनुमति दें** दिखता है। इसके बाद उसी चैट में वही टूल किसी भी आर्ग्युमेंट के साथ बिना पूछे चलता है, जब तक समय सीमा खत्म नहीं होती (डिफ़ॉल्ट रूप से 1 घंटा; इसे **सेटिंग → Composer Plus → इस चैट के लिए अनुमति दें** में चुनें)। फिर एजेंट दोबारा पूछता है। हेडर की एक चिप अनुमतियों की सूची उनके खत्म होने के समय के साथ दिखाती है और उन्हें रद्द करती है। रीस्टार्ट के बाद भी अनुमतियां बनी रहती हैं। | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="स्क्रीनशॉट: इस चैट के लिए अनुमति दें"></a> |
|
|
66
66
|
| **प्रोजेक्ट की स्थिति** | <a id="feature-projectstatus"></a>साइडबार में प्रोजेक्ट की पंक्ति वही स्पिनर / इंतज़ार / पूरा होने का संकेत दिखाती है, जो उसकी चैट दिखाती हैं। इसलिए बंद (collapsed) प्रोजेक्ट भी बताता है कि अंदर कोई चैट काम कर रही है या उसे आपकी ज़रूरत है। सबसे पहले आपका इंतज़ार कर रही चैट दिखती है, फिर पूरी हुई ऐसी चैट जिसे आपने अभी तक नहीं खोला (हरा बिंदु, तब भी जब कोई दूसरी चैट अभी चल रही हो), फिर स्पिनर। विवरण देखने के लिए उस पर पॉइंटर ले जाएं। | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="स्क्रीनशॉट: प्रोजेक्ट की स्थिति"></a> |
|
|
67
|
-
| **चैट पंक्तियों पर Git ब्रांच** | <a id="feature-sessionbranch"></a>साइडबार की हर चैट पंक्ति एक छोटे स्लेटी लेबल में वह git ब्रांच दिखाती है, जिस पर चैट के आख़िरी टर्न के समय चैट का प्रोजेक्ट फ़ोल्डर था (जैसे `main` या `feature/login`; detached HEAD होने पर कोष्ठक में छोटा कमिट ID दिखता है)। एक प्रोजेक्ट की अलग-अलग ब्रांच वाली दो चैट अब एक जैसी नहीं दिखतीं, और जब आप किसी चैट को गलत ब्रांच पर जारी रखने वाले हों, तो यह तुरंत दिख जाता है। पूरा नाम देखने के लिए लेबल पर पॉइंटर ले जाएं। Host वाला हिस्सा टर्न शुरू और ख़त्म होने पर ब्रांच पढ़ता है (`git branch --show-current`, सिर्फ़ पढ़ने के लिए); जिस चैट में यह इंस्टॉल करने के बाद से कोई टर्न नहीं हुआ, या जो फ़ोल्डर git रिपॉज़िटरी नहीं है, उसमें लेबल नहीं दिखता। | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="स्क्रीनशॉट: चैट पंक्तियों पर Git ब्रांच"></a> |
|
|
67
|
+
| **चैट पंक्तियों पर Git ब्रांच** | <a id="feature-sessionbranch"></a>साइडबार की हर चैट पंक्ति एक छोटे स्लेटी लेबल में वह git ब्रांच दिखाती है, जिस पर चैट के आख़िरी टर्न के समय चैट का प्रोजेक्ट फ़ोल्डर था (जैसे `main` या `feature/login`; detached HEAD होने पर कोष्ठक में छोटा कमिट ID दिखता है)। एक प्रोजेक्ट की अलग-अलग ब्रांच वाली दो चैट अब एक जैसी नहीं दिखतीं, और जब आप किसी चैट को गलत ब्रांच पर जारी रखने वाले हों, तो यह तुरंत दिख जाता है। पूरा नाम देखने के लिए लेबल पर पॉइंटर ले जाएं। Host वाला हिस्सा टर्न शुरू और ख़त्म होने पर ब्रांच पढ़ता है (`git branch --show-current`, सिर्फ़ पढ़ने के लिए); जिस चैट में यह इंस्टॉल करने के बाद से कोई टर्न नहीं हुआ, या जो फ़ोल्डर git रिपॉज़िटरी नहीं है, उसमें लेबल नहीं दिखता। अगर चैट के ऊपर वाली प्रोजेक्ट पंक्ति का नाम ब्रांच के नाम जैसा ही है (जैसे “हर चैट की अपनी ब्रांच” वाला फ़ोल्डर), तो चैट पंक्ति पर लेबल नहीं दिखता, लेकिन “एक ही सूची में” व्यू में लेबल अब भी दिखता है। | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="स्क्रीनशॉट: चैट पंक्तियों पर Git ब्रांच"></a> |
|
|
68
68
|
| **सभी को पढ़ा हुआ मार्क करें** | <a id="feature-markprojectread"></a>साइडबार में किसी प्रोजेक्ट के **…** बटन पर क्लिक करें → **सभी को पढ़ा हुआ मार्क करें**। उस प्रोजेक्ट की हर चैट से हरा अपठित बिंदु एक साथ हट जाता है; दूसरे प्रोजेक्ट के बिंदु बने रहते हैं। जब प्रोजेक्ट में कोई अपठित चैट नहीं होती, तो यह आइटम ग्रे दिखता है (**कोई अपठित चैट नहीं**)। | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="स्क्रीनशॉट: सभी को पढ़ा हुआ मार्क करें"></a> |
|
|
69
69
|
| **सक्रिय प्रोजेक्ट पहले** | <a id="feature-activeprojectsfirst"></a>जब कोई चैट चलने लगती है या उसे आपकी ज़रूरत होती है, तो उसका प्रोजेक्ट dsh के अपने पंक्ति एनिमेशन के साथ साइडबार में सबसे ऊपर चला जाता है (वैसे ही जैसे आप उसे खींचकर वहां ले जाते)। पूरे हो चुके प्रोजेक्ट अपनी जगह पर रहते हैं; उन्हें हमेशा की तरह कहीं भी खींचें। बदला गया क्रम dsh के प्रोजेक्ट क्रम में सेव होता है, इसलिए इसे बंद करने पर मौजूदा क्रम बना रहता है। | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="स्क्रीनशॉट: सक्रिय प्रोजेक्ट पहले"></a> |
|
|
70
70
|
| **हाल के प्रोजेक्ट का फ़िल्टर** | <a id="feature-recentprojects"></a>साइडबार → व्यू के विकल्प (स्लाइडर आइकन) → **पिछले 2 घंटों में सक्रिय**। इसके चुने रहने पर साइडबार सिर्फ़ वे प्रोजेक्ट दिखाता है, जिनमें पिछले 2 घंटों में कोई चैट सक्रिय रही हो। इसमें शामिल हैं: इस समय में अपडेट हुई चैट, चल रही या इंतज़ार कर रही चैट, खुली हुई चैट, या पूरी हुई ऐसी चैट जिसे आपने अभी तक नहीं खोला (dsh का हरा “पूरा हुआ” बिंदु), 2 घंटे बाद भी। जिन प्रोजेक्ट में ऐसी कोई चैट नहीं है, वे छिप जाते हैं, नए और खाली प्रोजेक्ट भी। सभी प्रोजेक्ट दिखाने के लिए इसे फिर से चुनें। यह चुनाव इसी डिवाइस पर याद रहता है। | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="स्क्रीनशॉट: हाल के प्रोजेक्ट का फ़िल्टर"></a> |
|
|
@@ -169,7 +169,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
169
169
|
- **चैट पंक्ति पर ब्रांच लेबल नहीं है:** यह वर्शन इंस्टॉल करने के बाद से उस चैट में कोई टर्न नहीं हुआ, उसका फ़ोल्डर git रिपॉज़िटरी नहीं है, या **चैट पंक्तियों पर Git ब्रांच** बंद है। अपडेट के बाद dsh रीस्टार्ट करें (ब्रांच Host वाला हिस्सा दर्ज करता है)।
|
|
170
170
|
- **लक्ष्य जांच बताती है कि टेस्ट कोड 127 या "not found" के साथ बंद हुआ:** Finder या Dock से शुरू किए गए dsh का PATH आपके टर्मिनल से छोटा हो सकता है, इसलिए उसे `npm`, `pnpm` या `cargo` नहीं मिलता। dsh को टर्मिनल से शुरू करें, या **लक्ष्य जांच** → **संपादित करें** में पूरे पाथ के साथ अपनी टेस्ट कमांड सेट करें। **अभी चलाएं** नतीजा तुरंत दिखाता है।
|
|
171
171
|
- **लक्ष्य बंद नहीं होता और एजेंट काम करता रहता है:** **लक्ष्य जांच** को कोई विफल टेस्ट या अधूरा काम मिला; लक्ष्य के नीचे की पंक्ति वजह दिखाती है (ब्योरा देखने के लिए नतीजे पर पॉइंटर ले जाएं)। वजह या टेस्ट कमांड ठीक करें, या `/goal` या लक्ष्य बार से लक्ष्य खुद पूरा करें (उसकी जांच नहीं होती)।
|
|
172
|
-
- **रिलीज़ के तुरंत बाद इंस्टॉल विफल होता है:** वर्शन जोड़ें (`dsh-composer-plus@1.
|
|
172
|
+
- **रिलीज़ के तुरंत बाद इंस्टॉल विफल होता है:** वर्शन जोड़ें (`dsh-composer-plus@1.15.0`), ऊपर इंस्टॉल वाला नोट देखें।
|
|
173
173
|
|
|
174
174
|
## सीमाएं
|
|
175
175
|
|
|
@@ -195,7 +195,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
195
195
|
- **यह चैट** सिर्फ़ वे फ़ाइलें गिनता है, जो dsh के फ़ाइल टूल (`write`, `edit`, `str_replace_editor`) ने लिखीं। जो फ़ाइलें किसी कमांड (`bash`) ने बदलीं, वे इस व्यू में नहीं हैं; वे **कमिट नहीं किए गए** में दिखती हैं। अगर चैट का टर्न रोलबैक स्नैपशॉट नहीं है (टर्न रोलबैक बंद है, dsh-rewind-plugin इंस्टॉल है, या चैट प्लगइन से पुरानी है), तो व्यू आखिरी कमिट से तुलना करता है और यह बताता है। टर्न रोलबैक किसी चैट के 50 नवीनतम स्नैपशॉट रखता है: लंबी चैट में व्यू सबसे पुराने रखे गए स्नैपशॉट से तुलना करता है, बताता है कि किस संदेश से, और पहले के बदलाव नहीं गिनता। **व्हाइटस्पेस बदलाव छिपाएं** का मतलब `git diff -w` है: जिस पंक्ति में सिर्फ़ अंदर की स्पेस बदली, वह भी छिप जाती है।
|
|
196
196
|
- **GitHub इश्यू खोलें** के लिए dsh के PATH में GitHub CLI (`gh`) और चैट के फ़ोल्डर में GitHub रिमोट ज़रूरी है। यह ज़्यादा से ज़्यादा 60 सेकंड चलता है; अगर `gh` इससे ज़्यादा समय लेता है, तो इश्यू GitHub पर बन चुका हो सकता है, पर सूची में उसका लिंक नहीं होगा (दोबारा क्लिक करने से पहले GitHub पर देखें: सूची लिंक सिर्फ़ पूरे हुए रन से पढ़ती है, इसलिए नया क्लिक दूसरा इश्यू खोल सकता है)। एक से ज़्यादा GitHub रिमोट वाला फ़ोल्डर `gh` का अपना डिफ़ॉल्ट (`gh repo set-default`) इस्तेमाल करता है।
|
|
197
197
|
- **इस फ़ाइल को बदलने वाली चैट**, **यह चैट** की तरह, सिर्फ़ dsh के फ़ाइल टूल (`write`, `edit`, `str_replace_editor`) जानती है: किसी कमांड (`bash`) से हुआ बदलाव सूची में नहीं आता। यह रिपॉज़िटरी की सबसे नई 300 चैट पढ़ती है (बनने के समय के हिसाब से) और ज़्यादा होने पर यह बताती है; यह ज़्यादा से ज़्यादा 100 पंक्तियां दिखाती है। नाम बदली गई फ़ाइल उसी नाम से दिखती है, जो टूल ने लिखा। जिस चैट का फ़ोल्डर रिपॉज़िटरी के बाहर है (उन्हीं फ़ाइलों तक किसी दूसरे पाथ से भी), वह नहीं गिनी जाती। dsh शुरू होने के बाद पहली बार खोलने पर यह रिपॉज़िटरी के सभी चैट लॉग पढ़ती है (275 चैट के लिए लगभग 4 सेकंड); बाद में खोलने पर यह सिर्फ़ वे चैट पढ़ती है, जो तब से बदली हैं।
|
|
198
|
-
- **चैट पंक्तियों पर Git ब्रांच** चैट के फ़ोल्डर की वह ब्रांच दिखाता है, जो उसके आख़िरी टर्न के शुरू या ख़त्म होने के समय थी, अभी की ब्रांच नहीं: टर्न के बाहर ब्रांच बदलने पर वह अगले टर्न के बाद दिखती है। इस वर्शन से पहले की चैट में अगले टर्न तक लेबल नहीं दिखता। लेबल dsh की चैट पंक्ति के मार्कअप में बैठता है (dsh में वहां कोई जगह (slot) नहीं है); अगर dsh का कोई अपडेट वह मार्कअप बदलता है, तो लेबल नहीं दिखता।
|
|
198
|
+
- **चैट पंक्तियों पर Git ब्रांच** चैट के फ़ोल्डर की वह ब्रांच दिखाता है, जो उसके आख़िरी टर्न के शुरू या ख़त्म होने के समय थी, अभी की ब्रांच नहीं: टर्न के बाहर ब्रांच बदलने पर वह अगले टर्न के बाद दिखती है। इस वर्शन से पहले की चैट में अगले टर्न तक लेबल नहीं दिखता। लेबल dsh की चैट पंक्ति के मार्कअप में बैठता है (dsh में वहां कोई जगह (slot) नहीं है); अगर dsh का कोई अपडेट वह मार्कअप बदलता है, तो लेबल नहीं दिखता। अगर चैट के ऊपर वाली प्रोजेक्ट पंक्ति का नाम ब्रांच के नाम जैसा ही है (जैसे “हर चैट की अपनी ब्रांच” वाला फ़ोल्डर), तो चैट पंक्ति पर लेबल नहीं दिखता, लेकिन “एक ही सूची में” व्यू में लेबल अब भी दिखता है।
|
|
199
199
|
- **चैट में खोजें** सिर्फ़ वही खोजता है, जो पेज दिखाता है: लोड हो चुके संदेश और जवाब (पुराने संदेशों के लिए ऊपर स्क्रॉल करें या **पहले के लोड करें** पर क्लिक करें), बंद टूल स्टेप नहीं और किसी टूल के आउटपुट में फ़ोल्ड किया गया टेक्स्ट भी नहीं। यह ज़्यादा से ज़्यादा 2,000 मिलान गिनता है (उसके बाद "2000+")। यह ब्राउज़र का हाइलाइट API इस्तेमाल करता है (Chromium 105 और बाद के वर्शन; डेस्कटॉप ऐप में यह है): पुराने ब्राउज़र में गिनती और एक मिलान से दूसरे पर जाना काम करता है, पर रंग नहीं दिखता। Mac पर `Cmd+F` (Windows और Linux पर `Ctrl+F`) इसे सिर्फ़ तब खोलता है, जब स्क्रीन पर कोई चैट हो; बाकी जगहों पर ब्राउज़र की अपनी खोज पहले की तरह काम करती है। Mac पर `Ctrl+F` टेक्स्ट फ़ील्ड में अपना macOS काम करता रहता है (कर्सर एक अक्षर आगे जाता है)।
|
|
200
200
|
- रीस्टार्ट से पहले भेजी गई सूचना पर क्लिक करने से सिर्फ़ dsh सामने आता है।
|
|
201
201
|
- सक्रिय प्रोजेक्ट dsh के सेव किए गए प्रोजेक्ट क्रम के ज़रिए खिसकाए जाते हैं, इसलिए नया क्रम रीस्टार्ट के बाद भी बना रहता है। किसी प्रोजेक्ट से बाहर की चैट ("बिना समूह") नहीं खिसकाई जा सकतीं; dsh उन्हें हमेशा आखिर में दिखाता है।
|
|
@@ -271,7 +271,7 @@ dsh `0.2.0-rc.2` (डेस्कटॉप और वेब) और `0.2.1-rc.2`
|
|
|
271
271
|
|
|
272
272
|
**नया सेशन हमेशा एक ही प्रोजेक्ट में कैसे खोलें?** सेटिंग → Composer Plus → **नया सेशन के लिए डिफ़ॉल्ट वर्कस्पेस** → **नया सेशन यहाँ खोलें** → प्रोजेक्ट चुनें। किसी दूसरे प्रोजेक्ट के पास का `+` अब भी उसी प्रोजेक्ट को खोलता है।
|
|
273
273
|
|
|
274
|
-
**एक ही प्रोजेक्ट की कई सुविधाओं पर एक साथ, हर एक को उसकी अपनी ब्रांच पर, कैसे काम करें?** **हर चैट की अपनी ब्रांच** से: नई चैट →
|
|
274
|
+
**एक ही प्रोजेक्ट की कई सुविधाओं पर एक साथ, हर एक को उसकी अपनी ब्रांच पर, कैसे काम करें?** **हर चैट की अपनी ब्रांच** से: नई चैट → ब्रांच आइकन वाला main बटन → **नई ब्रांच**, फिर पहला संदेश भेजें। हर चैट को अपनी ब्रांच और worktree फ़ोल्डर मिलता है, और अगर `.worktreeinclude` में आपकी `.env` और `node_modules` दी गई हैं, तो वे भी साथ आती हैं। चैट का हेडर बताता है कि आप किस ब्रांच पर हैं।
|
|
275
275
|
|
|
276
276
|
**क्या मैं अपने iPhone से फ़ोटो भेज सकता हूं?** हां। Tether की किसी चैट में संदेश फ़ील्ड के पास **+** पर टैप करें → Camera, Photos (ज़्यादा से ज़्यादा 4) या Paste image। फ़ोटो आपके संदेश के अटैचमेंट के रूप में Mac की चैट में जाती हैं, इसलिए मॉडल उन्हें देखता है।
|
|
277
277
|
|
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.15.0`.
|
|
33
33
|
|
|
34
34
|
## Fitur
|
|
35
35
|
|
|
@@ -57,14 +57,14 @@ Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil
|
|
|
57
57
|
| **Pencarian proyek di obrolan baru** | <a id="feature-projectpicker"></a>Obrolan baru → tombol proyek di atas kotak pesan. Proyek ditampilkan dalam urutan A–Z, dengan kotak **Cari proyek** di bagian atas. Ketik sebagian nama (tanpa membedakan huruf besar-kecil dan aksen), lalu tekan `Enter` untuk memilih hasil pertama. Jika tidak ada yang cocok, muncul **Tidak ada proyek yang cocok**. Urutan proyek tersimpan milik dsh di bilah samping tidak berubah. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Tangkapan layar: Pencarian proyek di obrolan baru"></a> |
|
|
58
58
|
| **Ruang kerja default untuk Sesi Baru** | <a id="feature-defaultworkspace"></a>Pengaturan → Composer Plus → **Ruang kerja default untuk Sesi Baru** → **Buka Sesi Baru di**: pilih sebuah proyek, atau **Folder umum (default-workspace)** (pilihan default: folder milik dsh sendiri, `Documents/deepseek-harness/default-workspace`, yang dibuat saat pertama kali dipakai). Setelah itu, **Sesi Baru** di bagian atas bilah samping (dan pintasannya) selalu membuka obrolan baru di sana, juga saat obrolan dari proyek lain sedang terbuka. Tombol `+` di samping proyek tetap membuka proyek itu, dan tombol proyek di atas kotak pesan obrolan baru tetap bisa mengganti proyeknya. | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="Tangkapan layar: Ruang kerja default untuk Sesi Baru"></a> |
|
|
59
59
|
| **Cari di obrolan** | <a id="feature-findinchat"></a>Tekan `Cmd+F` di Mac (`Ctrl+F` di Windows dan Linux) di obrolan: kotak pencarian terbuka di atasnya. Ketik sebuah kata: setiap kecocokan dalam pesan dan balasan di layar disorot, kecocokan saat ini dengan warna yang lebih kuat, dan kotak itu menampilkan n / total. `Enter` atau `↓` menuju kecocokan berikutnya dan `Shift+Enter` atau `↑` ke kecocokan sebelumnya (juga tombol panah); obrolan menggulir kecocokan ke tengah. Huruf besar/kecil, aksen, dan huruf ı tanpa titik dalam bahasa Turki tidak berpengaruh. `Esc` menutup kotak dan mengembalikan kursor ke tempat semula. Pencarian tetap mengikuti obrolan saat balasan sedang masuk. | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="Tangkapan layar: Cari di obrolan"></a> |
|
|
60
|
-
| **Branch per obrolan** | <a id="feature-worktreechats"></a>Obrolan baru → tombol
|
|
60
|
+
| **Branch per obrolan** | <a id="feature-worktreechats"></a>Obrolan baru → tombol main (ikon branch) di antara tombol proyek dan tombol mode → **Branch baru**, lalu ketik pesan pertama dan kirim. Pesan pertama dapat membawa gambar dan file. AI memberi nama branch (`feat/…`, `fix/…`) dari pesan itu, Composer Plus membuat git worktree untuknya di `<project>/.worktrees/`, menyalin file yang diabaikan yang dicantumkan `.worktreeinclude` (misalnya `.env` dan `node_modules/`), lalu membuka obrolan baru di sana dengan pesan Anda. Header obrolan yang terbuka menampilkan ⑂ branch · N perubahan · ↑ ↓ (atau **belum di-push**); klik untuk membuka **Perubahan**. Menu yang sama mencantumkan worktree yang terbuka: pilih salah satu untuk memulai obrolan di sana. Untuk melihat folder branch di dalam proyeknya di bilah samping, pilih **Opsi tampilan** → **Pohon Ruang Kerja** milik dsh. | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="Tangkapan layar: Branch per obrolan"></a> |
|
|
61
61
|
| **Prediksi pesan berikutnya** | <a id="feature-nextprediction"></a>Aktif secara default: Anda dapat menonaktifkannya di **Pengaturan → Composer Plus**. Setelah agen menyelesaikan satu giliran (bukan giliran yang dihentikan atau gagal), kotak pesan yang kosong menampilkan tebakan pesan Anda berikutnya dengan teks abu-abu, beserta petunjuk **Tab untuk menerima**. `Tab` memasukkan teks ke kotak pesan, tetapi tidak mengirimnya. `Esc` menyembunyikannya untuk giliran itu. Mulai mengetik juga menyembunyikannya, dan giliran baru menggantinya. Menu **Model** di bawah sakelar menampilkan model milik dsh sendiri (daftar yang sama dengan menu model dsh). **Default dsh** dipilih secara default dan mengikuti model default dsh. Setiap giliran yang selesai memakai satu panggilan model singkat. Di Tether, tebakan tampil di atas kotak pesan yang kosong: ketuk untuk memasukkannya ke kolom. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Tangkapan layar: Prediksi pesan berikutnya"></a> |
|
|
62
62
|
| **Lengkapi saat mengetik** | <a id="feature-typingcompletion"></a>Nonaktif secara default: Anda dapat mengaktifkannya di **Pengaturan → Composer Plus**. Saat Anda mengetik, teks abu-abu tepat setelah kursor menunjukkan kelanjutan pesan Anda. `Tab` menambahkannya ke pesan, tetapi tidak mengirimnya. `Esc` menyembunyikannya. Fitur ini hanya menyarankan kata-kata Anda sendiri berikutnya: tidak pernah berupa jawaban untuk Anda, dan tanpa teks error atau nama karangan. Jika pesan tampak sudah lengkap atau model tidak yakin, tidak ada yang tampil. Jika Anda mengetik huruf berikutnya dari teks abu-abu itu, teks tetap ada, tanpa panggilan model baru. Fitur ini memiliki menu **Model** sendiri di bawah sakelarnya. Entri pertamanya, **Sama dengan prediksi pesan berikutnya**, memakai model **Prediksi pesan berikutnya** (default); pilih model lain untuk memakai model yang berbeda bagi setiap fitur, misalnya model yang lebih cepat untuk pelengkapan. Fitur ini melakukan satu panggilan model di setiap jeda saat Anda mengetik, jadi memakai jauh lebih banyak token daripada prediksi: pilih model yang cepat dan murah. Fitur ini tidak berjalan untuk perintah garis miring, pesan dengan chip file, atau saat kursor tidak berada di akhir. Di Tether, sisa teks tampil di atas kolom saat Anda mengetik: ketuk untuk menambahkannya. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Tangkapan layar: Lengkapi saat mengetik"></a> |
|
|
63
63
|
| **Sempurnakan prompt** | <a id="feature-promptimprove"></a>Ketik permintaan kasar, lalu klik tongkat ajaib (**Sempurnakan prompt**) di samping menu model. Satu panggilan model menulis ulang permintaan itu menjadi prompt yang lebih jelas: tujuan lebih dulu, langkah bernomor yang singkat jika ada beberapa bagian, dan pemeriksaan yang perlu dijalankan. Fitur ini membaca obrolan ini (tanpa pesan yang ditarik oleh putar balik), README, AGENTS.md, dan manifes proyek, file yang diubah, serta file yang namanya cocok dengan kata-kata Anda, dan mempertahankan bahasa Anda. Fitur ini tidak pernah mengarang nama file. Teks baru menggantikan draf Anda, tetapi tidak dikirim: baca, edit, lalu tekan `Enter`. `Cmd/Ctrl+Z` mengembalikan teks Anda dalam satu langkah, begitu juga tombolnya (**Urungkan penyempurnaan**). Jika Anda mengetik saat fitur ini bekerja, teks baru Anda tetap ada. `Esc` atau klik kedua membatalkannya. Fitur ini memiliki menu **Model** sendiri di Pengaturan (default: **Sama dengan model obrolan**). Tidak untuk perintah garis miring atau pesan dengan chip file. Di Tether, tongkat ajaib ada di samping kolom. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Tangkapan layar: Sempurnakan prompt"></a> |
|
|
64
64
|
| **Pemeriksaan tujuan** | <a id="feature-goalcheck"></a>Mulai tujuan dengan `/goal`. Saat agen menandai tujuan sebagai selesai dalam putaran otomatis, tujuan baru ditutup setelah dua pemeriksaan. Pertama, perintah pengujian proyek berjalan di folder obrolan, dengan mode sandbox obrolan itu. Perintah itu adalah perintah Anda sendiri atau perintah yang ditemukan di `package.json`, `Makefile`, `Cargo.toml`, `go.mod`, atau pytest. Jika langkah terbaru agen sendiri adalah menjalankan pengujian itu dengan hasil lulus, pengujian tidak dijalankan lagi. Lalu satu panggilan model independen, tanpa alat, membaca tujuan, obrolan ini, `git status`, dan hasil pengujian. Jika satu pemeriksaan gagal, tujuan tetap aktif dan agen membaca alasannya, lalu putaran berikutnya berlanjut. Satu baris di bawah bilah tujuan (**Pemeriksaan tujuan**) menampilkan pengujian dan hasil terakhir. **Edit** mengatur perintah pengujian Anda sendiri dan batas waktu atau token; jika batas terlampaui, tujuan menjadi terhambat. **Jalankan sekarang** menjalankan pemeriksaan tanpa menutup tujuan. Fitur ini memiliki menu **Model** sendiri di Pengaturan (default: **Sama dengan model obrolan**). Jika Anda menyelesaikan tujuan sendiri, tidak ada yang diperiksa. | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="Tangkapan layar: Pemeriksaan tujuan"></a> |
|
|
65
65
|
| **Izinkan untuk obrolan ini** | <a id="feature-allowforchat"></a>Saat Tinjauan otomatis bertanya kepada Anda, kartu persetujuan mendapat tombol **Izinkan untuk obrolan ini**: mulai saat itu, alat yang sama di obrolan yang sama diizinkan, dengan argumen apa pun, sampai batas waktu berakhir (1 jam secara default; pilih di **Pengaturan → Composer Plus → Izinkan untuk obrolan ini**). Setelah itu agen bertanya lagi. Sebuah chip di header menampilkan daftar izin beserta waktu berakhirnya dan dapat mencabutnya. Izin tetap ada setelah mulai ulang. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Tangkapan layar: Izinkan untuk obrolan ini"></a> |
|
|
66
66
|
| **Status proyek** | <a id="feature-projectstatus"></a>Baris proyek di bilah samping menampilkan penanda spinner / menunggu / selesai yang sama seperti obrolannya. Jadi, proyek yang diciutkan tetap memberi tahu Anda bahwa ada obrolan di dalamnya yang sedang bekerja atau memerlukan Anda. Obrolan yang menunggu Anda ditampilkan lebih dulu, lalu obrolan selesai yang belum Anda buka (titik hijau, juga saat obrolan lain masih berjalan), lalu spinner. Arahkan penunjuk ke penanda itu untuk melihat detailnya. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Tangkapan layar: Status proyek"></a> |
|
|
67
|
-
| **Branch Git di baris obrolan** | <a id="feature-sessionbranch"></a>Setiap baris obrolan di bilah samping menampilkan label abu-abu kecil berisi branch git tempat folder proyek obrolan berada pada giliran terakhir obrolan itu (misalnya `main` atau `feature/login`; HEAD yang terlepas menampilkan ID commit pendeknya dalam tanda kurung). Dua obrolan dari satu proyek di branch yang berbeda tidak lagi terlihat sama, dan Anda langsung melihat saat akan melanjutkan obrolan di branch yang salah. Arahkan penunjuk ke label untuk melihat nama lengkapnya. Bagian Host membaca branch (`git branch --show-current`, hanya baca) saat giliran dimulai dan saat berakhir; obrolan tanpa giliran sejak Anda memasang fitur ini, atau folder yang bukan repositori git, tidak menampilkan label. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Tangkapan layar: Branch Git di baris obrolan"></a> |
|
|
67
|
+
| **Branch Git di baris obrolan** | <a id="feature-sessionbranch"></a>Setiap baris obrolan di bilah samping menampilkan label abu-abu kecil berisi branch git tempat folder proyek obrolan berada pada giliran terakhir obrolan itu (misalnya `main` atau `feature/login`; HEAD yang terlepas menampilkan ID commit pendeknya dalam tanda kurung). Dua obrolan dari satu proyek di branch yang berbeda tidak lagi terlihat sama, dan Anda langsung melihat saat akan melanjutkan obrolan di branch yang salah. Arahkan penunjuk ke label untuk melihat nama lengkapnya. Bagian Host membaca branch (`git branch --show-current`, hanya baca) saat giliran dimulai dan saat berakhir; obrolan tanpa giliran sejak Anda memasang fitur ini, atau folder yang bukan repositori git, tidak menampilkan label. Jika baris proyek di atas obrolan bernama sama dengan branch-nya (misalnya folder “Branch per obrolan”), baris obrolan tidak menampilkan label, tetapi “Dalam satu daftar” tetap menampilkannya. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Tangkapan layar: Branch Git di baris obrolan"></a> |
|
|
68
68
|
| **Tandai semua sudah dibaca** | <a id="feature-markprojectread"></a>Di bilah samping, klik tombol **…** pada sebuah proyek → **Tandai semua sudah dibaca**. Semua obrolan di proyek itu langsung kehilangan titik hijau belum dibaca; proyek lain tetap memiliki titiknya. Item ini tampil abu-abu (**Tidak ada obrolan yang belum dibaca**) jika proyek itu tidak punya obrolan yang belum dibaca. | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="Tangkapan layar: Tandai semua sudah dibaca"></a> |
|
|
69
69
|
| **Proyek aktif di atas** | <a id="feature-activeprojectsfirst"></a>Saat sebuah obrolan mulai berjalan atau memerlukan Anda, proyeknya pindah ke bagian atas bilah samping dengan animasi baris bawaan dsh (gerakan yang sama seperti saat Anda menyeretnya ke sana). Proyek yang selesai tetap di tempatnya; seret ke mana saja seperti biasa. Perpindahan disimpan ke urutan proyek dsh, jadi menonaktifkan fitur ini mempertahankan urutan saat ini. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Tangkapan layar: Proyek aktif di atas"></a> |
|
|
70
70
|
| **Filter proyek terbaru** | <a id="feature-recentprojects"></a>Bilah samping → opsi tampilan (ikon slider) → **Aktif dalam 2 jam terakhir**. Selama opsi ini dipilih, bilah samping hanya menampilkan proyek yang memiliki obrolan aktif dalam 2 jam terakhir. Itu adalah obrolan yang diperbarui dalam waktu itu, obrolan yang sedang berjalan atau menunggu, obrolan yang terbuka, atau obrolan selesai yang belum Anda buka (titik hijau “selesai” dari dsh), juga setelah 2 jam. Proyek tanpa obrolan seperti itu disembunyikan, termasuk proyek baru dan kosong. Pilih opsi ini lagi untuk menampilkan semua proyek. Pilihan ini disimpan di perangkat ini. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Tangkapan layar: Filter proyek terbaru"></a> |
|
|
@@ -169,7 +169,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
169
169
|
- **Tidak ada label branch di baris obrolan:** 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).
|
|
170
170
|
- **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.
|
|
171
171
|
- **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).
|
|
172
|
-
- **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.
|
|
172
|
+
- **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.15.0`), lihat catatan pemasangan di atas.
|
|
173
173
|
|
|
174
174
|
## Batasan
|
|
175
175
|
|
|
@@ -195,7 +195,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
195
195
|
- **Obrolan ini** hanya menghitung file yang ditulis oleh alat file dsh (`write`, `edit`, `str_replace_editor`). File yang diubah oleh perintah (`bash`) tidak ada di tampilan ini; file itu tampil di **Belum Di-commit**. Tanpa snapshot Putar balik giliran untuk obrolan (Putar balik giliran nonaktif, dsh-rewind-plugin terpasang, atau obrolan lebih lama dari plugin), tampilan ini membandingkan dengan commit terakhir dan memberi tahu hal itu. Putar balik giliran menyimpan 50 snapshot terbaru dari sebuah obrolan: pada obrolan yang lebih panjang, tampilan membandingkan dengan snapshot tertua yang disimpan, menyebutkan dari pesan mana, dan tidak menghitung perubahan yang lebih awal. **Sembunyikan perubahan spasi** sama dengan `git diff -w`: baris yang hanya berubah pada spasi di dalamnya juga disembunyikan.
|
|
196
196
|
- **Buka isu GitHub** memerlukan GitHub CLI (`gh`) di PATH dsh dan remote GitHub di folder obrolan. Fitur ini berjalan paling lama 60 detik; jika `gh` butuh waktu lebih lama, isu bisa sudah ada di GitHub tanpa tautannya di daftar (sebelum mengklik lagi, periksa GitHub: daftar hanya membaca tautan dari proses yang selesai, jadi klik baru bisa membuka isu kedua). Folder dengan lebih dari satu remote GitHub memakai default milik `gh` sendiri (`gh repo set-default`).
|
|
197
197
|
- **Obrolan yang mengubah file ini** hanya mengenal alat file dsh (`write`, `edit`, `str_replace_editor`), sama seperti **Obrolan ini**: perubahan yang dibuat oleh perintah (`bash`) tidak tercantum. Fitur ini membaca 300 obrolan terbaru dari repositori (menurut waktu pembuatannya) dan memberi tahu jika ada lebih banyak; fitur ini menampilkan paling banyak 100 baris. File yang diganti namanya tercantum dengan nama yang ditulis alat. Obrolan yang foldernya berada di luar repositori (juga melalui jalur lain ke file yang sama) tidak dihitung. Pembukaan pertama setelah dsh dimulai membaca semua log obrolan di repositori (sekitar 4 detik untuk 275 obrolan); pembukaan berikutnya hanya membaca obrolan yang berubah sejak itu.
|
|
198
|
-
- **Branch Git di baris obrolan** menampilkan branch folder obrolan saat giliran terakhirnya dimulai atau berakhir, bukan branch saat ini: pergantian branch di luar giliran baru tampil setelah giliran berikutnya. Obrolan dari sebelum versi ini tidak menampilkan label sampai giliran berikutnya. Label ini berada di markup baris obrolan dsh (dsh tidak punya slot di sana); jika pembaruan dsh mengubah markup itu, label tidak tampil.
|
|
198
|
+
- **Branch Git di baris obrolan** menampilkan branch folder obrolan saat giliran terakhirnya dimulai atau berakhir, bukan branch saat ini: pergantian branch di luar giliran baru tampil setelah giliran berikutnya. Obrolan dari sebelum versi ini tidak menampilkan label sampai giliran berikutnya. Label ini berada di markup baris obrolan dsh (dsh tidak punya slot di sana); jika pembaruan dsh mengubah markup itu, label tidak tampil. Jika baris proyek di atas obrolan bernama sama dengan branch-nya (misalnya folder “Branch per obrolan”), baris obrolan tidak menampilkan label, tetapi “Dalam satu daftar” tetap menampilkannya.
|
|
199
199
|
- **Cari di obrolan** hanya mencari apa yang ditampilkan halaman: pesan dan balasan yang sudah dimuat (gulir ke atas atau klik **Muat yang lebih lama** untuk yang lebih lama), bukan langkah alat yang tertutup dan bukan teks yang terlipat di dalam output alat. Fitur ini menghitung paling banyak 2.000 kecocokan (lalu "2000+"). Fitur ini memakai API sorotan browser (Chromium 105 dan yang lebih baru; aplikasi desktop memilikinya): di browser yang lebih lama, jumlah dan perpindahan tetap berfungsi tanpa warna. `Cmd+F` di Mac (`Ctrl+F` di Windows dan Linux) hanya membukanya saat ada obrolan di layar; di tempat lain, pencarian bawaan browser berfungsi seperti biasa. Di Mac, `Ctrl+F` tetap menjalankan fungsi macOS-nya di kolom teks (kursor maju satu karakter).
|
|
200
200
|
- Notifikasi yang dikirim sebelum mulai ulang hanya membawa dsh ke depan saat diklik.
|
|
201
201
|
- Proyek aktif dipindahkan dengan urutan proyek tersimpan milik dsh, jadi urutan baru tetap ada setelah mulai ulang. Obrolan di luar proyek mana pun ("Tanpa grup") tidak dapat dipindahkan; dsh selalu menampilkannya paling akhir.
|
|
@@ -271,7 +271,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
271
271
|
|
|
272
272
|
**Bagaimana agar Sesi Baru selalu terbuka di proyek yang sama?** Pengaturan → Composer Plus → **Ruang kerja default untuk Sesi Baru** → **Buka Sesi Baru di** → pilih proyeknya. `+` di samping proyek lain tetap membuka proyek itu.
|
|
273
273
|
|
|
274
|
-
**Bagaimana cara mengerjakan beberapa fitur dari satu proyek sekaligus, masing-masing di branch-nya sendiri?** Dengan **Branch per obrolan**: obrolan baru → tombol
|
|
274
|
+
**Bagaimana cara mengerjakan beberapa fitur dari satu proyek sekaligus, masing-masing di branch-nya sendiri?** Dengan **Branch per obrolan**: obrolan baru → tombol main dengan ikon branch → **Branch baru**, lalu kirim pesan pertama. Setiap obrolan mendapat branch dan folder worktree sendiri, beserta `.env` dan `node_modules` Anda jika `.worktreeinclude` mencantumkannya. Header obrolan menampilkan branch tempat Anda berada.
|
|
275
275
|
|
|
276
276
|
**Bisakah saya mengirim foto dari iPhone?** Bisa. Di obrolan Tether, ketuk **+** di samping kolom pesan → Camera, Photos (hingga 4) atau Paste image. Foto dikirim ke obrolan di Mac sebagai lampiran pesan Anda, jadi model dapat melihatnya.
|
|
277
277
|
|