Commit graph

661 commits

Author SHA1 Message Date
XiaoSeS
e50d54deb5 fix(api): route package preview through authenticated policy chain
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-15 16:47:29 +08:00
XiaoSeS
793a519bdb fix(publish): preserve package preview and version presentation compatibility
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-15 16:10:42 +08:00
XiaoSeS
1c164c8702 feat(publish): support versioned web display names
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-15 15:59:56 +08:00
XiaoSeS
56aae708e7 test(promotion): seed object JSON in H2 approval fixtures
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-15 14:24:18 +08:00
XiaoSeS
6b85e96326 fix(publish): keep version display metadata consistent across lifecycle
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-15 13:52:17 +08:00
Raymond
2bdb83bdb6 feat(publish): support metadata display names independent of skill slugs
Use optional metadata.display-name for skill titles while preserving stable
slugs and URLs. Keep published titles unchanged until review approval, and
cover localized title display and search with generic example fixtures.

Restore the fallback version title and summary when yanking the latest
published version, with regression coverage for the lifecycle boundaries.

Document the metadata field and retain existing behavior when it is absent.

Signed-off-by: Raymond <21071287+raymondtc@users.noreply.github.com>
2026-10-15 09:49:27 +08:00
XiaoSeS
3bfd8a322a fix(review): handle metadata inbox without version context
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 20:46:51 +08:00
XiaoSeS
57bb09fde7 test: align namespace guard mock after authoring merge
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 20:22:09 +08:00
XiaoSeS
71790bc1b8 merge: sync main after authoring prerequisite
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 20:07:47 +08:00
XiaoSeS
d8dbd4f0c9 fix(authoring): prevent namespace deletion while drafts remain
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 19:46:41 +08:00
XiaoSeS
642e780f1e fix(authoring): protect draft transactions and validation lifecycle
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 18:15:44 +08:00
XiaoSeS
ccd171eac9 feat(namespace): retain invitation history and join records
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-14 11:52:19 +08:00
XiaoSeS
71d0598d92 feat(review): unify skill avatar approval and space management
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-13 18:38:30 +08:00
XiaoSeS
14cc3f11eb fix(auth): declare staged avatar uploads session-only
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-13 11:47:11 +08:00
XiaoSeS
1a7ffbe6e2 feat(avatar): stage images before skill publication
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-13 11:15:35 +08:00
XiaoSeS
3b3e5ed27c test(avatar): cover policy and release generation boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 16:39:25 +08:00
XiaoSeS
bc2592c978 test(avatar): verify recovery with PostgreSQL transactions
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 16:16:15 +08:00
XiaoSeS
5f2d47968c feat: combine Skill avatars and namespace invitations
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 13:42:31 +08:00
XiaoSeS
17a18b9319 fix(avatar): recover pending reviews and cover moderation flows
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 13:42:26 +08:00
XiaoSeS
b67ea7ddb8 feat(avatar): add review and owner interfaces
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 13:42:11 +08:00
XiaoSeS
e65795d313 test(namespace): update command lookup fixtures
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 13:14:26 +08:00
XiaoSeS
44a1623620 fix(invitation): align API with issue contract
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:48:18 +08:00
XiaoSeS
6299733dd8 test(invitation): cover invitation permission boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:36:35 +08:00
XiaoSeS
f12019cf14 fix(invitation): keep login return target on join route
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:32:12 +08:00
XiaoSeS
ff69136ddb test(namespace): cover invitation expiry and role boundaries
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:28:59 +08:00
XiaoSeS
7d36d42056 test(namespace): cover invitation mutation races
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:15:49 +08:00
XiaoSeS
27687713d2 fix(namespace): complete invitation review follow-up
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 12:06:34 +08:00
XiaoSeS
9c997f7eca feat(namespace): add one-time invitation links
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:55:47 +08:00
XiaoSeS
f7e96bb8a4 feat(avatar): add owner and reviewer workflows
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:49:48 +08:00
XiaoSeS
b1d5391102 feat(namespace): add single-use invitation persistence
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:37:01 +08:00
XiaoSeS
6d42bd6708 feat(avatar): persist candidate lifecycle
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:34:39 +08:00
XiaoSeS
57477e2614 feat(avatar): normalize uploaded crop on server
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-12 11:32:13 +08:00
zjncs
56531d2692 fix(authoring): enforce draft ownership on file and run listing
Addresses the layer review on #935:

