<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lumi.git/static/app.js, 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-17T09:14:30Z</updated>
<entry>
<title>Modified adding to queue behavior</title>
<updated>2026-05-17T09:14:30Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-17T09:14:30Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=71c9ba3f8a1e395ed6718e780160e7cbf4710896'/>
<id>urn:sha1:71c9ba3f8a1e395ed6718e780160e7cbf4710896</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refine Lumi layouts and public profile</title>
<updated>2026-05-14T08:31:34Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-14T08:31:34Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=cdd28b6c0a3a6444b9ae79b123fe4fa7401de5ab'/>
<id>urn:sha1:cdd28b6c0a3a6444b9ae79b123fe4fa7401de5ab</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add stats totals, runtime summary, and duplicate detection on add form</title>
<updated>2026-05-12T10:15:17Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-12T10:15:17Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=4279408876268f4960c98492d3814f5475e36e38'/>
<id>urn:sha1:4279408876268f4960c98492d3814f5475e36e38</id>
<content type='text'>
- Stats page now shows total films watched and total runtime (formatted
  as Xd Yh) in an overview panel above the world map
- /stats/data endpoint includes total_runtime_minutes in payload
- New GET /films/find endpoint returns all shelf matches for a tmdb_id
- Add film form shows an inline notice when the selected TMDB film is
  already logged, with shelf name, date, and a link to the entry
- Update CLAUDE.md and README to reflect current auth, OMDb, and
  router/service structure

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Replace stars dropdown with inline star picker on add/edit form</title>
<updated>2026-05-09T08:21:30Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-09T08:21:30Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=f3f40da05e0f97ff4308ddf1085e156879854eb5'/>
<id>urn:sha1:f3f40da05e0f97ff4308ddf1085e156879854eb5</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Auto-select today's date on add form; clean up rewatch history panel</title>
<updated>2026-05-09T08:14:57Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-09T08:14:57Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=65466fd5c645e546707ce699b4ea289f894fea20'/>
<id>urn:sha1:65466fd5c645e546707ce699b4ea289f894fea20</id>
<content type='text'>
- Default date_watched to today when adding a new film (JS, en-CA locale)
- Match rewatch history by tmdb_id when available, fall back to title
- Replace inline styles in rewatch section with CSS classes
- Simplify redundant Jinja conditions (rewatch_history and, loop.length &gt; 1)
- Move review-panel margin-top hack to .review-panel-spaced class

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 search, filter, and sort functionality to film shelves</title>
<updated>2026-05-07T00:12:46Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-07T00:12:46Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=4bbafdd460945eb506ddb07b9068731245708812'/>
<id>urn:sha1:4bbafdd460945eb506ddb07b9068731245708812</id>
<content type='text'>
- Add _SORT_COLUMNS dict to routers/films.py with 8 sort options
- Extend _get_shelf_query to accept q (search) and sort parameters
- Update /films/partial endpoint to accept q/sort query params and pass
  search_active to template to suppress month grouping when searching
- Add filter bar (search input + sort select) to templates/index.html
- Add data-shelf attribute to #film-feed for JS to read current shelf
- Rewrite infinite scroll JS to support debounced search (300ms),
  feed reset on filter/sort change, and pass params on all fetches

Filters text search by title OR director (case-insensitive ilike).
Sort options: date watched (newest/oldest), title (A-Z/Z-A), year,
stars. Month grouping disabled when search is active.

Co-Authored-By: Claude Haiku 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add hamburger menu for mobile navigation</title>
<updated>2026-05-06T23:45:56Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-06T23:45:56Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=11554ed790e63ff5ec8ba778c2161923b2c4fcf8'/>
<id>urn:sha1:11554ed790e63ff5ec8ba778c2161923b2c4fcf8</id>
<content type='text'>
Hide nav-actions on mobile (&lt;= 760px) and show a hamburger menu button
instead. Menu opens/closes on click and closes when a link is clicked
or when clicking outside. Hamburger icon created with CSS pseudo-elements.

Co-Authored-By: Claude Haiku 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add authentication, public profile, and infinite scroll</title>
<updated>2026-05-06T22:25:36Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-06T22:25:36Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=1bdf4ca8c0f51718124ffe5247ac133973d4f251'/>
<id>urn:sha1:1bdf4ca8c0f51718124ffe5247ac133973d4f251</id>
<content type='text'>
- Implement session-based auth with argon2 password hashing
- Add login form and logout button in nav
- Create public /tyler profile page with curated stats
- Implement infinite scroll for film lists (load 20 at a time)
- Add lazy loading for poster images
- Fix profile page CSS to use dark theme variables
- Use consistent star character (✦) across all pages
- Add /films/partial endpoint for pagination

Co-Authored-By: Claude Haiku 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fixed star behavior and claude init</title>
<updated>2026-05-06T21:52:34Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-06T21:52:34Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/lumi.git/commit/?id=051775337251b0c7036959901eacb58471100862'/>
<id>urn:sha1:051775337251b0c7036959901eacb58471100862</id>
<content type='text'>
</content>
</entry>
</feed>
