2.3 KiB
2.3 KiB
Plan: Web Port Strategy
Status: COMPLETE (Milestones 0-4)
Owner (Agent ID): backend-infra-engineer, imgui-frontend-engineer
Last Updated: 2025-11-26
Completed: 2025-11-23
Goal: run Yaze in-browser via Emscripten without forking the desktop codebase. Desktop stays primary; the web build is a no-install demo that shares the ImGui UI.
✅ Milestone 0: Toolchain + Preset (COMPLETE)
- ✅ Added
wasm-releasetoCMakePresets.jsonusing the Emscripten toolchain - ✅ Flags:
-DYAZE_WITH_GRPC=OFF -DYAZE_ENABLE_TESTS=OFF -DYAZE_USE_NATIVE_FILE_DIALOG=OFF -DYAZE_WITH_JSON=ON -DYAZE_WITH_IMGUI=ON -DYAZE_WITH_SDL=ON - ✅ Set
CMAKE_CXX_STANDARD=20and Emscripten flags - ✅ Desktop presets unchanged;
#ifdef __EMSCRIPTEN__guards used
✅ Milestone 1: Core Loop + Platform Shims (COMPLETE)
- ✅ Extracted per-frame tick; Emscripten main loop implemented
- ✅ gRPC, crash handler disabled under
#ifndef __EMSCRIPTEN__ - ✅ Native dialogs replaced with ImGui picker for web
✅ Milestone 2: Filesystem, Paths, and Assets (COMPLETE)
- ✅ MEMFS for uploads, IndexedDB for persistent storage
- ✅
src/app/platform/wasm/implementation complete:wasm_storage.{h,cc}- IndexedDB integrationwasm_file_dialog.{h,cc}- Web file pickerwasm_loading_manager.{h,cc}- Progressive loadingwasm_settings.{h,cc}- Local storage for settingswasm_autosave.{h,cc}- Auto-save functionalitywasm_worker_pool.{h,cc}- Web worker threadingwasm_audio.{h,cc}- WebAudio for SPC700
✅ Milestone 3: Web Shell + ROM Flow (COMPLETE)
- ✅
src/web/shell.htmlwith canvas and file bridges - ✅ ROM upload/download working
- ✅ IDBFS sync after saves
✅ Milestone 4: CI + Release (COMPLETE)
- ✅ CI workflow for automated WASM builds
- ✅ GitHub Pages deployment working
- ✅
scripts/build-wasm.shhelper available
Bonus: Real-Time Collaboration (COMPLETE)
- ✅ WebSocket-based multi-user ROM editing
- ✅ User presence and cursor tracking
- ✅
src/web/collaboration_ui.{js,css}- Collaboration UI - ✅
wasm_collaboration.{h,cc}- C++ manager - ✅ Server deployed on halext-server (port 8765)
Canonical Reference
See wasm-antigravity-playbook.md for the consolidated WASM development guide.