Commit Graph

  • 5b54275626 Merge pull request #151 from EmDecay/fix/143-construction-plane-recursion bherbruck 2026-10-11 12:36:25 -04:00
  • 7abfe69603 Merge pull request #157 from bherbruck/docs/enclosure-demo-refresh bherbruck 2026-10-11 12:27:22 -04:00
  • 1a62c4513f docs: restore the enclosure demo with the 0.2.0 UI bherbruck 2026-10-11 12:20:48 -04:00
  • 2f78d3ef81 Merge pull request #149 from jyviko/fix/join-merges-met-bodies bherbruck 2026-10-11 11:36:27 -04:00
  • 78f80143d5 fix: hold the sketch caps at design load and bound the solver per component Matt 2026-10-11 07:46:52 -07:00
  • b2cf19c9fb fix: cap control requests and refuse file reads that never end Matt 2026-10-11 08:19:11 -07:00
  • b5fb86f245 fix: bound four unbounded expansions in STEP and IGES import Matt 2026-10-11 08:02:46 -07:00
  • a03e4b9413 fix: budget the work 3MF and DXF import does, not only its output Matt 2026-10-11 07:37:04 -07:00
  • 0b5e15e2b9 fix: continue the plane depth count through model geometry Matt 2026-10-11 07:29:16 -07:00
  • 5affff307e Merge pull request #150 from bherbruck/feat/usability-integration v0.2.0 bherbruck 2026-10-11 11:16:24 -04:00
  • ab05b24dee Prepare 0.2.0 usability release and refresh desktop demo bherbruck 2026-10-11 10:55:55 -04:00
  • 8a38a7354c fix: join merges every body the tool meets Iraklis KourtisandClaude Opus 5.5 2026-10-11 08:18:55 -04:00
  • a094fa46b5 Merge pull request #138 from bherbruck/feat/curved-sketch-workflows bherbruck 2026-10-11 10:00:43 -04:00
  • 0167c358bb Merge upstream profile picks and flush-pad fixes with adaptive identities bherbruck 2026-10-11 09:43:16 -04:00
  • 463441a119 Merge pull request #126 from CypherNaught-0x/fix/flush-pad-over-hole bherbruck 2026-10-11 09:28:59 -04:00
  • ce46faa19d Merge pull request #117 from CypherNaught-0x/feat/profiles-by-curve-ids bherbruck 2026-10-11 09:28:43 -04:00
  • b93698c42e Merge remote-tracking branch 'fork/fix/flush-pad-over-hole' into fix/flush-pad-over-hole CypherNaugh_0x 2026-10-11 15:07:32 +02:00
  • 4e595deff2 feat: preserve adaptive sketch profiles and curved modeling workflows bherbruck 2026-10-11 08:10:39 -04:00
  • 49ca7ef878 Merge origin/main into fix/flush-pad-over-hole (keeps both round_pads_crossing_a_shallow_fall from #119 and drain_pads_flush_under_a_floor_with_a_hole, which now also checks a boss ring standing on the 1° top around the hole) CypherNaugh_0x 2026-10-11 15:01:29 +02:00
  • 5c4785f55c Merge origin/main into fix/flush-pad-over-hole CypherNaugh_0x 2026-10-11 14:58:38 +02:00
  • 4c466466a2 Merge origin/main into feat/profiles-by-curve-ids CypherNaugh_0x 2026-10-11 14:53:08 +02:00
  • 4c4a0449a4 Merge pull request #134 from bherbruck/feat/axis-view-navigation bherbruck 2026-10-11 08:51:58 -04:00
  • 43a02625a2 feat: add smooth interactive axis view and diagonal snapping bherbruck 2026-10-11 08:51:24 -04:00
  • 6cbcf5c823 Merge pull request #125 from CypherNaught-0x/fix/model-render-section bherbruck 2026-10-11 08:34:20 -04:00
  • b02c5c01f9 Merge pull request #123 from CypherNaught-0x/feat/sketch-tools-return-ids bherbruck 2026-10-11 08:17:05 -04:00
  • 180c655ded Merge pull request #129 from 0xlillith/fix/sketch-point-alignment bherbruck 2026-10-11 08:16:27 -04:00
  • 93ca39c68e Merge pull request #131 from 0xlillith/fix/sketch-constraint-preselection bherbruck 2026-10-11 08:14:40 -04:00
  • 442c1f134b Merge pull request #112 from Mithril-3d/feat/i18n-support bherbruck 2026-10-11 08:01:30 -04:00
  • d47b5d3a29 Merge pull request #128 from 0xlillith/fix/fuzz-seed-range bherbruck 2026-10-11 07:58:04 -04:00
  • 736730c398 Merge pull request #122 from CypherNaught-0x/fix/loft-section-order bherbruck 2026-10-11 07:57:49 -04:00
  • 32900813c5 Merge pull request #118 from CypherNaught-0x/fix/boolean-fallback-message bherbruck 2026-10-11 07:57:31 -04:00
  • 839966c108 merge: integrate current upstream contribution guidance bherbruck 2026-10-11 07:57:27 -04:00
  • 4667c3a600 Fix sketch re-export ordering for rustfmt CypherNaugh_0x 2026-10-11 13:57:06 +02:00
  • 6d4c031090 refactor: make UI localization extensible and integrate upstream bherbruck 2026-10-11 07:52:08 -04:00
  • 680c82365e Merge remote-tracking branch 'origin/main' into feat/sketch-tools-return-ids CypherNaugh_0x 2026-10-11 13:30:48 +02:00
  • 79753040d5 Merge upstream and update curved-cut regression for fallback diagnostics CypherNaugh_0x 2026-10-11 13:25:06 +02:00
  • 5a2174899f Merge remote-tracking branch 'origin/main' into fix/model-render-section CypherNaugh_0x 2026-10-11 13:12:20 +02:00
  • b93d4905ac Merge remote-tracking branch 'origin/main' into feat/sketch-tools-return-ids CypherNaugh_0x 2026-10-11 13:07:50 +02:00
  • 184e301c46 Merge remote-tracking branch 'origin/main' into feat/profiles-by-curve-ids CypherNaugh_0x 2026-10-11 13:07:46 +02:00
  • 3dc0a6024e Merge remote-tracking branch 'origin/main' into fix/loft-section-order CypherNaugh_0x 2026-10-11 13:03:56 +02:00
  • 8970254672 A drain pad whose bore is the drain hole's wall (a ring joined flush under a floor, or overlapping it) now joins instead of failing with "coincident faces on curved bodies": the mesh intersection can't take two walls on one cylinder, and the coincident-face push only knew planes. Such unions now narrow one body's bore (its walls pushed toward the axis, clear of the other's), join, and cut the original bore's cylinder out again over that body's length, which is exact when the cylinder holds no material of either body (checked on samples). Inside that step a face is pushed into the other body only as deep as there is material behind it all over, so a narrowed rim over the other's bore can't fill it; then the other body's bore is narrowed instead. Test: drain_pads_flush_under_a_floor_with_a_hole (ring flush and 2 mm into a 1° floor, and a disc across the hole, against hand-calculated volumes) CypherNaugh_0x 2026-10-11 13:01:54 +02:00
  • 21e0e99c86 Model renders (screenshot with source model, ui.render) show the section the window shows: the CPU renderer drew the cut face on the far walls at their own depth in a plain grey hatch, so the inside of the body, its edges and the grid showed through it and the cut barely read as a section, it had no outline, perspective views cut along a curve, and an open Section Analysis dialog's preview (or a sketch's Slice) was ignored. The cut face now writes the section plane's depth where it is the visible surface (the CPU counterpart of the viewport's stencil cap), takes the viewport's cap tint and hatch, the cut outline is drawn (section_segments moved from the UI to engine::view and shared), world positions and lines are clipped perspective-correctly, and ui.render in the app uses the viewport's section plane CypherNaugh_0x 2026-10-11 10:16:49 +02:00
  • cc22672041 Sketch commands return the ids of the points, curves, constraints and dimensions they create as created: {points, curves, constraints, dimensions}, worked out in Session::execute from the sketch before and after, so a script can dimension and constrain new geometry right away; ids stay stable and are not reused after a delete (undo rewinds the counters with the design). The MCP execute tool describes the field CypherNaugh_0x 2026-10-11 05:25:40 +02:00
  • 2406957039 A loft gives the same body whatever the order of its sections: the ruled side faces were parameterised from the first section to the last, and a loft cut that touches the body along an edge (a fall lofted from a shelled basin's whole outline down to a drain pad) worked for one order and failed for the other, with an Option::unwrap() panic inside the kernel's intersection or "shell not oriented and closed" from the planar fallback. The loft now builds its sections in one canonical order (first-to-last step with a positive largest component), so either order gives the same, working body. Tests: the basin fall cut, joined and as a new body in both orders and with the pad in every corner (engine), and the kernel loft's volume and cut in both orders, including large-below and planes facing down CypherNaugh_0x 2026-10-11 05:09:53 +02:00
  • 5073f5dd72 A failed boolean no longer blames "coincident faces on curved bodies" whatever the cause: the exact polygon fallback runs after any failed B-rep boolean (faces that touch, or cross at a shallow angle) and takes planar faces only, but its refusal named coincident faces and curved bodies regardless. It now says which operand is in the way and why: "the tool has 2 curved faces (cylinder)" (kinds: cylinder, cone, sphere, torus, freeform), a face that could not be meshed, a planar face whose mesh is not flat, or a mesh too detailed. Test: planar_fallback_names_the_curved_faces CypherNaugh_0x 2026-10-11 05:25:30 +02:00
  • 848e7aec0e feat: pick sketch profiles by their bounding curve ids so features keep the same region when parameters move the geometry, matching curves cut into pieces, refusing ambiguous or missing picks instead of taking another region, and storing point picks by curves CypherNaugh_0x 2026-10-11 10:17:25 +02:00
  • 3afd6ae447 feat: add multi-language (i18n) support with Japanese UI Mithril-3d 2026-10-11 12:41:41 +09:00
  • 7c667eda53 test: verify constrained line geometry after preselection and redo lillith 2026-10-11 01:24:42 +02:00
  • 5cc65fe46b fix: apply curve-pair constraints to sketch preselection lillith 2026-10-11 01:09:01 +02:00
  • 413a1fb727 docs: guide agents to show concrete visual context and track integration bherbruck 2026-10-11 07:12:52 -04:00
  • 2683b8dfed fix: allow horizontal and vertical alignment of sketch points lillith 2026-10-11 00:58:49 +02:00
  • 347230f5d3 fix: validate fuzz seed ranges without overflow lillith 2026-10-11 00:41:49 +02:00
  • 420ee723ee Merge pull request #124 from CypherNaught-0x/fix/shell-four-face-corner bherbruck 2026-10-11 07:13:42 -04:00
  • 7e4dd4fd66 Merge pull request #121 from CypherNaught-0x/fix/fillet-keeps-dimensions bherbruck 2026-10-11 07:12:48 -04:00
  • f9d61590f3 Merge pull request #120 from CypherNaught-0x/feat/timeline-inspect bherbruck 2026-10-11 07:11:49 -04:00
  • c11fc79288 Merge pull request #119 from CypherNaught-0x/fix/boolean-shallow-slope bherbruck 2026-10-11 07:11:35 -04:00
  • d9f7473ceb Merge pull request #115 from astrojhgu/main bherbruck 2026-10-11 07:11:04 -04:00
  • 4b35484052 Merge pull request #127 from 0xlillith/docs/testing-ci-profile bherbruck 2026-10-11 07:10:15 -04:00
  • adb1e5fec5 timeline.inspect returns a feature's definition in the shape timeline.edit's set takes, so agents no longer guess field names: timeline.edit had no documented format ({"extent": {"distance": …}} worked, but only by trying). The new read-only command (feature: id or name) returns type, definition (the editable fields and their current values; bookkeeping and large payloads such as sketch geometry and imported STEP text are left out and listed under omitted), inputs (label, parameter name, expression, unit) and the feature's error and warning. timeline.edit's params doc points to it, and the book's Solid features chapter documents the edit format with the fields of the common features. Tests: inspect, edit by the field names it shows, inspect again (extrude, fillet, sketch); no undo step; hostile feature arguments are refused CypherNaugh_0x 2026-10-11 05:01:44 +02:00
  • 3573b96c7a fix: shell bodies where four or more planar faces meet at a corner (a floor falling to a drain from the trough edges) by splitting such corners into several joined by short edges instead of refusing because the moved planes miss a common point CypherNaugh_0x 2026-10-11 10:01:46 +02:00
  • c67ad22129 A sketch fillet keeps the dimensions of the corner it rounds: filleting the corner of a spout (a vertical riser and a horizontal top, the top's length dimensioned to the corner and the corner's height from the origin) dropped the height dimension with the corner point and left the length on the shortened straight part, so the top came out a fillet radius too long. Like Fusion, a corner that dimensions or constraints measure to now stays as a virtual sharp corner, a free point held on both curves' extensions (two point-on-curve constraints), with those dimensions kept and a line length to the corner turned into a distance from the line's far end to it; chamfers do the same. sketch.fillet and the chamfers report virtual_corners and moved_to_virtual_corner, and the viewport draws a virtual corner as an open square with dashed extension lines from the curves. Tests: the spout keeps its 80 x 100 size and both dimensions still drive it, the virtual corner survives save/load and undo/redo, a fillet with nothing on its corner leaves no point behind, and nearly straight or folded corners with dimensions never panic CypherNaugh_0x 2026-10-11 05:01:40 +02:00
  • 75e9472a47 modified: CONTRIBUTING.md new file: flake.lock new file: flake.nix GU Junhua 2026-10-11 16:07:46 +08:00
  • 8c1b1478ce Joins and cuts of round pads, bosses and holes across a floor that falls a degree or two no longer fail: the B-rep results were right, but the plausibility check meshed them without refinement, and where the shallow cut trims a round side to a thin band the plain mesh spans it with triangles cutting through the cylinder, so the check saw missing material (0.8 to 1.6 % of samples misclassified), rejected the result, and the planar fallback then refused the round tool. The check now meshes the operands and the result with refinement on curved faces (as measure does). Test: round_pads_crossing_a_shallow_fall (a 1° fall and a 2° four-face fall toward a drain) CypherNaugh_0x 2026-10-11 05:33:50 +02:00
  • 6b46915507 docs: align testing guide with the CI profile lillith 2026-10-11 00:32:48 +02:00
  • a6bb8fc924 feat: stabilize face attachments and closed spline workflows bherbruck 2026-10-11 05:32:46 -04:00
  • c1d819f235 feat: preserve body history and placed modelling workflows bherbruck 2026-10-11 03:59:12 -04:00
  • 0398a813c8 feat: strengthen sketches, feature editing, and independent assemblies bherbruck 2026-10-11 02:44:31 -04:00
  • 07932d0f42 feat: preserve modeling intent across sketches, assemblies, and fabrication bherbruck 2026-10-11 01:28:01 -04:00
  • d71bdb78ec feat: strengthen modeling, configuration, and assembly workflows bherbruck 2026-10-11 00:37:26 -04:00
  • 22672585c9 fix: join connected solids at exact edge contacts bherbruck 2026-10-10 23:11:02 -04:00
  • fc8b71956c fix: reject planar joins that displace original faces bherbruck 2026-10-10 22:53:44 -04:00
  • 74fed469dc fix: deploy docs web and Flatpak through one Pages workflow v0.1.6 bherbruck 2026-10-10 21:59:18 -04:00
  • efa6706226 Release SolveCraft 0.1.6 bherbruck 2026-10-10 21:43:21 -04:00
  • c1b6478ab5 fix: join additive extrusions and merge coplanar faces bherbruck 2026-10-10 21:31:19 -04:00
  • 17e8e3eff2 Merge pull request #109 from CypherNaught-0x/fix/timeline-modifier-highlighting bherbruck 2026-10-10 20:56:59 -04:00
  • 4b7e1d317d fix: load designs off-thread and cache recent thumbnails as PNGs bherbruck 2026-10-10 20:55:14 -04:00
  • b375c2a92a Merge pull request #108 from CypherNaught-0x/fix/basin-rim-blends bherbruck 2026-10-10 20:05:45 -04:00
  • 5275911b44 Highlight modifier faces from timeline hover and selection CypherNaugh_0x 2026-10-11 01:59:02 +02:00
  • 95ae096265 Restore minimal view-cube turns and drag-to-orbit 2026-10-10 19:42:17 -04:00
  • 5835bb10d4 Join chamfers across unequal sloped rim walls CypherNaugh_0x 2026-10-11 01:26:27 +02:00
  • db4f885bac Support fillets around sloped pocket rims CypherNaugh_0x 2026-10-11 01:16:13 +02:00
  • 683d45c28d Release SolveCraft 0.1.5 v0.1.5 bherbruck 2026-10-10 19:34:26 -04:00
  • 13dd4566ce Merge pull request #102 from CypherNaught-0x/fix/chamfer-sloped-rims bherbruck 2026-10-10 19:28:48 -04:00
  • e575bded0e Fix construction-plane references in mirror, section, and sketches (#99) CypherNaugh_0x 2026-10-11 01:20:51 +02:00
  • 1a1838c114 Merge pull request #106 from N3MI-DG/view_cube_label_size bherbruck 2026-10-10 19:15:10 -04:00
  • ff1453f868 View cube face labels are larger: one font size for all six, the widest (BOTTOM) spanning 90% of its face, instead of a fixed 9.5 px that left the names small on the cube. Tests: BOTTOM spans 90% of the face seen straight on, and every label stays within its face from any direction N3MI-DGandClaude Opus 5.5 2026-10-11 10:06:05 +11:00
  • e3ee1b359e Fix cubic input-name repair when loading large designs bherbruck 2026-10-10 19:04:19 -04:00
  • 15bb64c2ab Reject chamfer extensions beyond trimmed rim faces CypherNaugh_0x 2026-10-11 00:50:20 +02:00
  • feaed2e3f6 Merge pull request #97 from CypherNaught-0x/fix/dimension-measured-after-solve bherbruck 2026-10-10 18:49:25 -04:00
  • f33efa2b6e The timeline scrolls sideways when its features don't fit the window: with more features than the window is wide, the features past the right edge were clipped and could not be reached CypherNaugh_0xandClaude Haiku 5.5 2026-10-11 00:13:53 +02:00
  • c61b77613a solid.cylinder, box, sphere, torus and coil place by expressions: base, corner and center take numbers or length expressions per coordinate ("basin_width/2", "10 mm") and follow parameter changes, renames and component frames; before, a point that was not three plain numbers (or an unreadable axis) was silently replaced by the origin (or Z). The features now store the point as expressions (plain numbers still saved as numbers, so existing designs read and write the same) and evaluate it on every recompute; an unreadable or out-of-range point or axis is refused with an error. Tests: primitive points take expressions, follow parameters, renames and a moved component, and bad points are refused CypherNaugh_0x 2026-10-11 00:01:16 +02:00
  • 9c6f9410d2 Fix equal-distance chamfers on sloped end faces CypherNaugh_0x 2026-10-11 00:30:27 +02:00
  • 31dadcee63 Add nightly prereleases at midnight Eastern, skipping unchanged commits bherbruck 2026-10-10 18:26:06 -04:00
  • 4ac803ab52 Release SolveCraft 0.1.4 v0.1.4 bherbruck 2026-10-10 18:21:13 -04:00
  • 63fd838f55 Fix hover highlight flicker during viewport navigation bherbruck 2026-10-10 18:14:53 -04:00
  • ade30e9c4e Merge origin/main (with #86): sketch.dimension reports the solved value in the dimension's unit; the spout test expects the solved 30 and 60 degrees CypherNaugh_0x 2026-10-11 00:13:51 +02:00
  • 9c09e82cff sketch.dimension reports measured on the solved sketch: it reported the value the geometry had before the new dimension was solved, so dimensioning a 99.84 mm trough line to 100 answered measured: 99.84 and looked like the dimension had not taken. The command now measures the new dimension again once the sketch is solved (driven dimensions too), through a new solvecraft_sketch::measure_dimension that shares the solver's own measuring. Tests: lengths, a driven distance and a diameter report their solved values CypherNaugh_0x 2026-10-11 00:01:19 +02:00
  • 71a4f3061b Fix document and toolbar tab styling bherbruck 2026-10-10 18:00:36 -04:00
  • 1227fab860 Extrude's start_offset says which way it goes: along the sketch normal, also with direction: negative (where a positive offset starts on the far side of the sketch from the extrusion) CypherNaugh_0xandClaude Opus 5.5 2026-10-10 23:33:27 +02:00
  • 9a2a3cef8b A sweep along a path with sharp corners follows the corners: sweeping a rim profile along three lines (an open rectangle) gave a body of volume -0.0006 mm3 with its centre of mass at x = -3.5e9, and no error CypherNaugh_0xandClaude Opus 5.5 2026-10-10 23:33:27 +02:00