Implemented in 3633b41. Eye toggle buttons added to all password fields across:
PasswordField.razor(shared — old/new/confirm password)Login.razorAdminUsers.razor(create user +…
Analysis Report
The Person model has a DeletedAt property, but the actual delete behavior is inconsistent — the controller does hard delete while other parts of the codebase assume…
Addressed all review comments from Fastwind (review #42):
- x-delta-timestamp header removed — replaced with proper
ChildrenResponseDTO that includesChildren+Since - **Tuple…
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