Commit Graph
564 Commits
Author SHA1 Message Date
Jannis Braun a2ff5cb75d feat: add skeleton loading state to member sidebar 2026-03-22 02:44:46 +01:00
Jannis Braun 02dcd2f903 feat: replace pagination spinner with skeleton rows in message list 2026-03-22 02:43:32 +01:00
Jannis Braun d93b710dbd feat: replace message list loading spinner with skeleton rows 2026-03-22 02:42:44 +01:00
Jannis Braun ddaf6fee68 feat: add loadingSpaceId flag to spaceStore for skeleton loading guards 2026-03-22 02:41:32 +01:00
Jannis Braun 4222537831 feat: add skeleton shimmer CSS primitives for loading states 2026-03-22 02:41:07 +01:00
Jannis Braun 9812e13a0e fix: center settings content within content area
Content was left-aligned in the content pane, making it appear
off-center relative to the full modal. Add mx-auto to center
the max-w-[640px] wrapper within the content area, matching
Discord's centering behavior.
2026-03-22 02:33:05 +01:00
Jannis Braun 2fdf379cb2 fix: raise PWA precache size limit to 3 MB
Main bundle grew past the default 2 MB workbox limit, breaking
Docker builds. Raise to 3 MB to unblock deployment.
2026-03-22 02:28:15 +01:00
Jannis Braun 1f3d10842d fix: correct mobileView initial state and add SpaceSettings tab reset
- UserSettings: change mobileView default from 'content' to 'tabs'
- SpaceSettings: add useEffect to reset tab and mobileView on modal open
2026-03-22 02:26:15 +01:00
Jannis Braun e87cab58bf feat: add panel title headings to all SpaceSettings panels 2026-03-22 02:20:51 +01:00
Jannis Braun b3cb84c6a2 feat: rebuild SpaceSettings with expanded layout and grouped sidebar 2026-03-22 02:19:15 +01:00
Jannis Braun d54de16ec8 feat: add panel title headings to all UserSettings panels 2026-03-22 02:17:38 +01:00
Jannis Braun 3b06818614 feat: rebuild UserSettings with expanded layout and grouped sidebar 2026-03-22 02:15:27 +01:00
Jannis Braun 9bacc8fb3d feat: add size='settings' variant to Modal component 2026-03-22 02:13:49 +01:00
Jannis Braun 4c4bd8dec6 fix: add editable input alongside slider step presets for custom values 2026-03-22 01:44:24 +01:00
Jannis Braun 46f17cf172 fix: replace slider step number input with pill presets 2026-03-22 01:29:40 +01:00
Jannis Braun eff3210f29 fix: make slider step a compact inline row instead of prominent section 2026-03-22 01:25:03 +01:00
Jannis Braun 30cbf58770 fix: stack bitrate slider and input vertically for responsive layout 2026-03-22 01:19:28 +01:00
Jannis Braun 7e7e77b298 fix: prevent ghost voice users after server restart
Replace the stale-flag-based voice re-registration in the WS ready
handler with a server-authoritative check. If the server's voiceStates
doesn't include us (server restarted, lost in-memory voiceRooms),
cleanly tear down the LiveKit session via leaveVoice() + disconnect().
If the server still knows about us (WS blip), do nothing.
2026-03-22 01:05:30 +01:00
Jannis Braun f3ff07aa6d feat: add bitrate matrix editor with scale macro and uncapped max inputs 2026-03-22 00:52:40 +01:00
Jannis Braun c0618a0b75 refactor: convert screenShare.ts to kbps with override-first lookup 2026-03-22 00:47:08 +01:00
Jannis Braun 267dc8d992 feat: add bitrateMatrixOverrides to types, schema, and migration 2026-03-22 00:42:23 +01:00
Jannis Braun 6122c7829f fix: replace regex-based isNewlyCreated with explicit isNew prop
Pass isNew from parent state instead of guessing from the role name
pattern. Set true on create/copy, cleared on back/click-to-edit.
2026-03-22 00:17:14 +01:00
Jannis Braun b8c8e39dfd fix: use existing success banner style for role created indicator
Match the status-online pattern already used for "Role saved" in the
same file, instead of introducing a one-off accent-primary variant.
2026-03-22 00:12:33 +01:00
Jannis Braun 0bd87c4ebf fix: auto-focus name input and show creation indicator in role editor
After creating or copying a role, the name input is now auto-focused
with text selected so the user immediately starts typing. A subtle
"Role created" banner appears until the user makes any change.
2026-03-22 00:05:17 +01:00
Jannis Braun da82ba6d94 fix: add key prop to RoleEditView to reset state when switching roles
RoleEditView used useState(role.name) for draft state, but React
reuses the component instance when editingRoleId changes, ignoring
the new initial value. Adding key={editingRoleId} forces a remount,
re-initializing all draft state (name, color, permissions) correctly.
2026-03-21 23:43:00 +01:00
Jannis Braun 09bfd1ccab fix: use grid layout for stream settings pills to prevent uneven wrapping 2026-03-21 23:41:01 +01:00
Jannis Braun f9f7dd158f feat: guard applyConstraints for native mode in useLiveKit 2026-03-21 23:33:30 +01:00
Jannis Braun b4b22faf55 feat: auto-increment role names to avoid uniqueness conflicts on create and copy 2026-03-21 23:31:35 +01:00
Jannis Braun a9a676bc70 feat: expand admin streaming pills, add high-end resource warning
Replaces hardcoded 3-resolution/3-framerate arrays with ALL_RESOLUTIONS
and STANDARD_FRAMERATES from shared constants (540p–Native, 30–120 fps).
Adds amber warning banner when high-end options (≥1440p or ≥75 fps) are
enabled, and fixes toggleResolution to handle 'native' with correct sort.
2026-03-21 23:30:46 +01:00
Jannis Braun 5ac0917d81 feat: dynamic resolution/framerate pills from instance limits 2026-03-21 23:30:14 +01:00
Jannis Braun 57b192533d feat: add Copy Role button to duplicate roles with permissions 2026-03-21 23:30:12 +01:00
Jannis Braun cb34bfc8ea feat: expand bitrate matrix, add native mode with pixel-proportional fallback 2026-03-21 23:26:54 +01:00
Jannis Braun 3fe9f774a1 feat: add client-side role name uniqueness validation with 409 handling 2026-03-21 23:26:06 +01:00
Jannis Braun a02b098fa7 feat: widen ScreenShareConfig types, bump persist to v12 2026-03-21 23:22:49 +01:00
Jannis Braun f7657e3adb fix: prevent duplicate messages when sending image without text
Optimistic message used content: '' while the server normalized it to
null, causing the content-based dedup to fail and leaving both the
empty temp message and the real attachment message in the list.
2026-03-21 22:46:01 +01:00
Jannis Braun 0d8913f589 feat: register CategorySettingsModal in AppLayout 2026-03-21 22:18:01 +01:00
Jannis Braun cc7d1c191c feat: add CategorySettingsModal with overview and permissions tabs 2026-03-21 22:08:47 +01:00
Jannis Braun edb050fd39 feat: add category settings context menu, lock icon, empty category hiding 2026-03-21 18:38:47 +01:00
Jannis Braun 892164f3a5 refactor: use extracted PermissionsEditor in ChannelSettingsModal 2026-03-21 18:35:38 +01:00
Jannis Braun c43afc23a8 feat: extract TriStateToggle, OverrideEntry, PermissionsEditor shared components 2026-03-21 18:35:35 +01:00
Jannis Braun b5ac7d3ee4 feat: add category override API client methods 2026-03-21 18:29:16 +01:00
Jannis Braun 17289445bd feat: add categorySettings modal type to uiStore 2026-03-21 18:25:56 +01:00
Jannis Braun 1473f4f88c fix: emoji reaction picker no longer overflows viewport on bottom messages 2026-03-21 18:21:30 +01:00
Jannis Braun 90d702338d feat: add slideDown animation for upward-flipping popovers 2026-03-21 18:20:02 +01:00
Jannis Braun 7ec61c16fd feat: use aspect-ratio and preload=none for video/image attachments 2026-03-21 17:20:54 +01:00
Jannis Braun 156189dfa2 fix: redesign activity cards with glass-pill material and accent borders
Replace bg-surface-elevated cards and inline text badges with glass-pill
rows featuring colored left borders (mint=playing, sky=listening,
lavender=watching, rose=streaming). Identical treatment in both
ActivityPanel and MemberSidebar — no more compact/full distinction.
Members with rich activities get the frosted glass row; others stay plain.
2026-03-21 03:50:09 +01:00
Jannis Braun 0f4f129337 feat(desktop): add automatic game/app activity detection
Add cross-platform process scanning that detects running games and apps,
then broadcasts them as Rich Presence activities via the existing Phase 1
pipeline (activityStore -> WS -> other users).

- games.json dictionary with 26 entries (games, Spotify, VLC, OBS)
- activityDetector module: polls OS process list every 15s via execFile,
  matches against dictionary, emits IPC on state change only
- IPC bridge in main.ts/preload.ts with cleanup on quit
- Frontend activityBridge subscribes to IPC and feeds activityStore
- Supports Windows (tasklist CSV), macOS (ps -c), Linux (ps)
2026-03-21 02:57:30 +01:00
Jannis Braun 2593f7075c feat(desktop): add version display and check-for-updates to account settings 2026-03-21 02:32:19 +01:00
Jannis Braun a9fcdb72a8 feat(desktop): add manual download fallback to UpdateToast
Extends UpdateToast to handle update-error events from the preload bridge,
showing a "Download" link to the GitHub release URL when auto-update fails.
2026-03-21 02:31:20 +01:00
Jannis Braun 6ebb124d25 feat(desktop): update preload bridge types for enhanced update-error and getVersion 2026-03-21 02:30:06 +01:00