No description
  • Rust 97.8%
  • JavaScript 1%
  • WGSL 0.5%
  • Python 0.4%
  • HTML 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Rogier Colijn fdcfa253bf
Some checks failed
CI / test (ubuntu-latest) (push) Has been cancelled
CI / test (windows-latest) (push) Has been cancelled
CI / wasm (push) Has been cancelled
2.0.27: 2D renderer works on WebGL2 (uniform Globals padded to 32 bytes); shader tests check uniform sizes
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 21:31:43 +01:00
.cargo 2.0.24: online updates from colijn-core (craft.colijn.space): footer notice, Preferences › Updates, Help › Check for updates; full and base follow their own package 2026-10-23 12:02:15 +02:00
.github/workflows M0: workspace foundations, docs, tooling and KiCad corpus generator 2026-10-10 18:52:57 +02:00
apps 2.0.26: shared UI from colijn-core 0.2.0, retro mode, tabbed searchable Preferences, copy as a picture, smooth 3D copper 2026-10-24 22:46:05 +02:00
crates 2.0.27: 2D renderer works on WebGL2 (uniform Globals padded to 32 bytes); shader tests check uniform sizes 2026-10-30 21:31:43 +01:00
docs Docs: handoff for 2.0.26 (colijn-core UI, Preferences, copy as a picture, 3D bake, known issues); ADR-024; stale UI references 2026-10-25 00:30:22 +02:00
marketing Demos driven by viewer steps instead of simulated input 2026-10-18 17:02:15 +02:00
rules Machine names colijnpp-*, .colijnpp projects; About and legal notice; working links 2026-10-14 12:03:00 +02:00
xtask Power integrity: DC voltage drop of a power net (feature pi); base and full builds 2026-10-21 17:05:09 +02:00
.editorconfig M0: workspace foundations, docs, tooling and KiCad corpus generator 2026-10-10 18:52:57 +02:00
.gitattributes Rename to Colijn-ODB throughout; dist/ layout with Python run scripts 2026-10-11 17:31:13 +02:00
.gitignore Python via uv (pyproject, .python-version, uv.lock); run-web scripts fall back to uv; document poppler 2026-10-12 22:50:24 +02:00
.python-version Python via uv (pyproject, .python-version, uv.lock); run-web scripts fall back to uv; document poppler 2026-10-12 22:50:24 +02:00
AGENTS.md 2.0.26: shared UI from colijn-core 0.2.0, retro mode, tabbed searchable Preferences, copy as a picture, smooth 3D copper 2026-10-24 22:46:05 +02:00
ATTRIBUTION.md Rebrand to Colijn++, version 1.0.0 2026-10-14 11:26:52 +02:00
Cargo.lock 2.0.27: 2D renderer works on WebGL2 (uniform Globals padded to 32 bytes); shader tests check uniform sizes 2026-10-30 21:31:43 +01:00
Cargo.toml 2.0.27: 2D renderer works on WebGL2 (uniform Globals padded to 32 bytes); shader tests check uniform sizes 2026-10-30 21:31:43 +01:00
CLAUDE.md M0: workspace foundations, docs, tooling and KiCad corpus generator 2026-10-10 18:52:57 +02:00
clippy.toml M0: workspace foundations, docs, tooling and KiCad corpus generator 2026-10-10 18:52:57 +02:00
pyproject.toml Machine names colijnpp-*, .colijnpp projects; About and legal notice; working links 2026-10-14 12:03:00 +02:00
README.md Update README.md 2026-10-29 19:14:51 +01:00
rust-toolchain.toml M0: workspace foundations, docs, tooling and KiCad corpus generator 2026-10-10 18:52:57 +02:00
rustfmt.toml M0: workspace foundations, docs, tooling and KiCad corpus generator 2026-10-10 18:52:57 +02:00
uv.lock Machine names colijnpp-*, .colijnpp projects; About and legal notice; working links 2026-10-14 12:03:00 +02:00

Colijn++

