github tangency-labs/solidcraft v0.42.0-nightly.20261115.134.1
SolidCraft v0.42.0-nightly.20261115.134.1 (nightly)

pre-release57 minutes 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.42.0-nightly.20261115.134.1 is listed below, and the
ROADMAP lists
the known limitations. Designs from every earlier version open in this one.

New app ID. The app ID is now io.tangencylabs.solidcraft (it was ai.storyteller.solidcraft,
and ai.storyteller.solvecraft up to 0.7): flatpak update offers to replace the old app, the
.deb, .rpm and AppImage remove the old menu entry, and settings stay. On macOS the bundle ID
changed too, so macOS asks once more for the permissions it had granted.

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.42.0-nightly.20261115.134.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.42.0-nightly.20261115.134.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.42.0-nightly.20261115.134.1-freebsd-x86_64.tar.gz --strip-components 1 -C /usr/local.
  • Web: solidcraft-web-0.42.0-nightly.20261115.134.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://docs.solidcraft.io/flatpak/solidcraft.flatpakrepo
flatpak install --user solidcraft io.tangencylabs.solidcraft
flatpak run io.tangencylabs.solidcraft

A remote added from the old bherbruck.github.io address no longer finds updates: run
flatpak remote-modify --user --url=https://docs.solidcraft.io/flatpak/repo/ solidcraft, then
flatpak update --user.

