Commit Graph

41 Commits

Author SHA1 Message Date
thibaud-leclere
369893a77e refactor: track import progress per film instead of per batch
Replace batch-level progress (processedBatches/totalBatches) with
film-level progress (processedFilms/totalFilms) for smoother UI updates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 19:30:15 +02:00
thibaud-leclere
353ffddeea feat: add popover to confirm abandon 2026-04-01 14:36:41 +02:00
thibaud-leclere
116812b3f8 save movies release date in BDD, remove unused badge, add help to export movie from letterboxd 2026-03-31 22:18:46 +02:00
thibaud-leclere
ded3d063c6 fix: render hint popover via FloatingPortal to prevent overflow clipping
The popover was invisible because it rendered inside the table's
overflow-x:auto scroll container. FloatingPortal moves it to document.body.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:49:46 +02:00
thibaud-leclere
2e65b2805a feat: add login hint on start page for unauthenticated users
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:49:41 +02:00
thibaud-leclere
dba9b985ee feat: rename site title to LtbxdActorle with dual-color branding
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:38:26 +02:00
thibaud-leclere
6a844542ad feat: replace notifications with import status in profile dropdown
Remove the notification system entirely and show import progress
directly in the user dropdown menu. Block new imports while one
is already running.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:34:05 +02:00
thibaud-leclere
8942e7f608 fix: integrate hint buttons into table for perfect row alignment and sticky scroll
Move hint buttons from a separate flex column into the table as the
first <td> of each row, ensuring pixel-perfect alignment with grid rows.
Use position:sticky with box-shadow to keep hints fixed on the left
while scrolling horizontally.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 19:36:32 +02:00
thibaud-leclere
f6d180474a feat: responsive grid with scrollable area and fixed hint column
- Add CSS variables (--cell, --cell-font, --trigger-h) for responsive cell sizing
- Shrink grid cells at 600px and 420px breakpoints
- Add .page-body wrapper with 16px horizontal padding to prevent edge collisions
- Separate hint column from scrollable grid: hints rendered outside the table in a fixed flex column, only the letter grid scrolls horizontally

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 14:17:22 +02:00
thibaud-leclere
ecfc80c349 style: redesign hint buttons — rectangular pink with white icon, more spacing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 11:09:57 +02:00
thibaud-leclere
1fd6dcc5d3 fix: add 16px left margin to popover to avoid screen edge
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 22:54:59 +02:00
thibaud-leclere
0706d99c82 fix: force popover to left placement with soft wrap when space is limited
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 22:53:58 +02:00
thibaud-leclere
8d413b5c57 fix: review fixes — cache Wikidata calls, add timeout, improve escaping, hide empty popovers
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 22:38:05 +02:00
thibaud-leclere
91f45448f0 feat: replace ? button with hint type icons in ActorPopover 2026-03-30 22:35:39 +02:00
thibaud-leclere
335a55562f feat: handle non-letter characters in actor names with separator rows
Display spaces, hyphens and other non-letter characters as static cells
instead of input fields, and add separator rows in the grid for
non-alphabetic characters in the main actor's name.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 21:59:11 +02:00
thibaud-leclere
86bf2eb1d3 feat: move hints column to the left of the game grid
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 21:33:40 +02:00
thibaud-leclere
52c40f1ecc feat: add bug report issue template and report button on game grid
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:36:39 +02:00
thibaud-leclere
2f5ba701b6 feat: wrap game in centered card, style abandon button, abandon anonymous game on login
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 19:55:32 +02:00
thibaud-leclere
96adefbb1e feat: update homepage template with start/abandon game UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 19:46:58 +02:00
thibaud-leclere
3c15c12255 update theme 2026-03-30 12:13:19 +02:00
thibaud-leclere
f42a3ba286 fix: manually register Stimulus controllers in bootstrap.js
Auto-discovery may not work reliably with vite-plugin-symfony.
Explicit registration ensures dropdown, notifications, and
import-modal controllers are loaded.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 23:14:16 +02:00
thibaud-leclere
23c291d2c2 fix: modal-overlay hidden attribute overridden by display:flex
The CSS display:flex on .modal-overlay was overriding the HTML hidden
attribute, making the modal always visible.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 23:12:15 +02:00
thibaud-leclere
b0024bbcf5 feat: add navbar, dropdown, modal and notification styles
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 10:23:57 +02:00
thibaud-leclere
300699fa82 feat: add Stimulus import modal controller 2026-03-29 10:23:19 +02:00
thibaud-leclere
c9880baddb feat: add Stimulus notifications controller with polling 2026-03-29 10:22:58 +02:00
thibaud-leclere
1ea07a2438 feat: add Stimulus dropdown controller 2026-03-29 10:22:37 +02:00
thibaud-leclere
9cb5c6e2a5 fix: use vite-plugin-symfony Stimulus loader and wrap react_component in div
Some checks failed
Build and Push Docker Images / Build app image (push) Failing after 17s
Build and Push Docker Images / Build database image (push) Successful in 8s
Build and Push Docker Images / Build node image (push) Failing after 17s
The @symfony/stimulus-bundle loader generates an empty controllers.js,
so Stimulus controllers from controllers.json (including ux-react) were
never registered. Switching to vite-plugin-symfony/stimulus/helpers
uses the virtual:symfony/controllers module that properly reads
controllers.json. Also wrap react_component() output in a <div> since
it only renders data-attributes, not a full HTML element.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 15:02:27 +01:00
thibaud-leclere
a6064c2bdb fix: switch to @vitejs/plugin-react-swc and manual component registration
- Replace @vitejs/plugin-react with @vitejs/plugin-react-swc to fix
  React Refresh preamble detection error in cross-origin Docker setup
- Register React components manually via window.resolveReactComponent
  since ux-react's registerReactControllerComponents uses Webpack's
  require.context API which is incompatible with Vite

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 13:40:16 +01:00
thibaud-leclere
783a8492e9 fix: use import.meta.glob instead of require.context for Vite compatibility
require.context is Webpack-only. Vite uses import.meta.glob.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 13:35:57 +01:00
thibaud-leclere
deb826401d style: add game grid and popover styling 2026-03-28 13:19:53 +01:00
thibaud-leclere
6290cef3fe feat: integrate GameRow into GameGrid 2026-03-28 13:19:44 +01:00
thibaud-leclere
29667f0b1e feat: add GameRow component composing LetterInput and ActorPopover 2026-03-28 13:19:37 +01:00
thibaud-leclere
ac5bd38954 feat: add ActorPopover component with floating-ui 2026-03-28 13:19:29 +01:00
thibaud-leclere
ad014c2547 feat: add LetterInput component with auto-focus navigation 2026-03-28 13:19:21 +01:00
thibaud-leclere
748b1c7a08 feat: render game grid as React component via SymfonyUX 2026-03-28 13:19:13 +01:00
thibaud-leclere
1640d8d9d9 style: add auth page styling 2026-03-28 13:17:19 +01:00
thibaud-leclere
f7a9be6a38 chore: configure vite, react, and stimulus bootstrap 2026-03-28 13:11:41 +01:00
thibaud-leclere
bd3996f4a9 chore: remove asset-mapper, install vite-bundle and ux-react 2026-03-28 13:11:09 +01:00
thibaud-leclere
a196fac6c6 Generate grid 2026-01-31 16:17:24 +01:00
thibaud-leclere
e5d5fe4343 wip 2026-01-13 21:26:00 +01:00
thibaud-leclere
d4a3d32e0a init 2026-01-13 13:59:05 +01:00