130 Commits
Author SHA1 Message Date
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 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 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 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 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 4b46f94fec ui-smoke: the PETG step sets Support gap 0.3 -- the Material dropdown it set is gone (b625eed), so every run failed at that step; README counts 87 steps 2026-10-15 11:42:42 -05:00
matthewtrahan 877ffc9100 calibration: rebuild the cutout coupon's print files with the review fixes -- still no edge on more than two faces, PrusaSlicer time and filament unchanged 2026-10-15 11:42:12 -05:00
matthewtrahan c228633023 calibration: rebuild the pad and cutout coupons' print files for #223 -- the pad's predated the pad top-winding fix (1833 reversed faces, same triangles), the cutout's had flush pieces (951 shared edges); PrusaSlicer time and filament unchanged 2026-10-15 11:42:12 -05:00
matthewtrahan fd7952b009 probe: --opts merges extra buildFins options into each build
e.g. --opts '{"downhill":false}' scores a build with an engine switch flipped,
against the same ruler as the default build.
2026-10-13 16:24:35 -05:00
matthewtrahan 63cca5dbd3 calibration: print results -- cutouts: every cut wall perfect, the ledges hung because the slice bridged them parallel to the walls (the orient coupon's junk case); stays in the Calibrate menu. Bore: A (wall along the bore) beats X (across); engine unchanged 2026-10-08 08:17:43 -05:00
matthewtrahan 7976e6d2cc calibration: coupon.js's closed check matches every directed edge with its reverse (catches a hole or a flipped body, passes a cut wall's shared edges); README says most of a cut wall's shared edges are flush, a follow-up (review) 2026-10-07 11:14:18 -05:00
matthewtrahan a37ce36951 calibration: cutout coupon print files (two objects in register, the site's 3MF form), render and Calibrate estimate (61 min, 24 g); the all-coupons plate notes cutout and sampler print on their own (full at 238 x 235) 2026-10-07 11:14:18 -05:00
matthewtrahan 8de23702ca calibration: cutout coupon -- five tall ledges, the site's Auto walls under each at one Cutouts style (none, diamond, triangle, arch, lattice); support volume 100 / 78 / 78 / 66 / 67 %; coupon.js's closed check refuses only odd edge counts (a cut wall's solids share edges); docs, Calibrate row, German (print files after the separate-object coupon writer lands) 2026-10-07 11:14:18 -05:00
matthewtrahan 3308f972f8 calibration: sampler build.js leans on writeCoupon's separate form (its own overwrite is redundant now) 2026-10-07 10:42:15 -05:00
matthewtrahan 2d156d0f9b calibration: the all-coupons plate fits again (bore v2 is 106 mm: it rides with angle, pad alone); plate.py names a lone supports item once; bore build.js refuses an Auto piece outside every bore's box instead of dropping it (review) 2026-10-07 10:42:15 -05:00
matthewtrahan 97abff4637 calibration: bore v2 -- a second set of 3/5/8/12 mm bores (X) whose walls run ACROSS the bore, three Draw walls each (shaped to the bore, they slide out along it), beside the Auto walls along it (A); letters on top; nothing touches the part; docs, Calibrate row (39 min, 18 g) and German updated 2026-10-07 10:42:15 -05:00
matthewtrahan 2f1f11fd25 calibration: coupons export the supports as their own object, like the site's 3MF -- coupon.js writes the separate form; separate.py converts gap, grip, pad, span and lip's print/ files in place, meshes byte-identical (only names and the shared build transform change); plate.py names a second item as supports; Calibrate estimates re-sliced (grip, pad +1 min) 2026-10-07 10:42:15 -05:00
matthewtrahan aa8cc934fc calibration: the torture test is renamed the Sampler (folder, files, menu row, docs, German 'Musterstück'); its 3MF and STL keep their meshes, only the names inside change 2026-10-07 10:23:43 -05:00
matthewtrahan a4152e1ce4 calibration: torture docs say the table's bridge is 28 mm (between its legs); German 'spine' is the Mittelblock, not a Wand (review) 2026-10-07 10:23:43 -05:00
matthewtrahan d5f8135c42 site: the torture test joins the Calibrate menu as its last row (sets nothing: what your parts will get once the others are tuned), 1 h 36 min, 44 g; German strings 2026-10-07 10:23:43 -05:00
matthewtrahan 2e3c15c2c8 calibration: torture print result (pretty solid; a few drooping layers on the ball, the table's underside rougher near the spine); the locked one-object copy is dropped now the site exports only the separate form 2026-10-07 10:23:43 -05:00
matthewtrahan 2caed75fc6 calibration: torture test exports supports as their own object (torture-coupon.3mf; the one-object file stays as -locked), rebuilt on main's fill pass (44 walls, must-hold 100 %); first-draft print logged; table flagged as the wall-direction weak spot 2026-10-07 10:23:43 -05:00
matthewtrahan 335f62a5ab calibration: torture test -- one part with ramps, ball, thin ledge, table, mushroom, cave, sideways holes and an arch, built in Full coverage at the defaults (must-hold 95 %); coupon.py label() for its raised angle / hole sizes 2026-10-07 10:23:43 -05:00
matthewtrahan 4b353e48f4 site: Calibrate review fixes -- the Gap row says the field stops at 0.4; German pad row keeps the field names the German UI shows; estimate.py refuses a slice with no printer profile and stores each file's sha256, so the test catches an estimate left over from another version (review) 2026-10-07 09:25:16 -05:00
matthewtrahan 357375ca01 site: Calibrate menu -- the test prints (angle, gap, grip, pad, bore) as downloads, laid out like Plugins, each row with its print time and filament (PrusaSlicer's default Core One PLA profile, sliced by prototype/calibration/estimate.py), the setting it tunes and how to read it; files served from web/calibration/, pinned to the coupons' print/ files by tests/calibrate.test.js; German strings 2026-10-07 09:25:16 -05:00
matthewtrahan b2058e5bcb calibration: orient print result -- across beats parallel at every spacing, the three spacings about the same (direction matters, 8 -> 4 mm spacing doesn't) 2026-10-07 08:59:55 -05:00
matthewtrahan dbf687e5b0 calibration: split.py docstring cites GitHub #38 only; README says the separate-object export is still to build (review) 2026-10-06 22:37:40 -05:00
matthewtrahan 533664081a calibration: grip and grip-split print results (OFF best, LIGHT next, all walls stood; split a little better -> supports export as their own object) 2026-10-06 22:37:40 -05:00
matthewtrahan 3577e02e4d calibration: grip coupon split -- the same part and walls saved as two objects (Clough42's 'split to objects'), to compare tine marks with the merged print rung for rung 2026-10-06 22:37:40 -05:00
matthewtrahan a859524258 examples: compare.js passes the pad too, so it scores like probe.js; the pad's reach reads PROP.gap per call (a material profile sets it); README says the pad rule is centroid-only like the wall rule (review) 2026-10-06 22:11:42 -05:00
matthewtrahan 2cfbb0458c examples/held: a face at most 0.5 mm over the bed pad's top (or under its tack) is held -- the pad shims a cleat sole on studs as a wall would; probe.js reports low% (how much of the near-plate strip is held), probe_diff.js its total. Builds unchanged; same builds rescored: must% 64.4 -> 64.4 (Auto), 78.2 -> 78.2 (Full), Isaac up +8.8; near-plate strip held 86.6% -> 88.2% of 9175 mm2 2026-10-06 22:11:42 -05:00
matthewtrahan 270b0e2d0b calibration: orient ledges 16.6 x 17.2 so both sides space their walls exactly 8 / 5.3 / 4 (parallel was 7.5% tighter); README says what still differs (review) 2026-10-06 16:32:05 -05:00
matthewtrahan 7dc34934aa calibration: orientation coupon -- six 16 mm flat ledges at the 0.2 gap, walls across vs parallel to the slicer's bridge lines at 8 / 5.3 / 4 mm bare stretch (checked in PrusaSlicer); gap result logged (0.2 the only good one, already the default) 2026-10-06 16:32:05 -05:00
matthewtrahan d89c2dc6f7 scoreboard: vs-base.sh BASE_MODE (Full vs Full shows what a fill change does, not what the mode adds) 2026-10-06 15:29:20 -05:00
matthewtrahan 0f9e38f1df calibration: gap docstring grammar (review) 2026-10-06 14:14:52 -05:00
matthewtrahan 35e54adf9b calibration: angle labels drop the ° (its ring is under two beads); doc slips -- which coupons keep dots, gap's docstring, coupon.py's header (review) 2026-10-06 14:14:52 -05:00
matthewtrahan 0688100212 calibration: every coupon still waiting on a print shows its value instead of dots -- angle (10°-40°), gap (0.2/0.4/0.6), span (0-100%), pad (0-0.3), bore (3-12), short (length x height), lip (0.1-6); angle ramps 14 mm wide and short's roots 15 mm so the text fits; tine/slender/foot keep their as-printed dots; pad 3MF re-packed deflated 2026-10-06 14:14:52 -05:00
matthewtrahan 7e2e97aa93 scoreboard: probe.js --angle (the Overhang slider) 2026-10-06 09:41:04 -05:00
matthewtrahan 9978cfce54 calibration: coupon.py label() raises the rung's setting as text; the grip coupon's ledges read OFF / LIGHT / MID / FIRM instead of dots 2026-10-06 07:52:35 -05:00
matthewtrahan e7e3c4d404 calibration: grip coupon -- four 30 deg ledges, three 23 mm walls each, at Tines off / Tine grip light / middle / firm (0 / 5 / 7 / 11 tines a wall), the user-facing tine coupon; on the all-coupons plate, in CALIBRATION.md 2026-10-06 07:52:35 -05:00
matthewtrahan 553e070328 scoreboard: probe --dump keeps the fill walls apart and render_held.py draws them teal 2026-10-05 22:11:15 -05:00
matthewtrahan 3e5577a608 scoreboard: probe.js --mode and build seconds, probe_diff totals walls/grams/seconds, vs-base.sh HEAD_MODE=full scores the working tree in Full coverage against base Auto 2026-10-05 22:11:15 -05:00
matthewtrahan 4616c4f7c1 fins/coverage: the must-hold rule (classify, reachOf) moves into web/, so the coming Full coverage fill pass aims at the scoreboard's number; held.js scores with it, output byte-identical; examples README drops local paths 2026-10-05 21:18:22 -05:00
matthewtrahan a3aae895e7 prototype: the ruler puts the engine's cached inside-grid back after scoring (the next pose's build reuses the topo); --web followed by another flag says it needs a path (review) 2026-10-05 20:49:03 -05:00
matthewtrahan b3a216ea2e prototype: a tiny hole needs air at its plan centre under the apex (a flat collar round a post read as one: the probes started inside the stem; the pocket-tactics mini's leg tips); the ruler drops the other engine's cached inside-grid; --web without a path says so; probe_diff fails a case only on >2 points AND >=1 mm2 lost; KEEP is created; baseline now 64.4% of 283,431 mm2 (review) 2026-10-05 20:49:03 -05:00
matthewtrahan 3c78cb7292 prototype: examples README -- the must% policy column and its two exempt classes, the scoreboard commands, the DRO housing in reports/, and the 2026-10-05 baseline: 64.8% of 281,534 mm2 must-hold area held on main 7ef4cfa 2026-10-05 20:49:03 -05:00
matthewtrahan 9b6a4480ed prototype: coverage scoreboard -- vs-base.sh probes origin/main and the working tree on reports/ + real/ (one process at a time, ~2 min), probe_diff.js compares must% per case and area-weighted, exit 1 on a case losing more than 2 points 2026-10-05 20:49:03 -05:00