Updated the logged-out message on the home page from "Please log-in to browse any media" to "There is no public media available. Logging in might make more content visible." The underlying issue…
Progress: extracted PasswordField.razor as a shared component in Components/Shared/, used by both Register.razor and User.razor (change-password modal). Component exposes two-way binding…
Addressed: MainLayout now runs an expiry-driven keepalive loop. On login, it parses the JWT, calculates the time until expiry minus 2 minutes, and schedules a Reauthenticate() call. After each…
Partially addressed: GET /api/person now filters out cosplayers with no visible assets for User-level accounts. The GetAllVisible repository method checks for at least one album containing a…
docker-compose.yml reverted to develop's LactoseBaseUrl=http://192.168.50.100:5162/
Addressed the double-counting bug — removed the Interlocked.Increment(ref failedAssets) from the master Done handler in all 4 job types. The subjob's failedAssets is now the sole source of…
Completed instead of CompletedWithErrors/Failed on asset failures