Block a user
Fix Patent.patent_id type annotation from int to str in types.py
Fix analyze_single_patent to download PDF before attempting to read from disk
Document patent PDF volume mount and add object storage option for containerized deployments
Expose SERP cache TTL as SERP_CACHE_TTL_HOURS environment variable
chore: verify errgroup semaphore cap (5-10) in aggregation layer concurrent API calls
Make LLM model configurable via MODEL environment variable
Replace print() calls with structured logging in analyzer.py, serp_api.py, and llm.py
test: add integration test for POST /pulls/{owner}/{repo}/{index}/review handler
Add JWT authentication tests: registration, login, protected routes, and admin endpoints
test: add integration test for POST /issues/{owner}/{repo}/{index}/labels label assignment
Add rate limiting to /auth/login and /auth/register endpoints
chore: verify flake.nix dev shell with air live reload works end-to-end
Persist async job state in PostgreSQL to survive API restarts
Refactor get_db_client() in auth.py to use a shared connection pool
Remove hardcoded postgres credentials from docker-compose.yml
Make CORS allowed origins configurable via environment variable
Add startup check to reject default JWT secret in non-dev environments
fix: update CI workflow runs-on label to match available Gitea Actions runner
Status Update
After investigation, the runs-on: ubuntu-latest label does NOT need to change. The root cause was the runner label mapping in the Talos repo, which was already fixed in…
chore: verify image tag format includes timestamp and commit SHA per Phase 3.2 spec
CI Workflow (
Verification Complete: Image Tag Format Alignment
CI Workflow (.gitea/workflows/build.yaml)
Tag format:
TIMESTAMP=$(date +%Y%m%d%H%M%S) # 14 digits: YYYYMMDDHHMMSS
SHA=$(echo…
feat: tablet 2-column grid layout for issue and PR lists