docs(todo): #60 — add channel-profile category tabs (Videos/Audio/Live/Shorts)

Expands the Audio-tab item with a channel-profile tab strip carrying the same
media categories (Videos / Audio / Live-Streams / Shorts), each its own lazily-
loaded per-tab playlist, empty categories hidden, mirrored on the sidebar. Adds a
shared media-category resolver (video|audio|live|short from kind + imeta m + t)
used by both the sidebar feeds and the channel tabs — the natural home for the
#17 unified media grid. Cross-refs #16 (NIP-53 live + kind-22 shorts) / #17.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
thePR0M3TH3ANandClaude Opus 4.8 committed 2026-07-09 10:00:08 -04:00
1 parent 0c09f2854c
commit bae517a4b3
1 file changed
+20 -2
+20 -2
View File
@@ -2022,6 +2022,24 @@ example: event `95053d75…` "Nostr Compass Podcast #20" (pubkey `b7ed68b0…`).
(`audio`/`podcast`/`music`) parallel to `t:video` so the Audio tab has a clean
feed filter (like the video feed's `#t video`), and gate the tab behind its
own config flag (mirrors the streaming tab pattern in #16).
- [ ] **Channel-profile category tabs (requested 2026-07-09).** The channel profile
should carry the same media categories as a tab strip so a creator's page stays
neat and self-explanatory instead of mixing everything into one grid:
- **Videos** (current default — kind 30078 video / NIP-71 21+34235),
- **Audio** (audio-only notes — podcasts / music; the #60 audio player),
- **Live** / **Streams** (NIP-53 kind 30311 — see #16; show live now + past),
- **Shorts** (NIP-71 kind 22 short-form vertical — see #16).
Each tab is its **own category playlist** that only loads/renders when that tab
is selected (lazy per-tab fetch, no cross-contamination — the audio guard keeps
Audio out of Videos and vice-versa). Only show a tab when the creator actually
has content of that type (hide empty categories). Mirror the same tab set on the
main feed/sidebar so the sidebar category ↔ channel tab stay consistent.
- [ ] **Shared category model:** define one media-category resolver
(`video | audio | live | short`) derived from kind + `imeta m` + `t` markers,
used by BOTH the sidebar feeds and the channel tabs, so a note lands in exactly
one category everywhere. This is the natural home for the #17 unified media grid.
- [ ] **Cross-refs:** shares the "new media type behind a sidebar tab + config flag"
shape with #16 (live streams / NIP-53) and the #17 unified media grid — plan
the loaders together so video / live / audio don't each grow a bespoke fetch.
shape with #16 (live streams / NIP-53, incl. kind-22 shorts) and the #17 unified
media grid — plan the category resolver + per-tab loaders together so video /
audio / live / shorts don't each grow a bespoke fetch, and so the channel-profile
tabs and sidebar tabs share one source of truth.