feat(wasm): compile the library for wasm32 (issue #45 groundwork)

First step toward a web build: the library now compiles for
wasm32-unknown-unknown with --no-default-features.

- Add a `solid3d` feature (default on) gating truck-meshalgo /
  truck-shapeops / lzma-sys. These pull vtkio → xz2 → lzma-sys (C),
  which cannot cross-compile to wasm. Without the feature the 3-D
  solid path (tessellation, booleans, ACIS import) becomes no-ops;
  2-D CAD is unaffected. Native builds keep the feature by default.
- Move native-only crates (ureq, open) to non-wasm target deps and
  add cfg shims: update-check is a no-op on wasm, and a new `sys`
  module provides open_url + handle_path (rfd FileHandle → PathBuf;
  synthesizes a name-based path on the web).

Native build + all 75 tests unchanged. Browser runtime wiring
(entry point, trunk, real file I/O) is a follow-up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-06-16 13:01:19 +03:00
commit b2e20c95fe
12 changed files with 123 additions and 20 deletions

View file

@ -2489,7 +2489,7 @@ impl OpenCADStudio {
}
"DONATE" => {
let _ = open::that("https://patreon.com/HakanSeven12");
crate::sys::open_url("https://patreon.com/HakanSeven12");
self.command_line.push_info("Opening Patreon page...");
}
@ -2669,7 +2669,7 @@ impl OpenCADStudio {
}
"REPORT" => {
let _ = open::that("https://github.com/HakanSeven12/OpenCADStudio/issues/new");
crate::sys::open_url("https://github.com/HakanSeven12/OpenCADStudio/issues/new");
self.command_line.push_info("Opening feedback page...");
}
@ -2682,7 +2682,7 @@ impl OpenCADStudio {
}
"CHANGELOG" => {
let _ = open::that("https://github.com/HakanSeven12/OpenCADStudio/releases");
crate::sys::open_url("https://github.com/HakanSeven12/OpenCADStudio/releases");
self.command_line.push_info("Opening release notes...");
}