Commit Graph
11 Commits
Author SHA1 Message Date
matthewtrahan d89f72f0df engine: sway brace tines kiss the part's face (kissEnds), and the material's tine bite is gone -- one SWAY.tineReach 0.3 gates placement; Material tooltip no longer claims PETG shrinks a bite; same braces and tines on 16 cases x PLA/PETG, slices identical on 30 of 32 (lighthouse Y90 notch: +-0.13 mm2) 2026-10-03 15:14:03 -05:00
matthewtrahan 254b9dfa02 fusion: review nits -- pin the Y-up mapping (print = x, -z, y) and the -Z / near-axis beds 2026-10-01 07:40:54 -05:00
matthewtrahan b87759d404 fusion: the print frame no longer turns the part 90 degrees -- an XY bed hands the engine the part as the site sees it (v0.6.2)
PrintFrame.from_bed took x = n x ref, so a bed on the XY plane gave print x = world
+Y, y = world -X. The engine isn't the same under a turn about z: the headset got 95
walls / 144 tines in Fusion, 93 / 140 on the site and CLI. x is now ref projected onto
the bed, so an XY bed is the identity frame. Chairs, lampshade, bunny, gree, bear,
zombie, lighthouse and the headset now match the CLI.
2026-10-01 07:40:54 -05:00
matthewtrahan cc38bfa170 fusion: review nits -- 1 tine is singular; the async test matches the (N bodies) form 2026-10-01 07:34:05 -05:00
matthewtrahan 3ea14ad83f fusion: the headline counts walls, not bodies -- touching walls weld into one body
Chairs read "3 fins" where the site makes 6 walls; the lampshade "26 fins" for 74.
The headline now counts walls the way the site does (braces + props) and names the
body count beside it when it differs: "6 walls (3 bodies), ...".
2026-10-01 07:34:05 -05:00
matthewtrahan ff52ae9792 fusion: ticking sway braces enables its fields; review fixes for 018
The dialog re-synced only on the Tines toggle, so ticking Add sway braces left
Grip from / spacing / depth greyed out (already so on main). The earlier-run note
says support bodies (braces are counted there too); README names Sway brace N.
The split test now runs on a part with fins, braces AND a pad and checks the fin
and pad blocks are byte-identical to the braces-off run; host_report's brace
wording is pinned.
2026-09-30 13:18:37 -05:00
matthewtrahan 30a402b742 plugins: sway braces come back as their own block -- Fusion names them Sway brace N, not fins (local issue 018)
The entry's soup was fins+braces | pad, split only by finTriangles, so Fusion built
a braced 150 mm post as 4 'Support fin' bodies and headlined 4 fins. Now
finTriangles is fins only and swayTriangles follows it (fins | braces | pad); Fusion
splits three ways and counts fins from fins alone. Readouts (host_report) name sway
braces apart from walls. Fusion's Grip from / Brace tine spacing now need Tines too,
as on the site. Fusion add-in 0.6.1.
2026-09-30 13:18:37 -05:00
Mitch MilamandClaude Opus 5 d16896df0f fusion: a checkbox for sway braces
The braces reach the engine through #127; this is the dialog for them. Off by
default, in their own group with Grip from / Brace tine spacing / Brace depth,
enabled only while the checkbox is on. The readout counts them apart from the
fins -- they hold a tall part's sides, not an overhang, so folding them in
would claim overhangs are served that nothing is under -- and says why none
could stand when they were asked for, including on the "No fins" path, which a
tall part with no overhangs takes.

engine_host.DEFAULTS needed `sway` too: it is an allow-list and drops anything
not in it, so the option would have died there even with the entry point
fixed. That is the same trap twice, now covered by a test on each side.

Tests: 38 pass against the built bundle (34 before). A tall post gets braces
and no fins, brace tine spacing and "grip from" change the result, a 20mm post
reports why it got none, and the checkbox maps onto the engine option while the
fields are ignored with it off.

Manifest 0.5.0 -> 0.6.0. Not yet run inside Fusion.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-30 08:11:47 -05:00
matthewtrahan 5b3dc35207 fusion: the add-in has been run on an Apple-silicon Mac
v0.5.0 ran in Fusion 2705.1.25 on Apple silicon, so the README's install
section, the release notes and plugins.yml no longer call macOS untested.
Intel Macs still are.
2026-09-29 22:15:34 -05:00
MorbidJ-hubandClaude Opus 5.5 08fadfd8fe fusion: package SupportFins.zip and build it in CI
On top of the palette engine host. Since the add-in no longer carries anything
native, packaging is one zip for Windows and macOS.

- build.py --zip writes build/SupportFins.zip (the add-in folder with the
  engine bundle; no settings.json, caches or editor files).
- plugins.yml: a fusion job builds the bundle and the zip, runs the tests
  (Node runs the engine) and uploads the zip; publish adds it to
  plugins-latest, noted as run on Windows and untested on macOS.
- README: install from the zip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 22:15:34 -05:00
MorbidJ-hubandClaude Opus 5.5 cdf29ade53 fusion: Insert Support Fins, engine run in a hidden palette (v0.5.0)
The Fusion add-in, cut down to Insert Support Fins and moved off mini-racer.

mini-racer crashes Fusion on macOS (Fusion ships its own libv8 and macOS merges
V8's weak symbols across the two copies), so the website's engine now runs in
Fusion's own browser, in a hidden palette, as the engine-test spike on #83
showed. Nothing native ships: one folder for Windows and macOS.

Python never waits on the palette (its JavaScript runs on Fusion's main
thread). The palette pulls the latest job ('next'), runs computeFinsB64 and
posts the answer ('result'); a newer job replaces one not yet picked up, and a
late answer for an old one is dropped. Python nudges it with
sendInfoToHTML('wake'); the palette also polls (100 ms with the dialog open,
1 s without). When an answer lands, a custom event refreshes the readout and
calls doExecutePreview(), as sway_command did for picks.

- engine_host.py: PaletteEngine, encode_job/decode_result; compute_fins()
  keeps its signature and runs the same bundle under Node, for the tests. The
  mini-racer vendoring, first-run download and SHA pins are gone.
- palette/engine.html + engine.js: the hidden page (a status line if shown).
  Its URL is a file:/// URI: on Windows a bare path reached the browser as
  file:///C:%5CUsers... and the page never loaded.
- fins_command.py: _compute is asynchronous (pending, then _finish);
  Insert stays disabled until the fins are in.
- sway_core/ and Insert Sway Brace are dropped, since sway braces are moving
  onto the shared engine; bodies tagged as braces by 0.4.x still count as
  supports.
- build.py only bundles the engine here; packaging and CI follow separately.

Run in Fusion on Windows (2705.1.25): palette ready while hidden; L-bracket at
35 deg gets 4 fins / 20 tines / bed pad with a live preview, a settings change
re-runs it, Insert adds the tagged bodies. Not yet run on a Mac.

Tests: 34 pass (palette protocol, asynchronous dialog, engine under Node).
The sphere test now checks the pad is its own body: since the small-tube and
raster-wall work the engine may add walls under a sphere too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 21:17:59 -05:00