Commit Graph
1238 Commits
Author SHA1 Message Date
REDCODE 104193a09e refactor(frontend): use InfiniteScrollController in Home, AlbumGrid, CosplayerGrid 2026-08-21 03:25:25 +02:00
REDCODE 291eb611c0 refactor(shared): extract InfiniteScrollController pagination state machine 2026-08-21 03:25:24 +02:00
REDCODE e24e6cc2f7 refactor(shared): extract responsive action toolbar and button 2026-08-21 03:13:39 +02:00
REDCODE 03ee6c555e Merge pull request 'refactor(auth): remove manual token-refresh wrapper in LoginService' (#192) from feature/remove-login-manual-refresh into develop
Reviewed-on: #192
2026-08-21 01:05:19 +00:00
REDCODE 70c432a668 refactor(auth): delegate profile fetch to UserService and drop manual token refresh 2026-08-21 02:48:39 +02:00
REDCODE d72448b34b Merge pull request 'refactor: frontend consistency pass — OnClose naming, AssetIds param, drop _ prefixes' (#191) from feature/frontend-consistency-166 into develop
Reviewed-on: #191
2026-08-21 00:43:53 +00:00
REDCODE 87b7d61f1a refactor(frontend): drop underscore prefix from service and code-behind private fields 2026-08-21 02:31:07 +02:00
REDCODE 2ea4bb7d8b refactor(frontend): drop underscore prefix from shared component private fields 2026-08-21 02:31:02 +02:00
REDCODE a893836f42 refactor(frontend): drop underscore prefix from page private fields 2026-08-21 02:30:57 +02:00
REDCODE 0a51ce676a refactor(album-form): align asset ids parameter naming to AssetIds 2026-08-21 02:27:05 +02:00
REDCODE de8589b066 refactor(shared): standardize dismiss callbacks on OnClose 2026-08-21 02:26:28 +02:00
REDCODE c2fe80cddc docs: establish no underscore prefix convention for frontend fields 2026-08-21 02:23:49 +02:00
REDCODE 1a340d23ac fix(album): previewer navigation skips hidden assets in browse mode 2026-08-21 02:15:19 +02:00
REDCODE 819be813dd feat(frontend): download previewer image via attachment link 2026-08-21 02:15:15 +02:00
REDCODE d5ee952bb0 feat(media): support attachment download via download query param 2026-08-21 02:15:11 +02:00
REDCODE b675457e3e Merge pull request 'refactor: centralize frontend GET handling in GetJsonAsync with a null-on-failure contract' (#190) from feature/getjson-error-contract into develop
Reviewed-on: #190
2026-08-21 00:14:00 +00:00
REDCODE 2dd4f8621f style(services): add trailing newline to ServiceBase 2026-08-21 02:13:01 +02:00
REDCODE 8209da44e7 refactor(jobs): route job reads through GetJsonAsync keeping the throwing boundary 2026-08-21 01:33:52 +02:00
REDCODE 2177cb1a0b refactor(settings): return null from GetAllSettings instead of throwing 2026-08-21 01:33:42 +02:00
REDCODE 79b15ed0ff refactor(asset): migrate asset reads to GetJsonAsync 2026-08-21 01:33:33 +02:00
REDCODE 4124daeec9 refactor(user): migrate user reads to GetJsonAsync 2026-08-21 01:33:23 +02:00
REDCODE 8007a2d8ce refactor(services): migrate album, person, stats, and folder reads to GetJsonAsync 2026-08-21 01:33:14 +02:00
REDCODE a38f5eb59e refactor(services): add GetJsonAsync helper to ServiceBase 2026-08-21 01:33:09 +02:00
REDCODE cd2fa3a355 fix(services): unsubscribe AuthInfoChanged on dispose to prevent singleton scoped subscription leak 2026-08-21 01:22:59 +02:00
REDCODE 59cb11e687 refactor(shared): migrate ProfileCropper onto ModalFrame component 2026-08-21 01:22:55 +02:00
REDCODE a3372881c4 refactor(settings): remove dead UpdateSettingsAsync batch method 2026-08-21 01:22:43 +02:00
REDCODE f89c8f3804 Merge pull request 'feat: mark broken assets instead of requeueing + rebuild maintenance page + GIF→mp4 conversion' (#182) from feature/broken-assets-gif-conversion into develop
Reviewed-on: #182
2026-08-20 23:02:57 +00:00
REDCODE b6386aad98 refactor(asset): rename fs-browse to directory and remove the DB-path browse endpoint
- Rename the filesystem browse route from /api/asset/fs-browse to /api/asset/directory
  (controller route, client URL, REST tests, and service log label).
- Remove the old /api/asset/browse endpoint and its BrowseAssets/GetDirectoryNames
  repository code, plus the client BrowseAsync method. Repoint AlbumAssetPicker's
  admin/curator folder browse to the /directory endpoint.
- Drop the now-unused pg_catalog.split_part DbFunction mapping.
- Refresh .env GIT_VERSION.
2026-08-21 01:00:38 +02:00
REDCODE e63b93f645 chore: added generation of default folder for conversions in Lactose dockerfile 2026-08-21 00:32:22 +02:00
REDCODE a23231fd5f perf(jobs): stream integrity check in batches and make it fully cancellable
Replace full-table Load()/ToList() with keyset pagination (1000-row batches,
AsNoTracking) for asset existence, thumbnail, preview, and converted-video checks,
using ExecuteUpdateAsync to clear missing state without tracking overhead.
Make all heavy EF operations async and token-aware (LoadAsync/ToListAsync/
CountAsync/SaveChangesAsync/MigrateAsync) and check cancellation between every
batch so the job can be cancelled at any point. Refresh .env GIT_VERSION.
2026-08-21 00:11:41 +02:00
REDCODE bfd99c578d chore: drop unused CurrentPath from browse result and refresh GIT_VERSION
AssetBrowseResultDto.CurrentPath was populated but unused by the fs-browse flow.
Remove it from the DTO and FilesystemBrowseService, and refresh the .env GIT_VERSION.
2026-08-20 23:59:26 +02:00
REDCODE 0d5089c01e feat(jobs): richer integrity check logging and live progress reporting
- Per-step [N/8] console logging with loaded counts, elapsed time, and totals
- Meaningful web-UI status messages per step instead of a hardcoded string
- Live checked/total progress (console + web UI) across folder, asset, thumbnail,
  preview, and converted-video loops
2026-08-20 23:59:11 +02:00
REDCODE 2c8dcb6255 chore(docker): persist converted videos via a named volume
ConvertedPath defaults to /app/converted on the container's ephemeral writable layer,
so mp4s were lost when the container was recreated while the DB still referenced them.
Mirror the existing thumbnails/previews mounts with a converted volume.
2026-08-20 23:59:06 +02:00
REDCODE 85357752e6 feat(frontend): render GIF previews as video and download the converted mp4
- Add MediaService.VideoUrl for the display media endpoint
- ImagePreview renders a <video> (webp poster) for video MIME types; otherwise the existing <img>
- Download and 'View full size' use the video URL for animated assets
- Home and AlbumDetail pass the asset MIME type into the shared preview
2026-08-20 23:58:56 +02:00
REDCODE 5b4e2b9afc feat(media): repurpose GIFs as video and serve converted mp4 when available
- Classify .gif as EAssetType.Video via MimeTypes (moved image/gif to the Video registry)
- Add MediaRepository.GetConvertedData, served by the existing media/{id} endpoint
  when a converted file exists on disk (with a fallback + warning log if missing)
- Expose the converted MIME type on AssetPreviewDto/AlbumAssetPreviewDto
  so the frontend can detect video assets from a single MimeType field
2026-08-20 23:58:48 +02:00
REDCODE 7fd294043e refactor(asset): convert bulk visibility to ExecuteUpdate, translate directory-name query to LINQ, and mark read-only queries AsNoTracking 2026-08-20 20:10:06 +02:00
REDCODE 025f9f6629 feat(db): map pg_catalog.split_part for LINQ translation 2026-08-20 20:09:06 +02:00
REDCODE f6b42f850c refactor(jobs): use ExecuteDeleteAsync for staging table cleanup 2026-08-20 20:08:57 +02:00
REDCODE 7596308075 feat(fs-browse): highlight folders with unassigned assets in picker
Amber-highlights subdirectory entries that contain assets without an album,
adds a warning dot and open-folder icon, and shows a toolbar badge when the
current directory holds unassigned files directly.
2026-08-20 18:37:42 +02:00
REDCODE 70247200f1 feat(asset): flag folders containing assets without an album in fs-browse
Adds HasUnassignedAssets to directory entries and HasUnassignedFilesHere to
the browse result. The service computes both in a single parameterized
VALUES + EXISTS anti-join over the unique OriginalPath index, using ESCAPE ''
so Windows separator paths survive LIKE semantics.
2026-08-20 18:37:34 +02:00
REDCODE ba66000748 merge: integrate develop (incremental scans, visibility cascade, view-mode search) 2026-08-20 18:03:58 +02:00
REDCODE ffe37fec87 Merge pull request 'refactor: extract ViewModeToggle + query-param search' (#170) from feature/view-mode-toggle into develop
Reviewed-on: #170
2026-08-20 15:10:36 +00:00
REDCODE 7563450c35 chore: refresh GIT_VERSION env 2026-08-20 16:56:55 +02:00
REDCODE 4bc35c0625 fix(albums,cosplayers): restore SupplyParameterFromQuery search binding 2026-08-20 16:56:44 +02:00
REDCODE 6fbb98a3fd chore: refresh GIT_VERSION env 2026-08-20 16:49:04 +02:00
REDCODE 796f485a84 fix(cosplayer-detail): base album selection on grid-loaded ids 2026-08-20 16:47:57 +02:00
REDCODE 95c624aaab Merge branch 'develop' into feature/view-mode-toggle 2026-08-20 16:36:45 +02:00
REDCODE 371e73a999 Added windows run config for PM deployment 2026-08-20 16:14:37 +02:00
REDCODE ee249adaf1 Merge pull request 'feat: cascade visibility skips only deleted + backend bulk cascade' (#154) from feature/cascade-visibility-skip-deleted into develop
Reviewed-on: #154
Reviewed-by: Fastwind <fastwind@noreply.localhost>
2026-08-20 14:09:27 +00:00
REDCODE b5b8fb247c Merge branch 'develop' into feature/cascade-visibility-skip-deleted 2026-08-20 14:08:54 +00:00