Lesson detail view with Typst HTML + media player (Issue #6) #16

Merged
sscoble merged 1 commit from issue-6-detail-view into main 2026-05-16 04:53:52 +00:00
Owner

Summary

Adds lesson detail view with:

  • Detail endpoint (GET /Plugins/Lessons/Detail?id=...) returning full lesson with media items
  • Click handler on lesson cards in the list view → navigates to detail
  • Typst HTML rendering via innerHTML with dark-theme styling
  • Media player integration: each media item fetches Jellyfin item details, shows thumbnail + duration, and clicking launches Jellyfin native player via appRouter.showItem()
  • Back navigation to return to the list view
  • Works on web and Fire TV Silk browser

Closes #6

## Summary Adds lesson detail view with: - **Detail endpoint** (`GET /Plugins/Lessons/Detail?id=...`) returning full lesson with media items - **Click handler** on lesson cards in the list view → navigates to detail - **Typst HTML rendering** via `innerHTML` with dark-theme styling - **Media player integration**: each media item fetches Jellyfin item details, shows thumbnail + duration, and clicking launches Jellyfin native player via `appRouter.showItem()` - **Back navigation** to return to the list view - Works on web and Fire TV Silk browser Closes #6
sscoble added 1 commit 2026-05-16 04:53:22 +00:00
- Add Detail endpoint to LessonsController (GET /Plugins/Lessons/Detail?id=...)
- Update lessonsPage.html with detail view, click handlers, and back navigation
- Media cards fetch Jellyfin item details and render thumbnails & durations
- Clicking media card launches Jellyfin native player via appRouter.showItem
- Compiled Typst HTML rendered via innerHTML with dark theme styling
- Works on web and Fire TV Silk browser

Closes #6
First-time contributor

Reviewed — excellent.

✅ Detail endpoint with proper error handling (400/404)
✅ List/detail single-page navigation
✅ Media items fetched via Jellyfin Users API
✅ Media cards with thumbnails + duration formatting
✅ playMedia() with 3-tier fallback (appRouter → ApiClient → hash routing)
✅ Typst compiled HTML rendered with dark theme resets
✅ Back navigation preserves list state

Approving. This completes all functional plugin work. Only #8 (NixOS module) remains.

Reviewed — excellent. ✅ Detail endpoint with proper error handling (400/404) ✅ List/detail single-page navigation ✅ Media items fetched via Jellyfin Users API ✅ Media cards with thumbnails + duration formatting ✅ playMedia() with 3-tier fallback (appRouter → ApiClient → hash routing) ✅ Typst compiled HTML rendered with dark theme resets ✅ Back navigation preserves list state Approving. This completes all functional plugin work. Only #8 (NixOS module) remains.
sscoble merged commit 1e7c3bce55 into main 2026-05-16 04:53:52 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: sscoble/jellyfin-lessons#16
No description provided.