skillhub/web
yun-zhi-ztl 6b2d8ce7ef fix: skill upload constraints, rejected label, and last-version guard (#82)
* fix: keep download counts consistent across skill pages

* fix: stabilize empty search ordering across sorts

* fix: show disabled-account reason on login redirect

* fix: mute report input placeholder text

* fix: return skill detail to my skills page

* test: stabilize auth context filter coverage

* feat(publish): increase single file limit to 10MB

* feat(publish): expand allowed file extensions

* feat(publish): extend secret scanning to new text file types

* feat(publish): add content validation for new file types

* refactor(publish): inject configurable limits into SkillPackageArchiveExtractor

* feat(publish): support zip with single root directory wrapper

* feat(publish): expand determineContentType for new file types

* test(publish): update tests for new upload constraints

* fix(web): add REJECTED status label and styling to my-skills page

The resolveStatusLabel and resolveStatusClassName functions were missing
the REJECTED case, causing rejected skills to show raw status string
with no color styling.


* fix: prevent deleting the last remaining version of a skill

Backend: added version count check in SkillGovernanceService.deleteVersion()
Frontend: hide delete button when only one version remains


* test: fix and add tests for last-version deletion guard

- Fix deleteVersion_removesDraftFilesAndBundle: mock findBySkillId to
  return 2 versions so the new guard doesn't block the happy path
- Add deleteVersion_rejectsLastRemainingVersion: verify that deleting
  the only remaining version is rejected with the correct error code

---------
2026-03-18 16:40:51 +08:00
..
docker-entrypoint.d Refine production compose runtime config 2026-03-13 17:00:47 +08:00
public fix(web): stabilize auth shell startup flow 2026-03-15 15:36:30 +08:00
scripts feat(web): inject OpenClaw integration docs into build output for SEO 2026-03-17 21:02:49 +08:00
src fix: skill upload constraints, rejected label, and last-version guard (#82) 2026-03-18 16:40:51 +08:00
.dockerignore feat(ops): improve Dockerfile caching, add dockerignore, docker profile, Makefile help 2026-03-12 17:50:34 +08:00
.eslintrc.cjs feat(web): implement login page, dashboard, and API token management 2026-03-12 00:13:50 +08:00
components.json feat(web): implement login page, dashboard, and API token management 2026-03-12 00:13:50 +08:00
Dockerfile Fix web health check for release compose 2026-03-13 17:00:47 +08:00
index.html feat: Implement initial web application structure, core pages, and UI components with i18n support. 2026-03-17 17:11:16 +08:00
LANDING_PAGE_REDESIGN.md feat(web): redesign homepage with modern landing page 2026-03-12 22:27:58 +08:00
nginx.conf.template Refine production compose runtime config 2026-03-13 17:00:47 +08:00
package.json feat(web): inject OpenClaw integration docs into build output for SEO 2026-03-17 21:02:49 +08:00
pnpm-lock.yaml feat(web): inject OpenClaw integration docs into build output for SEO 2026-03-17 21:02:49 +08:00
postcss.config.js feat(web): implement login page, dashboard, and API token management 2026-03-12 00:13:50 +08:00
PREVIEW.md docs: add landing page preview guide 2026-03-12 22:28:31 +08:00
runtime-config.js.template Add extensible auth compatibility layer for private SSO 2026-03-13 18:00:22 +08:00
tailwind.config.ts feat: Implement initial web application structure, core pages, and UI components with i18n support. 2026-03-17 17:11:16 +08:00
TODO.md fix(web): fix i18n language switching and add translations 2026-03-13 13:42:57 +08:00
tsconfig.json feat(web): implement login page, dashboard, and API token management 2026-03-12 00:13:50 +08:00
vite.config.ts feat(web): improve skill detail overview UX and markdown highlighting 2026-03-18 16:30:21 +08:00