## Problem
Closing a project tab only hid it in that window. The backend workspace
record kept routing the folder's events, notifications, auto-accept and
pending-request recovery, invisibly, until the palette-only **Stop
Workspace** command was run on the active tab. That command still showed
the V1 message "Stop OpenCode instance? This will stop the server."
although V2 has one shared OpenCode service, and it called
`debug.location.evict`, which (per OpenCode source) rejects pending
permissions, cancels pending Forms, fails plugin RPC and kills terminals
of that directory, even for sessions started elsewhere. OpenCode loads
locations on demand and unloads idle ones itself.
## Change
- **Closing a project tab** (×, Ctrl/Cmd+W) removes that tab's backend
workspace record. CodeNomad stops following it; sessions keep running in
OpenCode and reappear when the project is reopened.
- **Another tab of the same folder** has its own record and is
unaffected.
- **The same record shown in another window**: that window's tab closes
through the existing `workspace.stopped` broadcast, with an info
notification ("closed from another window"); the initiating window shows
nothing.
- **CodeNomad never evicts OpenCode locations**: eviction, its
serialization helpers and `locationOwned` bookkeeping are removed. A
failed launch now always removes its logical record (the retention only
existed to retry a failed eviction).
- **Stop Workspace removed** (command, confirm dialog, i18n keys in all
locales).
- Unchanged: opening an open project still offers a new tab (recent row)
or switching (switch button); temporary projects keep Keep / Discard /
Cancel; window close, app quit, reload, restore and backend shutdown
delete nothing; disconnected-instance dismissal stays local.
- Delete failure: error toast, record kept and reachable from the home
page, no automatic retry.
## Docs
Help in all 10 locales (`projects`, `index`, `desktop`, `server`,
`opencode`, `missions`), `AGENTS.md`, `CONTRIBUTING.md`,
`dev-docs/architecture.md`, `packages/server/README.md` and the
architecture-guide skill now describe the new contract.
## Validation
- UI store tests (`--conditions=browser`): app-tabs,
temporary-instances, workspace-list-reconciliation-fence,
instances-restore-ownership — 30/30.
- Server: manager + shared service 54/54; event ownership and workspace
identity suites pass.
- New real-component browser regression (click ×, Ctrl+W, Cmd+W): 3/3;
project restoration (Electron/Tauri) and new-instance launcher browser
suites pass.
- `npm run test:help` 9/9 (250 pages); UI, server and Electron
typechecks.
7.6 KiB
CodeNomad yardımı
Mevcut CodeNomad masaüstü veya tarayıcı çalışma alanını OpenCode hizmetinizle çalıştırmak için bu kılavuzu kullanın. OpenCode yapılandırma eğitimlerine veya sürüm arşivine değil, CodeNomad'in kontrollerine, yürütme sınırlarına ve kurtarmaya odaklanır.
Önce bunu okuyun
CodeNomad çalışma alanınızı tek, paylaşılan OpenCode arka plan hizmetine bağlar. Oturumlar ve mesajlar OpenCode'a; sekmeler, ileti taslakları ve yerleşim CodeNomad istemcisine aittir. Sekmeyi kapatmak projeyi CodeNomad'de kapatır; oturumlar OpenCode'da devam eder ve projeyi yeniden açtığınızda bulunur. CodeNomad'i kapatmak OpenCode'u durdurmaz.
- Ana bilgisayar gereksinimleri ve OpenCode kurulumu'yi kontrol edin.
- Bir proje açın, ardından görüşmenin Aracı, Model ve Düşünme kontrollerini seçin.
- Kimlik bilgilerini değiştirmeden, bir hizmeti yeniden başlatmadan veya geçmişi silmeden önce etkilenen kapsamı kontrol edin. Diğer istemciler aynı yerel hizmeti kullanabilir.
Kamu yardım sitesi CodeNomad, arka ucu veya oturum açma bilgileri olmadan çalışır. Masaüstündeki Yardım → CodeNomad Yardımı ve komut paletindeki Yardımı aç, onu geçerli kullanıcı arayüzü dilinde ayrı ayrı açar. Dil değişiklikleri saklanan konuşmaları çevirmez.
Ayarlar, yerel Preferences penceresini yerel bir masaüstü istemcisinde açar; tarayıcı ve uzak istemciler yerleşik ayarları kullanır. Ayarlar → Provider'lar gibi yollar her iki yüzeyde de aynı ayarlar bölümünü tanımlar.
Hazırlanmış bir ana bilgisayarda bağımsız bir tarayıcı çalışma alanı için, sunucu kılavuzu bu başlatmayı ve kimlik doğrulama/TLS gereksinimlerini açıklar:
npx @neuralnomads/codenomad --generate-token --launch
İstemcinizi seçin
| Yetenek | Yerel masaüstü | Doğrudan tarayıcı veya uzak sunucu penceresi | Uzaktan Kontrolyla eşleştirilmiş cihaz |
|---|---|---|---|
| Projeler, konuşmalar, dosyalar ve geçmiş | Arka ucun klasörleri ve OpenCode oturumları | Bağlı sunucunun klasörleri ve oturumları | Ana bilgisayarın yetkili çalışma alanı yüzeyleri |
| Yerel Tercihler ve masaüstü pencereleri | Mevcut | Tarayıcı/uzaktan ayarlar istemcide kalır | Yalnızca ana bilgisayar masaüstü denetimleri kullanılamıyor |
| Oturum tarayıcı önizlemesi | Electron ve Windows Tauri'de yerel; diğer Tauri platformlarında iframe | Mevcut olduğunda Iframe | Yalnızca ana makine önizleme uç noktaları kullanılamıyor |
| Yerel masaüstü/tarayıcı otomasyonu | Sahip olunan yerel pencereler/önizlemeler | Yerel masaüstü otomasyonunun yerini almaz | Yalnızca ana makine otomasyon uç noktaları kullanılamıyor |
| Kimlik doğrulama | Yerel önyükleme veya parola oturumu | Sunucu şifre oturumu | Eşleştirilmiş cihaz kimlik bilgisi |
| PWA kurulumu | Yerel uygulamayı veya tarayıcıyı kullanın | Tarayıcıya bağımlı; güvenli bağlam gerekli | Tarayıcıya bağımlı; eşleştirme hala gerekli |
Kesin sınırlar için, bkz. tarayıcı önizlemeleri ve SideCars, Uzaktan Kontrol ve mobile/PWA. Uzak bir pencere, cihazınızın dosya sistemini sunucu çalışma alanına dönüştürmez.
Durumun kime ait olduğunu bilin
| Terim | CodeNomad'deki anlamı |
|---|---|
| Proje sekmesi / çalışma alanı / örnek | Açıkça açılmış bir klasöre CodeNomad bağlantısı; birden fazla sekme paylaşılan hizmeti kullanabilir. |
| Konuşma / oturum | Yerel OpenCode geçmişi ve dizini ile ilişkili yürütme. |
| Aile | Konuşma ve tüm alt oturumları; taşıma, etkinlik, Yolo ve Görev kontrolleri açısından önemlidir. |
| Çalışma ağacı | Göz atma veya oturum yerleştirme için seçilen, sahipliği doğrulanmış depo çalışma kopyası. Göz atmak konuşmayı taşımaz. |
| Location | OpenCode'un dizin kapsamlı yerel çalışma zamanı bağlamı; proje sekmesini kapatmak bu bağlamı kaldırmaz veya oturumlarını durdurmaz. |
| CodeNomad arka uç | Çalışma alanı, Git, kimlik doğrulama ve istemci bağlantısı sağlayan sunucu. Hesabı ve ortamı, arka uç dosya sistemi erişimini belirler. |
| Yapılandırma | sunucunun yapılandırma dizini altındaki CodeNomad ayarları; Global/Project OpenCode ayarlarının kendi yerel kapsamları vardır. |
| Pencere | Kendi sekmeleri, gezinmesi, taslakları ve geri yüklenen görünümü. Yerel geçmiş her pencere için kopyalanmaz, paylaşılır. |
| Masaüstü veri profili | Açık yerel/istemci depolama seçimi; OpenCode oturumlarını veya paylaşılan her yapılandırmayı otomatik olarak yalıtmaz. |
Çalışma alanı kökü, CodeNomad'in açabileceği klasörleri sınırlar; ajan için korumalı alan değildir. Ana bilgisayarı dışarı açmadan veya geniş araç erişimi vermeden önce güvenlik sayfasını inceleyin.
Göreve göre keşfedin
| Görev | Rehber |
|---|---|
| Çalışma alanını kurun veya sunun | Kurulum, Sunucu başvurusu, Ağ ve TLS |
| Çalışma kopyaları ve konuşmalar arasında çalışın | Projeler, Konuşmalar, Dosyalar |
| Geçmişi bulun veya güvenle temizleyin | Geçmiş |
| Yerel soruları ve izinleri yanıtlayın | İzinler |
| Sınırlı veya günlük işleri koordine edin | Görevler |
| Yürütme ve entegrasyonları yapılandırma | OpenCode, Sağlayıcılar, Entegrasyonlar |
| Başka bir cihaz bağlayın | Uzaktan Kontrol, Güvenlik, Mobil |
| Çalışma alanını uyarlayın | Ayarlar, Kısayollar, Ses, Uzantılar |
| Yerel uygulamayı yönetin | Masaüstü, Tarayıcı önizlemeleri ve SideCars, Güncellemeler |
| Teşhis edin veya katkıda bulunun | Sorun giderme, Destek ve kaynak derlemeleri |
Çalışmayı değiştirmeden izleyin
Durum paneli etkin oturumun sağlayıcı kullanımını ve OpenCode arka plan Shell süreçlerini gösterir. Konuşma durumu ve alt konuşma etkinliği; çalışan, sıkıştırılan ve girdi bekleyen oturumları belirtir. Arka plan Shell sürecini izlemek, ileti düzenleyicisinden Shell isteği göndermekten veya ayrı barındırılan terminal SideCar kullanmaktan farklıdır.
- Seçilen görüşmenin Location'si (veya hiçbir konuşma seçilmediğinde açık çalışma alanı) için Durum → Arka Plan Shell'leri öğesini açın.
- Sağlandığı yerde komut, kabuk, dizin, durum, PID ve çıkış kodunu inceleyin; mevcut yerel çıktı için Çıktıyı görüntüle öğesini seçin.
- Birini sonlandırmak için çalışırken Durdur ve kaldır, çıktıktan sonra Kaldır eylemini kullanıp hedefi onaylayın.
Çalışan bir Shell'nin kaldırılması bu işlemi durdurur; çıkış penceresini kapatmak bunu yapmaz. Yenileme/yeniden bağlanma, kaçırılan çıktı olaylarını yeniden oluşturmak yerine mevcut yerel durumu okur.
Görüntüleme anlık görüntüleri OpenCode değişiklikleri, yeniden bağlanma ve görünür talep üzerine yenilenir. Bunlar garantili tekrar günlükleri değildir. Sonuç belirsizse değişiklik işlemini yeniden denemeden önce yetkili durumu yenileyin; yalnızca bir bildirim veya olay kaçırıldı diye tekrar göndermeyin.