Files
ipodderx-rs/TODO.md
rays a30edff248 Release 0.5.4: remembered view, Auto theme, Currently Listening
- Remember the feed/place and tab across a reload or new visit; an
  unknown or unsubscribed one lands on All Subscriptions instead of the
  first feed alphabetically.
- Add an Auto theme that follows the system's light/dark setting, and
  move Dark/Light/Classic/Auto into Settings as a dropdown alongside the
  header button's toggle.
- Add Currently Listening below Popular: episodes started and not
  finished, across every subscribed feed, one tap to resume. Reuses the
  existing entries/filter machinery (Filter::InProgress) rather than a
  new endpoint.
- Likely fix for the iOS bug where the topbar stopped responding to taps
  until a hard refresh (100vh -> 100dvh); unverified on a real device.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DmQfE1eFPApnXWyPHBWqUA
2026-09-14 15:38:03 +00:00

4.5 KiB

To do

Errors in the log

From the production log and the feeds' stored errors on 2026-09-13. The Docker log only reached back to 12:32 UTC, so the list comes from feeds.last_error: 57 of 1,059 feeds. None of it is ipx's User-Agent; a browser gets the same answers.

  • Stop scanning an OPML's feeds once nobody subscribes to it. 55 of the 57 are feeds from davewiner (lists.opml.org/davefeeds.xml). The list left config.toml about 14 hours before this was written, but its 922 feeds are still in the database and still scanned every hour, with auto-download on: subscriptions() adds every derived feed, and with no parent to copy from, auto_download falls back to true (src/main.rs:937). docs/users.md says a feed stops being scanned when its last subscriber leaves. Skip a derived feed whose parent is not in config, and when the last subscriber leaves an OPML, treat its feeds the way sync_group treats ones the list dropped: remove those with nothing downloaded, mark the rest orphaned. remove_feed and ipx rm both leave them behind today. (src/main.rs, src/web.rs)
  • Read feeds with a bare &. kcpw has <link>https://kcpw.org/?post_type=post&p=125715</link>, and both feedland feeds have the same fault. Strict XML refuses them; browsers and other readers do not. When feed::parse fails, try once more with every & that does not start an entity written as &amp;. Nobody subscribes to these three now, but the next feed like them will fail the same way. (src/feed.rs)
  • Say what came back when it is not a feed. Thirteen errors read "not RSS (the input did not begin with an rss tag) and not Atom (...)". Each one checked was a web page: the feed moved and its old URL redirects to the site, or the domain lapsed. Say "got a web page, not a feed", and when the page links a feed (<link rel="alternate" type="application/rss+xml">), name it. That link found the new feed for om.co, ms.now, Letters of Note, the Daily Dot, Hell Gate, The Frame Lab and Daily Kos. A 202 with an empty body (British Antarctic Survey) should read as "nothing yet", not as a parse failure. (src/feed.rs)
  • Show a publisher's error in the UI. Today a failing feed shows its raw error in red only once you open it (web/index.html:877, :960); the OPML view marks a failing child "error" (:988), and the sidebar shows nothing. Mark a failing feed in the sidebar too, and say whose problem it is and what to do, in plain words: a 404 means the publisher took the feed down or moved it, 401 and 403 that the site refuses ipx, 402 that the feed needs a paid plan, a name that no longer resolves that the site is gone, and a web page instead of a feed that it moved (with the new URL when the page links one). Offer Unsubscribe, or Use the new address. Keep timeouts, 5xx and 429 out of it, and flag a feed only once it has failed for a day: macmanx failed once and read fine an hour later. That needs the time a feed started failing, kept beside last_error and cleared when a check succeeds. (web/index.html, src/db.rs, src/main.rs)
  • Westenberg. The only failing feed anyone subscribes to. The Hacker News stars list still gives joanwestenberg.com/rss, which is a 404; the feed is now joanwestenberg.com/feed. Nothing for ipx to fix; subscribe to the new URL directly.

Other Fixes and Features

  • Remember which feed is selected and view (all, unread, flagged, etc) user as selected between visits. If unknown default to All Subscriptions
  • When clicking any link it should open in a new tab
  • In mobile (iOS) sometimes the top line items like the hamburger menu are not clickable unless you do a hard refresh — likely fixed (100dvh instead of 100vh), unverified on a real device; reopen if it still happens
  • video files play as audio files, they should play as video.
  • Move Light/Dark/Classic options to user settings. Include an Auto mode that uses system preferences for light/dark modes
  • Below Popular, have a currently listening section to show what podcasts have been started and not finnished
  • Update subscribe/unsubscribe icons to be circle-minus (unsubscribe) and circle-check (subscribe)
  • If I'm on the Unread tab, and I click to read an item the entry in the list will disappear. it should remain until I click to another item.

Directory Overhaul

  • Directory needs to be more functional, with categories and a more interesting layout. use /frontend-design to help