Propose a change
Name Last commit message Last updated
gui.png Migrate asset from Helium wiki 1mo ago
install.sh Add adompkg installer files 1mo ago
package.json Add adompkg installer files 1mo ago
page.json Remove internal identifiers from page.json 10d ago
README.md Initial commit: app/wire-bender 1mo ago
SKILL.md Add adompkg installer files 1mo ago
uninstall.sh Add adompkg installer files 1mo ago

Wire Bender — operator GUI

Browser GUI for queueing and stepping through wire-bending runs on the Adom shop floor's wire-bender machine. Reads a Hydrogen Layout JSON exported from the 3D Editor and turns it into a point-and-click workflow: pick wires, build a Session Queue, hit Next Bend, and the machine bends the wire. Replaces the manual "paste G-code into device-debug" loop entirely.

What it does

  • Loads a Hydrogen Layout JSON (uploaded or pasted) and shows every wire in a VS Code-style sidebar.
  • Renders two 3D views — a closeup of the active wire and an overview of all breakouts + wires — both painted on a dark navy gradient with a Fusion-style ViewCube.
  • Builds a Session Queue with checkboxes, shift-click ranges, and a master select-all. Or just click a wire and hit Start Session — the queue auto-populates.
  • Next Bend — one button does everything: generates G-code on the server, updates the 3D preview, and sends the G-code directly to the toolboard over WebUSB. The operator cuts the wire when the machine stops, then clicks Next Bend again.
  • WebUSB toolboard integration — pairs with the Adom Toolboard (RP2350, VID 0x4144) via the browser's native USB API. No copy-paste, no debug dashboard.
  • Toolboard config editor — loads the Klipper-style motor/driver/encoder config from the server's config.json by default. Editable in a modal; session overrides don't touch the default. Save As writes named configs to the server.
  • Per-wire Z-layer overrides — the layer table lets you raise/lower individual horizontal segments to deconflict overlapping routes.

AI-drivability (v0.3.0)

Every UI action has an HTTP endpoint that's curl-scriptable end-to-end:

  • GET /api/session/state — current snapshot (queue, current/next, progress)
  • POST /api/session/start, POST /api/session/next, POST /api/session/quit
  • GET /api/toolboard/config — default toolboard config (from config.json)
  • GET /api/toolboard/configs — list saved config files
  • POST /api/toolboard/config/save — save a named config (cannot overwrite default)
  • POST /api/console — UI forwards console.log/warn/error + window.onerror here
  • GET /api/console — replay the last 500 UI-side log entries
  • POST /api/shutdown — graceful exit
  • GET /favicon.svg — monochrome wire-glyph favicon

Static assets served with Range-request support for video seeking.

Demo

A 1:48 captioned walkthrough is bundled at demo/media/wire-bender-walkthrough.webm.

Prerequisites

  • Python 3.8+ (tested on 3.12)
  • pip install -r requirements.txt (one dep: numpy)
  • A Chromium browser (Chrome, Edge) for WebUSB support

Quick start

git clone https://github.com/adom-inc/wire-bender
cd wire-bender/last-wire-bender-app
pip install -r requirements.txt
python3 server.py
# open http://localhost:8892/ in Chrome

Operator workflow

  1. Open the app, click a wire (or check several)
  2. Click Start Session — auto-queues if empty
  3. Click ⎔ Connect Device to pair the toolboard
  4. Click Next Bend — machine purges, then bends
  5. Cut the wire, click Next Bend again
  6. Repeat until the queue is empty

Source

github.com/adom-inc/wire-bender — the GUI lives in last-wire-bender-app/. Private, org-scoped to Adom.