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).
53 lines
1.6 KiB
YAML
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
|