Flatpak installs under an old ID (ai.storyteller.solidcraft, or ai.storyteller.solvecraft from 0.7 or
earlier): flatpak update --user offers to replace it with io.tangencylabs.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

  • Mirror: two holes placed from the same body's edges mirror together instead of losing their edge reference by @raykholo in #16802
  • Extrude: a profile drawn as one closed spline with a sharp trailing edge extrudes by @GrumpyOldNerd in #16800
  • Select Same Look: input and output schemas for select.same_look by @0rdnungsamt in #16724
  • solidcore: the advanced surface intersector no longer reverses an empty trace, which failed the intersection (#13711) by @MarkusReichart in #16760
  • Perspective view: input and output schemas for view.perspective by @0rdnungsamt in #16529
  • Extrude: a cut up to a face picked with To Object builds when the preview shows it by @raykholo in #16717
  • Boolean and Split Body: a body with a cylinder face is no longer refused over a generating curve 4e-8 mm off its cylinder by @raykholo in #16504
  • Booleans: cutting many holes in one cut no longer runs point solves whose answer nothing reads (#16704) by @liorknafo in #16708
  • Component Color: input and output schemas for component.cycle_color by @0rdnungsamt in #16574
  • solidcore: SolidCraft's planar region booleans run on solidcore-ops, made to match first (RFC 0003 step 2.10) by @brett19 in #15475
  • Move Sketch Points: input and output schemas for sketch.move_points by @0rdnungsamt in #16791
  • solidcore: rounds at a concave corner a ten-thousandth of a degree off straight build (#15418) by @brett19 in #16594
  • Copy Look: input and output schemas for appearance.copy by @0rdnungsamt in #16520
  • Fillet: a small round on a primitive cylinder's rim builds again by @raykholo in #16749
  • Extrude: a From or To plane near a face runs from and to the plane, not the face by @raykholo in #16812
  • Sketch dimensions shown with Show Dimension are drawn under the panels, not over them by @raykholo in #16852
  • Browser: hovering a feature or sketch on the timeline highlights its row (#16845) by @umutacil in #16848
  • Join: a box onto a face that a near-tangent arc grazes no longer fails with 'another entity is already related' by @raykholo in #16643
  • Viewport: hovering a face that is already picked lifts its highlight and outlines edges (#16807) by @umutacil in #16832
  • Extrude cut: cuts through an imported STEP body no longer refused for vertex tolerance by @raykholo in #16224
  • Join: a slab a hair past a fillet's tangent edge no longer fails the vertex gap check (2e-5 to 2.5e-5 mm) by @raykholo in #16538
  • Navigation: zooming in with perspective stops at a minimum distance and keeps the target on the model by @raykholo in #16690
  • Sketch ribbon: pinned constraints are small icons in the Constrain grid by @plexi32 in #10581
  • Screenshots no longer crash when the GPU driver refuses a buffer (#4791) by @raykholo in #4796
  • Assemblies: dragging in the 3D view moves the part selected in the Browser, even behind another part (#15648) by @glitchau in #15982
  • History: suppress or unsuppress several selected features at once (#16245) by @rugbymauri in #16302
  • Assemblies: preserve cosmetic threads when inserting linked parts (#16693) by @cfaulkingham in #16741
  • Booleans finish sooner: the validity check searches each surface for its poles once, not again for every test that asks (#16901) by @N3MI-DG in #16903
  • Extrude, Sweep and other profile dialogs: a region picked twice no longer sends a repeated profile by @raykholo in #16241
  • solidcore: retire the planar_section_face_tolerance flag by @brett19 in #16571
  • Goldens: blessing rewrites only the cases the check reports as changed, so float noise never reaches a golden diff by @raykholo in #16886
  • Replace Face and other body-named face features: a face of another body near the pick no longer takes the named body's place by @leon-vv in #16915
  • Surface Sweep: a circle swept along a rounded rectangle path is no longer refused by the result check by @raykholo in #16223
  • solidcore: a round whose rail meets its end face past the side edge's end ends inside its face (#15767) by @brett19 in #16595
  • Merge faces: a face merged across a cylinder's seam gets its seam edge, so Offset Faces on a thread no longer fails the loop check by @raykholo in #16867
  • DXF export: R2000 files carry the layout objects and table entries AutoCAD requires to open them by @raykholo in #16904
  • Rib: find a tray floor whatever the tray's length (ray crossings instead of coarse steps) by @leon-vv in #16918
  • solidcore: retire analytic_corner_failure_is_false (a failed analytic corner surface falls back to the Coons patch) by @brett19 in #16514
  • Sketch Intersect: create both semicircle endpoint points (#15796) by @cfaulkingham in #16917
  • Chamfer and fillet: a narrow blend on a cylinder's rim builds, because a ray from just under the top no longer misses the wall (#16019, #13673) by @MarkusReichart in #16052
  • solidcore: blends at a near-straight corner join only below the B-rep's intersection tolerance (#16627) by @brett19 in #16681
  • Curve stretching: make closed curves independent of selection order (#16632) by @cfaulkingham in #16883
  • Occurrence commands: accept a single-occurrence component's name and name the occurrences in the error (#8197) by @morteng in #15128
  • Booleans: cuts no longer fail with 'related vertex is not an end of the edge use' by @raykholo in #16425
  • Hole: a tapped hole saves its thread's tolerance class, such as 6H or 2B (#16336) by @CamWight in #16337
  • solidcore: retire twist_simple_duw_sign (twist Duw sign, AD-certified partials) by @brett19 in #16482
  • Mirror and pattern copies of a fillet keep its type, corners and setbacks by @raykholo in #16920
  • Joints: reject limits whose minimum exceeds the maximum (#9088) by @cfaulkingham in #16416
  • SpaceMouse on Linux: keep spacenavd connected until direct access returns (#16467) by @Hainlein4711 in #16889
  • Cell Grid: keep or drop cells by their distance to the field's own edges, and a margin (#14044) by @KazW in #16188
  • solidcore: the shell's exact edges meet a plane square to a cone's axis at its exact circle (#16587) by @brett19 in #16589
  • Fillet: a round that stops at a crease is no longer refused as overlapping rounds it never reaches (#16729) by @MarkusReichart in #16856
  • solidcore: a curve extended keeping its proportion reaches the asked length or is refused (#16635) by @brett19 in #16837
  • Patterns of hole cuts: a cut no longer measures its target's exact box to see that the tool meets it by @ancientastronauttheorist in #16924
  • Fillet: a regression test for rounds at the foot of a thin tab that meet across its end by @raykholo in #16900
  • Sketch profiles: two rounded caps over one line both close a profile by @plexi32 in #16566
  • Install Plugin: a source-code .zip is refused with a pointer to the release's plugin .zip (#16736) by @0rdnungsamt in #16958
  • Sketch Project: a click inside a hole projects its rim by @SamD98 in #16343
  • View DXF export: the exact front view of a sheet metal part with round corner reliefs exports instead of running out of its work budget (#16814) by @khanahmad4527 in #16952
  • Pattern and mirror: a copied fillet rounds the same edges on every copy, even when it was picked at a vertex by @raykholo in #16945
  • Preferences: group navigation bar visibility and idle settings (#16859) by @cfaulkingham in #16967
  • History tooltips: a feature's whole error shows, in the error colour, wherever its mark shows (#8834) by @sn3ro in #16895
  • solidcore: the section certificate keeps the offset's cancellation near a focal distance (#16652) by @brett19 in #16894
  • Booleans: a cut with a list of tools sets up its bookkeeping once, not once per tool (#16705) by @liorknafo in #16709
  • solidcore: retire the Nx1 and 3x2 corner side-edge flags by @brett19 in #16961
  • solidcore: retire the two plane flags (plane_reparameterize_moves_origin, plane_recognition_origin_after_axes) by @brett19 in #16960
  • Assembly: prevent commands from changing the wrong item when names repeat (#9738) by @cfaulkingham in #16974
  • Edit Hole: keep one face selected after changing placement (#10692) by @cfaulkingham in #16989
  • solidcore: retire the chamfer_cone_stored_as_cone flag by @brett19 in #16573
  • Stitch: a design that stitched on 0.3x is no longer refused by the result check over small edge and vertex gaps by @raykholo in #16373
  • Canvases: show images on Three Points and Along Path planes (#16153) by @cfaulkingham in #16198
  • solidcore: generic-blend records the Roll-over corner and the curved Setback plan (#13832) by @brett19 in #16232
  • Patterns and copies of filleted bodies: each copy is moved exactly, without a round trip through SMLib by @oursland in #16993
  • macOS: Run Plugin no longer ends the app (hardened runtime entitlement for compiled plugin code) by @raykholo in #16155
  • Preferences, Layout: choose how a design's views show and open by @Nathan-Dane in #16539
  • solidcore: retire the fillet_rails_meet_at_one_end_point flag by @brett19 in #16817
  • Open a design in a second window: launch code and a --view start option by @Nathan-Dane in #16540
  • Control: the stale-token test passes where ps cannot run (#6944) by @AlumnoTuring in #16215
  • Patterns: copies are drawn from their body's triangles, moved, so a large pattern shows in seconds by @oursland in #16968
  • Plugin forms: a choice shows each option's title, and sends its value by @raykholo in #16849
  • Boundary surface: edges carry the proved fit error of their input curves, so a boundary surface and a loft on one arc stitch by @raykholo in #16510
  • Sweep: a circle along lines and arcs in perpendicular planes no longer gets a control net that doubles back by @raykholo in #16966
  • Geometry tests: build circular face boundaries in the UV plane (#16495) by @cfaulkingham in #17039
  • Mirrored copies: a dragged copy's cylinder wall is split into triangles the same way as a fresh copy's (#16815) by @khanahmad4527 in #17049
  • Plugins part 2: approve what a plugin may do at install, remove plugins, and show their entries where they ask by @raykholo in #15609
  • UI: the Patch tool takes a 3D spline (#16186) by @vdirienzo in #16685
  • Navigator: remove the extra navigator style; the axes navigator stays by @bherbruck in #17003
  • solidcore: a traced span on a sphere is accepted only with a certified UV image (#16669) by @brett19 in #16670
  • SVG import: keep closed profiles when spline outlines are repeated backwards (#15408) by @cfaulkingham in #17059
  • Fillet: rounds joined at a crease of a spline loft's rim keep a certified definition or the fillet fails, never a face that cannot be read back by @raykholo in #17020
  • Extrude: box selection picks curves for a thin extrude's Profiles field, as a click does by @raykholo in #17084
  • Intersect: a tool's rounds all survive where they graze the other body's rounds within the tolerance by @raykholo in #16946
  • Fillet: small rounds on a shell's lip edges sew into the body instead of being refused at the creases by @raykholo in #17025
  • Cell Grid: a conic with an extremely short chord stays within 0.001 mm of its chords (#17050) by @KazW in #17051
  • Shell: a rib thinner than two walls stays solid instead of refusing the shell by @raykholo in #17010

New Contributors

Full Changelog: v0.42.0...v0.42.0-nightly.20261115.134.1

Don't miss a new solidcraft release

NewReleases is sending notifications on new releases.