Commit Graph

  • 5b8af14e12 feat(web): AudioOutputSection — output picker, volume, test tone, lifecycle-aware sinkId check Jannis Braun 2026-05-03 01:47:49 +02:00
  • 8e67f1d553 fix(web): mic meter reacts to AudioContext lifecycle; extract picker primitives Jannis Braun 2026-05-03 01:43:01 +02:00
  • 3aea8210bd feat(web): AudioInputSection — full input picker with level meter and resolved-default hint Jannis Braun 2026-05-03 01:37:37 +02:00
  • 8907bb305d fix(web): mic-loss recovery uses 'could not be restored' for unclassified errors Jannis Braun 2026-05-03 01:35:07 +02:00
  • 63bf9e684c fix(web): mic-loss detection observes upstream stream, not published clone Jannis Braun 2026-05-03 01:20:13 +02:00
  • 9a26513009 feat(web): mic-track-loss recovery — probe, attempt re-acquire, toast Jannis Braun 2026-05-03 01:09:04 +02:00
  • 674d011d3c fix(web): debounce devicechange handler and gate listener on baseline seeding Jannis Braun 2026-05-03 01:05:37 +02:00
  • d992b2bb41 feat(web): seamless audio hot-plug — re-acquire live stream + toast new devices Jannis Braun 2026-05-03 01:01:03 +02:00
  • 2726cc5c5a feat(web): expose AudioManager helpers for device introspection + test tone Jannis Braun 2026-05-03 00:57:26 +02:00
  • a1ebb23264 feat(web): add useAudioDevices hook for permission-aware audio enumeration Jannis Braun 2026-05-03 00:51:20 +02:00
  • c0e71b1ded fix(federation): hydrate downloads replicated avatars locally + backfill stale URL rows Jannis Braun 2026-05-02 22:45:27 +02:00
  • c0fd7e3a75 feat(web): home tile uses primary purple when active/hovered, grey when idle Jannis Braun 2026-05-02 22:12:18 +02:00
  • 12a71a12d4 fix(web): close writable on download pause/abort so partial bytes flush (resume continues from offset) Jannis Braun 2026-05-02 21:13:09 +02:00
  • f33ebe2aa7 chore(web): drop unused React import; static-import idbHandles consistently Jannis Braun 2026-05-02 20:54:50 +02:00
  • bc32eccc2d fix(server): CORS allows tus headers (federated uploads no longer blocked at preflight) Jannis Braun 2026-05-02 20:42:02 +02:00
  • 3a050f475b fix(web): tus uploads use per-origin token (federation auth) Jannis Braun 2026-05-02 20:37:17 +02:00
  • 33cfc66ac4 fix(web): boot rehydrate normalizes transfers; paused has its own visual Jannis Braun 2026-05-02 19:10:29 +02:00
  • 61be9d013f fix(web): hide Retry when blob unavailable; failed-state surfaces actionable error Jannis Braun 2026-05-02 18:58:05 +02:00
  • 2f0940c30b feat(admin): manual cleanup of stale tus upload sessions + visibility Jannis Braun 2026-05-02 18:44:19 +02:00
  • 4e5a440176 fix(web): server-side DELETE for failed/discarded uploads (no janitor wait) Jannis Braun 2026-05-02 18:22:45 +02:00
  • dd91f5f349 fix(web): retry-after-abort starts fresh tus session; preserve File past abort Jannis Braun 2026-05-02 18:18:07 +02:00
  • 61dea725a3 fix(web): polish failed-upload row — pill-shaped, content-width, proper button affordance Jannis Braun 2026-05-02 18:11:31 +02:00
  • a58b7459fb fix(web): in-session pause/resume preserves File ref; aborted transfers flip bubble to failed Jannis Braun 2026-05-02 18:03:12 +02:00
  • 403c6e9075 fix(web): orchestrator dispatches eager-upload bubbles via pendingMessageStore subscribe Jannis Braun 2026-05-02 17:52:05 +02:00
  • b8da1c1778 docs(design): tray as .glass popover; radial-progress ring primitive Jannis Braun 2026-05-02 17:16:26 +02:00
  • 38a3d4fba8 docs(api,federation): tus upload endpoints; federation worker boundary note Jannis Braun 2026-05-02 17:16:00 +02:00
  • fb7add4f83 docs(uploads): tus protocol, three-store architecture, download pipeline, capability matrix Jannis Braun 2026-05-02 17:15:38 +02:00
  • 348800bfca feat(web): channel-header transfer indicator + global tray panel Jannis Braun 2026-05-02 17:11:41 +02:00
  • 0be69808e4 feat(web): right-click Save Video / Save Audio via transferStore Jannis Braun 2026-05-02 17:07:39 +02:00
  • aaa15cef88 feat(web): file-card download routes through transferStore Jannis Braun 2026-05-02 17:06:26 +02:00
  • d3f45dbda4 feat(web): saveImage routes through transferStore Jannis Braun 2026-05-02 17:05:51 +02:00
  • 2be243336b feat: all profile uploads through transferStore; delete legacy POST /api/uploads Jannis Braun 2026-05-02 16:46:29 +02:00
  • 727c51f659 feat(web): RegisterPage avatar uses transferStore + waitForTransfer helper Jannis Braun 2026-05-02 16:40:50 +02:00
  • 48d199515a feat(web): chatStore dedups WS echo against pendingMessageStore (FIFO) Jannis Braun 2026-05-02 16:37:22 +02:00
  • e534644e57 feat(web): Message renders pending-bubble overlay + retry/discard chrome Jannis Braun 2026-05-02 16:31:53 +02:00
  • 7b6586110d feat(web): MessageList interleaves pending bubbles by createdAtLocal Jannis Braun 2026-05-02 16:22:33 +02:00
  • b97326ef18 feat(web): MessageInput uses composerStore + transferStore (eager upload, FS handles) Jannis Braun 2026-05-02 16:09:24 +02:00
  • 65d8a19c87 feat(web): AttachmentProgress overlay component Jannis Braun 2026-05-02 16:02:47 +02:00
  • 5128a625b8 feat(web): pending-message orchestrator (TTL discard, deferred send, online retry) Jannis Braun 2026-05-02 15:53:23 +02:00
  • b01ad4edb8 feat(web): pendingMessageStore with FIFO dedup matcher and TTL discard Jannis Braun 2026-05-02 15:45:06 +02:00
  • c986f734ee feat(web): composerStore (per-channel draft + staged transfer ids) Jannis Braun 2026-05-02 15:37:08 +02:00
  • 2864d84a0f feat(web): transferStore.startDownload + pause/resume/abort with FS-handle path Jannis Braun 2026-04-30 02:16:38 +02:00
  • bde00e2d9f feat(web): transferStore upload + resume via tus-js-client Jannis Braun 2026-04-30 02:11:43 +02:00
  • bdfe7b453a feat(web): transferStore skeleton with versioned persistence Jannis Braun 2026-04-30 02:06:17 +02:00
  • 054f063f1f feat(web): IDB persistence + capability detection for FileSystemFileHandle Jannis Braun 2026-04-30 02:03:01 +02:00
  • 097976538d deps(web): add tus-js-client, idb, fake-indexeddb Jannis Braun 2026-04-30 02:00:43 +02:00
  • 2e6dabd7ff feat(server): janitor sweeps for tus expired uploads and stragglers Jannis Braun 2026-04-30 01:56:39 +02:00
  • 974fbf759e feat(server): tus upload endpoint at /api/files with auth, ownership, size, finalize hooks Jannis Braun 2026-04-30 01:24:45 +02:00
  • 21022eaa73 feat(server): tus hook helpers (metadata parse, extension extract, ownership check) Jannis Braun 2026-04-30 01:13:45 +02:00
  • 9902130916 feat(server): config keys for tus upload directory and expiration Jannis Braun 2026-04-30 01:11:34 +02:00
  • 4477554f8a deps(server): add @tus/server and @tus/file-store Jannis Braun 2026-04-30 01:08:26 +02:00
  • f538f1d92e fix(desktop): enable PulseAudio loopback flag so screen share starts on Linux Jannis Braun 2026-04-29 23:43:44 +02:00
  • e0861597bc fix(web): portal overlays into fullscreenElement so they render in voice fullscreen Jannis Braun 2026-04-29 23:32:14 +02:00
  • 1ed70a90b1 fix(dm): render system messages in sidebar preview instead of raw JSON Jannis Braun 2026-04-29 23:13:09 +02:00
  • 9aa97f4552 fix(web): joinByCode normalizes explicit home origin to local Jannis Braun 2026-04-29 22:52:47 +02:00
  • 85987a891c fix(web): SpaceInviteCard navigates to /channels/:spaceId (not the non-existent /spaces/:id) Jannis Braun 2026-04-29 22:44:35 +02:00
  • d8b08d8990 fix(web): SpaceInviteCard navigates to space on already-member instead of showing error Jannis Braun 2026-04-29 22:41:49 +02:00
  • bc66ddc633 fix(server): canonicalize spaceInstanceOrigin before storing payload Jannis Braun 2026-04-29 22:35:34 +02:00
  • 44e9a4234c fix(server): local-fast-path for invite snapshot — skip HTTP self-reach Jannis Braun 2026-04-29 22:29:44 +02:00
  • 5481eb9e7e fix(server): SSRF guard on cross-instance invite preview fetch Jannis Braun 2026-04-29 22:19:10 +02:00
  • 4476c55963 docs: invite friends overhaul — space_invite system message, relay type field, in-instance /join interception Jannis Braun 2026-04-29 22:11:56 +02:00
  • 65ca54f556 feat(web): useDeepLinkHandler also subscribes to onOpenInternalRoute Jannis Braun 2026-04-29 22:09:20 +02:00
  • 7d98558816 feat(web): push connected-instance origins to Electron main process Jannis Braun 2026-04-29 22:08:30 +02:00
  • b00d21df0e feat(desktop): preload exposes setConnectedOrigins + onOpenInternalRoute Jannis Braun 2026-04-29 22:07:26 +02:00
  • eb57d2fd5c feat(desktop): intercept own-instance /join URLs in setWindowOpenHandler Jannis Braun 2026-04-29 22:05:50 +02:00
  • a46d35f5f8 feat(web): InviteModal — friend picker + restyled share-link footer, drop deep link Jannis Braun 2026-04-29 22:02:23 +02:00
  • 1859f2963c feat(web): SystemMessage dispatches space_invite to SpaceInviteCard Jannis Braun 2026-04-29 21:55:06 +02:00
  • e351d53dd5 fix(web): SpaceInviteCard — real embed idiom and correct getApiForOrigin import path Jannis Braun 2026-04-29 21:52:20 +02:00
  • 82533c1434 feat(web): SpaceInviteCard component with snapshot/live/revoked render states Jannis Braun 2026-04-29 21:50:01 +02:00
  • 657cc0e1b9 feat(web): add dm.spaceInvite() api client method Jannis Braun 2026-04-29 21:44:40 +02:00
  • 7303c23b20 test(server): integration tests for POST /api/dm/space-invite Jannis Braun 2026-04-29 21:43:25 +02:00
  • 5cb0aa9d66 feat(server): POST /api/dm/space-invite endpoint with rate-limited per-friend invite Jannis Braun 2026-04-29 21:37:44 +02:00
  • 855410f88c feat(shared): add SpaceInviteRequest / SpaceInviteResponse / SpaceInviteSystemPayload Jannis Braun 2026-04-29 21:34:07 +02:00
  • 889dfe9b4a feat(server): add fetchSpaceInviteSnapshot helper for cross-instance preview fetch Jannis Braun 2026-04-29 21:33:19 +02:00
  • c4f84f8c68 test(federation): buildRelayPayload type-field forwarding Jannis Braun 2026-04-29 21:31:56 +02:00
  • a995bd4148 feat(federation): processCreateEvent inserts system-typed messages from relay Jannis Braun 2026-04-29 21:30:51 +02:00
  • 6c68b4b574 feat(federation): buildRelayPayload forwards system-typed messages Jannis Braun 2026-04-29 21:30:01 +02:00
  • 04c66c4bcf feat(federation): add optional type field to FederationRelayEvent.message Jannis Braun 2026-04-29 21:29:01 +02:00
  • 281e01713b Merge feat/registration-invites: registration toggles + invite links Jannis Braun 2026-04-29 03:07:44 +02:00
  • d31a9cf579 refactor(web): RegistrationPanel — glass-bubble modal buttons + clearer Revoke copy Jannis Braun 2026-04-29 03:01:47 +02:00
  • f0ac847d9e refactor(web): RegistrationPanel sibling parity — Edit/Reinstate redesign + Redemptions header Jannis Braun 2026-04-29 02:51:44 +02:00
  • a52bab4c16 refactor(web): CreateInviteModal — icon-badge header + uppercase section labels + dominant submit Jannis Braun 2026-04-29 02:47:44 +02:00
  • 526043a3b4 feat(web): RegistrationPanel sort + status filter via FilterDropdown Jannis Braun 2026-04-29 02:44:32 +02:00
  • b91bc89c58 refactor(web): RegistrationPanel InviteRow → collapsed/expanded model Jannis Braun 2026-04-29 02:40:33 +02:00
  • 3fdf501620 refactor(web): RegistrationPanel tab strip restyle + count badges Jannis Braun 2026-04-29 02:36:52 +02:00
  • 33547038f4 feat(invites): expose lastRedeemedAt on InviteLinkSummary Jannis Braun 2026-04-29 02:33:49 +02:00
  • 5abe13166a docs(systems): document invite-links + split registration gate Jannis Braun 2026-04-29 01:57:58 +02:00
  • a7c321a9d4 feat(web): show federated-registration warning banner in Connections add-instance form Jannis Braun 2026-04-29 01:49:32 +02:00
  • 641d4efcb9 fix(web): RegisterPage invite-fallback validation, IIFE preference, open-registration silence Jannis Braun 2026-04-29 01:46:48 +02:00
  • 0dae217787 feat(web): RegisterPage invite-token URL pickup + manual entry + closed-state UX Jannis Braun 2026-04-29 01:38:52 +02:00
  • 5b51980278 fix(web): make ConfirmDialog Escape capture-phase to prevent leaking to ancestor modals Jannis Braun 2026-04-29 01:26:38 +02:00
  • bde4d829ef feat(web): RegistrationPanel Edit/Revoke/Reinstate/Delete + Redemptions Jannis Braun 2026-04-29 01:21:14 +02:00
  • ba5c84fc6b fix(web): add Custom… expiry preset to CreateInviteModal per spec §4.2 Jannis Braun 2026-04-29 01:13:22 +02:00
  • 234ec8e70d feat(web): RegistrationPanel Create-invite modal Jannis Braun 2026-04-29 01:06:48 +02:00
  • 42d1be54fa fix(web): guard RegistrationPanel invite-list against stale-fetch race Jannis Braun 2026-04-29 00:57:57 +02:00
  • dcd3daf390 feat(web): RegistrationPanel invite-list with Active/Archived tabs Jannis Braun 2026-04-29 00:53:39 +02:00
  • 7dd6bd6263 refactor(web): move registrationOpen toggle out of GeneralPanel Jannis Braun 2026-04-29 00:44:35 +02:00
  • cad6c50bff feat(web): RegistrationPanel scaffold with both registration toggles Jannis Braun 2026-04-29 00:40:04 +02:00
  • 7edfd8ae26 refactor(web): rename invites.patch → invites.update for codebase consistency Jannis Braun 2026-04-28 21:11:43 +02:00
  • 50756b3e65 feat(web): add invites + checkInvite to api client Jannis Braun 2026-04-28 21:08:12 +02:00