Self-hosted emergence-engineering/pcbjam (browser KiCad WASM) — CMMS embed fork. Upstream tracked as remote "upstream".
  • TypeScript 49.1%
  • C++ 36%
  • Shell 4.2%
  • C 2.9%
  • JavaScript 2.6%
  • Other 5.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Viktor Vaczi 355115f30d Update documentation to reflect current project structure
- README.md: Complete rewrite with current directory structure and two
  build workflows (KiCad Docker, wxWidgets local)
- build.md: Fix script references (docker/build.sh as entry point),
  remove deleted cmake/ directory, fix test commands

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 11:13:17 +01:00
docker Fix Docker macOS timestamp issues and improve build reproducibility 2025-12-27 01:07:44 +01:00
docs Add ccache and incremental build system for faster development 2025-12-26 20:51:58 +01:00
kicad@2532a4682e Fix KiCad WASM build and runtime errors 2025-12-22 16:30:53 +01:00
lib Add GL immediate mode shim for Emscripten compatibility 2025-11-28 21:22:09 +01:00
patches Add reproducible build system for wxWidgets WASM port 2025-11-27 15:30:10 +01:00
scripts Remove unused legacy build scripts and directories 2025-12-27 11:07:54 +01:00
tests Add logerror test app and wxLog console logging e2e tests 2025-12-15 14:34:43 +01:00
wasm Fix KiCad WASM build and runtime errors 2025-12-22 16:30:53 +01:00
wxwidgets@12f0fee64c Fix KiCad WASM build and runtime errors 2025-12-22 16:30:53 +01:00
.dockerignore Add Docker build environment for KiCad WASM 2025-12-08 12:07:01 +01:00
.gitignore Add two-phase build with host asyncify transformation 2025-12-13 22:13:31 +01:00
.gitmodules Remove unused legacy build scripts and directories 2025-12-27 11:07:54 +01:00
build.md Update documentation to reflect current project structure 2025-12-27 11:13:17 +01:00
CLAUDE.md Add KiCad WASM build infrastructure and dependency scripts 2025-12-04 13:15:04 +01:00
README.md Update documentation to reflect current project structure 2025-12-27 11:13:17 +01:00

KiCad WebAssembly Port

Run KiCad PCBnew in the browser using WebAssembly.

Project Structure

kicad-wasm/
├── kicad/                  # KiCad source (git submodule)
├── wxwidgets/              # wxWidgets source (git submodule)
├── wasm/                   # WASM compatibility layer
│   ├── kiplatform/         # Platform abstraction (app, UI, printing)
│   ├── libcontext/         # Coroutine/fiber implementation
│   ├── stubs/              # Stub implementations (libgit2, curl)
│   └── config/             # Build configuration headers
├── patches/                # KiCad source patches
├── scripts/                # Build scripts
│   ├── build-wxuniversal-wasm.sh   # Build wxWidgets for WASM
│   ├── build-wasm-test.sh          # Build wxWidgets test apps
│   ├── deps/               # Dependency build scripts
│   ├── kicad/              # KiCad build scripts
│   ├── common/             # Shared utilities and config
│   └── config/             # Build configuration
├── docker/                 # Docker build environment
├── tests/                  # Playwright E2E tests
├── output/                 # Build output (pcbnew.js, pcbnew.wasm)
└── docs/                   # Research documentation

Two Build Workflows

1. KiCad Build (Docker)

Full KiCad PCBnew build using Docker:

# Build KiCad WASM
./docker/build.sh

# Copy output to test directory
./tests/scripts/setup-kicad-wasm.sh

# Run KiCad tests
cd tests && npm install && npm run test:kicad

Output: output/pcbnew.js, output/pcbnew.wasm

See build.md for detailed build documentation.

2. wxWidgets Test Apps (Local)

Build standalone wxWidgets test apps for feature testing:

# Build wxWidgets for WASM
./scripts/build-wxuniversal-wasm.sh

# Build test apps
./scripts/build-wasm-test.sh

# Run wxWidgets tests
cd tests && npm install && npm test

Output: tests/wasm-app/standalone/

Prerequisites

For KiCad Build (Docker)

  • Docker Desktop with 16GB+ RAM allocated
  • 10+ GB disk space for build cache

For wxWidgets Build (Local)

  • Emscripten SDK 4.0+
  • Node.js 18+ (for tests)
# macOS
brew install emscripten node

# Initialize submodules
git submodule update --init --recursive

Testing

cd tests
npm install

# Run all tests
npm test

# Run specific tests
npm run test:kicad          # KiCad tests only
npx playwright test menu    # Menu tests only

See tests/README.md for test documentation.

Current Status

  • wxWidgets WASM: Core widgets working (menus, dialogs, grids, trees, OpenGL)
  • KiCad PCBnew: Builds and loads in browser, canvas rendering working
  • In Progress: Testing wxWidgets features used by KiCad

Documentation

License

KiCad is GPL-3.0. This project follows the same license.