Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
378 commits
Select commit Hold shift + click to select a range
a2ff5d4
fix(dialog): portal token modal to body
Mar 14, 2026
82a111d
fix(token): validate name length and uniqueness
Mar 14, 2026
7bba401
fix(skill): format publish time in local system time
Mar 14, 2026
7f7b6d0
fix(dialog): keep modals centered on long pages
Mar 14, 2026
bc5bc5a
feat(token): paginate token list
Mar 14, 2026
3df9e22
fix(auth): validate email format on register
Mar 14, 2026
fab4e51
fix(stars): keep favorites data in sync
Mar 14, 2026
795952c
fix(publish): timeout stalled publish requests
Mar 14, 2026
4a95a74
fix(publish): keep publish button text color consistent
Mar 14, 2026
bc94b15
fix(dashboard): avoid duplicate token fetch and false error toast
Mar 14, 2026
c57434f
feat(search): update results as users type
Mar 14, 2026
1665f2a
fix(publish): clarify duplicate version upload errors
Mar 14, 2026
5db8d33
chore(api): add concise logs for failed core requests
Mar 14, 2026
7133b93
fix(token): handle successful deletes and refresh immediately
Mar 14, 2026
e167a7c
Merge pull request #26 from iflytek/feature/project-local
yun-zhi-ztl Mar 14, 2026
dfaf47a
fix(search): distinguish starred and rating states
Mar 14, 2026
90fe0c2
fix(skill): refine starred and rating visual states
Mar 14, 2026
44e0665
fix(search): make starred skills easier to spot
Mar 14, 2026
636f039
feat(search): allow unstar from skill cards
Mar 14, 2026
74a72e2
feat(search): add starred-only filter
Mar 14, 2026
3497972
fix: change api/v1/cli to api/v1
Mar 14, 2026
39a31fb
fix(search): separate starred filter from sort controls
Mar 14, 2026
f994eab
Merge pull request #28 from iflytek/feature/project-local
yun-zhi-ztl Mar 14, 2026
18bf96c
refactor(dev): replace agent-* commands with parallel-* workflow
wowo-zZ Mar 14, 2026
d254e96
Merge pull request #29 from iflytek/feat/parallel-workflow-v2
wowo-zZ Mar 14, 2026
74646f5
feat(i18n): set English as default fallback language
wowo-zZ Mar 14, 2026
71616c4
Merge pull request #30 from iflytek/feat/default-language-english
wowo-zZ Mar 14, 2026
753164d
fix(my-skills): show pending skills after upload
yun-zhi-ztl Mar 15, 2026
a6f87ef
fix(auth): default new users to USER role
yun-zhi-ztl Mar 15, 2026
8061a4d
fix(auth): localize password change feedback
yun-zhi-ztl Mar 15, 2026
9ca2f6e
fix(admin): resolve user ids for role updates
yun-zhi-ztl Mar 15, 2026
b4ecfb8
fix(publish): reject oversized skill summaries
yun-zhi-ztl Mar 15, 2026
a66dcae
fix(admin): avoid runtime role helper dependency
yun-zhi-ztl Mar 15, 2026
cbf18c9
fix(admin): remove invalid role placeholder option
yun-zhi-ztl Mar 15, 2026
113802c
feat(publish): allow removing selected uploads
yun-zhi-ztl Mar 15, 2026
4af2823
fix(publish): allow long skill descriptions
yun-zhi-ztl Mar 15, 2026
e64734d
fix(auth): harden mock auth and rate limit auth flows
yun-zhi-ztl Mar 15, 2026
f0e823b
fix(admin): clarify user search interactions
yun-zhi-ztl Mar 15, 2026
d5ad896
fix(search): unify prefix vector search behavior
yun-zhi-ztl Mar 15, 2026
33ac497
fix(search): reduce noisy matches for short prefixes
yun-zhi-ztl Mar 15, 2026
3e3e525
fix(auth): reduce login timing side channels
yun-zhi-ztl Mar 15, 2026
e2cb6ed
fix(search): improve short skill query matching
yun-zhi-ztl Mar 15, 2026
cc7f5b6
fix(search): polish default sorting and loading states
yun-zhi-ztl Mar 15, 2026
1139842
fix(token): center copy toasts with dedicated toaster
yun-zhi-ztl Mar 15, 2026
b1a9cef
feat(token): support configurable expiration times
yun-zhi-ztl Mar 15, 2026
5960f9e
feat(dashboard): add back navigation for subpages
yun-zhi-ztl Mar 15, 2026
fbd1174
feat(token): support copy hints and expiration updates
yun-zhi-ztl Mar 15, 2026
300e6c4
fix(token): center token feedback toasts
yun-zhi-ztl Mar 15, 2026
2793c8b
fix(token): center token actions and toast layout
yun-zhi-ztl Mar 15, 2026
258599e
fix(dialog): center popup content across app
yun-zhi-ztl Mar 15, 2026
e44a001
fix(toast): center feedback and remove native token tooltip
yun-zhi-ztl Mar 15, 2026
4178d81
fix(dialog): preserve centered modal positioning
yun-zhi-ztl Mar 15, 2026
e7ecdde
fix(token): remove list copy action and clarify one-time copy
yun-zhi-ztl Mar 15, 2026
cdbd1b4
fix(download): fall back to safe same-origin skill downloads
yun-zhi-ztl Mar 15, 2026
348b79f
Merge pull request #33 from iflytek/feature/project-local
yun-zhi-ztl Mar 15, 2026
5470ef1
feat(ops): add optional runtime registry mirroring
Mar 15, 2026
2acf6fe
feat(ops): add aliyun runtime shortcut
Mar 15, 2026
9426231
Merge pull request #34 from iflytek/codex/aliyun-runtime-mirror-v4
likes1234-bro Mar 15, 2026
6f54ebe
Change runtime script URL to Aliyun mirror
likes1234-bro Mar 15, 2026
2b124c6
fix(web): stabilize auth shell startup flow
yun-zhi-ztl Mar 15, 2026
caf65e0
fix(review): allow super admins to review own skills
yun-zhi-ztl Mar 15, 2026
8e8d102
refactor(web): move portal APIs under api/web
yun-zhi-ztl Mar 15, 2026
d3c9ceb
Merge remote-tracking branch 'origin/main' into feature/project-local
yun-zhi-ztl Mar 15, 2026
7e412bc
Merge pull request #35 from iflytek/feature/project-local
yun-zhi-ztl Mar 15, 2026
dd63516
cli
tap-top Mar 15, 2026
736cab0
Merge pull request #36 from tap-top/cli
yun-zhi-ztl Mar 15, 2026
3b77ccc
docs: align roadmap with current review flow
yun-zhi-ztl Mar 15, 2026
3e48001
feat(skill): add lifecycle management APIs
yun-zhi-ztl Mar 15, 2026
81b228b
fix(deploy): default runtime quickstart to local storage
Mar 15, 2026
1ba2cdf
feat(report): add skill report backend workflow
yun-zhi-ztl Mar 15, 2026
91fc238
feat(report): add skill report UI and admin page
yun-zhi-ztl Mar 15, 2026
b8c8202
fix
Mar 15, 2026
1b9ea0b
feat(skill): add lifecycle management UI
yun-zhi-ztl Mar 15, 2026
60c491f
feat(search): add semantic reranking foundation
yun-zhi-ztl Mar 15, 2026
8c55db2
Merge pull request #37 from likes1234-bro/codex/fix-deploy-local-stor…
likes1234-bro Mar 15, 2026
9bd08b9
tune(search): improve semantic reranking quality
yun-zhi-ztl Mar 15, 2026
c709a91
fix(skill): tighten lifecycle detail and search paging
yun-zhi-ztl Mar 15, 2026
c210310
fix(security): harden auth boundaries and metrics access
yun-zhi-ztl Mar 15, 2026
1f7bcf2
fix(publish): add package prechecks and content validation
yun-zhi-ztl Mar 15, 2026
5e95296
fix(security): enforce admin roles and expand audit log filters
yun-zhi-ztl Mar 15, 2026
baed828
fix(security): add baseline content security policy
yun-zhi-ztl Mar 15, 2026
e96aa1d
fix(security): throttle auth failures and sanitize security logs
yun-zhi-ztl Mar 15, 2026
c8052d8
Merge remote-tracking branch 'origin/main' into feature/project-local
yun-zhi-ztl Mar 15, 2026
c798b6f
Merge pull request #38 from iflytek/feature/project-local
yun-zhi-ztl Mar 15, 2026
2ee43a3
fix(publish): clarify precheck failures and avoid duplicate toasts
yun-zhi-ztl Mar 15, 2026
df5336d
feat(docs): initialize Docusaurus documentation website
tap-top Mar 15, 2026
c71128c
fix(publish): simplify frontmatter validation errors
yun-zhi-ztl Mar 15, 2026
6e0e7ad
feat(docs): complete Docusaurus website with bilingual support
tap-top Mar 15, 2026
0625ae2
Merge pull request #39 from iflytek/feature/project-local
yun-zhi-ztl Mar 15, 2026
105c2e3
fix(docs): update document links without numeric prefixes
tap-top Mar 15, 2026
0f7b3fa
test(token): harden duplicate name regression coverage
yun-zhi-ztl Mar 15, 2026
c2a8b87
Merge remote-tracking branch 'origin/main'
tap-top Mar 15, 2026
6826619
fix(docs): correct relative path in roadmap files
tap-top Mar 15, 2026
296d2a9
feat(skill): allow withdrawing pending submissions
yun-zhi-ztl Mar 15, 2026
9274c9a
feat(skill): allow withdrawing pending submissions (#40)
yun-zhi-ztl Mar 15, 2026
6f4d869
feat(skill): support rereleasing published versions
yun-zhi-ztl Mar 15, 2026
5ce1fac
feat(skill): add version management APIs
yun-zhi-ztl Mar 15, 2026
a259d53
feat(web): add skill version management UI
yun-zhi-ztl Mar 15, 2026
3bf0731
feat(skill): improve version lifecycle management (#41)
yun-zhi-ztl Mar 15, 2026
9e8c04a
docs(readme): clarify runtime quick start paths
Mar 15, 2026
6be06b9
Merge pull request #42 from likes1234-bro/codex/fix-deploy-local-stor…
likes1234-bro Mar 15, 2026
d20f1bf
feat(skill): allow owner preview of pending submissions
yun-zhi-ztl Mar 15, 2026
c94a698
fix(skill): handle missing stored files gracefully
yun-zhi-ztl Mar 15, 2026
09c4173
fix(skill): keep published view stable for owners
yun-zhi-ztl Mar 15, 2026
b2f7b1b
Merge remote-tracking branch 'origin/main'
tap-top Mar 15, 2026
dbcaeea
fix(skill): surface unavailable readme states
yun-zhi-ztl Mar 15, 2026
d6b733d
Merge origin/main into feature/project-local
yun-zhi-ztl Mar 15, 2026
51cfd3b
Merge pull request #43 from iflytek/feature/project-local
yun-zhi-ztl Mar 15, 2026
d6049a9
Merge remote-tracking branch 'origin/main'
tap-top Mar 15, 2026
f3c73ab
cli fix
tap-top Mar 15, 2026
4f1dd14
Quick Start
tap-top Mar 15, 2026
ce0fd37
docs: add Support section to README (#2)
Copilot Mar 16, 2026
5493682
Merge pull request #47 from FenjuFu/main
wowo-zZ Mar 16, 2026
9539fb3
docs: add namespace governance design spec
yun-zhi-ztl Mar 16, 2026
8f32a27
docs: add namespace governance implementation plan
yun-zhi-ztl Mar 16, 2026
609a76c
feat: add namespace lifecycle governance
yun-zhi-ztl Mar 16, 2026
4e8bb79
feat: add namespace management endpoints
yun-zhi-ztl Mar 16, 2026
bfece56
feat: enforce namespace lifecycle on workflows
yun-zhi-ztl Mar 16, 2026
c27e286
feat: hide archived namespaces from public reads
yun-zhi-ztl Mar 16, 2026
6cbfe59
feat: add namespace governance dashboard
yun-zhi-ztl Mar 16, 2026
a157310
fix: stabilize backend dev module classpath
yun-zhi-ztl Mar 16, 2026
a1461b0
feat: add namespace creation dialog
yun-zhi-ztl Mar 16, 2026
bc8b204
feat: complete namespace member management
yun-zhi-ztl Mar 16, 2026
9f9919e
fix: stabilize backend dev startup flow
yun-zhi-ztl Mar 16, 2026
dfdf833
test: cover namespace workflow smoke paths
yun-zhi-ztl Mar 16, 2026
8407e97
feat: build governance center workflow
yun-zhi-ztl Mar 16, 2026
f925241
fix: tighten archived namespace visibility
yun-zhi-ztl Mar 16, 2026
a4a3f3b
test: stabilize api assertions and add frontend test setup
vsxd Mar 16, 2026
59b8861
feat: complete skill promotion submission flow
yun-zhi-ztl Mar 16, 2026
9b4f927
feat: bootstrap default super admin across profiles
yun-zhi-ztl Mar 16, 2026
55582bd
fix: stabilize skill promotion approval flow
yun-zhi-ztl Mar 16, 2026
ff14642
fix: stabilize promotion approval and documentation fallback
yun-zhi-ztl Mar 16, 2026
b3e1a21
fix: make bootstrap admin opt-in and stabilize promotion errors
vsxd Mar 16, 2026
a46ca1e
fix: refresh skill download counts after download
yun-zhi-ztl Mar 16, 2026
fda82c9
fix: limit skill search query length
yun-zhi-ztl Mar 16, 2026
224962f
fix: truncate long error messages in ui
yun-zhi-ztl Mar 16, 2026
692aea3
fix: refresh auth roles promptly
yun-zhi-ztl Mar 16, 2026
001a1b1
cli login fix
tap-top Mar 16, 2026
367d305
fix: block disabled users with active sessions
yun-zhi-ztl Mar 16, 2026
024a872
fix: add my skills preview to dashboard
yun-zhi-ztl Mar 16, 2026
40ce13d
fix: align dashboard my skills layout
yun-zhi-ztl Mar 16, 2026
bbd4ad2
fix: refine dashboard my skills preview
yun-zhi-ztl Mar 16, 2026
8068590
fix: adjust dashboard my skills grid
yun-zhi-ztl Mar 16, 2026
43b71e9
fix: keep dashboard more tile visible
yun-zhi-ztl Mar 16, 2026
484eec4
fix: refine dashboard copy tone
yun-zhi-ztl Mar 16, 2026
335a729
fix: improve dashboard UX and session refresh handling (#51)
yun-zhi-ztl Mar 16, 2026
493c015
fix: clarify global namespace visibility copy
vsxd Mar 16, 2026
dd29145
Configure default session timeout
vsxd Mar 16, 2026
d2bb7cc
Merge remote-tracking branch 'origin/main' into cli-login
tap-top Mar 16, 2026
b7f66ff
Fix SKILL.md frontmatter rendering
vsxd Mar 16, 2026
2ea332b
fix(web): prevent text overflow in token dialogs
XiaoSeS Mar 16, 2026
27f7600
fix(web): reset token dialog state on reopen, fix pagination and down…
XiaoSeS Mar 16, 2026
7f1386d
fix(auth): refresh user roles on /me request, fix login page UI issues
XiaoSeS Mar 16, 2026
59fab40
fix(auth): invalidate session when user account is disabled
XiaoSeS Mar 16, 2026
262bd10
fix(auth): enforce owner isolation for skill publishing
XiaoSeS Mar 16, 2026
3edc19b
fix(skill): isolate unpublished slug access
vsxd Mar 16, 2026
99e87bd
fix(web): avoid CSP errors when downloading skills
vsxd Mar 16, 2026
879a5b2
Merge pull request #50 from iflytek/bugfix
wowo-zZ Mar 16, 2026
62b011c
fix: migration sql version fixed
vsxd Mar 16, 2026
330836f
Fix SKILL.md frontmatter rendering
vsxd Mar 16, 2026
89885e8
fix(web): prevent text overflow in token dialogs
XiaoSeS Mar 16, 2026
048f609
fix(web): reset token dialog state on reopen, fix pagination and down…
XiaoSeS Mar 16, 2026
36735e7
fix(auth): refresh user roles on /me request, fix login page UI issues
XiaoSeS Mar 16, 2026
17539f1
fix(auth): invalidate session when user account is disabled
XiaoSeS Mar 16, 2026
34467a2
fix(auth): enforce owner isolation for skill publishing
XiaoSeS Mar 16, 2026
579041b
fix(skill): isolate unpublished slug access
vsxd Mar 16, 2026
7d217bd
fix(web): avoid CSP errors when downloading skills
vsxd Mar 16, 2026
2abcfb4
fix: migration sql version fixed
vsxd Mar 16, 2026
63abb7d
fix: official site urls removed
vsxd Mar 16, 2026
31c719e
Merge pull request #49 from iflytek/cli-login
tap-top Mar 16, 2026
5a05fe5
fix: return skill detail back button to search
yun-zhi-ztl Mar 17, 2026
a4fa23b
Merge remote-tracking branch 'origin/main' into feature/project-fixbug
yun-zhi-ztl Mar 17, 2026
75af47f
fix: paginate personal skills and stars
yun-zhi-ztl Mar 17, 2026
8c319fd
fix: handle numeric skill search queries
yun-zhi-ztl Mar 17, 2026
5e4b63b
fix: restrict namespace creation to admins
yun-zhi-ztl Mar 17, 2026
b9e55a0
fix: show review failure reasons
yun-zhi-ztl Mar 17, 2026
2458832
docs: align role docs with code behavior
vsxd Mar 17, 2026
4dddd2b
Fix frontend build and stabilize test suite
vsxd Mar 17, 2026
bf9ced1
Add PR test workflow
vsxd Mar 17, 2026
af11784
fix: allow republish after review withdrawal
yun-zhi-ztl Mar 17, 2026
f6f964e
fix: wrap long report review text
yun-zhi-ztl Mar 17, 2026
829e4ce
fix: hide account merge entry
yun-zhi-ztl Mar 17, 2026
74d164b
fix: relax skill frontmatter parsing
yun-zhi-ztl Mar 17, 2026
27ac96e
fix: handle role downgrade on protected pages
yun-zhi-ztl Mar 17, 2026
315c5b2
fix: sync namespace member role updates
yun-zhi-ztl Mar 17, 2026
5e3838d
fix: show download error on skill detail
yun-zhi-ztl Mar 17, 2026
e19c0b4
fix: stack dashboard skills and tokens
yun-zhi-ztl Mar 17, 2026
947cc59
Merge remote-tracking branch 'origin/main' into feature/project-fixbug
yun-zhi-ztl Mar 17, 2026
416ae94
test: restore passing unit suites
yun-zhi-ztl Mar 17, 2026
a3856d2
test: cover formatting and api error helpers
yun-zhi-ztl Mar 17, 2026
14b3c59
test: cover skill query helpers
yun-zhi-ztl Mar 17, 2026
ecdeb12
fix: degrade gracefully for missing skill storage assets
yun-zhi-ztl Mar 17, 2026
a00ddf4
fix: hide self-report action on skill detail
yun-zhi-ztl Mar 17, 2026
60bff87
chore: unify build and test entrypoints
vsxd Mar 17, 2026
fb1f333
Merge pull request #59 from iflytek/chore/unify-build-test-makefile
wowo-zZ Mar 17, 2026
b88ce0a
fix: fallback to rebuilding skill bundles for downloads
yun-zhi-ztl Mar 17, 2026
6939b18
Merge remote-tracking branch 'origin/main' into feature/project-fixbug
yun-zhi-ztl Mar 17, 2026
579a474
Merge pull request #58 from iflytek/feature/project-fixbug
yun-zhi-ztl Mar 17, 2026
df268e9
test: cover role and user status permission edges
vsxd Mar 17, 2026
2b01f64
fix: hide hidden skills from regular viewers
yun-zhi-ztl Mar 17, 2026
385654e
Merge remote-tracking branch 'origin/main' into feature/project-fixbug
yun-zhi-ztl Mar 17, 2026
dd80228
fix: hide hidden skills from regular viewers
yun-zhi-ztl Mar 17, 2026
b6f6e4a
Merge remote-tracking branch 'origin/main' into feature/project-fixbug
yun-zhi-ztl Mar 17, 2026
97168a8
fix: avoid dashboard preview crash after registration
yun-zhi-ztl Mar 17, 2026
545876a
fix: restrict skill hiding to super admins
yun-zhi-ztl Mar 17, 2026
e06f52c
chore: remove dev process script
yun-zhi-ztl Mar 17, 2026
2d6c2c8
fix: hide hidden skills from slug resolution
yun-zhi-ztl Mar 17, 2026
61bbee4
fix: harden hidden skill visibility and local dev restart flow (#62)
yun-zhi-ztl Mar 17, 2026
87cb72f
Fix S3 skill download flow and filenames
vsxd Mar 17, 2026
f674d93
feat: Implement initial web application structure, core pages, and UI…
dongmucat Mar 17, 2026
87d0204
Merge remote-tracking branch 'origin/main' into feature/project-fixbug
yun-zhi-ztl Mar 17, 2026
206835e
feat: refine landing experience and restore my-skills metadata
dongmucat Mar 17, 2026
350c622
fix: allow downloads sort for numeric search terms
yun-zhi-ztl Mar 17, 2026
c0e2c7e
feat: Implement initial web application structure, core pages, and UI…
dongmucat Mar 17, 2026
6631c51
feat: refine landing experience and restore my-skills metadata
dongmucat Mar 17, 2026
7abe164
Merge pull request #63 from iflytek/fix/s3-skill-download
wowo-zZ Mar 17, 2026
16789cb
Merge pull request #65 from iflytek/feature/project-fixbug
wowo-zZ Mar 17, 2026
ba61b87
feat: Implement SkillHub UI redesign with new page templates, compone…
dongmucat Mar 17, 2026
a72ddfb
Merge branch 'main' of github.com:iflytek/skillhub into feature/ui
dongmucat Mar 17, 2026
2b9757b
Merge pull request #67 from iflytek/feature/ui
wowo-zZ Mar 17, 2026
120897d
docs: add Chinese README and language switcher
wowo-zZ Mar 17, 2026
2d0514a
docs: prohibit Co-Authored-By in commit messages
wowo-zZ Mar 17, 2026
920ecf2
Merge pull request #68 from iflytek/docs/add-chinese-readme
wowo-zZ Mar 17, 2026
cc5bb53
feat(web): refine header interactions and dashboard skill cards
dongmucat Mar 17, 2026
65c8c5f
fix: improve disabled-account feedback and skill detail polish (#70)
yun-zhi-ztl Mar 17, 2026
f715b26
Allow anonymous downloads for global public skills
vsxd Mar 17, 2026
dc19874
Add badges for documentation, license, build, and Docker (#71)
FenjuFu Mar 17, 2026
d93a297
docs: add OpenClaw integration guide and update download auth rules
wowo-zZ Mar 17, 2026
07f2b8a
Merge pull request #72 from iflytek/fix/global-public-download-anon
wowo-zZ Mar 17, 2026
605f36e
refactor(web): unify local datetime formatting across governance and …
dongmucat Mar 17, 2026
9479e77
feat(web): inject OpenClaw integration docs into build output for SEO
dongmucat Mar 17, 2026
4bb01d9
perf(web): reduce react-query stale time to 30s
dongmucat Mar 17, 2026
3a54a0b
feat: add anonymous download rate limiting (#76)
vsxd Mar 18, 2026
f3dbbf8
refactor: skill lifecycle projection and docs (#78)
vsxd Mar 18, 2026
04e588d
feat: harden download and storage resilience
vsxd Mar 18, 2026
0e764d8
feat(publish): relax skill upload constraints (#80)
yun-zhi-ztl Mar 18, 2026
98bc43c
feat(web): improve skill detail overview UX and markdown highlighting
dongmucat Mar 18, 2026
acbdb82
fix: skill upload constraints, rejected label, and last-version guard…
yun-zhi-ztl Mar 18, 2026
6649191
refactor: unify backend time handling in utc
vsxd Mar 18, 2026
578ea1f
fix: preserve local timezone in token expiration UI
vsxd Mar 18, 2026
ec9e814
test: align my skill app service star timestamps
vsxd Mar 18, 2026
92f7c7d
fix(web): show pending review toast for non-admin skill publish
yun-zhi-ztl Mar 18, 2026
b4af952
feat: Implement core web application structure including landing page…
dongmucat Mar 18, 2026
3075b34
Merge pull request #86 from iflytek/fix/publish-toast-pending-review
dongmucat Mar 18, 2026
fff7d47
Update README.md (#85)
likes1234-bro Mar 18, 2026
47a88fa
Serve registry skill docs from nginx
vsxd Mar 18, 2026
c81a174
Initial plan
Copilot Mar 18, 2026
179d860
chore: install GitHub-reward from idea2app/GitHub-reward
Copilot Mar 18, 2026
7944896
fix: address security review issues in GitHub-reward workflows
Copilot Mar 25, 2026
aeb21db
[optimize] simplify Copilot codes
TechQuery Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
82 changes: 82 additions & 0 deletions .env.release.draft
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# SkillHub production draft for bare-metal deployment.
# Copy this to .env.release and replace every value marked TODO.
#
# Recommended workflow:
# 1. cp .env.release.draft .env.release
# 2. Edit TODO values
# 3. make validate-release-config
# 4. docker compose --env-file .env.release -f compose.release.yml up -d

# Pin a released image tag in production.
SKILLHUB_VERSION=v0.1.0-beta.5
SKILLHUB_SERVER_IMAGE=ghcr.io/iflytek/skillhub-server
SKILLHUB_WEB_IMAGE=ghcr.io/iflytek/skillhub-web

# Public HTTPS entrypoint, no trailing slash.
SKILLHUB_PUBLIC_BASE_URL=https://skillhub.example.com

# Usually keep empty when web and api are served from the same domain.
SKILLHUB_WEB_API_BASE_URL=
SKILLHUB_API_UPSTREAM=http://server:8080

# Keep database and redis local-only on the host unless you explicitly need remote access.
POSTGRES_BIND_ADDRESS=127.0.0.1
POSTGRES_PORT=5432
POSTGRES_DB=skillhub
POSTGRES_USER=skillhub
POSTGRES_PASSWORD=TODO_change_to_a_strong_database_password

REDIS_BIND_ADDRESS=127.0.0.1
REDIS_PORT=6379

# Host ports exposed by the app containers.
API_PORT=8080
WEB_PORT=80

# Must stay true when the public site is behind HTTPS.
SESSION_COOKIE_SECURE=true

# External object storage. Production should use s3.
SKILLHUB_STORAGE_PROVIDER=s3

# Fill with your real S3-compatible endpoint.
# Aliyun OSS example:
# https://oss-cn-shanghai.aliyuncs.com
# AWS S3 example:
# https://s3.ap-east-1.amazonaws.com
# MinIO example:
# https://minio.example.com
SKILLHUB_STORAGE_S3_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com

# Optional public endpoint for presigned download URLs.
# Leave empty if the same endpoint is externally reachable.
SKILLHUB_STORAGE_S3_PUBLIC_ENDPOINT=

SKILLHUB_STORAGE_S3_BUCKET=skillhub-prod
SKILLHUB_STORAGE_S3_ACCESS_KEY=TODO_fill_real_access_key
SKILLHUB_STORAGE_S3_SECRET_KEY=TODO_fill_real_secret_key
SKILLHUB_STORAGE_S3_REGION=cn-shanghai

# Aliyun OSS / AWS S3 typically use false.
# Many self-hosted MinIO deployments need true.
SKILLHUB_STORAGE_S3_FORCE_PATH_STYLE=false

# Keep false in production unless you intentionally want the app to create the bucket.
SKILLHUB_STORAGE_S3_AUTO_CREATE_BUCKET=false
SKILLHUB_STORAGE_S3_PRESIGN_EXPIRY=PT10M

# Bootstrap admin is only for first login / first bootstrap.
BOOTSTRAP_ADMIN_ENABLED=true
BOOTSTRAP_ADMIN_USER_ID=docker-admin
BOOTSTRAP_ADMIN_USERNAME=admin
BOOTSTRAP_ADMIN_PASSWORD=TODO_change_to_a_strong_admin_password
BOOTSTRAP_ADMIN_DISPLAY_NAME=Platform Admin
BOOTSTRAP_ADMIN_EMAIL=admin@example.com

# Usually keep empty and let the backend derive it from SKILLHUB_PUBLIC_BASE_URL.
DEVICE_AUTH_VERIFICATION_URI=

# Optional GitHub OAuth.
# Leave both empty if you are not enabling GitHub login yet.
OAUTH2_GITHUB_CLIENT_ID=
OAUTH2_GITHUB_CLIENT_SECRET=
43 changes: 40 additions & 3 deletions .env.release.example
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,53 @@
SKILLHUB_VERSION=edge
SKILLHUB_SERVER_IMAGE=ghcr.io/iflytek/skillhub-server
SKILLHUB_WEB_IMAGE=ghcr.io/iflytek/skillhub-web
POSTGRES_IMAGE=postgres:16-alpine
REDIS_IMAGE=redis:7-alpine

# Public entrypoint seen by browsers/CLI, no trailing slash.
# Default to localhost so `runtime.sh up` works as a zero-config quickstart.
SKILLHUB_PUBLIC_BASE_URL=http://localhost

# Frontend usually keeps this empty and proxies to the backend through nginx.
SKILLHUB_WEB_API_BASE_URL=
SKILLHUB_API_UPSTREAM=http://server:8080

POSTGRES_BIND_ADDRESS=127.0.0.1
POSTGRES_PORT=5432
POSTGRES_DB=skillhub
POSTGRES_USER=skillhub
POSTGRES_PASSWORD=skillhub_demo
POSTGRES_PASSWORD=change-this-postgres-password

REDIS_BIND_ADDRESS=127.0.0.1
REDIS_PORT=6379
API_PORT=8080
WEB_PORT=80
SESSION_COOKIE_SECURE=false

# Zero-config runtime validation uses local storage.
# Switch to `s3` and fill the fields below before a real production deployment.
SKILLHUB_STORAGE_PROVIDER=local
SKILLHUB_STORAGE_S3_ENDPOINT=https://oss-cn-example.aliyuncs.com
SKILLHUB_STORAGE_S3_PUBLIC_ENDPOINT=
SKILLHUB_STORAGE_S3_BUCKET=skillhub-prod
SKILLHUB_STORAGE_S3_ACCESS_KEY=replace-me
SKILLHUB_STORAGE_S3_SECRET_KEY=replace-me
SKILLHUB_STORAGE_S3_REGION=cn-shanghai
SKILLHUB_STORAGE_S3_FORCE_PATH_STYLE=false
SKILLHUB_STORAGE_S3_AUTO_CREATE_BUCKET=false
SKILLHUB_STORAGE_S3_PRESIGN_EXPIRY=PT10M

# Bootstrap local admin account for first login. Rotate or disable after initial setup.
BOOTSTRAP_ADMIN_ENABLED=false
BOOTSTRAP_ADMIN_USER_ID=docker-admin
BOOTSTRAP_ADMIN_USERNAME=admin
BOOTSTRAP_ADMIN_PASSWORD=replace-this-admin-password
BOOTSTRAP_ADMIN_DISPLAY_NAME=Platform Admin
BOOTSTRAP_ADMIN_EMAIL=admin@example.com

# Optional override. Defaults to ${SKILLHUB_PUBLIC_BASE_URL}/device.
DEVICE_AUTH_VERIFICATION_URI=

# Optional: configure real GitHub OAuth before exposing the stack to other users.
OAUTH2_GITHUB_CLIENT_ID=local-placeholder
OAUTH2_GITHUB_CLIENT_SECRET=local-placeholder
OAUTH2_GITHUB_CLIENT_ID=
OAUTH2_GITHUB_CLIENT_SECRET=
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Bug Report
description: Report a defect in SkillHub
title: "[Bug] "
labels:
- bug
body:
- type: textarea
id: summary
attributes:
label: Summary
description: What happened?
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps To Reproduce
description: Include commands, requests, or UI flow
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Behavior
validations:
required: true
- type: textarea
id: environment
attributes:
label: Environment
description: Branch, commit, runtime profile, browser, OS, etc.
- type: textarea
id: api-impact
attributes:
label: API Contract Impact
description: If relevant, include the request path, response shape, and whether `web/src/api/generated/schema.d.ts` appears stale.
- type: textarea
id: logs
attributes:
label: Logs Or Screenshots
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security Report
url: https://github.com/iflytek/skillhub/security/advisories/new
about: Do not file public issues for suspected vulnerabilities.
33 changes: 33 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Feature Request
description: Propose a new capability or workflow improvement
title: "[Feature] "
labels:
- enhancement
body:
- type: textarea
id: problem
attributes:
label: Problem
description: What user or operator problem does this solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed Solution
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
- type: textarea
id: impact
attributes:
label: Impact
description: Auth, API, migration, deployment, observability, or UX impact
- type: textarea
id: contract
attributes:
label: Contract Or SDK Impact
description: Note whether this proposal changes OpenAPI, generated SDKs, CLI protocol, or operator docs.
48 changes: 48 additions & 0 deletions .github/ISSUE_TEMPLATE/reward-task.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: 💰 Reward Task
description: Task issue with Reward
title: '[Reward] '
labels:
- reward
body:
- type: textarea
id: description
attributes:
label: Task description
validations:
required: true

- type: dropdown
id: currency
attributes:
label: Reward currency
options:
- 'USD $'
- 'CAD C$'
- 'AUD A$'
- 'GBP £'
- 'EUR €'
- 'CNY ¥'
- 'HKD HK$'
- 'TWD NT$'
- 'SGD S$'
- 'KRW ₩'
- 'JPY ¥'
- 'INR ₹'
- 'UAH ₴'
validations:
required: true

- type: input
id: amount
attributes:
label: Reward amount
validations:
required: true

- type: input
id: payer
attributes:
label: Reward payer
description: GitHub username of the payer (optional, defaults to issue creator)
validations:
required: false
29 changes: 29 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
## Summary

- What changed?
- Why is this needed?

## Validation

- [ ] Backend tests passed
- [ ] Frontend typecheck/build passed
- [ ] OpenAPI SDK regenerated or checked when API contracts changed
- [ ] Smoke test run when relevant

Commands run:

```bash
# paste commands here
```

## Risk

- User-facing impact:
- Deployment or migration impact:
- Rollback approach:

## Notes

- Related issue:
- Follow-up work:
- Docs or operator runbooks updated when behavior changed:
57 changes: 57 additions & 0 deletions .github/scripts/count-reward.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { $, YAML } from "npm:zx";

import { Reward } from "./type.ts";

$.verbose = true;

const rawTags =
await $`git tag --list "reward-*" --format="%(refname:short) %(creatordate:short)"`;

const lastMonth = new Date();
lastMonth.setMonth(lastMonth.getMonth() - 1);
const lastMonthStr = lastMonth.toJSON().slice(0, 7);

const rewardTags = rawTags.stdout
.split("\n")
.filter((line) => line.split(/\s+/)[1] >= lastMonthStr)
.map((line) => line.split(/\s+/)[0]);

let rawYAML = "";

for (const tag of rewardTags)
rawYAML += (await $`git tag -l --format="%(contents)" ${tag}`) + "\n";

if (!rawYAML.trim())
throw new ReferenceError("No reward data is found for the last month.");

const rewards = YAML.parse(rawYAML) as Reward[];

const groupedRewards = Object.groupBy(rewards, ({ payee }) => payee);

const summaryList = Object.entries(groupedRewards).map(([payee, rewards]) => {
const reward = rewards!.reduce((acc, { currency, reward }) => {
acc[currency] ??= 0;
acc[currency] += reward;
return acc;
}, {} as Record<string, number>);

return {
payee,
reward,
accounts: rewards!.map(({ payee: _, ...account }) => account),
};
});

const summaryText = YAML.stringify(summaryList);

console.log(summaryText);

const tagName = `statistic-${new Date().toJSON().slice(0, 7)}`;

await $`git config user.name "github-actions[bot]"`;
await $`git config user.email "github-actions[bot]@users.noreply.github.com"`;

await $`git tag -a ${tagName} $(git rev-parse HEAD) -m ${summaryText}`;
await $`git push origin --tags --no-verify`;

await $`gh release create ${tagName} --notes ${summaryText}`;
3 changes: 3 additions & 0 deletions .github/scripts/deno.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"nodeModulesDir": "none"
}
Loading