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...
Add avatar fallback logic to chat components and member list
- Created avatarUtils.ts with utility functions for avatar fallback (member -> user -> initials) - Updated HexHeadGroup to fetch and display avatars with fallba...
Implement ThemeBackground system: entity, repository, controller, and enhanced BackgroundManager with slideshow support
Fix lint error: change let to const for filtered variable and remove unused imports
Enhance Select Avatar tab: add search, sort by newest, date/time display, edit avatars, and photo cropping with draggable mask
Fix Grid layout: replace Grid container/item with Box using CSS Grid to match FormPersonalInfo.tsx exact layout
Fix TypeScript errors: add eslint-disable for EyeDropper any type, remove unused imports
Replace CREATE AVATAR tab with exact layout from FormPersonalInfo.tsx - matching kamo-register avatar creator interface
Fix Swiper CSS imports: move to top-level side-effect imports instead of dynamic imports
Fix Swiper import: use dynamic import to resolve CommonJS/ESM module issue
Fix TypeScript error: replace 'any' with 'unknown' in error handling
Match CREATE AVATAR menu layout exactly to kamo-register design
Update Create Avatar layout to match kamo-register design
- Reorganize Create Avatar tab with top row for quick settings (Style, Seed) - Split bottom row into two columns: Preview (left) and Advanced Settings (right) -...
Switch back to MuiAvatar components for avatar display
- Replace img tags with MuiAvatar components - Maintains all existing functionality (error handling, loading callbacks) - Cleaner code using Material-UI compone...
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
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
Remove unused storage proxy route - using presigned URLs directly
Rebuild avatar UI - modern, interactive, polished. Backend returns URLs directly
Use proxy route for avatar URLs instead of MinIO SDK presigned URLs
Backend now generates presigned URLs with theme domain directly, frontend uses them as-is
Add detailed error logging to storage proxy route to identify 500 errors
Use direct theme domain URLs for avatars - construct URLs using theme path logic as requested
Correct avatar URL path - internal bucket should use /internal/ directly, not /public/bucket-name/internal/
Create server-side getThemePath function - getThemePath uses window which doesn't exist on server
Use getThemePath to construct avatar URLs instead of presigned URLs
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.