Steven
Steven5 dk okuma

Gerçekten Bulabildiğiniz Toplantılar: Timeline Sürümü

GeekBye v1.7.3, toplantı açılır menüsünü gerçek bir zaman çizelgesiyle değiştirdi — insanca tarihler, arama ve hangi toplantıda olduğunuzu söyleyen bir breadcrumb. Yüzeyin altında: bir auto-select yarışı, kendi toplantısından yaşlı bir ekran görüntüsü ve yirmi sekiz dakikada beş Windows düzeltmesi.

Mühendislik
UX
Masaüstü
GeekBye Releases
Gerçekten Bulabildiğiniz Toplantılar: Timeline Sürümü

2026 Ocak'ına gelindiğinde GeekBye kullanıcılarının bir geçmiş sorunu vardı. Uygulama toplantılarını gayet güzel kaydedip analiz ediyor — sonra da onları bir açılır menüye dosyalıyordu. Açılır menü üç öğe için iyidir. On beşinci toplantıya gelindiğinde "geçen salıki o mülakat", birbirinin aynısı satırlar arasında arkeolojik bir kazıya dönüşüyordu. v1.7.3 — Aralık ortasıyla 16 Ocak arasında 64 commit — toplantıların gerçekten bulunabilir bir şeye dönüştüğü sürüm.

