Podcast quick wins: tab badge, remember speed, sleep timer, persist queue #6

Closed
opened 2026-07-01 17:05:46 +00:00 by admin · 0 comments
Owner

Summary

A bundle of small, expected podcast-app behaviors. Each is independently
shippable; grouped here to keep the tracker tidy.

Checklist

  • Unread badge on the Podcasts tab — show the count of unplayed episodes
    (PodcastIndex.all().filter { !$0.isPlayed }.count) via .badge(...) on the
    Podcasts Tab in MarksApp. Refresh on played-state changes.
  • Remember playback speedPodcastPlayerViewModel.playbackSpeed resets
    to 1.0 every session. Persist it (UserDefaults/@AppStorage) and apply on
    setupPlayer.
  • Sleep timer — end-of-episode / 15·30·45 min options in the full player;
    pause playback when it fires. New state on the player VM + a menu next to the
    speed control.
  • Persist the Up Next queuePodcastPlayerViewModel.queue is in-memory;
    killing the app mid-queue loses it. Persist the queue (+ current episode) and
    restore on launch.

Motivation

Individually minor, collectively these are the difference between "a player" and
"a podcast app."

## Summary A bundle of small, expected podcast-app behaviors. Each is independently shippable; grouped here to keep the tracker tidy. ## Checklist - [ ] **Unread badge on the Podcasts tab** — show the count of unplayed episodes (`PodcastIndex.all().filter { !$0.isPlayed }.count`) via `.badge(...)` on the Podcasts `Tab` in `MarksApp`. Refresh on played-state changes. - [ ] **Remember playback speed** — `PodcastPlayerViewModel.playbackSpeed` resets to `1.0` every session. Persist it (UserDefaults/@AppStorage) and apply on `setupPlayer`. - [ ] **Sleep timer** — end-of-episode / 15·30·45 min options in the full player; pause playback when it fires. New state on the player VM + a menu next to the speed control. - [ ] **Persist the Up Next queue** — `PodcastPlayerViewModel.queue` is in-memory; killing the app mid-queue loses it. Persist the queue (+ current episode) and restore on launch. ## Motivation Individually minor, collectively these are the difference between "a player" and "a podcast app."
admin closed this issue 2026-07-01 18:18:57 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/linkding-ios#6