Prevent avatar from switching to empty avatar when selecting
- Immediately set selected avatar in UI for instant feedback - Only update with refreshed data if it has a URL and is the same avatar - Prevents overwriting sel...
Keep avatar manager dialog open and fix profile avatar display
- Removed handleClose() calls when selecting, creating, or uploading avatars - Dialog now stays open so users can continue selecting/managing avatars - After cr...
Ensure avatar URL is properly preserved and displayed from database
- Changed URL handling to preserve empty strings (use ?? instead of ||) - Updated MemberHeader props to prioritize profileData.profilePicture which contains the...
Ensure avatar is properly set from database on profile tab load
- Fixed URL handling to use original API response URL instead of potentially null transformed value - Added synchronization between activeAvatar and userAvatars...
Resolve avatar display and persistence issues in profile tab
- Fix initial avatar display to show correct primary avatar instead of default initials - Fix avatar selection from list to properly update member avatar and pe...
Correctly construct security provider logo URL using domain parsing
Correct Next.js 15 route handler params type and remove .js extension from dynamic imports
使用 GitHub 动作直接代替代码. forgejo.org 来避免503 错误
- 已更改动作/ 检查出错@ v4 至 QQ - 已更改 docker/login- action@v3 到 QQ - 已更改的 docker/ building- push- action@v5 到 QQ - 这避免了对代码的依赖.forgejo.org 有临时的503错误
直接通过ID而不是网络阵列获取安全提供者组织
- 通过ID端点为代理安全服务组织创建了新的API路由 /api/security/org/[id] - 更新设置View,以直接通过ID获取安全提供者或g,而不是搜索网络阵列 - 安全提供商Org不在网络阵列中(用户不是成员),所以我们需要单独获取它 - 这应当修正不显示的配置标签标识
添加安全提供者域搜索的全面记录
- 日志网络阵列和所有组织标识 - 详细记录Org ID与安全比较 - 日志域提取和URL构建步骤 - 这将有助于识别网络中是否缺少安全提供者或域名字段
对安全提供商标识使用与当前 org 标识相同的 URL 模式
- 将当前 org 标志 URL 路径中的第一个文件夹替换为安全提供者域 - 将文件夹名称的安全提供者域中的点替换为破折号 - 实例: ...
简化标志 URL 生成以匹配主题Logo和网络页面模式
- 对于当前 org( 成员和权限): 直接像主题Logo 那样使用 GetThemePath( ) - 对于安全提供商(Profile):使用带有安全提供商域的GetThemePathForDomain(),就像网络页面一样 - 取消了不必要的复杂度, API 调用当前 org 标志 - 与编码库其他地方所用的完全相...
Improve logo display in tabs - use icon prop with Box wrapper and add fallback logic
- Switched back to using Tab icon prop with Box wrapper for better MUI compatibility - Added fallback to use domains[0] if domain field is not available - Added...
Fix logo display in tab labels - use img tag in label instead of icon prop
- Changed from using Tab icon prop to embedding logo directly in label using Box with img tag - Added console logging to debug logo fetching and URL generation ...
Add organization logos to Profile and Membership & Permissions tabs
- Fetch security provider organization logo and display next to Profile tab - Fetch current organization logo and display next to Membership & Permissions tab -...
Increase kubectl rollout timeout from 300s to 900s
- Increased kubectl rollout status timeout to 900 seconds (15 minutes) for both k1m1 and k2m1 deployments - This matches the increased progressDeadlineSeconds o...
Increase deployment progressDeadlineSeconds from 60s to 600s
- Increased progressDeadlineSeconds to 600 seconds (10 minutes) to allow Next.js app sufficient time to build and start - Previous 60 second timeout was too sho...
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...
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
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...
Add Manage Backgrounds button in MemberHeader
- Added handleManageBackgroundsClick prop to MemberHeader - Added Manage Backgrounds button next to URL input when custom background is enabled - BackgroundMana...
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...
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 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...
将 MuiAvatar 替换为 img 标记, 以正确显示 avatar 图像
- 使用本地的 Ing 标记而不是 MuiAvatar 组件来更好的图像渲染 - 将印入 " 盒 " 容器,并配有适当的外型,供循环显示 - 维持所有现有功能(处理错误,加载回调) - 解决在选定的菜单中未显示阿凡达图像的问题