Skip to content

fix: send the model to the slicer as it is, with the designer's supports - #303

Merged
DMontgomery40 merged 5 commits into
mainfrom
fix/keep-print-orientation
Nov 4, 2026
Merged

DMontgomery40 merged 5 commits into
mainfrom
fix/keep-print-orientation

Conversation

@DMontgomery40

@DMontgomery40 DMontgomery40 commented Nov 4, 2026 •

Copy link
Copy Markdown
Owner

David's AirPods Max desk hanger printed upright with no supports. The design pass planned it on one 80 mm side, but Counterpart's print step ran lay_flat, which put it back on its desk-side bottom. It then sliced with the stock 0.20mm Standard preset (enable_support 0), so the 40 mm top jaw printed in mid-air. David: "WE ARE JUST A BRIDGE. JUST SEND THE THING TO SLICER, LET IT SLICE IT, PRINT WHAT THE SLICER PUKED OUT."

Now Counterpart sends the model to the slicer as it is. Following David's choices, the slicer orients it and the designer chooses supports:

  • No more lay_flat. Every STL goes to slice_stl with orient: true, so Bambu Studio's own auto-orient places it. A 3MF keeps its placement, as before.
  • Supports come from the designer. A design pass answers supports (enabled, plus tree(auto) or normal(auto)). Counterpart stores it with the model and sends it as enable_support / support_type, including when supports are off. A model with no choice (scans, older designs, published models) leaves the printer profile in charge, as before.
  • Other slicers get the model as it is. orient and the support arguments go only to Bambu-compatible slicing. mcp-3D-printer-server ignores orient on PrusaSlicer and Cura and refuses support arguments there, so a supports choice on that route gets the same refusal.
  • An MCP without those arguments is refused before slicing, with the existing print-settings-unsupported refusal: "Update bambu-printer-mcp in Settings → Printers so Counterpart can send this design's supports to the slicer." The support arguments are part of the slice-cache key and the estimate key.

Depends on:

#298 port (first commit, d098003). #298 merged into feat/testflight-readiness, not main. This PR brings its runtime guidance to main for invocation.ts, touchup.ts, mcp-client.ts, bound-fusion.ts and their tests only; provider-runner and project-worker changes stay on the release branch. The hunk that overlaps #298 when the branches are combined is one rule line in invocation.ts: #298's "This pass exports one STL … re-orients it with lay_flat … not kept yet" becomes the bridge wording. The supports schema field is a separate block after ask.

Overlap with the release branch's provider commit c59d83b (kept on release by df5facec): in runner.ts, that commit changes interface ResultEvent to export interface, the ProjectWorker type and the inv.worker call. This PR doesn't edit those lines. Its runner.ts hunks are the TouchupSupports type and TouchupResult.supports near the top, and the supports parse at the start of structured().

Known risk of auto-orient, recorded for David:

  • On the stove gap filler, slice_stl with orient: true failed with Studio's "empty layer" error. That is why lay_flat stayed primary in KAN-223. Such a model is now refused with Studio's own words before anything reaches the printer, rather than printed.
  • Research this session found that Printago, MakerWorld cloud slicing and 3DPrinterOS keep the designed or uploaded orientation, and that Studio's --orient minimises overhang area without checking cantilevers. If David prefers the designer's pose, it's a one-line change to orient plus the worker rule.

Checks on 8c3ec95, with Codex clean on that exact head:

Created with Claude Opus 5.5 in Claude Code.

🤖 Generated with Claude Code

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T12:33:52.851170Z 8c3ec95 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@DMontgomery40

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: bebaa791ae

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@cursor

cursor Bot commented Nov 4, 2026

Copy link
Copy Markdown

Reviewed SHA: bebaa791aefb550c1799275976416f08af56ad14 (matches PR head at review time)

Verdict: Ready

Findings: None

Validation: Reviewed git diff origin/main...bebaa791aefb550c1799275976416f08af56ad14 (20 files). Ran npm ci && npm test in services/printer-handoff (115 passed, 5 skipped). Ran npm run build in services/companion and node --test tests/objects-print.test.mjs (23 passed, including the new supports/orient bridge test). scripts/ci_local.py reports printer-handoff/printer-handoff node 22 PASS for this tree.

