matthewtrahan
eb5650ded1
sway: Auto and Full stand hand braces without "+ Add walls by hand" -- with Sway braces ticked, hovering an upright side previews the brace (same ghost and label as Draw) and a click stands it; a click on a brace placed by hand selects it, and every other click still just orbits. The rotate rings and an armed lay or remove keep the pointer first. The Sway braces tooltip drops "In Draw" (de, nl, pt, ar, zh too)
2026-10-18 15:36:14 -05:00
matthewtrahan
b5f2f4298a
sway preview: review fixes -- removing or restoring an Auto fin refreshes the hover memo (a removed brace no longer refuses the spot), a rebuild or a move off the upright side drops the ghost and its queued frame, the stored spot stays on the face's plane (a reopened session finds the same face), the memo keeps 200 spots, a capped top on a band edge keeps its band count through the save round-trip, cross ribs shear the part once per lean instead of per arm and retry, and a session without settings leaves the new fields as they are
2026-10-18 15:36:14 -05:00
matthewtrahan
64f7fb7d61
sway: review fixes -- the Tine contact offset field is gone (a positive offset lifts the tines off the part, zero meets it flush; the engine keeps its -0.01 default, the same output as main), Brace walls above starts at 5 cm, tests pin a full-height hand brace, the low-click reason and the cross ribs at the page's settings (two per brace over the start height, closed, clear of the part, no brace or tine lost), and the new and changed strings in de, nl, pt, ar and zh
2026-10-18 15:36:14 -05:00
matthewtrahan
ad7e99b188
draw: sway braces preview on hover -- an upright side shows the brace a click there stands (ghost + a label by the cursor with its height, or the reason it can't), its top following the cursor and snapping to the whole face in the top quarter; a plain brace runs full height as before the clicked-height cap, a capped one is saved and undone as capped, and a session saved before the cap reopens with its braces full height. swayAtFace takes full, and a refusal names the clicked spot's reason, not the last nudge's
2026-10-18 15:36:14 -05:00
matthewtrahan
c1015c4ad6
rhino: README says beta -- what's been run in a real Rhino 8 (smoke test, the installed .yak's SupportFins) and what hasn't (the settings dialog, Draw's clicks, slicing an export, Windows)
2026-10-18 15:34:39 -05:00
matthewtrahan
df56c9b470
rhino: smoke test passes in a real Rhino 8 (18/18) -- STL by FileStl.Read (doc.Import's options dialog hung the run on a Mac); a too-short drawn wall instead of a mid-air one (SupportFinsDraw constrains clicks to the part; the engine builds a mid-air pair); the inch check re-finds the box by id (the old object keeps its pre-scale geometry: 40 inches, the 1 m box that ran V8 out of memory) and rounds piece boxes in mm; a 1 m part gets the memory message and the next run works
2026-10-18 15:34:39 -05:00
matthewtrahan
f72af4ea61
rhino: the engine's memory is capped under V8's own limit -- V8 out of memory aborts the process, so a part too big for it took Rhino down (a 1 m box, 1.4 GB heap); now mini-racer raises at 85 % of the limit, the user gets the part's size and 'is it at the right scale for the document's units?', and the next run starts a fresh context
2026-10-18 15:34:39 -05:00
matthewtrahan
98243976fa
rhino: build.py makes a project rhinocode builds -- a full host block (three-part version, os spelled macOS; without it: "saved on Rhino 8.9 or earlier"; the .yak is -any either way) and a publisher email (without one the .yak has no author). Shared files land in shared/ beside 'Support Fins.rhp', which the bootstrap tries; the package keeps its space
2026-10-18 15:34:39 -05:00
matthewtrahan
442be5d8b3
rhino: first run in a real Rhino 8 -- UnitSystem.None looked up by its .NET name (Rhino 8's pythonnet calls it NONE, so every SupportFins run died on getattr("None")); the Brep-mesh comment says what Rhino gives (float32 vertices, an STL's precision -- UseDoublePrecisionVertices on an empty mesh never stuck)
2026-10-18 15:34:39 -05:00
matthewtrahan
a5a0866421
rhino: review fixes -- mini-racer pinned to 0.12.4 (Rhino 8's Python is 3.9; 0.13+ needs 3.10; fins byte-identical to 0.14.1 on every fixture STL) and CI on 3.9; rerunning deletes the old overhangs and hidden fins (Delete with ignoreModes: a plain one skips locked layers); a fin mesh Rhino refuses is named in the report; Brep meshes in double precision, min edge in mm; custom / no units refused; Draw meshes the part once per session; smoke checks compare after the weld, units by piece boxes, a surface runs
2026-10-18 15:34:39 -05:00
matthewtrahan
68c5f271fe
rhino: Rhino 8 plugin ( #321 ) -- SupportFins / SupportFinsDraw / SupportFinsSettings run the site's engine through the shared Python host (mini-racer + numpy pip-installed by Rhino's own # r: lines, one .yak for Mac and Windows); Breps meshed at the site's STEP tessellation, document units to mm and back, one mesh object per engine piece on a Support Fins layer, red/amber overhangs on a locked sublayer, settings from options.json saved in the .3dm; build.py stages a .rhproj and compiles it with rhinocode when Rhino is installed; plain-Python tests in CI, rhino_smoke.py for the real Rhino
2026-10-18 15:34:39 -05:00
matthewtrahan
9e87d835ad
3mf: plate writer review fixes -- the one-model file pinned by sha-256 of main's output, tests for a PrusaSlicer 2 model beside a Bambu one (each assembly its own model's parts), paint on the second model alone, and the locked form's shared transform; the docs say the shift keeps the spacing and centres the footprint, not the spot it was laid out at
2026-10-18 14:21:49 -05:00
matthewtrahan
24e600a14f
3mf: several models in one file (writePlate3MF), for a plate of several -- each model keeps its own objects (part, supports, interface, slicer parts, colour table) in an id block past the one before, the slicer configs get an entry per model, and every item one shared bed shift so the arrangement opens as it stood; writeThreeMF is the one-model case and writes the same bytes as before (180 option combinations checked)
2026-10-18 14:21:49 -05:00
matthewtrahan
054778cd2b
ui: plates review fixes -- a click on the edited plate's part, fins, walls or cut handle is for that plate, not a switch to a bed behind it; a plate left before its fins build keeps the fins it was parked with (same pose only; a new part drops them); deleting an empty plate keeps the last Undo
2026-10-18 13:28:24 -05:00
matthewtrahan
c5e6ab0ae6
ui: plates, all on screen -- the plates sit side by side in one row (ui/plateview.js), each with its bed and a Plate N label, the ones not being edited showing their part and fins dimmed; a click on a plate in the view or on its tab edits it and the camera glides there; See all pulls back over the row. Deleting a plate or removing a model shows Undo for 10 s before anything is freed; Export all writes one .zip of 3MFs; each plate keeps its section cut and Suggest list
2026-10-18 13:28:24 -05:00
matthewtrahan
24ba9b36c0
ui: plates review fixes -- the viewer's and printer's settings (nozzle, layer view, rings, mouse preset) stay put across a switch instead of following the plate; Export all locks the tabs while it switches; an import comes back to the plate it was started on (or lands nowhere if that plate was deleted); a multi-file import whose last file fails drops its empty plate; and a plate keeps its stash until its restore succeeds
2026-10-18 13:28:24 -05:00
matthewtrahan
85667ff81e
ui: plates -- tabs under the top bar hold one model each, with its own pose, settings, drawn walls, removed fins and undo; + adds a plate, x deletes one, several files imported at once go one to a plate, and Export gets All plates (3MF). A switch stashes the live part and its state and restores the other plate's as undo does, so nothing is re-read or re-welded
2026-10-18 13:28:24 -05:00
matthewtrahan
489ac0fd04
ui: empty plate review fix -- the camera pulls back far enough for the whole plate (half its size left the near corner off screen)
2026-10-18 09:59:57 -05:00
matthewtrahan
ebb6a4c3c0
ui: empty plate -- after the first part, Remove model (and a drag) show the bare plate with an Import a model button and 'or drop it anywhere', not the intro card, and the camera pulls back to the whole plate; the intro stays for a first visit
2026-10-18 09:59:57 -05:00
matthewtrahan
7c53d3bad6
ui: Remove model -- the midair-start cones go with the part (main's island markers, rebased onto them)
2026-10-18 09:23:30 -05:00
matthewtrahan
85fea24b18
ui: Remove model review fix -- forgetSessionNote's doc comment back above it
2026-10-18 09:23:30 -05:00
matthewtrahan
b2bdb0149a
ui: Remove model -- a button in the stats card takes the part off the plate and brings back the start page, so the next model needs no reload; the drawn walls, removed fins, load arrow, Suggest list, section cut, scale, import note and undo go with it, the fin settings stay
2026-10-18 09:23:30 -05:00
matthewtrahan
9ccef01aee
islands: review fixes -- the readout's '(+N midair starts)' no longer stacks on every rebuild, removal or Show midair starts toggle (only the line's rewrites append it; builds redraw the card); the red's bare area is read before the island walls, so Full's rows-or-patch pick stays main's; the card says when the island pass ran out of walls, and in Full on a point-seated part with the pad off that none got one
2026-10-18 09:05:08 -05:00
matthewtrahan
0115903708
web: midair starts card -- a typographic apostrophe in 'couldn’t' (the straight one ended the string: the page didn't load)
2026-10-18 09:05:08 -05:00
matthewtrahan
a4355969c7
fill: island starts LAST, once the red has its walls, with their own 20-wall budget past the caps -- taken in the same pass they cost the red room (Full scoreboard: snowman mini up -4.6, #18 X-90 -5.8 points); now the red builds exactly as main and the starts only add (no case loses; #18 Y+-45 +6.5, mumble up +0.8). #18 X45 16/16 held with 8 walls (was 16); #257 Y45 3/3. Test name's apostrophe broke the file
2026-10-18 09:05:08 -05:00
matthewtrahan
a37a0cf1b8
web: midair starts card -- 'couldn't fit one', not 'no room': the fill also gives up on a start for want of an underside to follow
2026-10-18 09:05:08 -05:00
matthewtrahan
1f031a4144
web: midair starts -- the red cones behind Settings > Display > Show midair starts (off by default, remembered); the readout count stays, and the card says how many Full coverage left without a wall (none: no card), or in Auto and Draw that Full walls them. The page sends its islands with a Full build (041)
2026-10-18 09:05:08 -05:00
matthewtrahan
7edd5c2289
fill: Full coverage walls the island starts (041) -- each start's points join the leftover red as targets (1 mm2 a point, so one alone passes minGain), held only by a wall top within 2 mm under it (a layer that starts in midair can't bridge to a wall beside it), with lines over a group of starts at that reach; rows take the red only and lose to the patch lines if they leave more starts bare. buildFins finds the starts itself or takes opts.islands (the worker's topo has no vertex ids). #18 at X45: 4 -> 16 of 16 held; X-45 2 -> 13, Y45 1 -> 5, Y-45 0 -> 5 of 6. Auto sweep 864/864 identical
2026-10-18 09:05:08 -05:00
matthewtrahan
a0a400bcc2
islands: a start touching only amber (a sliver too small for a fin) counts -- a 2 x 2 mm peg end in midair got no fin and only 'may come out rough'; now a cone too (Matthew 2026-10-17). DRO housing: its two 3 mm pin ends under the top show
2026-10-18 09:05:08 -05:00
matthewtrahan
9132b1378f
islands: review fixes -- runs gathered only where no vertex is lower and the layer-below grid only in cells a start reaches (1.56M-face figure 300 -> 100 ms a pose), a walk past maxFaces still looks for the lower vertex, a long level edge keeps its two ends and a 32-point sample, the flat note stays blank mid-drag after a pose with islands, vid stays out of the worker messages; tests for the 2 mm merge, the area floor and a dimple in a steep wall (041)
2026-10-18 09:05:08 -05:00
matthewtrahan
77ec490ba8
web: island starts on screen -- a red cone under each spot that starts in midair (drawn through the part; a level edge gets a line along it), '+N midair starts' in the Overhangs readout, and a red card saying nothing holds them yet; a pose with only islands no longer says 'No supports needed'. Found on release, not mid-drag; the vertex graph stays out of the worker messages (041)
2026-10-18 09:05:08 -05:00
matthewtrahan
bfd1506d8c
islands: find island starts -- a mesh low point (a vertex, or a level edge) whose faces point down, none red, joining nothing lower within a layer and with nothing within 0.3 mm in the layer below, cross-section >= 0.03 mm2 a layer up; starts within 2 mm merge (041). Not used yet. #18 at X45: 16 islands; #257 's corners found; 0 on the scanned and mini parts, under 35 ms
2026-10-18 09:05:08 -05:00
matthewtrahan
0183f00e5e
scale: review fixes -- the field applies on Enter or blur only (no spin buttons, no arrow-key steps: each was a whole reload), the floor is 10 % (below it a fine mesh's vertices merge in the 1 um weld), the factor is rounded to the 2 decimals shown, and a rescale drops the import note's 'restored N supports' (they went with the reload)
2026-10-17 21:09:43 -05:00
matthewtrahan
78d11700db
ui: Scale -- one uniform percent in the view toolbar beside Rotate; a new scale reloads the part at that size from the part as loaded (never compounded), keeps the pose, scales a 3MF's negative parts and modifiers about the same centre, and clears drawn walls, removed fins and undo as a new file does; the badge reads the percent while it isn't 100
2026-10-17 21:09:43 -05:00
matthewtrahan
54c79acc85
spec: ticked Auto can hold less than unticked on a part whose curves clash (lamp shade X30 -2.1%), kept forced
2026-10-17 20:33:56 -05:00
matthewtrahan
b9beb8c721
curved walls: review fixes -- a traced group's other regions count as served where its walls reach their own faces (they read bare and drew last-resort walls), and a group's wall within a foot + 1 mm of a wall an earlier group swapped in is dropped (stacked surfaces met 0.15-0.43 mm apart on the bean on its side); the spec names the limits (shallow bands give stubs, one bend swaps a whole group)
2026-10-17 20:33:56 -05:00
matthewtrahan
5d5debaa1e
curved walls: on a jagged overhang the curves trace each region grown across the slivers around it (regions whose growth meets trace and race as one), read the slope over 2 mm, and seed lines until they reach the red themselves -- coffee bean X-45 0 -> 8 curves (held 1305 -> 2674 mm2), on its side X90 10 -> 30 curves with the Auto fill 40 -> 21 walls, and Full keeps them; a second race after the unticked one, so ticking changes nothing where no wall bends
2026-10-17 20:33:56 -05:00
matthewtrahan
1be63f6d53
curved walls: review fixes -- the 1% slack only when the ticked Full build has a curve (all-straight downhill walls are judged strictly), the readout's line doesn't claim the straight walls hold more (grip or a wedge can decide), and the spec gives the real build-time cost
2026-10-17 16:27:50 -05:00
matthewtrahan
810964407e
web: the readout says when Full coverage kept straight walls over Curved walls, and that Auto has the curves
2026-10-17 16:27:50 -05:00
matthewtrahan
b4e7c31eb6
curved walls: in Full coverage the curves stay only if they hold within 1% of the straight build, grip no higher and keep every wedge -- they broke up the fill's rows (coffee bean on its side held 2-5% less); spiral and bust keep theirs
2026-10-17 16:27:50 -05:00
matthewtrahan
b3900fc2b3
ui: the amber small-overhang card shows again -- the German localization ( #184 ) built its English and German text but never set it, so the card was blank on every part with slivers; one tn() with the German in de.js
2026-10-17 16:23:52 -05:00
matthewtrahan
708b2dfac9
walls: review fixes -- squat walls narrow too (a 1.2 mm squat wall at 8 lines leant 24deg), a cut wall's bands and strips keep to the narrowed body, and the clearance probe reads the body from the same rise the mesh does on a low tail (044)
2026-10-17 13:52:49 -05:00
matthewtrahan
78381dd6d0
walls: a wall too low for its neck narrows its body instead of squeezing the neck flat -- at 8 wall lines a 1.5 mm wall's shoulder leant 28deg, an overhang on the wall's own side (local issue 044); 2-line walls unchanged (864/864 sweep identical), same walls and tines at 0.4x8 and 1.2x4
2026-10-17 13:52:49 -05:00
matthewtrahan
2cf5110efb
curved walls: review fixes -- Auto's curve fill says the overhang it couldn't reach (and a capped fill), as Full coverage does; the spec names the gaps ticking leaves (no downhill judge, neighbours unfilled, a forced swap may grip higher)
2026-10-17 09:51:28 -05:00
matthewtrahan
8ad059484e
web: Curved walls' tooltip says it's forced, and the readout counts the walls its fill added in Auto apart from Full coverage's line; spec row for the Auto fill
2026-10-17 09:51:28 -05:00
matthewtrahan
999efd5849
curved walls: forced -- ticked, every region tries downhill walls and a region whose walls bend past 10 deg always swaps to them; no whole-build judge; in Auto the fill pass walls what the curves left bare (8 real organic parts: 4 -> 44 bending walls, held never below unticked)
2026-10-17 09:51:28 -05:00
matthewtrahan
0d9e2e9243
curved walls: review fixes -- judged against the unticked build, the bend read over 3 mm of line with the extremes trimmed, an empty region still needs RACE_ABS
2026-10-17 09:51:28 -05:00
matthewtrahan
de94a63a73
web: a Curved walls checkbox (Auto and Full, off by default) -- undoable, saved with the session; the plugins leave it out until the print test
2026-10-17 09:51:28 -05:00
matthewtrahan
26c3b3b5c3
engine: curved walls ( #25 ) -- with opts.curvedWalls, a region whose downhill walls bend past 20 deg swaps when they hold as much, at any weight; unset, the race is unchanged
2026-10-17 09:51:28 -05:00
matthewtrahan
1a9f820756
site: review fixes -- a reload re-applies the remembered tine direction and pin depth (the field said Vertical while the build laid tines), Layer height hides for pins when nothing else reads it, the Tines recap says resin, and the new strings in de/nl/pt/ar ( #309 )
2026-10-17 09:47:53 -05:00
matthewtrahan
6fe5746a6e
plugins: Direction and Pin depth in options.json, so every dialog, the CLI (--tine-dir, --pin-depth) and the MCP server offer resin pins; the report says pins ( #309 )
2026-10-17 09:47:53 -05:00
matthewtrahan
53d89e1628
site: Tines > Direction (Horizontal (FDM) / Vertical (resin)) with a Pin depth field and an untested-on-resin note; the readout counts pins as pins ( #309 )
2026-10-17 09:47:53 -05:00
matthewtrahan
0ee58da580
pins: a Vertical (resin) tine direction -- pins stand up from each wall top across the gap and 0.3 mm into the part, and a wall on the part welds its foot, since a resin print peels each layer off the vat and its supports must be attached ( #309 ); off by default, 864/864 sweep cases byte-identical
2026-10-17 09:47:53 -05:00
matthewtrahan
d61a613cdb
remove fins: key review fixes -- an exact key wins (a #n twin's removal hid its first copy), older and unparseable keys match exactly only, and the net is across 0.4 / along 2.5 mm of the wall plus height within 0.35: a removed fin gone from the rebuild no longer hides the neighbour beside it (Full coverage fill walls sit 0.5 mm apart), at the cost of a few removals coming back (m4 X30 77/84)
2026-10-16 16:50:16 -05:00
matthewtrahan
da80a6eb48
remove fins: a removed fin stays removed when the support gap changes (045) -- its key matched exactly and held the wall top's z and height, which the gap moves, so 0.2 -> 0.3 brought every removed fin back; now a key takes the nearest fin of its kind and bearing within 1.5 mm (z only a tie-break, so stacked walls stay apart), and older saved keys still match
2026-10-16 16:50:16 -05:00
matthewtrahan
a5ac45700f
ui: error badge review fixes -- only this site's own rejections count (an extension's don't), a handled worker crash no longer lights it, Escape and other menus close it, Copy looks like a button and ticks, and a noscript line for scripts blocked outright
2026-10-16 16:01:15 -05:00
matthewtrahan
974e95241e
ui: an error badge -- a red ! in the top bar when the page hits an error, with the message and browser in a panel, so a 'nothing works' report ( #237 , Brave mobile Shields) comes with the cause in a screenshot; a script that never loads shows too
2026-10-16 16:01:15 -05:00
matthewtrahan
d1b8ac86b2
ui: Brace tall walls and Plate only read as their names alone -- the muted 'ribs over 10 cm' / 'no supports on the part' after them read badly (their tooltips say it); the plugins' Plate only hint goes too
2026-10-16 14:31:03 -05:00
matthewtrahan
1af4867629
tall ribs: review fixes -- a fill wall's line is the surface (no gap added back), a drawn rib keeps clear of Auto's supports and pad on screen, the Draw ghost shows its ribs, the Draw readout counts them
2026-10-16 14:31:03 -05:00
matthewtrahan
04e3ee7168
tall ribs: a plan grid of ~1 mm support pieces for the clash check -- fill's 3D box grid cost 4 s on bigplate Y35 (now 0.2 s, same 210 ribs); spec + tests README
2026-10-16 14:31:03 -05:00
matthewtrahan
dfcaa5c1b9
tall ribs: walls over 10 cm get face ribs at the plate (Brace tall walls, on) -- a user: fins taller than 10 cm wobble; Auto, Full and Draw, last around every support, kept sideClear off the part and other supports
2026-10-16 14:31:03 -05:00
matthewtrahan
e8c4921900
import: the picker offers model files on Android ( #237 ) -- accept lists the MIME types too, and octet-stream, since Android's picker matches by MIME and knows none of .stl/.3mf/.step/.obj; a file that isn't a model says so instead of a DataView error
2026-10-16 14:19:27 -05:00
matthewtrahan
bee8efc2b7
check_stl: review fixes -- the inside depth comes from the standoff pass's own samples (a second sampling doubled the judge on big parts: voron housing +269 s), check_props signs its samples with a ray test, and the 0.2 mm is called a sampling tolerance
2026-10-16 14:17:31 -05:00
matthewtrahan
7933de2112
check_stl: walls are also sampled over their surface for being inside the part -- a wedge through a channel's lower plate ( #254 , ~144 mm3 inside) had every vertex outside and passed; past the 0.2 mm gap fails
2026-10-16 14:17:31 -05:00
matthewtrahan
b65f156d27
tall coupon: review fixes -- the test pins where the face pairs land and a slim+tall wall (ends + a pair), the README says the site's Draw doesn't brace yet and a spine wobble isn't the wall's
2026-10-16 10:24:41 -05:00
matthewtrahan
ee78237579
tall coupon: plate walls 60-120 mm, bare vs face ribs rising 50 % / 80 % -- a user says fins over 10 cm wobble; BRACE.tallH (off) gives any wall over it a face rib pair every faceStep 30 mm
2026-10-16 10:24:41 -05:00
matthewtrahan
1dafafe434
import: an STL or STEP read after a 3MF drops the 3MF's import meta too -- a language switch brought the old 3MF note back over the new part
2026-10-16 10:00:56 -05:00
matthewtrahan
e700218b31
import: OBJ review fixes -- an inline # comment on a face line read as a vertex ref, a CR-only file's \ continuation wasn't joined, a big file split into millions of line strings (now one scan into growable typed arrays; a file past the string limit says so), and a 3MF's import note outlived the OBJ after it on a language switch
2026-10-16 10:00:56 -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
a704c9c1f6
import: OBJ files on the site -- a text reader (polygons fan, v/vt/vn and negative refs, o splits objects into the picker, groups and materials don't), sniffed by content like STL/3MF/STEP; no unit, read as mm
2026-10-16 10:00:56 -05:00
matthewtrahan
63610e2cd3
wedges: review fixes -- the clear check samples every 0.25 mm under the blade and along the run between stations (a 0.3 mm rib slipped between stations 1.5 mm apart; a wide blade's three rays left 3 mm gaps), counts a clearly down-facing surface deep under the top (bridge Y45: past the real face the plane-fit top rides over more of the part), keeps the longest run that still stands minH, and tests a vertical step's station itself
2026-10-16 09:30:01 -05:00
matthewtrahan
4546a10c3d
wedges: a wedge stands only where its column is clear of the part ( #254 ) -- a channel stood at 45deg got a wedge under its upper plate that ran straight through the lower one, fused into the part; a station with an up-facing surface under the blade's top is dropped and the wedge keeps its longest clear run
2026-10-16 09:30:01 -05:00
matthewtrahan
e5c6909be9
fill rows: review fixes -- rows kept only on no more red bare (the 0.5 mm2 tie let a minGain patch go), no double build under the sparse slider, the candidate rows read their own band (sorted by offset, not every point per row), the search budget shrinks past 250k faces, the field's docs say what it does (one heading, null = x), fill reports rowsLost/rowBuilds, an old session restores with Long walls off; tests: rows strictly beat the patch fill where they win, Plate only, sparse
2026-10-16 08:41:38 -05:00
matthewtrahan
88e7184976
tests: rows -- build on the L-bracket and tube at X40 and leave less bare, never more bare than the patch fill where they lose (wedge, ramp, torus, bar), outside the part and clear of every support, deterministic; the length field's calls
2026-10-16 08:41:38 -05:00
matthewtrahan
c6aec8661b
ui: Long walls checkbox under Plate only, shown in Full coverage only, on by default -- untick for the patch fill alone; undoable and saved with the session; de/pt/ar strings; site-only in the plugin options test
2026-10-16 08:41:38 -05:00
matthewtrahan
ea158a4b84
fill: Long walls on by default in Full coverage (opts.longWalls) -- the rows run, then the patch lines exactly as before (the step-1 heading order on the patch lines is gone: little gain, and its extra lines ran a Plate only portal into the check cap); built with and without rows, the rows kept only if they leave no more red bare (a wedge at X40: 17 -> 47 mm2 with them); fill reports its rows
2026-10-16 08:41:38 -05:00
matthewtrahan
6f9f19fba2
fill rows: search budget back to 900 builds -- the grid made the greedy pick cheap; Isaac upright 81 -> 86% must-hold
2026-10-16 08:41:38 -05:00
matthewtrahan
8a0c157ee7
fill: rows (opts.alignFill, off) -- long walls along the model's length before the patch lines (fins/rows.js: each row's longest buildable pieces by Draw's builder, greedy by red held); keep() pulled out of wallFor; no clear length = x
2026-10-16 08:41:38 -05:00
matthewtrahan
b142a96d28
prototype: fill rows -- parallel rows along one heading, each row's longest buildable pieces by Draw's builder; Isaac must-hold 76 -> 89% (11 walls, 2.6 -> 4.3 g), mixed on other figures
2026-10-16 08:41:38 -05:00
matthewtrahan
f2393c0327
fill: opts.alignFill (experiment, off) -- each group's lines try the model's length first (fins/field.js: the plan long axis of the surface within 20 mm), then 15deg either side, then the best of the rest; on Isaac 14 -> 17 walls, must-hold 76 -> 77%, still 3-5 mm stubs
2026-10-16 08:41:38 -05:00
matthewtrahan
dd0c597b37
ui: search review fixes -- results follow an undo, a build or anything else that shows or hides a row (it watched only change events); the brace tine fields point at Tines when that's what hides them; Restore all points at Remove fins, Remove selected at nothing; the hidden mode menu's options no longer count as Placement's name; the no-match line is announced
2026-10-16 07:43:18 -05:00
matthewtrahan
1c9fe96c13
ui: search the settings -- a box at the top of the panel narrows it to the settings whose name matches, opening the sections they're folded in; a match the current mode hides brings the switch that reveals it
...
Local issue 42. Names first (shown and English), tooltips only when no name matches;
Esc or the x puts the panel back as it was, and a search never saves a section's
open state. Layout only: no value changes (ui/search.js).
2026-10-16 07:43:18 -05:00
matthewtrahan
8d353753bf
fill: note the box grid key's range (review)
2026-10-16 07:39:48 -05:00
matthewtrahan
ad57031711
fill: the support box grid buckets by height too -- a tall wall's boxes and Auto's tines stacked in one plan cell, so every clearance check walked them all; same walls, Full builds 2-6x faster on the real figures (Isaac X30 12.2 -> 2.0 s, bunny X-30 11.1 -> 1.6 s, buster X-30 40.9 -> 17.2 s)
2026-10-16 07:39:48 -05:00
matthewtrahan
6c6f9694b3
ui: a saved session restores its layer height and gap again (review) -- the fins it lists as removed are matched by heights the gap shifts, so opening it at another gap brought them back; the browser still starts a new part from your last values
2026-10-15 22:09:44 -05:00
matthewtrahan
4664bd627a
ui: More settings review fixes -- the changed count stays on the line while the section is open, the sway switch drops its 'tall parts' hint under the Tall parts heading, and the wall-lines exception is described as the guard it is
2026-10-15 22:09:44 -05:00
matthewtrahan
2d82ff6866
ui: More settings -- bed pad, wall lines, sway braces, wide-face coverage, plate only and the display toggle fold into one section grouped by intent (Hold the part / Tall parts / Where supports go / Display), with an "N changed" count and a dot on each changed field
...
Local issue 42, step 3. In view by default: the printer row, Placement, Tines and
Cutouts. Every control keeps its id; the Clearances, Sway, Walls and Display
headers and their recaps go. A field counts as changed only while the build reads
it (a hidden or disabled field doesn't), and Wall lines not when a big nozzle took
its default away (ui/more.js).
2026-10-15 22:09:44 -05:00
matthewtrahan
bd6470b17b
ui: the layer height and support gap are remembered across visits like the nozzle -- they're the printer's, so a saved session neither saves nor applies them; interface material stays with the part
2026-10-15 22:09:44 -05:00
matthewtrahan
3ee3de1fb2
ui: the layer height stays shown while Interface material is on -- the band is one layer of the wall top, but with tines off and a Sure hold pad the field hid and the printer line dropped it (review)
2026-10-15 21:36:44 -05:00
matthewtrahan
ec529e0a5b
ui: a printer row at the top of the settings -- nozzle, layer height, support gap and interface material on one line (0.4 nozzle · 0.2 layers · 0.2 gap) that unfolds in place; Placement stands under it without a header
...
Local issue 42, step 2. The four fields move unchanged (every id kept); the Tines
and Clearances recaps stop repeating the layer height and gap. The line names only
what the build reads: layers drops out while the layer height is hidden.
2026-10-15 21:36:44 -05:00
matthewtrahan
497f857c3d
export: waits while a rebuild is out (review) -- a nozzle or layer change exported mid-build named the old fins with the new settings, the mismatch #279 is about
2026-10-15 21:04:59 -05:00
matthewtrahan
66a5e4c62a
export: the file name carries the nozzle and layer height the fins were built for ( #279 ) -- part-fins-0.6nozzle-0.24layer.3mf, so the slicer gets set to match: a 0.4 build sliced at 0.6 prints its walls as one line and drops tines between 0.24 layers
2026-10-15 21:04:59 -05:00
matthewtrahan
bff031d484
placement: review fixes -- the button group takes its screen-reader name from the translated Placement label, and a focused button's ring draws over its neighbour
2026-10-15 20:49:39 -05:00
matthewtrahan
1ccec211cf
placement: Auto / Full coverage / Draw as three joined buttons with a one-line note on what the chosen mode does, in place of the dropdown (local issue 42) -- the select stays, hidden, as the one place the mode is kept (undo, saved sessions and ui-smoke read and set it); the buttons drive it and follow it through undo/redo
2026-10-15 20:49:39 -05:00
matthewtrahan
e562b67680
rotate: review fixes -- the drag label hides while any toolbar popover is open (it ran under Suggest, and over Rotate opened mid-fade), drops aria-live (a drag queued an announcement per frame), and follows the badge row's sideways scroll on a phone
2026-10-15 18:42:46 -05:00
matthewtrahan
f9351d8239
rotate: a ring drag with the Rotate popover folded shows its angle in a small label above the Rotate badge (the turn so far, then the pose), fading 1.2 s after release -- the readout moved into the popover in #286 , so a drag showed no angle; ui-smoke's ring drag now drives the rotate gizmo (it found the Section plane's)
2026-10-15 18:42:46 -05:00
matthewtrahan
684ab98cfb
toolbar: review fixes -- folding the Rotate popover disarms Lay a face flat (its button was the only sign it was armed, and a stray click re-laid the part), a popover scrolls inside a short window and stays inside the window's left edge, Esc hands focus back to the badge, Undo/Redo take their name from the translated title, the Suggest chevron's CSS goes
2026-10-15 15:51:17 -05:00
matthewtrahan
06a1322466
toolbar: the left pane's pose and view tools move into the bottom view toolbar -- Undo/Redo, then Rotate (90° steps, Reset, Lay a face flat, rotate rings), Suggest, Strength (lit while a load is set), Section and View (Mouse preset, Show layers); each popover opens above its own badge and extends right; the left pane keeps only the stats card (local issue 42)
2026-10-15 15:51:17 -05:00
matthewtrahan
292e8a16b6
plugins menu: review fixes -- the command line's slicer list moves to its plain line (the orange note is for warnings), the LayerLing route is said to be untried, Deno gets its command, Sie in German, Brazilian Portuguese, and Arabic agreement
2026-10-15 15:29:21 -05:00
matthewtrahan
20c2a9e95d
plugins menu: the MCP server, and who the command line is for -- slicers with no plugin system (Bambu Studio, QIDI Studio, Creality Print, Snapmaker Orca, Flashforge) use it in place of a plugin; design tools with an MCP server but no plugins (LayerLing) reach the fins through the MCP server
2026-10-15 15:29:21 -05:00