The Find Movies button was overlapping the input field on mobile,
cutting off the placeholder text. Now stacks vertically on mobile
and keeps the inline layout on sm+ screens.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Share: "Copy Link" button generates a URL with ?s={history_id} that
loads the saved search results without auth. Recipients see the same
movie picks.
Watched: When viewing history results or shared searches, cards for
movies the logged-in user has since watched are dimmed with a green
"Watched" badge. Uses a new POST /api/library/watch-check endpoint.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Reset button clears mood text, runtime filter, kid-friendly toggle,
and returns to the empty state
- Show Me More now appends new cards below existing results instead
of replacing them
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Runtime quick-select buttons (Any/90m/2h/2.5h) filter movies by length
- Kid-friendly toggle forces PG-13 max and boosts Family/Animation genres
- Surprise Me picks a random mood prompt from 20 curated options
- Show Me More re-rolls same mood excluding already-shown movies
- Re-roll appends new results to the existing search history entry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Saves each mood search and its recommendations to SQLite per user.
Recent searches appear below the results area with mood text, top
movie titles, and timestamp. Click any entry to reload those results.
Entries can be deleted individually. History toggleable via show/hide.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AI-powered web app that recommends unwatched movies from a Jellyfin
library based on natural language mood input. Jellyfin auth, modular
LLM backend (Claude/OpenAI/Ollama), two-tier pre-filter + AI ranking,
mobile-responsive dark theme UI with poster cards and deep links.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>