Block a user
test: add unit and integration tests for POST /pulls merge handler (after #177)
Integrate PDF download step in analyze_single_patent and document volume mount requirement
Add skeleton loaders and user-friendly error states to Batch and Analytics pages
feat: add graceful error UI when Gitea API is unreachable or returns errors
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
Fix Patent.patent_id type annotation: change int to str in types.py
fix: ensure GET /health returns 200 without authentication (health probe exempt from auth middleware)
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 flow tests: registration, login, protected routes, token refresh, and admin endpoints
Persist async job state in PostgreSQL to survive API restarts
Add rate limiting to /auth/login and /auth/register endpoints
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
Add startup check to refuse default JWT secret in non-dev environments
ci: enable ruff linting and pytest in CI pipeline
Add ruff (Python) and tsc --noEmit (TypeScript) linting to CI
Triage: Addressed by PR #1568
PR #1568 uncomments the ruff check step and fixes all 16 pre-existing ruff violations. TypeScript type checking (tsc --noEmit) was already enabled. The PR has…
Add ruff (Python) and tsc --noEmit (TypeScript) linting to CI