ciciFTP

Changelog

Release channels: Alpha → Beta → Final. The app checks for a new version once a day on startup and ignores unsigned notices. Notes are currently in Turkish.

2.8.0-beta Beta 2026-09-22

Dropbox

  • Dropbox (Services/Remote/DropboxRemoteClient.cs, Dropbox API v2): kişisel bulut sürücüsü. Listeleme (list_folder + sayfalama), yükleme (≤ 8 MB tek istek; üstü upload_session ile 8 MB parçalı), indirme (Range ile sürdürme), silme, klasör oluşturma, taşıma/yeniden adlandırma (move_v2), content_hash sağlaması (indirmeden karşılaştırma).
  • OAuth2 + PKCE (Services/Remote/DropboxOAuth.cs): tarayıcıdan tek seferlik yetkilendirme (loopback yönlendirme), uzun ömürlü refresh token site parolası olarak şifreli saklanır (DPAPI/ana parola); her bağlanışta kısa ömürlü access token alınır. Uygulama gizli anahtarı (secret) gerekmez. Kullanıcı adı = hesap e-postası.
  • Arayüz: Site Yöneticisi protokol listesine "Dropbox"; seçilince "Dropbox'a bağlan (tarayıcıda yetkilendir)" düğmesiyle hesap bağlanır.
  • Güvenlik sertleştirmesi (4. tur denetimi, aynı sürümde):
  • OAuth state: yetkilendirme adresine rastgele state konur ve dönen istekte sabit-zamanlı karşılaştırılır. Bu olmadan, loopback dinleyici açıkken yereldeki bir süreç ya da kullanıcının açtığı kötü niyetli bir sayfa kendi ?code='unu gönderip hesabı saldırganın Dropbox'ına bağlayabilirdi (yetkilendirme kodu enjeksiyonu / CSRF — RFC 6749 §10.12, RFC 8252 §8.9). Eşleşmeyen istekler reddedilir, akış bozulmaz.
  • Uç nokta geçersiz kılma yalnız loopback: CICIFTP_DROPBOX_* ortam değişkenleriyle token/API adresi artık yalnız 127.0.0.1/localhost olabilir (testler için). Uzak adres yok sayılır → ortam değişkeni ayarlayabilen biri token trafiğini kendi sunucusuna çekip belirteç çalamaz.
  • Bellekte şifreli token: Dropbox refresh/access belirteçleri diğer sırlarla aynı biçimde SecretBox (CryptProtectMemory) içinde tutulur, yalnız kullanım anında çözülür.
  • Test: sahte Dropbox sunucusu (tests/servers/dropbox_fake.py) + DropboxSuite (16 doğrulama) + OAuth sertleştirme testleri; depo içi test çatısı 28 süit / 929 doğrulama.
  • Not: OneDrive / Box aynı OAuth çatısıyla sıradadır.

2.7.0-beta Beta 2026-09-21

