github museofficial/muse v2.12.0
Release v2.12.0

4 hours ago
  • Keep one shared player card per listening session, with the classic artwork, requester, source, progress bar, and upcoming songs. Move the card and its controls to the latest queue receipt in the session's text channel; older receipts keep their confirmation text.
  • Queue confirmations are now always public. Remove set-queue-add-response-hidden; previously saved values no longer apply. Keep the "u betcha" reply and use Discord's command header to identify the requester without an extra mention.
  • Add labeled Previous, −10s, Pause / Resume, +10s, Next, Queue, and Shuffle buttons. Previous and Next match /unskip and /next; use /stop to stop playback and disconnect.
  • Make the Queue button use the same display and configured page size as /queue, with page navigation when needed. Hide empty queue counts, duration, and page numbers on the player card.
  • Leave an ordered session recap when the queue ends, with no buttons. Mark skipped tracks, preserve repeat plays, and omit songs that never started. Show the full history in the channel, continuing in additional messages when needed.
  • Continue the same history when more music is added before disconnecting. Save session recaps and histories across restarts, marking unfinished playback as interrupted. Music and the queue do not resume automatically after a restart.
  • Update the timer every five seconds by default, with a smoother progress bar, and pause it with the music. Change the interval with PLAYING_MESSAGE_UPDATE_INTERVAL_SECONDS in .env, then restart Muse. Refresh volume, loop, and shuffle changes immediately, including while paused.
  • To change playback, require listeners to share Muse's voice channel and have permission to use the matching command. Preserve role, member, and channel restrictions; ignore the click if permissions cannot be checked. Button controls do not require Add Reactions or Manage Messages.
  • Handle quick clicks and message updates in order. Ignore stale controls and listeners who have left voice, stop updates after failed edits, remove controls when playback ends, and preserve recaps if playback finishes while a card is being sent.
  • Keep paused music paused when seeking, including while audio is buffering, and prevent an older seek from pausing newer playback. The seek buttons move ten seconds within a song and do not work on livestreams.
  • Redact interaction webhook tokens from playback message error logs.
  • Remove repeated songs when shuffling the upcoming queue, including songs already playing or played. Keep the current song and playback history in place. Playlist imports with shuffle enabled remove repeats within the import; different chapters and sources stay separate.
  • Validate extracted media formats before starting FFmpeg. Wait for the availability time reported by yt-dlp, then retry startup HTTP 403 failures after five and ten seconds. Cancelled playback cannot start FFmpeg after a wait or retry.
  • Resolve audio while the voice connection opens, and prefetch the next queued song's media URL during the current song's last minute to reduce startup and transition delays.
  • Keep the retained song available when the queue is cleared during a failed next or previous request. Allow queue looping to be turned off after upcoming songs are cleared or removed.
  • Keep configured bot status and activity when Discord reconnects.
  • Keep long search suggestions, stream URLs, and metadata within Discord's display limits without changing playback URLs. Validate favorite names and queries, and bound autocomplete and favorite lists without changing saved queries.
  • Stop loading YouTube playlist pages once enough playable tracks are found, counting split chapters toward the playlist limit. Limit concurrent video-detail requests to three across imports and lookups; temporary failures retain the HTTP client's retries, and daily API quota limits still apply.
  • Add a private /help command with command examples. Explain that favorites save named searches or URLs for the server, and that the queue-empty delay uses seconds with 0 disabling the timeout.
  • Fix fresh Node.js installs with compatible pagination and Node type dependencies.

Don't miss a new muse release

NewReleases is sending notifications on new releases.