Disable activity tracking and session extension during logout
- Add disableClientActivityTracker() function to stop activity tracking - Stop session monitor when logout is initiated - Prevent screen movement/activity from ...
Clear session data before deleting key in logout endpoint
- Set session data to empty JSON before deleting the key - Ensures session is unusable even if deletion fails or there's replication lag - Add error handling wi...
Fix Redis import in logout route - use static import for getRedisReadClient
Clear existing *** cookies before setting new one during validate
- Clear all possible *** cookie variations before setting new cookie - Prevents reusing old session cookies from previous logins - Ensures validate always uses ...
Add verification logging to confirm Redis session is deleted during logout
Fix logout: call SecurityService logout endpoint to fully invalidate session
- Call SecurityService /api/security/logout to properly invalidate session on Java backend - This ensures session is deleted, CSRF tokens are removed, and sessi...
Replace PersonIcon with user avatar in NavTop My Account link
- Fetch member avatar using fetchMemberAvatar utility - Display Avatar component with user's image or initials fallback - Matches design pattern used in other c...
Fix TypeScript errors: Replace 'any' types with proper interface in MemberListProvider
保证在 HexheadGroup 中缺失时总是创建首字母 SVG
- 如果avatar抓取失败, 添加错误处理回落以创建缩写 SVG - 合并缩写 SVG 创建逻辑 - 确保AvatarSrc永远不会是空字符串
在设置为活动后刷新相机列表
- 在将相片设定为活动后, 刷新完整相片列表以获取更新的等效旗 - 从已刷新的列表中查找并设置活动相机 - 确保更改正确持续,并更新页面
Load active avatar from avatars list on Profile page
- Fetch avatars list and find the one marked as active - Set activeAvatar from the full avatar object in the list (has all details and URL) - Remove redundant a...
Fix avatar not displaying on Profile page after refresh
- Ensure avatar URL from member profile is preserved when setting activeAvatar - Update profileData with avatar URL when avatar is loaded - Preserve URL in sync...
Add detailed logging for avatar selection debugging
- Log full avatar object when handleSelectAvatar is called - Add validation for avatar.id before processing - Log API URL being called - Better error messages f...
Fix TypeScript type error - handle null body in apiProxy
- Convert null to undefined for BodyInit type compatibility - Fixes: Type 'null' is not assignable to type 'BodyInit | undefined'
Fix PUT request body handling for set-active endpoint
- Explicitly set body to undefined for PUT requests without body - Improve body handling in apiProxy to gracefully handle empty requests - Prevents body consump...
Improve error handling for set-active avatar endpoint
- Forward actual backend error messages instead of generic message - Better error parsing in frontend (handle both JSON and text responses) - Enhanced logging t...
Use static imports instead of dynamic imports for avatarUtils
- Replace dynamic imports with static imports at top of file - Avoids module resolution issues with TypeScript moduleResolution node16 - Functions are always ne...
Revert to relative paths for dynamic imports - Next.js may not resolve path aliases in dynamic imports at build time
Fix path alias - use @/lib/avatarUtils instead of @/app/lib/avatarUtils
- @/ maps to project root, so @/lib/avatarUtils is correct path - @/app/lib/avatarUtils was incorrect (would look for app/app/lib/avatarUtils)
Fix dynamic imports - use path alias @/app/lib/avatarUtils for Next.js webpack resolution
- Change relative paths to path alias @/app/lib/avatarUtils - Next.js webpack can't resolve .js extensions for .ts files in dynamic imports - Path aliases work ...
Fix TypeScript ESM dynamic imports - add .js extension required for node16/nodenext module resolution
- TypeScript with moduleResolution node16/nodenext requires explicit .js extensions in dynamic imports - TypeScript will resolve .js imports to .ts files at bui...
Fix TypeScript module resolution - remove .js extension from dynamic imports
- Change dynamic imports from avatarUtils.js to avatarUtils (no extension) - Fixes build error: Module not found: Can't resolve '../../lib/avatarUtils.js' - Typ...
Fix avatar display with override mechanism support
- ProfileTab: Always show USER avatar (no override mechanism) - MembershipPermissionsTab: Always show MEMBER avatar (no override mechanism) - Site-wide displays...
Detect member avatar override on page load even if returned as 'avatar'
- Add logging to see what API returns on initial load - Check if member has avatarId/memberAvatarId set to detect member override - If avatar ID matches memberA...
Ensure avatarId is always sent when activeAvatar exists
- Use corrected useDefaultUserAvatar value directly in save logic - If activeAvatar exists, always send avatarId (member override) regardless of flag - Improved...
Preserve avatar URL when saving and add defensive check
- Preserve profilePicture from activeAvatar when updating profileData after save - Add warning if activeAvatar exists but useDefaultUserAvatar is incorrectly tr...
Add detailed logging to track avatar state during save
- Log current state (useDefaultUserAvatar, activeAvatar, avatarIdToSend) before save - Log API response after save (memberAvatar, avatar) - Log refreshed profil...
Preserve avatar state after save to prevent revert
- Fixed save logic to properly send avatarId when avatar is selected - Preserve current activeAvatar and useDefaultUserAvatar state before refresh - If refresh ...
Update avatar state after saving profile to prevent revert
- After saving profile, refresh and update activeAvatar state from API response - Update useDefaultUserAvatar flag to match saved state - Ensures avatar remains...
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
Add .js extension to dynamic imports for node16 moduleResolution
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...
