github bherbruck/solidcraft v0.11.0-nightly.20261015.42.1
SolidCraft v0.11.0-nightly.20261015.42.1 (nightly)

pre-release3 hours 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).

What's new in SolidCraft 0.11.0-nightly.20261015.42.1 is listed below, and the
ROADMAP lists
the known limitations. Designs from every earlier version open in this one.

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.11.0-nightly.20261015.42.1-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.11.0-nightly.20261015.42.1-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>, or sudo snap install solidcraft from the Snap Store), or the .tar.gz.
  • FreeBSD: tar -xzf solidcraft-0.11.0-nightly.20261015.42.1-freebsd-x86_64.tar.gz --strip-components 1 -C /usr/local.
  • Web: solidcraft-web-0.11.0-nightly.20261015.42.1.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

  • ci: run the action-matrix sample on its own; name a hang in an edit round by @bherbruck in #1037
  • test: hold the enclosure lid's press/pull to CPU and memory, not wall time by @bherbruck in #1027
  • Fillets and chamfers meeting at corners on curved faces: what #935 leaves by @tbreckle in #854
  • docs: the camera of screenshots and renders, and a close-up recipe by @NOWN-DEV in #1022
  • One walk over a feature's expressions (1/3, #876) by @jijinbei in #902
  • fix: Convert to Sheet Metal takes a long thin plate by @NOWN-DEV in #1040
  • test(ui): find command dialogs by their published rect by @PhilippBischoff0 in #1011
  • A modelled thread that would cut nothing is refused (#995) by @SychPL in #1018
  • feat: query directional elastic modulus from validated material cards by @0xlillith in #998
  • docs: clear the release notes carried into 0.10.0 by @bherbruck in #1054
  • docs: make the release notes template version-neutral by @bherbruck in #1074
  • Hovered and selected faces light solidly again by @bherbruck in #1064
  • fix: pasted features act on the copies of an import's bodies when their names are numbered by @NOWN-DEV in #1059
  • fix: the server's own folders under a short-named temp path are expanded, not refused by @NOWN-DEV in #1055
  • Export a design's timeline as a replayable command script (#886) by @lasselian in #1045
  • Command search asks the field for focus once (#724) by @thodoristsagko in #1065
  • fix: a planar union leaves no sliver where an edge crosses its neighbour by their shared corner by @NOWN-DEV in #1058
  • fix(macos): open files double-clicked in Finder by @ingvarch in #1031
  • Live preview: the tool alone, following the inputs; OK computes off the window thread by @phanoob in #1020
  • fix: sketch.text refuses inputs it doesn't understand by @NOWN-DEV in #1057
  • Fonts: order CJK fallbacks by UI language so a Chinese word keeps one baseline by @Noly1990 in #1070
  • A chamfer of a hole corner is one bevel (#814) by @thodoristsagko in #1067
  • Taper any profile, sketch text included by @phanoob in #1014
  • fix: renaming a body keeps the names of its duplicates by @NOWN-DEV in #1056
  • Repair next_id and reject duplicate ids on load (#1016) by @lasselian in #1050
  • Render: bounded opaque surface contract and numerical BRDF reference by @0xlillith in #1019
  • Tell people when a newer release is out by @bherbruck in #1100
  • Fix the startup crash on D3D12 with FXC: CPU fallback for the tessellation pipeline, FXC-friendly shader (#1098) by @bherbruck in #1099
  • Straight edges stay one edge after cuts (#1049) by @bherbruck in #1101
  • Test that joining a patterned lobed disc is not refused (#1029) by @lasselian in #1051
  • doc: keep a level piece's number when its centre's low bits move by @nekomario28 in #1073
  • fix: update input field text selection on changing value during action by @javl in #1079
  • Update now: download, verify and install a release in one click by @bherbruck in #1118
  • A fillet of a vanished edge says the name is gone (#775) by @thodoristsagko in #1066
  • One walk over a feature's references (2/3, #876) by @jijinbei in #988
  • Thin Extrude: walls of a set thickness along sketch curves (#721) by @lasselian in #991
  • Refuse fillets and chamfers that run past their faces or cross each other (#1080) by @bherbruck in #1124
  • feat: add Russian (ru) UI localization by @del000 in #1043
  • feat: add local scalar appearance and material libraries by @0xlillith in #863
  • Sheet metal: sheet.perforate, a perforation field exported to the flat pattern and DXF (#732) by @jonaswre in #1041
  • Title bar tabs: outline inactive tabs, keep the hovered Home tab readable (#1115) by @tbreckle in #1116
  • A pasted cylinder Emboss keeps its face and badges the pasted cylinder by @jijinbei in #1132
  • Copy and Paste in the timeline's feature menu by @jijinbei in #1131
  • Right-clicking a construction plane in the browser opens its menu by @jijinbei in #1130
  • fix(sketch): a line end on a curve within the axis snap lands where the preview shows (#1121) by @tbreckle in #1122
  • A text's path becomes construction by @phanoob in #1119
  • fix: Paste New copies an import's bodies under the names its features use when the names are numbered by @NOWN-DEV in #1117
  • One walk over the geometry a feature holds (3/3, #876) by @jijinbei in #1028
  • ui.render and the CPU viewport draw in the window's theme (#974) by @CamWight in #1142
  • Startup never stops at a bad settings file or a missing GPU; safe mode and troubleshooting page by @bherbruck in #1138
  • STEP export: extruded arcs, straight rounds and countersinks as native cylinders and cones (#612) by @erkexzcx in #1139
  • Close kinematic loops: driven joints move four-bars and slider-cranks by @SychPL in #1141
  • io: hostile-input tests for the SVG and DXF readers by @nekomario28 in #1083
  • Keep Open and Save asynchronous to prevent macOS resize crashes by @Karl-VonRichter in #1127
  • Agent-built designs: stop redoing whole-design work on every command (#1147) by @bherbruck in #1148
  • fix: an agent's folders hold for MCP file loads and a design's font files by @SychPL in #1112
  • fix: refold a flat cut-out with a corner on a bend line or a hair beside it by @NOWN-DEV in #1095
  • Loft surfaces follow their sections by distance (#968) by @gvocale in #1084
  • A path into a missing folder says the folder is missing (#1077) by @lasselian in #1082
  • Make sketch patterns associative and editable by @Karl-VonRichter in #1103
  • feat: the flat-pattern DXF keeps ellipses, splines and text as ELLIPSE and SPLINE by @NOWN-DEV in #1096
  • STEP assemblies: mesh a repeated part once and place it for its instances by @bherbruck in #1152
  • Viewport: keep the model scene in blocks and upload only what changed (#1147) by @bherbruck in #1154
  • body.rename: follow the body in later features' participants (a primitive's targets) (#1108) by @HiroKenEz in #1159
  • Opening a design shows the model built so far (#1147) by @bherbruck in #1158
  • Clarify bug-report submission and stop dialog growth at fractional scale by @Karl-VonRichter in #1085
  • Meshing: start a face's boundary walk at a point the surface search finds (#882) by @erkexzcx in #1157
  • Display tessellation: trimmed faces as four-sided patches by @jyviko in #1163
  • Hide and show joints in the browser (#1160) by @bherbruck in #1168
  • Release 0.11.0 by @bherbruck in #1182
  • fix: compile the library export callback on wasm by @0xlillith in #1173
  • feat: add bounded PNG/JPEG texture input admission by @0xlillith in #909
  • Windows: start Direct3D 12 first, and Vulkan only without a D3D12 GPU by @bherbruck in #1190
  • Submit published releases to WinGet by @bherbruck in #1222
  • Render R2: persist named setups and preserve geometry on render-only edits by @0xlillith in #667
  • Colour vision modes: Protan, Deutan and Tritan in Preferences › Graphics (#778) by @CamWight in #1007
  • A failed feature has a mark of its own in the timeline and the Feature History (#972) by @CamWight in #1180
  • Two tests pass on a Windows checkout: a CRLF parse and an 8.3 TEMP path (#1186) by @CamWight in #1211
  • Copy a feature's error or warning message from the history menu by @tbreckle in #1226
  • Native crash capture on Windows, and startup steps in crash reports by @bherbruck in #1215
  • Motion links carry a value through a chain stored in any order by @SychPL in #1203
  • Taper: the review of #1014 (spline sides follow their offset, no silent limits, face names kept) by @phanoob in #1204
  • Equal cylinders crossing each other no longer refuse a cut (#788) by @lasselian in #1179
  • Sketch fillet and chamfer: a construction line at the corner is not a side (#1026) by @HiroKenEz in #1176
  • body.rename: renaming a counted body keeps later counted names (#1109) by @HiroKenEz in #1199
  • Test: a pattern of touching cuts builds without fallback (#400) by @erkexzcx in #1144
  • Drive Joints says where and why a drive stopped short by @SychPL in #1169
  • Build bodies on the CPU on AMD FirePro under Metal (GPU hang on Mac Pro 2013) by @devrosx in #1171
  • Design properties: project, author and licence in the design, its exports and inspect_design (#1015) by @lasselian in #1189
  • Join a floor into the hole it fills: grow the boss into the wall around it (#1212) by @tbreckle in #1217
  • Degrees of freedom count closed loops by @SychPL in #1206
  • fix: a lip swept flush around a rounded rim joins the body it sits on by @queball1999 in #1164
  • French (fr) UI localization by @rlartot in #1224
  • render: persist and consume opaque PBR in product preview and PNG by @0xlillith in #1046
  • Live preview: the tool alone, the boolean only on OK, computed off the window thread (follow-up to #1020) by @phanoob in #1201
  • Add Ukrainian localization (uk) by @BrunIF in #1196
  • fix: a join keeps its tool exact where the tool ends in the part's faces by @NOWN-DEV in #1244
  • feat: faces by name in the face commands; model.faces gives a point on each face and a cylinder's axis and radius by @NOWN-DEV in #1243
  • feat: run and eval can write their JSON to a file (--json-out) by @NOWN-DEV in #1242
  • Parameters: arrow keys move the cursor while renaming (#1165) by @DuBearte in #1248
  • Untrim: holes removed and a face restored to its natural bounds (#761) by @jyviko in #1150
  • Action matrix: nightly shards cut by measured cost, a fresh baseline, and a determinism check by @bherbruck in #1256
  • Robustness goldens: record seed 13 after #1164 (a flush pattern copy now joins) by @bherbruck in #1268
  • Smart Extrude: direction from the picked side, and a Cut stays a Cut (#1257) by @bherbruck in #1261
  • Ruled Surface: strips off an edge chain, exact where possible (#762) by @jyviko in #1151
  • Parameters: reset the new row's expression after Add (#1170) by @DuBearte in #1235
  • Parameters: outline the Delete button only on hover (#1178) by @DuBearte in #1241
  • Browser: show given names as typed, not translated as labels (#1228) by @DuBearte in #1264
  • Header: size the Report a bug button to its translated label (#1145) by @DuBearte in #1274
  • Loft: refuse a section with a hole instead of filling it (#1184) by @DuBearte in #1254
  • docs: browser runtime design (craft-libs, workers, #1221) by @wdunn001 in #1258
  • Extend any surface: natural, tangent and curvature, up to a target (#760) by @jyviko in #1166
  • Add Touchpad navigation: Shift to pan, Alt/Option to orbit by @senilio in #1220
  • Title bar: inactive tabs without outlines, File menu, Help on the right by @bherbruck in #1277
  • Sketch: fillet and chamfer a corner of curves drawn to meet at a point (#1208) by @DuBearte in #1282
  • Feature walks: generate them from field roles with #[derive(Walk)] by @jijinbei in #1251
  • Action matrix regressions of #1255: knuckle rounds, thin holes, a 45° flange hole, an axis after an edit by @bherbruck in #1280
  • Display imported modelled threads without artifacts (#1289) by @bherbruck in #1300
  • fix(kernel): reject arc blends that collapse a side face by @Karl-VonRichter in #1281
  • Blends: a curved seam where the edge chain runs on holds the contact on itself (#1213) by @gvocale in #1291
  • fix: preserve total thickness for symmetric extrusions by @Karl-VonRichter in #1260
  • Section: leave the origin and construction planes and axes whole (#1229) by @DuBearte in #1286
  • fix: a new empty design takes Units of new designs (#1205) by @raythurman2386 in #1283
  • Fix boss-bottom blends and merged arc-corner surfaces by @Karl-VonRichter in #1294
  • Test: an inside flange on a turned plate closes at every whole-degree turn by @NOWN-DEV in #1311
  • Preferences ▸ Graphics ▸ Display quality (Coarse/Normal/Fine/Ultra) (#1287) by @bherbruck in #1319
  • component.list: a compact form for large assemblies by @SychPL in #1305
  • Joint drives say when they move nothing; drive values in degrees; quiet replies by @SychPL in #1304
  • ui.camera: read, set and replay the viewport camera by @SychPL in #1302
  • CLI snapshot takes --in; an unknown command suggests close ids by @SychPL in #1301
  • MCP: a bridged server starts without the app and connects once it runs by @SychPL in #1298
  • SpaceMouse: on Linux, default to the driver's object-mode axes (#1172) by @DuBearte in #1292
  • Viewport: a legend for the Draft, Accessibility and Curvature Map analyses (#973) by @DuBearte in #1299
  • Agent skill for mechanisms: joints by coordinates, loops, links, motion by @SychPL in #1315
  • feat: STEP import takes up for Y-up files and names for the bodies' names by @NOWN-DEV in #1312
  • Drive Joints opens on the picked joint; ui.start takes params by @SychPL in #1297
  • feat: Convert to Sheet Metal takes bent parts as modelled: radius and chamfer bends, holes and engravings in their faces by @NOWN-DEV in #1314
  • feat: snapshot --camera and saved views, and grid: false / axes: false for renders by @NOWN-DEV in #1313
  • Optional supersampling (SSAA) for the viewport, adaptive and capped to the texture limit (#1288) by @bherbruck in #1321
  • Sketch: symmetry about the origin point or an origin axis (#1075) by @DuBearte in #1318
  • Save as mesh: one dialog for STL and 3MF, with Send to slicer by @froglemonade2 in #1272

New Contributors

Full Changelog: v0.10.0...v0.11.0-nightly.20261015.42.1

Don't miss a new solidcraft release

NewReleases is sending notifications on new releases.