Repository navigation
chirp v0.2.0
The product model, over remotekit's rendezvous. There is still no cmd/chirp binary. Chirp is two library packages, session and signalling (README, Status).
Breaking
- The session direction is inverted (#5). Each running Chirp registers as a peer (
POST /api/peers) and gets its own code and share link. Whoever redeems the code (POST /api/redeem,POST /api/links/{token}/sessions) controls that peer, once its owner consents over its own socket. - The technician-PIN endpoints are gone:
POST /api/sessionsandPOST /api/sessions/{code}/consent(#13). RegisterPeertakes the origin:RegisterPeer(name, origin)(#38).- Go 1.26.6 is the declared minimum (#29). With it, govulncheck reports no vulnerabilities.
New
- Per-origin limits (maintainer decisions, tunable,
429when exceeded): - Abandoned peers are released. A peer away from its owner socket for 2 minutes loses its code, link and session (#41).
- The blind lookup (#45):
PUT /api/peers/{peer}/contactrecords an owner's Nostr key and relays;POST /api/lookupandPOST /api/links/{token}/lookupreturn exactly that contact, metered and single-use, with nothing relayed.
- Relay presence:
chirp.peer_joinedandchirp.peer_left.
Fixed
WaitForConsentwakes every waiter (#30). It returnsErrSessionExpiredorErrSessionEndedwhen a session ends undecided, instead of hanging.- Lazy expiry sets
EndedAtand notifies subscribers, as the reaper does (#34).
Decisions recorded
- A share link reaches a new Chirp by being pasted (decision 4, #35).
- A blind public server over Nostr, with 6 + 4 digit codes and a PAKE, comes after the MVP and before any public relay (decision 5, #44).
- Fyne for the UI (#36).
- Consent enforcement moves out of remotekit
tunnel(#40, barahn/remotekit#83). - A bring-your-own STUN/TURN guide:
docs/stun-turn.md(#39).
Full notes: #28.