Block a user
Add pytest test job to Gitea Actions CI workflow
Commit a frontend lockfile to ensure reproducible builds
Add loading states and error messages to Batch and Analytics pages
Fix analyze_single_patent to download PDF before attempting to read it
Fix Patent.patent_id type annotation from int to str in types.py
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 covering registration, login, and protected routes
Add rate limiting to /auth/login and /auth/register endpoints
Persist async job state in PostgreSQL so jobs survive API restarts
Refactor get_db_client() in auth.py to use a shared connection pool
Move database credentials out of docker-compose.yml into .env file
Make CORS allowed origins configurable via environment variable
Refuse to start when default JWT secret is used in non-dev environments
Allow per-analysis LLM provider selection and output comparison (multi-model support)
Allow per-analysis LLM provider selection and output comparison (multi-model support)
Resolved by PRs #64, #1015, and #353 (merged). Per-analysis LLM provider selection is supported via the model parameter on analysis endpoints. Model validation against an allow-list is enforced.…
Auto-generate TypeScript API client from FastAPI OpenAPI spec
Auto-generate TypeScript API client from FastAPI OpenAPI spec
Resolved by PRs #443 and #63 (merged). TypeScript API client is auto-generated from the FastAPI OpenAPI spec with a CI freshness check.
Add cursor-based pagination to /analyze/batch and /jobs endpoints