Commit Graph

  • 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