Repository navigation
LinkToMac 0.6.0
A reliability, security, and correctness pass across the whole stack — phone app, Mac app, and relay — from a full codebase review.
🔒 Security
- Authenticated clipboard bridge — the on-device bridge to the privileged clipboard daemon now requires a per-install secret, so no other app on your phone can read your clipboard or inject clipboard content over loopback.
- Replay protection & type binding — every encrypted frame (clipboard, remote lock, telemetry, notifications, SMS) is now bound to its type and timestamped; a captured frame can't be replayed or relabeled (ChaCha20-Poly1305 v2 envelope, ±2 min freshness window + nonce cache).
- Pairing keys and the relay token in the Keychain are now device-only — they no longer migrate off the Mac via backup/sync.
- The LAN peer slot is auth-gated: a stranger on your network can no longer evict your phone or occupy the connection.
📶 Reliability
- The Mac no longer shows "linked" when the connection has silently died (Wi-Fi drop, sleep/wake) — it now detects the dead link and reconnects.
- The phone no longer shows the Mac online during reconnection, so "Lock Mac" won't silently do nothing.
- The clipboard bridge recovers from stuck/half-open connections instead of quietly dying.
- LAN discovery and handshakes now time out and self-heal instead of hanging.
💬 Messages & correctness
- SMS threads open at the newest message and follow new messages live.
- Draft, failed, and queued texts no longer appear on the Mac as sent messages.
- "Check for updates" honestly reports a failure instead of falsely claiming "up to date" when offline.
- A corrupted pairing QR / key is now rejected instead of silently breaking sync.
✨ Polish & hardening
- Notification rows update in place; the dashboard keeps your selected tab / open conversation / page when you visit Settings and come back.
- The logs screen no longer jumps around; rapid back-to-back clipboard copies no longer echo back to the Mac.
- Numerous leak and crash-hardening fixes across the background service.
- Minimum Android version is now 11 — the real requirement for the wireless-pairing pipeline.
Install: Mac — download the DMG, first launch is right-click → Open (ad-hoc signed, not notarized). Existing installs auto-update via Sparkle. Android — install the APK (sideload); the app also offers this update in-app.