Items can be moved to Completed or Abandoned via card buttons.
Only active items appear in the default/category tabs; completed and
abandoned items are visible only in their respective shelf tabs.
Restore button moves items back to active.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fetch HLTB main/extra/completionist hours when a game item is saved
- Re-fetch only when name or category changes on edit
- Steam imports also fetch HLTB for each selected game
- Cards show compact HLTB row: "HLTB: 40h · +extra 60h · 100% 100h"
- Edit form shows HLTB breakdown as a hint next to Total hours field
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Steam OpenID flow: user authenticates with Steam, we get their Steam ID
- Server-side API key fetches their owned games with playtime
- Import page shows full library, marks already-imported games
- Imported games land in backlog as GAMES items with hours_played set
- STEAM_API_KEY env var plumbed into both prod and dev containers
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Django app with Item model (games/books/films/other categories), CRUD
views, and login-required access. Login page at /accounts/login/ uses
custom dark-themed template consistent with the site design.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>