github bherbruck/solidcraft v0.9.0
SolidCraft v0.9.0

latest releases: v0.11.1, v0.11.0, v0.10.1...
one day ago

SolidCraft is open-source parametric 3D CAD in Rust: sketch, constrain, extrude, and change a
parameter to watch the timeline rebuild. Documentation
· try it in the browser ·
contributing ·
issues. AI agents can model with it over MCP:
solidcraft-cli mcp (how).

Why 0.9: this is a minor bump because the design file format moved to version 17, and
because it adds many new features.

What's new

  • Face actions work on about 90% of flat faces. Sketches, offset planes and press-pull now
    attach to sheet metal rims and holes, plastic features (Boss, Lip, Rest, Snap Fit), lofts,
    revolved faces, pieces Offset Face moved and walls a Join merged
    (#677, fixing
    #681). Across the test models: sketch
    75% → 90%, offset plane 75% → 90%, press-pull 64% → 85%.
  • Joins: a logo-style part with pieces extruded up and down from one sketch now joins
    (#679), faces that only partly overlap
    fuse correctly (#704, fixing
    #674), and booleans build the same body
    every time (#748), so a design rebuilds
    identically on every run.
  • Sketch: type a dimension right after picking (D, click, type;
    #695); redundant but consistent
    constraints are accepted, such as a rectangle clover
    (#699); tool windows for Scale, Offset,
    Mirror, Move/Copy, Fillet and Chamfer and the rectangular pattern (thanks @wdunn001), shown
    next to the Sketch Palette, which now lists the running tool's options; a typed Rho for the
    conic; a Construction Geometries row in the Sketch Palette that hides construction geometry
    (#804); sketch tool shortcuts open a sketch on the selected plane; Edit Sketch from the viewport
    menu.
  • Features: feature history on the left side with folders (opt in under Preferences;
    #449); Convert to Sheet Metal from a solid
    or shelled body by its bend edges (#725);
    a tear corner relief (#809); tapered and
    variable fillet radii (#675,
    #749) with a radius spline you drag on the
    edge (#752); free-form cut-outs stay exact
    in sheet-metal flat patterns (#692) and edge
    flanges run along what cut-outs leave of an edge
    (#702); and Surface Extrude, sheets from
    open curves and profile walls (#815).
  • View: Home and Fit frame only what is shown, and a middle double-click goes Home
    (#701); a cube navigator option
    (thanks @Karl-VonRichter, #664); the window
    stays responsive and draggable while a design opens, with a Cancel button that stays put
    (#643,
    #686).
  • Quality: cuts no longer split walls they don't touch
    (#670); booleans are faster and use less
    memory (#714); STL export welds shared
    vertices (#816); complete Japanese
    translation (#753).
  • Fixes: pasted features act on the pasted bodies (#613); a refused OK's error clears when
    you change the inputs (#641); dialogs show the units of their sizes (#630); the wheel over a
    dialog's list scrolls only the list (#678); a Single hole picked at a circle's centre lands on
    the centre (#657); axis or tangent plane on a drill tip works (#567); sketch text edits from
    letter interiors and moves as a whole; a projected edge stays the edge you picked; a size from
    a bare diameter keeps its unit (#716); Convert Mesh says how big a mesh is and what converts;
    the Save changes prompt takes arrow keys and Enter.
  • MCP: agent skills for modeling and editing over MCP
    (#728).
  • A new README demo and the SELENE rover showcase.

File format 17. Designs are now format 17 (solidcraft/17). SolidCraft 0.8 and older can't
open designs saved by 0.9, as a container or as JSON; they ask you to update instead. Keep a
copy of a file you may still open in 0.8. Files from every earlier version still open in 0.9.

Upgrading from 0.8. Nothing to do: open your designs and save (they're saved as format 17
from then on). Feature-history folders on
the left are off by default; turn them on in Preferences.

Known limitations

  • Some through-all holes along a wall or beside curved faces still fail
    (#559), as does a hole crossing an
    equal-radius hole (#788).
  • Some fillets are still refused, such as along an outline of lines and arcs
    (#431).
  • Some faces still can't take an attached sketch: a revolve's flat faces before a later feature
    (#726) and faces after Split Body or
    Combine Intersect (#565).
  • Fillet and chamfer accept an edge pick far from any edge and change the nearest one
    (#783); Press Pull fails on faces beside
    rounds (#562).
  • sheet.fold refuses a fixed point exactly on the sheet face
    (#685), and some tabs on L-shaped or
    collinear blanks can't be folded (#638,
    #639); an edge flange with different
    per-edge angles leaves gaps at the corners
    (#501).
  • More in ROADMAP.md.

Upgrading from 0.7 or earlier. 0.8 changed the Linux app ID to ai.storyteller.solidcraft:
flatpak update offers to replace the old app, and the .deb, .rpm and AppImage remove the old
menu entry.

Upgrading from 0.5 or earlier. 0.6 renamed SolveCraft to SolidCraft and made the zip
container the default save format. .solvecraft designs, old settings folders and
SOLVECRAFT_* variables are still picked up, and solvecraft-cli still forwards to
solidcraft-cli. Want plain JSON? Use File ▸ Save As JSON… or --save design.json. On
macOS, replace SolveCraft.app with SolidCraft.app. Details:
compatibility notes.

Documentation, the browser app and the Flatpak feed use the SolidCraft project Pages URLs.

Which file?

  • Windows: SolidCraft-0.9.0-windows-x64.exe runs as is. Or install the .msi, or unzip the
    -portable.zip (x64, x86 and arm64).
  • macOS 11+ (Apple silicon and Intel): open the .dmg and drag SolidCraft.app onto Applications.
    The CLI is in solidcraft-cli-0.9.0-macos-universal.zip.
  • Linux (x86_64 and aarch64, glibc 2.35+): the .AppImage (chmod +x, then run it), the
    .deb or .rpm, the .flatpak (flatpak install --user <file>), the .snap
    (sudo snap install --dangerous <file>; sudo snap install solidcraft from the Snap Store follows once the store's first review is done), or the .tar.gz.
  • FreeBSD: tar -xzf solidcraft-0.9.0-freebsd-x86_64.tar.gz --strip-components 1 -C /usr/local.
  • Web: solidcraft-web-0.9.0.zip is a static site to host yourself.
  • SHA256SUMS.txt: sha256sum -c SHA256SUMS.txt --ignore-missing.
  • Files without a version in the name (solidcraft-windows-x64.msi, solidcraft-linux-x86_64.AppImage, …)
    are the same packages under fixed names, for download links that always fetch the latest release.

For Flatpak feed installation and updates, add Flathub for the required runtime before
installing SolidCraft; keep both remotes in the same user installation:

flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --user --if-not-exists solidcraft https://bherbruck.github.io/solidcraft/flatpak/solidcraft.flatpakrepo
flatpak install --user solidcraft ai.storyteller.solidcraft
flatpak run ai.storyteller.solidcraft

Flatpak installs from 0.7 or earlier use the old ID ai.storyteller.solvecraft: flatpak update --user
offers to replace it with ai.storyteller.solidcraft, and settings move along.

Single-file .flatpak bundles include the runtime repository address; missing runtimes
still need an internet connection. Linux installation details.

The builds aren't signed yet. On macOS, right-click SolidCraft.app in Applications and choose
Open the first time (or run xattr -dr com.apple.quarantine /Applications/SolidCraft.app).
On Windows, SmartScreen may say "Windows protected your PC": More info, then Run anyway.
Licences are built in (Help ▸ About ▸ Licences, solidcraft-cli licences); the packages also
install THIRD-PARTY-LICENSES.txt.

What's Changed

  • flatpak-site: publish a release from before the app id change as it is by @bherbruck in #668
  • README demo for 0.8: the Raspberry Pi 4 case with a rounded rim, engraved text and PETG by @bherbruck in #671
  • test: seed 16's partial face contact is refused, not built wrong by @bherbruck in #676
  • README: add the SELENE rover by @0xlillith as a showcase by @bherbruck in #690
  • Keep the loading card's Cancel button still; deterministic Cancel test by @bherbruck in #686
  • Sheet metal rims and holes, plastic features, lofts, raised pieces and merged walls take face attachments by @bherbruck in #677
  • Sketch Dimension: D, click, type by @bherbruck in #695
  • test: regression test for #623: blind bore into a joined boss fails to mesh (fails on v0.7.0, passes on main) by @jonaswre in #654
  • Save changes prompt: arrow keys pick the button, Enter gives it by @lucas-aguilar89 in #683
  • fix(ui): edit sketch text from letter interiors by @0xlillith in #694
  • fix(ui): a refused OK's error clears once the dialog's inputs change (#641) by @semmelrinde in #666
  • Pasted features act on the pasted bodies (#613) by @lucas-aguilar89 in #682
  • feat(ui): offer a cube navigator alongside signed axes by @Karl-VonRichter in #664
  • Home and Fit frame what is shown now; middle double-click goes Home by @bherbruck in #701
  • File format 17 for qualified piece names and sheet metal rim names by @bherbruck in #700
  • test: measure a scaling pair again when the load of other test binaries spikes by @semmelrinde in #649
  • fix: an edge flange runs along what cut-outs leave of its edge by @NOWN-DEV in #702
  • Action matrix: mark the ribbed lid's side-wall hole as failing while it varies between runs by @bherbruck in #708
  • fix: fuse bodies that touch back to back over part of a face (#679, #674) by @bherbruck in #704
  • Sketch: accept redundant but consistent constraints (clover of rectangles) by @bherbruck in #699
  • fix: cuts no longer split walls they don't touch by @bherbruck in #670
  • Render: add backend capability discovery and strict request resolution by @0xlillith in #650
  • fix: axis or tangent plane on a drill tip no longer fails with "no face at NaN" (#567) by @lasselian in #655
  • feat: variable fillet radius may run down to zero at one end by @jyviko in #675
  • feat: free-form cut-outs stay exact in sheet-metal flat patterns by @NOWN-DEV in #692
  • fix(ui): Extrude and Revolve leave Profiles empty when the last sketch is already used (#684) by @semmelrinde in #705
  • fix(sketch): move and copy editable text as a whole source by @0xlillith in #715
  • fix(ui): a Single hole picked at a sketch circle's centre goes to the centre (#657) by @semmelrinde in #718
  • fix(ui): Box, Cylinder, Sphere, Torus and Coil dialogs show the unit of their sizes (#630) by @semmelrinde in #709
  • fix(ui): the wheel over a dialog's list scrolls only the list (#678) by @semmelrinde in #713
  • fix(engine): pick the face of a named body where bodies meet flush (face_body) by @Mqrius in #710
  • feat: Convert to Sheet Metal takes a solid or a shelled body by its bend edges by @NOWN-DEV in #725
  • perf: prism pairs before the mesh, bodies measured once, and a STEP import that copies less by @sahenjp in #714
  • A Feature Options section in the Sketch Palette showing the running tool's modes by @wdunn001 in #750
  • Give the Move dialog the canvas value box every other dialog already has by @wdunn001 in #739
  • fix: imprint each surface once when fusing partial face contacts by @bherbruck in #751
  • fix: MCP instructions name body_topology, not a list_edges tool by @SychPL in #729
  • Make SolveApp::start honour a command's enabled flag, and disable solid.move inside a sketch by @wdunn001 in #740
  • feat(ui): sketch tool shortcuts open a sketch on the selected plane by @quantmind-br in #737
  • feat: fillet radius tapers along an edge to the room there by @jyviko in #749
  • A Sketch Scale window, replacing a toolbar button that only raised an engine error by @wdunn001 in #733
  • Let the conic tool take a typed Rho, and preview the curve it is about to draw by @wdunn001 in #736
  • Three readable line type icons in the Sketch Palette, with construction orange moved to a caller contract by @wdunn001 in #747
  • fix: a projected edge stays the edge that was picked when its body changes by @NOWN-DEV in #730
  • Booleans build the same body every time: face order no longer follows heap addresses by @bherbruck in #748
  • docs(roadmap): list the proposed surface toolset under M8 by @jyviko in #773
  • perf(kernel): a refused edge is not rolled again after blends far from it by @Mqrius in #777
  • test: reference cases for variable, chord-length and tapered fillets by @jyviko in #776
  • fix: a size worked out from a bare diameter keeps its unit when the design's units change (#716) by @semmelrinde in #779
  • fix(sketch): a side put onto a projected line keeps its closed profile (#635) by @semmelrinde in #780
  • feat: drag a fillet's radius spline by its handles on the edge by @jyviko in #752
  • test: record the action-matrix outcomes that changed on main by @bherbruck in #781
  • A tool window for sketch Offset, with a typed Distance, Flip and Chain by @wdunn001 in #731
  • fix(kernel): preserve intentional Split Face lines in contact joins by @0xlillith in #782
  • docs: agent skills for modeling and editing through MCP by @SychPL in #728
  • Feature: left-side onshape-like feature history by @alex-s168 in #449
  • feat(i18n): complete Japanese localization and eliminate UI hardcoded strings by @Mithril-3d in #753
  • A Mirror window for sketch entities, holding both picks until OK by @wdunn001 in #734
  • Edit Sketch in the viewport menu over a sketch curve by @wdunn001 in #795
  • A sketch dialog and the Sketch Palette on screen at the same time by @wdunn001 in #791
  • Put Move/Copy Sketch Entities on the toolbar, behind a window with distances, an angle and a copy flag by @wdunn001 in #735
  • Display tessellation plans (1/4): planner with shared edge nodes by @jyviko in #802
  • feat: tear as a fourth corner relief shape of the sheet rule by @NOWN-DEV in #809
  • Surface toolset: icons and planned commands (#772) by @jyviko in #808
  • test: reference case for a fillet with a B-spline radius by @jyviko in #810
  • fix(ui): Single-hole snapping takes only shown points and checks the face once per pick (#718 follow-up) by @semmelrinde in #798
  • One tool window for sketch Fillet and the three sketch Chamfers by @wdunn001 in #789
  • fix: STL export welds shared vertices like 3MF (#784) by @SychPL in #816
  • Convert Mesh: say how big a mesh is, the limit, and what converts (#346) by @HiroKenEz in #797
  • Display tessellation plans (2/4): size rules and the facet angle by @jyviko in #803
  • Surface Extrude: sheets from open curves and profile walls (#757) by @jyviko in #815
  • A tool window for the rectangular sketch pattern by @wdunn001 in #799
  • test: give an action-matrix design 300 s to load by @bherbruck in #812
  • perf: imprint partial face contacts only near the contact by @bherbruck in #825
  • fix: coincident faces are pushed apart only where that changes nothing by @NOWN-DEV in #817
  • Construction Geometries, a Sketch Palette row that hides construction geometry by @wdunn001 in #804
  • Release 0.9.0 by @bherbruck in #832

New Contributors

Full Changelog: v0.8.0...v0.9.0

Don't miss a new solidcraft release

NewReleases is sending notifications on new releases.