Katkıda Bulunma Rehberi
Memo'ya katkıda bulunmak istediğiniz için teşekkür ederiz. Bu rehber, etkili bir şekilde katılım göstermeniz için yol haritası sunar.
Katkı Türleri
Hata Raporları
GitHub Issues üzerinde bir konu açın. Şunları ekleyin:
- Memo sürümü (
memo --version)
- İşletim sistemi ve mimari
- Yeniden oluşturma adımları
- Beklenen ve gerçekleşen davranış
- Memo'nun çalıştığı terminalden günlükler
Özellik İstekleri
Özellik fikirleri için GitHub Discussions kullanın. Şunları açıklayın:
- Özelliğin çözdüğü problem
- Nasıl çalışmasını beklediğiniz
- Mevcut iş akışlarını etkileyip etkilemediği
Kod Katkıları
- Depoyu forklayın
- Bir özellik dalı oluşturun:
git checkout -b feat/ozelligim
- Aşağıdaki geliştirme standartlarına uyarak değişikliklerinizi yapın
- Tam test paketini çalıştırın (Test Protokolüne bakın)
main dalına bir pull request gönderin
Geliştirme Standartları
Gizlilik Öncelikli
Memo yerel-öncelikli bir uygulamadır. Tüm katkılar buna saygı göstermelidir:
- Telemetri veya analitik kodu yok
- Kullanıcı tarafından açıkça istenenler (API sağlayıcıları, bulut senkronizasyonu, web araması) dışında ağ çağrısı yok
- Kullanıcı verileri, açık kullanıcı eylemi ve şifreleme olmadan makineden asla ayrılmamalıdır
Performans
- Backend: HTTP işleyici goroutine'lerini engellemekten kaçının. Uzun işlemler için arka plan çalışanları kullanın.
- Ön yüz: Mesaj başına
AnimationController örneğinden kaçının. Widget yeniden derlemelerini en aza indirin.
- Bellek: Mümkünse akış kullanın, tüm veri kümelerini RAM'e yüklemekten kaçının.
Dokümantasyon
Kullanıcıya dönük her özellik şunları gerektirir:
- Sürüm notlarında bir bölüm (
versionNoteEN.md ve versionNoteTR.md)
- Yeni yapılandırma anahtarları eklenirse yapılandırma referansında güncelleme
- Özellik basit değilse doküman sayfası
Test
- Backend testleri
go test -race kullanır — her test, yarış dedektörü altında geçmelidir
- Eşzamanlılık yolları özel test kapsamına sahip olmalıdır
- Ön yüz testleri Flutter'ın
flutter_test paketini kullanır
- CI'dan geçmeyen hiçbir PR kabul edilmez
Katkı İçin Kilit Alanlar
| Alan |
İhtiyaç Duyulan |
| Ajan Arayüzü |
Araç yürütmenin zengin görselleştirmesi, ilerleme göstergeleri |
| Testler |
Backend test kapsamı, entegrasyon testleri, eşzamanlılık testleri |
| Çok adımlı planlama |
Şef modelin planlama ve görev ayrıştırma yeteneğinin iyileştirilmesi |
| Dosya düzenleme aracı |
Daha akıllı diff tabanlı düzenleme, çakışma çözümü |
| Git araçları |
Kabuk komutlarının ötesinde yerel git entegrasyonu |
Felsefe
Memo şu ilkeler üzerine inşa edilmiştir (öncelik sırasına göre):
- Doğruluk — özellikler başarısızlık durumları dahil tüm durumlarda doğru çalışır
- Gizlilik — tüm veriler kullanıcının kontrolündedir; hiçbir şey rıza olmadan hiçbir yere gönderilmez
- Performans — büyük bellek depolarında bile anında hissettirecek kadar hızlı
- Basitlik — anlaşılır kod, mümkünse standart kütüphane, aşırı mühendislik yok
Pull Request Kontrol Listesi