Commit graph

692 commits

Author SHA1 Message Date
chenbaowang
601644b8a7 fix(cli): fix addToLock namespace doubling, update fallback path, and download stream completion
- install: use actualSlug instead of raw slug in addToLock to prevent
  namespace doubling (vision2group/vision2group/slug)
- update: remove hardcoded 'node dist/cli.mjs' fallback, rely on
  process.argv[1] which is always reliable
- download: use finished() to ensure stream write completes before
  proceeding
2026-04-16 14:46:55 +08:00
chenbaowang
616319fe35 fix(cli): replace execSync unzip with unzipper for cross-platform support
- Add @types/unzipper for TypeScript support
- Fix location header type assertion (string | string[] -> string)
- Bump version to 1.0.5
2026-04-16 11:18:20 +08:00
chenbaowang
c970a76410 chore: bump version to 1.0.3 2026-04-16 10:51:29 +08:00
chenbaowang
626490e554 feat(cli): support SKILLHUB_REGISTRY env var for registry URL
Priority: SKILLHUB_REGISTRY env var > ~/.skillhub/config.json > default
2026-04-16 10:49:40 +08:00
chenbaowang
c9644e8032 chore: bump version to 1.0.2 2026-04-16 10:31:30 +08:00
chenbaowang
af6ebf3058 fix(cli): handle 302 redirect in download and fix --skill-version option parsing
- undici does not auto-follow HTTP redirects, manually follow 302/307/308
  to MinIO presigned URL before piping response body
- Commander.js parses --skill-version as skillVersion (camelCase), not
  skill-version (kebab-case), fix option access in install and download
  commands
2026-04-16 10:16:33 +08:00
chenbaowang
8c87cc5fe4 fix: add shebang to cli.ts for npm bin to work properly 2026-04-15 17:56:42 +08:00
chenbaowang
de7be0fc7d fix: add .npmignore to exclude tests and tmp from published package 2026-04-15 17:15:36 +08:00
chenbaowang
98b04259d8 fix: change package name to @motovis/skillhub for npm org scope 2026-04-15 17:12:32 +08:00
chenbaowang
679333c76f feat(cli): show tags and changelog after successful publish
- Always display tags in publish output
- Show changelog when --changelog flag is provided

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-14 15:02:32 +08:00
chenbaowang
e15ad7b35b feat(explore): add --sort parameter and fix k key input issue
Features:
- Add --sort option: hot (rating), newest (date), downloads (download count)
- Use /api/v1/skills (compat API) for empty queries to get full download stats
- Sort mapping: hot->rating, newest->newest, downloads->downloads

Bug fixes:
- Remove vim-style k/j navigation keys to fix 'k' character input issue
- Fix undefined namespace/status display in publish output