@DMontgomery40

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. What shall we delve into next?

Reviewed commit: 2f6bfd810c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@DMontgomery40

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: 353f3c24bb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@DMontgomery40
DMontgomery40 force-pushed the fix/keep-print-orientation branch from 353f3c2 to 54e7b83 Compare November 4, 2026 12:29
@DMontgomery40

Copy link
Copy Markdown
Owner Author

@codex review

DMontgomery40 and others added 5 commits November 4, 2026 05:30
Design passes read the printer MCP's fdm_design prompt and the live
printer facts, and the Fusion pass proxy passes the read-only printer
tools through. Ported from e7d5f6d (#298, merged into
feat/testflight-readiness) for invocation.ts, touchup.ts, mcp-client.ts,
bound-fusion.ts and their tests only. The provider runner and
project-worker changes stay on the release branch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
David: "WE ARE JUST A BRIDGE. JUST SEND THE THING TO SLICER, LET IT
SLICE IT, PRINT WHAT THE SLICER PUKED OUT." He chose the slicer's own
auto-orient and the designer's supports choice.

- The print step no longer runs lay_flat. Every STL goes to slice_stl
  with orient: true, so Bambu Studio's own auto-orient places it. A 3MF
  keeps its placement, as before.
- A design pass answers supports (enabled, with tree(auto) or
  normal(auto)). Counterpart stores it with the model and sends it to
  slice_stl as enable_support/support_type, off included. A model with no
  choice leaves the printer profile in charge, as before.
- An installed MCP without those arguments gets the existing
  print-settings-unsupported refusal before anything is sliced. Support
  args are part of the slice-cache key and the estimate key.
- The worker rules say what the print step really does now.

Needs bambu-printer-mcp 1.1.54 / mcp-3D-printer-server 1.2.28 for the
support arguments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mcp-3D-printer-server applies orient (and every Bambu option) only on its
Bambu Studio/Orca route, and PrusaSlicer and Cura refuse the support
arguments. A non-Bambu slicer now gets the model as it is, and a supports
choice there gets the print-settings-unsupported refusal before slicing.
The design worker's check slice now uses orient true and its own
enable_support, the way the print is sliced. The opt-in real-server test
expects no lay_flat.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rovider hunk

A kept slice is reused only for the same supports choice: profile
default, off, tree and normal each slice. The runner reads the answer's
supports without editing ResultEvent, which the release branch's
provider commit c59d83b changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: 54e7b83f5f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@DMontgomery40

Copy link
Copy Markdown
Owner Author

@codex review

@DMontgomery40
DMontgomery40 force-pushed the fix/keep-print-orientation branch from 54e7b83 to 8c3ec95 Compare November 4, 2026 12:32
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: 8c3ec95a73

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@cursor

cursor Bot commented Nov 4, 2026

Copy link
Copy Markdown

Reviewed SHA: 8c3ec95a73fab883db3855cdf9c3c53e033fba85 (matches PR head)

Verdict: Ready

Findings: None.

Validation: Read diff main...8c3ec95; traced companion designedSupports / touchup persistence, printer-handoff slice path (removed lay_flat, orient: true, support args, slice-cache key), and bound-Fusion printer-tool proxy. Built and ran services/printer-handoff tests (bound-fusion.test.mjs, printer-handoff.test.mjs — 81/81 pass). Built companion packages and ran objects-print.test.mjs subtest "the designer's supports choice reaches the slicer as it is…" (pass). Attempted broader companion touchup tests; failures were environment PIL missing, not this diff.

@DMontgomery40
DMontgomery40 merged commit a72b6d4 into main Nov 4, 2026
4 of 6 checks passed
@DMontgomery40
DMontgomery40 deleted the fix/keep-print-orientation branch November 4, 2026 12:49
DMontgomery40 added a commit that referenced this pull request Nov 4, 2026
Merged cleanly: #303's runtime design guidance in printer-handoff mcp-client.ts
sits beside the remote passthrough; #302's progress was resolved in the last merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant