Files
Carmine Paolino 752cf1688e Publish Spotifast 0.10.0 on the website and mark its features released
Point the version selector and downloads at 0.10.0, and replace the
"On main, after" notes with the release each feature shipped in: 0.10.0
for this release's work and 0.9.0 for notes left over from 0.8.0, each
checked against the tag that first contained it.
2026-09-24 11:05:09 +02:00

142 lines
7.6 KiB
Markdown

---
title: The Queue's Rules
description: What the queue shows, what Add to queue does, and what the app promises about both.
nav_order: 2
---
The queue is the list of what plays next. It has two parts. On top,
under **Playing next**, are the songs you queued yourself. Below them,
under **Next up**, are the songs that come next in whatever playlist or
album is playing. Your songs always play first.
Above both, **Playing from** names where the playing song came from: the
playlist, album, artist, or podcast, which opens when clicked, Liked
Songs, or a radio named after the song, playlist, album, or artist it is
based on, which opens the radio's page. The line shows only while a song is
playing from somewhere Spotify reports.
These are the rules the app follows. The queue tests in `src/app.rs`
check every one of them.
Starting and resuming are separate actions. With Shuffle off, a playlist's
**Play** button starts at its first available song in the selected order.
Double-clicking a row starts there, including with Shuffle on. **Play** in
the player bar resumes the current song at its paused position.
Since 0.10.0, the Shuffle button on a collection page changes the
global playback mode without starting that collection. It can be selected
before a playback device is active; the next **Play** uses the selection.
While another collection plays, toggling Shuffle changes that playback's mode
without switching to the page's collection. The queue then reflects the new
play order.
Since 0.8.0, starting a playlist in its original order explicitly
names its first available song from the loaded prefix. If that prefix is not
loaded, it requests playlist position zero. A page loaded from the middle
never becomes the beginning. This keeps the full Spotify playlist context;
the app does not replace it with a shortened list of loaded songs. A request
waiting for local playback to reconnect keeps the song chosen at the click.
Sorted and filtered views omit unavailable songs and local files from their
playback requests. The displayed rows keep their positions, and selecting a
repeated song starts that occurrence. A filtered playlist or Liked Songs view
plays its matching songs in displayed order, including duplicates. An empty or entirely
unplayable view disables Play instead of starting the unfiltered context.
Since 0.9.0, starting another song on this computer keeps the
selected Repeat mode, with Shuffle on or off. Loading a playlist no longer
silently disables repeat in the playback engine.
Since 0.9.0, silencing the old song during a local track change
keeps the decoder paced while the replacement loads. Cached audio no longer
races to the end and causes an unwanted extra skip during that handoff.
Since 0.9.0, an unexpected local playback disconnect retains the
engine's in-memory playback state before closing the session. Reconnection
restores the same song and position, paused or playing, with its playlist
context, exact shuffle order, manually queued songs (including duplicates),
repeat settings, and pending context pages. This also works when the current
song came from the manual queue rather than the playlist. Playback started
on the replacement engine takes precedence over recovery.
Since 0.9.0, switching from another Connect device back to this
computer transfers that device's current song, position, and queue, including
manually queued copies. A paused session stays paused. The handoff itself does
not consume a queue row or restore an older queue saved on this computer.
1. **The list shows the play order.** The top row plays next, followed by the
rows below it.
2. **Add to queue adds a song to your part of the queue.** It goes after
the songs you queued earlier and before the playlist's songs. Queue
the same song twice and it plays twice. A double-click only counts
once.
Since 0.9.0, an album's **Add to queue** adds its playable songs
in album order, including repeated songs. This also works for singles and
EPs. A fully loaded album appears immediately. Otherwise, a loading notice
appears while all its track pages are fetched, then its songs are appended
together after the songs already queued. A failed fetch adds no partial
album. Clear queue and sign-out cancel an album still being fetched;
changing playback devices asks you to add it again on the new device.
On another device, a rate limit delays additions instead of dropping them.
Spotifast retries automatically after Spotify's requested wait and keeps
later songs behind the album. Pending rows retain their known titles and
durations. If Spotify permanently rejects an addition, only the rejected
song and any unsent remainder of its album disappear; accepted songs stay.
3. **When a song starts, its row leaves the queue.** It doesn't matter
how it started: the song before it ended, you pressed Next, you
clicked its queue row, or another device skipped to it. Only that
occurrence leaves: another copy you queued remains until its own turn.
4. **Next removes the top row right away.** The app doesn't wait for
Spotify to confirm it.
5. **Playing a row from the queue skips to it.** The rows above it are
skipped and removed, as if you had pressed Next down to it. The rows
below it stay, and the playlist keeps going afterwards.
6. **Starting a playlist or album keeps your songs.** The rows underneath
change to the new collection; your songs stay under **Playing next**
and play before the collection continues. If you queue an album and then
start it from the Library, its first song plays now and the separately
queued album still follows. **Clear queue** removes those manual copies
while keeping the playing album's remaining songs.
7. **Clear only removes your songs.** The trash button sits beside the
*Playing next* heading and empties that section; the playlist's rows
below stay. It only shows while this computer is the player, because
that is the only queue the app can actually clear.
8. **Changes appear immediately.** Spotifast updates the queue before Spotify
confirms the change. For local playback, it updates its own player directly.
Toggling shuffle rechecks the queue so the new playback order appears
promptly without waiting for the song to finish.
9. **Closing the app keeps the queue.** Spotifast saves it locally. When you
resume the last song, it restores your queued songs and playlist position.
10. **Old answers from Spotify are ignored.** Queue responses can be a few
seconds late. Spotifast ignores stale responses and asks again. Your
changes stay visible while it waits for confirmation.
Since 0.8.0, selecting several playlist rows and choosing
**Add to queue** preserves repeated occurrences in their selected order.
For example, selecting B, C, B adds all three rows. A repeated click still
counts once, and the notification reports only the rows actually added.
11. **Dragging within *Playing next* reorders it, only on this computer.**
Neither the Web API nor librespot can reorder or insert into a live
queue; the only way to change one is to clear it and re-add its songs
in the new order, which reaches nothing but the engine actually playing
them. So dropping a song, dragged from elsewhere, at a position in
*Playing next* inserts it there, and dragging a row already in
*Playing next* elsewhere in the same section moves it, only while this
computer is the active player. Otherwise every drop still just adds to
the end, exactly like **Add to queue**. *Next up* is never a drop
target: it plays from the current context, not from a list Spotifast
can rewrite. While *Playing next* is empty, drop the song on the player
bar's Queue button instead.