Commit Graph

665 Commits

Author SHA1 Message Date
REDCODE
cdd2e9a1ef fix(#62): use explicit top/left/right/bottom instead of inset, add !important to ensure position:fixed takes effect on mobile 2026-07-09 22:49:24 +02:00
REDCODE
64bee6c92a revert: restore docker-compose.yml — testing-only CORS/baseUrl changes committed by accident 2026-07-09 22:45:21 +02:00
REDCODE
870ebb06f8 fix(#62): move mobile modal fix to global MilkyShot.css — scoped ::deep cannot pierce PersonForm root element
fix(AlbumCard): add null check for Album.Person before rendering link

The ::deep combinator in CosplayerDetail.razor.css cannot target
.modal-overlay rendered by the PersonForm child component because
Blazor's CSS isolation applies the child's scope attribute to its
root, and ::deep only strips the parent's scope — it doesn't match
elements bearing only the child's scope.
2026-07-09 22:43:27 +02:00
REDCODE
2f7cd3d7da fix: resolve UI issues #61, #62, #66
- #61: wrap standalone fallback div in cosplayer-card-img-wrap on
  Cosplayers page so placeholder icon gets proper sizing/positioning
- #62: add mobile breakpoint rule for modal-overlay so edit form
  appears centered on small screens instead of at page bottom
- #66: make cosplayer name in ImagePreview, AlbumDetail, AlbumCard,
  and Home asset tiles a clickable link to /cosplayer/{id}
- add CosplayerIds to AssetPreviewDto and populate via mapper for
  linked navigation from the home page image previewer
2026-07-09 22:36:07 +02:00
18ddcf681f Merge pull request 'feat: migrate to UTC timestamps — remove legacy Npgsql behavior' (#65) from feature/utctimezone into develop
Reviewed-on: #65
Reviewed-by: Samuele Lorefice <aironenerowork@gmail.com>
2026-07-09 19:57:43 +00:00
MrFastwind
ede759b50b feat: migrate to UTC timestamps — remove legacy Npgsql timestamp behavior
- Remove EnableLegacyTimestampBehavior switch from Program.cs
- Add ConfigureConventions to DbContext pinning DateTime → timestamptz
- Add migration to convert all 17 DateTime columns across 5 tables
  (Albums, Assets, Users, People, JobRecords) with safe AT TIME ZONE 'UTC'
- Add Roslyn analyzer (MS001-MS004) enforcing UTC-only DateTime at compile time
  with code fix provider for auto-replacement
- Fix pre-existing DateTime.Now in AuthController.cs:119
- Add AllowMissingPrunePackageData to work around .NET 10 SDK issue
2026-07-09 21:43:46 +02:00
9f74bc91a9 chore: Added the test images folder to the dockerignore avoiding them being sent every time a docker build starts 2026-07-09 18:46:16 +02:00
8922dbcc57 Merge branch 'fix/mobile-ui-responsive-fixes' into develop
Closes #49

Integrates responsive mobile UI fixes on top of the cosplayers pages
(#55) without conflicts. All 19 files from PR #49 merged cleanly; the
two overlapping files (NavMenu.razor, Albums.razor) were auto-merged
correctly with the cosplayers features preserved.
2026-07-09 18:34:02 +02:00
095a2bdce0 Merge pull request 'feat(ui): cosplayers pages — browse and discover cosplayers' (#55) from feature/cosplayers-pages into develop
Reviewed-on: #55
Reviewed-by: Samuele Lorefice <aironenerowork@gmail.com>
2026-07-09 16:00:02 +00:00
b807e4b636 feat: infinite scroll for albums on cosplayer detail page 2026-07-09 17:53:42 +02:00
9c17843dec fix: cache random banner covers in field, not computed on every render 2026-07-09 17:48:12 +02:00
c1aafc4223 refactor: replace individual albumPage/albumSize params with PagedParametersDto in person detail endpoint 2026-07-09 17:42:37 +02:00
a8d06959b5 feat: person hard delete with album cascade, AlbumCard select mode, cosplayer list multi-select 2026-07-09 17:07:43 +02:00
dbbb25da32 fix: create AlbumSearchParametersDto, add album pagination to person detail, fix duplicate XML param 2026-07-09 16:46:18 +02:00
9f180742cd fix(test): update name assertion to match renamed person 2026-07-09 16:40:32 +02:00
e8c1a80264 test: all tests create their own data — create album returns ID, all mutations use self-created resources 2026-07-09 16:38:43 +02:00
7e16c77cb6 test: use real album from search for update test, not zero-GUID fallback 2026-07-09 16:36:01 +02:00
8f6a4396db test: add album update test without removePerson field 2026-07-09 16:34:47 +02:00
34fbbc91a0 chore(test): remove Swagger test — disabled in container environments 2026-07-09 16:32:47 +02:00
9be49ac9c6 fix(test): use response.body directly instead of JSON.parse (already parsed object) 2026-07-09 16:32:00 +02:00
c96b22fe62 fix(tests): fix pre-existing auth route tests and handle empty unassigned albums gracefully 2026-07-09 16:30:53 +02:00
7f50d3c3e2 test(api): add comprehensive http tests for all person and album endpoints 2026-07-09 16:26:11 +02:00
191cba4946 fix(pr): implement BulkUpdate, BulkDelete, revert docker-compose, explain [FromQuery] 2026-07-09 16:22:51 +02:00
a38f627ca4 feat(dto): add RemovePerson flag to AlbumUpdateDto for explicit person unlinking 2026-07-09 15:56:20 +02:00
f31b753182 refactor(dto): move Unassigned filter into PagedSearchParametersDto 2026-07-09 15:54:02 +02:00
1377d02520 fix: prevent album title from being overwritten when only setting Person in update DTO 2026-07-09 15:19:03 +02:00
bac1ad0afc fix(build): remove stray semicolon in onclick lambda 2026-07-09 15:16:01 +02:00
fa434b180d fix(api): allow unlinking person from album by directly assigning null PersonOwnerId 2026-07-09 15:12:34 +02:00
4d169e6303 docs: add API reuse convention to AGENTS.md — prefer optional query params over new endpoints 2026-07-09 15:10:05 +02:00
e1d7822b7c refactor(api): fold unassigned album filter into search endpoint via query param 2026-07-09 15:09:09 +02:00
cc611828b9 feat(ui): unassigned album selector in PersonForm, Add Albums button in CosplayerDetail 2026-07-09 15:07:19 +02:00
9aead51481 feat(ui): add New Cosplayer button on list page with create endpoint and form 2026-07-09 15:00:52 +02:00
67d00efb10 fix(js): resize calculations now in viewport pixels to avoid image-relative X/Y scale mismatch on non-square images 2026-07-09 14:56:47 +02:00
b71fef147a fix(js): skip resize on first mousemove if mouse hasn't moved from mousedown position 2026-07-09 14:50:58 +02:00
8004dc2b43 fix(js): use correct opposite corners for TL/TR/BL resize handles 2026-07-09 14:44:35 +02:00
c9f08ea48e fix(ui): use pixel-exact transform positioning for avatar display instead of background-size formula 2026-07-09 14:43:52 +02:00
52b88a3ba4 fix(js): store cropZoom as image-relative fraction (square_side / image_displayed_width), no adjustment needed on save 2026-07-09 14:32:09 +02:00
e39d753a85 fix(js): adjust stored cropZoom by image aspect ratio factor so background-size formula matches circle 2026-07-09 14:15:17 +02:00
83025065b3 fix(ui): correct geometry — square outer, circle inscribed inside; image-relative crop coords with background-image viewport; correct display formula for background-position 2026-07-09 14:08:59 +02:00
0c65e9de1b fix(css): show full image in cropper viewport (contain instead of cover) 2026-07-09 14:02:18 +02:00
1559bf081e fix(js): corner-drag resize with fixed opposite corner, proper visual rate matching 2026-07-09 13:58:07 +02:00
79305646dd fix(js): handle positions relative to square, not viewport 2026-07-09 13:53:48 +02:00
b9ca9f7b45 fix(ui): 4 corner handles on square boundary for resizing instead of single circular handle 2026-07-09 13:29:05 +02:00
5aed999671 fix(ui): random 3 album covers max in banner, redesigned cropper with drag-to-move and drag-handle resize, image stays static 2026-07-09 13:25:37 +02:00
56b80038a3 fix(ui): always render ProfileCropper in tree, use OnParametersSet to trigger JS init 2026-07-09 13:20:54 +02:00
3d3c59d58b chore: remove unused banner-cell-empty CSS class 2026-07-09 13:17:32 +02:00
76bbdbd2f4 fix(ui): remove empty filler cells from banner mosaic, let overlay cover gaps naturally 2026-07-09 13:17:22 +02:00
22b15c387b feat(ui): redesigned profile cropper with movable circle, dimmed exterior, square boundary, zoom controls; added ProfileCropZoom to model; switched avatars to background-image for zoom support 2026-07-09 13:15:19 +02:00
bcfb838b5e fix(js): set onload before src to handle cached images 2026-07-09 13:07:23 +02:00
63a16392d7 feat(ui): add circular profile picture cropper with drag-to-pan 2026-07-09 13:03:08 +02:00