feat: modernize monorepo, upgrade Lavalink v4 & cipher, enhance dashboard, and fix auth/tooling - #829
feat: modernize monorepo, upgrade Lavalink v4 & cipher, enhance dashboard, and fix auth/tooling#829PhantomNimbi wants to merge 54 commits into
Conversation
…nd update now playing embed
…YouTube device flow auth to console
…s for interactive terminal view
… auth output and file log exclusion
… audit, and API key gating
…thout disk mutation
…d strip trailing JSON delimiters
…Redis keys in Queue.leave() unconditionally
…nce bot & dashboard - Upgrade Next.js to 15.2.0 and migrate App Router to async request APIs (await params, useParams) - Upgrade Auth.js/NextAuth to v5 beta with server action handlers and safe Discord avatar URL resolution - Upgrade @next/eslint-plugin-next to 15.2.0 and align environment parsers to @t3-oss/env-* 0.13.11 - Replace pure-ESM env wrapper in @master-bot/bot with native Zod schema parsing for 100% CJS compatibility - Wire dynamic feature flags (LAVA_ENABLED, GIFS_ENABLED, TWITCH_ENABLED, NEWS_ENABLED, IGDB_ENABLED) across bot preconditions - Connect automated cross-platform PostgreSQL and Redis service checks (connect-or-auto-launch) - Implement dynamic command help registry and standardized help tables across all 60 slash commands - Enhance web dashboard with active-tab sidebar navigation, server overview statistics, and Redis log streaming - Resolve next-themes hydration mismatch by adding suppressHydrationWarning to root layout
…sabled commands - Group slash commands into structured categories (GIFs & Anime, Twitch, News, Games & Entertainment, General & Utilities) - Filter out categories and individual commands disabled globally via environment feature flags (LAVA_ENABLED, GIFS_ENABLED, TWITCH_ENABLED, NEWS_ENABLED, IGDB_ENABLED) - Display server-specific enable/disable toggles and active status badges for all active commands
…ys monorepo-wide - Configure remoteCipher in application.yml with default endpoint (https://cipher.kikkia.dev/) and support custom YOUTUBE_CIPHER_URL / YOUTUBE_CIPHER_PASSWORD - Pass deterministic Java system properties (-D) for YouTube OAuth, skipInitialization, cipher, and Spotify credentials in launcher scripts - Wire YOUTUBE_CIPHER_URL and YOUTUBE_CIPHER_PASSWORD into @master-bot/bot, @master-bot/api, @master-bot/dashboard env schemas and .env.example - Display active cipher endpoint in dev and production console status banners
…ash command, and fix dual-domain auth
… remote cipher, and active music engine
…nds with fuzzy matching and scoring
…t, and add granular audit log dashboard
…on and ticket features
…, and README button
…eholders in app.json
🚀 PR Update: Interactive Info Commands (About & Dashboard)Adds a refined 📦 Key Enhancements
🧪 Verification & Status
🔗 Pushed Commits |
🎉 PR Complete: Ready for ReviewThis PR is now complete and fully verified — all planned features, upgrades, and bug fixes described in this branch have been implemented, built, type-checked, and runtime-tested. ✅ Final Verification Status
🚀 What's In This PR
🙏 Request for Review@galnir — this branch is ready for your review and merge. Please let me know if any changes are needed. The full maintenance roadmap with stage-by-stage history is tracked in upstream issue #828. |
🚀 PR Update: Dashboard Command Link Formatting FixThe 📦 Key Enhancements
🧪 Verification & Status
🔗 Pushed Commits
|
… music controls - Add /reminder with background scheduler (ReminderManager), tRPC router, and dashboard management pages - Add /world-news command powered by NewsAPI with country and category filtering - Add interactive button-based /connect-four and /tic-tac-toe mini-games - Add dynamic 6-stage rotating StatusManager presence system - Replace /skip with Now Playing Next button and rename /skipto to /jump - Add repeat and shuffle action buttons to Now Playing embed and fix track duration display - Refactor /about to standard Discord subcommands (bot, server, user) - Implement cross-platform recursive killProcessTree in launcher scripts to eliminate zombie processes - Standardize CommandHelp help objects and deferred interaction handling across all commands
🚀 PR Update: Reminders, News, Button Games & Enhanced Music ControlsPushed a major update introducing the 📦 Key Enhancements
🧪 Verification & Status
🔗 Pushed Commits
|
…erence - Add ticketRoleId to Guild model in Prisma schema and synchronize database - Add setRole procedure to tRPC tickets router - Add /set ticket-role and /set ticket-role-disable subcommands - Automatically add ticket manager role members to new support ticket threads and alert the role - Fix deferReply/editReply interaction conflict in /reminder command - Audit and align all 70 slash commands in README.md and wiki/Commands-Reference.md
🚀 PR Update: Support Ticket Manager Role & Command Reference AuditPushed an update implementing the support ticket manager role configuration, automated role member assignment to ticket threads, and auditing all 70 slash commands in the reference documentation. 📦 Key Enhancements
🧪 Verification & Status
🔗 Pushed Commits
|
- Restore /pat command with Klipy & Waifu.im API reaction gifs - Restore /now-playing command to display current track and interactive music controls on demand - Restore /weather command with wttr.in real-time meteorological reports and 3-day forecast - Restore /bored command with Bored API v2 and internal curated activity engine - Restore /poll command with interactive Discord button voting and live progress bars - Update README.md and wiki/Commands-Reference.md to document all 75 slash commands
🚀 PR Update: Legacy Command Restoration & Monorepo ModernizationPushed an update restoring all target legacy commands from prior versions of Master-Bot, modernized for Discord.js v14 and Sapphire Framework. 📦 Key Enhancements
🧪 Verification & Status
🔗 Pushed Commits
|
🚀 PR Update: Deferred Interaction Lifecycle & Music Embed StreamliningResolved Discord interaction lifecycle handling across asynchronous commands and streamlined music embed formatting. 📦 Key Enhancements
🧪 Verification & Status
🔗 Pushed Commits
|
🚀 PR Update: Live Interactive Music Embed & Real-Time Progress BarAdded real-time ASCII progress bar visualization and a background auto-updater to the channel now-playing music embed, along with hardened interaction error handling across slash commands. 📦 Key Enhancements
🧪 Verification & Status
🔗 Pushed Commits
|
🚀 PR Update: Documentation Polish, Cross-Platform Wiki Guides & Final Monorepo HardeningFinal milestone update consolidating comprehensive Wiki guides, standardized contributing workflows, cross-platform OS setup documentation, NewsAPI & Feature Flags references, and live music progress bar enhancements. 📦 Key Enhancements
🧪 Verification & Status
🔗 Pushed Commits
|
Summary of Changes
This pull request provides a comprehensive modernization of the Master-Bot monorepo, upgrading core framework dependencies, implementing a robust Lavalink v4 audio engine architecture with YouTube OAuth and remote cipher support, modernizing the web dashboard and tRPC backend, and streamlining developer launcher tooling.
1. 🎵 Audio Engine & Music Architecture (Lavalink v4)
youtube-plugin:1.18.2andlavasrc-plugin:4.8.3inapplication.yml.https://cipher.kikkia.dev/) with configurable environment variables (YOUTUBE_CIPHER_URL,YOUTUBE_CIPHER_PASSWORD) for unthrottled InnerTube extraction.-DYOUTUBE_REFRESH_TOKEN,-DYOUTUBE_SKIP_INIT=true,-DYOUTUBE_CIPHER_URL,-DSPOTIFY_CLIENT_ID)./youtube-authslash command and backend handler (youtubeOAuth.ts) leveraging YouTube's InnerTube TV client credentials (https://www.youtube.com/o/oauth2/device/code)..envdisk mutation at runtime by persisting tokens atomically to gitignored.youtube-oauth.json.Queue.start()to supply explicitencodedTrackandencodedpayloads for fulllavalink-clientv2 and Lavalink v4 compatibility.Queue.ts./skipand/skiptointeraction responses with suppressed link embeds and accurate position validation.2. 🌐 Web Dashboard & tRPC Modernization
@tanstack/react-queryv5 and tRPC v11./dashboard/[server_id]/commands.NEXTAUTH_URLoptional in@master-bot/authwith fallback toNEXTAUTH_URL_INTERNAL/http://localhost:3000.trustHost: truefor NextAuth v5 to seamlessly support simultaneous access across both localhost and public reverse proxies.NEXTAUTH_URL_INTERNALfor zero-latency local RPC.3. 🛠️ Monorepo Tooling & Developer Experience
scripts/dev.mjs&scripts/start.mjs):freePort()) before startup to prevent zombie socket lockouts on ports 3000, 2333, 5432, and 6379.>=17, PostgreSQL, and Redis.start.mjsensuring.nextproduction bundles exist prior to spawning production servers..envparser incommon.mjsto preserve tab-aligned inline notes without corrupting quotes.4. 🧹 Code Hygiene & Type Safety
@master-bot/bot@master-bot/dashboard@master-bot/api@master-bot/auth@master-bot/db