dsh-composer-plus 1.13.0 → 1.14.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.tr.md CHANGED
@@ -14,7 +14,7 @@ Bu sayfa bir çeviridir. Esas alınan sürüm, İngilizce [README.md](README.md)
14
14
 
15
15
  <p align="center"><img src="docs/images/hero.webp" width="820" alt="Composer Plus ile DeepSeek Harness: çalışan proje kenar çubuğunda dönen bir simge gösteriyor, Değişiklikler paneli bir git farkı gösteriyor"></p>
16
16
 
17
- Resmî olmayan bir topluluk eklentisidir. Eklentinin yaptığı tek ağ çağrısı güncelleme denetimidir (GitHub sürümleri ve npm kayıt defteri). Açılışta bu çağrıları durdurmak için **Otomatik güncellemeler** ayarını kapatın. **Özellik fikirleri**, sohbetin kendi modelini yalnızca **Özellik öner** düğmesine tıkladığınızda çağırır. **Sonraki mesaj tahmini** (varsayılan olarak açık), biten her turdan sonra Ayarlar’da seçilen modeli (siz başka bir model seçmediyseniz dsh’nin varsayılan modelini) tıklama olmadan bir kez çağırır. Bu çağrıları durdurmak için özelliği **Ayarlar → Composer Plus** içinden kapatın. **Yazarken tamamla** (varsayılan olarak kapalı), siz açtıktan sonra yazarken her duraklamada kendisi için seçilen modeli (varsayılan olarak tahminin modelini) çağırır. **İstemi iyileştir**, bir modeli yalnızca sihirli değnek düğmesine tıkladığınızda çağırır. **Mobil bağlantı** (varsayılan olarak kapalı), yerel ağınızdan veya tailnet’inizden gelen iPhone bağlantılarını yalnızca siz açtıktan sonra kabul eder.
17
+ Resmî olmayan bir topluluk eklentisidir. Eklentinin yaptığı tek ağ çağrısı güncelleme denetimidir (GitHub sürümleri ve npm kayıt defteri). Açılışta bu çağrıları durdurmak için **Otomatik güncellemeler** ayarını kapatın. **Özellik fikirleri**, sohbetin kendi modelini yalnızca **Özellik öner** düğmesine tıkladığınızda çağırır. **Sonraki mesaj tahmini** (varsayılan olarak açık), biten her turdan sonra Ayarlar’da seçilen modeli (siz başka bir model seçmediyseniz dsh’nin varsayılan modelini) tıklama olmadan bir kez çağırır. Bu çağrıları durdurmak için özelliği **Ayarlar → Composer Plus** içinden kapatın. **Yazarken tamamla** (varsayılan olarak kapalı), siz açtıktan sonra yazarken her duraklamada kendisi için seçilen modeli (varsayılan olarak tahminin modelini) çağırır. **İstemi iyileştir**, bir modeli yalnızca sihirli değnek düğmesine tıkladığınızda çağırır. **Hedef kontrolü** (varsayılan olarak açık), ajan otomatik bir turda bir `/goal` hedefini tamamlandı olarak her işaretlediğinde bir modeli bir kez çağırır. **Mobil bağlantı** (varsayılan olarak kapalı), yerel ağınızdan veya tailnet’inizden gelen iPhone bağlantılarını yalnızca siz açtıktan sonra kabul eder.
18
18
 
19
19
  ## Kurulum
20
20
 
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
29
29
 
30
30
  Sonra dsh’yi yeniden başlatın. (CLI, masaüstü profiline yükleme yapamaz; bu profili uygulama yönetir.)
31
31
 
32
- > dsh’nin pnpm’i, yayımlanmasının üzerinden 24 saat geçmemiş sürümleri atlar. Bir yayından hemen sonra sürümü ekleyin: `dsh-composer-plus@1.13.0`.
32
+ > dsh’nin pnpm’i, yayımlanmasının üzerinden 24 saat geçmemiş sürümleri atlar. Bir yayından hemen sonra sürümü ekleyin: `dsh-composer-plus@1.14.0`.
33
33
 
34
34
  ## Özellikler
35
35
 
