Extract processRelayEvents() from the relay HTTP handler and call it directly in runInitialSyncForNewPeers(), eliminating the HTTP round-trip through public DNS that failed on networks without hairpin NAT.
- Document extractDomain, findFederatedUser, updated resolveOrCreateReplicatedUser - Update origin normalization table to reflect bare domain storage - Mark Known Issue #2 (duplicate user stubs) as resolved - Document federated stub upgrade behavior in auth registration flow
- Add complete docs/systems/ reference (18 system docs) - Add federation relay status doc and prior spec/plan docs - Remove superseded docs/federation-dm-s2s.md (replaced by docs/systems/federation.md) - CLAUDE.md updates - Minor fixes in social.ts, types.ts, AddDmMemberModal, NewDmModal, UserSettings