## What changes for the user The timeline now matches the transcript block for block, and a click lands exactly where it should. - **One marker per visible block, in transcript order:** each reply, each thinking run, each tool (or collapsed tool group), each compaction and each system context. Markers follow Message content: a block that is hidden in the transcript is hidden in the timeline too. - **The clicked marker stays active** until you scroll, and its own block, not just the start of its message, is placed at the reading position. This also works for history that is not loaded yet. - **While scrolling,** the active marker is the first block below the reading line. ## Reproduced in numbers before fixing We replayed 45 of the user's real sessions (65,241 messages, exported read-only) into the real `SessionView`, with the outline, windows and previews served by the real server readers. Each session was measured at 1280×800 with two presets, using 16 real pointer clicks and 8 wheel scrolls per run. Baseline and fix used the same seeds. | Metric | Before, Complet | Before, Balanced | After, both presets | |---|---|---|---| | Sessions out of sync | 43/45 | 42/45 | 0/90 runs | | Markers / expected | 68,949 / 130,818 | 68,949 / 98,759 | 130,818 / 130,818 and 98,759 / 98,759 | | Click: clicked marker active | 53.6% (46.0% the one above) | 57.2% | 1,440 / 1,440 | | Click: block at reading position | 41.5% (median off by 35 px) | 82.2% | 1,440 / 1,440 (median 0.27 px) | | Scroll: reading-line block active | 93.1% | 92.2% | 505 / 505 moving wheels | What was wrong with the markers in the Complet runs: - 29,782 tool markers were collapsed into one marker per step. - 31,777 thinking blocks and 282 system blocks had no marker. - There were 10,232 order inversions. ## Causes 1. Once an outline existed, the outline projection replaced the markers of loaded messages too (`message-section.tsx`). It collapsed a step's tools into one marker placed before its reply, and dropped system blocks. 2. Resident segments merged thinking into replies, dropped thinking-only steps and skipped system parts. 3. After a click or a scroll, the active marker was the message's first marker. The message itself came from a scroll offset that rounds a row starting just below the top to the previous message. 4. Clicks navigated to the message, not to the block. 5. Jumps into unloaded history had no row to hold while the target was not yet rendered. ## How - **Server (outline):** each assistant step can now carry an optional `layout` field. It lists the step's visible parts in order: thinking runs, reply runs and each tool, at most 64 entries. It is computed in the same bounded SQL. Older plugin copies don't send it, and the client then falls back to the counts: thinking, then text, then tools. - **Markers:** `buildTimelineSegments` emits one marker per block, keyed `messageId:type:ordinal`. Loaded messages keep their exact markers. Unloaded steps are placed at their native position from `layout`. - **Click and scroll:** the list's `scrollToKey(key, selector)` holds the selected block on every frame, survives row remounts, and follows Virtua's estimate until the row renders. `timeline-transcript-blocks.ts` maps markers to blocks and finds the block at the reading line. - **Saved indexes:** outline indexes saved without `layout` are revalidated once. - **Docs and help:** updated in `dev-docs/SESSION_HISTORY_NAVIGATION.md` and in the help pages for all 10 locales. ## Behaviour to be aware of - **The timeline has more markers:** about +90% with Complet and +43% with Balanced on this sample, because every tool, thinking and system block now has its own marker. - **Tool icons for unloaded steps:** a step not loaded yet shows its first tool's icon on all of its tool markers, until its window loads. - **Plugin requirement:** the pruning plugin must ship with the new `layout` field. ## Validation - **New regression test:** `tests/browser/timeline-sync.test.ts` passes 4/4 and fails 4/4 on unmodified dev. Fixtures are synthetic. - **Measurement harness:** the opt-in qualification `npm run qualify:browser:timeline-sync`. - **Browser suites:** | Suite | Result | |---|---| | history-navigation | 65 | | message-scroll | 128 | | session-rendering | 47 | | render-cost | 17 | | full-source-copy | 12 | | search-highlight | 11 | | system-messages | 10 | | timeline-tool-filters | pass | | streaming-outline (no full reprojection over 64 token deltas) | pass | | session-search | pass | | transcript-presets | pass | - **Other checks:** UI unit tests 75/75, server session-pruning 70/70, help 9/9 and the UI typecheck pass. - **After rebasing on dev:** the typecheck passes, along with timeline-sync 4/4, timeline-tool-filters, full-source-copy 12/12, usage-metrics 5/5 and streaming-outline. Oversized files touched: `message-section.tsx` (~1,637 lines), `virtual-follow-list.tsx` (~1,368), `message-timeline.tsx` (~508), `message-timeline.css` (204).
11 KiB
Ayarlar ve düzen
Ayarları açın ve kapsamını belirleyin
- Sekme çubuğundaki veya ana sayfadaki Ayarları aç dişli simgesiyle Ayarlar öğesini açın. Model seçicideki Provider'ları yönet, Görevler panelinin dişli simgesi veya bildirim geçmişindeki Ayarlar gibi kısayollar ilgili bölümü doğrudan açar.
- Bir bölüm seçin. Yerel Electron ve Tauri pencereleri bir yerel Tercihler penceresini açar veya odaklar; tarayıcı ve uzak görünümler yerleşik ayarlar ekranını kullanır.
- Ayrılmadan önce ayarın kapsamını ve herhangi bir Kaydet eylemini kontrol edin.
Her değişikliği siz yaptıkça kaydeden Görev tercihleri dahil, çoğu seçim hemen uygulanır. Ses, özel palet renkleri ve Yapılandırma Dosyaları açık bir Kaydet eylemini korur. Kaydetmenin başarısız olması değişikliğin uygulandığını doğrulamaz; yeniden denemeden önce ilgili bölümü yeniden açın veya yenileyin. Açıklamalar, ayar başlığının yanındaki i simgesinin arkasındadır: üzerine gelin veya odaklanın ya da dokunmatik ekranda dokunun.
| Durum | Neyi yönetir |
|---|---|
| CodeNomad yapılandırması | Bu yapılandırmayı kullanan istemcilerin arayüz tercihleri, ses, SideCars ve sunucu ayarları. Rozeti olmayan tercihler de cihaz başına saklanmaz; Sunucu ayarı, Ses, SideCars, Uzaktan Kontrol ve Ortam Değişkenleri gibi sunucu tarafı yapılandırmayı işaretler. |
| Pencere/proje sekmesi düzeni | Açık paneller, seçilen sekmeler, okuyucu durumu ve geri yüklenebilir taslaklar/düzen. Bunlar OpenCode yapılandırması değildir. |
| Genel/Proje OpenCode ayarları | Görüntülenen kapsamda yerel eklenti/yapılandırma değişiklikleri. Proje kontrolleri etkin bir proje/Location gerektirir. |
| Masaüstü veri profili | Yerel pencereler, yapılandırma dosyasından ve paylaşılan OpenCode hizmetinden bağımsız olarak geri yükleme durumu ve tarayıcı depolaması. Bkz. Masaüstü pencereleri ve veriler. |
İstatistikler, yalnızca açılan klasörü değil, bağlı OpenCode hizmetinin tamamını (tüm projeler, bağımsız klonlar ve alt oturumlar) son 7, 30, 90 veya 365 gün için kapsar. Açık bir proje gerektirir ve sağlayıcı faturalarını veya abonelik haklarını değil, OpenCode'un kaydettiği token ve maliyetleri gösterir; yenileme sırasında daha önce kaydedilmiş toplamlar görünebilir. Plan kotaları Kullanım Durum bölümüne aittir.
Görüntü tercihlerinin değiştirilmesi OpenCode'u yeniden başlatmaz veya bir istemi yeniden oynatmaz. Yerel yapılandırma, hizmet bakımı ve kimlik bilgilerinin ayrı etkileri vardır: bkz. OpenCode kurulumu, Sağlayıcılar ve Entegrasyonlar.
Dil ve görünüm
- Genel bölümünde Dil öğesini seçin: İngilizce, İspanyolca, Fransızca, Rusça, Japonca, Basitleştirilmiş Çince, İbranice, Almanca, Nepalce veya Türkçe.
- Renk şeması bölümünde Mod seçin: Otomatik, Koyu veya Açık. Otomatik işletim sistemini takip eder.
- Görüntülenen görünüm için bir palet seçin. Açık ve koyu seçimler bağımsız olarak kaydedilir; Otomatik eşleşeni kullanır.
- Özel renkler için renk örneklerini ve Kaydet öğesini kullanın; Sıfırla yerleşik bir paletin renklerini geri yükler. Ayrı bir paleti adlandırmak için Yeni, oluşturduğunuz bir paleti kaldırmak için Sil öğesini kullanın.
Kullanıcı arayüzü, bir konuşmayı yeniden başlatmadan güncellenir. İbranice sağdan sola düzeni kullanır; kod ve teknik değerler kendi yönlerinde okunabilir durumda kalır. Dil seçimi, mevcut mesajların veya aracı talimatlarının dilini değil, arayüz metnini değiştirir. Yerel masaüstü menüleri, bir CodeNomad penceresi yüklendikten sonra arayüz diline geçer.
Renklerin okunması zorlaşırsa yerleşik bir palet seçin veya düzenlenen paleti sıfırlayın. Paletler arasında geçiş yapmak, kaydedilmemiş renk düzenlemelerini iptal etmenizi isteyebilir; bir konuşma taslağını atmaz.
Paneller ve Durum bölümleri
- Panelleri göstermek/gizlemek için dış başlık köşelerindeki Sol panel ve Sağ panel kontrollerini veya Görünüm menüsündeki karşılıklarını kullanın.
- Sağ panelde Sağ paneli özelleştir öğesini açın. Yerleşik sekmeleri ve Durum bölümlerini seçmek için onay kutularını kullanın; en az bir Durum bölümü görünür durumda kalır.
- Yeniden sıralamak için sağ panel sekmelerini sürükleyin. Yerleşik düzen seçeneklerini geri yüklemek için Sıfırla öğesini kullanın.
Durum; belirteç bilgilerini, Yolo modunu, sağlayıcı Kullanımı, arka plan kabuklarını, MCP ve Eklentileri içerir. Bir bölümün gizlenmesi, o bölümün hizmetini devre dışı bırakmaz veya izinleri iptal etmez. Dar düzenler, panelleri konuşmayı sıkıştırmak yerine üzerinde gezdirir; bir yüzer panelin açılması diğerini kapatır.
Yerleşik düzen proje değişikliği değil, pencere yerleşimidir. Uzantı onay kutuları farklıdır: yapılandırmayı kullanan tüm projelerde kodu etkinleştirir. Sıfırla uzantı onayını değiştirmez. Bkz. Panel uzantıları.
Konuşma dökümü ayrıntıları ve ileti düzenleyicisi boyutu
- Konuşma dökümü ayrıntısı varsayılanlarını seçmek için Sohbet öğesini açın. Ön ayarlar Hiçbir şey, Minimal, Dengeli ve Her şey'dir; bireysel değişiklikler Özel öğesini üretir.
- Düşünme, tanılama, araç girdileri, tokenlar, sistem mesajları ve her araç türü için her satırın Varsayılan durum ayarını (Gizli, Daraltılmış veya Genişletilmiş) belirleyin ya da bu seçimleri paylaşan, konuşmanın Mesaj içeriği açılır penceresini kullanın.
- Genel bölümünde gerektiği gibi Mesaj zaman çizelgesini göster, Araç çağrısı diff'lerini böl ve Gönderilen istemleri kuyruğa al (oturum çalışırken gönderilen istemleri yönlendirmek yerine kuyruğa alır) seçeneklerini işaretleyin.
- Yeniden boyutlandırma kontrolünü kullanarak ileti düzenleyicisini yeniden boyutlandırın; uzun taslaklar alanın içinde kayar.
Zaman çizelgesinde, konuşmada gösterilen her yanıt, akıl yürütme, araç, sıkıştırma ve sistem bağlamı için aynı sırayla bir işaretçi bulunur. İşaretçiler Mesaj içeriği ayarlarını izler: orada bir araç türünü, akıl yürütmeyi veya sistem mesajlarını gizlemek, bekleyen izni olan araç dışında bunların işaretçilerini de gizler; Hiçbir şey tüm araç işaretçilerini gizler. Görünürlük ve genişletme ayarları yalnızca sunumu değiştirir. Saklanan araçları/akıl yürütmeyi kaldırmaz veya model bağlamını sıkıştırmaz. Yıkıcı işlemler için bkz. Geçmiş ve temizleme.
İleti düzenleyicisinin yüksekliği ekran klavyesi dahil görünür konuşmayı izler: en az 44 piksel tabanıyla minimum %8, maksimum %60. Elle seçilen yükseklik oran olarak saklanır; dar genişlik ve uzun metin sınırları yükseltmez. Genişletilmiş izin/soru, kayıtlı yüksekliği veya taslağı değiştirmeden düzenleyiciyi geçici küçültür. Yeniden boyutlandırmaya dönmek için isteği daraltın veya sonuçlandırın.
Bildirimler ve rozetler
- Bildirimler öğesini açın. Her bildirim türü için nerede görüneceğini işaretleyin: Ekranda (geçici bir baloncuk), Geçmiş (sekme çubuğundaki zilin bildirim geçmişinde saklanır) ve Sistem (işletim sistemi bildirimi).
- Bir Sistem kutusunu işaretlemek gerekirse izin ister. Sistem bildirimleri altında, izin eksikken İste yeniden izin ister.
- Bu pencere görünürken de sistem bildirimlerini almak için Uygulama odaktayken bildir seçeneğini etkinleştirin.
Varsayılan olarak Bir oturum yanıtınızı bekliyor ve Bir oturum tamamlandı yalnızca Sistem'e gider; böylece geçici oturum durumları Geçmiş'te birikmez. Bunlar alt ajanları değil ana oturumları ilgilendirir ve sizin durdurduğunuz bir oturum duyurulmaz. Hatalar, tablo ne gösterirse göstersin her zaman ekranda ve Geçmiş'te görünür; kısa ilerleme mesajları ise yalnızca ekranda kalır.
Tarayıcı/İşletim Sistemi izni cihaza ve uygulama kaynağına aittir; kaydedilmiş bir tercih bir reddi geçersiz kılamaz. Engellenirse tarayıcı veya işletim sistemi ayarlarında bildirimleri etkinleştirin ve ardından buraya geri dönün. Desteklenmeyen ortamlarda Sistem sütunu devre dışı kalır.
Yalnızca Geçmiş'e yönlendirilen bildirimleri sayan zil/okunmamış geçmiş sayısı, tarayıcı favicon noktasını ve yerel uygulama rozetini yönlendirir. Yerel rozetler canlı ana pencereleri bir araya getirir; bunlar çalışan oturumların sayısı veya bir işletim sistemi bildiriminin iletildiğinin kanıtı değildir. PWA başlatıcı rozetleri bu özellik tarafından sağlanmaz.
Gelişmiş seçenekler
- Gelişmiş öğesini açın.
- Yalnızca ihtiyacınız olan seçenekleri işaretleyin veya işaretini kaldırın; her değişiklik CodeNomad tercihleri aracılığıyla kaydedilir. Oturum yürütme ortamını değiştirmek için sondaki katlanmış Ortam Değişkenleri grubunu genişletin.
- Paylaşılan hizmeti spekülatif olarak yeniden başlatmak yerine ortaya çıkan görünümü veya sonraki gönderimi kontrol edin.
| Seçenek | Etki ve dikkat |
|---|---|
| Boş oturumları otomatik temizleme | Yeni oturum oluştururken boş oturumları temizler; korumak istiyorsanız kapalı bırakın. |
| Alt aracı boşta işaretleyicilerini tut | Görünmeyen boşta kalma işaretlerini beş saniye sonra gizlemek yerine görüntülenene kadar korur. |
| Mevcut pencereyi ikinci başlatmaya odakla | Yalnızca yerel masaüstü; sekme oluşturmayı değil, ikinci başlatma penceresi davranışını değiştirir. |
| Sağlayıcı kredi bakiyesi | Kullanımdaki ek bakiyeleri gösterir; kredi satın almaz veya hesap değiştirmez. |
| Yalnızca boşluk değişikliklerini gizle | Stage edilmemiş, yalnızca boşluk/satır sonu değişen dosyaları Değişiklikler ve toplu işlemlerinden çıkarır; stage edilmiş dosyalar görünür kalır. Bkz. Dosyalar. |
| Uzun asistan yanıtlarını beklet | Bir akış yanıtı görünümün ötesine geçtiğinde otomatik takibi durdurur. |
| Ortam Değişkenleri | Her istem veya oturum komutundan önce sunucu tarafında uygulanır; okumalar halihazırda çalışmakta olan yürütmeyi güncellemez. Bkz. OpenCode kurulumu. |
Klavye yapılandırması için Klavye kısayolları; ses kontrolleri için Ses girişi ve oynatma'yi kullanın. Başlangıç geri yükleme ve kayıtlı masaüstü profillerini silme, Masaüstü pencereleri ve veriler kapsamında ele alınmaktadır.