Commit Graph
576 Commits
Author SHA1 Message Date
REDCODE 453507a3ed test(Lactose): cover asset restore flows in REST Client suite 2026-08-22 00:47:30 +02:00
REDCODE c95728b097 feat(Lactose): add deleted-only and album/person filters to asset search 2026-08-22 00:45:25 +02:00
REDCODE a8122ebc39 feat(Lactose): support restoring soft-deleted assets via update endpoints 2026-08-22 00:43:31 +02:00
REDCODE e00fc5e98c refactor(Lactose): await asset lookups and saves in batch jobs 2026-08-21 18:48:01 +02:00
REDCODE c773228832 refactor(Lactose): await asset repository calls in dependent controllers 2026-08-21 18:48:01 +02:00
REDCODE 225e6c4b92 feat(Lactose): convert remaining AssetController actions to async 2026-08-21 18:48:01 +02:00
REDCODE dffc909353 feat(Lactose): convert AssetRepository to async 2026-08-21 18:48:01 +02:00
REDCODE 8c6b18382a refactor(Lactose): await person and album lookups in CreateAlbumsJob 2026-08-21 18:17:06 +02:00
REDCODE 917a144ed5 refactor(Lactose): await maintainer checks in AssetController update/delete paths 2026-08-21 18:17:06 +02:00
REDCODE 9613e7fe13 feat(Lactose): convert MediaRepository and MediaController to async 2026-08-21 18:17:06 +02:00
REDCODE 059866eb4a feat(Lactose): convert AlbumController actions to async 2026-08-21 18:16:55 +02:00
REDCODE 65ee5cfd20 feat(Lactose): convert PersonController actions to async 2026-08-21 18:16:55 +02:00
REDCODE c0164a75a0 feat(Lactose): convert AlbumRepository to async 2026-08-21 18:16:55 +02:00
REDCODE 2d1d1e0d26 feat(Lactose): convert PersonRepository to async 2026-08-21 18:16:55 +02:00
REDCODE 5727da5798 refactor(Lactose): await folder lookups in scheduler, jobs API and CreateAlbumsJob 2026-08-21 17:30:36 +02:00
REDCODE 2038bd5e20 feat(Lactose): await filesystem browse in AssetController.FsBrowse 2026-08-21 17:30:36 +02:00
REDCODE 8a4783367a feat(Lactose): make FilesystemBrowseService database access async 2026-08-21 17:30:36 +02:00
REDCODE 4bf8c5e69f feat(Lactose): convert FolderController actions to async 2026-08-21 17:30:36 +02:00
REDCODE df8b5a2cf2 feat(Lactose): convert FolderRepository to async 2026-08-21 17:30:36 +02:00
REDCODE c3b473ff86 refactor(Lactose): await settings lookups in background jobs 2026-08-21 17:04:17 +02:00
REDCODE e279e91f0d refactor(Lactose): make JobScheduler lifecycle and settings seeding async 2026-08-21 17:04:17 +02:00
REDCODE ccbf8ebaa4 feat(Lactose): convert JobManager queries and JobsController to async 2026-08-21 17:04:17 +02:00
REDCODE ae62213b76 refactor(Lactose): await settings lookups in StatsRepository 2026-08-21 17:04:10 +02:00
REDCODE a2de4b8ac3 feat(Lactose): convert Settings and registration-check endpoints to async 2026-08-21 17:04:10 +02:00
REDCODE 1127364b15 feat(Lactose): convert TagController actions to async 2026-08-21 17:04:10 +02:00
REDCODE 64ec5d46a8 feat(Lactose): convert JobRecordRepository to async with tuple page result 2026-08-21 17:04:00 +02:00
REDCODE b1bcab67e0 feat(Lactose): convert SettingsRepository to async 2026-08-21 17:04:00 +02:00
REDCODE b43f85e7c9 feat(Lactose): convert TagRepository to async 2026-08-21 17:04:00 +02:00
REDCODE 3f8b36eb37 chore(Lactose): await user existence check in AssetController.Create 2026-08-21 16:27:27 +02:00
REDCODE 152e0c2bc0 feat(Lactose): convert AuthController actions to async 2026-08-21 16:27:27 +02:00
REDCODE 9d79c15201 feat(Lactose): convert UserController actions to async 2026-08-21 16:27:05 +02:00
REDCODE ba8f7b68be refactor(Lactose): await user lookup in RefreshTokenTransformation 2026-08-21 16:27:05 +02:00
REDCODE a7d2e88993 feat(Lactose): convert UserRepository to async 2026-08-21 16:27:05 +02:00
REDCODE d5ee952bb0 feat(media): support attachment download via download query param 2026-08-21 02:15:11 +02: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 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 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 b5b8fb247c Merge branch 'develop' into feature/cascade-visibility-skip-deleted 2026-08-20 14:08:54 +00:00
REDCODE 22b6e0e702 fix(jobs): retry directories whose reconciliation batch was dropped 2026-08-20 15:54:54 +02:00
REDCODE b2786b487f fix(jobs): snapshot discovery cursor before scan to avoid skipping mid-run assets 2026-08-20 15:54:51 +02:00
REDCODE 317bf12e07 fix(jobs): count unique albums in discovery scan status 2026-08-20 15:33:43 +02:00
REDCODE 7fd7a82d54 fix(migration): no-op IngestedAt backfill to avoid timeout crash on large tables 2026-08-20 15:13:24 +02:00