The main way to connect devices right now is via QR code scanning. This doesn't allow direct laptop-laptop connections. To facilitate this, we need to either:
Allow tunneling between devices (hard-ish, esp because we don't control e2e encryption right now)
Share network details to allow direct connections (annoying but easier)
Since this is hard, and the current code is full of hacks, it's worth it to refactor juuuuust a lil bit. We can split this into layers:
Transport layer: Device auth + transport choice (bluetooth/quic/etc) + message passing
Define address format
Connect to address
Establish identity
Establish e2e encryption
Send messages
Permission layer: User auth + permissions + consensus-by-duplication
Network topology layer: sharing network topology + routing messages + consensus-by-duplication (is this necessary as its own layer?)
Application layer: capabilities, consensus, etc.
BUGS:
BUG: Note contents & tombstone storage leaks
BUG: syncing on cellular is broken… unclear how to fix ://
Features:
use "hostname" of tauri "os" plugin to add device names
Absolute bare minimum:
The main way to connect devices right now is via QR code scanning. This doesn't allow direct laptop-laptop connections. To facilitate this, we need to either:
Since this is hard, and the current code is full of hacks, it's worth it to refactor juuuuust a lil bit. We can split this into layers:
BUGS:
Features: