github tangency-labs/solidcraft v0.21.0-rc.1
SolidCraft v0.21.0-rc.1

pre-release3 hours ago

Designs saved in 0.21.0-rc.1 use format 33 and don't open in 0.20.0 or older.

Release candidate. This is a pre-release of 0.21.0 for testing; 0.20.0 stays the current release, and the in-app update check keeps offering it. About 150 more reviewed pull requests are landing over the next hours and will go into rc.2 and the final 0.21.0. Please report anything that looks off.

SolidCraft is open-source parametric 3D CAD in Rust: sketch, constrain, extrude, and change a parameter to watch the timeline rebuild. Website · documentation · try it in the browser · Discord · issues.

Why 0.21.0: a minor release with a new design format (associative motion traces, and freed body names that aren't reused), faster and more robust drawing, and STEP and IGES files from SolidWorks that stand up on their own.

Rendering and graphics

  • Cached viewport pictures: a repaint over a still view reuses the last picture, and the scene draws into its own target under a 1× window pass. On a 147-body, 8.5-million-triangle assembly, GPU time while moving the pointer over empty space dropped from 1752 ms to 1006 ms over 8 s (#5187).
  • AMD on Direct3D 12: bodies draw again with 4× anti-aliasing; the ground shadow no longer sends every frame through the transparency path (#5255).
  • OpenGL renders the scene at 1x anti-aliasing again, as it did before the cached pictures change (#5605).
  • A lost GPU stops drawing instead of crashing, for example when Windows resets the graphics driver (#4229).
  • Idle GPU: an untouched window draws nothing with the frame-rate readout on; it kept an M2 Max at about 91% GPU before (#5165).
  • Readouts: the frame-rate readout and surface-analysis legend stay above the floating History card (#4129).
  • Mesh bodies measure their size once, when made (#4663).

Import

  • SolidWorks STEP and IGES files stand up automatically: a file from a program known to save Y up turns upright as it opens, in one undo step. Preferences › Design › "Stand up Y-up files automatically" turns it off (#5191).

Interface

  • App icon: the borderless mark everywhere, from the Windows installer to the Linux icons (#5465, #5548).
  • Home: a recent design's location shows in one tooltip, not two (#5208).
  • Web: Ctrl+Tab and Ctrl+Shift+Tab switch browser tabs again (#5350).
  • Flatpak: the agent chat says why no agent is found and how to allow one (#4769).
  • Assistant: Anthropic-compatible API agents can be added beside OpenAI-compatible ones (#5017).
  • Browser: Shift+click above the anchor selects the whole range (#4997).
  • Timeline: delete several selected features at once, Shift+click ranges, and delete after the history marker (#5006).
  • Agents: the agent cursor follows the agent's own pointer input (#5162).

Modeling

  • Extract to File: a component modelled in an assembly can move into its own linked design, from its right-click menu (#5113).
  • Inserted STEP parts: a sketch on an inserted part's face joins and cuts that part, Through All too, instead of making a separate body (#5115).
  • Body names: a renamed body keeps its number, and the next body doesn't take the freed name (#5053).
  • Sketch drag: a linkage with redundant parallelogram constraints still moves (#4983).
  • Robustness: opening a design range-checks integer-valued coordinates (#5026); snap fits refuse sizes too small to build (#5027); extrude and loft refuse duplicate profile indexes (#5028); the MCP stdio server bounds request lines before reading them whole (#4972).
  • Motion Trace: kept traces regenerate when their links or driving conditions change (#5270).
  • Plane at Angle takes a planar face as its base (#1956).
  • Extrude without a profile selection keeps the holes of nested loops instead of filling them (#5176).
  • Joints: interactive joint work skips redundant analysis (#5186); a joint origin's name given as a face says to pass it as the origin (#5179).
  • Scripts: component.create refuses parameters it does not take (#5178).
  • Formats: one table names every import and export format, its extensions and options (#5217).

Compatibility

0.21.0-rc.1 writes design file format 33 (0.20.0 wrote 31): format 32 for associative motion traces and format 33 for the body names a rename freed. It opens every earlier design, but 0.20.0 and earlier refuse a design saved by 0.21.0-rc.1.

Thanks

Thank you to everyone who contributed: @chrishamm, @dannyow, @froglemonade2, @HiroKenEz, @jeremymiribung-blip, @N3MI-DG, @oursland, @raykholo, @sthifen, @SychPL, @tahazarif10, @takuto-NA, @vdirienzo and @wdunn001.

Install

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.21.0-rc.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.21.0-rc.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.21.0-rc.1-freebsd-x86_64.tar.gz --strip-components 1 -C /usr/local.
  • Web: solidcraft-web-0.21.0-rc.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 ai.storyteller.solidcraft
flatpak run ai.storyteller.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 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.

Don't miss a new solidcraft release

NewReleases is sending notifications on new releases.