Files
ipodderx-rs/TODO.md
rays e38e3c563c Remove unused minus icon; update TODO
Audited the ICON set for consistency: minus was defined but never
referenced anywhere (circleMinus already covers Unsubscribe).
Everything else checked out.

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

50 lines
3.6 KiB
Markdown

# To do
## Errors in the log
- [ ] **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.
## Icons
- [x] **Audit the icon set for consistency.** Checked every glyph in `ICON` (`web/index.html`)
against its source, weight, sizing, and every place it's used — both the `${ICON.x}` template
calls and the `data-icon="x"` lookups the startup loop wires up (`web/index.html:713`). Found one
real problem: `minus`, a bare uncircled minus glyph, was defined but never referenced anywhere;
`circleMinus` already covers the one place a minus-shaped icon is used (Unsubscribe). Removed it.
Everything else checked out: `flag`'s regular weight against `flagOn`'s solid is the standard
outline/filled toggle idiom, not a mismatch; icon sizing is one shared 16px base rule with three
narrowly-scoped overrides; `caret` is deliberately reused (not duplicated) for both the folder
triangle and the sort arrow, rotated correctly per context; play/pause swapping is symmetric.
(`web/index.html`)
## Directory Overhaul
- [ ] **Give feeds a real category, from the feed itself.** `ParsedFeed` only carries per-episode
`categories` (`src/feed.rs:24`); nothing at the channel level survives parsing today, so there is
nothing to browse the directory by. Parse `<itunes:category>` (and its `<itunes:subcategory>` if
present) off the channel the same way entry categories already are, keep the first one a feed
reports rather than building a multi-tag facet, and add it to `FeedSummary` and the feeds table
via a migration. Most feeds will not carry one; a feed with none counts only under "All".
(`src/feed.rs`, `src/db.rs`)
- [ ] **Expose category on `/api/popular` and `/api/directory`.** `PopularRow` (`src/web.rs`) is id,
title, image, subscribers, subscribed today; add `category: Option<String>` once a feed carries
one, so the client can group and filter without a second request.
- [ ] **Replace the flat alphabetical list with a category rail over an artwork grid.** Today
Directory is a single-column list of rows: a thumbnail, a title, a subscriber count, a subscribe
button (`renderListed`/`listFeeds`, `web/index.html:1649`). Put a horizontal row of category chips
above it — "All" plus whatever categories actually occur in the catalogue, never an empty one —
and turn the list itself into a grid of square cover-art tiles with the title underneath: podcast
art is designed to be recognized at a glance, the way the app's own iPod-screen styling already
leans on imagery over text. Keep the subscriber count as a small corner badge (the same treatment
`unread` counts already get in the feed list) and move the subscribe button to appear on
hover/focus instead of sitting on every row permanently. Selecting a chip filters the grid in
place; the active chip gets the EQ-amber underline (`--accent2`) the level meter already uses,
rather than a new color. No new palette and no new typeface — reuse `--bg`/`--fg`/`--accent`/
`--accent2` and the existing Lucida Grande stack so Directory still looks like the rest of ipx, not
a bolted-on card kit: no border, shadow or radius beyond what the app already uses elsewhere. On
phone width the chip row scrolls horizontally in place rather than wrapping, so it never pushes
the grid down. Popular can stay a plain top-ten list for now, or get the same tile treatment later
— worth deciding separately rather than folding into this. (`web/index.html`)