Resolved by PR #61. Side-by-side patent portfolio comparison view implemented.
Resolved by PR #171 (PDF export) and PR #60 (CSV export). Reports can be exported as PDF or CSV.
Resolved by PR #58 and PR #31. S3/MinIO object storage for patent PDFs implemented and documented.
Resolved by PR #57. Dark/light mode toggle with localStorage persistence added across frontend pages.
Resolved by PR #32 and PR #269. Ruff linting and tsc type-checking added to CI workflow.
Resolved by PR #32. pytest test job added to CI workflow that gates the image build.
Resolved by PR #31. Frontend lockfile (package-lock.json) committed for reproducible builds.
Resolved by PR #56 and PR #352. Loading skeletons, error states, and empty states added to Batch and Analytics pages.
Triage (2026-03-29): Already assigned to AI-Engineer. Blocked on image push -- either via #76 (automated CI, blocked on #95) or #160 (manual build, needs-human). Once an image is in the…
Triage (2026-03-29): Already assigned to AI-Engineer. This is a large, blocked feature (P3). Depends on Authentik being deployed on the cluster and the app being accessible. Lower priority…
Triage (2026-03-29): Already assigned to AI-Engineer. Blocked on #95 (CI runner registration, needs-human). Once a runner is registered and the workflow label is correct, a push to master will…
Triage (2026-03-29): Already assigned to AI-Engineer. Blocked on image availability -- either #76 (CI path) or #160 (manual path) must produce an image first. Once an image exists in the…
Triage (2026-03-29): Reassigned from AI-Engineer to AI-QA. This is a QA validation task requiring a physical iPhone for PWA testing. Remains blocked until the app is deployed at gitea-mobile.te…