Block a user
Add pytest test job to Gitea Actions CI workflow
Commit frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Add skeleton loaders and error states to Batch and Analytics pages
Fix Patent.patent_id type annotation from int to str in types.py
fix: implement open/closed state filter for PR list view
Fix analyze_single_patent to download PDF before reading from disk
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
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 authentication tests (registration, login, protected routes, admin)
Add rate limiting to /auth/login and /auth/register endpoints
Persist job state to PostgreSQL so batch results survive API restarts
Refactor get_db_client() in auth.py to use a shared connection pool
Remove plaintext DB credentials from docker-compose.yml
Make CORS allowed origins configurable via environment variable
Add startup check to reject default JWT secret in non-dev environments
CI: add ruff (Python linting) and tsc --noEmit (TypeScript type checking) to CI workflow
CI: add tsc --noEmit TypeScript type checking to test job