Files
SnapOtter/apps/docs/tr/guide/contributing.md
T
SnapOtterandGitHub d10d0f544f fix: release QA hardening across processing, media, security, and CI gates (#649)
A release-readiness QA pass over the whole product. The commits split into
defects a user would hit and gates that were reporting green while measuring
nothing.

## Fixes that change behaviour

Rate limiting was bypassable on every install: TRUST_PROXY defaulted to true, so
request.ip came from a client-set header and a forged X-Forwarded-For got past
the login limiter. The default is now a private-network trust list.

A transient Postgres outage stranded in-flight jobs, leaving finished output on
disk with no row pointing at it. A reconciler now resolves those rows and adopts
the bytes rather than dropping the work.

A Redis connection that moved to a new address wedged every read-blocked
consumer, so completions stopped signalling while health still answered 200.
Socket timeouts plus subscriber pings recover it.

Installing more than one AI bundle left the shared venv multi-versioned and
silently broke three tools. The installer now reconciles distributions to one
version each.

Converting an image to JXL at quality 1 through 4 returned a 500, because
libjxl 0.7 rejects the distance those values compute. The quality is floored at
what the encoder honours. A missing ffmpeg was also reported to the user as a
corrupt upload; it now says the engine is unavailable.

RAW uploads reached an unpatched LibRaw on arm64, so it is built from source at
0.22.2, and the release scan was split so it can fail on an unfixed critical
instead of hiding it behind ignore-unfixed.

## Gates that could not fail

Two mutation lanes ran zero mutants because Stryker crawled the gitignored docs
build; coverage discarded its whole report on any failing test; the lint gate
skipped root tests, scripts, and two workspaces; and several generated matrices
counted a host missing ffmpeg as a passing tool. Each now measures what it
claims.

Full evidence and the outstanding release items are tracked locally and are not
part of this branch.
2026-07-27 15:37:30 +08:00

7.1 KiB
Raw Blame History

description, i18n_source_hash, i18n_provenance, i18n_output_hash, i18n_hash_version
description i18n_source_hash i18n_provenance i18n_output_hash i18n_hash_version
SnapOtter'a nasıl katkıda bulunulur. Hata bildirimleri, özellik istekleri, pull request'ler ve CLA gereksinimleri. 6c920a5f83e0 human 817fbe39bf31 2

Katkıda Bulunma

Katkıda bulunmakla ilgilendiğiniz için teşekkürler. Bu kılavuz nasıl katılabileceğinizi, neleri kabul ettiğimizi ve nasıl başlayacağınızı anlatır.

Katkı yolları

Issue'lar (kurulum gerekmez)

  • Hata bildirimleri - Bir şey mi bozuk? Yeniden üretme adımlarıyla birlikte bir hata bildirimi açın.
  • Özellik istekleri - Bir fikriniz mi var? Topluluğun görüş bildirebilmesi ve oy verebilmesi için bir tartışma başlatın.
  • Çeviri sorunları - Yanlış veya eksik bir çeviri mi gördünüz? Bir çeviri issue'su açın.
  • Dokümantasyon sorunları - Dokümanlarda bir aksaklık mı var? Bir dokümantasyon issue'su açın.

Kod (CLA gerektirir)

Şu türde pull request'leri kabul ediyoruz:

Tür Süreç
Hata düzeltmeleri Doğrudan bir PR açın (varsa ilgili issue'ya bağlayın)
Yeni çeviriler Doğrudan bir PR açın (Çeviri Kılavuzu bölümüne bakın)
Dokümantasyon iyileştirmeleri Doğrudan bir PR açın
Test kapsamı iyileştirmeleri Doğrudan bir PR açın
Yeni araçlar veya özellikler Önce bir tartışma başlatın; bir bakımcı, onaylanan fikirleri siz kod yazmadan önce izlenen bir issue'ya dönüştürür
Refactor veya mimari değişiklikler Önce bir tartışma başlatın ve kod yazmadan önce bir bakımcının onayını bekleyin

Kabul etmeyeceklerimiz

  • CI/CD iş akışlarında, sürüm yapılandırmasında ya da linter/derleyici yapılandırmasında değişiklikler
  • İmzalanmış bir Katkıda Bulunan Lisans Anlaşması olmayan PR'ler
  • 400 satırdan fazla değişiklik içeren PR'ler (büyük çalışmaları daha küçük PR'lere bölün)
  • Önceden tartışılıp onaylanmamış özellikler
  • Önceden tartışmadan packages/ai/ dosyasında yapılan değişiklikler

Katkıda Bulunan Lisans Anlaşması

İlk PR'inizi birleştirebilmemizden önce Bireysel CLA anlaşmamızı imzalamanız gerekir. Bu tek seferlik bir gerekliliktir.

Neden: SnapOtter çift lisanslıdır (AGPLv3 + ticari). CLA, katkılarınızı her iki lisans altında dağıtma hakkını bize verir. Çalışmanızın tüm telif hakkı sahipliğini korursunuz.

Nasıl: İlk PR'inizi açtığınızda, CLA Assistant botu bir bağlantı içeren bir yorum bırakır. Bağlantıya tıklayın, anlaşmayı inceleyin ve GitHub hesabınızla imzalayın. 30 saniye sürer.

İşvereniniz adına katkıda bulunuyorsanız ve işvereniniz çalışmanız üzerindeki fikri mülkiyet haklarını elinde tutuyorsa, göndermeden önce bir Kurumsal CLA düzenlemek için contact@snapotter.com adresine yazın.

Başlarken

Ön koşullar

  • Node.js 22.22+
  • pnpm 9+
  • Python 3.11+ (yalnızca AI araçları için)
  • Docker (isteğe bağlı, tam entegrasyon testi için)

Kurulum

# Fork and clone
git clone https://github.com/<your-username>/snapotter.git
cd snapotter

# Start Postgres + Redis for local dev
docker compose -f docker-compose.dev.yml up -d

# Install dependencies
pnpm install

# Start dev servers (web on :1351, API on :13490)
pnpm dev

Kontrolleri çalıştırma

Bir PR göndermeden önce, tüm kontrollerin yerelde geçtiğinden emin olun:

pnpm lint          # Biome lint + format check
pnpm typecheck     # TypeScript across monorepo
pnpm test          # Vitest unit + integration tests

Pull request süreci

  1. Repo'yu fork'layın ve main üzerinden bir dal oluşturun (feat/my-feature veya fix/issue-123)
  2. Değişikliklerinizi conventional commits kullanarak odaklı, incelenebilir commit'lerde yapın
  3. Değişiklikleriniz için testler ekleyin ya da güncelleyin
  4. pnpm lint && pnpm typecheck && pnpm test komutunu yerelde çalıştırın
  5. main üzerine bir PR açın ve şablonu doldurun
  6. İstenirse CLA'yı imzalayın
  7. CI'nin geçmesini ve bir bakımcının incelemesini bekleyin

İnceleme beklentileri

  • PR'lere 7 gün içinde yanıt vermeyi hedefliyoruz
  • Küçük, odaklı PR'ler daha hızlı incelenir
  • 7 gün içinde bir yanıt almadıysanız, konu başlığına bir yorum bırakıp bildirin
  • Değişiklik isteyebilir, farklı bir yaklaşım önerebilir ya da PR projenin yönüyle uyumlu değilse kapatabiliriz

PR'iniz birleştirildikten sonra

Katkınız bir sonraki sürüme dahil edilir ve değişiklik günlüğünde size atıfta bulunulur.

İyi ilk issue'lar

Üzerinde çalışacak bir şey mi arıyorsunuz? Yeni başlayanlar için uygun görevler için good first issues listesine, ya da topluluk yardımından memnun olacağımız daha büyük işler için help wanted listesine göz atın.

Kod stili

  • Biome biçimlendirme ve lint işini yürütür (çift tırnak, noktalı virgül, 2 boşluk girinti)
  • Commit öncesi hook, staged dosyalarda biome check --write komutunu otomatik olarak çalıştırır
  • Linter şikayet ederse, kodu düzeltin (Biome yapılandırmasını değiştirmeyin)
  • Her yerde ES modülleri (import/export)
  • Conventional commit'ler: feat:, fix:, refactor:, docs:, test:, chore:

Tam mimari ayrıntıları için Geliştirici Kılavuzu bölümüne bakın.

Güvenlik

Güvenlik açıkları için herkese açık bir PR ya da issue açmayın. Bunları GitHub Security Advisories üzerinden ya da contact@snapotter.com adresine e-posta yoluyla özel olarak bildirin. Tüm ayrıntılar için SECURITY.md dosyasına bakın.

Sorularınız mı var?