Conversation
- Push to develop => CI (lint, typecheck, build) - PR to develop => CI (lint, typecheck, build) - PR to main => CI (lint, typecheck, build) + enforce-source-branch - Push to main => Nothing - Tag push v* => Release (Tauri) + Docker - Push to any branch => Nothing - PR to any branch => CI (lint, typecheck, build)
contains : TOTP MFA — Authenticator app 2FA with backup codes, trusted devices, encrypted secrets New landing page + admin globe visualization + more admin charts mediasoup SFU — Server voice channels via Selective Forwarding Unit (replaces mesh P2P) mediasoup optimizations — Worker tuning + load test simulation scripts Horizontal scaling — Socket.IO Redis adapter, multi-node presence, DM voice state in Redis File sharing — Message attachments with S3 presigned uploads, auto-cleanup job @Mentions — In-message user mentions with autocomplete, notifications, highlight DM call global panel — Compact DM voice status visible from any view Drag-and-drop file upload Animated supporter badges Desktop notifications with avatars — WinRT toast with circular avatars, 3-tier fallback Presence status cleanup — Ghost online status prevention on crash/restart Docker production build — Multi-stage Dockerfile for server + PostgreSQL + Redis Tauri auto-update — Mandatory update check on startup with signed releases
tauri client updater pubkey
feature: email verification is mandatory now
…lint warnings + tauri client audio transmission
…3->4, Vite 6->7, bcryptjs 2->3, otenv 16->17, rate-limiter-flexible 5->9, lucide-react 0.469->0.577
…eration per channel and per user
…ute and Message POST missing ATTACH_FILES check
…irect to active server, supporter badge layout
There was a problem hiding this comment.
Pull request overview
This PR introduces a Discord-style permission/role system alongside community themes, voice moderation improvements, and a broader migration/upgrade sweep (Prisma 7, Express 5, Tailwind 4), with new unit/integration test coverage and updated docs/ops wiring.
Changes:
- Adds new DB models/migrations for roles, channel overrides, infra servers, community themes, and per-server nicknames.
- Updates desktop/admin clients for new permissions/roles UX, improved voice/DM behaviors, theme engine, and Tauri windowing (splash/titlebar/tray).
- Migrates tooling: Prisma config/generation changes, dependency upgrades, new Vitest test commands + CI test step, Docker/build updates.
Reviewed changes
Copilot reviewed 110 out of 177 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| apps/server/src/tests/routes/reports.test.ts | Adds report route input validation tests. |
| apps/server/src/tests/middleware/rateLimiter.test.ts | Adds socket rate limiter unit tests. |
| apps/server/src/tests/middleware/errorHandler.test.ts | Adds robust error handler behavior tests (prod vs dev). |
| apps/server/src/tests/mediasoup/mediasoupConfig.test.ts | Tests lazy env reading for mediasoup config getters. |
| apps/server/src/tests/app.test.ts | Tests lazy initialization behavior (CORS/morgan/trust proxy). |
| apps/server/prisma/seed.ts | Updates seeding to use generated Prisma client + pg adapter + dotenv. |
| apps/server/prisma/schema.prisma | Adds permission system/theme/infra models and adjusts Prisma client generation settings. |
| apps/server/prisma/migrations/20260320120000_add_infra_servers/migration.sql | Creates infra_servers table. |
| apps/server/prisma/migrations/20260317140000_add_server_nicknames/migration.sql | Adds nickname column to server members. |
| apps/server/prisma/migrations/20260317120000_add_permission_system/migration.sql | Creates roles/overrides tables + seeds default roles/admin assignments. |
| apps/server/prisma.config.ts | Introduces Prisma CLI config + seed hook; supports env-optional generate. |
| apps/server/package.json | Bumps version, upgrades deps, adds Vitest scripts. |
| apps/server/eslint.config.js | ESLint tuning + ignores tests folder. |
| apps/desktop/vitest.config.ts | Adds Vitest config for desktop app tests. |
| apps/desktop/vite.config.ts | Enables Tailwind v4 Vite plugin. |
| apps/desktop/tailwind.config.js | Removes Tailwind v3 config (Tailwind v4 CSS-first). |
| apps/desktop/src/utils/roles.ts | Adds role outranking helper. |
| apps/desktop/src/styles/globals.css | Migrates to Tailwind v4 CSS-first theme + utilities. |
| apps/desktop/src/stores/supportStore.ts | Improves error typing using axios guards. |
| apps/desktop/src/stores/settingsStore.ts | Adds theme + custom theme persistence & application logic. |
| apps/desktop/src/stores/friendStore.ts | Adds toast on friend list fetch failure. |
| apps/desktop/src/stores/dmStore.ts | Improves DM read marking, dedup/refresh behavior, toast errors. |
| apps/desktop/src/stores/chatStore.ts | Improves cancellation checks and user-facing error toasts; loosens updateAuthorProfile typing. |
| apps/desktop/src/stores/authStore.ts | Improves axios error typing + ensures voice cleanup on logout. |
| apps/desktop/src/services/themeEngine.ts | Adds custom theme application, patterns, import/export, built-in theme extraction. |
| apps/desktop/src/services/socket.ts | Tightens WS logger arg types to unknown[]. |
| apps/desktop/src/services/notifications.ts | Wraps Notification API calls in try/catch for resilience. |
| apps/desktop/src/services/notificationSounds.ts | Adds tactical sound pack; improves audio routing error handling. |
| apps/desktop/src/services/audioAnalyser.ts | Refactors to separate RNNoise suppression pipeline from speaking detection + gain gate. |
| apps/desktop/src/pages/ResetPasswordPage.tsx | Axios-typed error handling. |
| apps/desktop/src/pages/InvitePage.tsx | Axios-typed error handling. |
| apps/desktop/src/pages/ForgotPasswordPage.tsx | Axios-typed error handling. |
| apps/desktop/src/pages/EmailVerificationPendingPage.tsx | Axios-typed retry-after parsing + error handling. |
| apps/desktop/src/main.tsx | Adds global error handlers + splash removal wiring. |
| apps/desktop/src/hooks/usePushToTalk.ts | Extends PTT to DM calls; adds pttActive state usage and event routing. |
| apps/desktop/src/components/voice/VoicePanel.tsx | Updates panel UX; adds server mute/deafen warning. |
| apps/desktop/src/components/voice/DMVoicePanel.tsx | Uses PTT override to drive speaking indicator when muted. |
| apps/desktop/src/components/server/MemberSidebar.tsx | Groups members by custom roles; shows nicknames and role colors. |
| apps/desktop/src/components/server/InviteModal.tsx | Axios-typed error handling. |
| apps/desktop/src/components/server/CreateServerModal.tsx | Axios-typed error handling. |
| apps/desktop/src/components/search/SearchModal.tsx | Uses axios cancellation guard. |
| apps/desktop/src/components/layout/TitleBar.tsx | Adds Tauri-only custom title bar + window controls. |
| apps/desktop/src/components/layout/MainLayout.tsx | Adds read-mark debounce, visibility refresh, new role/nickname/perms WS events, voice force-move handling. |
| apps/desktop/src/components/layout/ConnectionBanner.tsx | Removes unused icon import. |
| apps/desktop/src/components/friends/AddFriendForm.tsx | Axios-typed error handling. |
| apps/desktop/src/components/dm/SupportTicketView.tsx | Improves error typing on reopen. |
| apps/desktop/src/components/dm/IncomingCallModal.tsx | Adds toast + error handling while accepting calls. |
| apps/desktop/src/components/dm/DMList.tsx | Error typing + supporter badge layout tweak. |
| apps/desktop/src/components/dm/DMChatArea.tsx | Ensures DM read marking when entering conversation. |
| apps/desktop/src/components/dm/DMCallPanel.tsx | Uses PTT override to drive local speaking indicator. |
| apps/desktop/src/components/common/UserProfilePopup.tsx | Axios-typed friend request error handling; narrows response typing. |
| apps/desktop/src/components/common/EmojiPicker.tsx | Uses native emoji style. |
| apps/desktop/src/components/chat/ReportModal.tsx | Axios-typed error handling. |
| apps/desktop/src/components/chat/MessageItem.tsx | Adds nickname + role color for message author display. |
| apps/desktop/src/components/chat/MessageInput.tsx | Resets textarea height after sending. |
| apps/desktop/src/components/chat/MessageContent.tsx | Adds remark-breaks for newline rendering. |
| apps/desktop/src/components/chat/ChatArea.tsx | Ensures server read marking when entering channel. |
| apps/desktop/src/components/chat/AttachmentDisplay.tsx | Removes unused API_URL constant. |
| apps/desktop/src/tests/stores/voiceStore.test.ts | Adds voice store tests (PTT lifecycle, DM call state, peer cleanup). |
| apps/desktop/src/tests/services/audioAnalyser.test.ts | Adds tests for suppression/detection lifecycle behavior. |
| apps/desktop/src/tests/hooks/usePushToTalk.test.ts | Adds tests for PTT guard/routing/indicator logic. |
| apps/desktop/src/App.tsx | Adds TitleBar + splash hook; changes layout structure. |
| apps/desktop/src-tauri/tauri.conf.json | Adds splash window + switches to frameless main window. |
| apps/desktop/src-tauri/src/lib.rs | Adds close-to-tray + tray icon menu + keeps window icon setup. |
| apps/desktop/src-tauri/gen/schemas/capabilities.json | Adds required window permissions for new titlebar/tray behavior. |
| apps/desktop/src-tauri/capabilities/default.json | Adds required core:window capabilities for new window controls. |
| apps/desktop/src-tauri/Cargo.toml | Enables tray-icon feature for Tauri. |
| apps/desktop/public/splash.html | Adds dedicated Tauri splash HTML. |
| apps/desktop/postcss.config.js | Removes PostCSS config (Tailwind v4 workflow). |
| apps/desktop/package.json | Bumps version; adds Vitest scripts; Tailwind v4 plugin. |
| apps/desktop/index.html | Adds inline splash screen for browser mode. |
| apps/admin/vite.config.ts | Enables Tailwind v4 Vite plugin. |
| apps/admin/tailwind.config.js | Removes Tailwind v3 config. |
| apps/admin/src/styles/globals.css | Migrates to Tailwind v4 CSS-first theme + utilities. |
| apps/admin/src/stores/authStore.ts | Axios-typed error handling. |
| apps/admin/src/stores/adminStore.ts | Adds infra server CRUD in store; improves admin socket typing. |
| apps/admin/src/components/AdminServerList.tsx | Renames unused prop to _serverId to satisfy linting. |
| apps/admin/src/components/AdminLayout.tsx | Adds hash-based routing fallback for admin views. |
| apps/admin/src/components/AdminGlobe.tsx | Adds infra server overlay + arcs; tooltip support. |
| apps/admin/src/components/AdminGeography.tsx | Adds infra server CRUD UI + renders infra server overlay on globe. |
| apps/admin/src/components/AdminAnnouncements.tsx | Axios-typed error handling for announcement creation. |
| apps/admin/postcss.config.js | Removes PostCSS config (Tailwind v4 workflow). |
| apps/admin/package.json | Bumps version; tailwind v4 plugin; dependency upgrades. |
| README.md | Adds highlight sections + adds testing docs and updated feature list. |
| Dockerfile | Adjusts Prisma generation + runtime copies; updates mediasoup port exposure. |
| CONTEXT.md | Updates version/date and documents new features/changes. |
| Architecture.md | Updates stack/version references and documents audio pipeline & privacy stance. |
| .github/workflows/ci.yml | Adds unit test step; adjusts Prisma generate step label. |
| .env.production.example | Updates mediasoup max port. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
apps/server/prisma/migrations/20260317120000_add_permission_system/migration.sql
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 111 out of 178 changed files in this pull request and generated 6 comments.
Comments suppressed due to low confidence (1)
apps/desktop/src/components/layout/TitleBar.tsx:1
- These are interactive window-control buttons but have tabIndex={-1}, making them unreachable via keyboard navigation. For accessibility, they should be focusable (default tab order) unless there is a strong, documented reason to remove them from the tab sequence. Consider removing the tabIndex override and ensuring focus styles are acceptable.
import { useState, useCallback, useEffect } from 'react';
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 111 out of 178 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 116 out of 190 changed files in this pull request and generated 5 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
pnpm testcommand for Unit tests