refactor(docs): update editor status and welcome screen logic in documentation

- Revised the editor status section to reflect the current state of various editors, including stability notes and testing requirements.
- Clarified the welcome screen visibility logic in the documentation, emphasizing its behavior when no ROM is loaded and the conditions for manual control.
- Enhanced the overall structure and clarity of the development guide to better inform contributors about the project's status and UI management practices.

Benefits:
- Provides a clearer understanding of the current capabilities and testing needs of the editors.
- Improves documentation accuracy regarding UI behavior, aiding developers in troubleshooting and feature implementation.
This commit is contained in:
scawful
2025-10-15 16:45:41 -04:00
parent 3c0964d251
commit 49c59191ac
8 changed files with 335 additions and 250 deletions

View File

@@ -69,27 +69,12 @@ libgtk-3-dev libdbus-1-dev gcc-12 g++-12 clang-15
## Cross-Platform Code Validation
All recent additions (October 2025) are cross-platform compatible:
The following subsystems run unchanged across Windows, macOS, and Linux:
### Audio System
- `src/app/emu/audio/audio_backend.h/cc` - Uses SDL2 (cross-platform)
- ✅ No platform-specific code
- ✅ Ready for SDL3 migration
### Input System
-`src/app/emu/input/input_backend.h/cc` - Uses SDL2 (cross-platform)
-`src/app/emu/input/input_manager.h/cc` - Platform-agnostic
- ✅ Ready for SDL3 migration
### Debugger System
-`src/app/emu/debug/apu_debugger.h/cc` - No platform dependencies
-`src/app/emu/debug/breakpoint_manager.h/cc` - Platform-agnostic
-`src/app/emu/debug/watchpoint_manager.h/cc` - Platform-agnostic
- ✅ All use ImGui (cross-platform)
### UI Layer
-`src/app/emu/ui/*` - Uses ImGui + SDL2 (both cross-platform)
- ✅ No platform-specific rendering code
- Audio backend (`src/app/emu/audio`) uses SDL2 only; no platform branches.
- Input backend/manager (`src/app/emu/input`) runs on SDL2 abstractions.
- Debug tools (`src/app/emu/debug`) avoid OS-specific headers.
- Emulator UI (`src/app/emu/ui`) is pure ImGui + SDL2.
---
@@ -128,12 +113,12 @@ sudo apt-get install -y [see package list above]
Before merging platform-specific changes:
- vcpkg baseline synchronized across CI and vcpkg.json
- Windows x86 build removed (cpp-httplib incompatibility)
- Windows macro pollution prevented (NOGDI, NOMINMAX, WIN32_LEAN_AND_MEAN)
- gRPC v1.67.1 with MSVC compatibility flags
- ✅ Cross-platform code uses SDL2/ImGui only
- ⏳ Validate CI builds pass on next push
- Confirm the vcpkg baseline matches `vcpkg.json`.
- Do not reintroduce the Windows x86 build (cpp-httplib incompatibility).
- Keep Windows macro guards (`NOGDI`, `NOMINMAX`, `WIN32_LEAN_AND_MEAN`) in place.
- Build against gRPC 1.67.1 with the MSVC workaround flags.
- Leave shared code paths on SDL2/ImGui abstractions.
- Re-run the full matrix if caches or presets change.
### CI/CD Performance Roadmap
@@ -155,20 +140,18 @@ Before merging platform-specific changes:
## Testing Strategy
### Automated (CI)
- ✅ Build on Ubuntu 22.04 (GCC-12, Clang-15)
- ✅ Build on macOS 13/14 (x64/ARM64)
- ✅ Build on Windows 2022 (x64 only)
- ✅ Run core tests (AsarWrapperTest, SnesTileTest, etc.)
- ✅ Code quality checks (clang-format, cppcheck, clang-tidy)
- ✅ Memory sanitizer (Linux AddressSanitizer)
- Ubuntu 22.04 (GCC-12, Clang-15)
- macOS 13/14 (x64 and ARM64)
- Windows Server 2022 (x64)
- Core tests: `AsarWrapperTest`, `SnesTileTest`, others tagged `STABLE`
- Tooling: clang-format, clang-tidy, cppcheck
- Sanitizers: Linux AddressSanitizer job
### Manual Testing
After successful CI build:
- 🔲 Windows: Audio backend initializes
- 🔲 Windows: Keyboard input works
- 🔲 Windows: APU Debugger UI renders
- 🔲 Linux: Input polling works
- 🔲 macOS: All features functional
- Windows: verify audio backend, keyboard input, APU debugger UI.
- Linux: verify input polling and audio output.
- macOS: spot-check rendering, input, audio.
---
@@ -176,11 +159,9 @@ After successful CI build:
### Build Command (All Platforms)
```bash
# Simple - no flags needed!
cmake -B build
cmake --build build --parallel
# Or use presets:
cmake --preset [mac-dbg|lin-dbg|win-dbg]
cmake --build --preset [mac-dbg|lin-dbg|win-dbg]
```