Commit Graph
34 Commits
Author SHA1 Message Date
REDCODE d602d2d34b feat: add CoverAssetId to albums with resolution data in full DTO
- Add CoverAssetId FK and CoverAsset navigation to Album model
- Add AlbumAssetPreviewDto with resolution/thumbnail info
- Extend AlbumPreviewDto/FullDto with PersonName, CoverAssetId, AssetCount
- Add CoverAssetId to AlbumCreateDto and AlbumUpdateDto
- Update AlbumMapper to populate new fields from eager-loaded relations
- Add EF migration for CoverAssetId column
2026-07-08 13:11:20 +02:00
REDCODE 949dec9bdc feat: add data completeness indicators to statistics page 2026-07-08 12:21:25 +02:00
REDCODE 89c4bfe13f feat: implement seed-based deterministic random ordering for home page
Replace the fixed GUID-based ordering (OrderBy(a => a.Id)) with a
client-generated seed that produces a truly different random order on
each page refresh. The seed is passed to the server and used to
deterministically shuffle all asset IDs via a hash function, ensuring
consistent pagination with no duplicates across pages within a session.

Also fix LoadPreviousPage showing a spinner when already at page 1 by
adding loadedMinPage <= 1 to the guard clause.
2026-07-08 12:10:37 +02:00
REDCODE d4a8b272f2 feat: extend AssetPreviewDto with album and cosplayer names
- Add AlbumNames and CosplayerNames fields to AssetPreviewDto
- Include Albums and PersonOwner in AssetRepository.GetAssets() query
- Populate new fields in AssetsMapper.ToAssetPreviewDto()
2026-07-08 03:06:03 +02:00
REDCODE bb01f6526e fix: remove destructive People soft-delete in IntegrityCheckJob and drop duplicate hash stats 2026-07-08 02:58:00 +02:00
REDCODE 03f52cfb5b feat: add statistics page with aggregate asset/user/system stats via fast DB queries 2026-07-08 01:49:50 +02:00
REDCODE 923aaa6865 feat: add CreatePersons and CreateAlbums jobs 2026-07-07 20:33:30 +02:00
REDCODE 96f431fb41 feat: add PreviewJob and upgrade thumbnails to WebP
- Add PreviewJob (WebP) — same master/sub-job pattern as ThumbnailJob
- Convert ThumbnailJob from JPEG to WebP with configurable quality
- Add ThumbnailQuality/PreviewQuality settings (configurable in settings UI)
- Add PreviewSize, ThumbnailFormat, PreviewFormat fields to Asset model
- Add format-aware repo queries for auto-regeneration of stale JPEGs
- Fix MIME types in MediaRepository/MediaController to return image/webp
- Wire PreviewJob into JobScheduler, JobMapper, JobsController
- Expose quality settings on Settings page (Jobs group, range sliders)
- Add 'Make Previews' button on Jobs page, reorder to scan/metadata/thumb/preview/phash/integrity
2026-07-07 19:41:51 +02:00
REDCODE 0502cbbd76 chore: upgrade target framework to net10.0
Update all projects from net8.0 to net10.0 and global.json SDK to 10.0.0.
Gitignore dotnet-tools.json.
2026-07-07 18:03:42 +02:00
REDCODE 07fcd05031 feat: masonry gallery on homepage with infinite scroll
- Enrich AssetPreviewDto with ResolutionWidth/Height, HasThumbnail, HasPreview
- Extend GET /api/asset with ?type=&random=true for gallery queries
- Add general GetAssets repository method (type, dates, random, pagination)
- Fix LactoseAuthService.GetUserData to handle unmapped JWT claim names
- Add request-level auth debug logging middleware
- New AssetService (MilkStream.Client) for gallery API calls
- Rewrite Home.razor: CSS column-count masonry, infinite scroll via
  IntersectionObserver JS interop, inline preview overlay with
  progressive loading (preview -> thumbnail fallback), arrow/Esc nav
- Home.razor.css: responsive 2-5 column masonry, overlay styles,
  content-visibility:auto for memory optimization
