summaryrefslogtreecommitdiff
path: root/gradle/wrapper
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-09-21 09:03:48 +0000
committerClaude <noreply@anthropic.com>2026-09-21 09:03:48 +0000
commiteb1c69d47aaee463960909f99973da4cf791d801 (patch)
tree1f8bd7fc3ef92c464011ecd090477db670fb3363 /gradle/wrapper
parentf3b36bacb95d8c57aa036959ad81f3c79127dd22 (diff)
Subscription resolution, OPML, queue ordering, retention
Discovery was cut, so the share sheet and OPML are the only ways to subscribe. That raises the bar on the resolver: anything that fails to resolve is a show the user cannot add at all. It handles a direct feed, a show page via its link rel=alternate, an Apple Podcasts link via its numeric id, and a YouTube channel or playlist via the RSS endpoint YouTube already publishes -- which means a channel becomes an ordinary subscription and only the download step is special. Handle (@name) URLs carry no channel id and return null rather than being guessed at. OPML is ported from FeeDreader but onto XmlPullParserFactory, so unlike the original it is actually testable off-device. Folder nesting is read and recorded even though Listen has no folders: silently discarding structure the user organised is worse than ignoring it. Queue ordering is pure list operations. Re-adding a queued episode moves it rather than duplicating it, play-next on the episode already playing is a no-op instead of interrupting it, and an out-of-range drag index is ignored rather than thrown. Retention keeps an episode when its position is non-zero even though it is marked played -- that combination means it was resumed, and the audio is in use. Disabled is a flag, not an enormous grace period, because playedAt + Long.MAX_VALUE overflows negative and would delete everything. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to 'gradle/wrapper')
0 files changed, 0 insertions, 0 deletions