Commit Graph

17 Commits

Author SHA1 Message Date
svemagie
56f859e70d docs: note draft status and simplified content format
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:26:41 +01:00
svemagie
cc3551f3f5 fix: simplify like post content and create as draft
Content is now "Title - Author" instead of "Liked X by Y on YouTube".
Posts are created with post-status: draft so they can be reviewed
before publishing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:25:59 +01:00
svemagie
c0563cfca1 feat: add API endpoints reference to bottom of YouTube dashboard
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:02:58 +01:00
svemagie
768dc40963 feat: add reset button to delete all likes data
POST /likes/reset deletes all YouTube like posts from the posts
collection, clears the youtubeLikesSeen set, and removes the
baseline and sync metadata. Next sync will re-baseline.

Button is tucked inside a <details> disclosure to prevent
accidental clicks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 22:00:50 +01:00
svemagie
f7cf168cd4 docs: describe likes admin dashboard UI sections
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 21:55:13 +01:00
svemagie
6bd7966409 feat: full likes dashboard with connection status, stats, recent likes
- Controller passes baseline status, seen count, recent like posts,
  total count, and flash messages from query params
- View uses Indiekit UI components (section, summary, prose, button,
  notificationBanner) for consistent look
- Recent likes list with thumbnails, titles, channel names
- Connection badge (connected/disconnected), sync controls
- Overview stats: seen videos, like posts, baseline status, last sync
- CSS for likes dashboard components
- Updated en/de locale strings with flash messages and new labels

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 21:54:28 +01:00
svemagie
ab5380bf19 docs: document baseline-first sync, MongoDB collections, troubleshooting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 21:43:08 +01:00
svemagie
252a228653 fix: only sync new YouTube likes, not existing ones
First sync snapshots all current liked video IDs into a
youtubeLikesSeen collection without creating posts. Subsequent
syncs only create posts for likes not in the seen set.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 21:38:51 +01:00
svemagie
72cc2238f4 docs: add YouTube Likes Sync documentation to README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 20:57:31 +01:00
svemagie
3dda28d3dc feat: add YouTube liked videos sync via OAuth 2.0
Adds OAuth 2.0 flow to connect a YouTube account and sync liked
videos as "like" posts on the blog. Includes:
- OAuth authorize/callback/disconnect flow with token persistence
- getLikedVideos() method using videos.list?myRating=like
- Background periodic sync + manual sync trigger
- Dashboard UI for connection status and sync controls
- Public JSON API for querying synced likes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 20:53:38 +01:00
Ricardo
f14453368c feat: add i18n support for 14 languages
Add translations for de, es, es-419, fr, hi, id, it, nl, pl, pt, pt-BR, sr, sv, zh-Hans-CN
to match upstream Indiekit's supported locales.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 22:33:41 +01:00
Ricardo
58ea798106 docs: update CLAUDE.md and README.md with multi-channel support
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 18:23:26 +01:00
Ricardo
4119391ef3 refactor: align to upstream @indiekit/frontend patterns
- Extract 177 lines inline CSS to assets/styles.css
- Create intermediate layout (views/layouts/youtube.njk)
- Use section() macro for dashboard sections
- Rename CSS prefix from yt-* to youtube-*
- Replace inline style for LIVE duration badge with CSS class
- Use upstream CSS custom properties without fallbacks
- Keep animation CSS (@keyframes youtube-pulse)
- Add assets to package.json files array
- Bump version to 1.2.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 19:18:37 +01:00
Ricardo
0413328e43 chore: bump version to 1.2.1 2026-02-06 16:41:20 +01:00
Ricardo
8139bef1d4 feat: multi-channel support in admin dashboard UI
- Dashboard now fetches and displays all configured channels
- Each channel shows its own header, live status, and videos
- Channels are separated by visual dividers
- Backward compatible with single-channel config
- Version bump to 1.2.0

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 17:08:37 +01:00
Ricardo
43090ce8af fix: dashboard controller support for multi-channel mode
The Indiekit backend UI was broken when using channels array
because the dashboard controller only checked for channelId/channelHandle.

Now uses getPrimaryChannel() helper to extract the first channel
from either single-channel or multi-channel configuration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 13:59:25 +01:00
Ricardo
2b8de8027b Initial commit: YouTube channel endpoint for Indiekit
Features:
- Display latest videos from any YouTube channel
- Live streaming status with animated badge
- Upcoming stream detection
- Admin dashboard with video grid
- Public JSON API for Eleventy integration
- Quota-efficient API usage (playlist method)
- Smart caching (5min videos, 1min live status)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 23:02:13 +01:00