You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stacked Swipe Mode Selector — Animated stacked swipe pill component with AGSL liquid metal shader effect for switching between Send and Receive modes
Performance Improvements
Buffered Network I/O — Added 2MB buffered reader/writer on both sender and receiver sides to aggregate writes into fewer, larger TLS records, reducing encryption overhead
Buffered File Writing — Receiver now wraps destination files in a 256KB buffered writer, with explicit flush at completion
File Pre-allocation — Received files are pre-allocated on disk (seek to Size-1) to prevent filesystem fragmentation and incremental allocation during transfer
Per-Connection TLS — Moved from tls.Listen/tls.Dial to raw TCP with explicit per-connection tls.Server/tls.Client handshakes; cipher suites now explicitly prefer AES-GCM over ChaCha20 for hardware AES-NI acceleration
Reduced Allocations — ChunkedWriter now uses a reusable [4]byte header buffer instead of allocating make([]byte, ...) on every write
Stability & Correctness
Fixed goroutine leak in ScanPeers() — The entries channel from the mDNS resolver is now explicitly closed when the scan context expires, preventing ScanPeers from blocking indefinitely
Fixed data race in history loading — loadHistory() now creates a defensive copy of the entries slice before returning, preventing race conditions between concurrent Wails JSON serialization and addHistoryEntry writes