Link-filter and spam-filter toggles in the dashboard wrote to config keys
the backend never read, so both filters always ran regardless of the
switch. Fixed by reading the same field names on both sides.
Also surfaces backend features that already existed but had no UI: caps
filter, a custom bad-word list, a role whitelist (members with these
roles are ignored entirely), and tunable spam thresholds/window/timeout.
Each filter now shows its relevant settings inline instead of hiding them
in a separate generic panel.
Adds two new detections: an invite-link filter separate from the general
link filter, and mass-mention/raid protection with a configurable limit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Frontend: fix HeroUI Switch usage across the whole app (Content/Control/
Thumb composition was missing, so no toggle ever rendered visibly),
replace raw channel/role ID text fields with proper name-based dropdowns
(ChannelSelect/RoleSelect) backed by the existing /guild/resources
endpoint, redesign Automod's filters as inline toggle rows, turn the
Ticket Pipeline tab into a drag-and-drop Kanban board, narrow the
sidebar further and rework its collapse toggle and profile footer, and
add a Discord-style message preview for Welcome/Support Login.
Backend: fix the ~50 TypeScript build errors blocking `npm run build`
(SlashCommandBuilder typing, discord.js v14 channel-union guards,
Prisma JSON null handling, logger.warn signature, and related type
narrowing) so the project compiles cleanly again.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The frontend was built against HeroUI v2 props/classes (variant="light"/"flat",
color="primary", startContent, text-tiny, <Avatar src=/name=>) while
@heroui/react ^3.2.1 is installed, so most styling was silently ignored.
Rewrites every page/component onto the actual v3 API (variant/color enums,
Tooltip/Dropdown trigger-content structure, Avatar.Image/Fallback via a new
AppAvatar helper) and replaces the custom orange branding with HeroUI's
neutral default theme tokens. Also compacts the dashboard stat tiles, narrows
the sidebar, and swaps the activity stat grid for a single-hue comparison bar
chart.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>