Commit Graph

  • 78035bfc64 feat(server): DELETE /api/dm/:id/members/:targetUserId — owner kick Jannis Braun 2026-05-10 18:35:29 +02:00
  • a06776fd86 feat(server): PATCH /api/dm/:id — group name + icon update Jannis Braun 2026-05-10 18:23:48 +02:00
  • 096f12daf2 fix(federation): queueGroupMetadataRelay tighter http(s) check + caller contract note Jannis Braun 2026-05-10 18:13:12 +02:00
  • 4d97dd1253 feat(federation): queueGroupMetadataRelay helper + outbox-worker reconstruction Jannis Braun 2026-05-10 18:07:32 +02:00
  • 2afe230de0 feat(shared): group_metadata_update event + extended FederationGroupPayload (with safe defaults at producers) Jannis Braun 2026-05-10 18:00:07 +02:00
  • f2542fd849 feat(db): dm_channels.name/icon/metadata_updated_at Jannis Braun 2026-05-10 17:58:00 +02:00
  • e4717ef733 feat(shared): group DM name + icon validation constants Jannis Braun 2026-05-10 17:56:49 +02:00
  • f01c5aba8c feat(ui): reusable AvatarStack with +N badge and single-member group affordance Jannis Braun 2026-05-10 17:49:54 +02:00
  • 724ba31da0 test(server): hermetic env defaults — tests no longer require local .env Jannis Braun 2026-05-10 17:42:22 +02:00
  • 6fb38d391c feat(mobile): chat polish — floating composer + iOS keyboard handling + bottom-sheet drag-close + file-chip overflow Jannis Braun 2026-05-08 10:23:32 +02:00
  • cdb4b5f41f feat(mobile): loading skeleton parity + mascot-flash settle gate Jannis Braun 2026-05-08 10:22:59 +02:00
  • 71b383ce7f fix(mobile): voice join flow — correct screen key + remove desktop PiP from mobile branch Jannis Braun 2026-05-07 23:44:34 +02:00
  • 74ccf20308 feat(mobile): Wave 5 — voice-join camera preview + Electron settings entries + toast positioning Jannis Braun 2026-05-07 23:44:06 +02:00
  • d9c9f18b20 fix(mobile): Spaces tab remembers last-selected space across DM/Friends/Settings detours Jannis Braun 2026-05-07 23:00:01 +02:00
  • f733e39b4a fix(mobile): suppress iOS Safari auto-zoom on every input + contenteditable Jannis Braun 2026-05-07 22:59:41 +02:00
  • fb9fe326c4 feat(mobile): Wave 4 — RegisterPage responsive + TransferIndicator on settings + MessageInput sheets Jannis Braun 2026-05-07 22:58:57 +02:00
  • 8544f83225 refactor: drop unwired ConnectInstanceModal Jannis Braun 2026-05-05 23:24:19 +02:00
  • 438e7fb113 fix(storage): StoragePanel rows wrap on narrow viewports Jannis Braun 2026-05-05 23:24:10 +02:00
  • 899dc8b601 feat(settings/mobile): Voice & Video adaption + chat header username normalization Jannis Braun 2026-05-05 23:24:03 +02:00
  • fc9a07523f fix(mobile): SpaceInviteCard Join lands on Spaces tab; skip auto-channel-redirect Jannis Braun 2026-05-05 23:23:46 +02:00
  • e2d938e6c0 feat(mobile): admin reach + post-mount routing + RegistrationPanel modals → Modal Jannis Braun 2026-05-05 23:23:37 +02:00
  • 69cd2dc537 chore: ignore .playwright-mcp/ session artifacts Jannis Braun 2026-05-05 20:55:10 +02:00
  • 40c27ed90f fix(chat): apply loadMessages dedup to force=true callers as well Jannis Braun 2026-05-05 20:52:05 +02:00
  • a189cbfba3 fix(chat): dedup parallel loadMessages/loadMoreMessages per channel Jannis Braun 2026-05-05 20:47:03 +02:00
  • d793ab8f78 fix(message-list): sticky pagination skeleton on channel switch Jannis Braun 2026-05-05 19:56:26 +02:00
  • 97a8d982d5 Merge feat/s2s-federated-friends-presence-username Jannis Braun 2026-05-05 16:48:19 +02:00
  • 1effb1c53f fix: live presence on freshly-friended remotes + green dot in same session Jannis Braun 2026-05-05 16:44:22 +02:00
  • d2bd7987c1 fix(federation): include presenceUpdate in outbox-to-relay event rebuild Jannis Braun 2026-05-05 16:28:07 +02:00
  • ba0f8637f5 docs(federation): document username on profile_update + new presence_update relay + stub backfill Jannis Braun 2026-05-05 16:19:03 +02:00
  • 1cb151d3a9 feat(federation): peer-lifecycle presence hooks (snapshot on activate, mark-offline on deactivate) Jannis Braun 2026-05-05 16:12:22 +02:00
  • ad1a0f7164 fix(presence): broadcast presence_update to friends + DM members + space members Jannis Braun 2026-05-05 16:06:45 +02:00
  • 53fe7d2b53 feat(federation): process inbound presence_update relay events Jannis Braun 2026-05-05 16:03:18 +02:00
  • 613424e1c7 feat(federation): queue S2S presence_update on auth/disconnect/status/activity changes Jannis Braun 2026-05-05 16:01:28 +02:00
  • bdbc90ebd2 feat(federation): backfill snowflake-named replicated-user stubs Jannis Braun 2026-05-05 15:57:37 +02:00
  • b2faf5afaa feat(federation): add /users/by-home-id reverse lookup for stub backfill Jannis Braun 2026-05-05 15:52:07 +02:00
  • 097eb9a2ef feat(federation): preserve effective displayName across profile_update relay Jannis Braun 2026-05-05 15:48:56 +02:00
  • 1d353c994b fix(federation): create replicated-user stubs with realname@domain when hint provided Jannis Braun 2026-05-05 15:46:26 +02:00
  • 702d539e23 fix(register): read home JWT from localStorage so step-2 avatar uploads Jannis Braun 2026-05-05 12:53:48 +02:00
  • 49e9047005 feat(client-federation): user-view cache for cross-instance DM render Jannis Braun 2026-05-05 01:59:05 +02:00
  • fb96b1457a fix(ui): paint avatar fallback gradient before broken-img onError Jannis Braun 2026-05-05 01:58:29 +02:00
  • 06498836bb fix(federation): gate registry PUT on successful initial GET Jannis Braun 2026-05-05 00:20:51 +02:00
  • c05c04181d fix(chat): keep scroll container mounted during initial-load skeleton Jannis Braun 2026-05-05 00:19:00 +02:00
  • b3cbe9403f build(desktop): add electronbuild.sh — multi-platform installer build Jannis Braun 2026-05-04 00:48:20 +02:00
  • 52b5f8e2b1 chore(brand): refresh app icons + add brand source artwork Jannis Braun 2026-05-04 00:48:11 +02:00
  • c7eb14d38e test(federation-identity): #18 unrelated federated user untouched Jannis Braun 2026-05-04 00:32:48 +02:00
  • dfd3c26922 test(federation-identity): #17 mixed-result fan-out Jannis Braun 2026-05-04 00:32:40 +02:00
  • ec37b241d9 test(federation-identity): #16 member_left WS broadcast on full delete Jannis Braun 2026-05-04 00:29:24 +02:00
  • d917ff5354 test(federation-identity): #15 rate limit 5/15min Jannis Braun 2026-05-04 00:26:35 +02:00
  • 8e3fa1d5aa test(federation-identity): #14 S2S idempotency Jannis Braun 2026-05-04 00:23:51 +02:00
  • 27b6a3f912 test(federation-identity): #13 attribution guard rejects mismatched origin Jannis Braun 2026-05-04 00:23:02 +02:00
  • 21b413f9bd test(harness): use DISABLE_RATE_LIMITS in spawned instances + rate-limit-enabled variant Jannis Braun 2026-05-04 00:18:24 +02:00
  • 22b01c35f5 feat(server): DISABLE_RATE_LIMITS env replaces NODE_ENV-based bypass Jannis Braun 2026-05-04 00:17:10 +02:00
  • f4c9ed880f test(federation-identity): #9 unreachable / #10 no_active_peer Jannis Braun 2026-05-04 00:14:09 +02:00
  • b5df3d5075 test(federation-identity): #7 #8 — owned-spaces 409 + transfer-and-retry Jannis Braun 2026-05-04 00:13:14 +02:00
  • 22daaafb63 test(federation-identity): #2 #4 #6 — all-remotes fan-out variants Jannis Braun 2026-05-04 00:06:44 +02:00
  • 3c0e024213 test(harness): document why peerInstances inserts two rows per direction Jannis Braun 2026-05-03 23:57:18 +02:00
  • d55e85d2c5 feat(federation): PUBLIC_ORIGIN env override for getOurOrigin Jannis Braun 2026-05-03 23:57:06 +02:00
  • c5e3d36689 test(federation-identity): #3 soft / #5 full — DB cascade verification + setup fixture Jannis Braun 2026-05-03 23:46:20 +02:00
  • 957cfd9094 test(federation-identity): #1 leave mode — registry cleaned, remote untouched, no S2S call Jannis Braun 2026-05-03 23:38:02 +02:00
  • b62ffdf03b test(federation-identity): #11 invalid mode / #12 empty origins Jannis Braun 2026-05-03 23:35:15 +02:00
  • 2df346cf03 test(federation-identity): scaffold + harness boot smoke Jannis Braun 2026-05-03 23:34:57 +02:00
  • a2fadf7e93 test(harness): wsListener helper for capturing real WS events Jannis Braun 2026-05-03 23:30:39 +02:00
  • e06b5fec3c test(harness): testUsers helpers — registerLocal + createFederatedUser via production endpoints Jannis Braun 2026-05-03 23:26:47 +02:00
  • 5fe6e7f225 test(harness): hmacSign + seedSpaceWithStubOwner helpers Jannis Braun 2026-05-03 23:21:53 +02:00
  • e95d3ef065 test(harness): read-only DB inspector helpers Jannis Braun 2026-05-03 23:20:59 +02:00
  • db70064a5a test(harness): seedPeer helpers — peer pair + unreachable peer Jannis Braun 2026-05-03 23:20:30 +02:00
  • cd6c51f893 test(harness): N-remote child-process harness + log-tail helpers Jannis Braun 2026-05-03 23:11:11 +02:00
  • c25aecc81b chore: add test scripts for federation identity deletion suite Jannis Braun 2026-05-03 23:07:37 +02:00
  • f661d112fa chore: gitignore tests/.tmp/ and tests/reports/ scratch dirs Jannis Braun 2026-05-03 23:07:22 +02:00
  • 35072dc11f docs: correct soft-mode purge claim — orphaned DMs always purge regardless of mode Jannis Braun 2026-05-03 23:03:09 +02:00
  • 03165a3b7d feat(server): test-only seed-peer route gated by NODE_ENV+ENABLE_TEST_ROUTES Jannis Braun 2026-05-03 22:54:43 +02:00
  • 3dbf4dab5e feat(server): DISABLE_FEDERATION_WORKERS env gate for test isolation Jannis Braun 2026-05-03 22:46:17 +02:00
  • 2b0f93ec62 polish(desktop): rename userData folder to Backspace with first-launch migration Jannis Braun 2026-05-03 14:36:34 +02:00
  • 309484dca9 fix(testing): smoke-recovery.sh — correct userData path, http.server scenarios, missing helper Jannis Braun 2026-05-03 14:02:05 +02:00
  • 833dedd4a1 fix(desktop): boot-timer race — handle rendererReady ping arriving before arm Jannis Braun 2026-05-03 13:51:04 +02:00
  • 7e30db3773 feat(testing): smoke-test script + VITE_FORCE_BOOT_STALL gate Jannis Braun 2026-05-03 13:21:54 +02:00
  • fff39f8d76 polish(desktop): non-destructive Change Instance + recovery enter/exit logs Jannis Braun 2026-05-03 13:16:55 +02:00
  • cff9a8e2cf polish(desktop): final cross-cutting fixes Jannis Braun 2026-05-03 12:19:51 +02:00
  • 6356e2e526 docs(desktop): document Recovery Mode and updated Auto-Update integration Jannis Braun 2026-05-03 12:13:15 +02:00
  • d21459129c polish(desktop): recovery.html — await version alongside state in init Jannis Braun 2026-05-03 12:09:06 +02:00
  • d2a225a4b9 feat(desktop): add recovery.html UI page Jannis Braun 2026-05-03 12:05:40 +02:00
  • 6929c460aa feat(web): ping rendererReady from App.tsx and ErrorBoundary Jannis Braun 2026-05-03 12:01:28 +02:00
  • ece81a2b71 feat(desktop): add recovery bridge methods to preload + types Jannis Braun 2026-05-03 11:57:51 +02:00
  • d8266e62da feat(desktop): wire auto-updater events into recovery store Jannis Braun 2026-05-03 11:52:21 +02:00
  • 56677da8ad refactor(desktop): pass trayActions to buildAppMenuTemplate, remove appMenuActions duplication Jannis Braun 2026-05-03 11:49:42 +02:00
  • bb25a3ba5e feat(desktop): wire recovery store into main process Jannis Braun 2026-05-03 04:30:58 +02:00
  • 1c4bde3029 feat(desktop): attach Electron webContents handlers for recovery detection Jannis Braun 2026-05-03 04:25:03 +02:00
  • 0c489701fc feat(desktop): add enterRecoveryMode and recovery action funnel Jannis Braun 2026-05-03 04:20:22 +02:00
  • 323b9017d7 feat(desktop): add boot-completion timer with packaged-only and URL-protocol guards Jannis Braun 2026-05-03 04:16:22 +02:00
  • a9122d1fdf feat(desktop): add macOS app menu template builder Jannis Braun 2026-05-03 04:12:28 +02:00
  • 172f53e3a5 feat(desktop): add tray menu template builder with state-driven labels Jannis Braun 2026-05-03 04:10:11 +02:00
  • b5273b596a feat(desktop): add extractErrorCode helper for updater errors Jannis Braun 2026-05-03 04:07:46 +02:00
  • d3b3abacff harden(desktop): RecoveryStateStore listener safety + frozen state Jannis Braun 2026-05-03 04:06:43 +02:00
  • 15dfa0a68c feat(desktop): add RecoveryStateStore with subscriber lifecycle Jannis Braun 2026-05-03 04:03:07 +02:00
  • dcbae46e0e refactor(desktop): extract instance-URL helpers to instanceUrl.ts Jannis Braun 2026-05-03 03:58:00 +02:00
  • 3dc3043faf Merge branch 'feature/audio-device-ux': polish audio device UX Jannis Braun 2026-05-03 02:31:27 +02:00
  • 19d42445b0 polish(web): clear device lists on permission revoke; document probe-constraint omission Jannis Braun 2026-05-03 02:09:13 +02:00
  • 4044e910c3 docs(voice): add Audio Device Selection section parallel to Camera Device Selection Jannis Braun 2026-05-03 02:01:09 +02:00
  • 6905071459 refactor(web): UserAreaPanel uses useAudioDevices — kills unconditional getUserMedia probe; reuses shared DropdownItem Jannis Braun 2026-05-03 01:56:24 +02:00
  • ff8dcc28ea feat(web): wire AudioInput/Output sections into Voice & Video settings; fix EC tooltip Jannis Braun 2026-05-03 01:52:20 +02:00