Skip to content

Commit 19f3b25

Browse files
committed
chore: harden public plugin security
1 parent 421b1e8 commit 19f3b25

4 files changed

Lines changed: 67 additions & 16 deletions

File tree

.github/workflows/ci.yml

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,33 @@ on:
55
push:
66
branches: [main]
77

8+
permissions:
9+
contents: read
10+
811
jobs:
12+
secrets:
13+
name: Secret history scan
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
17+
with:
18+
fetch-depth: 0
19+
- name: Scan Git history with Gitleaks
20+
shell: bash
21+
run: |
22+
curl --fail --location --silent --show-error \
23+
https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz \
24+
--output gitleaks.tar.gz
25+
echo "551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb gitleaks.tar.gz" \
26+
| sha256sum --check
27+
tar --extract --gzip --file gitleaks.tar.gz gitleaks
28+
./gitleaks git --redact=100 --no-banner --no-color .
29+
930
plugin:
1031
runs-on: ubuntu-latest
1132
steps:
12-
- uses: actions/checkout@v4
13-
- uses: oven-sh/setup-bun@v2
33+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
34+
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
1435
with:
1536
bun-version: 1.3.0
1637
- run: bun install --frozen-lockfile
@@ -21,9 +42,9 @@ jobs:
2142
worker:
2243
runs-on: ubuntu-latest
2344
steps:
24-
- uses: actions/checkout@v4
25-
- uses: astral-sh/setup-uv@v6
26-
- uses: actions/setup-python@v5
45+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
46+
- uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6
47+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
2748
with:
2849
python-version: '3.12'
2950
- working-directory: server

README.md

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
# Articraft for Pascal
22

3-
An external Pascal Editor plugin for articulated 3D assets. It can browse a
4-
Pascal-hosted mirror of Articraft-10K, place URDF assets as custom Pascal nodes,
5-
pose their revolute/continuous/prismatic joints, and submit prompt or reference-
6-
image jobs to a credentialed mini-articraft worker that returns posable USDZ.
3+
A standalone reference plugin showing how to integrate Articraft with Pascal
4+
Editor through the public Plugin API. It can browse a host-provided mirror of
5+
Articraft-10K, place URDF assets as custom Pascal nodes, pose their
6+
revolute/continuous/prismatic joints, and submit prompt or reference-image jobs
7+
to a credentialed mini-articraft worker that returns posable USDZ.
8+
9+
This repository contains no private Pascal application source, deployment
10+
configuration, project data, provider accounts, or credentials. The browser
11+
plugin communicates only through the documented public plugin contracts and
12+
same-origin host routes described below.
713

814
Placement previews use the same articulated URDF/USDZ hierarchy as committed
915
nodes, with translucent non-interactive materials and live articulation. New
@@ -67,9 +73,10 @@ credentials. Hosts expose the same-origin broker described in
6773
It does not persist a provider key, worker bearer token, Supabase service-role
6874
key, or Pascal user identity.
6975

70-
The plugin has no OAuth scopes or external account session. Report security or
71-
support issues through the repository's
72-
[GitHub issues](https://github.com/pascalorg/plugin-articraft/issues).
76+
The plugin has no OAuth scopes or external account session. Report suspected
77+
security issues privately by following [SECURITY.md](./SECURITY.md); use
78+
[GitHub issues](https://github.com/pascalorg/plugin-articraft/issues) for public
79+
support requests.
7380

7481
## Development
7582

@@ -87,10 +94,9 @@ uv run pytest
8794
Read [Create a plugin](https://editor.pascal.app/docs/developers/plugins) for
8895
Pascal's public Plugin API v1 contract.
8996

90-
Pascal currently consumes the reviewed Git commit and transpiles the raw
91-
TypeScript entrypoint, matching the Nature reference plugin. `bun run build`
92-
emits a code-split ESM review artifact under ignored `dist/`; no install-time
93-
script or network request is required.
97+
Hosts consuming the reviewed Git source must transpile the raw TypeScript
98+
entrypoint. `bun run build` emits a code-split ESM review artifact under ignored
99+
`dist/`; no install-time script or network request is required.
94100

95101
## Upstream and data attribution
96102

SECURITY.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Security policy
2+
3+
## Public-demo boundary
4+
5+
This repository is a standalone Articraft integration demo built against the
6+
public Pascal Plugin API. Do not commit Pascal project data, private application
7+
source, non-public deployment configuration or URLs, access tokens, API keys,
8+
worker bearer tokens, service-role credentials, or populated environment files.
9+
10+
The browser package must never receive provider, worker, or storage credentials.
11+
All credentialed operations belong behind authenticated same-origin host routes;
12+
the example variable names in `.env.example` and `server/.env.example` must stay
13+
empty.
14+
15+
## Reporting a vulnerability
16+
17+
Please do not open a public issue for a suspected vulnerability or exposed
18+
secret. Use the repository's **Security** tab to submit a private vulnerability
19+
report. If a credential may have been exposed, revoke or rotate it immediately;
20+
removing it from the latest commit is not sufficient because Git history and CI
21+
logs may retain earlier values.
22+
23+
Public, non-sensitive defects can be reported through GitHub Issues.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"src",
1616
"HOST_INTEGRATION.md",
1717
"README.md",
18+
"SECURITY.md",
1819
"LICENSE"
1920
],
2021
"scripts": {

0 commit comments

Comments
 (0)