- ModalFrame: move HeaderActions before title so icons appear left of text
- Replace all btn-outline-* with btn-* (secondary/primary/danger/success/
warning/light/info) across all .razor components for filled buttons
Create PasswordField.razor in Components/Shared with:
- Two-way binding for Password, ConfirmPassword, OldPassword
- Strength bar with color-coded segments
- Requirements checklist (min length, upper/lower, number/special)
- Passwords-do-not-match validation
- Public IsValid property for parent submit-button checks
- ShowOldPassword toggle for change-password vs register flows
Register.razor and User.razor now use the shared component,
eliminating duplicated password validation logic.
- Settings: stack sidebar vertically on mobile, fix grid minmax 380->280px, use dvh
- AlbumDetail: add mobile breakpoints for grid, restructure header actions
- ImagePreview: switch info bar to column layout on mobile
- User profile: fix col-2/col-2 to responsive col-5/col-7 breakpoints
- AdminUsers: wrap inline editing controls with flex-wrap on mobile
- Jobs: collapse 8 action buttons into dropdown on mobile
- Albums: add flex-wrap to header, hide 'New Album' text on mobile
- NavMenu: responsive authenticated area (column on mobile, btn-group-sm)
- Empty-state messages: m-5 -> m-2 m-sm-5
- Footer: hide on mobile (d-none d-sm-flex)
- Login: remove orphaned 'Remember me' checkbox
UsersMapper.ToGetUsersDto() was not copying LastLogin, BannedAt, or
UpdatedAt from the User entity to the UserInfoDto, causing the client
to always receive null for these fields. Added the missing mappings.
Also added null fallback ('Never') for LastLogin display on the User
page to prevent NullReferenceException when the value has not been set.
- Pass PollInterval from Jobs page to JobTree so children refresh at the
same rate as parent jobs (instead of hardcoded 1s)
- Add @key on JobRow (by job Id) and group divs so Blazor reuses DOM
nodes across polls instead of tearing down and rebuilding
- Redirect non-admin users to / on Jobs and Settings pages
- Fix date formatting in User page