- listFiles and listRuns now resolve the draft through
  getOwnedDraft first, enforcing the same owner-or-SUPER_ADMIN policy
  as every other draft endpoint. Previously an authenticated non-owner
  could read another draft's file metadata and validation-run summary.
- new SkillAuthoringControllerAuthorizationTest: HTTP-level two-user
  coverage on both route prefixes (/api/v1/authoring and
  /api/web/authoring) — owner success, SUPER_ADMIN success, and the
  authenticated non-owner rejection, for both endpoints.
- migration renumbered to V69__authoring_platform.sql (upstream's
  system_auth_settings took V68), rebased on the latest main.
- web/src/api/generated/schema.d.ts regenerated from this branch's
  live OpenAPI surface (includes upstream API drift since the last
  generation plus the authoring endpoints).

Signed-off-by: zjncs <18910855655@163.com>
2026-10-12 11:21:04 +08:00
zjncs
a5729d24e1 feat(authoring): draft domain model, CRUD and structure-layer validation
Layer (a) of the authoring platform (tracked in #934): the SkillDraft
domain — drafts with revisions, digest and optimistic concurrency, draft
files in object storage, validation runs/events/findings — plus the V68
migration, the draft CRUD REST API with a scaffolded SKILL.md, and the
STRUCTURE validation layer executed by the run orchestrator (package
layout, frontmatter rules, file limits) reporting findings with
machine-applicable fix suggestions. Runs and findings stream over SSE
with a polling fallback.

Later layers add runtime binding and behavior execution (b), the fix
loop and publish integration (c), the web workbench (d) and docs (e).

Verified: skillhub-domain 609 tests green; the draft flow integration
test covers scaffold → broken frontmatter → FAILED run with a fixable
FRONTMATTER_FIELD_MISSING finding → repair → SUCCEEDED re-validation,
plus the optimistic-concurrency conflict path.

Signed-off-by: zjncs <18910855655@163.com>
2026-10-12 11:07:24 +08:00
XiaoSeS
68a99b21bd fix(auth): keep initial grant rules out of SQL checks
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 17:21:45 +08:00
XiaoSeS
f630519625 test(auth): verify initial grant seed across transactions
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:18 +08:00
XiaoSeS
b4a037b0ff test(auth): verify seed deletion and same-email grant isolation
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:18 +08:00
XiaoSeS
6842b40132 test(auth): persist initial grant audit in PostgreSQL
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
e8de0059ef test(auth): cover competing initial grants and smoke endpoints
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
5120f4f046 test(auth): verify initial role grants in PostgreSQL
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
a2249454cf test(auth): cover public capabilities for all switch states
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
ad2412c075 fix(auth): preserve login on existing installations
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
f297fdfd09 fix(auth): verify initial grants and auth UI behavior
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
df9b869d8e feat(auth): add system login settings and initial role grants
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-10 15:42:17 +08:00
XiaoSeS
863e240838 test(promotion): cover unpublished sources and version races
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-09 18:28:39 +08:00
XiaoSeS
84bda97dee feat(promotion): support reviewed global updates and revocation
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-09 18:14:59 +08:00
XiaoSeS
9d2c7d03a1 feat(starter): activate triage-nda built-in skill
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-09 10:10:57 +08:00
XiaoSeS
b7cfbe193b fix(auth): serialize account merges and revoke secondary tokens
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 13:56:23 +08:00
XiaoSeS
7a53782985 test(auth): bound row lock fixture wait
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 12:20:51 +08:00
XiaoSeS
15abf9ce76 test(auth): verify merge row lock contention
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 12:18:19 +08:00