bridge: drive the Z1 from the desktop build — discover, identify, upload a verified .nc
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
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
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.5returns the machine's IP andM482.4its 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 prefixMakera 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.pyandController.pydescribe 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
- Discover a machine on the LAN, and in AP mode.
- Identify it —
M482.5/M482.4— and show the user which machine they are about to talk to. - Upload a
.ncthat 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. - 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.4R10 (jog / DRO / MDI) — refused today because there is no bridge, with this as the named gate.§14.4R1 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
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from SlyWombat/CaseMaker
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
enhancement
Difficulty 4/5 Over a week Newbie friendliness 18/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 8/100
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 18/100
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 25/100
All issues in SlyWombat/CaseMaker
Similar issues
-
Remove unused dependenciesPossibly taken @alastair-smith claimed this today. Openchore other
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
alastair-smith/card-games#384 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
code-yeongyu/senpi#5571 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nexu-io/open-design#9262 · 1 comment ·
Maintainers usually reply within 1 day
-
friction
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
kentcdodds/kody#4753 ·
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 62/100
lingdojo/kana-dojo#33508 · 1 comment · 5 reactions ·
Maintainers usually reply within 1 day