83 Commits
Author SHA1 Message Date
Mathieu MoranandClaude Opus 4.5 6186f3a051 Add movie runtime, bulk OMDb refresh, and first-time setup
- 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]>
2026-02-01 10:08:15 -05:00
Mathieu MoranandClaude Opus 4.5 7a629b6c91 Fix cookie expiration, ranking by completion time, and checklist confirmation
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]>
2026-01-31 22:42:13 -05:00
Mathieu Moran 9868d2c39a Refine admin control layout and stats tabs
Tighten admin tab layout/styling and simplify control UI while aligning stats tab spacing and labels.
2026-01-27 02:45:49 -05:00
Mathieu Moran 0ae3af13f1 Adjust mobile navbar user layout
Center the username between the toggle and sign-out on mobile and remove hard name truncation.
2026-01-26 19:27:57 -05:00
Mathieu Moran cf57eee5a3 Trim long navbar usernames on mobile
Limit displayed user names to 15 characters with ellipsis to prevent layout wrap.
2026-01-26 19:00:27 -05:00
Mathieu Moran 36057d75df UI polish: remove page titles and highlight active nav 2026-01-26 18:15:30 -05:00
Mathieu Moran 1d41cd29d9 Fix theme flash on navigation
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.
2026-01-26 02:46:35 -05:00
Mathieu Moran 01c478aafe Theme rework: polish dark mode and previews
Refine mobile nav layout, improve dark theme UI polish, and update README previews with light/dark variants.
2026-01-26 01:47:17 -05:00
Mathieu Moran a30bbcf514 oops, fixed the embarrassing French label
Corrected the movies page label to proper French.
2026-01-25 18:09:11 -05:00
Mathieu Moran 86a25b77e8 Allow clearing ratings and polish movies UI
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.
2026-01-25 17:58:50 -05:00
Mathieu Moran fe21a12c82 Add user movie ratings and refresh movie cards
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.
2026-01-25 16:16:07 -05:00
Mathieu Moran 406a4f0bb3 Support multiple subtitle tracks
Adds multi-language subtitle storage, upload/removal, and player/admin UI support, plus fixes subtitle metadata updates during upload.
2026-01-25 02:01:08 -05:00
Mathieu Moran 891eb67e2d Add subtitle UI badge and VTT positioning
Documents the disclaimer, shows subtitles in admin movie badges, and offsets VTT subtitles from the bottom.
2026-01-25 01:00:48 -05:00
Mathieu Moran a9592ece7a Add subtitle upload and streaming support
Adds movie subtitle metadata and admin upload flow with SRT to VTT conversion, plus player/control UI and API route updates for subtitle delivery.
2026-01-25 00:29:04 -05:00
Mathieu Moran f9d8722b4e Add low-quality server video support
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)
2026-01-24 09:26:23 -05:00
Mathieu Moran b00280e9e4 Add CAM tagging to movies
Store a CAM flag in the movie model and expose it via the admin add/edit flow, then render a CAM badge on movie posters in the films page.
2026-01-22 14:26:43 -05:00
Mathieu Moran d10164076c Refactor control panel: merge Lecteur tab into Visibilité and add loading bar to Mes picks
- Remove 'Lecteur' subtab from Réglages section
- Move player UI settings (show Source/Progress) into Visibilité tab
- Consolidate reload/save buttons to use single set for both visibility and player UI settings
- Simplify visibility tab formatting with minimalistic, consistent styling
- Add loading bar progress indicator to Mes picks tab matching movies/checklist/stats pages
- Update JavaScript to handle both visibility config and player UI settings together
- Improve code organization and user experience
2025-12-28 02:20:21 -05:00
Mathieu Moran 6a2ec537e9 Fix category management and remove import feature
- 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
2025-12-28 00:48:48 -05:00
Mathieu Moran 7d8077774b Add unsaved changes tracking with banner and button state management in picks tab 2025-12-27 23:38:23 -05:00
Mathieu Moran b39849f745 Filter out scores for removed users in Scores tab (prevent Unknown user display) 2025-12-27 23:21:32 -05:00
Mathieu Moran 70b309d1ae Add visibility toggle for picks features and rename Mes choix to Mes picks
- Renamed 'Mes choix' to 'Mes picks' across all pages and JavaScript files
- Added visibility toggle in control panel (Réglages > Visibilité) to control:
  - Display of 'Mes picks' button in navigation
  - Display of 'Bon picks' column in user statistics
