Skip to content

Fix silent auto-skip with a reason-aware queue consumer - #131

Open
Skila1 wants to merge 1 commit into
ChocoMeow:betafrom
Skila1:pr/queue-advance
Open

Skila1 wants to merge 1 commit into
ChocoMeow:betafrom
Skila1:pr/queue-advance

Conversation

@Skila1

@Skila1 Skila1 commented Aug 20, 2026

Copy link
Copy Markdown

Summary

Failed and stuck tracks currently call do_next() in a way that can skip unrelated queued songs. This change introduces a single queue consumer: Lavalink TrackEnd reasons go through one PlaybackSession, and QUEUE_ADVANCE moves exactly one logical item.

  • Failed or stuck items advance once (that item only). There is no retry in this PR.
  • Public APIs (Player.current, Queue.get / tracks / history) still return Track, not an internal queue wrapper.
  • Notices, health IPC, websocket CLOSE handling, and optional stuck retry are not included.

Tests

Vocard-function tests on this branch (not Lavalink/YouTube plugin behavior):

  • TrackEnd(loadFailed) / stuck → exactly one advancement
  • generic replaced does not consume the next song
  • skip / stale play completion does not double-advance
  • public queue helpers still return Track

Also ran upstream python tests/runner.py (language packs + language usage + these playback tests) and python -m compileall voicelink cogs.

Notes

This replaces the oversized main-targeted PR with a smaller beta slice. My personal fix/playback-reliability fork is unchanged (retries/notices/health stay on there).

Failed and stuck items now advance once without consuming unrelated queue tracks. Retries, notices, and health stay out of this change.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant