skillhub/web
FenjuFu 0fbc55f917 feat(publish): allow uploading a skill folder directly
Publishing required a hand-made .zip. Local agent skills live as folders,
and repackaging them by hand often smuggles in tool metadata (__MACOSX/,
.DS_Store, ...) that clutters the package (#737).

Add an "upload a folder" option to the publish dropzone: pick a folder
(webkitdirectory), and the browser packages it into a clean STORE-method
zip via a dependency-free writer, dropping VCS/build/OS junk (.git/,
node_modules/, __pycache__/, .DS_Store, ...). The resulting zip flows
through the exact same upload/publish path, and the server already strips
a single root directory, so paths are preserved as-is.

Packaging (folder-zip.ts) is isolated and unit-tested (CRC-32 vectors, zip
structure, junk filtering); the UploadZone gains an optional onFolderSelect
prop so existing callers are unaffected.

Closes #737

Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
2026-08-25 20:15:39 +08:00
..
docker-entrypoint.d feat(web): support configurable base-path deployment 2026-08-05 12:50:26 +08:00
e2e fix(publish): delete review tasks of any status when replacing a version (#601) 2026-07-28 13:57:35 +08:00
public feat(auth): add GitLab OAuth2 provider support (#264) 2026-04-17 19:56:32 +08:00
src feat(publish): allow uploading a skill folder directly 2026-08-25 20:15:39 +08:00
.browserslistrc fix(web): restore compatibility with Chromium 83 (Debian 10) 2026-05-09 13:55:50 +08:00
.dockerignore feat(ops): improve Dockerfile caching, add dockerignore, docker profile, Makefile help 2026-03-12 17:50:34 +08:00
.eslintrc.cjs refactor: address code review findings from 2026-03-22 2026-03-23 13:48:23 +08:00
base-path-config.test.ts feat(web): support configurable base-path deployment 2026-08-05 12:50:26 +08:00
base-path-config.ts feat(web): support configurable base-path deployment 2026-08-05 12:50:26 +08:00
components.json feat(web): implement login page, dashboard, and API token management 2026-03-12 00:13:50 +08:00
Dockerfile feat: add initial RISC-V image support (#725) 2026-08-24 16:37:34 +08:00
index.html fix(web): stop React 19 portal removeChild/insertBefore crashes (#624) 2026-08-04 13:59:37 +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 feat(web): support configurable base-path deployment 2026-08-05 12:50:26 +08:00
package.json chore(deps): resolve dependabot npm alerts 2026-08-24 16:08:07 +08:00
playwright.config.ts feat(promotion): improve promotion review dashboard 2026-06-24 09:28:43 +08:00
playwright.smoke.config.ts test(e2e,ci): migrate web e2e to real API and add PR e2e workflow (#198) 2026-04-01 14:41:23 +08:00
pnpm-lock.yaml chore(deps): resolve dependabot npm alerts 2026-08-24 16:08:07 +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: support Unicode characters in skill slugs (#196) 2026-03-31 10:17:34 +08:00
TODO.md fix(web): fix i18n language switching and add translations 2026-03-13 13:42:57 +08:00
tsconfig.json fix(web): isolate ambient types (ISSUE-92) 2026-07-29 10:44:49 +08:00
vite.config.ts feat(web): support configurable base-path deployment 2026-08-05 12:50:26 +08:00