Electron-Prototyp: eigenes App-Fenster statt Tauri/WebKitGTK
Ersetzt den Tauri-Webview-Weg testweise durch eine Electron-Shell (randlos, ohne native Menüleiste, wie chromium-shell.sh), damit die WASM/WebGPU-Engine zuverlässig laeuft statt in WebKitGTK. Rust-Backend nicht noetig, da compute_joins einen TS-Fallback hat. npm run electron zum Starten.
This commit is contained in:
+20
-7
@@ -73,13 +73,26 @@ integrierter Engine-Viewport möglich). Die Engine-Rust-Crates sind in einem sp
|
||||
Schritt 1:1 wiederverwendbar; nur die dünne WASM-Bindeschicht wäre dann Wegwerf. All-native
|
||||
bleibt legitimes Fernziel, ist aber KEIN Weg zurück zu Tauri (Tauri IST der Webview-Shell).
|
||||
|
||||
>>> NÄCHSTER KONKRETER SCHRITT (neue Session zuerst): Electron-Prototyp. Nur additiv:
|
||||
`electron` als devDep, ~30-Zeilen `main.js` (BrowserWindow + `app.commandLine.appendSwitch`
|
||||
für WebGPU: `enable-unsafe-webgpu` + `enable-features=Vulkan` — dieselben Flags wie
|
||||
`scripts/chromium-shell.sh`), lädt den Vite-Server (dev) bzw. `dist` (prod), npm-Script
|
||||
`electron`. Verifizieren: App startet als eigenes Fenster, `?engine=wasm` rendert den
|
||||
Engine-Viewport (WebGPU in Electron = wie Chromium). Rust-Backend NICHT nötig — `compute_joins`
|
||||
hat TS-Fallback. Risikoarm, ~1 Session. Danach: render3d-WASM, Doppeltext-Fix.<<<
|
||||
>>> ELECTRON-PROTOTYP: FERTIG (2026-07-02). <<<
|
||||
`electron` als devDep, `scripts/electron-main.cjs` (BrowserWindow, `Menu.setApplicationMenu(null)`
|
||||
+ `frame:false`/`autoHideMenuBar` für randloses Fenster wie chromium-shell.sh, WebGPU-Flags
|
||||
`enable-unsafe-webgpu`+`enable-features=Vulkan`), `scripts/electron-shell.sh` (Dev-Server-Guard
|
||||
wie chromium-shell.sh), npm-Script `npm run electron`. Verifiziert per Screenshot: App startet
|
||||
als eigenes randloses Fenster, lädt den echten Grundriss (nicht leer). WICHTIG:
|
||||
- **Datei muss `.cjs` sein** (`package.json` hat `"type":"module"`, Electron-Main läuft als CJS).
|
||||
- **`ELECTRON_RUN_AS_NODE=1`** kann aus dem umgebenden Prozess (z.B. VSCode-Electron-Host)
|
||||
vererbt sein — zwingt Electron in den Node-Modus (`require('electron')` liefert nur einen
|
||||
Pfad-String statt `{app,...}` → `app` ist undefined). Immer mit `env -u ELECTRON_RUN_AS_NODE`
|
||||
starten, falls das Fenster nicht öffnet / `app.commandLine` undefined ist.
|
||||
- **WebGPU/`?engine=wasm` in Electron auf diesem System (niri/Wayland) fällt auf WebGL2 zurück**
|
||||
(Ozone-Wayland+Vulkan-Warnung beim Start). `--ozone-platform=x11` GEHT NICHT (bricht die
|
||||
Fenstererstellung komplett — GetGeometry/Vulkan-Surface-Fehler). System-Chromium
|
||||
(`chromium-shell.sh`) rendert die WASM-Engine hingegen nachweislich (siehe [[wasm-engine-viewport]]-
|
||||
Notizen); die verwendete Electron-Version (Paket sagt ^43, `--version` meldet v24 — Versions-
|
||||
Mismatch, ggf. stale Binary-Cache) könnte ein älteres/anders konfiguriertes Chromium mitbringen.
|
||||
TODO nächste Session: Electron-Version/Ozone-Flags weiter untersuchen, bevor der Prototyp der
|
||||
primäre Dev-Weg wird — bis dahin bleibt WebGL2-Fallback der Standardpfad, funktional unverändert.
|
||||
Danach: render3d-WASM, Doppeltext-Fix.<<<
|
||||
Klarstellung an den User (er fragte, ob Webview = „billig"): NEIN — Figma (eigene C++/WASM-Engine
|
||||
im Web-Shell), Onshape, VS Code zeigen, dass „eigene Engine + Web-UI" Top-Tier-Architektur ist.
|
||||
CAD/BIM-Substanz = Modell + Engine + Normen (haben wir: parametrische Wände, SIA 416, DOSSIER-
|
||||
|
||||
Reference in New Issue
Block a user