Skip to content
firatmioPublic

About

LAN üzerinden cihazlar arası sohbet ve dosya transferi — Tauri + Rust + React

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

LinkUp

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

Durum

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, Hello sü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).

Ölçüm

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 throughput

Sürüm çıkarma

bun 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.

Gereksinimler

Kurulum

bun install

Çalıştırma

bun run app

Aynı makinede iki instance (P2P geliştirmesi için)

LinkUp 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:a

Derleme bitip pencere açıldıktan sonra ikinci terminalde:

bun run dev:b
dev: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

Doğrulama

bun run check

Tip 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 .githooks

Atlamak 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.

Görsel dil

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.

Loglar

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)

About

LAN üzerinden cihazlar arası sohbet ve dosya transferi — Tauri + Rust + React

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages