mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-14 23:26:39 +03:00
build:extension: ship the wasm-core extension shell and vendor its detector from the detector release
`bun run build:extension` was broken on this branch: it still imported the deleted JS engine (cli/engine/registry/antipatterns.mjs, scripts/lib/browser-detector-bundle.js). The shipped shell now matches the new design. The content script only snapshots the DOM; an extension-owned offscreen document runs the WebAssembly rule core over that snapshot, so the scanned page's CSP no longer matters. That replaces the old approach of injecting a JS rules bundle into the page. New files: extension/offscreen/offscreen.html, plus the "offscreen" permission and a 'wasm-unsafe-eval' extension_pages CSP in the manifest. The manifest version stays at 1.3.3. The shell's own manifest carried 2.0.0; feature branches never bump versions, so the bump is a release step. The five generated detector pieces (core.js, core_bg.wasm, snapshot.js, overlay.js, antipatterns.json) are vendored at build time into the gitignored extension/detector/ by the new scripts/lib/detector-bundle.mjs, which resolves them the same three ways crates/core/build.rs resolves the native archive: IMPECCABLE_DETECTOR_LIB/extension-detector/, the ~/.impeccable/detector/<DETECTOR_VERSION>/ cache, then a checksum-verified download of detector-browser-bundle.zip from the detector release. antipatterns.json is no longer regenerated here. The zip packaging is unchanged. The Firefox variant still builds so `web-ext lint` keeps covering the shared shell, but it cannot scan: Gecko has no chrome.offscreen API. The build prints a one-line warning saying so. Also here: a referenced-path check that fails the build when the manifest or the service worker points at a file that is not in extension/, a resolver unit test wired into the core suite, and the detector rule count in the READMEs synced to the 61 the vendored registry carries. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Vau2X53xGTjjTCXWMVBoNY
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
836516a7a0
commit
f2c9aeab5b
@@ -117,6 +117,12 @@ Three release kinds touch the runtime, in this order:
|
||||
3. **npm platform packages**, then the **skill** and **CLI** releases, which
|
||||
`scripts/check-engine-release.mjs` gates on the engine release.
|
||||
|
||||
The browser extension vendors from the same detector release: `bun run
|
||||
build:extension` pulls `detector-browser-bundle.zip` for the pinned
|
||||
`DETECTOR_VERSION` through `scripts/lib/detector-bundle.mjs`, which resolves
|
||||
it the same three ways `crates/core/build.rs` resolves the archive, and
|
||||
unpacks the five generated pieces into the gitignored `extension/detector/`.
|
||||
|
||||
CI runs the workspace build and tests (`rust`, `rust-windows`) and the oracle
|
||||
against a source build; both are warn-only until the first detector release
|
||||
exists, then their `continue-on-error` flips to false.
|
||||
|
||||
Reference in New Issue
Block a user