Skip to content

Advanced permission system#24

Merged
Aizen93 merged 37 commits intodevelopfrom
feature/phase2
Mar 25, 2026
Merged

Advanced permission system#24
Aizen93 merged 37 commits intodevelopfrom
feature/phase2

Conversation

@Aizen93
Copy link
Owner

@Aizen93 Aizen93 commented Mar 19, 2026

  • Custom Roles & Permissions
  • Channel Permission Overrides
  • Permission Calculator
  • Voice Moderation
  • Per-Server Nicknames
  • UI/UX Improvements
  • Route Guard Migration
  • Security Hardening
  • Database Changes : New models
  • Testing: Added a new pnpm test command for Unit tests
  • Community Theme : Creating custom themes, live preview mode, marketplace

Aizen93 and others added 21 commits March 6, 2026 17:45
- 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
…ute and Message POST missing ATTACH_FILES check
@Aizen93 Aizen93 changed the title Feature/phase2 Advanced permission system Mar 19, 2026
@Aizen93 Aizen93 added documentation Improvements or additions to documentation enhancement New feature or request labels Mar 20, 2026
@Aizen93 Aizen93 requested a review from Copilot March 22, 2026 04:59
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@Aizen93 Aizen93 requested a review from Copilot March 22, 2026 05:32
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@Aizen93 Aizen93 requested a review from Copilot March 22, 2026 05:42
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@Aizen93 Aizen93 requested a review from Copilot March 23, 2026 02:16
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@Aizen93 Aizen93 merged commit 83ac669 into develop Mar 25, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants