docs: mark W7 P4 transport done (loopback-verified); endpoint fork next

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-15 05:28:27 -04:00
co-authored by Claude Opus 4.8
parent 501f76ac6d
commit 09673d2592
+15 -6
View File
@@ -123,12 +123,21 @@ address book), though a lightweight mutual-add is optional polish.
`PresenceMode` {Invisible, Normal(default), Discoverable} persisted in
`AppConfig`; `interpret_pong` — defensive (sanitizes peer room name, only
surfaces a joinable room if the ticket parses, never auto-joins).
- **Deferred to a 2-machine session (the I/O edges):** bind the live control
endpoint on its own ALPN (e.g. `peerspeak/friends/0`) **outside** the room
session lifecycle; its accept loop (gated by `should_answer`); the rate-limited
outbound ping scheduler (on app open + slow refresh); reporting our current
gathering as a member-issued ticket (reuse `restamp`); rendering friend status +
a **room-name tag + Join** entry in the friends list (overlaps P5).
- **Transport DONE 2026-06-15 (`501f76a`):** `src/presence_net.rs` — bind/`probe`/
`serve` the ping→pong over ALPN `peerspeak/friends/0`; request/response per conn;
`serve` authenticates `remote_id` and asks an injected `Handler` (wraps
`should_answer` + builds the pong) what to reply, `None` = reveal nothing to a
stranger. **Loopback integration test PASSED over real iroh endpoints** (friend
gets Pong+room; stranger gets unusable reply); run with `cargo test -- --ignored
presence_net`.
- **STILL deferred (next session, needs care + 2 machines):**
- **The endpoint-lifecycle fork (decide first):** a second always-on endpoint
shares our node id with the per-join room endpoint (possible relay/identity
collision) vs. refactoring to ONE persistent endpoint that hosts friends +
room. Spike/decide before wiring `serve` live.
- Spawn `serve` outside the room session; the rate-limited outbound ping
scheduler (app open + slow refresh); report our current gathering via
`restamp`; render friend status + a **room-name tag + Join** entry (overlaps P5).
### P5 — Recents + UI — Medium
Local recents list (cosmetic room tags). Friends-list UI with status dots