Skip to content

Follow-up: signed nickname calling, group chat, and mesh lab configs#90

Open
deborahnelson8788726 wants to merge 6 commits into
mainfrom
feat/regen-final
Open

Follow-up: signed nickname calling, group chat, and mesh lab configs#90
deborahnelson8788726 wants to merge 6 commits into
mainfrom
feat/regen-final

Conversation

@deborahnelson8788726

Copy link
Copy Markdown
Collaborator

Follow-up to #89.

Summary

  • add per-device signed identity, unique nickname lookup, multi-device linking, and group chat
  • route calls over LiveKit/WebRTC or encrypted local/mesh UDP while preserving the latest ringing, group, BWE, and HMAC INVITE protections
  • add reproducible three-node mesh lab configs
  • reconcile iOS/macOS Xcode project and signing settings

Validation

  • iOS Simulator build: passed
  • iOS unit tests: passed
  • macOS build: passed
  • plist validation and git diff check: passed
  • cargo test --workspace: blocked by pre-existing t27-generated Rust errors (Vec without a generic type and multipath_routing bool/u32 output); no generated files were hand-edited

SSD DDD and others added 6 commits July 22, 2026 17:02
Add per-device P-256 identity, unique nickname discovery, account linking, presence-aware LiveKit call fan-out, and signed mesh invitations. Persist account-level group chats with membership checks and idempotent messages, expose the same UI on iOS and macOS, and add service and client tests.
Clear stale CallKit transactions before new calls, use LiveKit state for the call UI, and recover remote video subscriptions that arrive before the delegate callback. Add focused connection diagnostics. Verified on ssd26 and t27_dev with bidirectional audio/video for 53 seconds and zero RTP packet loss.
WAVE #15 authenticated the INVITE but left it replayable: a valid HMAC only
proves the sender knew the PSK once, so a sniffed INVITE could be replayed to
force a ring/auto-join later. Add a TS_MS field to the (HMAC-covered) payload and
reject any INVITE whose timestamp is missing or outside a +/-15s window. Verified
live: a replayed INVITE (valid MAC, 60s-old TS) -> 0 auto-joins; a fresh one ->
auto-joins. Both platforms; smoke updated and still PASSes. Residual: a 15s window
allows an immediate replay (a seen-MAC cache would close it fully) - left as an option.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@deborahnelson8788726
deborahnelson8788726 marked this pull request as ready for review July 22, 2026 17:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant