Commit graph

643 commits

Author SHA1 Message Date
vsxd
45ef31b12f fix(label): refresh i18n label queries and visible filters 2026-03-20 17:14:23 +08:00
vsxd
e6abc83133 fix(web): avoid replaceAll in admin label form 2026-03-20 16:10:38 +08:00
vsxd
54b165e188 fix(label): harden validation and batched search sync 2026-03-20 16:10:38 +08:00
XiaoSeS
b9b8ca22f1 fix(auth): enable local bootstrap admin by default (#141)
* feat(profile): add field policy config and GET response

Add per-field edit policy configuration (editable, requiresReview) to
application.yml and expose it in the GET /api/v1/user/profile response
via a new fieldPolicies map, enabling the frontend to dynamically render
fields based on backend-driven policies.

* feat(profile): implement mixed submission in PATCH

Split profile update changes by per-field policy: fields without
requiresReview apply immediately, fields with requiresReview enter
the pending queue. Return PARTIALLY_APPLIED status with appliedFields
and pendingFields maps when both paths trigger in a single request.

* feat(web): rewrite profile page with dynamic fields

Render profile fields dynamically from backend fieldPolicies, with
whole-page read/edit mode toggle. Handle APPLIED, PENDING_REVIEW, and
PARTIALLY_APPLIED responses. Add i18n keys for review hints and
partial-apply toasts in both en and zh.

* merge: resolve deepwiki.yml conflict with package-lock.json fix

* api schema

* fix(profile): align moderation defaults and tests

* ci(deepwiki): run crawler on release publish

* fix(auth): enable local bootstrap admin by default
2026-03-20 16:10:20 +08:00
Xudong Sun
611d67f845 fix(web): update skill detail install command (#139)
* fix(web): update skill install command on detail page

* fix(web): reuse base url for skill install registry

* test(web): fix install command window mock typing
2026-03-20 15:44:09 +08:00
Xudong Sun
21ba6ee938 fea: implement skill label system end to end (#140)
* docs(label): add skill label system design spec

Covers data model, permission model, search integration,
API design, and frontend design for the label system.

* docs(label): address spec review findings

- Add CHECK constraint on label_definition.type, deny-by-default in app layer
- Use TIMESTAMPTZ consistently for all new tables
- Add (label_id) index on skill_label for filter performance
- Add label count limits (10 per skill, 100 definitions)
- Detail async rebuild strategy (Spring @Async, batch 50, error isolation)
- Clarify search_vector is GENERATED STORED column, auto-maintained
- Expand SearchQuery with labelSlugs field, detail SQL changes
- Define all API response JSON structures
- Clarify PUT update: no slug in body, full-replace translations
- Clarify hard delete with audit_log
- Add cross-namespace permission boundary (promotion scenario)
- Pre-reserve multi-label API param for future
- Clarify ClawHub compat layer: no label support in phase 1

* docs(label): address second-round spec review findings

- Fix chapter numbering (duplicate "6." → "6." + "7.")
- Move labelSlugs to end of SearchQuery record to reduce breaking change
- Add TIMESTAMPTZ convention note for new tables
- Clarify async rebuild transaction boundary (per-skill independent tx)
- Move rebuildByLabelId to app layer to preserve module boundaries
- Clarify multi-label filter uses OR semantics with AND extension path

* docs(label): fix section numbering in frontend design chapter

* Implement skill label system end to end

* Unify label app services and DTOs

* Add admin label management page

* Add label admin backend tests

* Fix merge fallout in generated schema
2026-03-20 15:26:41 +08:00
XiaoSeS
28e9049562 feat(profile): add field policy config and GET response
* feat(profile): add field policy config and GET response

Add per-field edit policy configuration (editable, requiresReview) to
application.yml and expose it in the GET /api/v1/user/profile response
via a new fieldPolicies map, enabling the frontend to dynamically render
fields based on backend-driven policies.

* feat(profile): implement mixed submission in PATCH

Split profile update changes by per-field policy: fields without
requiresReview apply immediately, fields with requiresReview enter
the pending queue. Return PARTIALLY_APPLIED status with appliedFields
and pendingFields maps when both paths trigger in a single request.

* feat(web): rewrite profile page with dynamic fields

Render profile fields dynamically from backend fieldPolicies, with
whole-page read/edit mode toggle. Handle APPLIED, PENDING_REVIEW, and
PARTIALLY_APPLIED responses. Add i18n keys for review hints and
partial-apply toasts in both en and zh.

* merge: resolve deepwiki.yml conflict with package-lock.json fix

* api schema

* fix(profile): align moderation defaults and tests

* ci(deepwiki): run crawler on release publish
2026-03-20 14:59:21 +08:00
snchen5
a2367eece0 docs(agents): add repository guidance notes
变更摘要:

- 新增 AGENTS.md,整理仓库结构、开发命令、测试与提交流程说明

- 在 AGENTS.md 与 CLAUDE.md 中补充遵循 .gitignore、不要提交本地或生成文件的规则

- 调整 .gitignore,移除对 CLAUDE.md 的忽略,确保协作文档可纳入版本控制

关键文件:

- AGENTS.md

- CLAUDE.md

- .gitignore
2026-03-20 14:58:15 +08:00
dongmucat
ef11d300be chore(docs): remove select redesign spec 2026-03-20 14:27:20 +08:00
dongmucat
8658738319 test(review): stabilize skill detail i18n assertions 2026-03-20 14:27:20 +08:00
dongmucat
fb33d376fa test(review): align review detail section copy assertions 2026-03-20 14:27:20 +08:00
dongmucat
0dea20f4be fix(select): use pointer cursor for expanded options 2026-03-20 14:27:20 +08:00
dongmucat
862328a915 test(select): pin dropdown visual contract
变更摘要:

- 为共享 Select 补充最终视觉契约回归测试,覆盖下拉阴影和选项层级

- 保持范围收敛,仅强化 shared contract,不改生产代码

- 已运行共享测试、lint 和 build 进行回归验证

关键文件:

- web/src/shared/ui/select.test.ts
2026-03-20 14:27:20 +08:00
dongmucat
192aea6e63 fix(web): restore clearable publish namespace select 2026-03-20 14:27:20 +08:00
dongmucat
c36b74fda6 feat(web): migrate shared select to radix 2026-03-20 14:27:20 +08:00
dongmucat
c116ac2167 fix(web): keep shared select native wrapper 2026-03-20 14:27:20 +08:00
dongmucat
cd8e3ee200 test(web): lock shared select theme contract 2026-03-20 14:27:20 +08:00
dongmucat
72211147b5 docs(select): add global select redesign spec 2026-03-20 14:27:20 +08:00
何时
8c438fa447 Merge pull request #133 from iflytek/docs/update-runtime-script-url
docs: update runtime bootstrap script URL
2026-03-20 14:01:57 +08:00
vsxd
a17deb9b7f test(app): cover missing query context paths 2026-03-20 11:33:32 +08:00
vsxd
ef7332d520 refactor(app): clarify query boundaries and workflow owners 2026-03-20 11:33:32 +08:00
wowo-zZ
1032eaefea Update README runtime script URL 2026-03-20 11:15:17 +08:00
yun-zhi-ztl
94ecc4d0b2 feat: add super-admin hard delete skill api (#131)
* feat: add super-admin hard delete skill api

* fix: address hard delete review feedback

* fix: add missing unarchive skill locale

* docs: add skill detail hard delete design

* feat: add owner hard delete flow for skill details
2026-03-20 11:02:02 +08:00
vsxd
2868c10467 refactor(app): slim portal controllers and sync backend findings 2026-03-20 10:09:03 +08:00
wowo
a625c37906 Merge pull request #128 from iflytek/feat-0315
ci(deepwiki): add DeepWiki documentation crawler workflow
2026-03-20 09:53:34 +08:00
xiose
90765eec4f Merge remote-tracking branch 'origin/main' into feat-0315 2026-03-20 09:38:04 +08:00
yun-zhi-ztl
1de2aac7e5 Merge pull request #127 from iflytek/feature/project-fixbug319
Delete docs
2026-03-19 22:17:33 +08:00
yun-zhi-ztl
4b0f508f70 Delete docs
Signed-off-by: yun-zhi-ztl <66589705+yun-zhi-ztl@users.noreply.github.com>
2026-03-19 22:16:56 +08:00
yun-zhi-ztl
cf1ec1b89e merge: pull request #124 from feature/project-fixbug319
feat: add pending skill detail to review workflow
2026-03-19 22:16:09 +08:00
xiose
d64a7f7ed9 ci(deepwiki): add DeepWiki documentation crawler workflow 2026-03-19 20:45:41 +08:00
vsxd
857afc5935 chore(runtime): default release runtime to latest 2026-03-19 20:36:45 +08:00
yun-zhi-ztl
7977871539 test: expand review detail regression coverage 2026-03-19 20:29:59 +08:00
yun-zhi-ztl
15d51c8ee9 fix: collapse review skill detail by default 2026-03-19 20:26:56 +08:00
vsxd
9bad6a38e2 chore(release): v0.1.0 2026-03-19 20:25:18 +08:00
yun-zhi-ztl
08b708c25b fix: keep review actions visible beside skill detail 2026-03-19 20:18:37 +08:00
XiaoSeS
9c778d5cc3 feat: add user profile update feature with moderation support
* 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(web): lazy-load review tabs and adjust profile review pagination

- Skill review tabs only fetch data when activated (not all 3 on mount)
- Tabs component now supports controlled mode via value prop
- Profile review page size reduced from 20 to 10
- Profile review pagination bar always visible regardless of page count

* feat(web): lazy-load profile review tabs

- useProfileReviewList now accepts enabled parameter
- Profile review tabs only fetch data when activated

* remove unnecessary file

* remove unnecessary file
2026-03-19 20:15:26 +08:00
xiose
cf19f33f5c remove unnecessary file 2026-03-19 20:13:04 +08:00
xiose
5032b57fb1 chore(merge): merge main into feat-0315
Resolve conflicts in review list hooks and pages, keeping feat-0315
lazy-load behavior (enabled flag per active tab) and PAGE_SIZE=10.
2026-03-19 20:07:47 +08:00
yun-zhi-ztl
9e7c6d4563 feat: show pending skill detail in review flow 2026-03-19 20:01:47 +08:00
xiose
84804b0839 remove unnecessary file 2026-03-19 19:58:25 +08:00
yun-zhi-ztl
57c181a26e Merge remote-tracking branch 'origin/main' into feature/project-fixbug319 2026-03-19 19:42:32 +08:00
yun-zhi-ztl
e2c225de27 docs: add review skill detail design spec 2026-03-19 19:40:58 +08:00
vsxd
7cabe0196e fix(review): defer skill visibility changes until approval 2026-03-19 19:09:43 +08:00
xiose
4d0a55957a feat(web): lazy-load profile review tabs
- useProfileReviewList now accepts enabled parameter
- Profile review tabs only fetch data when activated
2026-03-19 19:01:28 +08:00
xiose
9cdd200bc2 feat(web): lazy-load review tabs and adjust profile review pagination
- Skill review tabs only fetch data when activated (not all 3 on mount)
- Tabs component now supports controlled mode via value prop
- Profile review page size reduced from 20 to 10
- Profile review pagination bar always visible regardless of page count
2026-03-19 18:54:33 +08:00
vsxd
b9551dcb6e fix(search): keep Chinese summaries searchable 2026-03-19 18:49:30 +08:00
Xudong Sun
4bdaebe3b4 chore(test): silence spring logs in backend tests (#116) 2026-03-19 18:38:59 +08:00
vsxd
e60bee8aa1 fix(db): recreate search vector before search column alters 2026-03-19 18:37:18 +08:00
vsxd
b657a53f37 fix(search): tighten index field boundaries and storage 2026-03-19 18:31:10 +08:00
vsxd
a7f8b0afcf fix(search): expand keyword storage for rebuild safety 2026-03-19 18:31:10 +08:00