feat(discord-gateway): implement voice & push improvements

- Voice disconnect broadcast on stopRecording
- Multi-guild voice support (VoiceController Map<guildId>)
- Session finalization + auto-enqueue muxer job
- Recordings API: duration field, channelId/userId filters
- Transmitter Redis connection reuse (shared conn)
- FFmpeg stderr memory cap (4KB limit)
- 10 new Redis event channels + Redis bridge subscriptions
- New DB tables: message_reactions, message_edits
- Webhook notification module
- Gateway metrics / Prometheus endpoint
- Multi-guild message capture (MONITOR_GUILD_IDS array)
- Thread tracking, presence, channel topic, guild member events
- Edit history snapshot on message update
- Muxer audio post-processing worker

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
MythEclipse
2026-06-13 13:51:21 +07:00
co-authored by Claude
parent fd3b5c5ca5
commit 14c0081f01
17 changed files with 260 additions and 90 deletions
@@ -1,10 +1,7 @@
import { motion } from "framer-motion";
import { AlertCircle, ArrowLeft, Hash, RefreshCw } from "lucide-react";
import type { DashboardChannelDetail } from "../../../shared/api/client";
import {
cardItem,
cardStagger,
} from "../../../shared/hooks/useFramerStagger";
import { cardItem, cardStagger } from "../../../shared/hooks/useFramerStagger";
import { cn } from "../../../shared/lib/utils";
import {
Badge,
@@ -1,20 +1,9 @@
import { motion } from "framer-motion";
import {
AlertCircle,
Hash,
Loader2,
RefreshCw,
Search,
} from "lucide-react";
import { AlertCircle, Hash, Loader2, RefreshCw, Search } from "lucide-react";
import type { DashboardChannel } from "../../../shared/api/client";
import { cardItem, cardStagger } from "../../../shared/hooks/useFramerStagger";
import { cn } from "../../../shared/lib/utils";
import {
Card,
CardContent,
Input,
Skeleton,
} from "../../../shared/ui";
import { Card, CardContent, Input, Skeleton } from "../../../shared/ui";
interface ChannelSummaryListProps {
channels: DashboardChannel[];