- Add runtime field to Movie model and display formatted duration (e.g., 2h 22min) on movie cards
- Add bulk "Refresh OMDb" button in admin panel for selected movies
- Add runtime field to movie edit modal in admin panel
- Implement first-time setup flow: show admin creation form on login page when no admin exists
- Block registration page until initial setup is complete
Co-Authored-By: Claude Opus 4.5 <[email protected]>
The toggle button for "Films non regardés seulement" was invisible
in dark mode. Added specific styles for the form-switch component
with proper background colors and slider visibility.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Issues fixed:
- #87: Extend video session cookie to 24h and add keep-alive refresh every
30 minutes during playback to prevent expiration while watching long movies
- #88: Rank checklist completers by completion datetime (earliest first)
in both the 100% tab and main stats ranking as tiebreaker
- #89: Add confirmation modal when unchecking a movie from the checklist
to prevent accidental removal
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Persist last applied theme in session storage to avoid light-mode flash and toggle flicker when navigating between pages (notably player.html). Also revert README preview back to preview.png for now.
Enable toggling ratings off by re-clicking the same star in the player and movie list, and tighten the movies card layout around rating and categories.
Store per-user 5-star ratings with averages and surface them in the player. Refresh movie list layout to show ratings and details in a cleaner card layout.
Include low-quality video file paths in movie settings, expose them through the admin UI, and add a player toggle that streams /api/video with quality=low when available. Extend both Node and Python video endpoints to serve the low-quality file.
Test: not run (mark for testing)
- Main README.md:
- Reorganized features into User Features and Admin Features sections
- Added missing features: Oscar picks system, category management, winner management, view all picks, database backup/restore
- Updated database models section to list all 6 models
- Simplified Python video server section to reference detailed README
- Kept preview image and existing structure
- python_video_server/README.md:
- Enhanced Endpoints section with response codes and detailed descriptions
- Added comprehensive Functions Reference section:
- Public Endpoints: create_video_session, stream_video, healthz
- Helper Functions: all 16 internal functions documented with descriptions
- Verified all features, environment variables, and endpoints match actual code
- No content removed, only additions for better documentation
- Fix category editing: Added GET /api/categories/:categoryId endpoint to fetch single category by ID, fixing 'Category not found' error when editing categories for active year
- Fix picks handling: Filter out picks for deleted categories when submitting, loading, and calculating scores to prevent errors
- Fix scores display: Always calculate scores from pickDetails instead of stored score value to ensure accuracy when categories are removed
- Add picks cleanup: Automatically clean up picks for deleted categories in database when categories are deleted or scores are fetched
- Fix winner clearing: Allow clearing winners by accepting empty/null winnerName in PUT /api/categories/:categoryId/winner
- Enable category number editing: Made category number editable in edit modal with validation and conflict checking; automatically updates all related picks when category number changes
- Add bulk category management: Added bulk select and delete functionality in Liste tab with select all checkbox and bulk delete button
- Remove import feature: Completely removed PDF/image import functionality including OCR, file upload, and all related UI components
- Update dependencies: Removed unused packages (tesseract.js, sharp, pdfjs-dist, canvas) after removing import feature
- Improve file cleanup: Added retry logic for file deletion to handle Windows file locking issues