Steven
Steven5 dk okuma

Yirmi Altı Saatte Dört Sürüm: Dil Tesisatı ve Bir Bridge Release

GeekBye v1.7.6'dan v1.8.1'e: laptoptan hiç çıkmamış bir dil ayarı, gerçek keybinding'lerinizi gösteren bir Cmd+/ overlay'i, sıfır kod değişikliği içeren bir sürüm — ve auto-update feed'inizi taşımanın tavuk-yumurta problemi.

Mühendislik
Sürüm
Masaüstü
GeekBye Releases
Yirmi Altı Saatte Dört Sürüm: Dil Tesisatı ve Bir Bridge Release

Şubat 2026'da bir perşembe sabahı ile cuma öğleden sonrası arasında GeekBye dört sürüm sevk etti: v1.7.6, v1.7.7, v1.8.0 ve v1.8.1 — on altı commit, ilk tag ile sonuncusu arasında yaklaşık yirmi altı saat. Hiçbiri tek başına manşet değil. Birlikte ise küçük sürüm haftalarının gerçekte ne içerdiğinin bir portresi: nihayet yolculuğunu tamamlayan bir özellik, bir yaşam kalitesi overlay'i, içinde hiç kod olmayan bir sürüm numarası ve gerçekten öğretici bir parça release engineering.

Laptoptan hiç çıkmayan dil

GeekBye'da Eylül 2025'ten beri bir transkript dili ayarı var. Çalışıyordu — yerelde. İspanyolcayı seçin, cihaz üstü speech-to-text pipeline'ı uslu uslu İspanyolca transkribe ediyordu. Ama v1.7.5 kod tabanında o ayarı grep'leyin, tam olarak üç yerde bulursunuz: ses işleyicisi, Settings arayüzü ve settings hook'u. API istemcisinde yok. Oturum izleyicisinde yok. Dört ay boyunca makineden çıkan her istek dile kördü: backend oturum kayıtlarının hangi dili temsil ettiklerine dair hiçbir fikri yoktu ve yapay zekâ sohbeti, İspanyolca olduklarına dair hiçbir ipucu olmadan İspanyolca transkriptler alıyordu.

v1.7.6, ayarın yolculuğunu tamamladığı sürüm — iki commit, bir gün. Ses oturumu başlangıcı artık payload'ında transcriptLanguage taşıyor ve yapay zekâ stream-chat isteği de aynı alanı kazandı; ikisi de ayarı okuyan ve auto ya da tanımsız olduğunda bilerek undefined döndüren küçük bir helper üzerinden geçiriliyor — böylece eski backend'ler tanımadıkları bir alanda boğulmak yerine zarifçe geriliyor. Diff'in içinde saklı sessiz bir bonus düzeltme de var: dili geçirebilmek için oturum başlangıcının dil çözümlemesinden sonraya taşınması gerekiyordu — bu da, bizim okuyuşumuza göre, bir oturumun başlatılıp (ve limitlere sayılıp) bir an sonra dil çözümlemesi başarısız olunca öksüz kalabildiği bir hata yolunu da kapattı.

Ders genelleşiyor: bir ayar, bir arayüzü ve bir etkisi olduğunda sevk edilmiş sayılmaz. Ondan haberdar olması gereken her tüketiciye ulaştığında sevk edilmiştir. Bizimki dört ay boyunca ağ sınırında durdu ve kimse fark etmedi, çünkü yerel davranış — görünür davranış — baştan sona doğruydu. (Kayıtlara geçsin: bu, dil işlemenin kaba ilk geçişiydi; yapay zekâya konuşmanın dilinde gerçekten cevap vermeyi öğretmek bu hikâyenin çok daha sonraki bir bölümü.)

Cmd+/ — keybinding'leriniz hakkında yalan söylemeyen bir overlay

v1.8.0'ın kullanıcıya dönük özelliği, Cmd+/ üzerinde bir klavye kısayolları overlay'i — 193 satır yeni bileşen ve çalınmaya değer tek bir tasarım kararı: hardcoded bir kopya kâğıdı render etmiyor. Canlı kısayol konfigürasyonunu çekiyor ve customKeys || defaultKeys render ediyor, böylece tuşlarını yeniden eşlemiş bir kullanıcı kendi tuşlarını görüyor. Tuşlarını değiştirmiş birine varsayılanları gösteren bir kısayol overlay'i dokümantasyon değildir; güzel tipografili dezenformasyondur.