@@ -37,8 +37,8 @@ Sonra dsh’yi yeniden başlatın. (CLI, masaüstü profiline yükleme yapamaz;
37
37
 
38
38
  | Özellik | Nasıl kullanılır | Ekran görüntüsü |
39
39
  |---|---|---|
40
- | **Değişiklikler paneli** | <a id="feature-changespanel"></a>Sağ kenar çubuğu → `+` → **Değişiklikler**. Değişen dosyaları `+/-` sayılarıyla görmek için **Commit edilmemiş**, **Hazırlanmamış**, **Hazırlanmış** veya **Dal** seçin. Farkını görmek için bir dosyaya tıklayın. **Son tur**, dsh’nin son tur için kendi incelemesini açar. Dal ağacını görmek için dal adına tıklayın (veya **Ağaç** seçin). Üstteki bir dala tıklayınca ağaç o dala gider. Bir commit’e tıklayınca dosyalarını ve farklarını görürsünüz. **Bu sohbet**, yalnızca açık sohbetin dosya araçlarının (write, edit) tüm turlarda yazdığı dosyaları ve ilk mesajdan bu yana toplam farkını listeler. **␣** düğmesi boşluk değişikliklerini gizler (`git diff -w`): yalnızca girintisi ya da satır sonu değişen satırlar görünmez. | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="Ekran görüntüsü: Değişiklikler paneli"></a> |
41
- | **Özellik fikirleri** | <a id="feature-featureideas"></a>Sağ kenar çubuğu → `+` → **Özellik fikirleri** → **Özellik öner**. Sohbetin kendi modeli, sohbetin projesinin kısa bir özetini okur (üst düzey dosyalar, README ve manifest dosyasının başı, son 15 commit). Sonra en çok 8 özellik önerir. Öneriler, dsh’nin arayüz dilinde bir kart destesi olarak görünür. Aynı projede yeni bir sohbet başlatmak için kartı sağa kaydırın (ya da **✓** düğmesine tıklayın veya `→` tuşuna basın; her durumda kart kendi tarafına uçar). Yeni sohbet plan modunda başlar ve fikri istek olarak alır. Bu yüzden siz planı onaylamadan hiçbir şey değişmez. Planı atlamak için **▶ Hemen uygula** düğmesine tıklayın (ya da `↑` tuşuna basın; kart yukarı uçar). Yeni sohbet, fikri sıradan bir istek olarak alıp hemen başlar. Model değişikliği yapar ve kontrollerini çalıştırır (onaylar her zamanki gibi uygulanır). Atlamak için sola kaydırın (ya da **✕** veya `←`). **Geri al** (ya da `Z`) atlanan kartı geri getirir. İyi bir fikri sonraya saklamak için **↓** düğmesine tıklayın (ya da `↓` tuşuna basın). Fikir projenin **Sonra** listesine gider. Aynı proje klasöründeki her sohbet bu listeyi gösterir (yeniden başlatmadan sonra da). **Sonra (N)** listeyi açar. **Planla**, fikir için aynı plan modu sohbetini başlatır. **Hemen uygula** ise sohbeti plan olmadan başlatır. İkisi de fikri listeden çıkarır. **Tümünü tek planda başlat (N)**, listedeki bütün fikirler için tek bir plan modu sohbeti başlatır. Böylece ortak kısımlar yalnızca bir kez planlanır. **Listeden kaldır** fikri siler. **Yapılacaklar listesi olarak kopyala**, bütün listeyi bir sorun takip aracı ya da TODO dosyası için Markdown yapılacaklar listesi olarak panoya kopyalar (`- [ ] Title — Summary`, her fikir için bir satır). Bu işlem ağ isteği yapmaz. **Daha fazla fikir** yeni kartlar ekler. Yalnızca tek bir alanla ilgili fikir almak için **Özellik öner** düğmesinin yanındaki alana kısa bir **Odak konusu** yazın (en çok 80 karakter; `Enter` da öneri ister). Ya da alanın altındaki sabit konulardan birine tıklayın: **Performans**, **Erişilebilirlik**, **Testler**, **Güvenlik**, **Kullanılabilirlik** veya **Dokümantasyon** (temizlemek için yeniden tıklayın). Model bundan sonra yalnızca o konuyla ilgili özellikler önerir. Alan boşsa model her türlü özelliği önerebilir. Bir projede aynı fikir iki kez önerilmez: önerilen her fikir (atlanan, saklanan ya da başlatılan) projenin **Geçmiş** listesine gider. Modele bu fikirleri yeniden önermemesi söylenir ve aynı başlıkla gelen bir fikir atılır. **Geçmiş**, fikirleri **Başlatıldı** ya da **Önerildi** etiketiyle listeler. **Unut** (ya da **Tümünü unut**) bir fikrin yeniden gelmesine izin verir; **Sonra** listesinde hâlâ duran bir fikir, siz onu oradan kaldırana kadar önerilerde yer almaz. Model yalnızca siz tıkladığınızda çalışır. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Ekran görüntüsü: Özellik fikirleri"></a> |
40
+ | **Değişiklikler paneli** | <a id="feature-changespanel"></a>Sağ kenar çubuğu → `+` → **Değişiklikler**. Değişen dosyaları `+/-` sayılarıyla görmek için **Commit edilmemiş**, **Hazırlanmamış**, **Hazırlanmış** veya **Dal** seçin. Farkını görmek için bir dosyaya tıklayın. **Son tur**, dsh’nin son tur için kendi incelemesini açar. Dal ağacını görmek için dal adına tıklayın (veya **Ağaç** seçin). Üstteki bir dala tıklayınca ağaç o dala gider. Bir commit’e tıklayınca dosyalarını ve farklarını görürsünüz. **Bu sohbet**, yalnızca açık sohbetin dosya araçlarının (write, edit) tüm turlarda yazdığı dosyaları ve ilk mesajdan bu yana toplam farkını listeler. **␣** düğmesi boşluk değişikliklerini gizler (`git diff -w`): yalnızca girintisi ya da satır sonu değişen satırlar görünmez. Bir dosyanın **…** menüsü → **Bu dosyayı değiştiren sohbetler**, aynı depoda yazma veya düzenleme araçlarıyla o dosyayı değiştiren sohbetleri, en yenisi üstte olacak biçimde ve değişikliği yapan istekle birlikte listeler. Bir sohbete tıklayınca sohbet o istekte açılır. | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="Ekran görüntüsü: Değişiklikler paneli"></a> |
41
+ | **Özellik fikirleri** | <a id="feature-featureideas"></a>Sağ kenar çubuğu → `+` → **Özellik fikirleri** → **Özellik öner**. Sohbetin kendi modeli, sohbetin projesinin kısa bir özetini okur (üst düzey dosyalar, README ve manifest dosyasının başı, README’nin geri kalanının ana hatları, son commit’lerin başlıkları). Sonra en çok 8 özellik önerir. Öneriler, dsh’nin arayüz dilinde bir kart destesi olarak görünür. Aynı projede yeni bir sohbet başlatmak için kartı sağa kaydırın (ya da **✓** düğmesine tıklayın veya `→` tuşuna basın; her durumda kart kendi tarafına uçar). Yeni sohbet plan modunda başlar ve fikri istek olarak alır. Bu yüzden siz planı onaylamadan hiçbir şey değişmez. Planı atlamak için **▶ Hemen uygula** düğmesine tıklayın (ya da `↑` tuşuna basın; kart yukarı uçar). Yeni sohbet, fikri sıradan bir istek olarak alıp hemen başlar. Model değişikliği yapar ve kontrollerini çalıştırır (onaylar her zamanki gibi uygulanır). Atlamak için sola kaydırın (ya da **✕** veya `←`). **Geri al** (ya da `Z`) atlanan kartı geri getirir. İyi bir fikri sonraya saklamak için **↓** düğmesine tıklayın (ya da `↓` tuşuna basın). Fikir projenin **Sonra** listesine gider. Aynı proje klasöründeki her sohbet bu listeyi gösterir (yeniden başlatmadan sonra da). **Sonra (N)** listeyi açar. **Planla**, fikir için aynı plan modu sohbetini başlatır. **Hemen uygula** ise sohbeti plan olmadan başlatır. İkisi de fikri listeden çıkarır. **Tümünü tek planda başlat (N)**, listedeki bütün fikirler için tek bir plan modu sohbeti başlatır. Böylece ortak kısımlar yalnızca bir kez planlanır. **Listeden kaldır** fikri siler. **Yapılacaklar listesi olarak kopyala**, bütün listeyi bir sorun takip aracı ya da TODO dosyası için Markdown yapılacaklar listesi olarak panoya kopyalar (`- [ ] Title — Summary`, her fikir için bir satır). Bu işlem ağ isteği yapmaz. Bir fikirdeki **GitHub’da issue aç**, projenin GitHub deposunda fikrin başlığı ve özetiyle (ve neden önemli olduğuyla) bir issue açar; bunun için sizin GitHub CLI (`gh`) oturumunuz kullanılır. Sonra fikrin yanında **Issue #N** bağlantısı görünür ve issue’yu açar. **Daha fazla fikir** yeni kartlar ekler. Yalnızca tek bir alanla ilgili fikir almak için **Özellik öner** düğmesinin yanındaki alana kısa bir **Odak konusu** yazın (en çok 80 karakter; `Enter` da öneri ister). Ya da alanın altındaki sabit konulardan birine tıklayın: **Performans**, **Erişilebilirlik**, **Testler**, **Güvenlik**, **Kullanılabilirlik** veya **Dokümantasyon** (temizlemek için yeniden tıklayın). Model bundan sonra yalnızca o konuyla ilgili özellikler önerir. Alan boşsa model her türlü özelliği önerebilir. Bir projede aynı fikir iki kez önerilmez: önerilen her fikir (atlanan, saklanan ya da başlatılan) projenin **Geçmiş** listesine gider. Modele bu fikirleri yeniden önermemesi söylenir ve aynı başlıkla gelen bir fikir atılır. **Geçmiş**, fikirleri **Başlatıldı** ya da **Önerildi** etiketiyle listeler. **Unut** (ya da **Tümünü unut**) bir fikrin yeniden gelmesine izin verir; **Sonra** listesinde hâlâ duran bir fikir, siz onu oradan kaldırana kadar önerilerde yer almaz. Model yalnızca siz tıkladığınızda çalışır. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Ekran görüntüsü: Özellik fikirleri"></a> |
42
42
  | **İçerik araması** | <a id="feature-contentsearch"></a>dsh’nin kendi kenar çubuğu araması (**Çalışma alanları** yanındaki büyüteç; masaüstü uygulamasında `Cmd+K`, tarayıcıda `Cmd+Alt+K`) sohbetleri yalnızca başlığa göre değil, mesajlarınızdaki ve yanıtlardaki sözcüklere göre de bulur. Eşleşen metni sohbetin altında gösterir. Bu arama dsh’de zaten vardır, ama kapalı gelir. Bu özellik aramayı açar ve bilgisayarınızda bir arama dizini dosyası kullanır. Dizin, dsh açıldıktan sonraki ilk aramada oluşturulur (250 sohbet için yaklaşık 15 sn, bkz. Sınırlar) ve sonraki açılışlarda yeniden kullanılır. Varsayılan olarak açıktır. Bir değişiklik, dsh’yi yeniden başlattıktan sonra geçerli olur. | <a href="assets/features/contentSearch.webp"><img src="assets/features/contentSearch.webp" width="160" alt="Ekran görüntüsü: İçerik araması"></a> |
43
43
  | **Tur geri alma** | <a id="feature-turnrollback"></a>Mesajlarınızdan birinin üzerine gelin ve **↶** düğmesine tıklayın (Kopyala düğmesinin yanında). **Yalnızca sohbet**, o mesajı ve sonrasındaki her şeyi (yanıtlar, araç çağrıları) sohbetten ve modelin bağlamından çıkarır. Mesajı da mesaj alanına geri koyar: mesajı değiştirip yeniden gönderin. **Sohbet ve dosyalar** önce o mesajdan sonra değişen proje dosyalarını listeler. Sonra bu dosyaları da eski hâline döndürür. Yalnızca dsh’nin düzenleme araçlarının değil, komutların (`bash`) yaptığı değişiklikler de buna dahildir. Çalışan bir tur önce durur. Sohbet günlüğü hiçbir zaman yeniden yazılmaz: geri çekilen kısmı tek bir gizli işaretçi gizler. dsh’nin kendi `/compact` komutu da eski mesajları aynı yolla gizler. [dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) yüklüyse bu işi o yapar ve Composer Plus ikinci bir düğme göstermez. Geri almadan sonra mesaj alanının üstünde bir **Yeniden uygula** çubuğu görünür: geri almadan hemen önceki hâlden yeni bir sohbet başlatır (aynı mesajlar ve bağlam). **Sohbet ve dosyalar** seçilirse dosyaları da geri getirir. Geri almadan sonra değiştirdiğiniz bir dosya listelenir ve korunur; üzerine yazma kutusunu işaretlerseniz o dosya da geri gelir. | <a href="assets/features/turnRollback.webp"><img src="assets/features/turnRollback.webp" width="160" alt="Ekran görüntüsü: Tur geri alma"></a> |
44
44
  | **Sohbeti sil** | <a id="feature-deletechat"></a>Kenar çubuğu → bir sohbetin **…** menüsü (ya da sağ tıklama) → **Sil…** → **Sil**. dsh kendisi yalnızca arşivleyebilir. Sohbet durur (dsh’nin kendi arşivlemesinde olduğu gibi turu, arka plan işleri, alt ajanları ve zamanlanmış hatırlatıcıları da durur). Kayıtlı geçmişi, alt ajan sohbetleriyle birlikte macOS Çöp Sepeti’ne taşınır (diğer sistemlerde: `$DSH_HOME/trash`). Sohbeti geri almak için klasörü yerine koyun ve dsh’yi yeniden başlatın: sohbet, kenar çubuğundaki **Yalnızca arşivlenmişler** görünümünde görünür. | <a href="assets/features/deleteChat.webp"><img src="assets/features/deleteChat.webp" width="160" alt="Ekran görüntüsü: Sohbeti sil"></a> |
@@ -55,11 +55,16 @@ Sonra dsh’yi yeniden başlatın. (CLI, masaüstü profiline yükleme yapamaz;
55
55
  | **Sohbeti Markdown olarak dışa aktar** | <a id="feature-exportmarkdown"></a>Kenar çubuğunda bir sohbete sağ tıklayın (ya da sohbetin **…** menüsünü açın) → **Markdown olarak dışa aktar…**. Bir iletişim kutusu, sohbette kaç mesaj olduğunu gösterir. **Panoya kopyala**, sohbeti Markdown olarak kopyalar. **.md dosyası olarak kaydet**, sohbeti tarayıcının indirme özelliğiyle `<chat title>.md` adıyla kaydeder (dsh masaüstü uygulamasında, sisteminizin ayarına göre İndirilenler klasörüne kaydeder ya da bir kaydetme penceresi açar). Dosyada sohbet başlığı, proje adı ve tarih vardır. Sonra her mesaj için bir `## Siz` ya da `## Asistan` bölümü gelir. Kod blokları olduğu gibi kalır. Bir mesajın açık bıraktığı kod bloğu kapatılır. | <a href="assets/features/exportMarkdown.webp"><img src="assets/features/exportMarkdown.webp" width="160" alt="Ekran görüntüsü: Sohbeti Markdown olarak dışa aktar"></a> |
56
56
  | **Proje yolunu kopyala** | <a id="feature-copyprojectpath"></a>Kenar çubuğunda bir projeye sağ tıklayın → **Yolu kopyala**. Proje klasörünün tam yolu kopyalanır. | <a href="assets/features/copyProjectPath.webp"><img src="assets/features/copyProjectPath.webp" width="160" alt="Ekran görüntüsü: Proje yolunu kopyala"></a> |
57
57
  | **Yeni sohbette proje arama** | <a id="feature-projectpicker"></a>Yeni sohbet → mesaj alanının üstündeki proje düğmesi. Projeler A–Z sırasıyla görünür ve üstte bir **Projelerde ara** kutusu vardır. Adın bir kısmını yazın (büyük/küçük harf ve aksan fark etmez). İlk eşleşmeyi seçmek için `Enter` tuşuna basın. Hiçbir proje eşleşmezse **Eşleşen proje yok** yazar. dsh’nin kenar çubuğundaki kayıtlı proje sırası değişmez. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Ekran görüntüsü: Yeni sohbette proje arama"></a> |
58
+ | **Yeni oturum için varsayılan çalışma alanı** | <a id="feature-defaultworkspace"></a>Ayarlar → Composer Plus → **Yeni oturum için varsayılan çalışma alanı** → **Yeni oturumu şurada aç**: bir proje ya da **Genel klasör (default-workspace)** seçin (varsayılan budur: dsh’nin kendi klasörü `Documents/deepseek-harness/default-workspace`, ilk kullanımda oluşturulur). Bundan sonra kenar çubuğunun üstündeki **Yeni oturum** (ve kısayolu), başka bir projenin sohbeti açıkken de yeni sohbeti her zaman orada açar. Bir projenin yanındaki `+` yine o projeyi açar. Yeni sohbette mesaj alanının üstündeki proje düğmesi de projeyi yine değiştirir. | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="Ekran görüntüsü: Yeni oturum için varsayılan çalışma alanı"></a> |
59
+ | **Sohbette bul** | <a id="feature-findinchat"></a>Bir sohbette Mac’te `Cmd+F`, Windows ve Linux’ta `Ctrl+F` tuşlarına basın: sohbetin üzerinde bir arama kutusu açılır. Bir sözcük yazın: ekrandaki mesajlarda ve yanıtlarda her eşleşme vurgulanır, geçerli eşleşme daha koyu bir renkle gösterilir ve kutu n / toplam sayısını gösterir. `Enter` ya da `↓` sonraki eşleşmeye, `Shift+Enter` ya da `↑` önceki eşleşmeye gider (ok düğmeleri de aynı işi yapar). Sohbet, eşleşmeyi ekranın ortasına kaydırır. Büyük/küçük harf, aksanlar ve Türkçedeki noktasız ı fark etmez. `Esc` kutuyu kapatır ve imleci önceki yerine geri koyar. Bir yanıt gelirken arama sohbeti izlemeye devam eder. | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="Ekran görüntüsü: Sohbette bul"></a> |
60
+ | **Sohbet başına dal** | <a id="feature-worktreechats"></a>Yeni sohbet → proje düğmesinin yanındaki ⑂ main düğmesi → **Yeni dal**. Sonra ilk mesajı yazıp gönderin. Yapay zekâ dala bu mesaja göre ad verir (`feat/…`, `fix/…`). Composer Plus bu dal için `<project>/.worktrees/` içinde bir git worktree oluşturur, `.worktreeinclude` dosyasının listelediği yok sayılan dosyaları (örneğin `.env` ve `node_modules/`) kopyalar ve orada mesajınızla yeni bir sohbet açar. Açık sohbetin başlığında ⑂ dal · N değişiklik · ↑ ↓ (ya da **gönderilmedi**) görünür; **Değişiklikler** sayfasını açmak için buna tıklayın. Aynı menü açık worktree’leri de listeler: orada bir sohbet başlatmak için birini seçin. Dal klasörlerini kenar çubuğunda kendi projelerinin içinde görmek için dsh’nin **Görünüm seçenekleri** → **Çalışma alanı ağacı** seçeneğini seçin. | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="Ekran görüntüsü: Sohbet başına dal"></a> |
58
61
  | **Sonraki mesaj tahmini** | <a id="feature-nextprediction"></a>Varsayılan olarak açıktır: **Ayarlar → Composer Plus** içinden kapatabilirsiniz. Ajan bir turu bitirince (durdurulan veya hata veren bir tur değilse) boş mesaj alanı, bir sonraki mesajınız için gri renkte bir tahmin gösterir. Yanında **Kabul için Tab** ipucu vardır. `Tab` metni mesaj alanına koyar ama göndermez. `Esc` tahmini o tur için gizler. Yazmaya başlamak da tahmini gizler. Yeni bir tur tahmini yenisiyle değiştirir. Anahtarın altındaki **Model** menüsü dsh’nin kendi modellerini listeler (dsh’nin model menüsündeki listenin aynısı). Varsayılan olarak **dsh varsayılanı** seçilidir ve dsh’nin varsayılan modelini izler. Biten her tur için kısa bir model çağrısı yapılır. Tether’de tahmin, boş mesaj alanının üstünde görünür: alana koymak için tahmine dokunun. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Ekran görüntüsü: Sonraki mesaj tahmini"></a> |
59
62
  | **Yazarken tamamla** | <a id="feature-typingcompletion"></a>Varsayılan olarak kapalıdır: **Ayarlar → Composer Plus** içinden açabilirsiniz. Siz yazarken imlecin hemen sonrasında gri bir metin, mesajınızın nasıl devam edebileceğini gösterir. `Tab` bu metni mesaja ekler ama göndermez. `Esc` metni gizler. Yalnız sizin yazacağınız sonraki kelimeleri önerir: size cevap vermez, uydurma hata metni ya da isim eklemez. Mesaj bitmiş görünüyorsa ya da model emin değilse hiçbir şey görünmez. Gri metnin sonraki harflerini yazarsanız metin kalır ve yeni bir model çağrısı yapılmaz. Anahtarının altında kendi **Model** menüsü vardır. Bu menünün ilk seçeneği olan **Sonraki mesaj tahminiyle aynı** (varsayılan), **Sonraki mesaj tahmini** modelini kullanır. Her özellikte farklı bir model kullanmak için başka bir model seçin (örneğin tamamlamalar için daha hızlı bir model). Yazarken her duraklamada bir model çağrısı yapar. Bu yüzden tahminden çok daha fazla token harcar: hızlı ve düşük maliyetli bir model seçin. Eğik çizgi komutunda, dosya etiketi olan bir mesajda veya imleç sonda değilken çalışmaz. Tether’de, siz yazarken metnin kalanı alanın üstünde görünür: eklemek için ona dokunun. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Ekran görüntüsü: Yazarken tamamla"></a> |
60
63
  | **İstemi iyileştir** | <a id="feature-promptimprove"></a>Kaba bir istek yazın, sonra model menüsünün yanındaki sihirli değneğe (**İstemi iyileştir**) tıklayın. Tek bir model çağrısı isteği daha net bir isteme dönüştürür: önce hedef, birden çok parça varsa kısa numaralı adımlar ve çalıştırılacak kontrol. Bu sohbeti (geri alınan mesajlar hariç), projenin README, AGENTS.md ve manifest dosyalarını, değişen dosyaları ve adı sözcüklerinizle eşleşen dosyaları okur; dilinizi korur. Dosya adı uydurmaz. Yeni metin taslağınızın yerine geçer ama gönderilmez: okuyun, düzenleyin, sonra `Enter` tuşuna basın. `Cmd/Ctrl+Z` metninizi tek adımda geri getirir; düğme (**İyileştirmeyi geri al**) de aynısını yapar. O çalışırken yazarsanız yeni metniniz kalır. `Esc` ya da ikinci tıklama iptal eder. Ayarlar'da kendi **Model** menüsü vardır (varsayılan: **Sohbetin modeliyle aynı**). Eğik çizgi komutları ve dosya chip'i olan mesajlar için çalışmaz. Tether'de değnek, yazı alanının yanındadır. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Ekran görüntüsü: İstemi iyileştir"></a> |
64
+ | **Hedef kontrolü** | <a id="feature-goalcheck"></a>`/goal` ile bir hedef başlatın. Ajan otomatik bir turda hedefi tamamlandı olarak işaretlediğinde hedef yalnızca iki kontrolden sonra kapanır. Önce projenin test komutu sohbetin klasöründe, sohbetin korumalı alan moduyla çalışır. Komut sizin kendi komutunuzdur ya da `package.json`, `Makefile`, `Cargo.toml`, `go.mod` veya pytest içinde bulunan komuttur. Ajanın kendi en yeni adımı bu testin başarılı bir çalıştırmasıysa test yeniden çalışmaz. Sonra araç kullanmayan bağımsız bir model çağrısı hedefi, bu sohbeti, `git status` çıktısını ve test sonucunu okur. Bir kontrol başarısız olursa hedef etkin kalır, ajan nedenini okur ve sonraki tur devam eder. Hedef çubuğunun altındaki bir satır (**Hedef kontrolü**) testi ve son sonucu gösterir. **Düzenle** kendi test komutunuzu ve bir süre ya da token sınırını belirler; sınır aşılınca hedef engellenir. **Şimdi çalıştır** kontrolü hedefi kapatmadan çalıştırır. Ayarlar'da kendi **Model** menüsü vardır (varsayılan: **Sohbetin modeliyle aynı**). Hedefi kendiniz tamamladığınızda hiçbir şey kontrol edilmez. | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="Ekran görüntüsü: Hedef kontrolü"></a> |
61
65
  | **Sohbet boyunca izin** | <a id="feature-allowforchat"></a>Otomatik inceleme size sorduğunda onay kartında **Bu sohbet boyunca izin ver** düğmesi görünür. Bundan sonra aynı sohbette aynı araca, parametreleri ne olursa olsun, süre sınırı dolana kadar izin verilir (varsayılan olarak 1 saat; süreyi **Ayarlar → Composer Plus → Sohbet boyunca izin** içinden seçin). Sonra ajan yeniden sorar. Başlıktaki küçük bir etiket izinleri bitiş saatleriyle listeler ve kaldırır. İzinler yeniden başlatmadan sonra da korunur. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Ekran görüntüsü: Sohbet boyunca izin"></a> |
62
66
  | **Proje durumu** | <a id="feature-projectstatus"></a>Kenar çubuğundaki proje satırı, sohbetlerindeki dönen simge / bekliyor / tamamlandı işaretinin aynısını gösterir. Böylece daraltılmış bir proje de içindeki bir sohbetin çalıştığını ya da sizi beklediğini gösterir. Önce sizi bekleyen bir sohbet gösterilir, sonra henüz açmadığınız tamamlanmış bir sohbet (yeşil nokta, başka bir sohbet hâlâ çalışırken de), sonra dönen simge. Ayrıntılar için üzerine gelin. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Ekran görüntüsü: Proje durumu"></a> |
67
+ | **Sohbet satırlarında Git dalı** | <a id="feature-sessionbranch"></a>Kenar çubuğundaki her sohbet satırı, küçük gri bir etiketle sohbetin proje klasörünün sohbetin son turunda bulunduğu git dalını gösterir (örneğin `main` ya da `feature/login`; ayrık HEAD durumunda kısa commit kimliği parantez içinde görünür). Böylece bir projenin farklı dallardaki iki sohbeti artık aynı görünmez ve bir sohbeti yanlış dalda sürdürmek üzereyken bunu hemen görürsünüz. Dalın tam adını görmek için etiketin üzerine gelin. Host tarafı dalı bir tur başlarken ve biterken okur (`git branch --show-current`, salt okunur). Bu özelliği yükledikten sonra hiç turu olmayan bir sohbette ya da Git deposu olmayan bir klasörde etiket görünmez. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Ekran görüntüsü: Sohbet satırlarında Git dalı"></a> |
63
68
  | **Tümünü okundu işaretle** | <a id="feature-markprojectread"></a>Kenar çubuğunda bir projenin **…** düğmesine tıklayın → **Tümünü okundu işaretle**. O projedeki her sohbetin yeşil okunmamış noktası hemen kalkar. Diğer projelerin noktaları kalır. Projede okunmamış sohbet yoksa öğe soluk görünür (**Okunmamış sohbet yok**). | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="Ekran görüntüsü: Tümünü okundu işaretle"></a> |
64
69
  | **Etkin projeler üstte** | <a id="feature-activeprojectsfirst"></a>Bir sohbet çalışmaya başladığında ya da sizi beklediğinde, projesi dsh’nin kendi satır animasyonuyla kenar çubuğunun en üstüne taşınır (projeyi oraya sürüklediğinizdeki hareketin aynısı). Tamamlanan projeler yerinde kalır. Onları her zamanki gibi istediğiniz yere sürükleyebilirsiniz. Taşımalar dsh’nin proje sırasına kaydedilir. Bu yüzden özelliği kapatmak mevcut sırayı korur. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Ekran görüntüsü: Etkin projeler üstte"></a> |
65
70
  | **Yakın zamanda aktif proje filtresi** | <a id="feature-recentprojects"></a>Kenar çubuğu → görünüm seçenekleri (kaydırıcı simgesi) → **Son 2 saatte aktif olanlar**. Bu seçenek seçiliyken kenar çubuğu yalnızca son 2 saatte etkin bir sohbeti olan projeleri gösterir. Etkin sohbet şunlardan biridir: bu sürede güncellenen bir sohbet, çalışan ya da bekleyen bir sohbet, açık olan sohbet veya henüz açmadığınız tamamlanmış bir sohbet (dsh’nin yeşil “tamamlandı” noktası). Sonuncusu 2 saat geçtikten sonra da geçerlidir. Böyle bir sohbeti olmayan projeler gizlenir; yeni ve boş projeler de gizlenir. Tüm projeleri göstermek için seçeneği yeniden seçin. Seçim bu cihazda saklanır. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Ekran görüntüsü: Yakın zamanda aktif proje filtresi"></a> |
@@ -67,7 +72,7 @@ Sonra dsh’yi yeniden başlatın. (CLI, masaüstü profiline yükleme yapamaz;
67
72
  | **Duruma göre sıralama** | <a id="feature-statusorder"></a>Kenar çubuğu → görünüm seçenekleri → **Sıralama ölçütü** → **Duruma göre** (**Tek listede** ile). Önce tamamlanan sohbetler gelir (dsh’nin “tamamlandı” noktası; hatayla biten bir tur da bu noktayı alır). Sonra çalışan ya da bekleyen sohbetler, sonra etkin bir otomasyonu (zamanlanmış görev) olan sohbetler, en sonda da diğerleri dsh’nin sırasıyla gelir. Tamamlanan bir sohbeti açmak onu aşağı taşır. Yalnızca görünüm değişir: geri dönmek için **Elle** ya da **Son güncelleme** seçin. | <a href="assets/features/statusOrder.webp"><img src="assets/features/statusOrder.webp" width="160" alt="Ekran görüntüsü: Duruma göre sıralama"></a> |
68
73
  | **Arka plan bildirimleri** | <a id="feature-notifications"></a>dsh arka plandayken bir tur bittiğinde (yanıtın ilk satırıyla) ya da bir sohbet gerçekten sizi beklediğinde bildirim alırsınız. Bekleme nedeni bir onay (araç adı), bir yanıt (soru) veya bir plan incelemesi olabilir. Bir isteğin 1,5 sn sonra hâlâ açık olması gerekir. Bu yüzden otomatik yanıtlanan onaylar (Otomatik inceleme izinleri, diğer eklentiler) bildirim göstermez. Bir istek yanıtlanınca bildirimi de hemen geri çekilir. Dock/görev çubuğu rozeti bekleyen sohbetleri sayar. Bildirime tıklamak o sohbeti açar. | <a href="assets/features/notifications.webp"><img src="assets/features/notifications.webp" width="160" alt="Ekran görüntüsü: Arka plan bildirimleri"></a> |
69
74
  | **Uygulama dili** | <a id="feature-language"></a>Ayarlar → Composer Plus → **Uygulama dili**, dsh arayüzünün tamamını Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt veya हिन्दी diline geçirir (aşağıya bakın). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="Ekran görüntüsü: Uygulama dili"></a> |
70
- | **Mobil bağlantı (iPhone)** | <a id="feature-mobileconnect"></a>dsh’yi iPhone’unuzdan [Tether](tether/) uygulamasıyla, aynı Wi-Fi ağında ya da [Tailscale](https://tailscale.com) üzerinden kullanın. Özelliği **Ayarlar → Composer Plus** içinden açın (varsayılan olarak kapalıdır, çünkü bu Mac’te bir ağ portu açar). Sonra kenar çubuğunun sol altındaki **Mobil bağlantı** düğmesine tıklayın. QR kodunu iPhone’un Kamera uygulamasıyla (**Open in Tether** düğmesine dokunun) ya da Tether’deki **Scan code** ile tarayın. **Connect** düğmesine dokunun ve **Approve** düğmesine tıklayın. Önce Tether’i yükleyin: Tether yüklü değilse Kamera bu kodu açamaz. Telefon sohbetlerinizi gösterir, mesaj gönderir, onayları ve soruları yanıtlar, modelleri ve ajanları değiştirir. İstediğiniz kadar Mac eşleştirebilirsiniz: uygulamanın sol üstündeki Mac adıyla Mac’ler arasında geçiş yaparsınız. **Mobil bağlantı** paneli eşleştirilmiş iPhone’ları son bağlantı zamanlarıyla listeler: **Remove** ile birinin bağlantısını hemen kesersiniz. “Tailscale only” yerel ağı reddeder (paylaşılan bir Wi-Fi için) ve erişim günlüğü kimin bağlanmayı denediğini gösterir. Tether’de “Settings → Privacy” uygulamayı Face ID ile kilitler. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Ekran görüntüsü: Mobil bağlantı (iPhone)"></a> |
75
+ | **Mobil bağlantı (iPhone)** | <a id="feature-mobileconnect"></a>dsh’yi iPhone’unuzdan [Tether](tether/) uygulamasıyla, aynı Wi-Fi ağında ya da [Tailscale](https://tailscale.com) üzerinden kullanın. Özelliği **Ayarlar → Composer Plus** içinden açın (varsayılan olarak kapalıdır, çünkü bu Mac’te bir ağ portu açar). Sonra kenar çubuğunun sol altındaki **Mobil bağlantı** düğmesine tıklayın. QR kodunu iPhone’un Kamera uygulamasıyla (**Open in Tether** düğmesine dokunun) ya da Tether’deki **Scan code** ile tarayın. **Connect** düğmesine dokunun ve **Approve** düğmesine tıklayın. Önce Tether’i yükleyin: Tether yüklü değilse Kamera bu kodu açamaz. Telefon sohbetlerinizi gösterir, mesaj gönderir (fotoğraflarla birlikte: mesaj alanındaki **+** → Camera, Photos ya da Paste image), onayları ve soruları yanıtlar, modelleri ve ajanları değiştirir. İstediğiniz kadar Mac eşleştirebilirsiniz: uygulamanın sol üstündeki Mac adıyla Mac’ler arasında geçiş yaparsınız. **Mobil bağlantı** paneli eşleştirilmiş iPhone’ları son bağlantı zamanlarıyla listeler: **Remove** ile birinin bağlantısını hemen kesersiniz. “Tailscale only” yerel ağı reddeder (paylaşılan bir Wi-Fi için) ve erişim günlüğü kimin bağlanmayı denediğini gösterir. Tether’de “Settings → Privacy” uygulamayı Face ID ile kilitler. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Ekran görüntüsü: Mobil bağlantı (iPhone)"></a> |
71
76
  | **Otomatik güncellemeler** | <a id="feature-autoupdate"></a>dsh açıldığında eklenti [en son GitHub sürümünü](https://github.com/furkancak1r/dsh-composer-plus/releases/latest) denetler. Bu sürüm daha yeniyse ve npm’de de varsa, tam olarak o sürümü dsh’nin kendi eklenti yöneticisiyle yükler (Ayarlar → Eklentiler ile aynı yol) ve size bildirir. Yeni sürümü yüklemek için dsh’yi yeniden başlatın. **Ayarlar → Composer Plus → Composer Plus güncellemeleri** sürümü gösterir. **Güncellemeleri denetle** / **Şimdi güncelle** düğmeleri de buradadır. dsh yeni sürümle ilk kez açıldığında **Composer Plus N sürümündeki yenilikler** penceresi o sürümün sürüm notlarını bir kez gösterir (notlar aynı güncelleme denetiminden gelir, ek ağ çağrısı yapılmaz). **Kapat** düğmesi ya da `Esc` pencereyi kapatır. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Ekran görüntüsü: Otomatik güncellemeler"></a> |
72
77
 
73
78
  <!-- END GENERATED FEATURES -->
@@ -76,7 +81,7 @@ Düğmeler, araç ipuçları, uyarılar ve bildirimler seçili dsh dilini kullan
76
81
 
77
82
  ## Ayarlar
78
83
 
79
- Her özelliği ayrı ayrı açıp kapatabilirsiniz: dsh **Ayarlar → Composer Plus**. Her satırda küçük bir ekran görüntüsü vardır. Büyük önizleme için üzerine gelin, tam boyutta açmak için tıklayın (`Esc` kapatır). Üstteki **Özellik ara** kutusu sayfayı ada veya açıklamaya göre süzer (her dilde; büyük/küçük harf ve aksan fark etmez). `Esc` kutuyu temizler. Her satırda bir anahtar ve kısa bir açıklama vardır. Satır adının yanındaki küçük **?**, README’de o özelliği anlatan bölümü dsh’nin arayüz dilindeki README dosyasında açar. Değişiklikler yeniden başlatma gerekmeden hemen uygulanır ve o cihazda hatırlanır. **Mobil bağlantı**, **Yeniden açılışta sürdür** ve **Yazarken tamamla** dışında her şey varsayılan olarak açıktır. Bu üçünün ve **İçerik araması**, **Tur geri alma** ile **Sonraki mesaj tahmini** özelliklerinin anahtarlarını dsh’nin Host’u saklar. Bu yüzden bu ayarlar her pencerede geçerlidir ve yeniden başlatmadan sonra da korunur. **Sonraki mesaj tahmini**, **Yazarken tamamla** ve **İstemi iyileştir** için seçilen **Model** de Host’ta saklanır (**Yazarken tamamla** için varsayılan: **Sonraki mesaj tahminiyle aynı**; **İstemi iyileştir** için varsayılan: **Sohbetin modeliyle aynı**). **İçerik araması** yalnızca dsh yeniden başladıktan sonra değişir (dsh bu ayarı açılışta okur). O zamana kadar satırında **Bu değişikliğin geçerli olması için dsh’yi yeniden başlatın.** yazar.
84
+ Her özelliği ayrı ayrı açıp kapatabilirsiniz: dsh **Ayarlar → Composer Plus**. Her satırda küçük bir ekran görüntüsü vardır. Büyük önizleme için üzerine gelin, tam boyutta açmak için tıklayın (`Esc` kapatır). Üstteki **Özellik ara** kutusu sayfayı ada veya açıklamaya göre süzer (her dilde; büyük/küçük harf ve aksan fark etmez). `Esc` kutuyu temizler. Her satırda bir anahtar ve kısa bir açıklama vardır. Satır adının yanındaki küçük **?**, README’de o özelliği anlatan bölümü dsh’nin arayüz dilindeki README dosyasında açar. Değişiklikler yeniden başlatma gerekmeden hemen uygulanır ve o cihazda hatırlanır. **Mobil bağlantı**, **Yeniden açılışta sürdür** ve **Yazarken tamamla** dışında her şey varsayılan olarak açıktır. Bu üçünün ve **İçerik araması**, **Tur geri alma**, **Sonraki mesaj tahmini** ile **Hedef kontrolü** özelliklerinin anahtarlarını dsh’nin Host’u saklar. Bu yüzden bu ayarlar her pencerede geçerlidir ve yeniden başlatmadan sonra da korunur. **Sonraki mesaj tahmini**, **Yazarken tamamla**, **İstemi iyileştir** ve **Hedef kontrolü** için seçilen **Model** ile **Sohbet boyunca izin** için seçilen **Süre sınırı** da Host’ta saklanır (**Yazarken tamamla** için varsayılan: **Sonraki mesaj tahminiyle aynı**; **İstemi iyileştir** ve **Hedef kontrolü** için varsayılan: **Sohbetin modeliyle aynı**; **Süre sınırı** için varsayılan: 1 saat). **İçerik araması** yalnızca dsh yeniden başladıktan sonra değişir (dsh bu ayarı açılışta okur). O zamana kadar satırında **Bu değişikliğin geçerli olması için dsh’yi yeniden başlatın.** yazar.
80
85
 
81
86
  <p align="center"><img src="docs/images/settings.webp" width="720" alt="Ayarlar → Composer Plus: özellik araması, dil seçici, güncelleme satırı ve her özellik için bir anahtar; üzerine gelince ekran görüntüsü önizlemesi"></p>
82
87
 
@@ -90,7 +95,7 @@ English · 中文 · Türkçe · Español · Português (Brasil) · Français ·
90
95
 
91
96
  Uygulamanın tamamı hemen yeni dile geçer. Seçim, dsh’nin kendi kayıtlı `locale.preference` ayarıdır (Genel → Dil ile aynı ayar). Bu yüzden yeniden başlatmadan sonra da korunur. **Sistem dili** bu seçimi temizler: masaüstü uygulaması işletim sisteminin dilini, web arayüzü tarayıcının dilini kullanır. Desteklenmeyen bir dil için İngilizce kullanılır. Eklentiyi yüklemek, daha önce seçtiğiniz bir dili hiçbir zaman değiştirmez.
92
97
 
93
- Her dil paketinde 3.143 metin vardır: dsh `0.2.0-rc.2` ve `0.2.1-rc.2` sürümlerinin tüm arayüz metinleri (sohbetler, kenar çubuğu, ayarlar, onaylar, zamanlamalar, dosya önizlemeleri, eklenti yöneticisi, eklenti pazarı), eklentinin kendi denetimleri ve popüler [dsh-rewind](https://github.com/SiriLee/dsh-rewind) eklentisi. Çevrilmeyenler: mesajlarınız, model çıktısı, kod, eğik çizgi komutlarının adları (`/plan`, `/compact`), sağlayıcıya ait etiketler (örneğin `High` akıl yürütme düzeyi), diğer eklentilerin metinleri ve masaüstü uygulamasının yerel menüleri/güncelleme pencereleri (dsh bunları yalnızca İngilizce/Çince sunar). Daha yeni bir dsh sürümünün eklediği metinler, paketler güncellenene kadar İngilizce görünür. Bir dili başka bir eklenti zaten sağlıyorsa o dil için o eklentinin metinleri kullanılır.
98
+ Her dil paketinde 3.280 metin vardır: dsh `0.2.0-rc.2` ve `0.2.1-rc.2` sürümlerinin tüm arayüz metinleri (sohbetler, kenar çubuğu, ayarlar, onaylar, zamanlamalar, dosya önizlemeleri, eklenti yöneticisi, eklenti pazarı), eklentinin kendi denetimleri ve popüler [dsh-rewind](https://github.com/SiriLee/dsh-rewind) eklentisi. Çevrilmeyenler: mesajlarınız, model çıktısı, kod, eğik çizgi komutlarının adları (`/plan`, `/compact`), sağlayıcıya ait etiketler (örneğin `High` akıl yürütme düzeyi), diğer eklentilerin metinleri ve masaüstü uygulamasının yerel menüleri/güncelleme pencereleri (dsh bunları yalnızca İngilizce/Çince sunar). Daha yeni bir dsh sürümünün eklediği metinler, paketler güncellenene kadar İngilizce görünür. Bir dili başka bir eklenti zaten sağlıyorsa o dil için o eklentinin metinleri kullanılır.
94
99
 
95
100
  ## Klavye kısayolları
96
101
 
@@ -110,6 +115,12 @@ Her dil paketinde 3.143 metin vardır: dsh `0.2.0-rc.2` ve `0.2.1-rc.2` sürüml
110
115
  | `Tab` | tahmin gösteren boş mesaj alanı | tahmini mesaj alanına koy |
111
116
  | `Tab` | imleçten sonraki gri tamamlama | tamamlamayı mesaja ekle |
112
117
  | `Esc` | tahmin gösteren boş mesaj alanı | tahmini gizle |
118
+ | `Cmd/Ctrl+Z` | mesaj alanı, **İstemi iyileştir** kullanıldıktan sonra | yazdığınız metni geri getir |
119
+ | `Esc` | mesaj alanı, **İstemi iyileştir** çalışırken | iyileştirmeyi iptal et |
120
+ | `Enter` / `Esc` | çift tıkladığınız kuyruktaki mesaj | düzenlemeyi kaydet / iptal et |
121
+ | Mac’te `Cmd+F`, Windows ve Linux’ta `Ctrl+F` | açık sohbet | **Sohbette bul** kutusunu aç |
122
+ | `Enter` / `Shift+Enter`, `↓` / `↑` | **Sohbette bul** kutusu | sonraki / önceki eşleşme |
123
+ | `Esc` | **Sohbette bul** kutusu | kutuyu kapat |
113
124
 
114
125
  Açık bir `/` veya `@` menüsü bu tuşları kendisi kullanır.
115
126
 
@@ -122,10 +133,14 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
122
133
  - **Devam et:** kimlik doğrulamalı yerel uç nokta, yalnızca kesintiye uğrayan son turu sürdürür. Eski veya yinelenen istekleri reddeder ve mevcut onay kancalarını korur. Yeni bir kullanıcı mesajı göndermez.
123
134
  - **Yeniden açılışta sürdür:** siz açana kadar kapalıdır. Host tarafı yalnızca sohbet kimliklerini ve başlangıç zamanlarını `$DSH_HOME/storages/dsh-composer-plus/resume.json` dosyasında saklar (yalnızca sahibin erişebildiği izinlerle). Hiçbir veri bilgisayarınızdan çıkmaz. Bir sohbeti yalnızca dsh’nin kendi günlüğü, son turu sizin değil dsh’nin durdurduğunu gösteriyorsa sürdürür. Onaylar ve Otomatik inceleme, sürdürülen tura her zamanki gibi uygulanır.
124
135
 
125
- - **Değişiklikler paneli:** git, bilgisayarınızda salt okunur olarak, sohbetin kendi klasöründe ve dsh’nin kimlik doğrulamalı `/api` kanalı üzerinden çalışır. Hiçbir zaman commit, stage veya fetch yapmaz. Yalnızca git’in kendisinin listelediği yolları gösterir. Ağaç, yerel ve uzak dalların en yeni 300 commit’ini gösterir. Hiçbir zaman dal değiştirmez (checkout yapmaz). commit-graph dosyası olmayan çok büyük bir depoda ağacın açılması birkaç saniye sürebilir. **Bu sohbet**, dosya araçlarının yazdığı dosyaları sohbetin kendi günlüğünden okur. Bu dosyaları, hemen silinen geçici bir klasörde sohbetin Tur geri alma anlık görüntüsüyle karşılaştırır. Deponuza ya da anlık görüntülerin ayrı deposuna hiçbir şey yazmaz.
126
- - **Özellik fikirleri:** siz **Özellik öner** düğmesine tıklayana kadar hiçbir şey çalışmaz. Sonra Host tarafı yalnızca sohbetin kendi klasörünü okur (tarayıcı hiçbir zaman yol göndermez). Okunanlar şunlardır: üst düzey öğelerin adları; README, AGENTS.md ve manifest dosyasının (`package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, …) ilk 6 kB’ı ve `git log --oneline -15`. Toplam en çok 16 kB’tır. `.env*` dosyalarını, anahtar dosyalarını ve `node_modules` gibi klasörleri atlar. Yalnızca klasörün içinde kalan normal dosyaları okur: klasörün dışını gösteren bir sembolik bağlantı, bir FIFO veya bir aygıt atlanır. Bu özet, dsh’nin kendi sağlayıcı ayarları üzerinden sohbetin kullandığı modele tek bir istek olarak gider. Hiçbir sohbete eklenmez. Projeye hiçbir şey yazılmaz. Sağa kaydırılan bir fikir, plan modunda yeni bir sohbet başlatır. Bu yüzden onaylar ve plan incelemesi her zamanki gibi uygulanır. **Hemen uygula**, sohbeti plan modu olmadan başlatır: model dosyaları hemen değiştirebilir. Sohbetin her zamanki onayları ve Otomatik inceleme uygulanır. Sonraya saklanan fikirler (başlık, özet, gerekçe, efor), projenin klasör yoluyla birlikte dsh ana klasöründeki `storages/dsh-composer-plus/later.json` dosyasında saklanır (yalnızca sahibin erişebildiği dosya). Projeye hiçbir şey gitmez. Önerilen fikirlerin geçmişi (başlık, özet, gerekçe, efor, tarih, başlatılıp başlatılmadığı) aynı biçimde `storages/dsh-composer-plus/idea-history.json` dosyasında saklanır. Proje başına en çok 200 fikir tutulur (önce en eskiler silinir). Bu fikirlerin başlıkları, o projedeki bir sonraki **Özellik öner** isteğiyle modele gider.
136
+ - **Değişiklikler paneli:** git, bilgisayarınızda salt okunur olarak, sohbetin kendi klasöründe ve dsh’nin kimlik doğrulamalı `/api` kanalı üzerinden çalışır. Hiçbir zaman commit, stage veya fetch yapmaz. Yalnızca git’in kendisinin listelediği yolları gösterir. Ağaç en çok 1000 yerel ve uzak dalı listeler. Bir dalın en yeni 300 commit’ini gösterir: yalnızca ilk ebeveyn çizgisini izler, yani bir merge commit’i getirdiği commit’lerin yerini tutar. Hiçbir zaman dal değiştirmez (checkout yapmaz). **Bu sohbet**, dosya araçlarının yazdığı dosyaları sohbetin kendi günlüğünden okur. Bu dosyaları, hemen silinen geçici bir klasörde sohbetin Tur geri alma anlık görüntüsüyle karşılaştırır. Deponuza ya da anlık görüntülerin ayrı deposuna hiçbir şey yazmaz.
137
+ - **Özellik fikirleri:** siz **Özellik öner** düğmesine tıklayana kadar hiçbir şey çalışmaz. Sonra Host tarafı yalnızca sohbetin kendi klasörünü okur (tarayıcı hiçbir zaman yol göndermez). Okunanlar şunlardır: üst düzey öğelerin adları; README, AGENTS.md ve manifest dosyasının (`package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, …) ilk 6 kB’ı, README’nin geri kalanının ana hatları (başlıklar, tablo satırları, liste öğeleri; en çok 6 kB) ve son commit’lerin başlıkları (`git log --format=%s`, en çok 6 kB). Toplam en çok 28 kB’tır. `.env*` dosyalarını, anahtar dosyalarını ve `node_modules` gibi klasörleri atlar. Yalnızca klasörün içinde kalan normal dosyaları okur: klasörün dışını gösteren bir sembolik bağlantı, bir FIFO veya bir aygıt atlanır. Bu özet, dsh’nin kendi sağlayıcı ayarları üzerinden sohbetin kullandığı modele tek bir istek olarak gider. Hiçbir sohbete eklenmez. Projeye hiçbir şey yazılmaz. Sağa kaydırılan bir fikir, plan modunda yeni bir sohbet başlatır. Bu yüzden onaylar ve plan incelemesi her zamanki gibi uygulanır. **Hemen uygula**, sohbeti plan modu olmadan başlatır: model dosyaları hemen değiştirebilir. Sohbetin her zamanki onayları ve Otomatik inceleme uygulanır. Sonraya saklanan fikirler (başlık, özet, gerekçe, efor), projenin klasör yoluyla birlikte dsh ana klasöründeki `storages/dsh-composer-plus/later.json` dosyasında saklanır (yalnızca sahibin erişebildiği dosya). Projeye hiçbir şey gitmez. Önerilen fikirlerin geçmişi (başlık, özet, gerekçe, efor, tarih, başlatılıp başlatılmadığı) aynı biçimde `storages/dsh-composer-plus/idea-history.json` dosyasında saklanır. Proje başına en çok 200 fikir tutulur (önce en eskiler silinir). Bu fikirlerin başlıkları, o projedeki bir sonraki **Özellik öner** isteğiyle modele gider.
127
138
  - **İçerik araması:** sohbetlerinizde yeni bir kod arama yapmaz. Eklenti yalnızca dsh’nin kendi mesaj dizinini (SQLite FTS5, `dsh-session-query-sqlite`) açar ve ona bir dosya verir: `$DSH_HOME/cache/composer-plus/session-search.db` (dosyaya ve klasöre yalnızca sahibi erişebilir). Dosya, kullanıcı ve asistan mesajlarınızın metnini içerir. Bu yüzden `$DSH_HOME/sessions` içindeki sohbet günlükleri kadar özeldir. Hiçbir veri bilgisayarınızdan çıkmaz. Dosya, dsh’nin yeniden oluşturabileceği bir kopyadır: dsh kapalıyken onu silebilirsiniz. Anahtar `$DSH_HOME/storages/dsh-composer-plus/content-search.json` dosyasındadır.
128
139
  - **Tur geri alma:** Host, her mesajınızdan önce sohbetin klasörünün bir git anlık görüntüsünü alır ve bunu kendi ayrı deposunda saklar: `$DSH_HOME/cache/composer-plus/rollback/<chat>.git` (yalnızca sahibin erişebildiği klasör). Bu depo, o klasörde git’in gördüğü dosyaların kopyalarını tutar (yok sayılan dosyaları tutmaz). Bu yüzden proje kadar özeldir. Deponuzun nesnelerini okur (git’te zaten olanların kopyasını almaz). Deponuzun index’ine, `HEAD`’ine, dallarına, etiketlerine, stash’ine veya yapılandırmasına hiçbir zaman yazmaz. git’in orada yaptığı tek değişiklik, yeniden kullandığı nesne dosyalarının zaman damgasını yenilemektir (bu, `git gc` ile temizlenmelerini geciktirir). Dosyalarla geri alma, yalnızca sohbetin klasöründeki normal dosyalara yazar. Sembolik bağlantıları, kanalları (pipe) ve klasörün dışındaki her şeyi atlar. Hiçbir veri bilgisayarınızdan çıkmaz. Bu ayrı depoyu dsh kapalıyken silebilirsiniz (bu durumda yeni mesajlar gelene kadar geri alma yalnızca sohbet için çalışır). **Sohbeti sil**, sohbetin ayrı deposunu da siler. Anahtar `$DSH_HOME/storages/dsh-composer-plus/rollback.json` dosyasındadır. Dosyalarla geri alma, dosyaların geri almadan hemen önceki hâlini de **Yeniden uygula** için saklar (aynı ayrı depoda, `refs/r/…`). Yeniden uygulanan geri almalar `$DSH_HOME/storages/dsh-composer-plus/redone.json` dosyasında listelenir (yalnızca sahibin erişebildiği dosya).
140
+ - **GitHub’da issue aç** (Özellik fikirleri → **Sonra** listesi): yalnızca siz tıkladığınızda çalışır. Host tarafı, sohbetin klasöründe sizin kendi GitHub CLI aracınızı (`gh issue create`) fikrin kayıtlı başlığı ve özetiyle (ve neden önemli olduğuyla) çalıştırır. `gh` kendi oturumunu ve klasörün GitHub uzak deposunu (remote) kullanır. Bu yüzden issue sizin hesabınızla o depoda açılır ve GitHub onu o depoyu görebilen herkese gösterir. dsh, başlattığı komutlardan adı token’a benzeyen değişkenleri kaldırır. `gh` aracına `GH_TOKEN` ya da `GITHUB_TOKEN` ile bir token verdiyseniz eklenti `gh` aracına yalnızca bu değişkenleri geçirir. Issue bağlantısı, fikirle birlikte `later.json` dosyasında saklanır.
141
+ - **Bu dosyayı değiştiren sohbetler** (Değişiklikler, bir dosyanın "…" menüsü): Host tarafı, klasörü aynı depoda olan sohbetlerin günlüklerini dsh’nin sakladığı biçimiyle okur ve her sohbetin başlığını, zamanı ve isteğin ilk satırını döndürür. Dosyanın kendisini hiçbir zaman açmaz.
142
+ - **Sohbet satırlarında Git dalı:** Host tarafı, bir tur başlarken ve biterken sohbetin klasöründe `git branch --show-current` komutunu (salt okunur) çalıştırır. Yalnızca sohbet kimliğini, dal adını ve zamanı `$DSH_HOME/storages/dsh-composer-plus/session-branches.json` dosyasında saklar (yalnızca sahibin erişebildiği dosya, en yeni 2000 sohbet). Anahtar, onun yanındaki `branches.json` dosyasındadır.
143
+ - **Sohbette bul** yalnızca sayfada çalışır: sayfanın gösterdiği metni okur ve hiçbir şey göndermez.
129
144
  - **Sohbeti Markdown olarak dışa aktar:** Host tarafı yalnızca sohbetin kendi günlüğünü okur (dsh’nin gösterdiği mesajların aynısı) ve bunları sayfaya verir. Hiçbir proje dosyasını okumaz ve ağ üzerinden hiçbir şey göndermez. Markdown metni yalnızca panonuza ya da kaydettiğiniz dosyaya gider.
130
145
  - **Sohbeti sil:** sohbetin kendi günlük klasörlerini (`$DSH_HOME/sessions/<project>/<chat>`) Çöp Sepeti’ne taşır. Proje klasörüne dokunmaz.
131
146
  - **Sohbet boyunca izin:** izinler, verildikleri zamanla birlikte `$DSH_HOME/storages/dsh-composer-plus/chat-grants.json` dosyasında saklanır (yalnızca sahibin erişebildiği izinlerle). Bir izin, tek bir sohbetteki tek bir aracı süre sınırı dolana kadar kapsar (varsayılan olarak 1 saat). O araç yazabiliyorsa izin her türlü yazmayı da kapsar. İzni başlıktaki etiketten kaldırın.
@@ -135,6 +150,7 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
135
150
  - **Sonraki mesaj tahmini:** varsayılan olarak açıktır. Bu model çağrılarını durdurmak için özelliği **Ayarlar → Composer Plus** içinden kapatın. Biten her turdan sonra Host tarafı, sohbetteki kendi mesajlarınızı ve ajanın metin yanıtlarını seçilen modele gönderir (siz başka bir model seçmediyseniz dsh’nin varsayılan modeli). Araç çıktısı, gizli bağlam ve akıl yürütme metni gönderilmez. En çok yaklaşık 6.000 karakter (en yeni kısım) gider. İstek, dsh’nin kendi sağlayıcı ayarları üzerinden tek bir istek olarak gider. Sohbete hiçbir şey kaydedilmez: tahmin sohbet geçmişine eklenmez. Anahtar ve model seçimi `$DSH_HOME/storages/dsh-composer-plus/predict.json` dosyasındadır (yalnızca sahibin erişebildiği dosya).
136
151
  - **Yazarken tamamla:** siz açana kadar kapalıdır. Açıkken, yazarken her duraklamada Host tarafı o ana kadar yazdığınız metni, sohbetteki kendi mesajlarınızı ve ajanın metin yanıtlarını **Yazarken tamamla** için seçilen modele (varsayılan olarak **Sonraki mesaj tahmini** modeline) gönderir. Araç çıktısı, gizli bağlam ve akıl yürütme metni gönderilmez. Sohbetten en çok yaklaşık 3.000 karakter gider. Daha yeni bir duraklama eski isteği durdurur. Sohbete hiçbir şey kaydedilmez. Anahtar `$DSH_HOME/storages/dsh-composer-plus/complete.json` dosyasındadır (yalnızca sahibin erişebildiği dosya).
137
152
  - **İstemi iyileştir:** siz sihirli değneğe tıklayana kadar hiçbir şey çalışmaz. Sonra Host tarafı, **İstemi iyileştir** için seçilen modele (varsayılan olarak sohbetin kendi modeline) tek bir istek gönderir. İstekte şunlar vardır: taslağınız; sohbetteki kendi mesajlarınız ve ajanın metin yanıtları (en çok yaklaşık 6.000 karakter, en yeni kısım); **Özellik fikirleri** ile aynı proje özeti (aynı dosya kurallarıyla: `.env*` dosyaları ve anahtar dosyaları okunmaz, klasörün dışını gösteren sembolik bağlantılar ve FIFO’lar atlanır); `git status` komutunun değişmiş olarak listelediği yollar ve adı taslağınızla ortak sözcük içeren en çok 30 izlenen veya izlenmeyen (yok sayılmayan) yol. Araç çıktısı, gizli bağlam, akıl yürütme metni ve geri alınan mesajlar gönderilmez. Bu özet dışında hiçbir dosya içeriği gönderilmez. Sohbete ve projeye hiçbir şey yazılmaz: yanıt yalnızca mesaj alanındaki taslağınızın yerine geçer ve göndermeye siz karar verirsiniz. Model seçimi `$DSH_HOME/storages/dsh-composer-plus/improve.json` dosyasındadır (yalnızca sahibin erişebildiği dosya).
153
+ - **Hedef kontrolü:** yalnızca ajan otomatik bir turda bir `/goal` hedefini tamamlandı olarak işaretlediğinde (ya da siz **Şimdi çalıştır** düğmesine tıkladığınızda) çalışır. Host tarafı test komutunu sohbetin klasöründe, sohbetin korumalı alan moduyla çalıştırır (dsh’nin kendi `bash` aracı gibi: aynı dosya erişimi politikası; bu korumalı alan başlayamazsa test çalışmaz ve kontrol başarısız olur). Komutu bulmak için yalnızca `package.json`, `Makefile`, `Cargo.toml`, `go.mod`, `pyproject.toml` ve `pytest.ini` dosyalarını, klasörün içindeki normal dosyalar olarak okur (klasörün dışını gösteren sembolik bağlantılar ve FIFO’lar okunmaz). Sonra **Hedef kontrolü** için seçilen modele (varsayılan olarak sohbetin kendi modeline), araç içermeyen tek bir istek gönderir. İstekte şunlar vardır: hedef; hedef başladığından beri sohbet (mesajlarınız, ajanın yanıtları, 1.000 karaktere kısaltılmış araç çağrıları ve her araç sonucunun son 2.000 karakteri; akıl yürütme metni ve geri alınan adımlar yoktur; en çok yaklaşık 60.000 karakter, en yeni kısım); `git status --short` çıktısı ve test çıktısının sonu. Araç çıktısı ajanın okuduklarını içerebilir. Bu yüzden bu istek, sohbetin kendisi gibi, dosyalarınızın parçalarını içerebilir. Sohbete ve projeye hiçbir şey yazılmaz. Test komutunuz, sınırlar, son sonuç (çıktısının sonuyla) ve model seçimi `$DSH_HOME/storages/dsh-composer-plus/goal-check.json` dosyasındadır (yalnızca sahibin erişebildiği dosya, en yeni 500 sohbet).
138
154
 
139
155
  ## Sorun giderme
140
156
 
@@ -149,7 +165,11 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
149
165
  - **Silme, bu sohbetin başka bir dsh’de açık olduğunu söylüyor:** aynı dsh ana klasörünü kullanan ikinci bir dsh, sohbetin kilidini tutuyor. O pencereyi ya da dsh’yi kapatın, sonra yeniden silin. Bu sırada sohbet arşivlenmiş olarak kalır.
150
166
  - **"Tailscale only" seçeneğini açtıktan sonra iPhone’um bağlanamıyor:** Tailscale hem Mac’te hem de iPhone’da açık olmalıdır. Tailscale Mac’te kapalıysa Mobil bağlantı paneli bir uyarı gösterir. Erişim günlüğü, reddedilen her denemeyi nedeniyle birlikte gösterir.
151
167
  - **Bir sohbet yeniden başlatmadan sonra devam etmedi:** dsh kapandığında Yeniden açılışta sürdür kapalıydı, o turu kendiniz durdurdunuz, tur bitmişti (tamamlandı ya da hata verdi), sohbet arşivlenmişti veya 20’den fazla sohbet çalışıyordu (en yeni 20 sohbet devam eder).
152
- - **Bir yayından hemen sonra yükleme başarısız oluyor:** sürümü ekleyin (`dsh-composer-plus@1.13.0`) ve yukarıdaki kurulum notuna bakın.
168
+ - **GitHub’da issue aç "gh could not open the issue" diyor:** bu mesaj, `gh` aracının kendi ilk satırıdır. Bir terminalde `gh auth status` komutunu çalıştırın ve `gh auth login` ile oturum açın. Sohbetin klasöründe bir GitHub uzak deposu (remote) olmalıdır (`git remote -v`). "not installed or not on the PATH of dsh", dsh’nin `gh` aracını bulamadığı anlamına gelir: aracı yükleyin ya da dsh’yi `gh` aracının çalıştığı bir terminalden başlatın.
169
+ - **Bir sohbet satırında dal etiketi yok:** bu sürümü yüklediğinizden beri sohbette hiç tur olmadı, sohbetin klasörü bir git deposu değil ya da **Sohbet satırlarında Git dalı** kapalı. Bir güncellemeden sonra dsh’yi yeniden başlatın (dalı Host tarafı kaydeder).
170
+ - **Hedef kontrolü, testin 127 koduyla ya da "not found" ile çıktığını söylüyor:** Finder’dan veya Dock’tan başlatılan dsh’nin PATH’i terminalinizdekinden daha kısa olabilir. Bu yüzden dsh `npm`, `pnpm` veya `cargo` aracını bulamaz. dsh’yi bir terminalden başlatın ya da **Hedef kontrolü** → **Düzenle** içinde tam yolu olan kendi test komutunuzu belirleyin. **Şimdi çalıştır** sonucu hemen gösterir.
171
+ - **Hedef kapanmıyor ve ajan çalışmaya devam ediyor:** **Hedef kontrolü** başarısız bir test ya da eksik bir iş buldu. Hedefin altındaki satır nedenini gösterir (ayrıntılar için imleci sonucun üzerine getirin). Nedeni ya da test komutunu düzeltin veya hedefi `/goal` ya da hedef çubuğuyla kendiniz tamamlayın (bu tamamlama kontrol edilmez).
172
+ - **Bir yayından hemen sonra yükleme başarısız oluyor:** sürümü ekleyin (`dsh-composer-plus@1.14.0`) ve yukarıdaki kurulum notuna bakın.
153
173
 
154
174
  ## Sınırlar
155
175
 
@@ -173,14 +193,20 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
173
193
  - **Kuyruktaki mesajı yerinde düzenle**, dsh’nin kendi kuyruk düzenleyicisini açar. Bu yüzden onun sınırları da geçerlidir: görsel ya da dosya içeren bir mesaj düzenlenemez. Bu arada gönderilmeye başlayan bir mesaj değişmez (dsh kendi hatasını gösterir).
174
194
  - **Yeniden uygula**, geri alınan sohbeti hiçbir zaman değiştirmez: geri almadan hemen önceki andan yeni bir sohbet başlatır (dsh’nin kendi dallandırması, aynı model bağlamı). Bu yüzden yeni sohbetin kimliği ve başlığı yenidir. Bir sohbette yalnızca en yeni geri alma yeniden uygulanabilir: yalnızca bir kez ve ondan sonra hiçbir şey gelmediyse (yeni bir mesaj bu seçeneği kaldırır). Geri almadan sonra değiştirdiğiniz bir dosya korunur. Üzerine yazan kutuyu işaretlerseniz korunmaz. Yeniden uygulama, geri almanın sakladığı anlık görüntüyü gerektirir (aynı 50 girdilik pencere). Bu sürümden önce ya da **Yalnızca sohbet** ile yapılan bir geri alma yalnızca mesajları geri getirir.
175
195
  - **Bu sohbet** yalnızca dsh’nin dosya araçlarının (`write`, `edit`, `str_replace_editor`) yazdığı dosyaları sayar. Bir komutun (`bash`) değiştirdiği dosyalar bu görünümde yoktur. Bu dosyalar **Commit edilmemiş** altında görünür. Sohbetin Tur geri alma anlık görüntüsü yoksa (Tur geri alma kapalı, dsh-rewind-plugin yüklü ya da sohbet eklentiden daha eski), görünüm son commit ile karşılaştırır ve bunu belirtir. Tur geri alma bir sohbetin en yeni 50 anlık görüntüsünü saklar. Daha uzun bir sohbette görünüm, saklanan en eski anlık görüntüyle karşılaştırır, hangi mesajdan başladığını söyler ve daha önceki değişiklikleri saymaz. **Boşluk değişikliklerini gizle**, `git diff -w` ile aynıdır: yalnızca satır içindeki boşlukları değişen bir satır da gizlenir.
196
+ - **GitHub’da issue aç** için dsh’nin PATH’inde GitHub CLI (`gh`) ve sohbetin klasöründe bir GitHub uzak deposu (remote) gerekir. En çok 60 sn çalışır. `gh` daha uzun sürerse issue GitHub’da açılmış olabilir, ama bağlantısı listede görünmez. Yeniden tıklamadan önce GitHub’a bakın: liste bağlantıyı yalnızca tamamlanan bir çalıştırmadan okur, bu yüzden yeni bir tıklama ikinci bir issue açabilir. Birden çok GitHub uzak deposu olan bir klasör, `gh` aracının kendi varsayılanını kullanır (`gh repo set-default`).
197
+ - **Bu dosyayı değiştiren sohbetler**, **Bu sohbet** gibi yalnızca dsh’nin dosya araçlarını (`write`, `edit`, `str_replace_editor`) tanır: bir komutun (`bash`) yaptığı değişiklik listelenmez. Deponun en yeni 300 sohbetini okur (oluşturulma zamanına göre) ve daha fazlası varsa bunu belirtir. En çok 100 satır gösterir. Yeniden adlandırılan bir dosya, aracın yazdığı adla listelenir. Klasörü deponun dışında olan bir sohbet (aynı dosyalara başka bir yoldan ulaşsa bile) sayılmaz. dsh açıldıktan sonraki ilk açılış, deponun tüm sohbet günlüklerini okur (275 sohbet için yaklaşık 4 sn). Sonraki açılışlar yalnızca o zamandan beri değişen sohbetleri okur.
198
+ - **Sohbet satırlarında Git dalı**, şu anki dalı değil, sohbetin son turu başladığında ya da bittiğinde sohbetin klasörünün bulunduğu dalı gösterir: bir tur dışında yapılan dal değişikliği bir sonraki turdan sonra görünür. Bu sürümden önceki sohbetlerde bir sonraki turlarına kadar etiket görünmez. Etiket, dsh’nin sohbet satırı yapısına yerleşir (dsh’de orada bir yuva yoktur). Bir dsh güncellemesi bu yapıyı değiştirirse etiket görünmez.
199
+ - **Sohbette bul** yalnızca sayfanın gösterdiği içerikte arar: yüklenmiş mesajlarda ve yanıtlarda arar (eskiler için yukarı kaydırın ya da **Öncekileri yükle** düğmesine tıklayın). Kapalı araç adımlarında ve bir aracın daraltılmış çıktısındaki metinde aramaz. En çok 2.000 eşleşme sayar (sonra "2000+" gösterir). Tarayıcının vurgulama API’sini kullanır (Chromium 105 ve sonrası; masaüstü uygulamasında vardır): daha eski bir tarayıcıda sayı ve eşleşmeler arası geçiş çalışır, ama renk görünmez. Mac’te `Cmd+F`, Windows ve Linux’ta `Ctrl+F` kutuyu yalnızca ekranda bir sohbet varken açar. Mac’te `Ctrl+F`, metin alanlarındaki macOS görevini korur (imleci bir karakter ileri alır). Başka yerlerde tarayıcının kendi arama özelliği eskisi gibi çalışır.
176
200
  - Yeniden başlatmadan önce gönderilen bir bildirime tıklamak yalnızca dsh’yi öne getirir.
177
201
  - Etkin projeler dsh’nin kayıtlı proje sırasıyla taşınır. Bu yüzden yeni sıra yeniden başlatmadan sonra korunur. Hiçbir projeye ait olmayan sohbetler ("Gruplanmamış") taşınamaz; dsh bunları her zaman en sonda listeler.
178
202
  - dsh’nin kenar çubuğundaki görünüm seçenekleri menüsünde bir uzantı noktası yoktur. Bu yüzden yakın zamanda aktif proje seçeneği dsh’nin kendi menüsüne eklenir. Bir dsh güncellemesi bu menüyü değiştirirse seçenek görünmez ve tüm projeler görünür kalır. Filtre proje satırlarında çalışır, bu yüzden **Tek listede** görünümü süzülmez. Filtreyi **Çalışma alanı** ile kullanın: **Çalışma alanı ağacı** görünümünde gizlenen bir üst klasör, içindeki etkin projeleri de gizler. **Duruma göre** seçeneğinin de aynı türde bir sınırı vardır: dsh’de sıralama için bir yuva yoktur. Bu yüzden seçenek ve satır sırası dsh’nin menü ve liste yapısına bağlanır.
179
203
  - dsh’de proje satırı menüsü veya Çalışma alanları başlığı için de bir yuva yoktur. **Yolu kopyala**, proje satırını dsh’nin satır yapısından bulur. **Tüm projeleri daralt** dsh’nin başlığına yerleşir ve açık her projeyi, proje satırına tıklamakla aynı yolla kapatır. Bir dsh güncellemesi bu yapıyı değiştirirse sağ tıklama tarayıcının menüsünü gösterir ve düğme görünmez.
180
204
  - dsh’de yeni sohbetin proje menüsünde de bir uzantı noktası yoktur. Bu yüzden **Projelerde ara** kutusu ve A–Z sırası dsh’nin menü yapısına bağlanır. Bir dsh güncellemesi bu yapıyı değiştirirse menü, dsh’nin çizdiği gibi görünür: kayıtlı sırayla ve arama kutusu olmadan. A–Z sırası yalnızca bir görünümdür. dsh’nin kayıtlı proje sırasını değiştirmez.
205
+ - dsh’de **Yeni oturum** düğmesinin nerede açılacağını seçen bir uzantı noktası da yoktur. **Yeni oturum için varsayılan çalışma alanı**, dsh’nin herkese açık API’si olmayan bir yöntemini (dsh çalışma alanı hizmetinin `startSession` yöntemi) sarar. Bir dsh güncellemesi bu adı değiştirirse **Yeni oturum**, dsh’nin seçtiği yerde (açık ya da son proje) açılır. Proje belirtmeyen her çağrı varsayılanı kullanır: kenar çubuğu düğmesi, kısayolu, logo ve **Otomasyon görevleri** sayfasındaki **Yeni** düğmesi. dsh açılırken son sohbeti yine açar. Genel klasör ilk kullanımda oluşturulur ve projelerinize eklenir. Windows ya da Linux’ta Documents klasörü taşındıysa bu klasör, dsh’nin kendi klasöründen farklı olabilir.
181
206
  - dsh’de mesaj alanı ipucu için de bir uzantı noktası yoktur. Bu yüzden **Sonraki mesaj tahmini** metni, dsh’nin kendi yer tutucu metninin (`[data-composer-placeholder]`) üstüne yerleşir. Bir dsh güncellemesi bu yapıyı değiştirirse tahmin görünmez. Özellik açıkken biten her tur, kısa bir model çağrısı yapar.
182
207
  - **Yazarken tamamla**, metnini dsh’nin kendi mesaj alanı ipucuyla gösterir (dsh’nin eğik çizgi komutlarının parametre ipucu için kullandığı `--dsh-composer-hint` stili). Eğik çizgi komutunda, dosya veya sembol etiketi olan bir mesajda ya da imleç mesajın sonunda değilken çalışmaz. Bir dsh güncellemesi bu stili değiştirirse tamamlama görünmez. Yazarken her duraklamada bir model çağrısı yapılır.
183
208
  - **İstemi iyileştir** yalnızca kısa bir proje özetini, değişen yolları ve adı sözcüklerinizle eşleşen yolları görür: kodun kendisini görmez. Bu yüzden doğru dosyayı kaçırabilir ve yalnızca kendisine verilen yolların adını yazar. Yeni metni göndermeden önce okuyun. Eğik çizgi komutunda veya dosya ya da sembol etiketi olan bir mesajda çalışmaz (yeni metin düz metindir, bu yüzden etiket kaybolurdu). Bir mesaj en çok 8.000 karakter olabilir. Görseller ekli kalır: yalnızca metin değişir. Her tıklama bir model çağrısı yapar. Güçlü bir model bir dakika sürebilir (`Esc` iptal eder).
209
+ - **Hedef kontrolü** yalnızca ajanın otomatik bir hedef turunda yaptığı tamamlamayı kontrol eder: sohbette sizin istediğiniz bir tamamlama, `/goal` ve hedef çubuğu kontrol edilmez. Ajan testleri ya da test komutunun dosyalarını kendisi değiştirebilir. Doğrulayıcı sohbeti okur ve bunu görebilir, ama iki yönde de yanılabilir (yanlış bir "tamamlanmadı" bir tur daha harcar; yanlış bir "tamamlandı" hedefi kapatır). Doğrulayıcı sohbeti ve `git status` çıktısını görür, kodun kendisini görmez. Bir test çalıştırması yalnızca ajanın dosya değiştirebilen en yeni adımı, aynı klasörde tam olarak aynı komutun ajanın kendi başarılı `bash` çalıştırmasıysa yeniden kullanılır. Kanal (`| tail`) ya da `&&` içeren bir komut yeniden kullanılmaz. Bütçe bir tur bittiğinde ölçülür. Bu yüzden tek bir tur bütçeyi aşabilir. Yalnızca sohbetin kendi model çağrıları sayılır (alt ajanlarınınki sayılmaz). Kontrol çalışırken `update_goal` bekler (test en çok 15 dakika, doğrulayıcı en çok 3 dakika). Dallandırılmış bir sohbet yeni bir sohbet kimliği alır. Bu yüzden üst sohbetin kendi test komutu ve sınırları olmadan başlar. Doğrulayıcıya ulaşan her tamamlama bir model çağrısı yapar.
184
210
  - Yerleşik destek dsh geliştiricilerinden istendi: kuyruk `move` işlemi için [#773](https://github.com/deepseek-ai/deepseek-harness/discussions/773), Devam et durumu için [#9269](https://github.com/deepseek-ai/deepseek-harness/discussions/9269).
185
211
 
186
212
  ## SSS
@@ -207,6 +233,8 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
207
233
 
208
234
  **dsh, Roo Code veya Augment’teki Enhance prompt düğmesi gibi, istemimi göndermeden önce iyileştirebilir mi?** Evet, **İstemi iyileştir** ile (varsayılan olarak açık): kaba bir istek yazın ve model menüsünün yanındaki sihirli değneğe tıklayın. Metni bu sohbeti ve projeyi bağlam olarak kullanarak sizin dilinizde yeniden yazar ve göndermez. `Cmd/Ctrl+Z` veya **İyileştirmeyi geri al** metninizi geri getirir. Modelini **Ayarlar → Composer Plus → İstemi iyileştir → Model** içinden seçin.
209
235
 
236
+ **Ajanın kendi işini kendi başına bitti diye işaretlemesi, loop engineering’deki doğrulayıcı döngüleri gibi engellenebilir mi?** Evet, **Hedef kontrolü** ile (varsayılan olarak açık): `/goal` ile bir hedef başlatın. Ajan hedefin tamamlandığını söylediğinde projenin testleri çalışır ve bağımsız bir model çağrısı hedefi sohbete göre kontrol eder. Biri başarısız olursa hedef açık kalır ve ajan nedenini okur. Kendi test komutunuzu, bir süre sınırını ya da bir token sınırını hedefin altındaki **Hedef kontrolü** satırında **Düzenle** ile belirleyin.
237
+
210
238
  **dsh’de sıradaki mesajların sırasını nasıl değiştiririm?** Sıradaki bir mesajın ⠿ tutamacını sürükleyin ya da tutamaca odaklanıp `↑` / `↓` tuşlarına basın.
211
239
 
212
240
  **Sıradaki bir mesajdaki yazım hatasını nasıl düzeltirim?** Kuyruktaki mesaja çift tıklayın, metni değiştirin ve `Enter` tuşuna basın (`Esc` iptal eder). Mesaj kuyruktaki yerini korur.
@@ -217,6 +245,10 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
217
245
 
218
246
  **Bir turu yanlışlıkla geri aldım. Geri getirebilir miyim?** Evet, geri almadan hemen sonra mesaj alanının üstündeki **Yeniden uygula** ile. Geri almadan hemen önceki andan aynı mesajlarla yeni bir sohbet başlatır. **Sohbet ve dosyalar** ile geri aldıysanız dosyaları da geri koyar.
219
247
 
248
+ **Bu dosyayı hangi sohbet değiştirdi?** Sağ kenar çubuğu → **Değişiklikler** → dosyanın **…** düğmesi → **Bu dosyayı değiştiren sohbetler**. O sohbeti, değişikliği yapan istekte açmak için bir satıra tıklayın.
249
+
250
+ **Uzun bir sohbetin içinde arama yapabilir miyim?** Evet: sohbette Mac’te `Cmd+F`, Windows ve Linux’ta `Ctrl+F` tuşlarına basın. **Sohbette bul** her eşleşmeyi vurgular. `Enter` ve `Shift+Enter` ile eşleşmeler arasında gezinirsiniz.
251
+
220
252
  **Yalnızca bir sohbetin değiştirdiği dosyaları nasıl görürüm?** Sağ kenar çubuğu → **Değişiklikler** → **Bu sohbet**. Yalnızca boşluk olan değişiklikleri gizlemek için **␣** düğmesine tıklayın.
221
253
 
222
254
  **Otomatik inceleme’nin tek bir sohbette aynı araç için tekrar sormasını nasıl durdururum?** Onay kartında **Bu sohbet boyunca izin ver** düğmesine tıklayın. Bu izin yalnızca o sohbetteki o aracı kapsar ve varsayılan olarak 1 saat sürer. İzni başlıktaki etiketten kaldırın. Süreyi **Ayarlar → Composer Plus → Sohbet boyunca izin** içinden değiştirin.
@@ -237,6 +269,12 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
237
269
 
238
270
  **dsh’yi iPhone’umdan nasıl kullanırım?** Tether uygulamasını `tether/ios` klasöründen derleyin (Xcode). **Ayarlar → Composer Plus → Mobil bağlantı (iPhone)** özelliğini açın. Sol alttaki **Mobil bağlantı** düğmesine tıklayın, QR kodunu tarayın (iPhone’un Kamera uygulaması ya da Tether’deki **Scan code**), **Connect** düğmesine dokunun ve **Approve** düğmesine tıklayın. Evden uzaktayken iki cihazda da Tailscale kullanın.
239
271
 
272
+ **Yeni oturum her zaman aynı projede nasıl açılır?** Ayarlar → Composer Plus → **Yeni oturum için varsayılan çalışma alanı** → **Yeni oturumu şurada aç** → projeyi seçin. Başka bir projenin yanındaki `+` yine o projeyi açar.
273
+
274
+ **Bir projenin birkaç özelliği üzerinde, her biri kendi dalında olmak üzere aynı anda nasıl çalışırım?** **Sohbet başına dal** ile: yeni sohbet → ⑂ main düğmesi → **Yeni dal**, sonra ilk mesajı gönderin. Her sohbet kendi dalını ve worktree klasörünü alır; `.worktreeinclude` listeliyorsa `.env` ve `node_modules` da kopyalanır. Sohbetin başlığı hangi dalda olduğunuzu gösterir.
275
+
276
+ **iPhone’umdan fotoğraf gönderebilir miyim?** Evet. Tether’deki bir sohbette mesaj alanının yanındaki **+** düğmesine dokunun → Camera, Photos (en çok 4) ya da Paste image. Fotoğraflar, mesajınızın ekleri olarak Mac’teki sohbete gider. Bu yüzden model onları görür.
277
+
240
278
  **Masaüstü uygulamasıyla çalışır mı?** Evet: Ayarlar → Eklentiler → **Eklenti ekle** → `dsh-composer-plus`. dsh 0.2.0-rc.2 (masaüstü ve web) ve 0.2.1-rc.2 (web) üzerinde test edildi.
241
279
 
242
280
  ## Geliştirme
@@ -273,6 +311,22 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-content-search.mjs /path
273
311
  SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-turn-rollback.mjs /path/to/dsh/lib/bin.js
274
312
  # Improve prompt (fake model, made-up git project): the wand sends the draft with the chat and the project, the answer replaces the draft, Cmd+Z and Undo bring it back + its thumbnail
275
313
  SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-prompt-improve.mjs /path/to/dsh/lib/bin.js
314
+ # Goal check (fake model, made-up project): a failing test and a verifier "not done" keep the goal open, the agent's own test run is reused, a pass closes it, a token budget blocks it + its thumbnail
315
+ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-goal-check.mjs /path/to/dsh/lib/bin.js
316
+ # Mark all as read, Copy message link, Edit queued message in place, Redo, Changes → This chat and Hide whitespace (fake model, made-up git projects) + their thumbnails
317
+ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-six-features.mjs /path/to/dsh/lib/bin.js
318
+ # Changes Tree (fake model, made-up git history): branch list, a branch's commits, commit files and diffs, back marks the row + its thumbnail
319
+ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-changes-tree.mjs /path/to/dsh/lib/bin.js
320
+ # Allow for this chat with a time limit (fake model that is also the Auto Review reviewer): the grant ends after 1 hour
321
+ PLAYWRIGHT=/path/to/playwright node test/browser-grant-ttl.mjs /path/to/dsh/lib/bin.js
322
+ # Next message prediction and Complete while typing (fake models): calls, Tab, Esc, model choice + their thumbnails
323
+ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-predict.mjs /path/to/dsh/lib/bin.js
324
+ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-complete.mjs /path/to/dsh/lib/bin.js
325
+ # Project search in a new chat: A–Z order, filter, Enter + its thumbnail
326
+ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-project-picker.mjs /path/to/dsh/lib/bin.js
327
+ # Queue drag-and-drop and Continue with a queued message (slow fake model)
328
+ PLAYWRIGHT=/path/to/playwright node test/browser-queue-drag.mjs /path/to/dsh/lib/bin.js
329
+ PLAYWRIGHT=/path/to/playwright node test/browser-continue-queue.mjs /path/to/dsh/lib/bin.js
276
330
  ```
277
331
 
278
332
  ```sh
@@ -283,7 +337,7 @@ npm test
283
337
 
284
338
  **Yeni özellikler için kural:** Ayarlar → Composer Plus içindeki her özellik satırı bir ekran görüntüsü gösterir. Özellik kimliğini `client.js` içindeki `SHOT_OF` ve `index.js` içindeki `SHOTS` listesine ekleyin. `assets/features/<id>.webp` dosyasını da pakete ekleyin (geçici demo dsh’den, İngilizce arayüzle alınmış, yaklaşık 60 kB veya daha küçük). Özelliği aynı resimle `docs/features.json` dosyasına ekleyin ve `npm run build:readme` komutunu çalıştırın. Bu komut `README.md` ile çevrilmiş her `README.<id>.md` dosyasındaki özellik tablosunu ve `llms.txt` içindeki listeyi yazar. Bir özelliğin ekran görüntüsü yoksa `test/shots.test.mjs` başarısız olur. `test/browser-settings-shots.mjs` ise gerçek Ayarlar sayfasını denetler. Her değişiklik için tam kontrol listesi [AGENTS.md](AGENTS.md) dosyasındadır.
285
339
 
286
- Testler, gerçek `client.js` dosyasını sahte bir React/DOM ortamında, gerçek `index.js` dosyasını (Host tarafı) da geçici bir git deposunda çalıştırır. Tether ağ geçidi testleri (`test/tether-gateway.test.mjs`) sahte bir dsh host’u ve gerçek bir TLS ağ geçidi kullanır. iPhone uygulaması `tether/ios` klasöründedir (bkz. [tether/README.md](tether/README.md) ve [tether/AGENTS.md](tether/AGENTS.md)). `node test/browser-history.mjs '<dsh web URL with ?token=…>'`, mesaj geçmişini gerçek bir tarayıcıda denetler. Bu denetim, kendi `DSH_HOME` klasörü olan geçici bir `dsh web` örneğine karşı çalışır.
340
+ Testler, gerçek `client.js` dosyasını sahte bir React/DOM ortamında, gerçek `index.js` dosyasını (Host tarafı) da geçici bir git deposunda çalıştırır. Tether ağ geçidi testleri (`test/tether-gateway.test.mjs`) sahte bir dsh host’u ve gerçek bir TLS ağ geçidi kullanır. iPhone uygulaması `tether/ios` klasöründedir (bkz. [tether/README.md](tether/README.md) ve [tether/AGENTS.md](tether/AGENTS.md)). Her Host rotası, rotanın isteği ve Tether’in bu rotayı çağırıp çağıramayacağı [docs/ROUTES.md](docs/ROUTES.md) dosyasında listelenir. `node test/browser-history.mjs '<dsh web URL with ?token=…>'`, mesaj geçmişini gerçek bir tarayıcıda denetler. Bu denetim, kendi `DSH_HOME` klasörü olan geçici bir `dsh web` örneğine karşı çalışır.
287
341
 
288
342
  Dil paketleri, `locales/<id>.json` içindeki yalnızca veri içeren JSON dosyalarıdır. `npm run build:locales` bunları tek istemci giriş dosyasına gömer (çeviri hizmeti veya çalışma anında indirme yoktur). `npm test` şunları denetler: her paketin tüm anahtarları kapsaması, yer tutucuların ve satır sonlarının aynı olması, sistem dili/elle seçilen dil davranışı. Yerel olarak yüklenmiş Playwright ile yalıtılmış gerçek uygulama denetimleri için:
289
343