matthewtrahan
d0a27be131
plugins: Separate walls is Auto / On / Off, Auto on for resin tines -- the site ticks its box when Vertical (resin) tines is picked, but a dialog host stores what it holds and sends it every build, so a checkbox defaulting off left resin plugin prints with joined walls the site prevents ( #309 ). Auto (the default) follows tineDir; On/Off force it; the CLI takes --separate-walls <auto|on|off> and MCP the same strings; direct engine callers may still pass true/false
2026-10-23 08:45:35 -05:00
Boris
52e1fde4aa
Expose Separate walls in shared plugin interfaces
2026-10-23 08:45:35 -05:00
Boris
2a82cba1fa
Forward nozzle diameter through CLI and preserved projects
2026-10-22 08:12:42 -05:00
Boris
38eaaa7d9f
CLI: select project plates and list plate summaries
2026-10-20 21:29:26 -05:00
matthewtrahan
0c1fc1c168
plugins: real version numbers, stamped by every build -- 0.7.<n>, n = the position on main of the last commit that changed what that plugin ships (its folder, tests and notes aside, plus every file esbuild bundles into it and the shared Python host), so a plugin gets a new version exactly when it changes and never otherwise (the PrusaSlicer port doesn't move with the engine); plugins/shared/version.py computes it, each build stamps it into the plugin's own manifest (Orca header, Fusion manifest, Cura plugin.json + package, Blender manifest, Rhino package, SolidWorks assembly, Prusa manifest via a new build.py, a FreeCAD VERSION its console line shows) and the command line and MCP server compile it in (support-fins --version); sources hold the unstamped 0.7.0, above every hand-set number before (Fusion 0.6.2) so no host sees a downgrade; CI checks out full history for it and refuses a shallow clone; release labels show the same numbers
2026-10-19 18:13:31 -05:00
matthewtrahan
a189a8ffc7
plugins: Placement mode review fixes -- Fusion's hand-built dialog gets Full coverage too (its own style list, the coverage slider greys out in Full as on the site), Long walls is pinned not to move Auto, and the CLI's Full parity test passes the page's island starts and compares the walls triangle for triangle
2026-10-19 09:31:08 -05:00
matthewtrahan
cba9156d1b
plugins: Placement mode (Auto / Full coverage) and Long walls in options.json -- every plugin dialog, the CLI (--mode full, --no-long-walls) and MCP can run Full coverage, which they couldn't (a user's wide roof parts got a handful of walls in Auto; Full holds most of them); Auto stays the default; Full builds at the default coverage as the site does, so the slider hides there and Long walls shows only in Full; labelled "Placement mode" since FreeCAD names a property after its label and every FreeCAD object already has a Placement, and its add-on now refuses such a label
2026-10-19 09:31:08 -05:00
matthewtrahan
6582065595
cli: .obj input, --object picks from a multi-object OBJ as from a 3MF plate; the MCP server's path says so
2026-10-16 10:00:56 -05:00
matthewtrahan
07bd5ca224
cli: a 3MF output carries a slicer's own parts back out the way the site does, in the separate form so a negative part can't cut the walls in its hole ( #104 ); an STL output says it left the modifiers out
2026-10-14 21:25:19 -05:00
matthewtrahan
31228abb1d
cut: a slicer's negative parts are cut out of the part on import, so the fins are built for what prints ( #104 ) -- Manifold (manifold-3d 3.5.4, Apache-2.0, vendored, loaded only for a file with one); a scanned negative of closed shells plus sliver debris still cuts, a part or negative that is not a closed solid is said and left uncut; paint stays on the faces the cut leaves whole; the CLI bundle carries the WASM; the import note says how many were cut
2026-10-14 20:21:26 -05:00
matthewtrahan
f4166105e6
3mf negative parts: review fixes -- a PrusaSlicer 2 second instance (a wrapper over the first one's mesh) keeps its negative out (it read solid), a part placed twice is two extras rather than one merged shell, the CLI warns when it leaves one out, and a Bambu plate whose part ids collide is pinned
2026-10-14 20:21:26 -05:00
matthewtrahan
93bb5565f4
plugins: the Material option becomes the site's Support gap -- PLA's pad numbers, a 0.1-0.4 gap field in every dialog, Cura's Match Cura and Onshape's PLA/PETG/Custom go
2026-10-14 07:54:03 -05:00
chromaglow
0887505092
tests: build file paths with fileURLToPath so the suite runs on Windows ( #230 )
...
URL.pathname gives '/C:/dir%20with%20space/...' on Windows, so every test that
reads a model or fixture failed there (75 of 265). import() specifiers keep the
URL; disk reads take a filesystem path.
2026-10-10 13:35:51 -05:00
matthewtrahan
597aaa33db
cli: review fixes -- --rot reads the site's X·Y·Z readout, --fins-only lines up with the file's part, own 3MF refused
...
- --rot is three.js Euler XYZ (Rx*Ry*Rz), the order printfins.com shows under
the part, so a pose found on the site carries over
- --fins-only maps the fins back onto the part as it is in the file; it can't
take --rot, and writes nothing when there are no fins
- a Support Fins 3MF (part + fins) is refused instead of finned again
- settings the site would hide warn on stderr; -o can't overwrite the input;
-- ends the options; Node 20.10+
- the summary rounds ties to even, word for word with Python's host_report
2026-09-30 18:30:03 -05:00
matthewtrahan
070f36384a
cli: support-fins part.stl -> part-fins.3mf, the site's engine from a terminal (local issue 017)
...
Deno or Node 20+, or a deno compile binary. Poses the part (--rot, X then Y
then Z), runs the plugins' computeFins, writes a 3MF (part + fins), a merged
STL, or the fins alone. Flags come from options.json in the site's units.
Reports overhangs it couldn't reach; exit 1 only for a file that failed (the
others still run), exit 2 for bad arguments. Tests: CLI fins equal computeFins
on the posed part and the website's own path on lbracket@35.
2026-09-30 18:30:03 -05:00