Release Summary
- Added support for user photos, now visible in various areas including reminders and search results.
- Improved photo upload and cropping experience in the user form.
- Fixed issues with photo serving to ensure fresh updates and prevent caching problems.
- Enhanced the design of person-related features to include photos consistently across the app.
0.31.0 (2026-03-05)
Features
- add person photo upload, crop, and display (0488109)
- add photo feature translations for all locales (370beb7)
- add photo upload and delete API endpoints (8578d6c)
- add PhotoCropModal with react-easy-crop integration (8b90edf)
- add processPhoto utility with sharp resize/JPEG/EXIF-strip (ec3bc8f)
- add sharp and react-easy-crop dependencies for photo upload (d6e92ce)
- add user photo support (upload, navbar, graph, relationships) (341b292)
- embed person photos in reminder emails as inline CID attachments (7b5d825)
- increase max crop zoom from 3x to 5x (6585fb9)
- integrate photo upload and crop into PersonForm (f9be2fe)
- replace PersonPhoto with flexible PersonAvatar component (7dfa914)
- show person photos in dashboard upcoming events (1cb9f81)
- show person photos in group member pills (11baa8b)
- show person photos in navbar search results (0bebd71)
- show person photos in network graph nodes with group-colored borders (80dc1e2)
- show person photos in people list table (7205680)
- show person photos in relationship list (c41d36c)
Bug Fixes
- add blob: to CSP img-src for photo crop preview (9922210)
- defer photo upload/delete to form save instead of immediate execution (9a9f81b)
- remove inline photo attachments from reminder emails (5a8bbd0)
- set maxZoom=5 on Cropper component to match slider range (0be7969)
- strip quoted nicknames from initials in PersonAvatar (9e32f67)
- update UI immediately when removing a photo via X button (9f6c2ee)
- use 80px avatar on person detail page per design spec (8600af9)
- use ETag + no-cache for photo serving to prevent stale cache on photo change (39829d3)
- use no-store for photo serving to guarantee fresh photos after change (a6a42d3)