6.5 KiB
6.5 KiB
WASM Web Features Roadmap
This document captures planned features for the browser-based yaze editor.
Foundation (Completed)
The following infrastructure is in place:
- Phase 1: File System Layer (WasmStorage, WasmFileDialog) - IndexedDB storage
- Phase 2: Error Handling (WasmErrorHandler) - Browser UI integration
- Phase 3: Progressive Loading (WasmLoadingManager) - Cancellable loading with progress
- Phase 4: Offline Support (service-worker.js, manifest.json) - PWA capabilities
- Phase 5: AI Integration (BrowserAIService, WasmSecureStorage) - WebLLM ready
- Phase 6: Local Storage (WasmSettings, WasmAutosave) - Preferences persistence
- Phase 7: Web Workers (WasmWorkerPool) - Background task processing
- Phase 8: WebAudio (WasmAudio) - SPC700 audio playback
Phase 9: Enhanced File Handling
9.1 Drag & Drop ROM Loading
- Status: Planned
- Priority: High
- Description: Enhanced drag-and-drop interface for ROM files
- Features:
- Visual drop zone with hover effects
- File type validation before processing
- Preview panel showing ROM metadata
- Multiple file support (load ROM + patch together)
- Files:
src/app/platform/wasm/wasm_drop_handler.{h,cc},src/web/drop_zone.{js,css}
9.2 Export Options
- Status: Planned
- Priority: High
- Description: Export modifications as patches instead of full ROMs
- Features:
- BPS patch generation (standard format)
- IPS patch generation (legacy support)
- UPS patch generation (alternative)
- Patch preview showing changed bytes
- Direct download or save to IndexedDB
- Files:
src/app/platform/wasm/wasm_patch_export.{h,cc}
Phase 10: Collaboration
10.1 Real-time Collaboration
- Status: Planned
- Priority: High
- Description: Multi-user editing via WebSocket
- Features:
- Session creation/joining with room codes
- User presence indicators (cursors, selections)
- Change synchronization via operational transforms
- Chat/comments sidebar
- Permission levels (owner, editor, viewer)
- Files:
src/app/platform/wasm/wasm_collaboration.{h,cc},src/web/collaboration_ui.{js,css} - Dependencies: EmscriptenWebSocket (completed)
10.2 ShareLink Generation
- Status: Future
- Priority: Medium
- Description: Create shareable URLs with embedded patches
- Features:
- Base64-encoded diff in URL hash
- Short URL generation via service
- QR code generation for mobile sharing
10.3 Comment Annotations
- Status: Future
- Priority: Low
- Description: Add notes to map locations/rooms
- Features:
- Pin comments to coordinates
- Threaded discussions
- Export annotations as JSON
Phase 11: Browser-Specific Enhancements
11.1 Keyboard Shortcut Overlay
- Status: Future
- Priority: Medium
- Description: Help panel showing all keyboard shortcuts
- Features:
- Toggle with
?key - Context-aware (shows relevant shortcuts for current editor)
- Searchable
- Toggle with
11.2 Touch Support
- Status: Future
- Priority: Medium
- Description: Touch gestures for tablet/mobile browsers
- Features:
- Pinch to zoom
- Two-finger pan
- Long press for context menu
- Touch-friendly toolbar
11.3 Fullscreen Mode
- Status: Future
- Priority: Low
- Description: Dedicated fullscreen API integration
- Features:
- F11 toggle
- Auto-hide toolbar in fullscreen
- Escape to exit
11.4 Browser Notifications
- Status: Future
- Priority: Low
- Description: Alert when long operations complete
- Features:
- Permission request flow
- Build/export completion notifications
- Background tab awareness
Phase 12: AI Integration Enhancements
12.1 Browser-Local LLM
- Status: Future
- Priority: Medium
- Description: In-browser AI using WebLLM
- Features:
- Model download/caching
- Chat interface for ROM hacking questions
- Code generation for ASM patches
- Dependencies: BrowserAIService (completed)
12.2 ROM Analysis Reports
- Status: Future
- Priority: Low
- Description: Generate sharable HTML reports
- Features:
- Modification summary
- Changed areas visualization
- Exportable as standalone HTML
Phase 13: Performance Optimizations
13.1 WebGPU Rendering
- Status: Future
- Priority: Medium
- Description: Modern GPU acceleration
- Features:
- Feature detection with fallback to WebGL
- Hardware-accelerated tile rendering
- Shader-based effects
13.2 Lazy Tile Loading
- Status: Future
- Priority: Medium
- Description: Load only visible map sections
- Features:
- Virtual scrolling for large maps
- Tile cache management
- Preload adjacent areas
Phase 14: Cloud Features
14.1 Cloud ROM Storage
- Status: Future
- Priority: Low
- Description: Optional cloud sync for projects
- Features:
- User accounts
- Project backup/restore
- Cross-device sync
14.2 Screenshot Gallery
- Status: Future
- Priority: Low
- Description: Save emulator screenshots
- Features:
- Auto-capture on emulator test
- Gallery view in IndexedDB
- Share to social media
Implementation Notes
Technology Stack
- Storage: IndexedDB via WasmStorage
- Networking: EmscriptenWebSocket for real-time features
- Background Processing: WasmWorkerPool (pthread-based)
- Audio: WebAudio API via WasmAudio
- UI: ImGui with HTML overlays for browser-specific elements
File Organization
src/app/platform/wasm/
├── wasm_storage.{h,cc} # Phase 1 ✓
├── wasm_file_dialog.{h,cc} # Phase 1 ✓
├── wasm_error_handler.{h,cc} # Phase 2 ✓
├── wasm_loading_manager.{h,cc} # Phase 3 ✓
├── wasm_settings.{h,cc} # Phase 6 ✓
├── wasm_autosave.{h,cc} # Phase 6 ✓
├── wasm_browser_storage.{h,cc} # Phase 5 ✓
├── wasm_worker_pool.{h,cc} # Phase 7 ✓
├── wasm_drop_handler.{h,cc} # Phase 9 (planned)
├── wasm_patch_export.{h,cc} # Phase 9 (planned)
└── wasm_collaboration.{h,cc} # Phase 10 (planned)
src/app/emu/platform/wasm/
└── wasm_audio.{h,cc} # Phase 8 ✓
src/web/
├── error_handler.{js,css} # Phase 2 ✓
├── loading_indicator.{js,css} # Phase 3 ✓
├── service-worker.js # Phase 4 ✓
├── manifest.json # Phase 4 ✓
├── drop_zone.{js,css} # Phase 9 (planned)
└── collaboration_ui.{js,css} # Phase 10 (planned)