- Move word data from hardcoded seed.py to data/words.json
- Expand from 210 words across 7 categories to 1014 words across 14
categories (animals, food, colors, sports, space, nature, music,
science, countries, occupations, ocean, weather, mythology, technology)
- Word list sidebar now shows title case (Tiger) while grid stays
uppercase; text input remains case-insensitive
- Add Ocean theme (light, blue accents) and Forest theme (dark, amber
accents on deep green)
- Replace hardcoded rgba values with --coral-bg CSS variable so
selection highlighting adapts per theme
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add input validation and error handling across all API endpoints
(malformed JSON, missing fields, invalid types return proper 4xx)
- Add per-IP rate limiting (10/min new games, 60/min other requests)
- Add session rollback on unhandled exceptions
- Default debug=False, add --debug CLI flag to opt in
- Frontend: add fetch error handling, fix feedback timeout stacking,
disable buttons during requests, allow clicking found cells for
overlapping word selection
- Expand seed data to 7 categories with 25-35 words each
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add concise docstrings to all Python modules, classes, and public
functions. Configure Sphinx with napoleon extension for Google-style
docstring parsing and autodoc pages for each module.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Recreates base.html and main.html templates (lost during reset).
Adds game.html with setup UI (category picker, board size slider),
interactive grid table, word list sidebar, text input, click-to-select,
timer, and completion banner. Adds game.js for all frontend logic.
Extends theme.css with game grid and form control styles using the
indigo/coral palette.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Defines data models (Category, CategoryWord, Game, Word), board
factory, REST API endpoints, and dual-input frontend design for the
word search game.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>