Commit graph

18 commits

Author SHA1 Message Date
Scott Scoble
6494567713 feat: add lesson detail view with Typst HTML rendering and Jellyfin media player
- 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
2026-05-15 21:53:08 -07:00
68c6861e70 Merge pull request 'feat: web admin UI for lesson management (#7)' (#14) from issue-7-admin-ui into main 2026-05-15 21:50:30 -07:00
e4967e1cda fix: sync admin UI schema with plugin (UUID keys, lesson_media table)
Schema now matches plugin Data/LessonStore.cs exactly:
- id TEXT PRIMARY KEY (UUIDs)
- lesson_media table (not media_items)
- Full column set with NOT NULL constraints matching plugin

Addresses PR #14 review feedback.
2026-05-15 21:50:21 -07:00
5e9fdd1748 Merge pull request 'feat: Lessons page with API and sidebar nav entry (#5)' (#15) from issue-5-lessons-page into main 2026-05-15 21:49:31 -07:00
Scott Scoble
2df642cf52 feat: add Lessons page with API and sidebar nav entry (#5)
- Add LessonsController with GET /Plugins/Lessons/List endpoint
- Add LessonStore DI registration in ServiceRegistrator
- Add lessonsPage.html embedded resource with grouped lesson listing
- Implement IHasWebPages in Plugin for sidebar nav entry
- Add ImplicitUsings/Nullable to csproj for net9.0 compatibility
- Add Microsoft.AspNetCore.App FrameworkReference for MVC
- Fix ServiceRegistrator to match 10.10.x IPluginServiceRegistrator signature
2026-05-15 21:48:43 -07:00
Scott Scoble
6e7d2372e7 feat: add web admin UI for lesson management (#7)
- REST API server on port 3099 with better-sqlite3
- CRUD endpoints for lessons, Typst compile endpoint
- Shared DB path with plugin (~/.local/share/jellyfin-lessons/lessons.db)
- Single-page admin UI with sidebar (grouped by grade/subject)
- Lesson editor with Typst source editing, live preview via compile
- Media items management (Jellyfin item UUIDs with sort order)
- CORS enabled for local dev
2026-05-15 21:43:34 -07:00
08f040d317 Merge pull request 'feat: Typst lesson template with Jellyfin media frontmatter' (#9) from issue-3-typst-template into main 2026-05-15 21:39:37 -07:00
8b9d156166 fix: make media-ref inline with block: false
raw() defaults to block mode which wraps output in <pre><code>,
breaking list-item rendering. block: false keeps it inline.

Addresses PR #9 review feedback.
2026-05-15 21:39:28 -07:00
fa91314c49 Merge pull request 'feat: SQLite lesson data store with schema and C# access layer' (#13) from issue-4-data-store into main 2026-05-15 21:38:51 -07:00
8915beef8e Merge pull request 'feat: Jellyfin plugin skeleton (Plugin.cs, Configuration, ServiceRegistrator)' (#11) from issue-2-plugin-skeleton into main 2026-05-15 21:38:50 -07:00
838d0cbbec feat: SQLite lesson data store with schema and C# access layer
- Lesson.cs and LessonMedia.cs model classes
- LessonStore.cs with CRUD operations
- Microsoft.Data.Sqlite package reference
- Default DB path: ~/.local/share/jellyfin-lessons/lessons.db

Closes #4
2026-05-15 21:38:35 -07:00
88b5de7aee feat: Jellyfin plugin skeleton
- Plugin.cs: BasePlugin<PluginConfiguration>, Name 'Lessons'
- PluginConfiguration.cs: empty config class
- ServiceRegistrator.cs: IPluginServiceRegistrator for DI

Closes #2
2026-05-15 21:37:21 -07:00
1e1d059642 Merge pull request 'feat: scaffold Nix flake with dotnet-sdk_9, typst, and nodejs' (#10) from issue-1-flake-scaffold into main 2026-05-15 21:26:20 -07:00
Scott Scoble
4e12bc5b41 fix: populate deps.json, add Jellyfin package refs, rename csproj to Jellyfin.Plugin.Lessons.csproj
- Generated correct deps.json with nuget-to-json for all NuGet dependencies
- Added Jellyfin.Controller and Jellyfin.Model package references with ExcludeAssets=runtime
- Renamed csproj to Jellyfin.Plugin.Lessons.csproj (updated flake.nix projectFile)
2026-05-15 21:25:13 -07:00
Scott Scoble
d94b71d0a1 feat: scaffold Nix flake with dotnet-sdk_9, typst, and nodejs
- devShells.default provides dotnetCorePackages.sdk_9_0, typst, nodejs
- packages.default uses buildDotnetModule with net9.0 target via callPackage
- Stub plugin/ project with minimal .csproj
- .gitignore with .NET/Nix build artifacts
2026-05-15 21:18:15 -07:00
Scott Scoble
0700c35310 feat: add Typst lesson template with Jellyfin media frontmatter
- Add templates/lesson.typ: reusable template with lesson-template() function
  - Accepts title, grade, subject, date, media, description parameters
  - Comment-based frontmatter convention documented at top
  - Renders title heading, metadata line, description, body, media section
  - Media references use raw(lang: "jellyfin-media") for identifiable HTML elements
- Add templates/example-lesson.typ: complete example (Water Cycle lesson)
  - Demonstrates all template features
  - Christian-homeschool appropriate content (Psalm 135:7)
  - Includes 2 Jellyfin media references

Closes #3
2026-05-15 21:18:04 -07:00
Scott Scoble
462db42a18 Architecture and component overview 2026-05-15 21:12:08 -07:00
8c213d8cc1 Initial commit 2026-05-15 21:10:26 -07:00