Requesting changes after a strict QA pass against Issue #101 (excluding photo upload).
Per request, the e2e-photo-upload job remains in .gitea/workflows/pr-gate.yml but is now disabled by default with if: ${{ false }} so it does not run on every PR. It can be re-enabled later…
Added a dedicated e2e-photo-upload slice to PR Gate in 8c81e19.
It mirrors the existing containerized Playwright jobs, but runs tests/e2e/photo-formats.spec.ts as a focused CI gate for the…
Latest follow-up is pushed in e44a8c5.
This keeps the local Playwright harness on the safer default for the photo-validation path: when PLAYWRIGHT_BASE_URL is unset, the suite starts a fresh…
One more follow-up is pushed in 1a697ef to address the harness risks I found during the final review pass.
What changed:
frontend/playwright.config.tsnow usesreuseExistingServer: truefor…
Follow-up for the latest review is pushed in 6182416.
The failing local reproduction turned out to be a Playwright harness problem rather than another photo-path logic bug: the photo-format spec…
Resolved the two blockers in 02dcfb5.
- Tightened
normalizePhotoMimeType()so extension fallback only applies to empty MIME /application/octet-stream; misleading types likeimage/gif+…
Reviewing this locally, I’m happy with the spinner / disabled-state fix in NewPerson and with the rest of the mobile UX work overall. I ran npm run typecheck, `npm test -- --run src/utils/phot…