* feat: add user profile update feature with moderation support
Add ability for users to update their display name with optional machine/human review.
Backend:
- Add profile_change_request table (V15 migration)
- Add UserProfileService with moderation workflow
- Add PATCH /api/v1/user/profile and GET /api/v1/user/profile endpoints
- Add ProfileModerationService interface with NoOp implementation
- Add ProfileModerationProperties for machine/human review toggles
- Update AuthController /me to refresh session when displayName changes
- Add i18n messages for profile validation and responses
Frontend:
- Add /settings/profile page with edit-on-click pattern
- Add profileApi.updateProfile() to client
- Update user menu: add "Profile Settings", make "Security Settings" local-only
- Add i18n translations (en/zh) for profile settings
Testing:
- Add UserProfileControllerTest with 8 test cases
- Add UserProfileServiceTest with 6 test cases
- Add AuthControllerTest case for session refresh on displayName change
* version sql
* merge main
* feat: add profile review admin workflow
* feat(web): add pagination to skill review list
- useReviewList now passes page/size to backend and returns paginated response
- reviews.tsx maintains per-tab page state with prev/next controls
- namespace-reviews.tsx adapted to new response shape
- Added i18n keys for pagination (en/zh)
* feat: add user profile update feature with moderation support
Add ability for users to update their display name with optional machine/human review.
Backend:
- Add profile_change_request table (V15 migration)
- Add UserProfileService with moderation workflow
- Add PATCH /api/v1/user/profile and GET /api/v1/user/profile endpoints
- Add ProfileModerationService interface with NoOp implementation
- Add ProfileModerationProperties for machine/human review toggles
- Update AuthController /me to refresh session when displayName changes
- Add i18n messages for profile validation and responses
Frontend:
- Add /settings/profile page with edit-on-click pattern
- Add profileApi.updateProfile() to client
- Update user menu: add "Profile Settings", make "Security Settings" local-only
- Add i18n translations (en/zh) for profile settings
Testing:
- Add UserProfileControllerTest with 8 test cases
- Add UserProfileServiceTest with 6 test cases
- Add AuthControllerTest case for session refresh on displayName change
* version sql
* merge main
- Change skill uniqueness constraint from (namespace_id, slug) to
(namespace_id, slug, owner_id) to support per-user skill records
- Reject publish when another owner has a published skill with same slug
- Reject review approval when same-slug conflict exists
- Auto-withdraw pending review versions when submitting a new version
- Resolve visible skill by preferring published skill, then current
user's own skill, to fix wrong skill returned for same-slug queries
- Invalidate all skill query cache on publish to prevent stale data
Add responsive text wrapping and overflow handling to token-related
components to prevent layout breaking with long token names or descriptions.
Changes:
- Add min-w-0 to dialog headers to allow flex shrinking
- Add break-all/break-words to prevent text overflow
- Add overflow-hidden to token display container
- Apply max-w-48 constraint to token name column