trackers: media hub with webtoons, podcasts and videos; shows and anime filters
Deploy production / deploy (push) Successful in 1m22s

- /trackers/media: one card per child (reading, movies, shows, webtoons, music, podcasts,
  videos) with quick stats, a combined currently-consuming feed and a mixed watchlist
- webtoons, podcasts, videos: new owner-editable trackers on one generic media.items table,
  JSON import (owner form or scripts/media-run.sh)
- shows: /trackers/shows -> /trackers/movies?type=show; anime flag on movies.titles
  (backfilled, set from TMDB, owner toggle) and ?type=anime filter
- nav: media replaces the top-level reading, movies and music entries; their URLs are kept
This commit is contained in:
stan committed 2026-10-26 23:34:22 +00:00
1 parent 4ef75f9d25
commit 079399635d
33 files changed
+48352 -44

No files matched your search

+47
View File
@@ -236,6 +236,53 @@ export const trackerIcons: Record<string, TrackerIcon> = {
'M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12'
]
},
// Media hub (/trackers/media) and its children without an icon of their own.
media: {
from: '#f472b6',
to: '#9333ea',
ink: WHITE,
// library shelf
paths: ['m16 6 4 14', 'M12 6v14', 'M8 8v12', 'M4 4v16']
},
shows: {
from: '#38bdf8',
to: '#0e6fb0',
ink: WHITE,
// tv
paths: [
'M4 7h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2z',
'm17 2-5 5-5-5'
]
},
webtoons: {
from: '#4ade80',
to: '#16a34a',
ink: WHITE,
// phone with stacked comic panels
paths: [
'M7 2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z',
'M5 8.5h14',
'M5 15h14',
'M12 8.5V15'
]
},
podcasts: {
from: '#c084fc',
to: '#9d4edd',
ink: WHITE,
// microphone
paths: ['M12 19v3', 'M19 10v2a7 7 0 0 1-14 0v-2', 'M9 5a3 3 0 0 1 6 0v6a3 3 0 0 1-6 0Z']
},
videos: {
from: '#f87171',
to: '#e02424',
ink: WHITE,
// play button (YouTube-like)
paths: [
'M2.5 17a24 24 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.6 49.6 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24 24 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.6 49.6 0 0 1-16.2 0A2 2 0 0 1 2.5 17',
'm10 15 5-3-5-3z'
]
},
spotting: {
from: '#fbbf24',
to: '#e11d48',