Improve error handling and logging for member profile updates
- Added detailed logging to API route for PUT requests - Improved error response handling to include actual error messages - Fixed avatarId type conversion (str...
Add detailed logging to updateMemberProfile for debugging
- Added logging at start of updateMemberProfile method - Added logging before and after saving user and member - Improved error response to include error detail...
Improve error handling and refresh profile data after save
- Added detailed error messages when profile save fails - Profile data is now refreshed from server after successful save - Better error logging for debugging
Add support for updating user name fields and dateOfBirth in member profile
- Added UserRepository to MemberController - Updated updateMemberProfile to handle namePrefix, nameFirst, nameMiddle, nameLast, nameSuffix, nameFirstAKA, nameLa...
Remove URL input for backgrounds, improve upload error handling, fix avatar persistence
- Removed URL input field for backgrounds - only uploads via popup are allowed - Improved error handling for background uploads with detailed error messages - F...
Resolve lint errors in ProfileTab and MemberHeader
- Added Button import to MemberHeader - Fixed newAvatar scope issue in handleUploadPhoto and handleCreateAvatar Creator - Stored avatarIdToRefresh in outer scop...
Refresh profile data after setting avatar and ensure proper activation
- handleSelectAvatar now sets avatar as active via API and refreshes profile data - handleUploadPhoto and handleCreateAvatar Creator now update member and refre...
Convert null to undefined for avatarSrc type compatibility
- fetchMemberAvatar returns string | null but avatarSrc expects string | undefined - Use nullish coalescing operator to convert null to undefined
Add .js extension to dynamic imports for node16 module resolution
- TypeScript with node16 moduleResolution requires explicit file extensions - Changed relative imports to include .js extension
Use relative paths for dynamic imports of avatarUtils
- Changed dynamic imports from @/app/lib/avatarUtils to relative paths - Fixes TypeScript module resolution error during build
Fix async/await syntax error in HexHeadGroup useEffect
- Wrapped Promise.all in async function to fix build error - useEffect callbacks cannot be async directly
Update avatarUtils to use URLs directly from member profile
- Backend now includes avatar URLs in member profile response - Removed unnecessary second API call to /api/security/avatars/{id} - More efficient and works cor...
Use correct bucket and object path structure for MinIO uploads
- Change bucket name from domain-based to 'public' bucket - Include domain path (e.g., kamocrm-com) as part of object name, not bucket name - Fix object path st...
Properly handle MinIO upload failures for avatars
- Remove silent exception swallowing in Avatar Creator avatar creation - Add proper error handling and rollback for failed uploads - Delete database record if f...
Handle missing fileHash column gracefully
- Add try-catch around fileHash access to handle missing database column - Fall back to ID-based file naming if fileHash column doesn't exist yet - Allows code ...
Replace MuiAvatar with img tag to properly display avatar images
- Use native img tag instead of MuiAvatar component for better image rendering - Wrap img in Box container with proper styling for circular display - Maintains ...
Avatar URL generation and display issues
- Add X-Forwarded-Host header forwarding in API proxy so backend can generate correct theme domain URLs - Add comprehensive logging for avatar upload and fetch ...
Improve avatar management UI and functionality
- Fix avatar display in Select Avatar popup to show images for all avatars (generate SVG client-side when URL missing) - Fix Upload Photo functionality with imp...
Remove transformAvatarUrl calls - display images directly from backend URLs
Add logging and ensure public bucket URL format matches working pattern
Switch avatars to public bucket - no auth needed, direct theme URLs
Update Next.js 15 route handler params handling for avatar storage proxy
Apply URL transformation to avatar URLs in MemberHeader and ProfileTab
Add proxy route and URL transformation for avatar images to fix mixed content errors
Revert to getPresignedUrl like backgrounds - getPresignedUrlWithEndpoint was breaking uploads
Add retry logic for Maven dependency downloads to handle transient Central failures
Simplify StorageController - validate OTK, get image, stream it
Use proxy route for avatar URLs instead of MinIO SDK presigned URLs
Generate presigned URLs normally then replace hostname with theme domain
Use getPresignedUrlWithEndpoint with theme domain for all avatar URLs
Use getPresignedUrl method that works instead of getPresignedUrlWithEndpoint
Generate presigned URLs with theme domain directly in backend for avatars
Backend now generates presigned URLs with theme domain directly, frontend uses them as-is
Use authenticated proxy route for avatar images - internal bucket requires auth, use /api/storage/avatars/ proxy instead of direct theme URLs
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
