openpencil/.github/workflows/wasm-bundle-check.yml
Kayshen-X 64d70d672d feat(extension): add OpenPencil web-capture Chrome extension
MV3 extension that captures the rendered active tab (via the shared
snapshot-extractor contract) and imports it into OpenPencil. Logic lives
in the new op-chrome-extension-core crate (wasm): endpoint rules,
chunked-transfer integrity, /mcp envelope + reply classification,
download-name sanitisation, SSO/account session parsing, and hub
snapshot-inbox delivery. JS is glue only (chrome.* APIs, fetch, popup
DOM, injected page functions).

Capture: full page + element pick. Delivery: local ingress
(POST /api/import/web-snapshot) with /mcp fallback, JSON download, and —
when signed in to OP Hub — the account snapshot inbox. Flat popup UI,
15-locale strings with an in-popup language switcher, store packaging.

Why a crate: keeps the security-sensitive logic in tested Rust rather
than glue JS, and the SW/popup split keeps dynamic import() out of the
service-worker graph (guarded by check-sw-imports).
2026-08-04 21:43:01 +08:00

53 lines
1.6 KiB
YAML

name: WASM bundle check (kickoff §1.2)
on:
pull_request:
paths:
- 'Cargo.toml'
- 'Cargo.lock'
- 'crates/**'
- 'deny.toml'
- '.github/workflows/wasm-bundle-check.yml'
push:
branches: ['**']
jobs:
wasm32-check:
name: cargo check --target wasm32-unknown-unknown
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: '1.94'
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:
shared-key: wasm32-cache
- name: Forward — bucket A crates compile on wasm32
run: |
cargo check --target wasm32-unknown-unknown \
-p op-collab --no-default-features
cargo check --target wasm32-unknown-unknown \
-p op-host-web --no-default-features --features web
cargo check --target wasm32-unknown-unknown \
-p op-chrome-extension-core
wasm32-deny:
name: cargo-deny --target wasm32-unknown-unknown check bans
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- name: Reverse — blacklisted crates not in wasm bundle
uses: EmbarkStudios/cargo-deny-action@v2 # cargo-deny 0.18+ via the action (Phase 1 Task 1.8 finding)
with:
command: check bans
arguments: --target wasm32-unknown-unknown