Blog'a Dön
AICodePulseVS CodeTypeScriptDeveloper ToolsPrivacy

CodePulse'u Geliştirmek: Gizliliği Önceleyen Bir VS Code Zaman Takip Aracı

Umut Korkmaz2026-03-197 min read

Zaman takibi verisini, bir koşucunun tempo verisini kullandığı gibi kullanıyorum. Çalıştığım saatleri haklı çıkarmak için değil, sürtünmenin gerçekte nerede olduğunu görmek için. Uzun süre bunun için bulut tabanlı araçlar kullandım; işlerini görüyorlardı, ama hepsi tuş vuruşlarımı, dosya yollarımı ve proje adlarımı üçüncü taraflara gönderiyordu. CodePulse'a başladığımda planım basitti: her şeyi yerelde tutmak, sinyalleri dürüst tutmak ve panoyu gerçekten açacağım kadar kullanışlı hale getirmek.

Neden Bir Yenisini Daha Yapmalı

Mevcut araçlar iki kampa ayrılıyor. Bulut tabanlı olanlar cilalı ama şeffaf değil; deneyimlerini sürekli iyileştirirken topladıkları veriyi de yavaşça genişletiyorlar. Kendi sunucunda barındırılan olanlar ise gizliliğe saygılı ama kırılgan ve çoğu yıllar önce bakımsız kalmış durumda. CodePulse üçüncü bir noktada duruyor: her şey VS Code'un içinde çalışıyor, veri diskte kalıyor ve küçük bir yerel REST sunucusu, üstüne kendi görünümlerini kurmak isteyenler için sayıları dışarı açıyor.

Üç Parçalı Mimari

Çekirdekte, kullanıcının eklenti depolama alanı altında bir SQLite veritabanı var. Her kodlama oturumu bir satır; dosya, proje ve dile göre ayrıştırılmış ve kısa molalardan sonra devam eden, gerçek boşta kalma süreleri sonunda kapanan bir kalp atışı (heartbeat) ritmiyle çalışıyor. Veritabanının üzerinde, oturumları günlük, haftalık ve aylık toplamlara gruplayan küçük bir servis katmanı var; böylece arayüzün, kritik yolda toplama (aggregation) yapması gerekmiyor. Onun da üzerinde, toplamları doğrudan yerel depodan oluşturup gösteren bir pano yer alıyor.

Kalp atışının kendisi yanıltıcı derecede basit. Arka planda bir zamanlayıcı tıklıyor, ama "kullanıcı hâlâ burada mı" mantığı yalnızca tuş vuruşlarıyla ilgili değil. VS Code'un odakta olup olmadığı, bir dosyanın açık olup olmadığı ve etkinliğin bir tolerans penceresi içinde gerçekleşip gerçekleşmediğiyle ilgili. İnce hataların çoğu boşta kalma (idle) dedektöründe yaşıyor; çünkü katı bir eşik düşünme zamanını cezalandırıyor, gevşek bir eşik ise kahve almaya gittiğim süreyi de sayıyor.

Claude Erken Tasarımı Nasıl Şekillendirdi

Claude'u çoğunlukla karar döngüsünü sıkıştırmak için kullandım. Kalp atışına yönelik üç yaklaşımı kendi başıma taslaklaştırmak yerine, kısıtı tarif ediyor, birkaç aday uygulama isteyip önemli olduğunu bildiğim uç durumları görmezden gelenleri hemen budayordum. Bu kısa yol en çok analitik katmanında işe yaradı; çünkü sorgunun şekli, daha sonra hangi görselleştirmelerin mümkün olacağını bile belirliyor.

Üretkenlik puanlama mantığı için de Claude'a yaslandım. Kod değişim oranını (churn), tuş vuruşu hızını ve odak bloklarını tek başına hesaplamak önemsiz; ama bunları yanıltıcı olmayan tek bir puanda birleştirmek daha zor. İlk birkaç varyant, çok okuma yapılan günlerde fazla cezalandırıcıydı. Birkaç tekrarın ardından puan, hafif düzenlemelerle eşleştiğinde okumayı da meşru iş olarak değerlendirir hale geldi ve sayılar nihayet günün gerçekte nasıl hissettirdiğiyle örtüştü.

Sıkıcı Kısımlar da Önemli

Bir takip aracı küçük şeylerle ayakta kalır ya da çöker. VS Code açıldığında temiz bir şekilde başlamak. Uykudan sonra doğru biçimde devam etmek. Yoğun düzenleme oturumlarında CPU'yu sıçratmamak. Çok köklü (multi-root) çalışma alanlarını çift saymadan ele almak. Bunların hiçbiri göz alıcı değil, ama hepsi birlikte eklentinin kurulu kalıp kalmayacağına karar veriyor.

Ayrıca minimal bir yüzeye sahip yerel bir REST API açtım; böylece çekirdeğe dokunmadan başka araçlarda anlık (ad-hoc) görünümler kurabiliyordum. Takip aracı ile üstündeki analitik arasında kararlı ve belgelenmiş bir sınır olması, iki tarafı da değiştirmesi kolay tuttu.

Gerçekten Kullandığım Bir Araç Olarak Yayınlamak

Asıl sınav, sürüm versiyonunu kurup birkaç haftalığına unutmaktı. Sonunda panoyu açtığımda, desenler o haftalara dair hafızamla örtüşüyordu; bu da sayıların bir anlam taşıdığına dair ilk dürüst sinyaldir. Ondan sonra küçük iyileştirmeler doğal olarak geldi: daha iyi kategorizasyon, daha keskin odak bloğu tespiti, daha temiz dışa aktarma biçimleri.

CodePulse bir platform olmaya çalışmıyor. Kendi iş günlerime dair doğru bir şey anlatan, sessiz ve güvenilir bir enstrüman olmaya çalışıyor. Veri yerelde, mantık da incelenebilir kaldığı için nihayet bunu başarıyor.