backend-infra-engineer: Post v0.3.9-hotfix7 snapshot (build cleanup)

This commit is contained in:
scawful
2025-12-22 00:20:49 +00:00
parent 2934c82b75
commit 5c4cd57ff8
1259 changed files with 239160 additions and 43801 deletions

View File

@@ -0,0 +1,50 @@
# 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-release` to `CMakePresets.json` using 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=20` and 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 integration
- `wasm_file_dialog.{h,cc}` - Web file picker
- `wasm_loading_manager.{h,cc}` - Progressive loading
- `wasm_settings.{h,cc}` - Local storage for settings
- `wasm_autosave.{h,cc}` - Auto-save functionality
- `wasm_worker_pool.{h,cc}` - Web worker threading
- `wasm_audio.{h,cc}` - WebAudio for SPC700
## ✅ Milestone 3: Web Shell + ROM Flow (COMPLETE)
-`src/web/shell.html` with 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.sh` helper 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](../agents/wasm-antigravity-playbook.md) for the consolidated WASM development guide.