Block a user
WIP: refactor: adopt primary-constructor style in SettingsService and UserService
WIP: refactor: extract ViewModeToggle + query-param search
WIP: chore: remove dead frontend code
WIP: refactor: repurpose MediaService as shared media URL builder
Frontend performance: cascade N+1 + settings batch save
Frontend consistency pass + fix null-deref warnings
Regularize frontend services
Repurpose MediaService as shared media URL builder
Extract ViewModeToggle + replace ParseSearchQuery
Consolidate search/dropdown + debounce
Extract shared selection/confirm/visibility state helpers
Decompose AlbumAssetPicker duplicate templates
Unify infinite-scroll pagination (Home → PageBuffer)
Extract shared multi-select action toolbar
Remove dead frontend code
Remove manual token-refresh wrapper in LoginService
Frontend cleanup: regularization, reuse, and shared-component extraction
WIP: feat: cascade visibility skips only deleted assets
Cascade visibility should skip only deleted, not private
bug: in cosplayer detail page scrolling albums will load shifting the masonry to the left
Fixed in 6f60ade.
Changes:
AlbumGrid.razor— Added@key="album.Id"so Blazor preserves DOM identity across renders instead of matching by index (which caused old cards to retain…