1.9 KiB
1.9 KiB
ECP-0038: Share Links (every.channel://watch) and UI Share Controls
Status: Draft
Problem
Sharing currently exposes a raw MoQ bundle (endpoint addr JSON, broadcast, track) which is copy/paste friendly for developers but awkward for regular users. We also need explicit UI controls for:
- Sharing via a single link.
- Sharing to nearby nodes (mDNS).
- Sharing publicly (DHT address lookup), while still requiring explicit gossip bootstrap peers.
Decision
Introduce a compact share link format:
every.channel://watch?...
and add UI affordances to copy and consume this link.
The link is a convenience wrapper around existing MoQ parameters. No new trust model is introduced here.
Link Format (v1)
Scheme and path:
every.channel://watch
Query parameters:
remote(required): irohEndpointAddrJSON string (or id-only string when discovery is enabled).broadcast(required): MoQ broadcast name.track(optional): MoQ track name (default remainschunksin the app).stream_id(optional): key id override (rare; for debugging).secret(optional): network secret hex (only when the publisher used one).discovery(optional): comma-separated discovery modes, currentlymdns,dht,dns.
UI (user-facing language)
- Share card includes:
- Copyable share link.
- Copyable node id.
- Viewer panel exposes:
- "Nearby (same Wi-Fi)"
- "Public (internet)"
- "Show in directory"
- optional "directory contacts" and "sharing key"
- "Watch a link" accepts a share link and can parse it to fill hidden advanced fields.
Consequences
- Sharing becomes one-string shareable without asking recipients to understand the underlying bundle structure.
- Public announcements still require bootstrap peers; DHT only provides address lookup.
Follow-ups
- Add an explicit public bootstrap peer list mechanism (governance-controlled).
- Add optional signing of share links (identity binding) once stream signing is enforced.