Commit Graph

  • dbcc399ebb test(settings): tighten 'preserves field when omitted' to actually prove preservation Jannis Braun 2026-04-28 21:06:05 +02:00
  • 8d7ba33c21 feat(settings): expose federatedRegistrationOpen in /settings/instance + /instance/info Jannis Braun 2026-04-28 21:01:50 +02:00
  • 87301bd4d2 test(auth): polish register handler — comment, test isolation, +1 coverage Jannis Braun 2026-04-28 20:58:16 +02:00
  • 0559ea369b feat(auth): split registration gate by homeInstance + atomic invite redemption Jannis Braun 2026-04-28 20:51:49 +02:00
  • 1b76b8bf2a test(invites): tighten check-invite assertions to byte-identical responses Jannis Braun 2026-04-28 20:46:24 +02:00
  • effb36c7f4 feat(auth): GET /api/auth/check-invite with collapsed enumeration shield Jannis Braun 2026-04-28 20:42:46 +02:00
  • ade5c0d998 test(invites): tighten requireAdmin mock to match real Fastify contract Jannis Braun 2026-04-28 20:40:24 +02:00
  • 0c9865ad90 feat(invites): /api/admin/invites CRUD endpoints Jannis Braun 2026-04-28 20:36:09 +02:00
  • b775e3bcc9 refactor(invites): typed InviteUnavailableReason + real rollback test Jannis Braun 2026-04-28 20:32:42 +02:00
  • 95737ba405 feat(invites): redeemInvite (atomic txn) + deleteInvite Jannis Braun 2026-04-28 20:26:57 +02:00
  • b7557aa6fa test(invites): document empty-updates guard + Path A rollback test Jannis Braun 2026-04-28 20:24:15 +02:00
  • ee405cba7c feat(invites): reinstateInvite with revoked-vs-archived branching Jannis Braun 2026-04-28 20:20:13 +02:00
  • 45b2eabed3 refactor(invites): thread tx through resolveCreatorUsername + tighten test assertions Jannis Braun 2026-04-28 20:17:41 +02:00
  • 23338419df feat(invites): patchInvite + revokeInvite with txn re-derive + foldUsername helper Jannis Braun 2026-04-28 20:11:47 +02:00
  • ce5d4c10c8 feat(invites): listInvites + listRedemptions with creator/current JOINs Jannis Braun 2026-04-28 20:04:18 +02:00
  • daf2e958f7 feat(invites): createInvite + getInviteByToken with validation Jannis Braun 2026-04-28 19:58:03 +02:00
  • 967c62d488 feat(invites): inviteStatus derivation + token generator Jannis Braun 2026-04-28 19:52:16 +02:00
  • e984ce910c refactor(shared): rename PatchInviteRequest → UpdateInviteRequest + JSDoc Jannis Braun 2026-04-28 19:50:05 +02:00
  • 884b3d9fe9 feat(shared): add invite link types + federatedRegistrationOpen Jannis Braun 2026-04-28 19:45:25 +02:00
  • 22788890f3 feat(db): add invite_links + invite_redemptions tables + federatedRegistrationOpen Jannis Braun 2026-04-28 18:52:15 +02:00
  • 76b6621d62 feat(storage): remove upload-size cap, add MB/GB unit toggle Jannis Braun 2026-04-28 18:37:16 +02:00
  • 213fbc943b docs(sounds): correct self-stream-end suppression note (synchronous, not deferred) Jannis Braun 2026-04-28 15:03:22 +02:00
  • 89b6c80031 docs: cross-reference sounds.md from voice.md + CLAUDE.md subsystem table Jannis Braun 2026-04-28 14:55:39 +02:00
  • 37de0feb31 docs(systems): add sounds.md — inventory + trigger map + mechanism notes Jannis Braun 2026-04-28 14:54:11 +02:00
  • 82ae487765 feat(sounds): add 'Play sound for every message' toggle to Voice settings Jannis Braun 2026-04-28 14:50:41 +02:00
  • 081937a030 fix(sounds): drop singleton AudioManager from SoundController effect deps Jannis Braun 2026-04-28 14:49:03 +02:00
  • 494585adf2 fix(sounds): full SoundController rewrite — every file fires for the right audience Jannis Braun 2026-04-28 14:43:05 +02:00
  • 7c0b67bcc9 feat(sounds): broadcast stream_watch from StreamTile click sites Jannis Braun 2026-04-28 14:38:39 +02:00
  • 62aa87c737 feat(sounds): receive stream_watch pings + evict watchers on participant disconnect Jannis Braun 2026-04-28 14:35:14 +02:00
  • 005559d95e feat(sounds): add streamWatchers map + recordStreamWatch/clearStreamWatchers/evictWatcher Jannis Braun 2026-04-28 14:30:45 +02:00
  • a3bd0313a8 feat(sounds): add messageSoundAllChannels preference to voiceStore Jannis Braun 2026-04-28 14:26:41 +02:00
  • 00daa14dcd test(sounds): use realm-safe Uint8Array check (TextEncoder vs jsdom) Jannis Braun 2026-04-28 14:25:25 +02:00
  • dacb6df871 test(sounds): tighten encodeStreamWatch round-trip assertion to verify Uint8Array contract Jannis Braun 2026-04-28 14:23:54 +02:00
  • 6a4eac13a3 feat(sounds): add stream_watch data-channel protocol helpers Jannis Braun 2026-04-28 14:19:41 +02:00
  • 40dd2ab52f feat(sounds): add shouldPlayMessageSound filter (DM + federation-aware mention) Jannis Braun 2026-04-28 14:13:56 +02:00
  • eede7aeb38 chore(branding): clean up product description strings Jannis Braun 2026-04-28 11:39:08 +02:00
  • cf72f9d87d docs(voice): note dormant-by-default preview in two-mode preview section Jannis Braun 2026-04-27 21:15:06 +02:00
  • 4748df8b24 fix(camera): dormant-by-default preview, never trigger camera on tab open Jannis Braun 2026-04-27 21:13:58 +02:00
  • 02e881fd00 docs(voice): document camera device selection subsystem Jannis Braun 2026-04-27 20:57:13 +02:00
  • 2bec5b9d7f feat(settings): rename Voice tab to 'Voice & Video' to reflect added video section Jannis Braun 2026-04-27 20:55:42 +02:00
  • 93e1478346 feat(voice-panel): mount Video section between Volume and Voice Processing Jannis Braun 2026-04-27 20:47:19 +02:00
  • 47653ab14a feat(video-section): tab-visibility cleanup and currently-using subline Jannis Braun 2026-04-27 20:46:04 +02:00
  • 37caf30b84 feat(video-section): in-call preview attaches to LK track Jannis Braun 2026-04-27 20:43:40 +02:00
  • 4c6bc9e822 feat(video-section): pre-call preview tile auto-starts getUserMedia Jannis Braun 2026-04-27 20:41:03 +02:00
  • 9b402ed291 feat(video-section): enumerate cameras and render dropdown Jannis Braun 2026-04-27 20:37:33 +02:00
  • 5494460834 feat(video-section): scaffold component with permission-probe state machine Jannis Braun 2026-04-27 20:33:14 +02:00
  • c9b08cdfd2 feat(devices): sweep stale persisted device ids on mount and devicechange Jannis Braun 2026-04-27 20:30:54 +02:00
  • 786823946a feat(camera): handle camera-track end with branched toast (unplug vs permission revoke) Jannis Braun 2026-04-27 20:25:26 +02:00
  • e8534339fb feat(camera): syncCamera effect hot-swaps publication on cameraDeviceId change Jannis Braun 2026-04-27 20:19:43 +02:00
  • 2e41edbc99 feat(camera): use cameraDeviceId from voiceStore on camera enable Jannis Braun 2026-04-27 20:17:12 +02:00
  • 51ad54fda5 refactor(camera): unify toggle paths through handleCameraAction Jannis Braun 2026-04-27 20:13:43 +02:00
  • 486448607e feat(voice-store): add pruneStaleDevices to clear stale persisted device ids Jannis Braun 2026-04-27 20:08:42 +02:00
  • 770a77a473 feat(voice-store): add cameraDeviceId persisted field Jannis Braun 2026-04-27 20:04:45 +02:00
  • 8ba644fa44 fix(message-list): pagination flag and scroll restore leak across channel switches Jannis Braun 2026-04-27 18:11:31 +02:00
  • b6b830568c fix(message-list): close smooth-scroll-to-bottom race against late-loading media Jannis Braun 2026-04-27 17:51:55 +02:00
  • de2ef10129 fix(brand): home tile = Element 1 with #000 bg, drop tile lavender Jannis Braun 2026-04-27 15:39:54 +02:00
  • 343fdd6e3d fix(sidebar): home tile uses brand lavender, not neutral grey Jannis Braun 2026-04-27 15:32:48 +02:00
  • 695f699ddf fix(sidebar): give home tile visible hover/active feedback Jannis Braun 2026-04-27 15:27:27 +02:00
  • 7a8d0ce0e2 fix(brand): logo.png is bare mark on transparent, 75% padded Jannis Braun 2026-04-27 15:20:29 +02:00
  • 6b71aecc28 fix(brand): logo.png uses full badge, not bare mark Jannis Braun 2026-04-27 15:06:22 +02:00
  • 37797562d7 docs: fix stale Icon Generation block + close spec drift on tray-icon@2x Jannis Braun 2026-04-27 14:48:05 +02:00
  • 8fae1f42c5 docs(desktop): update tray loader table for new 3-branch logic Jannis Braun 2026-04-27 14:42:37 +02:00
  • eb8ae2874d chore: delete obsolete icon master, gen-icns.sh, tray-icon@2x Jannis Braun 2026-04-27 14:40:43 +02:00
  • bd4a7b073a fix(desktop): rewrite tray loader with explicit per-platform branches Jannis Braun 2026-04-27 14:38:42 +02:00
  • ff67a792b9 chore(desktop): drop dead cp/gen-icns.sh from dev and prebuild Jannis Braun 2026-04-27 14:36:35 +02:00
  • 5635fd88f1 build(desktop): point electron-builder at new icon outputs Jannis Braun 2026-04-27 14:34:43 +02:00
  • 56e6c72322 chore(brand): regenerate icon set from new SVGs Jannis Braun 2026-04-27 14:32:05 +02:00
  • 81ad0292a5 fix(brand): close Task 3 spec gaps surfaced by code review Jannis Braun 2026-04-27 14:29:05 +02:00
  • bdfd38bc90 feat(brand): add SVG-driven icon generator (scripts/gen-icons.mjs) Jannis Braun 2026-04-27 14:20:34 +02:00
  • 17dd12fe48 chore: add gen-icons devDeps (sharp, png-to-ico, png2icons) Jannis Braun 2026-04-27 14:16:15 +02:00
  • f765cfb982 feat(brand): add canonical SVG sources at assets/brand/ Jannis Braun 2026-04-27 14:13:51 +02:00
  • 7c21c616b1 docs(desktop): note Windows startMinimized disk fallback when no entry exists Jannis Braun 2026-04-27 13:22:57 +02:00
  • e7c65ca308 fix(desktop): preserve startMinimized preference across off/on cycle on Windows Jannis Braun 2026-04-27 13:22:14 +02:00
  • 93a91b8235 docs(desktop): clarify recordedExecPath null guard in startup re-apply pseudo-code Jannis Braun 2026-04-27 13:03:50 +02:00
  • e7413bb504 docs(desktop): rewrite Auto-Launch section to match new architecture Jannis Braun 2026-04-27 13:01:35 +02:00
  • 113efcf583 fix(web): drop optimistic updates and disable inert Start-minimized toggle Jannis Braun 2026-04-27 12:57:34 +02:00
  • 962b669cac docs(desktop): clarify cross-platform hidden-launch detection Jannis Braun 2026-04-27 12:54:42 +02:00
  • b0d0ae7be6 fix(desktop): drop unconditional startup re-apply, narrow to AppImage path-refresh Jannis Braun 2026-04-27 12:52:18 +02:00
  • 0d652a72cd fix(desktop): base set-auto-launch-settings on OS truth, not stale disk Jannis Braun 2026-04-27 12:49:00 +02:00
  • cd00da07d8 fix(desktop): make get-auto-launch-settings OS-authoritative on Windows Jannis Braun 2026-04-27 12:46:10 +02:00
  • 622b9a6929 fix(desktop): pass enabled/path/args/name to setLoginItemSettings per platform Jannis Braun 2026-04-27 12:40:44 +02:00
  • 495cad717d refactor(desktop): tighten autoLaunch helpers per code review Jannis Braun 2026-04-27 12:38:33 +02:00
  • 191ba5f248 feat(desktop): add pure auto-launch helpers with tests Jannis Braun 2026-04-27 12:33:52 +02:00
  • 4574a99f2a chore(desktop): add vitest for pure-helper tests Jannis Braun 2026-04-27 12:29:38 +02:00
  • 4fa2414933 fix(presence): drop status='online' from registration insert Jannis Braun 2026-04-27 09:35:34 +02:00
  • f17c46c77f fix(presence): reset stale users.status on boot; drop REST-login online write Jannis Braun 2026-04-27 00:35:36 +02:00
  • b698ded47d fix(federation): harden processFriendRequestCreateEvent receiver-side Jannis Braun 2026-04-27 00:07:52 +02:00
  • 8cad964809 chore(test): cover processFriendRequestCreateEvent branches Jannis Braun 2026-04-26 23:58:45 +02:00
  • 8cae4c0b7c chore(test): migrate federationPeering.test.ts to in-memory drizzle Jannis Braun 2026-04-26 23:42:08 +02:00
  • ed5a6aa14c Merge branch 'feat/outbound-peering-gate' Jannis Braun 2026-04-26 23:30:44 +02:00
  • 6ba8b9256b fix(federation): broadcast peering_subscription_changed on terminal state Jannis Braun 2026-04-26 23:20:31 +02:00
  • e35b44c05f docs(systems): outbound peering gate documentation across federation, db, api, ws, admin, client-federation Jannis Braun 2026-04-26 22:59:27 +02:00
  • 4fd67fa7dd fix(web): map peer_pending_local_admin to user-facing message Jannis Braun 2026-04-26 22:43:52 +02:00
  • cebbd5c859 feat(web): user-facing pending peering subscriptions and outcome notifications Jannis Braun 2026-04-26 22:42:53 +02:00
  • eddf2254cc feat(web): render outbound peering requests with subscriber list in admin panel Jannis Braun 2026-04-26 22:35:16 +02:00
  • 51da827089 feat(web): API client methods for peering subscriptions and notifications Jannis Braun 2026-04-26 22:32:36 +02:00
  • e82ccbde62 fix(federation): tighten peering-notifications GET response to spec shape Jannis Braun 2026-04-26 22:27:43 +02:00
  • 4064d822cd fix(janitor): restore inbound /peer/denied expiry notification Jannis Braun 2026-04-26 22:22:34 +02:00
  • 86ac54b913 feat(federation): peering-notifications endpoints + janitor expiry fanout Jannis Braun 2026-04-26 22:18:44 +02:00
  • 45ab0ea2c8 feat(federation): peering-subscriptions GET and DELETE endpoints Jannis Braun 2026-04-26 22:09:41 +02:00