forked from 1b-agent/opencadstudio-upstream
feat(wasm): single-window web entry + trunk harness (issue #45)
The binary now compiles for wasm32 as a runnable web target: - Split the main-window render into `view_main`, bypassing the multi-window id dispatch the browser cannot use. - Add `run_web` / `boot_web`: a single-window `iced::application` entry for wasm (the browser canvas is the only window). Native keeps the multi-window `iced::daemon` via cfg-split in `main`. - Add a `console_error_panic_hook` (wasm-only) for readable panics. - Add `index.html` + `Trunk.toml` so `trunk serve` builds the wasm bundle (no-default-features → no solid3d) with COOP/COEP headers. Native build and all 75 tests unchanged. Browser runtime (rayon threads, canvas attach, real file I/O) is the next iteration. Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
1 parent
b2e20c95fe
commit
157d54a4d4
7 files changed
+93
-1
No files matched your search
+12
-1
@@ -28,5 +28,16 @@ fn main() -> iced::Result {
|
||||
if std::env::var_os("WGPU_BACKEND").is_none() {
|
||||
std::env::set_var("WGPU_BACKEND", "dx12,vulkan");
|
||||
}
|
||||
app::run()
|
||||
|
||||
// Web (wasm) uses the single-window entry; native uses the multi-window
|
||||
// daemon. Trunk calls `main` from its generated JS bootstrap.
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
{
|
||||
console_error_panic_hook::set_once();
|
||||
app::run_web()
|
||||
}
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
{
|
||||
app::run()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user