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
XiaoSeS
291f5fc24f
test(auth): cover merge cancellation races
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 12:15:13 +08:00
XiaoSeS
dc635a24d6
fix(auth): require secondary approval before account merge
...
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-10-08 12:03:55 +08:00