CMMS fork: re-vendor all runtime deps locally, strip analytics

Upstream loads zip.js, OpenCV.js, WireBender (JS+WASM) and Google Fonts
from CDNs at runtime, and includes a Google Tag / gtag.js snippet. The
CMMS deployment forbids external requests. Changes:

- docs/vendor/ — local copies of opencv.js (Apache-2.0), zip.min.js
  (BSD-3-Clause), WireBender.{js,wasm} (AGPL-3.0/commercial, source at
  github.com/dev-lab/WireBender), and the three Google fonts (OFL, latin
  subset). SOURCE.txt records provenance.
- studio.html / schema.html — zip.js + opencv.js + fonts @import point at
  docs/vendor/.
- inspect-traces.js / schema/layout.js — WireBender import() + locateFile
  point at docs/vendor/wirebender/.
- every *.html — Google Tag / gtag.js snippet removed.

No behaviour change; kicad-symbols zip was already bundled + local.
CMMS embedding hooks (window.PCBRETRACE_CONFIG, save-back, AI bridge)
land in a later commit.
This commit is contained in:
Stuart 2026-09-03 14:02:16 +10:00
commit 5e4c7245b6
22 changed files with 172 additions and 36 deletions

36
docs/vendor/SOURCE.txt vendored Normal file
View file

@ -0,0 +1,36 @@
Third-party runtime dependencies, vendored locally for the CMMS fork
==================================================================
Upstream pcb-retrace loads these from CDNs at runtime. The CMMS deployment
forbids external requests (CSP + offline-capable), so they are copied here and
the references in ../studio.html, ../schema.html, ../inspect-traces.js and
../schema/layout.js are rewritten to these local paths. Fetched 2026-09-03.
opencv.js
https://docs.opencv.org/4.x/opencv.js (OpenCV 4.x prebuilt, single-file,
wasm embedded as a base64 data URI — no separate .wasm)
License: Apache-2.0. Used by cv-core.js for ORB feature matching / photo
alignment only.
zip.min.js
https://cdn.jsdelivr.net/npm/@zip.js/zip.js@2.8.26/dist/zip.min.js
License: BSD-3-Clause (Gildas Lormeau). Project-ZIP + kicad-symbols-zip
read/write.
wirebender/WireBender.js + WireBender.wasm
https://dev-lab.github.io/WireBender/latest/{WireBender.js,WireBender.wasm}
License: dual AGPL-3.0-only OR commercial (Taras Greben). Corresponding
source: https://github.com/dev-lab/WireBender (not modified here — the
published binary is redistributed as-is alongside this AGPL fork).
Cosmetic net-trace routing for the Inspect view + Schema ReTrace layout.
ES module (uses import.meta.url); the .wasm is resolved by emscripten's
default locateFile relative to the module, or via the explicit URL() in
schema/layout.js.
fonts/ (Rajdhani v17, Share Tech Mono v16, Space Mono v17 — latin subset only)
https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Rajdhani:wght@400;500;600;700&family=Space+Mono:wght@400;700
License: SIL Open Font License 1.1. Used by schema.html only. fonts.css
replaces the external @import.
../assets/kicad-symbols-master.zip is bundled by upstream itself (KiCad symbol
libraries, CC-BY-SA-4.0 + KiCad library exception) — not added here.

56
docs/vendor/fonts/fonts.css vendored Normal file
View file

@ -0,0 +1,56 @@
/*
* Local copies of the Google Fonts used by schema.html (Schema ReTrace).
* Latin subset only. Fetched 2026-09-03 from fonts.googleapis.com /
* fonts.gstatic.com. Rajdhani v17, Share Tech Mono v16, Space Mono v17.
* All three are licensed under the SIL Open Font License 1.1.
* Replaces an external @import so the app makes no cross-origin requests.
*/
@font-face {
font-family: 'Rajdhani';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(./rajdhani-400.woff2) format('woff2');
}
@font-face {
font-family: 'Rajdhani';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(./rajdhani-500.woff2) format('woff2');
}
@font-face {
font-family: 'Rajdhani';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url(./rajdhani-600.woff2) format('woff2');
}
@font-face {
font-family: 'Rajdhani';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(./rajdhani-700.woff2) format('woff2');
}
@font-face {
font-family: 'Share Tech Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(./sharetechmono-400.woff2) format('woff2');
}
@font-face {
font-family: 'Space Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(./spacemono-400.woff2) format('woff2');
}
@font-face {
font-family: 'Space Mono';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(./spacemono-700.woff2) format('woff2');
}

BIN
docs/vendor/fonts/rajdhani-400.woff2 vendored Normal file

Binary file not shown.

BIN
docs/vendor/fonts/rajdhani-500.woff2 vendored Normal file

Binary file not shown.

BIN
docs/vendor/fonts/rajdhani-600.woff2 vendored Normal file

Binary file not shown.

BIN
docs/vendor/fonts/rajdhani-700.woff2 vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
docs/vendor/fonts/spacemono-400.woff2 vendored Normal file

Binary file not shown.

BIN
docs/vendor/fonts/spacemono-700.woff2 vendored Normal file

Binary file not shown.

48
docs/vendor/opencv.js vendored Normal file

File diff suppressed because one or more lines are too long

16
docs/vendor/wirebender/WireBender.js vendored Normal file

File diff suppressed because one or more lines are too long

BIN
docs/vendor/wirebender/WireBender.wasm vendored Normal file

Binary file not shown.

1
docs/vendor/zip.min.js vendored Normal file

File diff suppressed because one or more lines are too long