In developmentNot released yet — features and data may change without notice.
CHANGELOG
Changelog
Kill the biggest risk first — which is why the pipeline came before the UI. Built in the open; measured numbers are reported as they are.
Phase 0 · PoCPoC-A · PoC-B done
Simulator
SimulatorSite
The parts with screens finally move
The servo, the NeoPixel, the LCD, the seven-segment display and the OLED were drawn correctly and never moved. Each now reads its protocol back out of pin timing or the I²C stream and shows what the sketch sent it.
Angle from the pulse width, colour from WS2812 bit timing, text from PCF8574 nibbles, digits from the TM1637's two-wire frames, and the OLED picture from the SSD1306 framebuffer
An LED under analogWrite is a brightness, not a flicker — Fade, which is open without an account, now actually fades
The simulator waits for the breadboard to wire its parts up before it starts, so what a sketch draws once in setup() — a counter's 0000, a clock's time — is no longer missed
Five new examples: knob turns a servo, night light, motion lamp, parking sensor, button counter. The first two need no account
The fourteen String sketches, which drive nothing, moved to the end of the ladder and fold away — still listed, still linkable
Parser: an ultrasonic sensor driven by hand through TRIG_PIN and ECHO_PIN came out as two half-wired sensors, so nothing attached to either and the distance read zero forever
Example uno_bme280_oled drew nothing because it never called setTextColor — the same code is a blank screen on real hardware too
A virtual device and a slider for the PIR sensor
The hero is the L1 breadboard now, not a photograph of a finished PCB — the largest picture on the site was showing the one rung that is not open. It carries no ground of its own, so the board sits on the page's paper rather than inside a rectangle
The playground's next-step card promised Gerbers with the board stage closed. It promises verification now, and the board rung stays on the list marked as not open
The last two steps of the home demo are marked as not open. The paragraph said so; the cards did not
Five project examples opened without an account — eleven of thirteen were padlocked
Home: the eight-pass reference table folds away (500px of specification in the middle of a landing page)
uno_temp_relay was missing setTextColor too, so its OLED was blank as well
The remote example had never worked. IRremote 4.7.1 keeps the old API only as a stub that prints a deprecation banner, so it compiled and decoded nothing. Rewritten against the 4.x API, with a remote drawn on the breadboard whose keys play real NEC frames onto the receiver's pin
Nor had the SD logger. The MPU-6050 driver spins in setup() waiting for a reset bit to clear, so the simulator ran perfectly and the screen showed nothing at all
A virtual microSD card with a FAT16 volume on it. SD.begin() succeeds and motion.csv actually grows
The backend suite refuses to run against a database whose name does not end in _test, and says why — it had been quietly creating tables in the development database
The founding concept doc still described the ordering and institutional legs that were cut in September
Scope
SiteDocs
Only learning and making remain
Pages and copy about ordering, institutions and contracts are gone from the site. ibouPCB ends at verifying a sketch and producing the board files.
Removed the educators page, the Education tier and the classroom guide
The project's "Ready to order" page is now "Output files" — no fab links, just the file list and a checklist
Removed the ordering guide; cleaned ordering and contract wording from home, pricing, about, terms and privacy
Landing: light-mode card edge contrast, one section spacing scale, example cards spread across the curriculum
L1 breadboard: two-pin parts like LEDs now face the board with their legs, and parts with side or bottom pins are wired around the body instead of through it — checked across all 48 examples
The missing half of every button example: from the sketch's pinMode, a pull-up button gets its far leg on GND, otherwise 5V plus an auto-inserted 10 kΩ pull-down with the reason in its caption
Parser: for-loop ranges and pin arrays expand to their pins, and a pin with no name or library is read from how it is used (analogRead → pot, digitalRead → button, digitalWrite → LED) — the 8 examples that showed a bare board now have parts
L1 breadboard: a 330 Ω series resistor for every LED, and 5V/GND tapped from two rails — 25 of the 39 examples with parts now draw with zero crossings
L2/L3 expander: a button read with `pinMode(INPUT)` is built with a pull-down and its contact on VCC instead of the catalog's pull-up (a pressed-is-HIGH sketch used to come out inverted on the board); the golden pattern accepts either
L1 breadboard: the part row order joins the crossing search — 28 of the 39 examples with parts now draw with zero crossings
Site redesign
SiteDocs
The "bench paper & copper" design system and new pages
Dropped the dark-glass look for ink and copper traces on paper. Verification states are solder-mask green, auto-inserted parts are copper, consistently.
Landing page rewritten — datasheet-style board drawing, 4-level rail, three-gate panel, 8-pass table, live example cards
New pages: About · For educators · Changelog · Playground · Examples · Catalog · Guides · Pricing · Legal
"Your code runs unchanged" is now a test, not a slogan. The same sketch is recompiled for the target with pins.h applied and the server compares pin activity before and after.
P8: Uno → Pico measured at 22 s, 6 pins compared. A pin toggled on the source must toggle on the target; PWM pins direction-only plus a warning
Found: analogWrite(-508) is PWM on AVR but clamps to 0 on arduino-pico — core differences reported as warnings
I²C address-clash ERC (0x68 MPU6050 + DS3231). 5 more examples, all 4 targets PASS, tests 20 → 96
Corpus importer: on 4 Olimex ESP32 boards (Apache-2.0) confirmed EN 10k pull-up · EN 1 µF · 3V3 bulk 4.7–22 µF. No external IO0 pull-up on any of the 4 → severity under review. Human-curated merge, no auto-overwrite
PoC-B · L0/L1
SimulatorInfra
Browser simulator (logic gate) and breadboard view
Zero server-side simulation cost. arduino-cli builds the .hex, avr8js runs it in the browser, and the server re-derives expected pin directions from the sketch and checks them against browser evidence before passing the logic gate.
Compile worker: arduino-cli + AVR · arduino-pico · arduino-esp32 cores (GPL → separate image). blink: flash 1028 B, 2.5 s sim = 0.38 s
The client never sets a gate itself — it submits evidence and the server decides
L1 breadboard: @wokwi/elements draws the modules inferred from code wired to an Uno. LEDs and buzzers follow pins, buttons drive them
PCB 2D viewer: KiCanvas renders the real .kicad_pcb. Downloads for Gerber zip · BOM · CPL · KiCad · pins.h
PoC-A · P7
EDAVerification
ESP32 PoC board — Freerouting completes, DRC 0
Can one .ino become a fab-ready Gerber with no human hands? It took eight rounds.
ESP32 temperature + relay example, 32 parts / 21 nets: placed at 83×46 mm, 0 unconnected on the second routing pass, DRC 0, 11 Gerber files · drill · CPL