Block a user
Implement scheduled/recurring analysis for tracked companies
test: add integration tests for org/repo/label/state filter query params in GET /issues and GET /pulls
Add side-by-side patent portfolio comparison view
test: add integration tests for POST /issues/{owner}/{repo}/{index}/assignees AssignIssue handler
Export analysis reports as PDF or CSV from the dashboard
test: add integration tests for GET /pulls/{owner}/{repo}/{index} PR detail handler
Add ruff (Python) and tsc --noEmit (TypeScript) linting to CI
test: add integration tests for GET /issues/{owner}/{repo}/{index} issue detail handler
Add pytest test job to Gitea Actions CI workflow
feat: add rate-limit retry/backoff handling in Gitea API client
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Add loading states and error messages to Batch and Analytics pages
feat: add HTTP 404 and 500 error handler with mobile-friendly error page
Fix Patent.patent_id type annotation from int to str in types.py
Fix analyze_single_patent to download PDF before attempting to read it
Expose SERP cache TTL as a 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 auth integration tests (registration, login, protected routes, admin endpoints)
Add rate limiting to /auth/login and /auth/register endpoints