openpencil/crates/op-host-web/assets/canvaskit
Kayshen-X 227da7fa11 refactor(renderer): consolidate web shell on CanvasKit, retire skia path
Retire the from-scratch wasm32 skia raster web backend and the vendored
skia-safe fork now that CanvasKit is the sole web renderer.

- remove gl-webgl-shim + the `webgl` feature + backend/webgl.rs
- absorb chat streaming, live-sync, codegen, icon search, Figma/file IO,
  and system fonts into the `canvaskit` build via a backend-agnostic
  `RepaintContext` trait; wire them into `mount_ck` (chat send, image
  paste routing, window resize)
- delete the skia raster modules (backend/, a11y, shell_drop/resize,
  ime_target, boolean_ops, caret_pump, repaint_scheduler) + the skia
  `Inner` mount; op-host-web is now `web` (stub) + `canvaskit` only
- drop [patch.crates-io]; delete vendor/skia-safe-op + crates/wasm-libc-shim
  so skia-safe reverts to upstream crates.io 0.97.x (native unchanged,
  byte-identical; upstream has no wasm32-unknown-unknown target)
- switch the bundle gate (check-wasm-bundle.sh) to --features canvaskit

Also float new shapes above the frame (z-order), inset the shape-picker
selected-row highlight, and align the web file-menu hover without the
traffic-light inset.

Builds clean: canvaskit + web-stub (wasm32) + native desktop; bundle gate
passes (0 env.*, 4.5 MiB gzip).
2026-06-18 09:34:37 +08:00
..
canvaskit.js refactor(renderer): consolidate web shell on CanvasKit, retire skia path 2026-06-18 09:34:37 +08:00
canvaskit.wasm refactor(renderer): consolidate web shell on CanvasKit, retire skia path 2026-06-18 09:34:37 +08:00
LICENSE refactor(renderer): consolidate web shell on CanvasKit, retire skia path 2026-06-18 09:34:37 +08:00
README.md refactor(renderer): consolidate web shell on CanvasKit, retire skia path 2026-06-18 09:34:37 +08:00

Vendored CanvasKit artifact

canvaskit.js (UMD loader) + canvaskit.wasm are the official skia WebAssembly build, vendored here so the Rust web shell (canvaskit feature) renders without any embedded skia / hand-rolled libc++ runtime and without depending on node_modules (the TS app is being retired).

  • Version: canvaskit-wasm@0.40.0 (bin/canvaskit.{js,wasm}).
  • License: BSD-3-Clause (skia / Google). See LICENSE, copied verbatim from the canvaskit-wasm package. The notice must ship alongside these binaries wherever the daemon serves them.
  • Served at: /canvaskit/canvaskit.{js,wasm}. The daemon's web static server (op-host-desktop/src/web_static.rs) and any dev server must serve this directory at that URL prefix; op_ck_bridge.js::opCkInit loads /canvaskit/canvaskit.js then CanvasKitInit({locateFile}).
  • Update: copy from node_modules/.bun/canvaskit-wasm@<ver>/node_modules/canvaskit-wasm/bin/ after bumping the dependency, or fetch the matching release from the canvaskit-wasm npm package.

The Rust CanvasKitBackend drives this through the op_ck_bridge.js FFI; all drawing/layout/widget logic stays in Rust.