Commit Graph

124 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
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
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
a37ac1debd fix: resolve messenger worker OOM by clearing EntityManager and disabling debug
Clear Doctrine identity map after each film import to prevent memory
accumulation. Run messenger with --no-debug and higher PHP memory_limit
to avoid profiling overhead in dev.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:34:11 +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
3edde1c7db feat: add loading spinner when starting a new game
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 21:28:08 +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
6cbebb6367 refactor: move WikidataAwardGateway to src/Gateway/WikidataGateway.php
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 11:14:20 +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
dc5e14531f chore: fix report bug issue template 2026-03-30 23:18:14 +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
273ea49ed0 fix: generate hints about the row actor, not the main actor
Hints should help identify the row actor (to find the highlighted letter),
not reveal the main actor directly. Simplified hint generation: no shared
exclusion pools needed since each row has a different actor.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 22:51:22 +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
42a3567e1c feat: resolve hint display text in computeGridData 2026-03-30 22:33:51 +02:00
thibaud-leclere
32ae77da53 feat: generate hints per row in GameGridGenerator
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 22:32:51 +02:00
thibaud-leclere
c2efdd4eeb feat: add WikidataAwardGateway for actor awards from Wikidata SPARQL 2026-03-30 22:31:42 +02:00
thibaud-leclere
7f3738007d feat: add findOneRandomByActor to MovieRoleRepository 2026-03-30 22:31:07 +02:00
thibaud-leclere
e3ee26e070 feat: add hintType and hintData columns to GameRow entity
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 22:30:30 +02:00
thibaud-leclere
cdcd3312ef docs: add game hints implementation plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 22:26:32 +02:00
thibaud-leclere
4fb1a25469 docs: add game hints system design spec
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 22:21:26 +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
ba9a3fba5d feat: replace code icon with Git logo in navbar
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 21:58:43 +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
1f80b554fd Remove AppExtension 2026-03-30 21:17:17 +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
c35e239450 various fixes 2026-03-30 20:12:10 +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
a6b3a93d5c refactor: use persisted games in HomepageController 2026-03-30 19:46:12 +02:00
thibaud-leclere
884168aa49 feat: add GameController with start and abandon actions 2026-03-30 19:45:39 +02:00