Block a user
Add side-by-side patent portfolio comparison view for two companies
Export analysis reports as PDF or CSV from the dashboard
Add ruff (Python) and tsc --noEmit (TypeScript) linting to CI
Add pytest test job to Gitea Actions CI workflow to gate image builds
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
Add loading states and user-friendly error messages to Batch and Analytics pages
Fix Patent.patent_id type annotation from int to str in types.py
fix: update CI workflow runs-on label to match available Gitea Actions runner
Sprint planning note (2026-03-29): Two parallel paths forward:
- Fast path (#160): Manually build and push the Docker image — unblocks deployment chain (#16, #94, #158) without waiting for…
Fix analyze_single_patent to download PDF before attempting to read from disk
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
chore: manual QA checklist — verify all HTMX interactions work end-to-end in browser
Removing blocked label — this QA checklist can be run locally (go run ./cmd/server) and does not depend on CI, the Docker image being pushed, or the cluster being live. Unblocking so an agent…
Make LLM model name configurable via MODEL environment variable
Replace print() calls with structured Python logging in analyzer.py, serp_api.py, and llm.py
Add JWT authentication tests: registration, login, protected routes, token refresh, admin endpoints
Add rate limiting to /auth/login and /auth/register endpoints
Persist async job state in PostgreSQL so job status survives API restarts
Fix get_db_client() in auth.py to reuse a shared connection pool
Remove hardcoded database credentials from docker-compose.yml
Make CORS allowed origins configurable via environment variable
Refuse startup with default JWT secret in non-development environments