Block a user
Add ruff (Python) and tsc --noEmit (TypeScript) linting to CI
Add pytest test job to Gitea Actions CI workflow that gates image build
Commit a frontend lockfile (package-lock.json or pnpm-lock.yaml) for reproducible builds
chore: verify NetworkPolicy allows gitea-mobile -> gitea.gitea traffic after deployment
Add loading and error states to Batch and Analytics pages
Integrate PDF download step into analyze_single_patent or document the prerequisite clearly
Fix Patent.patent_id type annotation from int to str
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, token refresh, admin endpoints
Add rate limiting to /auth/login and /auth/register endpoints
Persist job state in PostgreSQL so batch results survive API restarts
Refactor get_db_client() in auth.py to use a shared connection pool
Replace hardcoded database credentials in docker-compose.yml with .env file
Make CORS allowed origins configurable via environment variable
Refuse to start with default JWT secret in non-development environments
Refuse startup with default JWT secret in non-dev environments
Closing: Already Resolved
This issue has been implemented and merged into main.
Resolved by PR #27 (feat(security): JWT startup guard, configurable CORS, externalize DB creds)
Closing as…
Refuse startup with default JWT secret in non-dev environments
Add patent trend charts to the Analytics page (filing frequency and category distribution)