Commit graph

155 commits

Author SHA1 Message Date
thibaud-leclere
253fdcf040 fix: keep main actor column highlighted on abandon 2026-04-11 12:52:13 +02:00
thibaud-leclere
2c5c9899bd fix: preserve attempt feedback when abandoning game 2026-04-11 12:47:52 +02:00
thibaud-leclere
15760ebc08 Add configurable game start filters 2026-04-11 12:40:54 +02:00
thibaud-leclere
0698589d5b Fix test bootstrap and ActorSyncer test doubles 2026-04-11 12:39:35 +02:00
thibaud-leclere
d9b8853d11 fix: keep synced actors available for award import 2026-04-11 11:55:31 +02:00
thibaud-leclere
62a0fdb4c6 update .gitignore 2026-04-11 11:00:54 +02:00
thibaud-leclere
6e83355231 fix: reveal grid solutions when abandoning game 2026-04-11 10:58:33 +02:00
9dcf43052d docs: retry tmdb requests 2026-04-05 23:37:37 +02:00
6f9739d4c8 fix: retry TMDB requests on timeout and 5xx errors 2026-04-05 21:01:29 +02:00
665a6c5385 feat: mark import as 'error' in case it fails 2026-04-05 20:37:26 +02:00
15a50e02e4 chore: remove unused example assets (fixes #2)
Delete hello_controller.js and Hello.jsx, which are Symfony/UX
boilerplate files not referenced anywhere in the project.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 14:22:20 +02:00
61851ac19a feat: add success flash on register 2026-04-04 18:18:41 +02:00
699e9952f0 fix: correct host for gitea registry 2026-04-04 18:06:40 +02:00
thibaud-leclere
1f99b1068e docs: add victory condition implementation plan 2026-04-03 21:43:30 +02:00
thibaud-leclere
b641f947ba fix: center create game button 2026-04-03 21:42:59 +02:00
thibaud-leclere
2382d6f8d3 docs: add victory condition design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-03 21:26:47 +02:00
thibaud-leclere
843009e193 feat: include release year in film hint text
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 00:25:05 +02:00
thibaud-leclere
2e7d7ecf44 fix: register game-config Stimulus controller in bootstrap.js
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 00:09:08 +02:00
thibaud-leclere
6b514aa87b feat: sort award types by actor count descending
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 00:05:55 +02:00
thibaud-leclere
51a9f49797 fix: address code review findings
- Guard against empty awardTypeIds array in AwardRepository
- Refactor Stimulus controller to use data-action attributes instead of
  imperative addEventListener (fixes duplicate listener issue)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 23:10:38 +02:00
thibaud-leclere
b637b725d8 feat: add game config panel UI (template, Stimulus controller, CSS)
Config panel with toggle for watched films, hint type checkboxes,
and multi-select for award types above the start game button.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 23:08:09 +02:00
thibaud-leclere
ba715d69a0 feat: extract game config from POST and pass eligible AwardTypes to template
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 23:07:04 +02:00
thibaud-leclere
94ff0ced63 feat: GameGridProvider accepts config for hint types, watched-only, and retry logic
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:06:04 +02:00
thibaud-leclere
9c095a76eb fix: remove actor deletion in AwardTypeRepositoryTest to avoid FK violation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 23:03:33 +02:00
thibaud-leclere
f291df0fcf feat: add ActorRepository::findOneRandomInWatchedFilms()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:01:57 +02:00
thibaud-leclere
67571e8b33 feat: add AwardTypeRepository::findWithMinActors()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 22:58:52 +02:00
thibaud-leclere
5fbac8359f feat: add AwardRepository::findOneRandomByActorAndTypes() 2026-04-01 22:58:04 +02:00
thibaud-leclere
468b72b419 docs: add game config panel implementation plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:49:16 +02:00
thibaud-leclere
54225ad97b docs: add game configuration panel design spec
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:39:59 +02:00
thibaud-leclere
295bb16ab7 fix: reduce false positives in award detection
Filter SPARQL query to only return entertainment awards (film, TV,
music, theater) and add a canonical award map to normalize variants
(e.g. all Oscar/Academy Award → "Oscar", all Golden Globe → "Golden
Globe"). Non-entertainment awards (orders, medals, honorary degrees)
are excluded both at SPARQL level and via PHP keyword filter.

Also restart messenger container on cache:clear to avoid stale DI
container errors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 21:12:28 +02:00
thibaud-leclere
116d7b409e perf: batch Wikidata SPARQL queries per film instead of per actor
Use a VALUES clause to fetch awards for all actors of a film in a
single SPARQL request, reducing Wikidata API calls from ~20 per film
to 1 and avoiding idle timeout errors from rate limiting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 20:37:13 +02:00
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
8c73a22eff refactor: embed film data directly in batch messages
Avoid re-parsing the entire CSV file in each batch handler by including
the film data in the message payload itself.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 19:25:45 +02:00
thibaud-leclere
087b063f1f chore: reorganizing 2026-04-01 19:24:04 +02:00
thibaud-leclere
0e3b17bb7d docs: add project README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 18:14:31 +02:00
thibaud-leclere
246d6fc740 fix: reorder constructor params in ImportFilmsBatchMessageHandler
Move AwardImporter after ImportRepository to fix autowiring order
in compiled container cache.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:44:08 +02:00
thibaud-leclere
353ffddeea feat: add popover to confirm abandon 2026-04-01 14:36:41 +02:00
thibaud-leclere
fb13a8819d feat: use DB awards instead of live Wikidata calls for hint generation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:29:36 +02:00
thibaud-leclere
0fd0b85b8f feat: import actor awards during film batch import 2026-04-01 14:27:54 +02:00
thibaud-leclere
8aa33ccefc feat: add AwardImporter service with tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:27:15 +02:00
thibaud-leclere
d4d2272396 feat: add migration for award_type, award tables and actor.awards_imported
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:24:48 +02:00
thibaud-leclere
6c1e4cb38b feat: add awardsImported flag and awards relation to Actor
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:23:56 +02:00
thibaud-leclere
859a5a1067 feat: add Award entity and repository 2026-04-01 14:23:23 +02:00
thibaud-leclere
acc266739d feat: add AwardType entity and repository 2026-04-01 14:22:33 +02:00
thibaud-leclere
76013afb1c docs: add implementation plan for awards in database
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:20:20 +02:00
thibaud-leclere
d2d211a228 docs: add design spec for persisting awards in database
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 14:17:04 +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
c5d359bb0c remove unused sync commands (app:sync-actors, app:sync-films)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:55:08 +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