v0.0.12
The stable release bundling everything since 0.0.10.
Group chat (#29)
retalk group create/list/members/add/remove/rename/leave/join/deleteandretalk send --group NAME.- Client-side fan-out: one pairwise-encrypted copy per member; the relay never learns the roster.
- Groups are identified by a 32-hex id; names are local labels (rename freely, duplicates error).
- Cooperative membership: each message carries its sender's roster, receivers adopt it.
- Real leave protocol: members are notified, stragglers' copies are refused with a signed negative-ack, and the refusal corrects the straggler's roster too. Rejoining works (
group join). - Roster size capped at 100 by default; relay-adjustable (
--max-group-size/RETALK_SERVER_MAX_GROUP_SIZE, advertised atGET /info). receive/history/showgaingroup/group_idfields and a--grouproom view (one color per sender).
New default relay: relay.retalk.dev (#30)
- The built-in default relay is now
https://relay.retalk.dev. retalk-server --audience(andRETALK_SERVER_AUDIENCE) accept a comma-separated list, so a relay can serve old and new URLs during a domain move. The public relay answers both; identities that saved the old URL keep working.
show, --save, and the web view
retalk show USER PEERrenders a saved conversation as a terminal chat (--followkeeps it live);show USER --group NAMErenders a room.retalk show USER --web [--port N](#32) serves all saved conversations as a local web app: sidebar plus chat bubbles, live-updating, 127.0.0.1-only, guarded by a per-run URL token.- The save flag is now
--saveon send/receive (RETALK_SAVE_MESSAGE=1unchanged); the README documents message history (#31).
JSON standard
- Group send receipt documented:
{"id","group","group_id","sent","failed"}, exit 2 on partial failure;group_leavecontrol records; group fields on messages.
Full test suite: 71 tests.