Patrick Erichsen
60b02c09f9
fix: stream legacy skill downloads ( #3451 )
...
* fix: stream legacy skill downloads
* fix: stream zip entries in bounded chunks
* fix: stream large archives through api owner
* fix: normalize streamed archive chunks
* fix: authenticate archive streaming handoff
* fix: authenticate archive manifest requests
* test: bound archive determinism fixture
* fix: align archive oidc trust with vercel targets
* fix: harden archive runtime boundaries
* test: isolate archive proxy credentials
* test: exercise streamed manifest size cap
2026-08-12 12:19:37 -07:00
Gio Della-Libera
82313c2bb1
feat: require exact ClawPack publication ( #3359 )
...
Accept artifact-only publication for experimental Claws so ClawHub can attest, retry, and serve the exact stored bytes. Preserve exact actor, owner, and digest identity across staged retries and validate current release state before reuse. Add durable contract documentation and real-stack publish, poll, download, and retry proof.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-08-09 12:37:04 -07:00
Gio Della-Libera
348851eeb9
feat(claws): align package layers with schema v1 ( #3328 )
...
Adds conventional harness profiles, package-root BOOTSTRAP.md, strict OpenClaw validation, portable path hardening, and an official upstream contract pin.
2026-08-09 07:46:06 -07:00
Vyctor H. Brzezowski
2f428b4e1b
fix: align discovery icons by content type and viewport ( #3427 )
...
Remove Skill listing icons across discovery, retain Plugin recognition icons on desktop, and collapse both icon columns at the existing mobile breakpoints. Keep loading skeletons aligned with settled rows and cards.
Closes #3425 .
Co-authored-by: Vyctor H. Brzezowski <krzyszchweski@gmail.com >
2026-08-06 17:17:16 -03:00
Patrick Erichsen
0b6017548c
feat: add local UI proof fallback ( #3429 )
...
* feat: add local UI proof fallback
* style: format generated Convex skills
2026-08-05 16:30:58 -07:00
Peter Steinberger
f9ea25e14f
fix(api): qualify batch skill security verdicts by owner ( #3409 )
2026-08-05 08:47:19 -07:00
Momo
1527462a5d
fix: allow Convex base64 upload digests ( #3395 )
2026-08-04 14:09:42 -07:00
Vincent Koc
b15bd52506
fix(security): prevent package scans from exhausting worker memory ( #3393 )
...
* fix(security): scope SkillSpector to bundled roots
* fix(security): bound bundled SkillSpector scans
* chore(security): format SkillSpector worker changes
* fix(security): import path separator for scan roots
2026-08-04 14:53:24 +08:00
Patrick Erichsen
87ca030c30
fix: upload skill files directly to Convex ( #3391 )
...
* fix: upload skill files directly to Convex
* chore: prepare clawhub CLI 0.23.3
2026-08-03 20:37:01 -07:00
Patrick Erichsen
7571488ab3
fix: allow safe skill latest rollback ( #3388 )
...
* fix: allow safe skill latest rollback
* chore(release): prepare clawhub 0.23.2
2026-08-03 19:42:03 -07:00
Vincent Koc
44cee65cac
fix(deploy): preserve active rollout modes ( #3357 )
2026-08-01 01:36:35 +08:00
Vincent Koc
1a3ee6e015
fix(publish): wait for definitive package publication
2026-08-01 01:00:02 +08:00
Patrick Erichsen
49771f5a69
feat: make GitHub Skill Sync refreshes version-safe ( #3229 )
2026-07-29 23:26:05 -07:00
Patrick Erichsen
9784710147
fix: separate skill metrics by source ( #3228 )
...
* fix: use bookmark icons consistently
* fix: separate skill metrics by source
2026-07-29 22:41:06 -07:00
Gio Della-Libera
79ef4af17f
feat(claws): publish CLAW.md prompts ( #3262 )
...
* feat(claws): publish CLAW.md prompts
* docs(claws): link prompt bridge PR
* fix(claws): align prompt package validation
* test(claws): repin OpenClaw prompt contract
* test(claws): repin updated OpenClaw contract
* test(claws): pin merged OpenClaw prompt contract
2026-07-28 21:42:27 -07:00
Patrick Erichsen
79cdd938c4
feat: claim skills.sh listings through GitHub Skill Sync ( #3230 )
...
* feat: add verified mirrored skill adoption state
* feat: add mirrored skill adoption preview
* feat: route skills.sh claims through GitHub sync
* ci: allow guarded CLAW-560 Test deploy
* fix: canonicalize claimed GitHub source repos
* fix: use public GitHub auth for skill sync
* fix: authenticate public GitHub source reads
2026-07-25 10:32:09 -05:00
Patrick Erichsen
cb9c6d8381
feat: add external skills.sh detail and install flow ( #3231 )
...
* feat: integrate external skills.sh listings
* test: record permanent Test external flow
* fix: distinguish GitHub alias source fingerprints
* fix: match controlled skills.sh source URL
* test: disambiguate external detail heading
* fix: use folder hash for controlled skills.sh fixture
* test: prepare controlled external fixture for proof
* fix: preserve OpenClaw external trust state
2026-07-25 05:17:04 -05:00
Patrick Erichsen
65ea02f4ca
feat: add canonical mixed skill search ( #3264 )
...
* feat: add canonical mixed skill search
* test: add permanent Test search proof
2026-07-25 02:06:41 -05:00
Patrick Erichsen
5fbd52e137
feat: add skills.sh trending rank overlay ( #3256 )
...
* feat: add skills.sh trending rank overlay
* test: prove trending overlay in permanent Test
* fix: preflight trending hydration bound
* fix: exclude known quarantines from trending hydration
* fix: preserve authoritative trending quarantine state
* fix: read legacy leaderboard captures for trending
* fix: bound trending drift to one mirror batch
* fix: preserve trending hydration overflow
* fix: keep trending replays hydration-free
2026-07-25 01:23:58 -05:00
Patrick Erichsen
906428a557
test: isolate GitHub Skill Sync proof jobs ( #3257 )
2026-07-24 21:36:16 -05:00
Gio Della-Libera and Patrick Erichsen
5a3b050751
Add gated Claw hosted feed and lifecycle proof ( #3092 )
...
* feat(claws): publish hosted feed with OpenClaw proof
* test(claws): prove package-local profile feed flow
* fix(claws): encode scoped package artifact routes
* fix(claws): enforce feed rollback and binding
* test(claws): pin hosted OpenClaw contract proof
* test(claws): add Convex feed runtime smoke
* chore(schema): refresh experimental feed declarations
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-24 19:29:12 -05:00
Gio Della-Libera and Patrick Erichsen
6efbcb768f
Add gated Claw discovery and API projection ( #3091 )
...
* feat(claws): add gated discovery APIs
* test(claws): distinguish latest and exact summaries
* fix(claws): bound public release projection
* chore(claws): refresh schema declarations
* fix(claws): select release projection by family
* fix(claws): hide unpublished release summaries
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-24 19:10:55 -05:00
Gio Della-Libera
85a3fde608
feat(claws): add gated publication and profile validation ( #3090 )
...
Gate Claw publication before storage access or mutation, validate bounded exact package/profile bytes and archive hierarchy, implement the managed CLAW.md body envelope, and prevent disabled-family list/search starvation.
Validated at exact head a9f1bb419f with all repository CI, CodeQL, secret scanning, focused tests, real local Convex schema/function validation, and clean final autoreview.
Co-authored-by: Gio Della-Libera <giodl73@gmail.com >
2026-07-24 18:14:12 -05:00
Gio Della-Libera and Patrick Erichsen
cfcb6bf0a6
Add experimental portable Claw package schema ( #3089 )
...
* feat(claws): add experimental package schema
* fix(claws): use canonical memory search config
* feat(claws): separate portable and harness profiles
* fix(claws): require portable profile pointers
* fix(schema): align portable claw validation
* fix(schema): reject ambiguous runner options
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-24 16:58:37 -05:00
Patrick Erichsen
62a697ef1e
feat: add permanent Test ranking metrics import ( #3259 )
...
* feat: add Test ranking metrics import
* fix: harden ranking metric table replacement
* fix: reserve Test for ranking imports
* fix: bind ranking rollback to imported state
* fix: persist rollback guard before import
* fix: quiesce ranking metric writes during imports
* fix: bind ranking imports to target identities
* fix: lock ranking target identities during imports
2026-07-24 16:00:27 -05:00
Patrick Erichsen
17f8118d7c
fix: restore rollout automation checks ( #3253 )
2026-07-24 15:39:16 -05:00
Patrick Erichsen
0f84533e9c
feat: add permanent skills.sh mirror storage ( #3227 )
...
* feat: add staged skills.sh mirror storage
* ci: allow guarded CLAW-563 Test deploy
* ci: expose guarded Test deploy diagnostics
* ci: defer branch guard to deploy step
* ci: deploy CLAW-563 PR head to Test
* ci: admit CLAW-563 PR Test job
* fix: make mirror source recovery durable
* ci: trigger labeled mirror load
* feat: activate mirror search queries
* fix: tighten mirror source typing
* fix: bypass protected Test mirror proof
* feat: attribute skill metrics by source
* feat: present stars as bookmarks
* style: format mirror proof changes
* fix: bypass protected mirror readback
* fix: resume mirror past missing scanner pages
* fix: fetch skills.sh mirror audits from api
* fix: validate structural skills.sh identities
* fix: resolve ambiguous skills.sh mirror identities
* feat: stabilize skills.sh mirror ingestion
* fix: account mirror identity conflicts in proof
* fix: quarantine invalid skills.sh detail ids
* fix: resume skills.sh mirror proof
* fix: preserve skills.sh mirror provenance
* fix: recover exact skills.sh mirror runs
* fix: recover stale skills.sh mirror runs
* fix: normalize skills.sh mirror topic facets
* feat: prove complete skills.sh leaderboard mirror
* fix: canonicalize skills.sh source page hashes
* test: enable skills.sh rollout in mirror tests
* ci: skip unrelated Test deploy pull requests
* fix: preserve Vercel preview marker in Test deploy
* fix: tighten Test deploy and metric reconciliation
* fix: bound mirror detail proof pages
* fix: delegate controlled mirror rate limits
* fix: preserve mirror reconciliation progress
* fix: release mirror retry responses
* fix: preserve stale mirror replay state
* fix: authenticate mirror source starts
* fix: delegate mirror identity rate limits
* ci: trigger mirror proof when labeled
* ci: couple mirror deploy and proof opt-in
* fix: admit permanent Vercel Test runtime
* fix: pass Test target to Vercel runtime
* test: align bookmark sync browser labels
* fix: preserve skills.sh source accounting
* fix: preflight active mirror runs
* fix: bind mirror snapshot accounting
* fix: reject truncated replay hashes
* fix: preserve live mirror overlay metadata
2026-07-24 14:32:00 -05:00
Patrick Erichsen
306035cad7
feat: generalize GitHub Skill Sync engine ( #3249 )
2026-07-23 15:50:49 -07:00
Patrick Erichsen
904038cbb4
fix(security): prevent ClawScan timeout worker leaks ( #3223 )
2026-07-22 12:33:49 -07:00
Patrick Erichsen
89f5e62ef7
feat: add controlled skills.sh scanned installs ( #3221 )
...
* feat: add controlled skills.sh scanned installs
* fix: resolve exact skills.sh install references
* fix: verify exact skills.sh catalog references
2026-07-22 02:00:19 -07:00
Patrick Erichsen
ee9fac51cd
feat: add controlled skills.sh metadata canary ( #3217 )
2026-07-21 23:21:19 -07:00
Patrick Erichsen
eb47a7c177
fix: remove skill slug alias quotas ( #3218 )
2026-07-21 21:49:59 -07:00
Jesse Merhi
987ad8bdec
feat: add 30-day activity trends to abuse signal drawer ( #3216 )
...
Adds 30-day download and install trend charts to the abuse signal drawer, places them near the top for immediate context, and improves development fixtures for realistic manual validation.
2026-07-22 14:49:52 +10:00
Jesse Merhi
7ef2b15cfb
Dedupe abuse signal alerts and add bulk review ( #3214 )
...
* fix: dedupe abuse alerts and add bulk review
* fix: use white bulk selection checks
2026-07-22 13:25:54 +10:00
Jesse Merhi
a09d42484a
fix: require six times P99 for sustained signals ( #3204 )
2026-07-22 00:14:12 +10:00
Jesse Merhi
723f1551e9
fix: make abuse signal snoozes evidence-aware ( #3203 )
2026-07-21 15:24:57 +10:00
Jesse Merhi
8a8e692730
fix: alert when signal scans stop retrying ( #3202 )
2026-07-21 13:58:09 +10:00
Patrick Erichsen
492708207a
fix: bound Discord webhook titles
2026-07-20 19:58:37 -07:00
Jesse Merhi
a68f707f0b
fix(moderation): cap signal scan retries ( #3197 )
...
* fix(moderation): replace stale signal scans
* fix(moderation): bound stale scan recovery
* fix(moderation): cap signal scan retries
* fix(management): show terminal signal scan failures
* docs: add signal failure UI proof
* fix(moderation): preserve signal retry status
2026-07-21 12:23:56 +10:00
Patrick Erichsen
1a964d7441
ci: retry transient GitHub package fixture failures ( #3194 )
...
* fix(ci): retry transient GitHub fixture failures
* test(ci): use first-party GitHub package fixture
2026-07-20 16:59:07 -07:00
Patrick Erichsen
aca16d7885
fix: allow transfers to replace owned redirects ( #3189 )
2026-07-20 16:57:21 -07:00
Patrick Erichsen
3097319ef6
fix: publish complete skill artifacts ( #3196 )
...
* fix: preserve complete skill artifacts
* test: align artifact metadata expectations
* fix: harden complete skill artifact handling
* fix: close complete artifact review gaps
* fix: preserve legacy skill file metadata hints
* fix: close artifact presentation review gaps
* fix(cli): preserve legacy skill file collector export
* refactor: centralize artifact upload helpers
* fix: preserve artifact scan and publish bounds
* fix: scan complete published text artifacts
* fix: harden artifact download presentation
* test: avoid secret-like fixture text
* refactor: preview artifacts by content
* chore(deps): patch transitive audit advisories
2026-07-20 15:54:47 -07:00
Patrick Erichsen
57d1e1530b
fix: isolate ClawScan worker shard concurrency ( #3188 )
2026-07-20 11:17:46 -07:00
Jesse Merhi
ed9c8fdda2
feat(moderation): rescan signals from signals tab ( #3180 )
2026-07-20 17:11:15 +10:00
Jesse Merhi and Peter Steinberger
c688ab845d
fix: recover scheduled temporal abuse scans ( #3176 )
...
* fix: recover scheduled temporal abuse scans
* test: strengthen temporal scan regression proof
Co-authored-by: Jesse Merhi <79823012+jesse-merhi@users.noreply.github.com >
* fix(ci): pin design system source commit
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-20 14:22:53 +10:00
Patrick Erichsen
af3d01c6ad
feat: verify organization GitHub profiles ( #3169 )
2026-07-17 18:02:30 -07:00
Patrick Erichsen
5c52b27bf7
fix: show plugin download activity graphs ( #3165 )
2026-07-17 15:40:32 -07:00
Peter Steinberger
f3ece75ee4
ci: namespace Vercel convex preview names per builder ( #3161 )
...
A second preview deploy-key consumer runs --preview-create on raw branch
names; Convex replaces same-name previews by delete-and-create, so it was
deleting Vercel's fresh deployments mid-push (get_config_hashes and
wait_for_schema 404s on every PR preview today; confirmed via the Convex
team audit log create/delete pairs seconds apart). Suffix all Vercel-built
preview names with -vercel so no other consumer can collide with them.
2026-07-17 21:43:02 +01:00
Peter Steinberger
0c04d6a9d5
ci: harden flaky ClawScan test and preview deploys; restore promo icon token ( #3159 )
...
* test: make ClawScan process-tree timeout test deterministic
The timeout test raced its 500ms deadline against the fixture writing
descendant.pid, and treated zombies as live processes via kill(pid, 0).
Under parallel coverage runs it flaked. Now waits for the pid barrier,
drives the timeout with fake timers, and treats zombie state as exited.
* ci: retry transient convex preview provisioning failures
Fresh Convex preview deployments intermittently 404 on get_config_hashes
while provisioning, failing the whole Vercel preview build after the
CLI's internal retries. Retry the preview deploy step up to 3 attempts
with 20s/40s backoff; other steps keep fail-fast behavior.
* fix: restore promotion bar icon geometry token
77459acc dropped border-radius: var(--oc-radius-inset) from
.promotion-bar-icon while folding the removed fallback rule into it,
breaking the ui-design-contract test on main.
* ci: retry preview pipeline under fresh preview names
Retrying --preview-create under the same name leaves two deployments and
convex run --preview-name can resolve to the dead one (seen live: seed
failed with missing functions after a successful retry). Each retry now
reruns deploy plus seed under <branch>-retry-N so resolution is unique.
2026-07-17 21:08:51 +01:00
Peter Steinberger
8142b3562a
fix: keep CLI device codes out of the GitHub OAuth code handler ( #3158 )
...
* fix: keep CLI device codes out of the OAuth code handler
The global AuthCodeHandler consumed any ?code= query param as a GitHub
OAuth completion code. CLI device login links (/cli/device?code=XXXX-XXXX)
hit that path: the device code was stripped before the page could read it,
the failed code exchange erased the active session, and the retry logic
bounced users through a surprise GitHub redirect.
Device verification links now use user_code, the OAuth handler ignores
device-shaped codes as defense in depth, and the device page accepts the
legacy param only when it matches the device code format.
* chore: refresh stale convex generated api for skillTags
2026-07-17 19:42:48 +01:00