Commit Graph

62 Commits

Author SHA1 Message Date
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
201faf3789 chore: add make rule for Symfony secrets
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 10:37:55 +02:00
thibaud-leclere
5fc6b4a53b feat: add Messenger worker Docker service
Some checks failed
Build and Push Docker Images / Build app image (push) Failing after 37s
Build and Push Docker Images / Build node image (push) Has been cancelled
Build and Push Docker Images / Build database image (push) Has been cancelled
Reuses the app image with messenger:consume command.
Restarts automatically, with 1h time limit and 256M memory limit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 10:30:23 +02:00
thibaud-leclere
6edc122ff6 fix: address code review issues
- Rename `read` column to `is_read` (PostgreSQL reserved word)
- Wrap navbar + modal in parent div for Stimulus controller scope
- Set temporary filePath before first flush in ImportController
- Use RETURNING clause for atomic incrementProcessedBatches
- Return proper empty 204 response in NotificationController

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 10:27:57 +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
a348de01b0 feat: add navbar with user dropdown and import modal 2026-03-29 10:22:20 +02:00
thibaud-leclere
4f8eb5f3dc feat: add notification API endpoints 2026-03-29 10:21:30 +02:00
thibaud-leclere
2cfbe191cf feat: add POST /api/imports endpoint 2026-03-29 10:21:02 +02:00
thibaud-leclere
4955c5bde9 feat: add ImportFilmsBatchMessageHandler 2026-03-29 10:20:24 +02:00
thibaud-leclere
98be393e3c feat: add ProcessImportMessageHandler 2026-03-29 10:19:31 +02:00
thibaud-leclere
2d768e8b52 feat: add Messenger messages for import processing 2026-03-29 10:18:35 +02:00
thibaud-leclere
dedc41e237 refactor: extract ActorSyncer service from SyncActorsCommand 2026-03-29 10:18:00 +02:00
thibaud-leclere
bbbfb895af refactor: extract FilmImporter service from SyncFilmsCommands 2026-03-29 10:17:17 +02:00
thibaud-leclere
1bf8afd88e feat: add Notification entity 2026-03-29 10:16:29 +02:00
thibaud-leclere
7be4de6967 feat: add Import entity with batch tracking 2026-03-29 10:11:30 +02:00
thibaud-leclere
5f7ddcd3cc feat: add UserMovie join entity 2026-03-29 10:10:27 +02:00
thibaud-leclere
5d16d28c59 feat: install Flysystem S3 and configure SeaweedFS storage
Add league/flysystem-bundle and league/flysystem-aws-s3-v3 packages and
configure the default.storage adapter to use AWS S3Client pointed at the
SeaweedFS endpoint (s3.lclr.dev) with path-style endpoints and secret-based
credentials.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-29 10:08:56 +02:00
thibaud-leclere
def97304a9 docs: add implementation plan for user import & notifications
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 10:06:32 +02:00
thibaud-leclere
720e8e0cf9 docs: add design spec for user film import, navbar & notifications
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 10:00:46 +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
ae9b0fdba7 ci(docker): add node image build-and-push job to workflow
Some checks failed
Build and Push Docker Images / Build app image (push) Failing after 11s
Build and Push Docker Images / Build database image (push) Successful in 10s
Build and Push Docker Images / Build node image (push) Failing after 10s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 14:00:32 +01:00
thibaud-leclere
cb0ea949f6 chore(docker): add image for node
Some checks failed
Build and Push Docker Images / Build app image (push) Failing after 10s
Build and Push Docker Images / Build database image (push) Successful in 9s
2026-03-28 13:54:43 +01:00
thibaud-leclere
7abca03122 fix: drop react-swc plugin for esbuild JSX and add vite-bundle routes
Use esbuild's built-in JSX transform instead of @vitejs/plugin-react-swc
to fix the React Fast Refresh preamble error caused by eager glob imports.
Add missing pentatrion_vite routes to fix web debug toolbar 500 errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 13:51:54 +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
04301642bc fix: add CORS and HMR config to vite for cross-origin Docker setup
The app is served on port 80 while Vite runs on 5173. The React
plugin needs proper CORS and HMR host config to inject its preamble.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 13:36:57 +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
d590120306 fix: register ViteBundle, add config, share vendor volume with node, add vite-plugin-symfony
- Add PentatrionViteBundle to bundles.php (Flex recipe didn't auto-register)
- Create pentatrion_vite.yaml config
- Share vendor named volume with node container (needed for file: npm deps)
- Add vite-plugin-symfony to package.json devDependencies

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 13:26:47 +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
6d40c4ce08 feat: add registration page with form validation 2026-03-28 13:17:07 +01:00
thibaud-leclere
64949d2ec2 feat: add login page with SecurityController 2026-03-28 13:16:50 +01:00
thibaud-leclere
1720246382 feat: configure security with form_login and access control
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 13:15:43 +01:00
thibaud-leclere
376a01bff5 feat: add User entity with email/password/roles
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 13:15:40 +01:00
thibaud-leclere
d175202163 chore: add node docker service for vite dev server and prod build 2026-03-28 13:14:09 +01:00
thibaud-leclere
c3dab636b1 chore: switch base template from importmap to vite 2026-03-28 13:11:57 +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
8af386bd5c docs: add implementation plan for auth + React frontend
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 13:06:42 +01:00
thibaud-leclere
e376a97dad docs: add design spec for auth + React frontend
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 13:02:09 +01:00
thibaud-leclere
4c5e82cb9d Update docker workflow
Some checks failed
Build and Push Docker Images / Build app image (push) Failing after 8s
Build and Push Docker Images / Build database image (push) Successful in 9s
2026-03-28 10:20:24 +01:00
thibaud-leclere
21b0f681be chore(docker): dockerize app, add workflow to push image on gitea registry
Some checks failed
Build and Push Docker Images / Build app image (push) Failing after 3m4s
Build and Push Docker Images / Build database image (push) Failing after 15s
2026-03-28 09:22:47 +01:00