<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lumi.git/services, branch master</title>
<subtitle>Personal film diary</subtitle>
<id>https://git.tylerhoang.xyz/lumi.git/atom?h=master</id>
<link rel='self' href='https://git.tylerhoang.xyz/lumi.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/'/>
<updated>2026-05-09T08:41:48Z</updated>
<entry>
<title>Add IMDb, Rotten Tomatoes, and Metacritic ratings to film detail</title>
<updated>2026-05-09T08:41:48Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-09T08:41:48Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=2f3a891d0944a3b200d3dda949475bf9e1742f56'/>
<id>urn:sha1:2f3a891d0944a3b200d3dda949475bf9e1742f56</id>
<content type='text'>
Fetches ratings from OMDB API in parallel with TMDB context. Displays
three side-by-side chips between the subtitle and watch log panels.
Requires OMDB_API_KEY in .env; degrades silently if missing or no match.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add genre tracking and year-in-review improvements</title>
<updated>2026-05-07T01:05:07Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-07T01:05:07Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=ead38fdb13abb406065cef0743d7e411cb27eaf3'/>
<id>urn:sha1:ead38fdb13abb406065cef0743d7e411cb27eaf3</id>
<content type='text'>
Adds genre field to Film model with TMDB enrichment. Genres populate from
TMDB detail fetch during add/edit and bulk enrichment. Genre metadata displays
on film cards, detail page (Production section), stats page (top genres panel),
and year-in-review (by decade and genre breakdowns).

Auto-detects rewatches when adding films via TMDB autocomplete - if a film with
the same TMDB ID already exists in diary, pre-fills rewatch checkbox and count.
Rewatch count now displays on film cards as "Rewatch #N".

Stats page now shows:
- Top genres (most watched)
- Film decades (sorted chronologically)
- Already shows: directors, companions, star distribution, rewatch rate

Year-in-review shows decades and genres alongside monthly activity and companions.

Bulk enrichment endpoint (/data/enrich-posters) now fetches missing genre
metadata along with posters and TMDB IDs.

Co-Authored-By: Claude Haiku 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add TMDB poster picker to film detail page</title>
<updated>2026-05-07T00:20:35Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-07T00:20:35Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=2d298f982408f222ad344b2aa9c18bbe7dc70f12'/>
<id>urn:sha1:2d298f982408f222ad344b2aa9c18bbe7dc70f12</id>
<content type='text'>
- New movie_images() async function in services/tmdb.py fetches poster
  URLs from TMDB /movie/{id}/images endpoint, filtering for English
  and no-text posters only
- New GET /tmdb/posters endpoint returns list of available posters for
  a TMDB ID
- New POST /films/{film_id}/poster endpoint to save selected poster
  (mirrors the stars endpoint pattern)
- Add "Change Poster" button on detail page (only shown if film has a
  TMDB ID) that opens a 3-column grid of posters
- Selected poster gets accent border, main image updates instantly, no
  page reload needed
- Posters are cached per load to avoid refetching on re-open

Co-Authored-By: Claude Haiku 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix director biography fetching</title>
<updated>2026-05-06T23:28:27Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-06T23:28:27Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=98634f72086d327747f32c8cfa4e4503d500475a'/>
<id>urn:sha1:98634f72086d327747f32c8cfa4e4503d500475a</id>
<content type='text'>
- Use person details endpoint instead of search to get full biography
- Search endpoint only returns truncated/partial biography
- Now correctly fetches complete biography from TMDB

Co-Authored-By: Claude Haiku 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add director image and biography to director page</title>
<updated>2026-05-06T23:23:59Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-06T23:23:59Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=138eaaa12cdaeb6035951ff4f1547d73e8d12612'/>
<id>urn:sha1:138eaaa12cdaeb6035951ff4f1547d73e8d12612</id>
<content type='text'>
- Fetch director profile image and biography from TMDB API
- Display image next to director name with lazy loading
- Show biography below director name
- Gracefully handle missing data (image/biography optional)

Co-Authored-By: Claude Haiku 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>init: lumiere film diary</title>
<updated>2026-05-06T19:21:26Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-06T19:21:26Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=e708bec6cd76c2686de4158dde4d04f72a3c300d'/>
<id>urn:sha1:e708bec6cd76c2686de4158dde4d04f72a3c300d</id>
<content type='text'>
</content>
</entry>
</feed>
