Rename SolveCraft to SolidCraft everywhere, with compatibility shims (#389)
* WIP deep rename (not for push) * WIP2 * WIP3 * WIP4 wxs fix * rustfmt * Rename the remaining identifiers in merged crash-report code Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
27415e4dd7
commit
296683229d
464 files changed
+3408
-2956
No files matched your search
@@ -5,7 +5,7 @@ SolidCraft is a Cargo workspace in layers. A crate only depends on crates in low
|
||||
|
||||
{{#include ../../../../README.md:architecture}}
|
||||
|
||||
The web app, `apps/solvecraft-web`, is the desktop front end compiled to wasm with
|
||||
The web app, `apps/solidcraft-web`, is the desktop front end compiled to wasm with
|
||||
[trunk](https://trunkrs.dev). `xtask` holds the repository's own tooling: `cargo xtask ci`,
|
||||
`layers`, `assets`, `features`, `oracle` and `book`.
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ CommandSpec::new("solid.fillet", "Fillet", fillet)
|
||||
|
||||
`run` is `fn(&mut Session, &Value) -> Result<Value>`, and `enabled` is
|
||||
`fn(&Session) -> Result<(), String>`; the error string is the disabled-button tooltip. The
|
||||
`params` string is the one-line documentation shown by `solvecraft-cli commands`, MCP's
|
||||
`params` string is the one-line documentation shown by `solidcraft-cli commands`, MCP's
|
||||
`list_commands` and the [command reference](../reference/commands.md).
|
||||
|
||||
A command that changes the design is undoable by default: the session snapshots the document
|
||||
|
||||
@@ -9,7 +9,7 @@ SolidCraft types (`Body`, face and edge indices, meshes, measures) and a
|
||||
## `guard`
|
||||
|
||||
truck can panic on geometry it doesn't handle. Every call into it goes through
|
||||
`solvecraft_kernel::guard`, which catches the panic and turns it into
|
||||
`solidcraft_kernel::guard`, which catches the panic and turns it into
|
||||
`KernelError::Internal`, leaving the model unchanged:
|
||||
|
||||
```rust
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
A fillet stores the edges it rounds, a sketch the face it sits on, a shell the faces it opens.
|
||||
If those were face and edge *indices*, an upstream edit that adds a face would move the fillet
|
||||
to another edge. SolveCraft stores **names**, and finds them again every time the timeline
|
||||
to another edge. SolidCraft stores **names**, and finds them again every time the timeline
|
||||
evaluates.
|
||||
|
||||
## Why names follow the kernel's history
|
||||
|
||||
@@ -11,8 +11,8 @@ profile and the wasm build check.
|
||||
| Sketch fuzz | `crates/engine/src/cmd/sketch_fuzz_tests.rs` | random sketches through the solver and profile finder |
|
||||
| UI scenarios | `crates/ui-egui/tests/scenarios/*.json` | the real app, headless: clicks, keys, drags, assertions |
|
||||
| Layout tests | `crates/ui-egui/tests/ui_layout.rs`, `window_widths.rs` | panels and dialogs at every window width |
|
||||
| Design-file corpus | `apps/solvecraft-cli/tests/corpus` | every saved file version still opens and evaluates the same |
|
||||
| Kill mid-save | `apps/solvecraft-cli/tests/kill_mid_save.rs` | a save killed at any moment leaves a readable file |
|
||||
| Design-file corpus | `apps/solidcraft-cli/tests/corpus` | every saved file version still opens and evaluates the same |
|
||||
| Kill mid-save | `apps/solidcraft-cli/tests/kill_mid_save.rs` | a save killed at any moment leaves a readable file |
|
||||
| Reference tests | `cargo xtask oracle` → [docs/oracle.md](oracle.md) | parts rebuilt from `tests/oracle/*/recipe.json`, compared with analytic or FreeCAD expected values |
|
||||
|
||||
## UI scenarios
|
||||
@@ -54,12 +54,12 @@ On GitHub, one job builds the tests into a
|
||||
Pull requests skip a few heavy tests (each takes one to four minutes); they run on every push to
|
||||
`main`, nightly, and in `cargo xtask test`:
|
||||
|
||||
- `solvecraft-engine`: `tests::hostile_params_never_panic`, everything in `tests::robustness`,
|
||||
- `solidcraft-engine`: `tests::hostile_params_never_panic`, everything in `tests::robustness`,
|
||||
`pattern_suppress_tests::enclosure_arc_extinction_keeps_a_real_sharp_inner_lip_after_resize_and_reopen`,
|
||||
`pattern_suppress_tests::enclosure_datums_follow_wall_height_and_board_depth_with_material_proofs`,
|
||||
`cmd::plastic::tests::enclosure_snap_fit_follows_resized_front_wall`
|
||||
- `solvecraft-kernel`: `tests::boolean_identity_on_tangent_primitives`
|
||||
- `solvecraft-ui-egui` scenarios: `acceptance_sensor_enclosure`
|
||||
- `solidcraft-kernel`: `tests::boolean_identity_on_tangent_primitives`
|
||||
- `solidcraft-ui-egui` scenarios: `acceptance_sensor_enclosure`
|
||||
|
||||
To run exactly what a pull request runs: `cargo nextest run --cargo-profile ci --profile ci`;
|
||||
add `--ignore-default-filter` for the full set. A new test that takes over a minute on CI can
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
| Format | Read | Write |
|
||||
|---|---|---|
|
||||
| `.solvecraft` (JSON design, versioned) | yes | yes |
|
||||
| `.solidcraft` (JSON design, versioned) | yes | yes |
|
||||
| STEP (AP203, AP214, AP242) | solids, assemblies, units, names, colours | AP242 with names, colours and the component tree |
|
||||
| IGES 5.3 | manifold solids, or trimmed surfaces sewn into solids | manifold solids with names and colours |
|
||||
| 3MF, STL, OBJ | mesh bodies | yes |
|
||||
@@ -53,7 +53,7 @@ another device.
|
||||
1. Open the File menu and choose **Open** to show **Files in this browser**.
|
||||
2. Choose **Download open design** for the current design, including its unsaved changes,
|
||||
or **Download** beside a stored file for its last saved contents.
|
||||
3. Find the `.solvecraft` file in your browser's downloads. Whether a folder chooser appears
|
||||
3. Find the `.solidcraft` file in your browser's downloads. Whether a folder chooser appears
|
||||
depends on your browser's download settings.
|
||||
|
||||
Use **Open from computer…** in the same panel to reopen a downloaded design. The web app
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Getting started
|
||||
|
||||
SolidCraft keeps its compatibility names: the desktop executable is `solvecraft`, the CLI
|
||||
is `solvecraft-cli`, and saved designs remain `.solvecraft`. Published 0.2.0 and 0.2.1 packages
|
||||
were released under the SolveCraft name.
|
||||
The desktop executable is `solidcraft`, the CLI is `solidcraft-cli`, and designs are saved as
|
||||
`.solidcraft`. Designs, settings and setups from builds released under the previous product name keep
|
||||
working (see the [compatibility notes](https://github.com/bherbruck/solidcraft/blob/main/docs/compatibility.md)).
|
||||
|
||||
## Desktop
|
||||
|
||||
@@ -15,20 +15,16 @@ git clone https://github.com/bherbruck/solidcraft && cd solidcraft
|
||||
cargo run --release -p solidcraft -- --sample # opens with a sample part
|
||||
```
|
||||
|
||||
`solvecraft part.step` opens a STEP, IGES, 3MF, STL or OBJ file as a new design, and
|
||||
`solvecraft design.solvecraft` opens a saved design. Windows builds cross-compile from Linux with
|
||||
`solidcraft part.step` opens a STEP, IGES, 3MF, STL or OBJ file as a new design, and
|
||||
`solidcraft design.solidcraft` opens a saved design. Windows builds cross-compile from Linux with
|
||||
`cargo xwin build --release --target x86_64-pc-windows-msvc -p solidcraft`.
|
||||
|
||||
### macOS
|
||||
|
||||
Open the release `.dmg` and drag `SolidCraft.app` onto Applications.
|
||||
|
||||
When updating from an older `SolveCraft.app`, quit the app and rename the existing
|
||||
app in Applications to `SolidCraft.app` first. Then drag the new app onto Applications
|
||||
and choose **Replace**. If you already have both names installed, move the old
|
||||
`SolveCraft.app` to the Trash. The DMG does not remove old installations automatically.
|
||||
Remove any Dock shortcut with the old name, open the new app from Applications, and
|
||||
choose **Options > Keep in Dock**. Designs, settings and the bundle ID are unchanged.
|
||||
When updating from a build released under the previous product name, follow the
|
||||
[macOS upgrade notes](https://github.com/bherbruck/solidcraft/blob/main/docs/compatibility.md#macos) so you replace it rather than install a second copy.
|
||||
|
||||
### Linux Flatpak
|
||||
|
||||
@@ -38,21 +34,20 @@ to the same user installation:
|
||||
|
||||
```sh
|
||||
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
flatpak remote-add --user --if-not-exists solvecraft https://bherbruck.github.io/solidcraft/flatpak/solvecraft.flatpakrepo
|
||||
flatpak install --user solvecraft ai.storyteller.solvecraft
|
||||
flatpak remote-add --user --if-not-exists solidcraft https://bherbruck.github.io/solidcraft/flatpak/solidcraft.flatpakrepo
|
||||
flatpak install --user solidcraft ai.storyteller.solvecraft
|
||||
flatpak run ai.storyteller.solvecraft
|
||||
```
|
||||
|
||||
The application ID and remote name retain their compatibility names. To update an existing
|
||||
remote that still uses the former website address, run
|
||||
`flatpak remote-modify --user --url=https://bherbruck.github.io/solidcraft/flatpak/repo/ solvecraft`
|
||||
and then `flatpak update --user`.
|
||||
The application ID is unchanged, so existing installations keep
|
||||
receiving updates under whatever remote name they were added with (see the
|
||||
[compatibility notes](https://github.com/bherbruck/solidcraft/blob/main/docs/compatibility.md#package-ids)).
|
||||
|
||||
Alternatively, download the release's `.flatpak` file for your architecture and run
|
||||
`flatpak install --user ./solvecraft-VERSION-linux-ARCH.flatpak`. The bundle supplies the
|
||||
`flatpak install --user ./solidcraft-VERSION-linux-ARCH.flatpak`. The bundle supplies the
|
||||
Flathub runtime repository address; installation still needs internet access to fetch any
|
||||
missing runtime. Launch with `flatpak run ai.storyteller.solvecraft`, rather than looking for
|
||||
a host `solvecraft` binary. Files chosen through Open/Save use the desktop file-chooser portal;
|
||||
a host `solidcraft` binary. Files chosen through Open/Save use the desktop file-chooser portal;
|
||||
command-line paths outside Documents may need a specific additional filesystem permission.
|
||||
|
||||
## Web
|
||||
@@ -63,12 +58,12 @@ file storage, which needs HTTPS or localhost. To build it yourself:
|
||||
|
||||
```sh
|
||||
rustup target add wasm32-unknown-unknown
|
||||
cd apps/solvecraft-web && trunk serve --release
|
||||
cd apps/solidcraft-web && trunk serve --release
|
||||
```
|
||||
|
||||
## CLI
|
||||
|
||||
`solvecraft-cli` runs the same commands without a window:
|
||||
`solidcraft-cli` runs the same commands without a window:
|
||||
|
||||
```sh
|
||||
cargo run --release -p solidcraft-cli -- commands # every command, as JSON
|
||||
@@ -90,7 +85,7 @@ A script is a list of commands:
|
||||
]}
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
Units are millimetres and degrees unless an expression says otherwise (`"1 in"`, `"30 deg"`),
|
||||
and Z is up.
|
||||
@@ -11,7 +11,7 @@ It runs as:
|
||||
|
||||
- a **desktop app** for Windows and Linux (egui + wgpu);
|
||||
- a **web app** in the browser (wasm, WebGPU or WebGL2), [try it here](app/);
|
||||
- a **headless CLI**, `solvecraft-cli`, that runs command scripts, measures and exports;
|
||||
- a **headless CLI**, `solidcraft-cli`, that runs command scripts, measures and exports;
|
||||
- an **MCP server** that AI agents model with, headless or driving the running app.
|
||||
|
||||
Everything the user can do is a *command* with JSON parameters. The toolbar, the dialogs, scripts,
|
||||
@@ -24,7 +24,7 @@ and a plastic-enclosure subset work; surfaces, drawings, CAM and simulation are
|
||||
the [feature list](dev/features.md) lists every command by area, and the
|
||||
[reference tests](dev/oracle.md) check modelling results against analytic and FreeCAD values.
|
||||
|
||||
Existing `.solvecraft` designs and `solvecraft-cli` commands keep their names and behavior.
|
||||
Existing `.solidcraft` designs and `solidcraft-cli` commands keep their names and behavior.
|
||||
|
||||
This book has two halves: the **user guide** for people modelling with SolidCraft, and the
|
||||
**developer guide** for people working on it. The [command reference](reference/commands.md) is
|
||||
|
||||
Reference in new issue
Block a user