    #[serde(default = "yes")]
    pub has_prev: bool,
    /// The queue around what is playing: the current item and up to ten
    /// either side, rebuilt on every update.
    ///
    /// NOTHING READS IT YET, and that is the point — `MediaService` ignores
    /// both of these fields, so the card is exactly the card it was. media3's
    /// `SimpleBasePlayer.getState()` wants a playlist and an index into it,
    /// and when that migration comes the data it needs should have been
    /// running on the phone for a while rather than have been written the
    /// same day.
    ///
    /// A CAP, not a length: a two-thousand-track queue crosses the bridge as
    /// twenty-one entries exactly like a twenty-one-track one does.
    #[serde(default)]
    pub queue: Vec<QueueItem>,
    /// Where the current item sits IN `queue` — not in the whole queue.
    /// `None` when the window is empty.
    pub queue_index: Option<u32>,
}