Gerisi küçük doğruluk dokunuşları: overlay, ekranın hangi tarafında yer varsa uygulama kartının soluna ya da sağına konumlanıyor ve Escape ile, tekrar Cmd+/ ile ya da dışarıya bir tıklamayla kapanıyor. Cmd+/ tuşunun kendisi de diğer tüm kısayollarla aynı yeniden eşlenebilir preset sistemine katılıyor — bu önemli, çünkü Cmd+/ çoğu editörde "toggle comment" ve geliştiriciler için bir araç, taşıyamayacağınız bir editör tuşunun üstüne çökmemeli.

Bridge release

İlginç mühendislik, kimsenin ikinci kez bakmayacağı sürüm numaralarında yaşandı. v1.8.0 ayrıca projenin sürümlerini yeni bir GitHub organizasyonuna taşıdı — yüzeyde organizasyon temizliği, ama masaüstü auto-update'in bir özelliği dışında: feed URL'si binary'ye gömülüdür. Her v1.8.0 kurulumu yeni organizasyonun sürümlerini yokluyor. Ve dünyadaki her kurulum — hepsi v1.7.7 ya da daha eski — orada bir şey belirmediği sürece sonsuza dek eskisini yokluyor.

Tavuk-yumurta problemi bu: bir sonraki sürümünüzü yalnızca yeni repoya yayımlayın, mevcut filonun tamamı onu asla görmez. v1.8.0 tag'inden on altı dakika sonra release script'ine yeni bir bayrak indi: --publish-owner. Bu bayrak, electron-builder'ın artifact'leri nereye yüklediğini derlemeden sonra yeniden yazıyor — kod yorumunun dediği gibi, açıkça "derlenmiş uygulama kodunu etkilemeden". Bütün numara bu ve tam da doğru dikiş yeri: binary'nin gömülü feed'i ile artifact'lerin yükleme hedefi iki ayrı karardır ve bir taşıma, bir sürümlüğüne bunların ayrışmasına ihtiyaç duyar. v1.8.1'i yeni feed'i gösterecek şekilde derle, eski repoya yükle; eski istemciler güncellemeyi orada görür, kurar ve yeni organizasyonu yoklayarak uyanır. Commit mesajı buna "bridge release" (köprü sürümü) diyor, ki doğru isim bu. v1.8.1, v1.8.0'dan iki saat yirmi dakika sonra etiketlendi. (Bu projenin auto-update'e neden korkuya varan bir saygıyla yaklaştığının köken hikâyesi için, bkz. uygulamamızı öldürülemez yapan auto-update.)

Peki v1.7.7? Bir commit. Sürüm artışının kendisi. Düzeltme yok, geri alma yok, geçmişte açıklama yok — en makul okumamız, yeniden çalıştırılması gereken bir publish; bir hikâye uydurmaktansa bunu itiraf etmeyi yeğleriz. Bazen bir sürüm numarası, yazılım yayımlamanın gerçek dünyaya ait, gerçek dünya aksaklıkları olan bir süreç olması yüzünden var olur — kaynak ağacının saf bir fonksiyonu olduğu için değil. 1.7'nin neden 1.8 olduğuna gelince: hiçbir commit söylemiyor, ama feed taşıması anlamlı uyumluluk sınırı — her 1.8.x binary'si, her 1.7.x binary'sinden farklı bir organizasyona bakıyor — ve bu, minor sürüm artışını herhangi bir özellikten daha çok hak ediyor.

Bu haftanın bize öğrettiği üç şey

  1. Bir ayarı her tüketicisine kadar izleyin. Dil tercihi, backend kör kalırken dört ay boyunca "bitmişti". Görünür, yerel davranışın doğru olması, açığın hayatta kalmasını sağlayan şeyin ta kendisiydi — denetim sorusu, her sınırda sorulan "bu değerden başka kim haberdar olmalı?" sorusudur.
  2. Dokümantasyonu değil, canlı config'i render edin. Kısayol overlay'i, kısayol sisteminin kullandığı aynı doğruluk kaynağını okuyor. Başka her şey, bir kullanıcı ilk kez özelleştirdiğinde sapmaya başlar.
  3. Bir feed taşıması, iki dünyada birden yaşayan tek bir sürüme ihtiyaç duyar. Binary'de yeni feed, yükleme için eski repo. Release araçlarınız bu iki hedefi ayıramıyorsa, bayrağı ihtiyaç duymadan önce ekleyin — bizimki ihtiyaç duyulduktan on altı dakika sonra geldi, ki bu sayılacak kadar yakın.

v1 hikâyesinin bir önceki bölümü için, login sayfası demonun TA KENDİSİ (v1.7.5); tüm yay için de yazılımı kusursuzluğa kadar sevk etmenin anatomisi.