bridge: drive the Z1 from the desktop build — discover, identify, upload a verified .nc

Closed
#255 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
tauri, typescript
Domain
backend, desktop

Research direction

Start with /Fabrication.md §5.7 and /Makera-Parity.md, then complete the blocked platform seam in #181. Before opening CarveraController files, write a protocol description in the repo from protocol facts only; implement and test from Windows. Done means desktop-only discovery and identification, verified .nc upload, and honest controller status reporting, with no unverified-send path.

Written by the indexing model from the issue text.

Description

enhancement fabrication

What this is

Drive the machine from the desktop build: discover it, confirm it is the right one, upload a verified .nc, and report what the controller says back.

It has never been filed. CNC-4 was named "Bridge, camera, V-carve" and contained no bridge issue, while /Fabrication.md §5.7 describes the work in detail and #181 exists specifically to make room for it. That gap is why "we do not drive the machine" kept getting used as a premise elsewhere — most recently in /Makera-Parity.md §14.4 R1 — with nothing to point at.

Blocked by #181 (the platform seam). §5.7's instruction is explicit: build the seam before the bridge, so bridge work does not scatter platform checks through the UI.

What is already known — do not re-derive it

From /Fabrication.md §5.7 and /Makera-Parity.md:

  • Tauri-only. The web build cannot open a socket; this is the capability that makes the desktop build exist (#181's table).
  • Transport is WiFi (decision 10), with a transport interface behind the protocol layer so USB can follow.
  • It must be developed and tested from Windows. WSL2's NAT will almost certainly break UDP discovery, and the Tauri build has to run on Windows anyway (CLAUDE.md).
  • M482.5 returns the machine's IP and M482.4 its MAC — that is how we confirm we are talking to the right machine rather than a neighbour's.
  • The connection surface is documented in Z1/QuickStart: USB, the machine's own AP-mode hotspot (SSID prefix Makera Z1), or a shared local network, with WiFi credentials pushed over Bluetooth from Studio or the mobile app.
  • There is no protocol to reverse-engineer. Makera publish MakeraInc/CarveraController; WIFIStream.py, USBStream.py, XMODEM.py, CNC.py and Controller.py describe transport, discovery and file transfer.

⚠ Licence constraint — it binds before anyone opens those files

CarveraController is GPL-3.0; Case Maker is Apache-2.0. GPL-3.0 code cannot be copied or adapted into this repo. CarveraProfiles is worse: no licence at all, which means all rights reserved.

Protocol facts — port numbers, framing, command sequences — are interoperability information and fine to learn and reimplement. Code, comments and files are not. Write the bridge from a written-down description of the protocol, not with the Python open beside it. Whoever does this should produce that written description first, in the repo, and implement from it.

Scope for a first pass

  1. Discover a machine on the LAN, and in AP mode.
  2. Identify it — M482.5 / M482.4 — and show the user which machine they are about to talk to.
  3. Upload a .nc that has already passed the verifier (#174) and the gated action (#206). Nothing reaches the machine that has not been verified; that is the whole architecture of CNC-2.
  4. Report status back honestly, including the machine refusing something.

Explicitly out of a first pass: jog, DRO, MDI, pendant (§14.4 R10), and anything that moves the machine from the app without a file.

What this unblocks when it lands

  • §14.4 R10 (jog / DRO / MDI) — refused today because there is no bridge, with this as the named gate.
  • §14.4 R1 part 3 — connect / discover / home as real first-run steps, on the desktop build only (#254 covers the web-capable halves now).
  • #212's read of Makera's feeds/speeds SQLite, and #131's filesystem board library, both of which ride the same platform seam.

Do not

  • Do not start before #181. The seam is the point.
  • Do not copy from CarveraController. Read it, write down the protocol, implement from the writing.
  • Do not send anything unverified, and do not add a "send anyway" path.
Dominant language
TypeScript
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from SlyWombat/CaseMaker

All issues in SlyWombat/CaseMaker

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.