diff --git a/.github/release-notes.md b/.github/release-notes.md index d72930be..73495440 100644 --- a/.github/release-notes.md +++ b/.github/release-notes.md @@ -5,68 +5,96 @@ parameter to watch the timeline rebuild. [Documentation](https://bherbruck.githu [issues](https://github.com/bherbruck/solidcraft/issues). AI agents can model with it over MCP: `solidcraft-cli mcp` ([how](https://bherbruck.github.io/solidcraft/guide/mcp.html)). -**Why 0.8:** this is a minor bump because the design file format moved to version 16, and +**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 far more faces.** Sketches, offset planes and press-pull now attach to - Cut, Hole and chamfer faces, each pattern or mirror copy, side walls a Join merged and the - pieces a later feature split a face into - ([#625](https://github.com/bherbruck/solidcraft/pull/625)), to moved or pasted components - ([#610](https://github.com/bherbruck/solidcraft/pull/610)) and beside long thin holes - ([#629](https://github.com/bherbruck/solidcraft/pull/629)). Across the test models, flat-face - actions pass 70% of the time, up from 61% (sketch 52% → 71%, offset plane 52% → 71%, - press-pull 41% → 60%). -- **Fillet and chamfer** handle a single edge whose ends meet curved or slanted faces, and blend - smooth chains of edges ([#646](https://github.com/bherbruck/solidcraft/pull/646)): 83% → 93% - of edges. -- **New:** user-defined physical materials stored in the design, linked components (insert - another design), saved body visibility, named views through `view.apply`, sketch text fonts, - corner reliefs, flanges on flanges, edge flanges that trim the base along their edge, grouped - sketch tools, Home thumbnails, and an improved Select Other list. -- **Fixes:** filleting beside a modeled thread no longer freezes the app, a loft standing on a - face fuses with it, and many sheet metal, hole and sketch fixes. -- **Booleans are checked.** A Boolean retry that would change the part away from the tool is now - refused instead of returning wrong geometry, which fixes stray cuts - ([#616](https://github.com/bherbruck/solidcraft/issues/616)). MCP feature replies include - warnings. -- **Opening a design** keeps the window draggable, shows progress, and can be cancelled with - Cancel or Esc. -- **Under the hood:** compact MCP replies, a kernel-neutral native B-rep format, and an opt-in - preview from the native cache while a design rebuilds. -- **Quality:** every ordinary action is run on every face, edge, vertex and body of the test - models; CI blocks regressions and the full matrix runs nightly. -- **Security:** private vulnerability reporting is on; see - [SECURITY.md](https://github.com/bherbruck/solidcraft/blob/main/SECURITY.md). +- **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](https://github.com/bherbruck/solidcraft/pull/677), fixing + [#681](https://github.com/bherbruck/solidcraft/issues/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](https://github.com/bherbruck/solidcraft/issues/679)), faces that only partly overlap + fuse correctly ([#704](https://github.com/bherbruck/solidcraft/pull/704), fixing + [#674](https://github.com/bherbruck/solidcraft/issues/674)), and booleans build the same body + every time ([#748](https://github.com/bherbruck/solidcraft/pull/748)), so a design rebuilds + identically on every run. +- **Sketch:** type a dimension right after picking (D, click, type; + [#695](https://github.com/bherbruck/solidcraft/pull/695)); redundant but consistent + constraints are accepted, such as a rectangle clover + ([#699](https://github.com/bherbruck/solidcraft/pull/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](https://github.com/bherbruck/solidcraft/pull/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](https://github.com/bherbruck/solidcraft/pull/449)); Convert to Sheet Metal from a solid + or shelled body by its bend edges ([#725](https://github.com/bherbruck/solidcraft/pull/725)); + a tear corner relief ([#809](https://github.com/bherbruck/solidcraft/pull/809)); tapered and + variable fillet radii ([#675](https://github.com/bherbruck/solidcraft/pull/675), + [#749](https://github.com/bherbruck/solidcraft/pull/749)) with a radius spline you drag on the + edge ([#752](https://github.com/bherbruck/solidcraft/pull/752)); free-form cut-outs stay exact + in sheet-metal flat patterns ([#692](https://github.com/bherbruck/solidcraft/pull/692)) and edge + flanges run along what cut-outs leave of an edge + ([#702](https://github.com/bherbruck/solidcraft/pull/702)); and Surface Extrude, sheets from + open curves and profile walls ([#815](https://github.com/bherbruck/solidcraft/pull/815)). +- **View:** Home and Fit frame only what is shown, and a middle double-click goes Home + ([#701](https://github.com/bherbruck/solidcraft/pull/701)); a cube navigator option + (thanks @Karl-VonRichter, [#664](https://github.com/bherbruck/solidcraft/pull/664)); the window + stays responsive and draggable while a design opens, with a Cancel button that stays put + ([#643](https://github.com/bherbruck/solidcraft/pull/643), + [#686](https://github.com/bherbruck/solidcraft/pull/686)). +- **Quality:** cuts no longer split walls they don't touch + ([#670](https://github.com/bherbruck/solidcraft/pull/670)); booleans are faster and use less + memory ([#714](https://github.com/bherbruck/solidcraft/pull/714)); STL export welds shared + vertices ([#816](https://github.com/bherbruck/solidcraft/pull/816)); complete Japanese + translation ([#753](https://github.com/bherbruck/solidcraft/pull/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](https://github.com/bherbruck/solidcraft/pull/728)). +- A new README demo and the SELENE rover showcase. -**File format 16.** Designs are now format 16 (`solidcraft/16`). SolidCraft 0.7 and older can't -open designs saved by 0.8, as a container or as JSON; keep a copy of a file you may still open -in 0.7. Files from every earlier version still open in 0.8. +**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. -**Linux app ID.** The Linux app ID is now `ai.storyteller.solidcraft` (it was -`ai.storyteller.solvecraft`). Flatpak users from the SolidCraft feed: `flatpak update` reports -the old app as end-of-life and asks to replace it; say yes, and your settings come along. The -`.deb`, `.rpm` and AppImage remove the old menu entry on upgrade or first launch. +**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 faces still can't take an attached sketch: after Revolve, Offset Face or Boss - ([#494](https://github.com/bherbruck/solidcraft/issues/494)), sheet metal thickness faces - ([#495](https://github.com/bherbruck/solidcraft/issues/495)), Loft, Sweep and Coil faces - ([#561](https://github.com/bherbruck/solidcraft/issues/561)), faces after a Draft or a tapered - Extrude ([#563](https://github.com/bherbruck/solidcraft/issues/563)) and a Shell's rim - ([#564](https://github.com/bherbruck/solidcraft/issues/564)). -- A Hole on a sheet metal face is refused - ([#560](https://github.com/bherbruck/solidcraft/issues/560)); some through-all holes along a - wall or beside curved faces still fail - ([#559](https://github.com/bherbruck/solidcraft/issues/559)). +- Some through-all holes along a wall or beside curved faces still fail + ([#559](https://github.com/bherbruck/solidcraft/issues/559)), as does a hole crossing an + equal-radius hole ([#788](https://github.com/bherbruck/solidcraft/issues/788)). - Some fillets are still refused, such as along an outline of lines and arcs ([#431](https://github.com/bherbruck/solidcraft/issues/431)). -- Cutting a coaxial cylinder from a thin disc can lose a little volume - ([#500](https://github.com/bherbruck/solidcraft/issues/500)); an edge flange with different +- Some faces still can't take an attached sketch: a revolve's flat faces before a later feature + ([#726](https://github.com/bherbruck/solidcraft/issues/726)) and faces after Split Body or + Combine Intersect ([#565](https://github.com/bherbruck/solidcraft/issues/565)). +- Fillet and chamfer accept an edge pick far from any edge and change the nearest one + ([#783](https://github.com/bherbruck/solidcraft/issues/783)); Press Pull fails on faces beside + rounds ([#562](https://github.com/bherbruck/solidcraft/issues/562)). +- `sheet.fold` refuses a fixed point exactly on the sheet face + ([#685](https://github.com/bherbruck/solidcraft/issues/685)), and some tabs on L-shaped or + collinear blanks can't be folded ([#638](https://github.com/bherbruck/solidcraft/issues/638), + [#639](https://github.com/bherbruck/solidcraft/issues/639)); an edge flange with different per-edge angles leaves gaps at the corners ([#501](https://github.com/bherbruck/solidcraft/issues/501)). - More in [ROADMAP.md](https://github.com/bherbruck/solidcraft/blob/main/ROADMAP.md#known-limitations). +**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 diff --git a/Cargo.lock b/Cargo.lock index 026c8bef..b5906e2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3281,7 +3281,7 @@ dependencies = [ [[package]] name = "solidcraft" -version = "0.8.0" +version = "0.9.0" dependencies = [ "eframe", "egui", @@ -3298,7 +3298,7 @@ dependencies = [ [[package]] name = "solidcraft-cli" -version = "0.8.0" +version = "0.9.0" dependencies = [ "serde_json", "solidcraft-engine", @@ -3307,7 +3307,7 @@ dependencies = [ [[package]] name = "solidcraft-doc" -version = "0.8.0" +version = "0.9.0" dependencies = [ "log", "serde", @@ -3322,7 +3322,7 @@ dependencies = [ [[package]] name = "solidcraft-engine" -version = "0.8.0" +version = "0.9.0" dependencies = [ "log", "serde", @@ -3338,7 +3338,7 @@ dependencies = [ [[package]] name = "solidcraft-geom" -version = "0.8.0" +version = "0.9.0" dependencies = [ "serde", "serde_json", @@ -3347,7 +3347,7 @@ dependencies = [ [[package]] name = "solidcraft-io" -version = "0.8.0" +version = "0.9.0" dependencies = [ "quick-xml", "serde", @@ -3362,7 +3362,7 @@ dependencies = [ [[package]] name = "solidcraft-kernel" -version = "0.8.0" +version = "0.9.0" dependencies = [ "log", "rayon", @@ -3380,7 +3380,7 @@ dependencies = [ [[package]] name = "solidcraft-mcp" -version = "0.8.0" +version = "0.9.0" dependencies = [ "serde_json", "solidcraft-engine", @@ -3388,7 +3388,7 @@ dependencies = [ [[package]] name = "solidcraft-render" -version = "0.8.0" +version = "0.9.0" dependencies = [ "image", "serde", @@ -3398,7 +3398,7 @@ dependencies = [ [[package]] name = "solidcraft-sketch" -version = "0.8.0" +version = "0.9.0" dependencies = [ "serde", "serde_json", @@ -3409,7 +3409,7 @@ dependencies = [ [[package]] name = "solidcraft-ui-egui" -version = "0.8.0" +version = "0.9.0" dependencies = [ "egui", "egui-wgpu", @@ -3424,7 +3424,7 @@ dependencies = [ [[package]] name = "solidcraft-web" -version = "0.8.0" +version = "0.9.0" dependencies = [ "eframe", "egui", @@ -4847,7 +4847,7 @@ checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" [[package]] name = "xtask" -version = "0.8.0" +version = "0.9.0" dependencies = [ "serde_json", ] diff --git a/Cargo.toml b/Cargo.toml index 0269567f..10fefeb0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ members = ["crates/*", "apps/*", "xtask"] exclude = ["vendor"] [workspace.package] -version = "0.8.0" +version = "0.9.0" edition = "2024" license = "MIT OR Apache-2.0" rust-version = "1.95"