@@ -7,6 +7,37 @@ project uses [Semantic Versioning](https://semver.org/).
77Detailed per-release notes are on the
88[ GitHub Releases page] ( https://github.com/TeoSlayer/pilotprotocol/releases ) .
99
10+ ## [ 1.11.1] - Unreleased
11+
12+ Reliable P2P data transfer across NAT. Tag intentionally held for review.
13+
14+ ### Added
15+ - ** Chunked, ACK'd, resumable file transfer (` TypeFileStream ` ).** `pilotctl
16+ send-file` now streams files in 48 KiB chunks with per-chunk ACKs, an
17+ end-to-end SHA-256 integrity check, and automatic resume from the last
18+ contiguous byte after an interrupted transfer. Replaces the single
19+ atomic frame that stalled large transfers on any non-trivial path.
20+ Backward compatible: falls back to the legacy ` TypeFile ` path when the
21+ receiver is too old to answer the stream handshake. ` --no-stream ` forces
22+ the legacy path.
23+ - ** ` pilotctl prefer-direct <peer> ` ** and ** ` send-file --prefer-direct ` ** —
24+ drop a peer's tunnel + cached resolution so the next dial re-runs the
25+ full resolve + NAT hole-punch flow and prefers the direct path.
26+ - ` send-file ` reports ` transport ` , ` sha256 ` , and ` throughput_mbps ` ; adds
27+ ` --timeout ` .
28+
29+ ### Fixed
30+ - ** NAT traversal now actually establishes (and holds) a direct path.** The
31+ relay→direct upgrade sent a one-way probe that a stateful NAT/firewall
32+ always dropped, so peers stayed on the beacon relay indefinitely. The
33+ daemon now runs a beacon-coordinated hole-punch and immediately probes
34+ the peer's real address to promote the path, retrying every 15 s (was
35+ 5 min). Result on the dual-NAT rig: relay→direct in ~ 8 s, held through a
36+ 50 MB transfer, ~ 7–15× the relay throughput.
37+ - ** Dual-NAT key-exchange convergence.** Key exchange is now sent over both
38+ the direct and relay paths, so two NAT'd peers reconverge in ~ 1 RTT
39+ instead of waiting 28 s–3 min for blackhole detection.
40+
1041## [ 1.11.0] - 2026-06-09
1142
1243### Added
0 commit comments