app / wire-bender
!

Not installable via adompkg

This app has no published release. adompkg install kyle/wire-bender will not work until a maintainer publishes a tarball with install.sh and uninstall.sh.

See the publishing docs for the package.json schema and tarball layout required to ship this app.

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.