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...
Include avatar URLs in member profile response
- Added helper methods to generate avatar URLs (getThemeDomain, getPublicBucketName, generateFileHash, getPublicBucketUrl, generateAvatarUrl) - Updated getMembe...
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...
Add ThemeBackgroundController with hash-based storage and public bucket support
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 TypeScript error: replace 'any' with 'unknown' in error handling
更新创建 Avatar 版式以匹配 kamo- register 设计
- 重组 Avatar 选项卡, 上面有快速设置( Style,种子) - 将下行分为两个栏:预览(左)和高级设置(右) - 将高级设置移至可扩展手风琴(变形,背景) - 匹配来自 kamo- register FormAvatar 的布局结构 - 通过更好的组织和视觉结构改进UX
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...
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...
Remove ID-based fallback code, use only hash-based naming
- Remove all try-catch fallback logic for missing fileHash column - Remove ID-based file naming fallbacks - Code now exclusively uses hash-based file storage - ...
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 ...
将 MuiAvatar 替换为 img 标记, 以正确显示 avatar 图像
- 使用本地的 Ing 标记而不是 MuiAvatar 组件来更好的图像渲染 - 将印入 " 盒 " 容器,并配有适当的外型,供循环显示 - 维持所有现有功能(处理错误,加载回调) - 解决在选定的菜单中未显示阿凡达图像的问题
Implement hash-based file storage for avatars
- Generate SHA-256 hash from avatar ID after persistence - Store hash in database fileHash field - Upload files to MinIO using hash-based naming: {hash}.{fileEx...
将文件Hash 字段添加到 Avatar 实体以安全保存文件
- 添加文件Hash列以存储可视化标识的SHA-256散列 - Hash用于MinIO文件命名,以防止点数攻击 - 格式 : {hash}. {fileExtension} 而不是 {id}. {fileExtension}
Avatar URL 生成和显示问题
- 在 API 代理中添加 X- Forwarded-Host 标题转发, 这样后端可以生成正确的主题域 URL - 增加Avatar上传和取取操作的综合记录 - 改进变形AvatarUrl功能的 URL 处理 - 为图像加载失败添加错误处理器 - 更好的空/空 URL 检查和倒置预览生成 - 上传失败的增强错误信息
改进虚拟管理UI和功能
- 在 Select Avatar popup 中修复阿凡达显示, 以显示所有阿凡达的图像( 缺少 URL 时生成 SVG 客户端) 。 - 修正上传照片功能,改进文件输入处理 - 将所有“ Avatar 创建者” 文本替换为“ avatar ” , 以便保持一致性 - 将“ 管理阿凡达 ” 的按钮文字改为“ 管理相片...