feat(phase2): channel permission overrides + expanded role UI + audit log cleanup

This commit is contained in:
2026-06-30 10:28:03 -04:00
parent d7c84647e5
commit bd260183ef
10 changed files with 598 additions and 19 deletions
+24
View File
@@ -15,6 +15,17 @@ const PERMS = {
CONNECT_VOICE: 256,
SPEAK_VOICE: 512,
SHARE_SCREEN: 1024,
MUTE_MEMBERS: 2048,
CREATE_INSTANT_INVITE: 4096,
CHANGE_NICKNAME: 8192,
MANAGE_NICKNAMES: 16384,
MANAGE_ROLES: 32768,
MANAGE_WEBHOOKS: 65536,
EMBED_LINKS: 131072,
ATTACH_FILES: 262144,
ADD_REACTIONS: 524288,
USE_EXTERNAL_EMOJIS: 1048576,
MENTION_EVERYONE: 2097152,
} as const;
const PERM_CATEGORIES = [
@@ -24,6 +35,11 @@ const PERM_CATEGORIES = [
{ key: 'VIEW_CHANNEL', label: 'View Channel', flag: PERMS.VIEW_CHANNEL },
{ key: 'SEND_MESSAGES', label: 'Send Messages', flag: PERMS.SEND_MESSAGES },
{ key: 'MANAGE_MESSAGES', label: 'Manage Messages', flag: PERMS.MANAGE_MESSAGES },
{ key: 'ADD_REACTIONS', label: 'Add Reactions', flag: PERMS.ADD_REACTIONS },
{ key: 'EMBED_LINKS', label: 'Embed Links', flag: PERMS.EMBED_LINKS },
{ key: 'ATTACH_FILES', label: 'Attach Files', flag: PERMS.ATTACH_FILES },
{ key: 'MENTION_EVERYONE', label: 'Mention @everyone', flag: PERMS.MENTION_EVERYONE },
{ key: 'USE_EXTERNAL_EMOJIS', label: 'Use External Emojis', flag: PERMS.USE_EXTERNAL_EMOJIS },
],
},
{
@@ -31,6 +47,9 @@ const PERM_CATEGORIES = [
perms: [
{ key: 'KICK_MEMBERS', label: 'Kick Members', flag: PERMS.KICK_MEMBERS },
{ key: 'BAN_MEMBERS', label: 'Ban Members', flag: PERMS.BAN_MEMBERS },
{ key: 'MUTE_MEMBERS', label: 'Mute Members', flag: PERMS.MUTE_MEMBERS },
{ key: 'MANAGE_NICKNAMES', label: 'Manage Nicknames', flag: PERMS.MANAGE_NICKNAMES },
{ key: 'CHANGE_NICKNAME', label: 'Change Nickname', flag: PERMS.CHANGE_NICKNAME },
],
},
{
@@ -38,6 +57,9 @@ const PERM_CATEGORIES = [
perms: [
{ key: 'MANAGE_SERVER', label: 'Manage Server', flag: PERMS.MANAGE_SERVER },
{ key: 'MANAGE_CHANNELS', label: 'Manage Channels', flag: PERMS.MANAGE_CHANNELS },
{ key: 'MANAGE_ROLES', label: 'Manage Roles', flag: PERMS.MANAGE_ROLES },
{ key: 'MANAGE_WEBHOOKS', label: 'Manage Webhooks', flag: PERMS.MANAGE_WEBHOOKS },
{ key: 'CREATE_INSTANT_INVITE', label: 'Create Instant Invite', flag: PERMS.CREATE_INSTANT_INVITE },
{ key: 'ADMINISTRATOR', label: 'Administrator', flag: PERMS.ADMINISTRATOR },
],
},
@@ -66,9 +88,11 @@ function permSummary(permissions: number): string {
const active: string[] = [];
if (hasPerm(permissions, PERMS.MANAGE_SERVER)) active.push('MGR_SERVER');
if (hasPerm(permissions, PERMS.MANAGE_CHANNELS)) active.push('MGR_CHAN');
if (hasPerm(permissions, PERMS.MANAGE_ROLES)) active.push('MGR_ROLES');
if (hasPerm(permissions, PERMS.MANAGE_MESSAGES)) active.push('MGR_MSG');
if (hasPerm(permissions, PERMS.KICK_MEMBERS)) active.push('KICK');
if (hasPerm(permissions, PERMS.BAN_MEMBERS)) active.push('BAN');
if (hasPerm(permissions, PERMS.MUTE_MEMBERS)) active.push('MUTE');
return active.length > 0 ? active.join('+') : 'BASIC';
}