Testing:
- Verify --sort downloads: openspec(102) > test-publish(46) > openspec[vision2group](11) > test(9)
- Verify --sort hot: test-publish(2 stars) ranked first
- Verify --sort newest: most recently updated first
- Interactive mode: k key now inputs correctly
2026-04-14 14:19:53 +08:00
chenbaowang
a7b0485e37 fix(cli package.json): package name changed from @motovis/skillhub to @seasoning/skillhub. 2026-04-14 14:17:36 +08:00
chenbaowang
c86d99f227 feat(explore): add --sort parameter for hot/newest/downloads ordering
- Use /api/v1/skills (compat API) when query is empty to get full stats
- Map sort options: hot=rating, newest=newest, downloads=downloads
- Remove vim-style k/j navigation to fix 'k' key input issue
2026-04-14 14:12:37 +08:00
chenbaowang
ffdf8ae30e fix(skillhub-cli): improve publish output with default namespace hint and fixed status
- Show '(default)' suffix when namespace is global (user didn't specify --namespace)
- Display 'Status: Published' on success instead of 'undefined'
- Keep output clean and informative for user feedback
2026-04-14 11:19:58 +08:00
chenbaowang
a85beea6b9 fix(install): change install method from multiselect to single select 2026-04-14 10:50:28 +08:00
chenbaowang
c8e58e0476 fix(resolve): strip 'v' prefix from version for API compatibility 2026-04-14 10:32:49 +08:00
chenbaowang
6c0d4f4f16 feat(skillhub-cli): add skillhub CLI with interactive multi-agent support
- Interactive agent selection for install/uninstall/list
- Namespace search selection for unspecified namespace
- --skill-version option to skip interactive selection
- --from option for local/github source installation
- Remove deprecated add command (use install --from instead)
- Path-based grouping for uninstall results
2026-04-14 10:21:09 +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
1184e00a00
fix(compat): support namespace-aware clawhub publish (#291) 2026-04-13 20:26:42 +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
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
wowo
348eb4e717
fix(storage): defer S3 bucket verification until first access (#289)
* fix(storage): defer S3 bucket verification until first access

* test(storage): cover deferred S3 bucket verification

* fix(runtime): widen backend container healthcheck window

* fix(runtime): widen backend container healthcheck window

* fix(test): use ddl-auto=create to prevent cross-context table drops

Multiple @SpringBootTest classes with different @MockBean configs
cause separate Spring contexts sharing the same H2 in-memory database.
With create-drop, one context's shutdown drops tables needed by another,
causing "Table not found (this database is empty)" errors.

* fix(test): widen awaitIndexedDocument timeout to 15s

CI runners are resource-constrained and async search indexing may not
complete within the previous 5-second window, causing flaky failures.
2026-04-12 15:24:09 +08:00
Uğur Tafralı
02b3ac5b62
fix: add support for .cjs and .mjs JavaScript extensions (#285) 2026-04-11 11:15:36 +08:00
dongmucat
3e1b5738aa
fix(storage): honor forcePathStyle for s3 presigner (#251) 2026-04-10 10:01:05 +08:00
wowo
689e698b89
feat(ci): add PR batch test deployment workflow (#275)
* feat(ci): add PR batch test deployment workflow

* fix(ci): support local PR batch rehearsal

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-09 18:45:14 +08:00
dongmucat
0497f8654f
fix(validation): avoid token false positives in pre-publish check (#253) 2026-04-09 18:13:08 +08:00
dongmucat
4cc22d0099
fix(auth): avoid extra session rotation after oauth success (#245) 2026-04-09 18:12:24 +08:00
dongmucat
cd7c1ba384
fix(review): correct review queue totals (#265) 2026-04-09 18:12:02 +08:00
dongmucat
b24cc58338
fix(search): include permitted skills in clawhub explore (#258) 2026-04-09 18:11:47 +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
wowo
8f694ddc7c
[codex] add issue triage automation mvp (#268)
* add issue triage automation mvp

* Document issue automation design in Chinese

* Fix legacy compat slug tests
2026-04-09 15:04:33 +08:00
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
2167981392 fix(review): sync approval state before returning tasks 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
FenjuFu
b95898920a
chore: update copyright info in LICENSE to match astron-agent (#263) 2026-04-09 09:41:10 +08:00
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
XiaoSeS
010c1a4e46
fix(runtime): use Aliyun OSS for raw files when --aliyun flag is set (#250)
Some checks failed
Deploy Docs / build (push) Has been cancelled
Deploy Docs / Deploy (push) Has been cancelled
When using --aliyun flag, switch SKILLHUB_RAW_BASE from GitHub raw URL
to Aliyun OSS (https://imageless.oss-cn-beijing.aliyuncs.com) for
faster file downloads in China.
2026-04-07 19:18:41 +08:00
FenjuFu
d9e2e39cc0
docs: add demo gif to README (#244)
* docs: add demo gif to README

* Update skillhub-demo image

* docs: replace local gif with remote url and remove gif file
2026-04-07 19:04:28 +08:00
South Drifter
66acc6e57b
chore: add GitHub-reward form, scripts & actions (#221)
* chore: add GitHub-reward form, scripts & actions

* fix: Deno system permissions in GitHub actions

* fix: 3 detail bugs
2026-04-07 19:02:59 +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
FenjuFu
45bc6ebc4f
docs: append new QA pairs to FAQ (#228)
Co-authored-by: AI Assistant <bot@example.com>
2026-04-07 10:01:47 +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
XiaoSeS
f2b4525967
docs: add Maven mirror config and troubleshooting guide for China developers (#233)
- 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
2026-04-07 09:50:07 +08:00
dongmucat
0b84e4eff3
fix(compat): support canonical query slug for resolve/download (#227)
Co-authored-by: huihan3 <huihan3@iflytek.com>
2026-04-03 17:27:02 +08:00