
Bu sürüm döngüsünde çözülen başlıca sorunlar:
| Alan | Sorun | Çözüm |
|---|---|---|
| Terminal CLI | /model-download klavyeden okumadığı için indirmeler terminal donana kadar iptal edilemiyordu |
Model indirme masaüstü uygulamasına taşındı, gerçek iptal edilebilir ilerleme çubuğu ile |
| Terminal CLI | /gui gerçek bir kurulumda yanlış klasöre bakıp hep "bulunamadı" diyordu |
Doğru masaüstü uygulama yolu tespiti |
| Terminal CLI | Çok satırlı yapıştırma satır satır ayrı mesajlara bölünüyor, / ile başlayan satırlar komut sanılıyordu |
Tam yapıştırma artık tek mesaj, yalnızca gerçek Enter'da gönderiliyor |
| Terminal CLI / Masaüstü | CLI'ın backend'i terminal oturumuna gömülüydü — CLI'ı kapatmak masaüstü uygulamasını da kapatıyordu | Backend artık ayrı bir süreç; ikisinden biri kullandığı sürece açık kalıyor |
| Hafıza | /remember veritabanı ekleme sorgusundaki tek karakterlik hata yüzünden sessizce hiçbir şey kaydetmiyordu |
Düzeltildi — muhtemelen /remember'ın gerçekten çalıştığı ilk sürüm |
| Hafıza | Anahtar kelime tabanlı (FTS) arama yarısı hiçbir sürümde gerçekten aktif olmamıştı; çok-konulu sorular eksik cevap dönebiliyordu | Her iki arama yöntemi gerçekten birlikte çalışıyor; çok-konulu sorular konu başına ayrı aranıyor |
| Hafıza | Normal sohbette söylenen kişisel bilgiler (/remember dışında) güvenilir şekilde hatırlanmıyordu |
Artık sessizce takip ediliyor |
| Hafıza | Embedding sunucusu backend başlarken zaten çalışıyorsa hafıza bir yer tutucuya bağlanıp "çalışıyor" gösteriyordu | Açılışta zaten çalışan sunucuya düzgünce yeniden bağlanma |
| Ajan | Agent'ın tehlikeli-komut filtresindeki bir boşluk bazı yıkıcı komutların kontrolü atlatmasına izin veriyordu | Desen eşleştirmesi düzeltildi |
| Ajan | Var olmayan bir hedefe işaret eden symlink, dosya-düzenleme aracının kum havuzu dışına yazmasına izin verebiliyordu | Sandbox kaçış boşluğu kapatıldı |
| Ajan | Bazı harici sağlayıcılarda ajan modu anlaşılmaz 400 invalid_request_error ile başarısız oluyordu |
Araç tanımlarına sızan işlevsiz bir iç alan kaldırıldı |
| Sağlayıcı | Claude aktif sağlayıcıyken, modeli boş bırakan mesajlar boş model alanıyla gönderilebiliyordu | Fallback hesaplaması artık gerçekten uygulanıyor |
| Güvenlik | Uzaktan erişim (LAN/ngrok) açıkken herhangi bir istek kimlik doğrulama olmadan kabul ediliyordu | Her istek artık erişim token'ı gerektiriyor |
| Bağımlılıklar | govulncheck'in işaretlediği golang.org/x/text (sonsuz döngü) ve ilişkili golang.org/x/net bulguları |
Bağımlılıklar güncellendi |
| Yedekleme | .memo yedeklemesi takvim, rutinler, görev listeleri, izin politikaları, kurulu skill'leri ve en kritik olarak machine.key'i hiç içermiyordu |
Tümü artık dahil |
| API Mimarisi | /api/* altında sürümlendirme yoktu |
Her rota artık ayrıca /api/v1/... altında da kayıtlı (~90 toplam rota, v1 aynası dahil) |
| Altyazılı gelen görsel/video/doküman medyası sessizce göz ardı ediliyordu | Altyazı artık okunuyor |
Ayrıntılı yazı için Sürüm Notları sayfasına bakın.
v3.1.0 sürüm döngüsünde 61 sorun çözüldü. Önem seviyesine göre özeti aşağıdadır.
| # | Sorun | Çözüm |
|---|---|---|
| 1 | Sahipsiz SSE akışlarının dosya tanımlayıcılarını tüketmesi | Bağlam iptali ile akış ömrü takibi eklendi |
| 2 | İçe aktarmada dizin gezinmesi ile keyfi dosya okuma | filepath.Clean ve temel dizin doğrulaması ile yollar temizlendi |
| 3 | api.base_url üzerinde yapılandırma yarış durumu |
Yapılandırma okumaları sync.RWMutex arkasına alındı |
| 4 | identity alanlarında yapılandırma yarış durumu |
Kimlik okumaları mevcut mutex korumasıyla birleştirildi |
| 5 | SSE yayıncısında goroutine sızıntısı | İstemci bağlantı kesintisinde sync.WaitGroup ve done kanalı eklendi |
| 6 | WebSocket işleyicisinde goroutine sızıntısı | Okuma zaman aşımı ve bağlam iptali eklendi |
| 7 | Ajan araç yürütmesinde goroutine sızıntısı | Araç seviyesinde bağlam yayılımı eklendi |
| 8 | Oturum önbelleğinde sınırsız bellek büyümesi | 1000 oturum maksimum boyutlu LRU çıkarma eklendi |
| 9 | Eş zamanlı yazmalarda yapılandırma dosyası bozulması | Atomik yazmaya geçildi (geçici-dosyaya-yaz + yeniden adlandır) |
| 10 | Nil gömme modelinde panik | Varsayılan modele düşüş ile nil kontrolü eklendi |
| 11 | DB kilitliyken senkron birleştirmede kilitlenme | Meşgul zaman aşımı ve yeniden deneme döngüsü eklendi |
| 12 | Konuşma arama sorgusu üzerinden SQL enjeksiyonu | Parametreli sorgulara geçildi |
| 13 | HTTPS istemci bağlantı havuzunda bellek sızıntısı | Maksimum boş bağlantı ve zaman aşımı ile http.Transport eklendi |
Yüksek öncelikli düzeltmeler: hafıza dizinleyicide goroutine sızıntısı, yapılandırma dosyası herkese okunur izinleri, zayıf AES anahtar türetmesi (Argon2id'ye yükseltildi), senkron sırasında eş zamanlı oturum değişikliği, hatalı gömme yanıtında panik, herhangi bir kaynağa izin veren CORS yanlış yapılandırması, API uç noktalarında eksik girdi doğrulaması, sıcak yeniden yükleme sonrası güncel olmayan yapılandırma değerleri, llama süreç tanıtıcısında yarış durumu ve diğer 6 düzeltme.
Orta öncelikli düzeltmeler: arka plan goroutine hatalarının yutulması, oluşturma sonrası oturum dosya izinleri, akış sonunda SSE DONE parçasının eksik olması, küçük modellerde gömme toplu iş boyutunun OOM'a neden olması, kenar çubuğunda boş konuşma adları, websocket yeniden bağlantı taşması, hata durumunda ajan döngüsünün dönüp durması ve diğer 6 düzeltme.
Düşük öncelikli düzeltmeler: bulunamayan yapılandırma dosyasının sessizce varsayılanlara düşmesi, silme sonrası hafıza dizininin güncel olmayan sonuçlar döndürmesi, sağlayıcı kodunda denetlenmeyen tür doğrulamaları, günlük satırlarında eksik istek kimliği, kullanımdan kaldırılmış ioutil kullanımının io/os ile değiştirilmesi, tutarsız hata sarmalama, CLI yardım metninde yazım hataları, kullanılmayan içe aktarımlar ve diğer 13 düzeltme.
v3.3.3'e giden sürümlerde bulunup düzeltilen, kararlılık ve güven odaklı bir tur.
| # | Sorun | Çözüm |
|---|---|---|
| 1 | /remember hiçbir zaman gerçekten bir şey kaydetmiyordu |
Veritabanı ekleme işlemindeki tek karakterlik hata düzeltildi; regresyon testiyle kapsandı |
| 2 | Yeniden başlatma sonrası hafıza kapalı kalabiliyordu | Backend artık başlangıçta zaten çalışan bir embedding sunucusunu algılayıp bir placeholder yerine gerçeğine bağlanıyor |
| 3 | Anahtar kelime tabanlı hafıza araması hiçbir sürümde gerçekten aktif olmamıştı | Başlangıç bağlantısı düzeltildi, vektör + FTS5 araması artık gerçekten birlikte çalışıyor |
| 4 | Çok konulu sorular eksik cevap döndürüyordu | Çok parçalı bir sorunun her konusu artık tek bir sorguda karışmak yerine ayrı ayrı aranıyor |
| 5 | Claude sağlayıcısı boş model alanıyla sohbet mesajı gönderebiliyordu | Yapılandırılmış modele düşme mantığı artık gerçekten uygulanıyor; regresyon testi eklendi; Gemini ve diğer sağlayıcıların etkilenmediği doğrulandı |
| 6 | Dosya düzenleme araçlarında symlink sandbox kaçışı | Bir projedeki symlink, henüz var olmayan bir dosyaya işaret ederek bir aracın sandbox dışına yazmasına izin verebiliyordu; kapatıldı |
| 7 | Uzaktan erişim (LAN/ngrok) kimlik bilgisi olmadan istekleri kabul ediyordu | Her istek artık Ayarlar'da gösterilen erişim token'ını gerektiriyor |
| 8 | Tehlikeli-komut filtresinde boşluklar vardı | Yıkıcı komutlar (örn. root/home silme) için desen eşleştirme sertleştirildi |
| 9 | golang.org/x/text / x/net'te govulncheck bulguları |
Bağımlılıklar yamalı sürümlere yükseltildi |
| 10 | SSE terminal parçası iptalde ~%50 sessizce düşüyordu | Her akış katmanında önce engellemeyen gönderim/alım denenip, sonra ctx-farkında bir selecte düşülüyor |
| 11 | Çifte gönderim yarışı bir gönderim için iki çakışan istek başlatabiliyordu | isSendingProvider iddiası MessagesNotifier.sendMessage()'daki ilk awaitden önceye taşındı |
| 12 | .memo yedeklemesi takvim, rutinler, görev listeleri, ajan izinleri, skill'ler ve machine.key'i içermiyordu |
Yedekleme artık bunların hepsini içeriyor (modeller kendi anahtarıyla opsiyonel kalıyor) |
| 13 | Agent modu bazı harici sağlayıcılarda 400 invalid_request_error ile başarısız olabiliyordu |
Araç tanımlarına sızan bir iç muhasebe alanı kaldırıldı |
| 14 | a.client/providerRouter aktif akışlar sırasında yeniden atanıyordu |
Yeniden doğrulandı: hem okuma hem yazma doğru şekilde mutex korumalı; daha dar kapsamlı uçuştaki-istek riski clientSwapped/providerSwapped kontrolleriyle düzeltildi |
| 15 | API sürümlendirme öneki yoktu | Sunucu artık her rotayı orijinal yollarla birlikte /api/v1/ altında da aynalıyor |
Arka plan işi çökme güvenliğine ve bildirilen 4-5 kat yerel üretim yavaşlamasına odaklanan bir kararlılık ve cila turu.
| # | Sorun | Çözüm |
|---|---|---|
| 1 | Neredeyse her arka plan işindeki beklenmedik bir hata tüm backend'i çökertebiliyordu | Her arka plan işi (hafıza, akış, WhatsApp, bulut senkronizasyonu, yerel model yönetimi, STT, rutinler, proaktif öneriler, bildirimler, uzaktan erişim tünelleri) artık korumalı ve kendi içinde kurtarıyor |
| 2 | Hafıza/RAG açıkken yerel üretim hızı 4-5 kat düşebiliyordu | Embedding sunucusu artık zaten yerleşik bir sohbet modeline karşı kendini GPU'ya otomatik boyutlandırmıyor; varsayılan sadece-CPU, VRAM çatışmasını ortadan kaldırıyor |
| 3 | Sınırsız hafıza-context token bütçesi | Pratikte sınırsız olan eski tavan yerine gerçek bir tavana sabitlendi |
| 4 | Küçük context'li yerel bir modelde agent modu tek kelimelik mesajda bile başarısız olabiliyordu | Agent modunun araç şeması artık modelin context boyutuna göre doğru bütçeleniyor; varsayılan yerel context 4096→8192'ye yükseltildi |
| 5 | Windows'ta "Tüm Verileri Sil" başarısız olabiliyordu | İç veritabanları artık dosyaları kaldırılmadan önce düzgünce kapatılıyor |
| 6 | Konuşma-metin dönüşümü kurulu bir CLI'dan gömülü dosyalarını bulamıyordu | Kurulu (sadece masaüstü değil) başlatmalar için binary arama yolu düzeltildi |
| 7 | Temiz Windows kurulumları eksik msvcp140.dll ile başarısız olabiliyordu |
Installer artık Visual C++ Redistributable'ı gömüp sessizce kuruyor |
| 8 | Web araması selamlaşmalar dahil her mesajda çalışıyordu | web_search aracına kapsamlandırılmış hâliyle. Bkz. Ajan Modu. |
| 9 | Yerel modellerde yeni bir sohbet mesajı arka plan hafıza işinin arkasında sıraya girebiliyordu | Gerçek bir sohbet mesajı artık önce sürmekte olan arka plan hafıza çağrısını iptal ediyor |
| 10 | google.golang.org/grpc'de govulncheck bulgusu |
Bağımlılık yamalandı |
Self-hosting sürümü — tam bir 4-modlu auth sistemi, çoklu hesap desteği, Docker/CasaOS ve eksiksiz bir CLI yönetim araç seti, artı bir mobil-responsive geçişi ve bir Orchestra+Agent mimari düzeltmesi. Self-hosting bug'larının büyük bir kısmı koddan okunarak değil, birden fazla SSH oturumunda gerçek bir Raspberry Pi üzerinde canlı bulundu.
| # | Sorun | Çözüm |
|---|---|---|
| 1 | Uzaktan erişim her istekte karşılaştırılan tek, paylaşılan bir token'dı | Tam bir 4-modlu auth sistemiyle değiştirildi (kimlik yok/token/şifre/token+şifre), argon2id hash'leme, brute-force kilitleme, cihaz-bazlı token'lar |
| 2 | Taze bir self-hosted backend'e bağlandıktan sonraki ilk ekran, giriş bitmeden denk gelirse genel bir hatada kalıcı olarak takılabiliyordu | Etkilenen her ekranın isteği artık pes etmek yerine auth kapısı açılınca bir kez daha deniyor |
| 3 | Self-hosted bir sunucuyu kaldırıp yeniden kurmak sessizce eski hesabı koruyordu | Systemd servisi artık uninstaller'ın gerçekten sildiği doğru veri dizinini gösteriyor |
| 4 | Kurulum sonrası bildirilen LAN adresi alakasız bir Docker/VPN bridge IP'si olabiliyordu | Adres tespiti artık kutunun gerçek varsayılan-çıkış-rotası IP'sini kullanıyor |
| 5 | ISP seviyesinde bir cache, bayat bir kurulumcu binary'sini sonsuza kadar servis edebiliyordu | Kurulum/güncelleme script'leri artık kendi indirmelerini cache-bust ediyor |
| 6 | Self-hosted bir sunucuyu silip yeniden oluşturmak, tarayıcıyı kurulumun zaten yapıldığına inanan bir durumda bırakabiliyordu | Kurulum kapısı artık gerçekten taze bir kurulumu (yeni sunucu-taraflı kurulum ID'si) tanıyor ve bayat yerel durumu temizliyor |
| 7 | İlk-kurulumun "sadece token" seçeneği, sunucu dışındaki her cihazdan koşulsuz 401 veriyordu | Düzeltildi ve gerçek, loopback olmayan bir istemciye karşı canlı doğrulandı |
| 8 | Uzaktan erişim kapısında CORS origin-doğrulama açığı (CWE-346) | Kapatıldı |
| 9 | Go'nun net/url'inde govulncheck bulgusu GO-2026-6218 |
Go toolchain'i yamalı sürüme yükseltildi |
| 10 | Agent modu (araç kullanımı), streaming olmayan POST /api/send yolunda sessizce göz ardı ediliyordu |
Artık streaming sohbetle aynı agent-farkında pipeline'dan geçiyor |
| 11 | Orchestra Mode + Agent Mode birlikte hiçbir zaman gerçekten araç erişimi paylaşmıyordu — bir görev en fazla bir tool çağrısını "simüle ettiğini" iddia edebiliyordu | Her Orchestra görevi artık bir agent sohbetinin zaten kullandığı aynı gerçek, sandbox'lı, izin-korumalı agent pipeline'ından geçiyor |
| 12 | Task Loop'un "başlat"ı sessizce hiçbir şey yapmıyordu — sonsuza kadar 0/N tamamlandı, hiçbir worker çağrılmıyordu | Arka plan çalıştırma döngüsü artık HTTP isteğinin, handler döner dönmez iptal edilen context'ini miras almıyor |
| 13 | Orchestra'nın iç yardımcı çağrıları (sohbet başlıkları, rutin ayrıştırma) tam plan→yürüt→sentezle pipeline'ından geçirilmeye zorlanıyordu | Bunlar için görev planlamasını atlayan doğrudan bir tek-tamamlama yolu eklendi |
| 14 | Agent izin dialogunun geri sayımı (5 dk) backend'in gerçek auto-deny zamanlayıcısıyla (60sn) çelişiyordu, ve kalıcı olarak açık takılabiliyordu | Geri sayım her iki tarafta da 60sn'ye eşitlendi; dialog artık sadece bir canlı geçişte değil, her build'de mevcut gönderim durumunu da kontrol ediyor |
| 15 | Rutin onayının WhatsApp/Telefon teslimat çipleri süslemeydi, interaktif değildi | Değiştirilebilir FilterChip'lere geçildi |
| 16 | Sohbet, backend kaynaklı bir hatayla biten bir mesajı elle sayfa yenilemeye kadar göstermiyordu | refresh() artık bu yolda da çalışıyor, diğer her terminal yoluyla eşleşerek |
| 17 | Sohbet, Ayarlar, Model Mağazası, Agent, Takvim, karşılama ipucu ve kurulum sihirbazında 10+ mobil-genişlik layout taşması | Her biri gerçek bir 375px tarayıcı oturumunda canlı üretilip ayrı ayrı düzeltildi — sabit sidebar'lar için drawer'lar, kayan header satırları, yığılmış bir composer, responsive dialog genişlikleri |
Toplam: v3.1.0 döngüsünde 61 düzeltme (13 kritik, 15 yüksek, 13 orta, 20 düşük), artı yukarıdaki v3.3.3 döngüsünde 15, v3.3.4 döngüsünde 10, v3.5.5 döngüsünde 17 ek düzeltme.