LAN üzerinden cihazları eşleştirip sohbet ve dosya/klasör transferi yapabilen masaüstü uygulaması. Tauri 2 · Rust · React 19 + TypeScript.
Ayrıntılı mimari, protokol tasarımı ve faz planı için: PLAN.md
Faz 8 — Gelen Dosyalar + Tepsi tamamlandı.
- Faz 0: navigasyon, tema, i18n, loglama, çok-profilli geliştirme kurulumu
- Faz 1: SQLite şeması + migration altyapısı, kalıcı ayarlar, Ed25519 cihaz kimliği (OS keychain'de saklanır), fingerprint görüntüleme
- Faz 2: QUIC uç noktası, kimlikten türetilen TLS sertifikası + public key
pinlemesi,
Hellosürüm anlaşması, heartbeat - Faz 3: mDNS ile otomatik cihaz keşfi, elle IP ekleme, "Bulunanlar" listesi
- Faz 4: karşılıklı doğrulama koduyla (SAS) eşleştirme, güvenilir cihaz kaydı, pinlenmiş anahtarla otomatik yeniden bağlanma, "Cihazı Unut"
- Faz 5: metin mesajlaşma, kalıcı geçmiş, iletildi/görüldü göstergesi, syntax highlight'lı kod blokları
- Faz 6: ana sayfada cihaz özet kartları — çevrimiçilik, son mesaj, göreli zaman, okunmamış sayısı; karta tıklayınca sohbet açılıyor
- Faz 7: dosya transferi — sürükle-bırak, alıcı onayı, ilerleme/hız/kalan süre, blake3 bütünlük doğrulaması, kesintide devam, hız limiti, gelen dosyalar geçmişi; pencere odakta değilken native bildirimler — bildirime tıklayınca ilgili ekran açılıyor (Windows)
- Faz 7.5: aktarımlar sohbet akışında kendi baloncuğunda, görsel önizleme + tam ekran görüntüleyici, sanallaştırılmış mesaj listesi ve geçmişe kaydırma
- Faz 8: gelen dosyalarda arama + tür filtresi + dosya bilgi kartı, ana sayfada son medyalar şeridi, sistem tepsisi, tepsiye küçülerek kapanma, tek instance, Windows açılışında başlatma, global kısayol + hızlı gönder penceresi
Sırada Faz 9 var: FTS5 ile sohbet araması ve pano dosya spike'ı (bkz. PLAN.md §7).
Loopback throughput (512 MiB, release): 263 MiB/s ≈ 2203 Mbit/s — hedef ≥400 Mbit/s. Ayrıntı ve ölçümün sınırları: PLAN.md §2.2.2.
cd src-tauri && cargo test --release -- --ignored --nocapture throughputbun run release 0.2.0İmzalı kurulum paketini üretir, latest.json yazar ve gh ile GitHub yayını
oluşturur. RELEASE_NOTES.md içeriği hem yayında hem de kullanıcının
güncelleme sonrası gördüğü "Yenilikler" penceresinde görünür.
İmzalama anahtarı .tauri/linkup-updater.key — gitignore'da ve yedeği ayrı
tutulmalı. Ele geçirilirse imzalı sahte güncelleme üretilebilir; kaybedilirse
mevcut kurulumlar bir daha güncelleme alamaz.
Depo private olduğu sürece otomatik güncelleme çalışmaz: GitHub özel depolarda yayın varlıklarını kimlik doğrulaması olmadan sunmuyor.
- Bun 1.3+
- Rust 1.95+ (stable)
- Tauri ön koşulları (Windows'ta WebView2 + MSVC build tools)
bun installbun run appLinkUp bir P2P uygulaması; test etmek için iki cihaz gerekir. --profile bayrağı
bunu tek makinede mümkün kılar — her profil kendi veri dizinini, veritabanını,
kimlik anahtarını ve QUIC portunu kullanır.
Birinci terminal (derler, Vite sunucusunu ve birinci pencereyi açar):
bun run dev:aDerleme bitip pencere açıldıktan sonra ikinci terminalde:
bun run dev:bdev:a |
dev:b |
|
|---|---|---|
| Veri dizini | %APPDATA%/LinkUp-a |
%APPDATA%/LinkUp-b |
| QUIC portu | 47811 | 47812 |
| Pencere başlığı | LinkUp (A) | LinkUp (B) |
Üçüncü bir instance gerekirse: bun run dev:c
Nasıl çalışıyor: tauri devi iki kez çalıştırmak Windows'ta başarısız olur —
ikinci cargo derlemesi, birincinin çalıştırdığı linkup.exeyi silemez. Bu yüzden
dev:a tek derlemeyi ve tek Vite sunucusunu yönetir; dev:b derlenmiş
binary'nin profile özel bir kopyasını çalıştırır. İki pencere de aynı Vite
sunucusundan beslendiği için frontend değişiklikleri ikisinde de anında yansır.
Rust tarafı değiştiğinde dev:a kendini yeniler; ikinci instance'ı elle yeniden
başlatın.
Üretim binary'sinde de aynı bayrak geçerlidir: linkup.exe --profile a
bun run checkTip kontrolü → frontend build → cargo fmt --check → cargo clippy -D warnings → cargo test.
Bu, .githooks/pre-push hook'u ile her push'tan önce otomatik çalışır. Depoyu
ilk kez klonladıysanız hook'u etkinleştirin:
git config core.hooksPath .githooksAtlamak gerekirse: git push --no-verify
Uzak bir CI servisi bilinçli olarak kullanılmıyor — gerekçe ve bu kararın hangi koşullarda gözden geçirileceği: PLAN.md §10-K9.
Uygulama Windows 11 / Fluent (WinUI 3) görünümünü hedefler. Tüm renk, yarıçap,
tipografi ve hareket değerleri tek bir dosyada toplanmıştır:
src/styles/tokens.css. Bileşenlerde çıplak hex rengi
veya px yarıçapı bulunmaz — başka bir platform diline geçiş bu dosyadan yönetilir.
Uygulama içi: Ayarlar → Gelişmiş → Log Klasörünü Aç
Dosya yolu: <veri dizini>/logs/linkup.<tarih>.log (günlük rotasyon, son 7 gün)