Bulut depolama: S3 ailesi

  • S3 protokolü (Services/Remote/S3RemoteClient.cs): Amazon S3 ve S3-uyumlular — Wasabi, Backblaze B2, Cloudflare R2, DigitalOcean Spaces, MinIO, Google Cloud Storage (HMAC), Oracle Object Storage. AWS Signature V4 (resmî test vektörüyle doğrulanmış S3Signer), sanal konak / yol biçimi adresleme, kova listesi ya da site kovası, önek "klasör"leri, sayfalama, Range ile sürdürme, çok parçalı yükleme (8 MB parça, iptalde Abort), CopyObject ile taşıma, DeleteObjects ile toplu silme, ETag=MD5 sağlaması (indirmeden karşılaştırma). Sihirbazda sağlayıcı ön ayarları; Site Yöneticisi → Gelişmiş: bölge, kova, yol biçimi; s3:// URL; --test s3. 37 yeni metin 35 dilde.
  • Azure Blob Storage (AzureBlobRemoteClient): Shared Key (Azurite ile birebir doğrulanmış StringToSign) ya da SAS; kapsayıcı/önek gezinme, Put Blob + Content-MD5 sağlaması, Put Block/Block List (8 MB), x-ms-range sürdürme, Copy Blob ile taşıma, kökte mkdir = kapsayıcı. Sihirbazda seçenek; azblob://; --test azure. azure süiti (37) + Azurite 3.37 üzerinde canlı ✓. 18 metin 35 dilde.
  • Güvenlik 3. tur (docs/GUVENLIK-UCUNCU-TUR-2026-09-21.md): SSH anahtar üretiminde parola artık ssh-keygen komut satırında değil (SSH_ASKPASS + ASCII sarmalayıcı; şifrelenmemiş çıkarsa anahtar silinir); uzak özyinelemede 64 seviye derinlik sınırı (symlink döngüsü gösteren sunucuda çökme yok); ad süzgeci görünmez/yön değiştiren Unicode (RLO ad sahteciliği), DEL ve 255+ karakteri reddeder; çalıştırılabilir uzantı uyarı listesi genişledi; sürüm denetimi/UPnP/Hestia HTTP yanıt tamponu sınırlı, TLS 1.2+; UPnP kontrol adresi yerel ağla sınırlı; düz FTP/HTTP kimlik ve URL'de parola uyarıları (35 dil). guvenlik süiti 71 sınama; toplam 895.
  • Tema tutarlılığı (UI): ThemedCombo açılır kutu stili (site süzgeci, hızlı bağlan protokolü; düzenlenebilir kutular dahil), RoundedPassword, InlineButton; IconButton artık ToolIconButton üzerine kurulu. Uygulama genelinde örtük stiller: stil verilmemiş Button → SecondaryButton, ComboBox → ThemedCombo, TabControl/TabItem → altı çizgili sekme — Site Yöneticisi, Seçenekler, Bağlantı sihirbazı, Anahtar üret vb. pencerelerdeki Fluent varsayılan düğme/kutu/sekmeler tüm temalarda tema diliyle çizilir. Site Yöneticisi: Bağlan birincil düğme, Kaydet/Kapat ikincil, araç çubuğu ikonları, Genel sekmesindeki yerel TextBox/PasswordBox stilleri (Fluent şablonunu düşürüp beyaz kutu bırakıyordu) RoundedText/RoundedPassword'a dayandırıldı (aynı hata Bağlantı sihirbazı, Anahtar üret, Ana parola pencerelerinde de giderildi).
  • Yeni tema "Nane" (Mint): Linux Mint / Pardus / GNOME Adwaita tadı — sıcak açık gri düz zemin, beyaz kartlar, 8 px GTK köşeleri, açık başlık çubuğu, nane yeşili vurgu, adaçayı klasörler, Ubuntu turuncusu uyarılar; Ubuntu/Noto yazı tipi varsa kullanılır. 9 palet oldu; ad/açıklama 35 dilde.
  • Artık risklerin kapatılması (kullanıcı: "en güvenilir hale gelsin"): FTP pasif kipte PASVEX (bounce yok); ilk temasta SSH anahtar parmak izi onay penceresi (HostKeyWindow, Seçenekler → SSH); bellekte sırlar SecretBox (CryptProtectMemory) — oturum ve kuyruk parolaları; ajan özel anahtarı diskte şifreli (KeyFiles, cici-enc:v1); herkesin yazabildiği klasör uyarısı (DirSecurity); HTML önizleme CSP sandbox (HtmlPreview); version.json ECDSA imzası (ReleaseSigning, --release-keygen/--release-sign, surum.ps1); FTP indirme/yükleme boyut doğrulaması; FTPS TLS 1.2 (TLS 1.3'te FluentFTP veri kanalı kesilmesi tespit edildi). --test … --accept-cert, --agent-info host port. 11 metin 35 dilde.
  • Derin güvenlik denetimi (docs/GUVENLIK-DERIN-DENETIM-2026-09-21.md): ciciftp-agent 1.2 — site kullanıcısının .ssh symlink'iyle root yetkisi alma yolu kapatıldı (A1, canlı simülasyonla doğrulandı), SSH'tan install/uninstall yasak (A2), kurulum satırı gömülü betiğin SHA-256'sını denetler (A3), CyberPanel FTP parolası komut satırında değil ortamda (A4); s3:///azblob:// hızlı bağlan hep TLS (B1); ana parola kilitliyken yazılan sırlar kilit açılınca yeniden şifrelenir (B2); tüm TLS istemcileri yalnız TLS 1.2/1.3 (B3); HTTP yanıt tampon sınırı + rename regex zaman aşımı (B4); --test ad süzgeci (B5). NuGet açık taraması temiz.
  • Güvenlik: dosya listesinde Unicode yön karakterleri (U+202E RLO vb. — "rapor.txt‮exe." uzantı gizleme) görünür ⟨U+202E⟩ işaretiyle gösterilir (Display.MarkBidi, FileRow.DisplayName); gerçek ad değişmez. Sihirbaz alan kümesi WizardModel.Fields ile test edilebilir.
  • Sihirbaz WebDAV profilleri: Nextcloud, ownCloud (/remote.php/dav/files/[kullanıcı]/, uygulama parolası ipucu), SharePoint/OneDrive İş ve IIS (LOCK/UNLOCK otomatik açık), Apache/nginx. Yer tutucu doğrulaması. 8 metin 35 dilde.
  • Test: s3 süiti (53) — sahte S3 sunucusu gerçek SigV4 doğrular; GercekSunucu ortam değişkenleriyle gerçek uç noktada koşar. Canlı: Garage 1.2 (açık kaynak S3) üzerinde tam tur ✓. Belge: docs/BULUT-DEPOLAMA.md (yol haritası: Nextcloud/ownCloud profilleri, Azure Blob, OneDrive/Dropbox/Box, Google Drive, Swift).

2.6.0-beta Beta 2026-09-21

Panelden siteleri güvenli alma — ciciftp-agent

Kullanıcı isteği: panellerden (CloudPanel, CyberPanel, Hestia; sonra DirectAdmin/cPanel/Plesk) FTP sitelerini kolayca ama "askerî düzeyde güvenli" almak. Tasarım ve canlı doğrulama: docs/PANEL-ENTEGRASYON.md.

  • Dosya → Panelden siteleri al (SSH ajanı)… — panel parolası hiç girilmez. Sunucuya bir kez kurulan sunucu/ciciftp-agent.sh, root'un authorized_keys'inde restrict,command= ile yalnız ciciFTP'nin kendi anahtarına ve yalnız list / grant / revoke komutlarına açıktır (kabuk yok). SFTP'li panellerde grant site kullanıcısına ciciFTP'nin genel anahtarını ekler → site kaydı parolasız (anahtar). Yalnız FTP bilen CyberPanel'de siteye özel ciciftp_<domain> hesabı, 28 karakter rastgele parola; parola bir kez SSH içinden gelir, şifreli saklanır. Erişimi geri al tek tıkla anahtarı/hesabı sunucudan kaldırır.
  • Canlı doğrulama (yeni DeHost/Proxmox sunucusu): CloudPanel (SFTP anahtar) ve CyberPanel (FTPS TLS 1.3) — grant, yeniden grant (parola yenileme), revoke, kabuk reddi.
  • Services/Panels/PanelAgent, Views/PanelImportWindow (35 dilde, 37 yeni anahtar), sahte panel sunucusu tests/servers/agent_server.py, panel süiti (22 doğrulama): anahtarla gerçek SFTP girişi, parola diske/günlüğe yazılmaz, revoke sonrası giriş reddi. Toplam: 24 süit / 703 doğrulama.
  • API sağlayıcıları: DirectAdmin (Login Key), cPanel (API Token), WHM (root/bayi token → tüm hesaplar), Plesk (API anahtarı; yönetici parolasıyla bir kez anahtar üretme, parola saklanmaz). Pencerede "Bağlantı" seçici; siteye özel ciciftp_<domain> FTP hesabı, 28 karakter rastgele parola, şifreli kayıt; geri alma hesabı siler. Sahte API sunucuları + panelapi süiti (53). --panel-test komutu (anahtar dosyadan). Canlı doğrulama: Plesk Obsidian 18.0.81 (NAT arkasında, --ftp-port), DirectAdmin 1.6x (pure-ftpd), cPanel/WHM 11.138 (hesap token'ı ve "all" WHM token'ı).
  • Güvenlik & optimizasyon denetimi (docs/GUVENLIK-OPTIMIZASYON-DENETIMI-2026-09-21.md): güncelleme bağlantısı yalnız https://ciciftp.com (S1); çalıştırılabilir dosyayı "aç" için onay (S2); UPnP LOCATION yalnız yerel ağ (S3); tamponlu paylaşımlı günlük yazıcısı (P1), günlük paneli blok kırpma (P2), klasör listesi tek Reset ile doldurma (P3).
  • ciciftp-agent 1.1: aaPanel (SQLite + pure-pw, siteye özel FTPS hesabı), Virtualmin (list-domains, alt sunucular) ve ISPConfig (web_domain, webN kullanıcıları) desteği; verilen anahtar satırı artık restrict,command="internal-sftp" — anahtar yalnız SFTP yapabilir, kabuğu /bin/false olan kullanıcılarda da çalışır. Üçü de gerçek kurulumda doğrulandı. 19 yeni arayüz metni 35 dilde.
  • Geliştirme araçları depoya taşındı (tools/: ce.py, lang_merge.py, panel_keys.py); scratchpad silinince kaybolmasın.

2.5.0-beta Beta 2026-09-20

Yayın altyapısı + 35 dilde günlük + WebDAV LOCK

Kullanıcı: "1'in hepsini 5'in hepsini yap" — yayın altyapısı (1) ve küçük eksikler (5). Codex kullanılmadı.

  • Yayın altyapısı (surum.ps1, installer/):
  • Kod imzası (isteğe bağlı): CICIFTP_SIGN_THUMBPRINT (sertifika deposu) ya da CICIFTP_SIGN_PFX + CICIFTP_SIGN_PFX_PASSWORD ortam değişkeni; signtool Windows SDK'dan bulunur, RFC 3161 zaman damgası. Parola hiçbir dosyaya yazılmaz. Yoksa "imzasız" notuyla sürer.
  • MSI kurulum paketiinstaller/ciciFTP.wxs, WiX 5.0.2 yerel araç (installer/dotnet-tools.json; WiX 7'nin OSMF ücreti/EULA'sı nedeniyle bilinçli olarak v5). Program Files\ciciFTP, Başlat menüsü + web sitesi kısayolu, isteğe bağlı masaüstü kısayolu, Programlar ve Özellikler'de kaldırma, aynı UpgradeCode ile sürüm yükseltme, Türkçe kurulum arayüzü, kurulum sonunda "şimdi başlat". .NET Desktop Runtime 10 ön koşulu: MSI dizin araması + başlatma koşulu (indirme bağlantılı ileti); kesin sürümü exe'nin apphost'u zaten denetler. ICE doğrulaması (wix msi validate) temiz.
  • Taşınabilir zipciciFTP-<sürüm>-portable.zip: exe + portable.txt + BENİOKU. Uygulama exe'nin yanında portable.txt görürse (ve --data-dir verilmediyse) verileri exe'nin yanındaki data\ klasörüne yazar; bayrak gerekmez.
  • dist\site\version.jsonciciftp.com/version.json'a yüklenecek bildirim (version/channel/url/notes/date; notlar CHANGELOG'dan); dist\SHA256SUMS.txt.
  • Güncelleme denetimi: Yardım → Güncellemeleri denetle; açılışta günde bir (Seçenekler → Genel; kapatılabilir). Yalnız GET, hiçbir veri gönderilmez, kendiliğinden indirme/kurma yok. Karşılaştırma: sayısal parçalar, sonra kanal (Final > RC > Beta > Alfa). Yardım → Kullanım kılavuzu (ciciftp.com/docs/).
  • Günlük satırları 35 dilde: 227 enterpolasyonlu $"..." günlük çağrısı string.Format(L10n.T("... {0} ..."), …) şablonuna çevrildi; sabit satırlar zaten görüntülenirken çevriliyordu. 288 yeni anahtar × 35 sözlük (Türkçe kaynak). Yer tutucu/yeni satır paritesi betikle doğrulandı. WPF renkli emoji sınırı (tek renk) değişmedi.
  • WebDAV LOCK/UNLOCK (site başına, kapalı varsayılan): RFC 4918 exclusive write lock → PUT (If: (<token>)) → UNLOCK. Üst koleksiyon yoksa (409) kurulup bir kez daha denenir; sunucu LOCK bilmiyorsa (405/501) bir kez bilgi verilir, sonra kilitsiz sürer. SharePoint/IIS için; Nextcloud/Apache'de gerekmez. WebDAV'da yükleme sürdürme (APPEND) protokol sınırı — yapılmadı, belgelendi.
  • Parite ◐ → ✅ (docs/CUTEFTP-AYAR-PARITESI.md): global istemci sertifikası (Seçenekler → Güvenlik → TLS; site vermezse sunulur), etkin bölme vurgusu (odaklı panelin çerçevesi vurgu renginde), günlükte site süzgeci (açılır liste; site dışı bilgi satırları kalır).
  • Testler: yeni surum süiti (sürüm karşılaştırma, günde bir, version.json biçimi) ve webdav süitine WebDavKilit (LOCK/UNLOCK gerçek wsgidav'a karşı; --nolock sunucuda 501 → kilitsiz devam). Toplam: 23 süit / 681 doğrulama.
  • Gözden geçirme (aynı gün): HTTPS/WebDAV istemci sertifikası hiç sunulmuyordu → ortak Remote/TlsClientCert.Load (site → genel; FTPS ve HTTPS aynı yol; yanlış parola bağlanmadan önce anlaşılır hata, +4 doğrulama); ana parola kilitliyken Seçenekler'i kaydetmek genel sertifika parolasını silmesin; günlük site süzgecinin ilk öğesi açılışta çevrilir; MSI AllowSameVersionUpgrades (2.5.0-beta → 2.5.0 final üstüne kurulur; başlatma koşulu MSI API ile doğrulandı: DOTNETDESKTOP bulundu); surum.ps1 imzalama fonksiyonunda otomatik $args değişkeni gölgelenmiyor.

2.4.0-beta Beta 2026-09-20

Menü düzeni + 8 tema / 4 simge seti

Kullanıcı isteği: "menüleri gözden geçir, daha pratik olsun; hiçbirini kaldırma" ve "5 farklı tema, farklı ikon setleriyle; açık tema çok beyaz". Hiçbir işlev kaldırılmadı; yalnız yer değişti ve tema altyapısı eklendi.

  • Menüler yeniden düzenlendi (8 menü: Dosya · Düzen · Görünüm · Sunucu · Filo · Kuyruk · Araçlar · Yardım):
  • Dosya: bağlantı + tüm site içe/dışa aktarma (FileZilla ve Hestia içe aktarma Araçlar'dan buraya) + Çalışma alanları + Çıkış.
  • Düzen: dosya işlemleri; yeni Tümünü seç (Ctrl+A); uzak dosya düzenle/Notepad, chmod, uzakta yeni klasör/dosya (Dosya ve Sunucu'dan taşındı).
  • Görünüm: panel açma/kapama bir arada, Günlüğü temizle alt panelin yanında; karşılaştırma ve tema.
  • Sunucu: yalnız tek siteyle ilgili işler (eşitle, bul, yinelenenler, disk kullanımı, ham komut, klasör izleme, yer imleri).
  • Filo (yeni): çok siteyi ilgilendiren her şey — dağıt, başka sitelere kopyala, çok sitede bul-değiştir, dağıtımı doğrula, tüm bağlantıları test et, filo sağlık paneli, zamanlanmış görevler.
  • Kuyruk (yeni): duraklat, şu saatte başlat, bitenleri temizle, aktarım geçmişi.
  • Araçlar: betikler, makro, OpenPGP, Windows sağ-tık, Genel Seçenekler.
  • L10n: menü başlığındaki _ (Alt kısayolu) yeri değişse de sözlük girişi bulunur (_plain haritası) — yer değiştiren öğeler için 25 sözlük elden geçirilmedi. Yeni girişler: "Filo", "hazır. Site Yöneticisi için F4." (açılış günlük satırı), tema adları ve Görünüm sayfası metinleri (25 dilde).
  • 8 tema (Services/Themes.cs) — Görünüm → Tema (renk örnekli, işaretli) ve Seçenekler → Görünüm; anında uygulanır. Her temanın kendine has karakteri var: zemin gradyanı, yüzey/çerçeve renkleri, Windows başlık çubuğu rengi (DWM DWMWA_CAPTION_COLOR/TEXT_COLOR/BORDER_COLOR; açık ve sonradan açılan tüm pencereler), imza durum çubuğu (başlık rengiyle; Neon'da gradyan), gölge/ışıma, köşe yarıçapı, satır sıklığı, seçim dolgusu, arayüz ve tek aralıklı yazı tipi, simge seti: | Tema | Karakter | Yazı tipi | Simge | |---|---|---|---| | Gün Işığı | sabah güneşi: krem→açık gökyüzü gradyan zemin (#FFF8E8→#DCEAF8), beyaz kartlar, kehribar→mercan vurgu (#F29A1F→#F0605A), sıcak gölge, kehribar→gökyüzü durum çubuğu | Segoe UI Variable | Fluent | | (Sistem) | listede değil: Windows açık kipte serin gri (#EEF0F4→#E4E8EE, mavi), koyu kipte Gece | Segoe UI Variable | Fluent | | Gece | nötr koyu, mavi vurgu | Segoe UI Variable | Fluent | | Zümrüt | adaçayı gradyan, zümrüt vurgu, koyu yeşil başlık/durum çubuğu | Segoe UI Variable | MDL2 | | Nostalji | Windows XP "Luna" modern: açık mavi görev-bölmesi zemini (#EAF0FB→#D3DEF6), beyaz listeler, mavi-gri çerçeve (#7F9DB9), Luna mavisi başlık ve durum çubuğu (#0A5AE0), mavi→XP yeşili vurgu (#2457D8→#3D9A3D), XP sarısı klasörler, hafif köşe (6), sıkı satır (28) | Tahoma + Lucida Console | Klasik (Segoe UI Symbol) | | Ametist | lavanta gradyan, mor→eflatun, mor ışımalı kartlar, geniş köşe (14), ferah satır (34) | Candara | Fluent | | Okyanus | açık mavi gradyan, mavi→turkuaz dalga vurgusu, lacivert başlık/durum çubuğu | Corbel | MDL2 | | Derin Deniz | gece laciverti gradyan, gök mavisi→camgöbeği ışıma | Segoe UI Variable | Fluent | | Neon | koyu mor gradyan, macenta→mor→mavi üçlü gradyan, macenta ışıma, gradyan durum çubuğu, ferah satır | Bahnschrift + Cascadia Code | Emoji | "Sistem" Windows açık/koyu ayarına göre kendi serin gri açık paletini (Themes.SystemLight) ya da Gece'yi seçer — Gün Işığı'ndan ayrı. Mekanizma: Fluent sözlüğü (1027 anahtar) palete göre yeniden boyanır — nötr griler zemin tonuna çekilir, vurgu ailesi tema vurgusuna döndürülür; üstüne temanın yüzey/çerçeve/giriş fırçaları, CardRadius/ButtonRadius/ChipRadius + Fluent ControlCornerRadius, CardShadow/SoftShadow, RowHeight, SelectionFillBrush/HoverFillBrush, StatusBarBrush, UiFont/MonoFont yazılır. Panel satırları artık Fluent'in GridView kapsayıcısı yerine PaneRowStyle kullanır (Fluent GridView'a kendi ItemContainerStyle'ını dayatıyordu; satır yüksekliği ve seçim dolgusu bu yüzden temadan gelmiyordu).
  • 4 simge seti (Services/Icons.cs): Fluent (Win11), MDL2 (Win10), Klasik (Segoe UI Symbol), Emoji (Segoe UI Emoji; WPF renkli yazı tipini desteklemediği için tek renk çizgi). Kod/XAML'de simgeler Fluent kod noktasıyla anılır ({DynamicResource Icon.E8B7}, Icons.G("…")); set değişince yazı tipi ve karşılık gelen glif değişir. Her temanın varsayılan seti var; Seçenekler → Görünüm → Simge seti ile sabitlenebilir (Settings.IconSet, varsayılan "Auto").
  • Yan düzeltme: App.xaml'deki IconFont/IconButton/IconText kopyaları kaldırıldı (Theme.xaml'dekiler kalır) — doğrudan Application.Resources'taki kopya, tema sözlüğünün ezmesini engelliyordu. Marka fırçaları ve IconFont artık DynamicResource.
  • 10 yeni dil → toplam 35 (Lang/{kod}.json, her biri 1.083–1.091 giriş): Azərbaycan (az), Nederlands (nl), Українська (uk), Ελληνικά (el), Română (ro), Čeština (cs), Magyar (hu), Svenska (sv), Bahasa Melayu (ms), עברית (he — sağdan sola; IsRightToLeft listesine eklendi). Seçim ölçütü: hosting/web geliştirici yoğunluğu (2.3'teki konuşan-sayısı listesini tamamlar). Anahtar tablosu 1.091 → 1.113 (2.3–2.4'te eklenen açılış satırı, Filo, tema adları, Hakkında ve menü anahtar metinleri dahil); Seçenekler → Görünüm tema açıklamasının anahtarı 25 eski sözlükte de güncellendi (Windows XP Luna).
  • Simgeler: her menü öğesine tema vurgu renginde simge (62 glif; Fluent/MDL2/Klasik/Emoji setlerinde karşılıkları var, set değişince kendiliğinden güncellenir), Seçenekler kategori ağacına simgeler, Günlük/Kuyruk sekmelerine ve durum çubuğuna simge. Duraklat/Sürdür simgesi durumla değişir.
  • Durum anahtarı menü öğeleri (Kuyruğu duraklat, Yerel klasörü izle, Windows sağ-tık) onay kutusu yerine metinle durum gösterir (duraklat ⇄ sürdür, izle ⇄ izlemeyi bırak, ekle ⇄ kaldır): Fluent onaylanabilir öğe olan menüde tüm satırlara 26 px onay sütunu açıyordu; Sunucu/Araçlar/Kuyruk artık boşluksuz.
  • Hakkında penceresi (Views/AboutWindow): ad/sürüm, açıklama, web sitesi https://ciciftp.com/, yapımcı KodHisar Yazılım Hizmetleri (https://kodhisar.com/), veri klasörü bağlantısı. AppInfo.Name/Website/Publisher/PublisherWebsite; exe meta verisi (Company/Copyright/Description) ve csproj güncellendi.
  • Alt menü başlıkları (▸) Fluent'te onay sütunsuz şablon kullandığından sola kayıyordu → AccessText ile hizalandı (Görünüm → Karşılaştırma ölçütü / sonucundan seç / Tema, Sunucu → Yer imleri).
  • Test: yeni tema süiti (55): 8 palet/benzersiz kod/kipe uygun aydınlık/yazı tipi çeşitliliği/gradyan/satır sıklığı, HSL gidiş-dönüş, glif eşlemesi (4 set), Segoe UI Symbol'ün klasik gliflerin tamamını içerdiği; dil +3 (alt çizgi geri dönüşü). Toplam 22 süit / 643 doğrulama (dil 71: 35 sözlük, RTL 4 dil). Görsel doğrulama: 8 temanın hepsi dist exe'de açılıp ekran görüntüsüyle kontrol edildi (menü, paneller, Seçenekler → Görünüm).

2.3.0-beta Beta 2026-09-20

25 dil

Kullanıcı isteği ("dünyada en çok konuşulan 25 dili ekle"). 2.2'nin mekanizması değişmedi; sözlükler eklendi.

  • Diller (kaynak Türkçe + 25): English, 中文(简体), हिन्दी, Español, Français, العربية, বাংলা, Português, Русский, اردو, Bahasa Indonesia, Deutsch, 日本語, मराठी, తెలుగు, தமிழ், Tiếng Việt, Filipino, 한국어, فارسی, Italiano, ਪੰਜਾਬੀ, Kiswahili, ไทย, Polski. Seçim: Ethnologue toplam konuşan sıralaması; lehçe/pidgin varyantları birleştirildi. Her sözlük src/ciciFTP/Lang/{kod}.json (1059–1071 giriş; tüm 1091 anahtar kapsanır, çevrilmesi anlamsız özdeş satırlar atılır), csproj Lang\*.json gömülü kaynak.
  • Sağdan sola: L10n.IsRightToLeft (ar/ur/fa) — Apply pencere FlowDirection'ını RightToLeft yapar; menü, bölmeler, kuyruk ve durum çubuğu aynalanır. Görsel doğrulama: Arapça (RTL) ve Japonca (CJK) arayüzü --data-dir geçici klasörle dist exe'de açıldı; menü/bölme/durum metinleri çevrili.
  • Seçenekler → Genel → Dil: liste L10n.Available'dan doldurulur (her dil kendi adıyla).
  • Kullanıcı ezmesi her dil için aynı: %APPDATA%\ciciFTP\lang\{kod}.json.
  • Test: dil süitine TumDiller (+31): 26 kod benzersiz, 25 sözlüğün her biri >1000 girişle yüklenir, her dilde Kaydet/İptal/Bağlı değil/durum.Tamamlandı çevrili, RTL bayrağı yalnız ar/ur/fa, Apply Arapça'da RightToLeft + çeviri, Japonca'da LeftToRight + çeviri. Toplam 21 süit / 573 doğrulama.

2.2.0-beta Beta 2026-09-20

Çok dil desteği: Türkçe / English

Kullanıcı isteği ("daha sonra çoklu dil desteği ekleyeceğiz"). Ayar paritesindeki son ⛔ kalem (Dil) kapandı.

  • Mekanizma (Services/L10n.cs): kaynak dil Türkçe kalır — kod ve XAML Türkçe yazılı. Başka dil seçilince arayüz metinleri Türkçe → hedef dil sözlüğünden çevrilir; sözlükte olmayan metin aynen kalır (hiçbir zaman boş/çökme yok). L10n.Apply(pencere) her pencerede InitializeComponent() sonrası mantıksal ağacı gezer: pencere başlığı, TextBlock/Run, menü/GroupBox/TabItem başlıkları, düğme ve CheckBox içeriği, ToolTip, erişilebilirlik adı, bağlam menüleri, ListView/DataGrid sütun başlıkları. Veri bağlı özelliklere dokunmaz. L10n.T("…") kod içi metinler için (durum çubuğu, kuyruk durum/yön, dosya türü, bağlam menüsü yardımcısı, günlük satırları).
  • İngilizce sözlük gömülü kaynak: src/ciciFTP/Lang/en.json — 1070 giriş (XAML'deki tüm sabit metinler + MessageBox/menü/başlık sabitleri). Kullanıcı ezmesi: %APPDATA%\ciciFTP\lang\en.json (aynı biçim, gömülü sözlüğün üstüne yazılır; bozuk dosya yok sayılır). Yeni dil = lang\xx.json + L10n.Available.
  • Seçenekler → Genel → Dil / Language: Türkçe / English. Yeniden başlatınca geçerli (uyarı gösterilir); Settings.Language ("tr" varsayılan).
  • Test: yeni dil süiti (27 doğrulama): gömülü sözlük yükleme, T() eşlemesi ve ':' sonek geri dönüşü, bilinmeyen dil/metin, ağaç çevirisi (TextBlock, CheckBox, GroupBox, MenuItem alt öğe, GridView sütunu, bağlı metin korunur), kullanıcı ezme dosyası ve bozuk JSON. Toplam 21 süit / 542 doğrulama.

2.1.0-beta Beta 2026-09-20

Karara bırakılan 8 kalem + MODE Z dahil etme kipi

Kullanıcı kararı: "hepsini yap". Ayar paritesinde açık kalan 8 düşük değerli kalem ve MODE Z liste kipi.

  • UPnP port eşleme (Services/Upnp.cs, harici kütüphane yok): SSDP keşfi (M-SEARCH, IGD:1/2), aygıt XML'inden WANIPConnection/WANPPPConnection kontrol adresi, SOAP GetExternalIPAddress / AddPortMapping / DeletePortMapping. Etkin (PORT) kipte bağlanmadan önce port aralığı (en fazla 32) yönlendiricide TCP olarak açılır, PORT komutunda dış IP bildirilir, uygulama kapanırken eşlemeler kaldırılır. Yönlendirici bulunamazsa günlüğe not düşer, bağlantı yine denenir. Seçenekler → Etkin kip: anahtar, kira süresi, "Yönlendiriciyi sına". Test: sahte IGD (tests/servers/igd_server.py).
  • Araç çubuğu özelleştirme: Site Yöneticisi düğmesi, bağlantıyı kes, panel düğmeleri (başlangıç, üst klasör, yenile, yeni klasör, süzgeç, geri/ileri) tek tek gizlenir; büyük simgeler.
  • Düzenleyici renk şeması: Temaya göre / Açık / Koyu / Monokai / Özel (arka plan, metin, yorum, dize, anahtar sözcük, etiket, öznitelik, sayı — AvalonEdit tanımının adlandırılmış renklerine uygulanır).
  • HTML etiket ipuçları: imleç etiketin üstünde beklerken 50+ etiket için kısa Türkçe açıklama (kapatılabilir).
  • Kod parçacıkları: klasördeki her dosya bir parçacık (boş klasöre 3 örnek tohumlanır); düzenleyicide "Parçacık ▾" menüsü imlece ekler. Tarayıcıda aç: kaydedilmemiş içeriği yerel kopyaya yazıp varsayılan tarayıcıda açar (sunucuya yüklemez).
  • Sürdürme toleransı (CuteFTP "1 bayt"): boyut farkı N bayt ise "aynı boyut" sayılır — akıllı kural ve "yalnız boyut farklıysa" kararında. Varsayılan 0 (kapalı).
  • Aktarım arabelleği (16–1024 KB): MODE Z / WebDAV / SFTP kopya döngüleri, FluentFTP TransferChunkSize ve LocalFileBufferSize, SSH.NET BufferSize, parçalı indirme.
  • MODE Z liste kipi: CuteFTP gibi "yalnız şu uzantılara uygula" (varsayılan, CuteFTP benzeri liste) ya da 1.105'teki "şunlar dışında hepsi" — ikisi de duruyor, radyo düğmesiyle seçilir.

ekkalemler süiti (31 doğrulama): sahte IGD'ye karşı keşif/XML/SOAP, aralık eşleme + idempotans + çıkışta kaldırma + 32 sınırı + yönlendirici yokken sessiz false; tolerans matrisi; arabellek sınırları; şema→renk eşlemesi; etiket sözlüğü; parçacık tohumlama. modez süitine dahil etme/hariç tutma kipi eklendi. Toplam 515/515.

2.0.0-beta Beta 2026-09-20

Beta kanalı

Alfa → Beta. Kullanıcı kararı: CuteFTP 9 özellik paritesi (10/10) ve Genel Seçenekler ayar paritesi (bilinçli hariç 8 kalem ve karara bırakılan 8 düşük değerli kalem dışında tamam) sağlanınca Beta'ya geçilir. 1.100–1.117 arası 18 alfa sürümü bu kapıyı kapattı. Kod değişikliği yok; kanal etiketi ve sürüm.

Beta'nın anlamı: özellik seti donduruldu; bundan sonra hata düzeltme, arayüz cilası ve çok dil desteği (kullanıcının sıradaki isteği). Depo içi test çatısı: 20 süit / 481 doğrulama, hepsi gerçek yerel sunuculara karşı (pyftpdlib, asyncssh, wsgidav, http.server, SOCKS5/HTTP proxy).

Karara bırakılanlar (docs/CUTEFTP-AYAR-PARITESI.md Özet): UPnP, araç çubuğu özelleştirme, büyük simgeler, sözdizimi renk şeması, etiket ipuçları, 1 bayt sürdürme toleransı, arabellek boyutu, kod parçacığı klasörü.