- Combined both visibility options into single toggle for simplicity
- Added backend API endpoints for visibility configuration
- Implemented localStorage caching for instant visibility updates
- Fixed flash of content issues when navigating between pages
- Updated stats endpoint to calculate correct picks on-the-fly from current winners
- Renamed 'Bonnes réponses' to 'Bon picks' in user statistics table
2025-12-27 22:03:01 -05:00
quoije 1281d77c4e WIP: Add points system for movies and picks, admin configuration, and stats page updates 2025-12-26 12:37:30 -05:00
Mathieu MoranandCursor Agent e0d5531041 Movie watch progression tracking (#63)
* feat: Add movie playback progress display and API

Co-authored-by: mathieumoran1 <[email protected]>

* Add padding to bottom of movies page

Co-authored-by: mathieumoran1 <[email protected]>

* Fix: Hide resume/progress bar when near end of video

Co-authored-by: mathieumoran1 <[email protected]>

---------

Co-authored-by: Cursor Agent <[email protected]>
2025-12-22 19:58:37 -05:00
Mathieu MoranandCursor Agent 79b9f4a5a3 Statistics page redesign (#60)
* feat: Add modal to display watched movies with details

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor movie modal: remove search, improve category display

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor movie category display to use details element

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor movie playback and add clickability to stats

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Improve movie linking and player logic

Co-authored-by: mathieumoran1 <[email protected]>

* Prevent caching of sensitive and dynamic API data

Co-authored-by: mathieumoran1 <[email protected]>

* feat: Prevent caching of sensitive admin data

Co-authored-by: mathieumoran1 <[email protected]>

* feat: Add no-cache headers to API requests

Co-authored-by: mathieumoran1 <[email protected]>

* Remove unused movie sorting functionality

The movie sorting dropdown and its associated logic were removed as they are no longer needed.

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor admin settings to use tabs instead of accordion

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Adjust button layout for active year selection

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor active year selection UI

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Improve admin settings layout for better responsiveness

Co-authored-by: mathieumoran1 <[email protected]>

* Remove redundant completion explanation from user-stat.html

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor user stats page to display year in ranking tab badge

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Rename 'Finisseur(s)' column to 'Nombre'

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Remove redundant completer count column

Co-authored-by: mathieumoran1 <[email protected]>

---------

Co-authored-by: Cursor Agent <[email protected]>
2025-12-22 18:16:37 -05:00
Mathieu MoranandCursor Agent 82f9462dda Admin movies tab redesign (#59)
* Refactor admin movie tab into sub-tabs for manage, add, and help

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor admin version management UI and styling

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Adjust footer padding and border-radius

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Improve admin subtab styling

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor admin backup tab into subtabs for backup, restore, and help

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor admin winners tab UI and functionality

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Display all winners by year, not just current year

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor winners tab to simplify management

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor control.html layout for winner section

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor 100% completion modal UI with tabs and preview

Co-authored-by: mathieumoran1 <[email protected]>

* Remove redundant 'Preview' and 'Modal' badges

Co-authored-by: mathieumoran1 <[email protected]>

---------

Co-authored-by: Cursor Agent <[email protected]>
2025-12-22 17:15:46 -05:00
Mathieu MoranandCursor Agent 59eb70dea9 Player text visibility option (#55)
* feat: Add player admin UI settings

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor player UI settings to combine source and progress

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor admin settings to use accordion layout

Co-authored-by: mathieumoran1 <[email protected]>

---------

Co-authored-by: Cursor Agent <[email protected]>
2025-12-22 16:17:31 -05:00
Mathieu MoranandCursor Agent 421206d280 Checklist styling update (#53)
* Refactor checklist styling and structure

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor movie display and styling for better UI

Co-authored-by: mathieumoran1 <[email protected]>

* feat: Add page loader component and integrate into player

Co-authored-by: mathieumoran1 <[email protected]>

* Refactor: Adjust IMDB icon size and alignment

Co-authored-by: mathieumoran1 <[email protected]>

* Feat: Show admin status on player page

Co-authored-by: mathieumoran1 <[email protected]>

---------

Co-authored-by: Cursor Agent <[email protected]>
2025-12-22 05:36:33 -05:00
Mathieu MoranandCursor Agent 1a460ca06c Fix: Prevent early client progress saves from overwriting server progress (#52)
Co-authored-by: Cursor Agent <[email protected]>
2025-12-22 05:08:53 -05:00
Mathieu MoranandCursor Agent a75a024249 Fix: Improve playback progress saving and retrieval (#51)
Co-authored-by: Cursor Agent <[email protected]>
2025-12-22 04:54:03 -05:00
Mathieu MoranandCursor Agent d933d69b5f feat: Add IMDb ID to playback progress and auto-mark as watched (#50)
Co-authored-by: Cursor Agent <[email protected]>
2025-12-22 04:39:52 -05:00
Cursor Agentandmathieumoran1 0c488319f6 Refactor: Rename "Oscar Pool" to "Pool Oscars" in titles
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 07:33:32 +00:00
Cursor Agentandmathieumoran1 76e9a934d6 Refactor: Update brand name and dynamic titles
Consistently use "Oscar Pool" as the brand name. Dynamically update page titles to include the active Oscar year.

Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 07:31:26 +00:00
Cursor Agentandmathieumoran1 e91c919b46 Refactor: Use query token for API video playback
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 07:11:03 +00:00
Cursor Agentandmathieumoran1 fd881399cd Add caching and token fallback for /api/video streams
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 07:02:32 +00:00
Cursor Agentandmathieumoran1 8d93c31df8 Refactor video progress tracking UI and logic
Improve progress UI, handle token expiration, and fix restore logic.

Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 06:57:58 +00:00
Cursor Agentandmathieumoran1 1cda3c23e1 Refactor video progress saving logic
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 06:43:29 +00:00
Cursor Agentandmathieumoran1 ce234d0fac feat: Add video playback progress display and saving
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 06:40:18 +00:00
Cursor Agentandmathieumoran1 8590c30596 Add support for App/Python protected video streams
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 06:33:45 +00:00
Cursor Agentandmathieumoran1 2025f0231c Add movie ID display and copy functionality
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 05:38:42 +00:00
Cursor Agentandmathieumoran1 ea37bf95ef Refactor video session handling and CORS configuration
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 05:35:50 +00:00
Cursor Agentandmathieumoran1 e6537884a3 feat: Add Python video server and improve playback
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 05:25:19 +00:00
Cursor Agentandmathieumoran1 2f767e15a6 feat: Add server-hosted video streaming support
Introduces a new /api/video route for streaming video files stored on the server. This allows for direct playback of local video files with seeking capabilities. The Movie model and UI have been updated to support this new feature.

Co-authored-by: mathieumoran1 <[email protected]>
2025-12-22 05:12:06 +00:00
Cursor Agentandmathieumoran1 e6f3b02830 Refactor: Improve header loading and image rendering
Add early JS to populate header elements and optimize image loading.

Co-authored-by: mathieumoran1 <[email protected]>
2025-12-21 23:02:22 +00:00
Cursor Agentandmathieumoran1 1f3511b455 Refactor version history display and styling
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-21 22:21:03 +00:00
Cursor Agentandmathieumoran1 f5bd8709a0 feat: Manage app version from admin panel
Removes GitHub dependency for app version display.

Co-authored-by: mathieumoran1 <[email protected]>
2025-12-21 22:15:15 +00:00
Cursor Agentandmathieumoran1 1bc65ebd77 Refactor page loader to use a dedicated JS class
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-21 22:04:58 +00:00
Cursor Agentandmathieumoran1 d9ed2cdc92 Refactor: Preload page loader and use DOMContentLoaded
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-21 21:59:02 +00:00
Cursor Agentandmathieumoran1 00f5328c75 Refactor: Simplify page loader UI and error handling
Remove subtitle and retry button from page loader. Update CSS for new loader style.

Co-authored-by: mathieumoran1 <[email protected]>
2025-12-21 21:54:59 +00:00
Cursor Agentandmathieumoran1 d683f04305 Fix page loader alignment with dynamic navbar
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-21 21:53:19 +00:00
Cursor Agentandmathieumoran1 fa0ba74682 feat: Implement full-page loader with progress bar
Co-authored-by: mathieumoran1 <[email protected]>
2025-12-21 21:50:24 +00:00