- Sliding window of 10 pages (300 tiles) with loading=lazy images
- Broken thumbnail fallback to Bootstrap bi-image icon
2026-07-07 15:44:03 +02:00
REDCODE 64a0fdf81d feat(folders): add regex pattern field with named groups, syntax highlighting, and sample path preview 2026-07-07 14:19:35 +02:00
REDCODE 1aad7e1d76 feat(settings): add JobBatchSize setting for batch job sizing 2026-07-07 12:05:00 +02:00
REDCODE a7b71153e9 feat(jobs): add CompletedWithErrors status for parents with failed sub-jobs 2026-07-06 20:28:39 +02:00
REDCODE eb9f0d14d3 docs: add XML documentation to all public APIs across all projects
Achieves 100% XML doc coverage on non-trivial types with CS1591
enforcement via Directory.Build.props.

Coverage by project:
- Butter: from 6.5% to 100% (DTOs, enums, MIME types)
- Lactose: from ~28% to 100% (controllers, services, repos, jobs, models)
- MilkStream.Client: from ~29% to 100% (all frontend services)

Uses <inheritdoc /> on repository implementations (interfaces
already documented) and full <summary>/<param>/<returns> tags
elsewhere. Enums include member-level docs.
2026-07-06 18:45:21 +02:00
REDCODE 0a9c3ba207 feat: optimize jobs API with pagination, DB persistence, and cleanup
- Split /api/jobs into three endpoints: active roots, paginated past,
  children fetched on expand — reduces response from ~1MB to ~5KB
- Persist completed jobs to PostgreSQL via JobRecord entity + migration
- Add configurable job retention cleanup (hourly timer, default 30 days)
- Fix PHashJob master not persisting (missing Complete() call)
- Add PastJobsResponse DTO to fix case-sensitive JsonElement deserialization
- Refactor JobTree/JobRow for lazy-loaded children via FetchChildren callback
- Handle 401 responses in JwtTokenRefresher with token refresh + retry
- Remove JobChildrenSummary component (replaced by inline parent summary)
2026-07-06 18:17:49 +02:00
REDCODE 902c4418ae fix: change ParentJobId to get/set for WASM compat, remove @key from JobTree, add debug panel 2026-07-06 15:36:26 +02:00
REDCODE 1e13e5694e feat: add ParentJobId to JobStatusDto for job hierarchy tracking 2026-07-06 15:14:43 +02:00
Samuele Lorefice f31369bea9 Added missing settings and power slider. Broken state 2025-09-05 04:56:53 +02:00
REDCODE 28e53eb31b PHash Job implementation 2025-09-03 23:37:56 +02:00
Samuele Lorefice a4747ca417 Front end work on Jobs page 2025-09-03 20:55:57 +02:00
REDCODE 1e3a0eae53 Added IntegrityCheck job 2025-09-03 01:02:20 +02:00
Samuele Lorefice b18f294db4 Scaffolded Jobs controller basics 2025-09-02 20:40:16 +02:00
Samuele Lorefice 9342bcf895 Fixed JSON Default settings not being serialized, explicitly defined enum 2025-08-21 17:58:01 +02:00
Samuele Lorefice d28b53e793 feat(API): Settings rework
feat(db): extended amount of settings informations stored on the database
feat(frontend): added support for updating the refreshToken after a refresh request.
feat(backend): added a defaultSettings.json file that defines how the settings are initialized.
2025-07-18 20:40:42 +02:00
REDCODE c3a749c960 WIP 2025-07-18 02:21:52 +02:00
Samuele Lorefice d23f813e25 feat(db): limited strings length in Settings Table
feat(API): removed SettingsDto in favor of List<SettingDto> instead.
2025-07-17 19:34:52 +02:00
Samuele Lorefice 6d327ce8a2 Merge branch 'develop' into feature/frontend 2025-07-16 18:04:50 +02:00
Samuele Lorefice 5780aaec73 feat: added disposability to some repositories, changed the FileSystemScanner service to be a singleton. 2025-07-16 18:03:15 +02:00
Samuele Lorefice c04522a992 Login service rework 2025-07-16 16:17:25 +02:00
REDCODE e786c68612 feat(API): Added Access level to the data returned from authentication actions 2025-07-16 01:47:14 +02:00
Samuele Lorefice c739c17266 Reworks Settings to be a key/value pair 2025-07-08 20:15:20 +02:00
MrFastwind dbdce9d731 feat(Lactose): Adds RefreshToken Endpoint 2025-07-02 17:51:22 +02:00
MrFastwind b320d34bda feat(API): Adds Authentication Result as DTO for authentication 2025-06-04 18:27:47 +02:00
Samuele Lorefice 647c5be859 Moved DTOs to external library, referenced the library back into Lactose 2025-05-10 01:57:00 +02:00