Colijn++ is an open-source ODB++ parser, viewer and design reviewer, written in Rust only. It opens an ODB++ product model (a folder, .zip, .tgz/.tar.gz or .tar), checks it against design-rule decks derived from IPC and ECSS standards, and gives reviewers a viewer in the style of Altium Designer: toggle layers, measure, inspect features, highlight nets, and leave tagged comments anchored to the design.

It runs natively on Windows, macOS and Linux (egui on wgpu) and in the browser (the same Rust compiled to WebAssembly). There is no webview, Electron or JavaScript UI.

Status: parser, viewer, review workflow (comments, measurements, projects, read-only interactive viewer exports) and the first rule decks work; see docs/roadmap.md.

Get it running

cargo xtask dist        # needs Rust and trunk; see docs/development.md

Everything to run or hand out lands in dist/: dist/exe/ (desktop app; the CLI is built on request), dist/web/ (browser app) and run-web.bat / run-web.sh, which serve the browser app with Python on computers that do not allow other programs.

The desktop app updates itself from craft.colijn.space (Help › Check for updates; a new version shows in the footer). The shared code for that is in colijn-core on the Git server, which Cargo fetches over SSH; see docs/decisions.md › ADR-023.

Components

Part What it is
colijnpp-odb Standalone ODB++ reader: containers (folder, zip, tar, gzip, UNIX .Z), every entity in the ODB++ 8.1 product model, diagnostics with file and line. No workspace dependencies; publishable on its own.
colijnpp-step Standalone STEP reader: the board's 3D model (B-rep assemblies) to a coloured mesh for the 3D view.
colijnpp-board The normalized board model: integer nanometre coordinates, resolved symbols, text and barcodes, step-and-repeat.
colijnpp-tess Board features to GPU geometry (capsules and triangles).
colijnpp-design An opened design: nets (also of planes), components and pins, stack-up, picking, snapping, labels, trace length, revision compare.
colijnpp-drc Rule engine and rule decks (ECSS-Q-ST-70-12C; IPC decks kept private).
colijnpp-review Comments, tags, measurements, waivers; projects (.colijnpp) and the interactive viewer export.
colijnpp-render CPU reference renderer (the test oracle) and the wgpu renderer.
colijnpp-engine Session (design, drawn geometry, review, rule findings) and command registry: every document change is a command.
colijnpp-ui-egui The Altium-style user interface.
apps/colijnpp, apps/colijnpp-cli, apps/colijnpp-web Desktop app, headless CLI, browser build.

Quick start

rustup target add wasm32-unknown-unknown   # once
cargo xtask ci                             # fmt, clippy, tests, layering, wasm check
cargo run --release -p colijnpp -- design.zip   # viewer (or drop a .zip/.tgz/folder on the window)
cargo run --release -p colijnpp-cli -- snapshot design.zip board.png   # headless render
cargo run --release -p colijnpp-cli -- --help                        # review projects from scripts
cargo xtask corpus                         # generate the KiCad ODB++ test corpus (needs KiCad 9+)
cd apps/colijnpp-web && trunk serve        # browser build at http://127.0.0.1:8766

Full setup, including Windows prerequisites and KiCad: docs/development.md.

Documentation

Read For
AGENTS.md Rules for contributors and AI agents. Read first.
docs/architecture.md Crate map, layering, data flow, the engine/UI seam
docs/roadmap.md Milestones, exit criteria, current focus
docs/odbpp-parser.md Design and compliance plan for the parser (milestone 1)
docs/design-rules.md Rule engine, deck format, IPC/ECSS coverage
docs/ui-design.md The Altium-style UI: layout, panels, tools, tokens
docs/development.md Build, test, corpus, web build
docs/contributing.md Clean-room rules, tests, style, commits
docs/decisions.md Architecture decision records

Standards and trademarks

ODB++ is a trademark of Siemens; its specification is freely available from odbplusplus.com. ECSS standards are public and the ECSS rule decks are open source. IPC standards are not public: IPC-derived rule decks are closed source and not part of this repository. Colijn++ is an independent implementation, not affiliated with or endorsed by Siemens, IPC or ESA/ECSS. It implements the published ODB++ format and encodes numeric limits from standards; it does not reproduce their text. See docs/contributing.md › Clean-room.

License

Rogier can do whatever. External License unknown.