Add --without-subdirs flag to wxWidgets configure to prevent building
utils/, samples/, and demos/ directories. These contain native
applications like wxrc that shouldn't be cross-compiled to WASM.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enable Asyncify for modal dialogs (ShowModal blocks until user closes)
- Add ASYNCIFY build flags to Makefile.wasm
- Fix dialog.spec.ts tests to use canvas coordinates (wxWidgets renders to canvas)
- Update WHATWORKS.md: 83 tests pass, dialog tests now 5/5
The wxwidgets submodule commit includes:
- Enabled startModal() Asyncify call in ShowModal()
- Enabled EM_ASM endModal cleanup in EndModal()
- Note: WASM code in src/univ/dialog.cpp will be refactored to
src/wasm/dialog.cpp in follow-up for cleaner architecture
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change glDrawElements index type from GL_UNSIGNED_BYTE to GL_UNSIGNED_SHORT
to match KiCad's actual usage and Emscripten's legacy GL emulation requirements
- Add dedicated opengl.spec.ts test file for OpenGL-specific tests
- All 5 GL test types now work: Immediate Mode, Matrix Ops, Vertex Arrays,
State Mgmt, and Texture Coords
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add proper TypeScript setup with tsconfig.json and type definitions
to resolve type errors in the e2e test files.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add z-ordering tests for dropdown popups appearing above GL canvas
- Add GL canvas visibility tests when switching tabs
- Fix test to click dropdown arrow button to close (clicking elsewhere
doesn't close wxChoice dropdowns)
- Update wxWidgets submodule with popup z-ordering and dismissal fixes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix empty clip region bug in wx.js clipRect function
- Add dropdown mouse interaction tests
- Add *.log to gitignore
- Make build script clean by default (use --no-clean to skip)
- Add wxGLCanvas canvas element fix documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Create custom JS library (lib/gl_immediate_shim.js) that fixes two
Emscripten LEGACY_GL_EMULATION issues without modifying KiCad source:
1. Color-per-vertex requirement: Emscripten requires glColor before
each glVertex, but standard OpenGL uses persistent "current color".
The shim tracks color state and auto-injects before each vertex.
2. Missing double-precision functions: glVertex2d, glVertex3d,
glColor3d, glColor4d are unimplemented in Emscripten (wontfix).
The shim provides these as wrappers to float variants.
Update test code to use standard OpenGL patterns (color set once,
multiple vertices) to verify the shim works correctly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix immediate mode (glBegin/glEnd) by using color-per-vertex pattern
- Document Emscripten's requirement for color per vertex in GL_README.md
- Add OpenGL test tab with visual rendering verification
- Test GL_TRIANGLES, GL_QUADS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP
- Update wxwidgets submodule with improved context management
Key finding: Emscripten's LEGACY_GL_EMULATION requires glColor*() to be
called before EACH glVertex*() call, not using OpenGL's "current color"
semantic. This is because the stride calculation expects interleaved
vertex data with color per vertex.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update build script with bakefile_gen Docker instructions and PCRE fix
- Add wxWidgets submodule with OpenGL/WebGL support for WASM
- Document comprehensive WASM test plan and wxGLCanvas implementation
- Document legacy GL emulation strategy for KiCad (423+ legacy GL calls)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update wxwidgets submodule with bitmap, template, and listbox fixes
- Add pcre2 include path to build script
- Add comprehensive UI interaction test covering all tabs
- Update test app with full control demonstration
- Add Makefile.wasm with HEAP exports for Emscripten
- Fix .gitignore to not ignore Makefile.wasm
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add tests/ directory with Playwright e2e tests
- Add minimal wxWidgets WASM test application
- Add build script for test app (scripts/build-wasm-test.sh)
- Update wxWidgets submodule with WASM build fixes
- Update .gitignore for test artifacts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updates wxWidgets WASM port with:
- wxBrowserInfo class and wxGetBrowserInfo() for browser detection
- Async PopupMenu callback support for non-blocking menus
- Visual refinements for grid, listctrl, and statictext controls
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update CMakeLists.txt to link against wxBase WASM build
- Move config.h to wasm-config/ to avoid conflicts with wx headers
- Add build-core-wasm.sh script for reproducible builds
- Core now compiles with actual wxString, wxFile, etc. from wxWidgets
Libraries built:
- libkicad_core_utils.a (34K)
- libkimath.a (969K)
- libsexpr.a (45K)
- libclipper2.a (169K)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add wxWidgets v3.2.6 as git submodule for wxBase utilities
- Create build-wxbase-wasm.sh script to compile wxBase for Emscripten
- Disable WASM-incompatible features: zlib, expat, xlocale, fswatcher
- Successfully builds libwx_baseu-3.2-Emscripten.a (3.1MB)
This provides wxString, wxFile, wxDateTime and other base utilities
needed for the KiCad board data model without GUI dependencies.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add CMake override modules, stub implementations, and patches to build
KiCad without CURL, libgit2, OpenCASCADE, and ngspice dependencies.
- cmake/: Find modules that provide stub targets when deps disabled
- stubs/include/: Header stubs for curl, git2, ngspice, OCC
- stubs/src/: Implementation stubs for disabled features
- patches/: Consolidated patch for KiCad source modifications
- scripts/: Build helper scripts
Verified full native build on macOS with all optional deps disabled.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>