Skip to content

Master-Bot Maintenance & Fix Roadmap #828

Description

@PhantomNimbi

Master-Bot Maintenance & Fix Roadmap

Executive Overview

This roadmap tracks all completed upgrades, runtime bug resolutions, and pending roadmap items across every development session. It is maintained to give a single source of truth for what has been shipped and what remains.

You can find my fork here: PhantomNimbi/Master-Bot


Completed Stages

  • Stage 01: Primary Dependency Alignment — Pinned tRPC 11 (11.15.1), @tanstack/react-query (5.80.3), Prisma (5.22.0), discord.js (14.14.1), and @sapphire/framework (4.8.2).
  • Stage 02: Docker & Workspace Infrastructure — Updated Dockerfile and docker-compose.yml to Node 20 and pnpm 8.6.7. Verified workspace build scripts.
  • Stage 03: Environment Schema Expansion — Added YOUTUBE_REFRESH_TOKEN, music API key schemas, and updated env.ts schema validation.
  • Stage 04: Lavalink v4 Engine Migration — Upgraded from legacy lavaclient v3 to lavalink-client v2 (2.2.0), updating ExtendedClient, QueueClient, Song, and Queue.
  • Stage 05: GIF & Media API Migration — Replaced Tenor API with Klipy API (searchGif.ts) and updated /waifu to waifu.im.
  • Stage 06: Game Search API Migration — Replaced RAWG API with Twitch-backed IGDB API.
  • Stage 07: Audio API Key Gating — Restored SoundCloud as a fallback (gated behind Artist Pro keys). Gated YouTube, Spotify, and Lavalink launch behind present keys.
  • Stage 08: Command & Interaction Audit — Fixed double-reply bugs (/tv-show-search), /waifu SFW/NSFW age gating, /activity channel types, /reddit deferred replies, and /lyrics track title resolution.
  • Stage 09: Documentation Sync — Created comprehensive guides in wiki/ (Setup-and-Deployment.md, Lavalink.md, API-Keys.md, Commands-Reference.md).
  • Stage 10: CI/CD Pipeline Update — Aligned .github/workflows/main.yml with Node 20 and pnpm 8.6.7.
  • Stage 11: GitHub Issue Templates — Converted .github/ISSUE_TEMPLATE/*.md to GitHub Issue Forms (.yml).
  • Stage 12: Control Panel & Log Streaming — Added scripts/dev.mjs, scripts/start.mjs, file-only log streaming (logs/), and web log console router.
  • Stage 13: Automatic Database Migration — Added runDbPush() in scripts/common.mjs to execute prisma db push automatically before bot initialization.
  • Stage 14: CommonJS Build Resolution — Locked @t3-oss/env-core@0.7.1 and lavalink-client@2.2.0 to preserve CJS output compatibility for @master-bot/bot. Set "moduleResolution": "bundler".
  • Stage 15: Log Management & Launcher Security — Configured launcher write streams to overwrite ({ flags: 'w' }) on launch. Gated Lavalink server launch when no audio keys exist.
  • Stage 16: Voice Gateway Packet Routing — Fixed Discord voice connection failure in ExtendedClient.ts by changing this.ws.on() to this.on('raw'), ensuring header t: "VOICE_SERVER_UPDATE" reaches lavalink-client. Reordered plain-text search in searchSong.ts (ytsearch primary).
  • Stage 17: Ambient Token Management & .env Safety — Updated extractYouTubeRefreshToken() regex to handle parenthesized tokens ((1//...)). Replaced string replace() calls in saveYouTubeRefreshToken() with function replacers (() => ...) to eliminate .env corruption. Bound refreshToken: "${YOUTUBE_REFRESH_TOKEN}" natively in application.yml.
  • Stage 18: Audio Root Fixes & Audit — Configured full YouTube InnerTube multi-client roster (MUSIC, ANDROID_VR, IOS, TV, WEB, WEBEMBEDDED); added free preview-filtered SoundCloud streaming; .youtube-oauth.json atomic file persistence; robust console error surfacing; Next.js RSC header serialization fix; NextAuth null safety; precondition latency caching (<300ms); low-level transport VoiceState channelId injection; startup waitForPort sync; Discord video embed suppression; LAVA_ENABLED environment gating; dynamic CommandHelp / HelpRegistry architecture.
  • Stage 19: Remote Cipher, Auth & Monorepo Upgrades — Configured remote cipher (https://cipher.kikkia.dev/) with JVM system property injection; recreated /youtube-auth slash command and device code flow via YouTube TV endpoints; implemented NextAuth v5 dual-domain fallback (trustHost: true); built pre-launch build verifier in start.mjs; cleaned Discord API stale commands; and opened upstream PR feat: modernize monorepo, upgrade Lavalink v4 & cipher, enhance dashboard, and fix auth/tooling #829.
  • Stage 20: Music Trivia Game Feature — Restored interactive /music-trivia and /stop-trivia commands with curated decade catalog (triviaSongs.ts), fuzzy typo matcher (triviaMatcher.ts), 30-second snippet audio streaming via Lavalink, real-time message collection, round reveals, and final podium standings.
  • Stage 21: Unified Settings Command & Welcome Automation — Consolidated guild configuration into /set with Welcome channel/message/toggle/test, Twitch streamer alerts (twitch-add, twitch-remove, twitch-list), Log channel (log-channel, log-disable), default playback volume, and overview (view). Enhanced guildMemberAdd.ts with template placeholders and deleted obsolete standalone commands from the Discord API.
  • Stage 22: Moderation Suite & Support Ticket System — Built 5 moderation slash commands (/ban, /kick, /slowmode, /timeout, /purge), thread-based ticket system with auto-deploying interactive panel, dynamic greeting formatting, and .txt transcript archiving.
  • Stage 23: Docs Sync, Issue Templates & Info Commands — Corrected upstream repo references across docs, rewrote README.md/wiki for accuracy, added .github issue chooser config + 4 targeted issue templates, added a tracked application.yml.example, and shipped feat(bot): upgraded /about (optional type option defaulting to Bot/Server/User info) plus a standalone /dashboard command. Command count now 67.
  • Stage 24: YouTube Playback & Dashboard Repair — Resolved the AllClientsFailedException audio stream-extraction failure by elevating MUSIC to a first-class InnerTube client in the playback roster (MUSIC, ANDROID_VR, IOS, TV, WEB, WEBEMBEDDED) and completing the remote cipher integration, restoring reliable YouTube playback. Completed the full dashboard audit: verified App Router SSR/CSR boundaries, tRPC 11 + React Query 5 integration, NextAuth v5 Discord OAuth session flow, and graceful handling of missing/empty log files.

Session History

  • Session 01 (Baseline Reset): Hard reset main to upstream/main. Preserved previous local state in backup/head-ba4824. Initialized local tracking docs.
  • Session 02 (Stages 01–12): Completed dependency updates, Docker configuration, media API migrations (Klipy/IGDB), wiki documentation sync, control panel scripts (dev.mjs, start.mjs), and owner log console router.
  • Session 03 (Stages 13–17): Resolved Discord voice packet routing via client.on('raw'), added auto DB push (prisma db push), implemented API key gating, fixed plain-text search priority (ytsearch primary), eliminated .env regex replacer string corruption, and enabled native Spring token binding in application.yml. Added the AllClientsFailedException trace and the Dashboard audit plan.
  • Session 04 (Stage 18 Complete): Executed comprehensive root-cause repairs across the audio engine, launcher scripts, auth package, tRPC routers, and dashboard React server/client boundaries.
  • Session 05 (Stage 19 Complete): Integrated remote cipher support, recreated /youtube-auth with native YouTube TV credentials and zero .env mutation, added dual-domain NextAuth compatibility, cleaned stale Discord commands, and published upstream Pull Request feat: modernize monorepo, upgrade Lavalink v4 & cipher, enhance dashboard, and fix auth/tooling #829.
  • Session 06 (Stage 20 Complete): Restored /music-trivia and /stop-trivia with audio streaming, live chat scoring, and verified runtime in Discord.
  • Session 07 (Stage 21 Complete): Unified guild configuration into /set, added welcome placeholders and preview testing, consolidated Twitch and logging settings, and removed stale standalone commands.
  • Session 08 (Stage 22 Complete): Built the 5 moderation slash commands, thread-based support ticket system with auto-deployed panel, dynamic greeting formatting, and .txt transcript archiving.
  • Session 09 (Stage 23 — Docs & Templates Cleanup): Pointed docs at upstream galnir/Master-Bot (never the fork), rewrote README/wiki for accuracy, added issue chooser config + 4 targeted issue templates, added application.yml.example, and pruned gitignored files from the README architecture tree.
  • Session 10 (Stage 23 — Info Commands): Upgraded /about (optional type option defaulting to Bot, plus Server/User) and added a standalone /dashboard command linking to the web dashboard; bumped documented command count to 67.
  • Session 11 (Stage 24 — YouTube Playback Repair): Fixed the AllClientsFailedException by promoting MUSIC to a first-class InnerTube client and completing remote cipher integration, restoring reliable YouTube audio playback across all configured clients.
  • Session 12 (Stage 24 — Dashboard Audit Complete): Completed the dashboard audit and repair: verified App Router SSR/CSR boundaries, tRPC 11 + React Query 5 integration, NextAuth v5 Discord OAuth flow, and graceful empty-log handling.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions