Commit graph

322 commits

Author SHA1 Message Date
dongmucat
c330db0bf3 feat(ui): display user ID on dashboard and profile settings pages 2026-04-27 14:54:39 +08:00
dongmucat
1591ee02b5 feat(ui): add dependencies and i18n for version diff 2026-04-23 11:08:33 +08:00
dongmucat
068cdaf84c test(namespace): add batch import members E2E tests
Adds Playwright E2E tests for batch member import dialog:
- Opens dialog and verifies upload step UI elements
- Uploads CSV with mixed valid/invalid rows and verifies preview with validation messages

Uses admin context pattern to create namespace and add test user as ADMIN member.
2026-04-22 16:36:18 +08:00
dongmucat
ee8ca10b3a feat(namespace): add batch import button to members page 2026-04-22 16:18:40 +08:00
dongmucat
ebb873e8b3 test(namespace): add batch import CSV parsing and validation tests 2026-04-22 16:16:27 +08:00
dongmucat
ca29994816 feat(namespace): add batch import members dialog component 2026-04-22 16:15:03 +08:00
dongmucat
5f3e7a0441 feat(namespace): add batch member import i18n keys 2026-04-22 16:12:07 +08:00
dongmucat
7baf059783 feat(namespace): add useBatchAddNamespaceMembers mutation hook 2026-04-22 16:11:17 +08:00
dongmucat
4b538bde04 feat(namespace): add batchAddMembers API client method 2026-04-22 16:10:14 +08:00
dongmucat
0da51a63ea feat(namespace): add batch member import frontend types 2026-04-22 16:09:23 +08:00
dongmucat
dc5759fad3 chore(api): regenerate OpenAPI types for batch member endpoint 2026-04-22 16:07:01 +08:00
dongmucat
701ef12d33 test(e2e): wait for search cards before counting 2026-04-21 17:55:53 +08:00
dongmucat
2c519c8efd fix(search): harden portal search query parsing 2026-04-20 16:57:47 +08:00
wrj97
7be6a36960
feat(auth): add GitLab OAuth2 provider support (#264)
* feat(auth): add GitLab OAuth2 provider support

Add GitLab as an additional OAuth2 authentication provider alongside
GitHub. This includes:

- GitLab OAuth2 client configuration with customizable base URL
- GitLabClaimsExtractor for handling GitLab-specific user claims
- Multi-provider login UI with provider-specific icons
- Updated localization to use OAuth-agnostic terminology
- JSON type annotation for IdentityBinding entity

* fix(auth): restore oauth redirect and gitlab email checks

* test(auth): align oauth login handler expectation

---------

Co-authored-by: wowo-zZ <zhenggui5228@126.com>
2026-04-17 19:56:32 +08:00
dongmucat
89bc58d29e
Merge pull request #311 from iflytek/fix/public-skill-detail-anon
fix(web): allow anonymous access to public skill detail
2026-04-15 16:58:45 +08:00
XiaoSeS
4619e546bf
fix(search): show default discovery list on empty query (#312) 2026-04-15 16:58:21 +08:00
dongmucat
3c4c33ad95 fix(web): allow anonymous access to public skill detail 2026-04-15 16:16:08 +08:00
dongmucat
2cfd4a730b
Merge pull request #302 from iflytek/fix/rerelease-precheck-warnings
fix(rerelease): support precheck warning confirmation flow
2026-04-14 20:28:00 +08:00
dongmucat
5d87a0ccd3
Merge pull request #304 from iflytek/feat/oss-02-super-admin-visibility
feat(access): add SUPER_ADMIN platform role support
2026-04-14 20:27:39 +08:00
xiose
7c2f06d1b6 test(rerelease): add confirmWarnings coverage and sync generated schema
- Add domain tests for rerelease with precheck warnings (reject + confirm)
- Add controller test verifying confirmWarnings passthrough
- Sync SkillVersionRereleaseRequest generated type with backend DTO
2026-04-14 17:55:56 +08:00
dongmucat
1246cca930
Merge pull request #279 from iflytek/fix/issue-276-review-own-namespace
fix(review): allow namespace admins to review own submissions
2026-04-14 17:22:08 +08:00
dongmucat
ccf7e3840d test(e2e): harden namespace selection for publish flows 2026-04-14 16:16:08 +08:00
dongmucat
a6a3bdc5f3 test(e2e): verify publish via response and list 2026-04-14 15:29:47 +08:00
dongmucat
4d67403e59 test(e2e): relax publish navigation check 2026-04-14 14:32:17 +08:00
xiose
9801b549fc feat(access): add SUPER_ADMIN platform role support
- Add platformRoles parameter to VisibilityChecker.canAccess() for platform-level access control
- SUPER_ADMIN can access all skills regardless of visibility or publication status
- Add archived namespace check to SkillQueryService.getSkillDetail()
- Extract platformRoles from AuthContext in SkillController
- Replace VisibilityChecker mock with real instance in SkillQueryServiceTest
- Add 5 new tests for SUPER_ADMIN access scenarios
- Add version-status-badge.tsx component for frontend status display

Tests: 347 domain tests + 16 app tests passing
2026-04-14 14:18:43 +08:00
dongmucat
cc8b56e26c test(e2e): avoid load-event wait in publish flow 2026-04-14 14:17:57 +08:00
dongmucat
7dff8dc697 test(e2e): stabilize publish and search waits 2026-04-14 13:55:33 +08:00
xiose
b597a6f511 merge: resolve conflicts after merging origin/main
- Remove duplicate useSubmitForReview/useConfirmPublish in hooks and client
- Restore resolveVersionStatusLabel (version-status-badge not in this branch)
- Fix missing Card closing tag in versions tab
2026-04-14 13:44:30 +08:00
xiose
b26fe6a364 fix(rerelease): support precheck warning confirmation flow
- Backend: Add confirmWarnings parameter to rerelease DTO, domain service, and app service
- Frontend: Add warning dialog with retry logic when precheck warnings are detected
- i18n: Add rerelease warning dialog translations (en/zh)

Fixes the issue where rereleasing a published version with secret detection warnings
always fails with 400 error. Now follows the same confirm-and-retry pattern as initial publish.
2026-04-14 11:58:15 +08:00
dongmucat
5dd89097e5 test(review): stabilize namespace review e2e setup 2026-04-14 09:29:18 +08:00
dongmucat
38ebb13133
feat(auth): 邮箱验证码重置密码与 SMTP 配置支持 (#273)
* feat(auth): add email-based password reset with SMTP config docs

* test(e2e): stabilize password reset flow

* test(e2e): isolate password reset rate limits

* test(ci): stabilize backend and register e2e

* docs(auth): sanitize smtp setup examples
2026-04-13 20:27:00 +08:00
dongmucat
38757084ba fix(review): restore namespace admin review access 2026-04-13 17:03:41 +08:00
XiaoSeS
532d0450aa
feat(skill): add UPLOADED status for PRIVATE skill lifecycle (#290)
* feat(skill): add UPLOADED status for PRIVATE skill lifecycle

## Summary
- Add UPLOADED status for PRIVATE skills after security scan passes
- PRIVATE skill owners can test before confirming publish or submitting for review
- Rerelease now follows visibility rules (PRIVATE→UPLOADED, PUBLIC→PENDING_REVIEW)
- Auto-withdraw changes status to UPLOADED (not DRAFT) to keep versions visible

## Changes
- SkillVersionStatus: Add UPLOADED enum value
- SkillPublishService: PRIVATE skills go to UPLOADED after scan
- SecurityScanService: Visibility-based status transition after scan
- SkillGovernanceService: Withdraw→UPLOADED, delete allows UPLOADED
- SkillQueryService: Include UPLOADED in version list filters
- SkillReviewSubmitService: New service for submit-review and confirm-publish
- SkillLifecycleController: Add submit-review and confirm-publish endpoints
- Frontend: Add buttons, dialogs, and hooks for new operations

## Workflow
- PRIVATE: Publish → SCANNING → UPLOADED → confirm-publish → PUBLISHED
- PUBLIC: Publish → SCANNING → PENDING_REVIEW → PUBLISHED

* feat(review): add backward compatibility for DRAFT status

Support both DRAFT (legacy) and UPLOADED (new flow) status in:
- SkillReviewSubmitService.submitForReview
- SkillReviewSubmitService.confirmPublish
- ReviewService.submitReview (both overloads)

This ensures existing data with DRAFT status continues to work
with the new visibility-based workflow introduced in OSS-02.
2026-04-13 11:39:45 +08:00
xiose
f55c520ebe feat(skill): add UPLOADED status for PRIVATE skill lifecycle
## Summary
- Add UPLOADED status for PRIVATE skills after security scan passes
- PRIVATE skill owners can test before confirming publish or submitting for review
- Rerelease now follows visibility rules (PRIVATE→UPLOADED, PUBLIC→PENDING_REVIEW)
- Auto-withdraw changes status to UPLOADED (not DRAFT) to keep versions visible

## Changes
- SkillVersionStatus: Add UPLOADED enum value
- SkillPublishService: PRIVATE skills go to UPLOADED after scan
- SecurityScanService: Visibility-based status transition after scan
- SkillGovernanceService: Withdraw→UPLOADED, delete allows UPLOADED
- SkillQueryService: Include UPLOADED in version list filters
- SkillReviewSubmitService: New service for submit-review and confirm-publish
- SkillLifecycleController: Add submit-review and confirm-publish endpoints
- Frontend: Add buttons, dialogs, and hooks for new operations

## Workflow
- PRIVATE: Publish → SCANNING → UPLOADED → confirm-publish → PUBLISHED
- PUBLIC: Publish → SCANNING → PENDING_REVIEW → PUBLISHED
2026-04-13 09:26:01 +08:00
wowo
2def67b037
feat(publish): relax pre-publish checks into warning + confirm flow (#288)
* feat(publish): allow warning-confirmed pre-publish checks\n\nFixes #287

* fix(i18n): add missing register validation translation keys

The registration form uses i18n keys like register.usernameInvalid,
register.passwordTooShort etc. but they were never defined in the
locale files, causing E2E tests to fail because the raw key strings
were displayed instead of human-readable messages.
2026-04-12 19:15:57 +08:00
tenten-shih
77e271f24c
Merge pull request #269 from iflytek/pr/exclude-playwright-report
fix register validation, review visibility, and search e2e coverage
2026-04-09 14:37:46 +05:30
tenten-shih
25c0a21404 test(e2e): stabilize duplicate registration and search cards 2026-04-09 13:19:06 +05:30
huishi3
1c9baed571 test(e2e): run real-request playwright flows with one worker 2026-04-09 11:33:28 +05:30
huishi3
c25ea62ee7 fix(web): guard search page browser globals in tests 2026-04-09 10:25:25 +05:30
huishi3
69a299e40f test(e2e): add auth validation and search coverage 2026-04-09 09:56:58 +05:30
huishi3
83b90c4334 fix(web): refine search empty state and card interaction 2026-04-09 09:56:58 +05:30
huishi3
2f6481b1ab feat(i18n): add register validation messages 2026-04-09 09:56:57 +05:30
huishi3
e9921c4ed0 fix(web): map register API errors to field messages 2026-04-09 09:56:57 +05:30
Seasoning
739e21e0fd
Feat/namespace member display username (#236)
* feat: display username and email in namespace member management

MemberResponse DTO now includes displayName and email fields.
NamespacePortalQueryAppService batch-loads UserAccount data via
findByIdIn to avoid N+1 queries. Frontend member table shows
username (with userId as fallback subtitle) and email columns
instead of raw user IDs.

* test(namespace): add displayName/email assertions and new test coverage

- Controller: add displayName and email assertions to addMember and updateMemberRole tests
- QueryAppService: add listMembers tests for batch user enrichment and null degradation
- CommandAppService: add addMember/updateMemberRole tests for displayName/email population and graceful degradation

Addresses PR #236 review feedback comments:
- Issue 2: Controller tests now assert displayName and email from mocked UserAccount
- Issue 3: Service layer tests now cover batch query and null user degradation
2026-04-08 20:02:20 +08:00
dongmucat
c2981836bb
fix(reviews): add dashboard review pagination and tests (#241) 2026-04-07 14:10:48 +08:00
dongmucat
8cb783406d
Merge pull request #226 from iflytek/fix/issue-223-nginx-prefix
fix(web): preserve nginx subpath prefix for api/runtime config
2026-04-07 10:26:48 +08:00
XiaoSeS
8213686601
perf: optimize file tree and preview rendering performance (#240)
* docs: add Maven mirror config and troubleshooting guide for China developers

- Add Aliyun mirror config in server/.mvn/settings.xml
- Update maven-wrapper.properties to use Aliyun mirror for Maven distribution
- Add detailed error messages in Makefile when backend startup fails
- Add troubleshooting section in quickstart.md for China developers
- Add FAQ entry for local development startup issues
- Update README with link to local development guide

* perf: optimize file tree and preview rendering performance

- Add useMemo to cache tree structure and syntax highlighting results
- Add React.memo to FileTreeNodeComponent to prevent unnecessary re-renders
- Add useCallback for stable callback references
- Simplify CSS styles (remove gradients, blur, shadows) to reduce GPU load

Fixes performance issues with file preview lag reported by users.

* test: update test for React.memo wrapped component
2026-04-07 09:54:48 +08:00
huihan3
27e17a78ff fix(web): preserve subpath prefix for api and runtime config 2026-04-03 10:59:10 +08:00
XiaoSeS
612b69c2f9
fix: add --public-url parameter for docker deployment (#216)
* docs: add VitePress bilingual documentation site

- Add VitePress-based documentation with Chinese (root) and English (/en/) locales
- Include 6 feature guides: skill-publish, skill-discovery, namespace, review, scanner, social
- Add quickstart, introduction, and FAQ pages
- Include AI-generated diagrams and screenshots
- Add GitHub Pages deployment workflow
- Add Makefile targets: docs-dev, docs-build, docs-preview

* docs: rename docs/claude to docs/skillhub

- Rename documentation directory from docs/claude to docs/skillhub
- Update Makefile paths for docs-dev, docs-build, docs-preview
- Update GitHub workflow paths for deploy-docs.yml

* fix: add enablement parameter to auto-enable GitHub Pages

* Revert "fix: add enablement parameter to auto-enable GitHub Pages"

This reverts commit 11096b1a9b.

* docs: add documentation link to README

Add link to GitHub Pages documentation (https://iflytek.github.io/skillhub/)
under Quick Start section in both English and Chinese README files.

* fix: add --public-url parameter for docker deployment

- Add --public-url parameter to runtime.sh for configuring public access URL
- Create skill.md.template for dynamic URL substitution at container startup
- Update getBaseUrl() to fallback to window.location.host when appBaseUrl is localhost
- Update landing-quick-start.tsx to dynamically generate agent command URL
- Add commandTemplate to i18n files for URL placeholder support
- Update README.md and README_zh.md with deployment parameter documentation

Fixes: Docker deployment shows localhost in install commands and skill.md
2026-04-02 17:52:42 +08:00
dongmucat
50a6c4b7fe test(e2e,ci): migrate web e2e to real API and add PR e2e workflow (#198)
* chore(workflow): align local hooks and e2e guidance

* test(e2e): expand reusable api mock helpers

* test(skill): stabilize share button e2e assertions

* chore(test): add e2e make target and tune playwright workers

* test(web): expand e2e coverage and smoke suite

* test(e2e): migrate to real API flows and add request-based data builder

* ci(e2e): add PR workflow for real-service frontend e2e

* ci(e2e): install playwright chromium in PR workflow

* test(e2e): relax timeout and force single worker in CI

* test(e2e): stabilize not-found assertions and harden CI session bootstrap

* chore(agents): align tester role with web/e2e workflow
2026-04-01 14:41:23 +08:00