feat: password reset, email change and full audit pass #74

Merged
eliott merged 1 commit from fix/user-guide-bugs into develop 2026-10-11 18:54:15 +02:00
Owner

Summary

User guide fixes (forgot/reset password, email and display name changes) plus a full audit pass of the front and its infra. Pairs with RollNote/rollnote-api#66.

Bug fixes

  • Import preview no longer retries forever on a bad file
  • Paginated lists stop polling after a failed page and show a Retry block
  • 401 refetches the session before redirecting (no /login bounce loop)
  • Film edit sends the ISO id, camera edit sends null format, cleared location labels are saved, frame count refreshes after duplicate
  • New frame: a failed location save is non-fatal, so retrying never creates a duplicate frame
  • Profile drawer keeps unsaved edits, 2FA calls the matching endpoint, logout handles errors, double-submit guards
  • Lens/weather option cards are keyboard accessible; map layer switch keeps view and label

Performance

  • Initial bundle 772 kB -> 584 kB (184 -> 153 kB transfer)
  • Service worker caches JS lazily (with warmup of the boot chunks) instead of prefetching all ~2 MB
  • @angular/animations and primeicons removed (Lucide replacements), Lara preset trimmed to used components
  • Reference lists cached with background revalidation; leaflet loads near viewport; confirm dialog deferred; boot shell in index.html

Infra

  • nginx: gzip level 6 + gzip_static, immutable caching only for hashed files, security headers, CSP in Report-Only
  • Pinned Node 24 / nginx images, corepack pnpm, production build step in CI, tighter budgets

Version stays 0.10.0 (already bumped on this branch, minor), matching the v0.10.0 changelog entry in the API.

Test plan

  • tsc, eslint, 896 Vitest tests pass; production build OK (2 component-style budget warnings from leaflet.css)
  • Manually verified locally in the browser
  • After deploy: check DevTools for CSP report-only violations before enforcing
## Summary User guide fixes (forgot/reset password, email and display name changes) plus a full audit pass of the front and its infra. Pairs with RollNote/rollnote-api#66. ### Bug fixes - Import preview no longer retries forever on a bad file - Paginated lists stop polling after a failed page and show a Retry block - 401 refetches the session before redirecting (no /login bounce loop) - Film edit sends the ISO id, camera edit sends `null` format, cleared location labels are saved, frame count refreshes after duplicate - New frame: a failed location save is non-fatal, so retrying never creates a duplicate frame - Profile drawer keeps unsaved edits, 2FA calls the matching endpoint, logout handles errors, double-submit guards - Lens/weather option cards are keyboard accessible; map layer switch keeps view and label ### Performance - Initial bundle 772 kB -> 584 kB (184 -> 153 kB transfer) - Service worker caches JS lazily (with warmup of the boot chunks) instead of prefetching all ~2 MB - `@angular/animations` and primeicons removed (Lucide replacements), Lara preset trimmed to used components - Reference lists cached with background revalidation; leaflet loads near viewport; confirm dialog deferred; boot shell in index.html ### Infra - nginx: gzip level 6 + `gzip_static`, immutable caching only for hashed files, security headers, CSP in Report-Only - Pinned Node 24 / nginx images, corepack pnpm, production build step in CI, tighter budgets Version stays `0.10.0` (already bumped on this branch, minor), matching the `v0.10.0` changelog entry in the API. ## Test plan - tsc, eslint, 896 Vitest tests pass; production build OK (2 component-style budget warnings from leaflet.css) - Manually verified locally in the browser - After deploy: check DevTools for CSP report-only violations before enforcing
User guide fixes:
- forgot/reset password pages, email and display name changes
- data change service so lists refresh after writes

Audit fixes:
- import preview no longer retries forever; paginated lists stop polling on
  error and offer Retry; 401 refetches the session before redirecting
- film edit sends the ISO id, camera edit sends null format, cleared
  location labels are saved, frame count refreshes after duplicate
- new frame: location failure is non-fatal (no duplicate frames)
- profile drawer keeps unsaved edits, 2FA calls the right endpoint, logout
  handles errors, double-submit guards, keyboard-accessible option cards
- perf: lazy service worker JS group with cache warmup, animations and
  primeicons removed, Lara preset trimmed to used components, cached
  reference lists, leaflet loaded near viewport, deferred confirm dialog,
  boot shell, initial bundle 772 kB -> 584 kB
- infra: nginx gzip_static, hashed-only immutable caching, security headers
  and report-only CSP, pinned Node/nginx images, prod build in CI
eliott merged commit 8d633547d9 into develop 2026-10-11 18:54:15 +02:00
eliott deleted branch fix/user-guide-bugs 2026-10-11 18:54:15 +02:00
Sign in to join this conversation.
No reviewers
No labels
run-ci
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
RollNote/rollnote-front!74
No description provided.