docs: mark W7 P4 pure core done (presence protocol + auth gate)
This commit is contained in:
+14
-10
@@ -115,16 +115,20 @@ address book), though a lightweight mutual-add is optional polish.
|
|||||||
needs a ticket struct change) and tighter ticket encoding (drop JSON/base64 fat,
|
needs a ticket struct change) and tighter ticket encoding (drop JSON/base64 fat,
|
||||||
index the relay URL; lossless ~halving).
|
index the relay URL; lossless ~halving).
|
||||||
|
|
||||||
### P4 — Friends-only idle listener + presence — Medium (the new primitive)
|
### P4 — Friends-only idle listener + presence — pure core DONE 2026-06-15 (`a897f5c`)
|
||||||
A long-lived endpoint while the app is open (own ALPN, e.g. `peerspeak/friends/0`),
|
- **Pure protocol + policy DONE** (`src/presence.rs`, +8 tests): `ControlMsg`
|
||||||
**outside** the room-session lifecycle, that:
|
{Ping, Pong{room: Option<RoomPresence>}} (tagged JSON, unknown tags rejected);
|
||||||
- answers a ping only if `remote_id()` ∈ friends list;
|
`should_answer(from, friends, mode)` — the friends-only + not-invisible auth gate
|
||||||
- replies with online + (if in a gathering) a fresh member-issued ticket + the
|
(the anti-stranger-surface whitelist; `from` = authenticated `remote_id`);
|
||||||
cosmetic room name;
|
`PresenceMode` {Invisible, Normal(default), Discoverable} persisted in
|
||||||
- is governed by the invisible/normal/discoverable state.
|
`AppConfig`; `interpret_pong` — defensive (sanitizes peer room name, only
|
||||||
On app open (and a slow rate-limited refresh), ping each friend; render their
|
surfaces a joinable room if the ticket parses, never auto-joins).
|
||||||
status in the friends list. If a friend reports a gathering, show a small
|
- **Deferred to a 2-machine session (the I/O edges):** bind the live control
|
||||||
**room-name tag + Join** entry; clicking bootstraps off their ticket.
|
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).
|
||||||
|
|
||||||
### P5 — Recents + UI — Medium
|
### P5 — Recents + UI — Medium
|
||||||
Local recents list (cosmetic room tags). Friends-list UI with status dots
|
Local recents list (cosmetic room tags). Friends-list UI with status dots
|
||||||
|
|||||||
Reference in New Issue
Block a user