Opened #58 to track the remaining cropper-to-display mismatch issue. The current implementation gets close but the exact coordinate mapping between the cropper viewport (contain) and the avatar…
Redesigned the profile picture cropper:
- Full image displayed in a viewport with a dimmed overlay
- A transparent circular "hole" shows where the profile pic will crop
- A square border around…
Additional fix included in PR: when the refresh token is invalid or expired, the user is now force-logged out and redirected to /login with the message "Session expired. Please log in again."…
First-pass plan saved in .opencode/plan-56-api-test-coverage.md. Covers every missing controller via REST Client script extensions:
- Auth: refresh token flow
- Album, Tag: create →…
Implementation complete in PR #55. All items implemented:
- ✅ Person model: ProfileAssetId FK + migration
- ✅ DTOs: PersonDetailedDto (with List), PersonPreviewDto, CreateDto,…
Implementation plan — what this PR delivers
Pages
/cosplayers— list page with rich person cards in a multi-column responsive grid. Shows name and album count. Auth-gated (same…
Fix: progress bars on job rows were hidden by 5e23180. Restored in d1f545b — they now display correctly on all viewports.
d1f545b fix(ui): — Restored progress bar visibility on job rows. The d-none d-sm-flex class (from 5e23180) hid the bar on mobile and changed its display on desktop, breaking…
Status: all 17 items (13 original + 4 follow-up) resolved
Original 13 — all fixed
Branch activity (commits since merge)
5e23180 fix(ui): — JobRow: hide non-essential columns (child summary, dates, progress bar, elapsed) on mobile via d-none d-sm-*. Added…
Branch activity summary (commits since base)
ca21dc3 — base: removed faulty d-flex tag on main object.
04d425b (REDCODE) refactor: — Replaced custom masonry JS with…