(Bir muhasebe notu, çünkü git geçmişi sürüm numaraları dürüst olmadığında bile dürüsttür: v1.7.2 diye bir release tag'i yok. Sürüm numarası artırıldı ama sevk edilen bir sonraki tag v1.7.3 oldu; yani v1.7.2 dönemi Windows düzeltmeleri bu sürümle birlikte geldi.)

Açılır menüden zaman çizelgesine

Ana değişiklik tek bir pull request: 12 dosya, +640 satır, çoğu 381 satırlık yeni bir MeetingsTimeline bileşeni. Açılır menü, dört kovaya gruplanmış kaydırılabilir bir toplantı kartları zaman çizelgesine dönüştü — Today, Yesterday, This Week, Older (bugün, dün, bu hafta, daha eski) — tarihler bir insanın söyleyeceği gibi: Today, 2:30 PM, Yesterday, 2:30 PM, bu hafta için Mon, 2:30 PM, daha gerisi için Jan 5, 2:30 PM. Cmd/Ctrl+K, başlığa göre filtreleyen bir arama kutusuna odaklanır. Toplantı detay görünümü gerçek bir navigasyon sayfası oldu; böylece navbar'daki ileri-geri düğmeleri nihayet bir anlam kazandı ve breadcrumb "Meetings / Meeting" demeyi bırakıp "Meetings / Interview with John" demeye başladı (üç noktayla kısaltılarak, çünkü biri mutlaka toplantısına roman gibi bir ad verecektir).

Yanında iki küçük yaşam kalitesi parçası geldi: toplantı görünümünün içinde bir silme düğmesi (silme sonrası sizi ölü bir sayfada bırakmak yerine zaman çizelgesine geri götürüyor) ve otomatik gitme — bir dinleme oturumu gerçek transkript içeriğiyle bittiğinde, panel doğrudan o toplantının detay sayfasında açılıyor. Aramayı bitir, toplantıyı gör. Boş biten oturumlar zaman çizelgesini kirletmek yerine sessizce siliniyor.

Navigasyonu iyileştirerek yarattığınız yarış

İşte changelog'un size anlatmadığı kısım. Eski toplantı listesinin bir alışkanlığı vardı: her yüklemede en yeni oturumu otomatik seçiyordu. Liste nadiren dokunduğunuz bir açılır menüyken zararsız. Toplantılar gezindiğiniz bir sayfaya dönüştüğü anda ölümcül: 5 numaralı toplantıya tıklayın, arka planda bir refetch tamamlansın ve liste yardımseverce en yeni toplantıyı seçsin — iki saniye önce yaptığınız seçimin üzerine yazarak. Düzeltme daha akıllı bir koruma değildi; auto-select'i tamamen silmekti. Kullanıcı adına seçim yapan her liste, er ya da geç kullanıcıyla kavga eder.

Onu kaldırmak ikinci yarışı açığa çıkardı. Otomatik gitme, bir toplantıya oturumu bittiği anda atlar — ki bu, o oturumun kendini yerel SQLite veritabanına yazmayı bitirmesinden önce olabilir. Çok hızlı giderseniz henüz var olmayan bir toplantıya varırsınız. Sevk edilen düzeltme, detay görünümüne varırken oturumları yüklemeden önce 500 milisaniyelik bir gecikme; navigasyon işleyicisinin de kendi sigortaları var — pencerenin did-finish-load olayını bekle, panel yeni oluşturulduysa artı 100ms, zaten açıksa 50ms. Bizim okumamız: oturum sonu navigasyonu üç zamanlama alanını geçiyor — veritabanı yazımı, pencere yüklemesi ve React mount'u — ve her biri kendi küçük gecikmesini aldı. Çalışıyor, ve açıkça söyleyelim: bir yığın sihirli sayı dürüst bir borçtur, zafer değil.

Kendi toplantısından yaşlı ekran görüntüsü

Bu sürümde bir varsayım daha öldü: "bir ekran görüntüsü ancak oturum sırasında alındıysa o oturuma aittir." Gayet mantıklı. Yanlış. Gerçek kullanıcılar iş ilanının, gündemin, birazdan tartışacakları kodun üzerinde Cmd+H'ye basıyor — Start'a basmadan önce. Report sekmesi ekran görüntülerini oturumun zaman aralığıyla katı biçimde eşleştiriyordu; o hazırlık görüntüleri, alındıkları raporun ta kendisinden kayboluyordu. Düzeltme, eşleştirme penceresini oturum başlangıcından 60 saniye öncesine genişletti. (Zaman aralığı mekanizmasının kendisi daha eski — v1.6.15'te sessizce gelmişti; v1.7.3'ün katkısı, ona toplantıların başlamadan biraz önce başladığını öğretmek.)

Yirmi sekiz dakikada beş düzeltme

Bu sürümün savaş hikâyesi zaman çizelgesinde değil — Windows onboarding overlay'inde ve ders kitabına girecek bir "düzeltmeyi düzelt" zinciri: aynı sabah 10:50 ile 11:18 arasında beş commit.

GeekBye'ın ana penceresi fare geçirgenliği kullanıyor — tıklamalar saydam alanlardan düşsün diye her fare hareketinde Electron'un setIgnoreMouseEvents durumunu değiştiren bir hook. Windows'ta onboarding sırasında bu hook, eğitim overlay'iyle kavga etti ve panel penceresinin belirdiği adımda uygulama dondu. Birinci düzeltme: onboarding aktifken hook hiçbir şey yapmasın. Silahsızlanma yoluyla barış.

Ama artık onboarding düğmeleri yanıt vermiyordu, çünkü olay iletimi tıklamaları overlay'in altındaki panel penceresine gönderiyordu. İkinci ve üçüncü düzeltmeler wizard başına forward: false ile uğraştı. Sonra gerçek kök nedeni bulan commit geldi: panel penceresi açıldığında onun sürükleme işleyicisi ana pencereyi tıklama-geçir moduna sıfırlıyor — ve ilk düzeltme passthrough hook'unu pasif yaptığı için müdahaleyi düzeltecek hiçbir şey kalmamıştı. Gerçek düzeltme stratejiyi tersine çevirdi: hook artık onboarding sırasında her fare hareketinde setIgnoreMouseEvents(false) durumunu aktif olarak yeniden dayatıyor — tam da dış kodun onu her an sıfırlayabileceği için. Ayrıca önceki wizard'a özgü geçici çözümlerin 75 satırını da sildi.

Ve o zaman bile beşinci bir commit gerekti, çünkü girdi savaşını kazanmak z-sırası savaşını kazanmak değildir: overlay ile panel aynı always-on-top seviyesinde oturuyordu ve Windows odağı alan pencereyi öne çıkarır. Overlay daha yüksek bir pencere seviyesine taşındı ve panel göründükten sonra gecikmeli olarak kendini yeniden öne çıkarıyor. Bu yay hatırlanmaya değer: tek savunucunuzu silahsızlandıran pasif bir düzeltme, orijinal kavgadan daha kötüdür.

Bu sürümün bize öğrettiği üç şey

  1. Navigasyon iyileştirmeleri durum buglarını yüzeye çıkarır. Auto-select yarışı v1.7.3'ten önce de vardı; açılır menü onu hissetmenize hiç izin vermemişti. Toplantılar bilinçli olarak gezindiğiniz bir sayfaya dönüştüğü anda, sizin yerinize seçim yapan her kod parçası bir bug oldu.
  2. Kullanıcı niyetinin etrafındaki zaman sınırlarına pay bırakın. Oturumlar, kayıtlar, raporlar — kullanıcılar makinenin resmî penceresinden biraz önce ve biraz sonra hareket eder. 60 saniyelik ekran görüntüsü tamponu, insanların gerçekte nasıl davrandığını yansıtan tek bir satır.
  3. Düzeltici kodunuzu asla pasif yapmayın. Windows donması beş düzeltme gerektirdi, çünkü birinci düzeltme dış müdahaleye karşı koyabilecek tek mekanizmayı kapattı. Başka bir kod invariantınızı her an bozabiliyorsa, işiniz onu sürekli yeniden dayatmaktır, geri çekilmek değil.

v1 hikâyesinde bir önceki bölüm — bu kod tabanından iki markalı uygulama inşa etmek — için bkz. tek kod tabanı, iki uygulama: fork'lamadan white-label nasıl yapılır (v1.7.1); tüm yay için de yazılımı kusursuzluğa kadar sevk etmenin anatomisi.