Block a user
Make LLM model configurable via MODEL environment variable
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py
Add JWT auth tests: registration, login, protected routes, and admin endpoints
Add rate limiting to /auth/login and /auth/register endpoints
Persist async job state in PostgreSQL instead of in-memory dict
Refactor get_db_client() in auth.py to use a shared pooled connection
Remove hardcoded database credentials from docker-compose.yml
Make CORS allowed origins configurable via environment variable
Refuse to start with default JWT secret in non-development environments
Add Tailwind dark mode support to the frontend
Add Tailwind dark mode support to the frontend
This issue has been resolved. PR #57 ("feat: add dark/light mode toggle with localStorage persistence") was merged into main. The Tailwind config has darkMode: 'class' and the toggle is…
Add pytest test stage to Gitea Actions CI workflow
Add ruff linting and tsc type-checking to CI
Add loading states and error messages to Batch and Analytics pages
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Fix Patent.patent_id type annotation from int to str in types.py
Fix analyze_single_patent to download PDF before attempting local file read
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Make LLM model selection configurable via MODEL environment variable
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py