-
4b398cf45a
types(web): unify FederationPeer with shared type
Jannis Braun
2026-04-21 22:21:47 +02:00
-
010aa7f7ca
fix(schema): normalize federation_peers.consecutive_failures to NOT NULL
Jannis Braun
2026-04-21 22:21:06 +02:00
-
0d74d1d112
perf(federation-worker): tighten health-check cadence to 15 min
Jannis Braun
2026-04-21 22:16:09 +02:00
-
-
9400189a8d
Merge branch 'feat/outbox-auth-failure-recovery'
Jannis Braun
2026-04-21 22:04:31 +02:00
-
-
e236d0730e
docs(systems): document needs_attention state and Reset peering action
Jannis Braun
2026-04-21 21:11:17 +02:00
-
64d231d782
audit(federation): verify no parallel hmac-wipe-on-401 paths
Jannis Braun
2026-04-21 21:07:24 +02:00
-
5a1e354ae1
feat(federation-ui): add needs_attention pill and Reset peering action
Jannis Braun
2026-04-21 21:02:49 +02:00
-
8a084b0652
feat(api): add federation.resetPeer client method
Jannis Braun
2026-04-21 20:58:59 +02:00
-
0c2864a3d2
feat(federation): add POST /api/federation/peers/:id/reset
Jannis Braun
2026-04-21 20:56:26 +02:00
-
54f32657e5
test(federation): add route-level tests for POST /peers/:id/reset
Jannis Braun
2026-04-21 20:52:14 +02:00
-
ceaa08b4bd
fix(federation): extend /peer/accept safeguard to cover needs_attention
Jannis Braun
2026-04-21 20:49:19 +02:00
-
48dbe32a69
fix(federation-worker): reset consecutive_auth_failures on successful delivery
Jannis Braun
2026-04-21 20:46:52 +02:00
-
012e489bc7
fix(federation-worker): auth failures must not increment consecutive_failures
Jannis Braun
2026-04-21 20:45:33 +02:00
-
e5afd376d2
fix(federation-worker): replace 401/403 wipe-and-rehandshake with bounded retry
Jannis Braun
2026-04-21 20:39:37 +02:00
-
695ea0849d
refactor(federation-worker): extract buildContextMapForPeer helper
Jannis Braun
2026-04-21 20:35:51 +02:00
-
617d71ab4b
feat(federation): add evaluateAuthFailure decision function
Jannis Braun
2026-04-21 20:32:38 +02:00
-
1df25737b6
types: align FederationPeer union with actual server statuses
Jannis Braun
2026-04-21 20:29:14 +02:00
-
0d3343ab6d
feat(schema): add consecutive_auth_failures column on federation_peers
Jannis Braun
2026-04-21 18:40:39 +02:00
-
-
85668d4da8
Merge branch 'feat/call-relay-auto-peering'
Jannis Braun
2026-04-21 16:27:50 +02:00
-
-
9cdc5921d9
docs: clarify that livekit_unavailable is emitted from sendFederatedCallStart, not sendCallRelay
Jannis Braun
2026-04-21 14:08:31 +02:00
-
740dae298d
docs: document call-relay auto-peering and dm_call_undeliverable surface
Jannis Braun
2026-04-21 14:05:59 +02:00
-
6a7d1fb38c
feat(web): handle dm_call_undeliverable — toast + tear down outgoing call on terminal
Jannis Braun
2026-04-21 14:02:08 +02:00
-
44a44163af
polish(server): consolidate federation_peers queries, narrow targetedPeers map, use return values from Promise.all to drop non-null assertion
Jannis Braun
2026-04-21 14:00:29 +02:00
-
f83c2af357
feat(server): aggregate call-start failures into dm_call_undeliverable
Jannis Braun
2026-04-21 13:53:34 +02:00
-
53483d6981
polish(server): align sendCallRelay timeout message with codebase convention; use .then on sendTypingRelay fire-and-forget
Jannis Braun
2026-04-21 13:49:20 +02:00
-
21f220739c
feat(server): sendCallRelay auto-peers on demand, typing passes peeringTimeoutMs:0
Jannis Braun
2026-04-21 13:45:29 +02:00
-
4ddb09edf1
fix(server): racePeering normalizes handshake rejections and only warns on timeout win
Jannis Braun
2026-04-21 13:41:44 +02:00
-
b22a7bd0c6
feat(server): add racePeering helper with tests
Jannis Braun
2026-04-21 13:37:30 +02:00
-
1be544bbd5
feat(shared): add dm_call_undeliverable event type
Jannis Braun
2026-04-21 13:33:52 +02:00
-
-
852e3657f9
fix: dedup federation membership events by (sourceInstance, messageId)
Jannis Braun
2026-04-21 01:06:43 +02:00
-
aeebf79feb
fix: federated friend request routed to wrong user with same name
Jannis Braun
2026-04-21 00:36:15 +02:00
-
3d8709d20a
feat: real-time Federation panel updates via WS events
Jannis Braun
2026-04-20 18:28:10 +02:00
-
6afad97bd1
fix: revert outgoing peering blocks — autoAcceptPeering only gates incoming
Jannis Braun
2026-04-20 18:08:05 +02:00
-
165fda44a3
fix: accept incoming handshake for awaiting_approval peers to break approval ping-pong
Jannis Braun
2026-04-20 18:01:47 +02:00
-
072858cbbb
fix: multiple federation peering bugs
Jannis Braun
2026-04-20 17:54:00 +02:00
-
b40c57f227
fix: call resolvePendingPeers before early return in processOutboxTick
Jannis Braun
2026-04-20 17:41:34 +02:00
-
34fe9115b9
fix: compute target origins for 1-on-1 DMs so pending peers are created
Jannis Braun
2026-04-20 17:15:22 +02:00
-
0aec716d4c
fix: gate all client DM events on active S2S peer status
Jannis Braun
2026-04-20 17:05:57 +02:00
-
83b682d501
fix: block auto-peering initiation when autoAcceptPeering is disabled
Jannis Braun
2026-04-20 16:51:44 +02:00
-
8be30dc95f
fix: check 202 before response.ok so queued approval isn't treated as accepted
Jannis Braun
2026-04-20 16:41:56 +02:00
-
e4e0d0d1f1
fix: handle 403 (inactive peer) alongside 401 for stale peer re-handshake
Jannis Braun
2026-04-20 16:32:24 +02:00
-
ce33ccf69e
fix: reset stale peer to pending on 401 so ensurePeered re-handshakes
Jannis Braun
2026-04-20 16:21:53 +02:00
-
ea8f786c2b
docs: document pending peering approval queue, new endpoints, and awaiting_approval status
Jannis Braun
2026-04-20 15:16:07 +02:00
-
b0d3ee93b0
fix: restore approvalCount state variable in FederationPanel
Jannis Braun
2026-04-20 15:11:47 +02:00
-
9e3c411e80
feat: badge count on Federation tab for pending approval requests
Jannis Braun
2026-04-20 15:10:56 +02:00
-
975ef93cc0
feat: pending approval requests section in Federation panel
Jannis Braun
2026-04-20 15:10:07 +02:00
-
39028ae56f
feat: two-variant DM unreachable indicator for rejected vs awaiting_approval
Jannis Braun
2026-04-20 15:06:48 +02:00
-
c3fe1bc9d4
feat: track awaitingApprovalPeerOrigins and show login toast for pending approvals
Jannis Braun
2026-04-20 15:06:00 +02:00
-
12bb11e9de
feat: add approval request API methods to client
Jannis Braun
2026-04-20 15:05:03 +02:00
-
33c45e3184
feat: add awaitingApprovalPeerOrigins and pendingApprovalCount to ready payload
Jannis Braun
2026-04-20 15:03:29 +02:00
-
5f50ffc5f2
feat: janitor expiry for peer approval requests with signed denial
Jannis Braun
2026-04-20 15:01:31 +02:00
-
1920324469
feat: add admin approval-request endpoints (list, approve, deny)
Jannis Braun
2026-04-20 14:59:52 +02:00
-
b407e38730
feat: add peer/denied S2S endpoint and export pushPeerRejectedEvent
Jannis Braun
2026-04-20 14:56:31 +02:00
-
5e48d67cb0
feat: queue auto-peer requests for admin approval when autoAcceptPeering is off
Jannis Braun
2026-04-20 14:54:35 +02:00
-
9877d78a3a
feat: handle 202 queued response and awaiting_approval status in ensurePeered
Jannis Braun
2026-04-20 14:51:59 +02:00
-
14041e9d11
feat: add peer_approval_requests table and migration
Jannis Braun
2026-04-20 14:50:08 +02:00
-
b434a736a8
fix: address code review findings (C1, I1, I2)
Jannis Braun
2026-04-09 14:08:54 +02:00
-
7366b56fdf
docs: document auto-peering, rejected status, autoAcceptPeering setting
Jannis Braun
2026-04-09 14:01:11 +02:00
-
70a421864c
feat: DM unreachable member indicators and admin auto-accept peering toggle
Jannis Braun
2026-04-09 13:58:45 +02:00
-
4285e44d2d
feat: client ensurePeered API, connection flow swap, WS event handlers for peer rejection
Jannis Braun
2026-04-09 13:56:18 +02:00
-
5f700c1a51
feat: expose autoAcceptPeering in admin settings and add rejectedPeerOrigins to ready payload
Jannis Braun
2026-04-09 13:53:26 +02:00
-
83771b863c
feat: outbox worker resolves pending peers and pushes rejection events
Jannis Braun
2026-04-09 13:51:37 +02:00
-
d5a6d470f9
feat: queueOutboxEvent creates pending peer placeholders, skips rejected/revoked
Jannis Braun
2026-04-09 13:49:04 +02:00
-
63a7f0c922
fix: use proper HTTP status codes on peer/ensure (400 for validation, 429 for rate limit)
Jannis Braun
2026-04-09 13:47:30 +02:00
-
051646763a
feat: add autoAcceptPeering gate on peer/accept and POST /api/federation/peer/ensure endpoint
Jannis Braun
2026-04-09 13:46:15 +02:00
-
f802528688
feat: add ensurePeered() core function with race deduplication
Jannis Braun
2026-04-09 13:40:49 +02:00
-
abd12223b1
feat: add federation_peer_rejected/active WS types and autoAcceptPeering setting
Jannis Braun
2026-04-09 13:38:41 +02:00
-
b5dffba7ef
feat: add autoAcceptPeering instance setting with drizzle migration
Jannis Braun
2026-04-09 13:37:49 +02:00
-
ce0b2d0e15
feat: allow any group DM member to add friends, not just owner
Jannis Braun
2026-04-09 02:15:44 +02:00
-
016ca2c59b
fix: use canonical identity for federated friend/request dedup
Jannis Braun
2026-04-09 01:23:49 +02:00
-
3789ece0ca
chore: add db:generate script for drizzle-kit migrations
Jannis Braun
2026-04-09 00:37:10 +02:00
-
e467a878d0
chore: remove completed backfill calls (thumbnails, media dimensions)
Jannis Braun
2026-04-09 00:33:15 +02:00
-
fec0502a2f
refactor: replace createTables() with Drizzle migrate()
Jannis Braun
2026-04-09 00:32:01 +02:00
-
3acaea2e45
refactor: replace 2100-line migration system with ensureDefaults + baseline
Jannis Braun
2026-04-09 00:30:00 +02:00
-
450d96407f
feat: add drizzle-kit config and generate initial migration
Jannis Braun
2026-04-09 00:26:53 +02:00
-
be2c16efa4
fix: use bare column names in partial index WHERE clauses
Jannis Braun
2026-04-09 00:25:36 +02:00
-
ac03151b61
feat: add database index definitions to Drizzle schema
Jannis Braun
2026-04-09 00:19:10 +02:00
-
213d05a810
feat: fix cross-instance friends list for federated users
Jannis Braun
2026-04-08 18:41:13 +02:00
-
d58464fe95
docs: document profile image file replication in federation spec
Jannis Braun
2026-04-08 16:59:55 +02:00
-
0db5e4e453
feat: download profile images locally in processProfileUpdateEvent
Jannis Braun
2026-04-08 16:57:06 +02:00
-
fd2254c9c4
feat: add downloadProfileAsset helper for profile image replication
Jannis Braun
2026-04-08 16:54:07 +02:00
-
adc2a1cb01
docs: update voice.md with client-side federated call implementation details
Jannis Braun
2026-04-08 15:49:20 +02:00
-
a1a7c2ff18
fix: null roomRef before destroyRoom to suppress teardown sounds
Jannis Braun
2026-04-08 15:39:21 +02:00
-
b03df992dc
fix: SoundController isSelf must check BOTH local ID and homeUserId
Jannis Braun
2026-04-08 15:33:51 +02:00
-
5ab1f7b89d
fix: SoundController identity mismatch for federated users
Jannis Braun
2026-04-08 15:25:15 +02:00
-
1468b68199
fix: skip participant leave sounds during self-disconnect
Jannis Braun
2026-04-08 15:05:49 +02:00
-
22aa1e3f66
fix: batch participants + isLiveKitConnected on disconnect to prevent double sound
Jannis Braun
2026-04-08 14:59:08 +02:00
-
5b1c847e57
fix: exclude acting user from federated call end/reject broadcast
Jannis Braun
2026-04-08 14:49:29 +02:00
-
9e7e068df7
chore: remove federated call diagnostic logging
Jannis Braun
2026-04-08 14:44:27 +02:00
-
782f5d280d
debug: log federated call relay params
Jannis Braun
2026-04-08 14:38:05 +02:00
-
27514e1596
fix: use wss:// LiveKit URL in federated call relay, not https://
Jannis Braun
2026-04-08 14:30:48 +02:00
-
c037803c5a
fix: acceptor sets activeDmCall in click handler, not server response
Jannis Braun
2026-04-08 14:23:41 +02:00
-
aae0b1a74e
fix: comprehensive client-side session management for federated DM calls
Jannis Braun
2026-04-08 14:12:45 +02:00
-
86fe713a7c
fix: cross-instance event contamination in federated DM calls
Jannis Braun
2026-04-08 13:50:25 +02:00
-
94461f8967
debug: add token endpoint logging
Jannis Braun
2026-04-08 13:39:09 +02:00
-
f6af6bf579
debug: more diagnostic logging in processDmCallAcceptEvent
Jannis Braun
2026-04-08 13:32:41 +02:00
-
70dbe04e6d
debug: add diagnostic logging to DM call accept flow
Jannis Braun
2026-04-08 13:29:45 +02:00
-
df2701b17f
fix: route call accept/reject through delivering WS, not host URL
Jannis Braun
2026-04-08 13:15:38 +02:00
-
5265117d29
fix: three root causes for federated DM call failures
Jannis Braun
2026-04-08 12:53:58 +02:00
-
9ad240495f
fix: prevent auto-connect on dm_call_accepted for non-caller instances
Jannis Braun
2026-04-08 12:21:27 +02:00