From d4c49d04f0e47f0f6adedcdef10e0155cf0f0ffc Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Mon, 18 Jul 2022 13:29:28 +0200 Subject: [PATCH 1/4] Update changelog --- CHANGELOG.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bac44226b..53d153cba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,76 @@ # Fornjot - Changelog +## v0.8.0 (2022-07-18) + +### End-user improvements + +Improvements to Fornjot and its documentation that are visible to end-users. + +- Make moving the model work, even if mouse is not hovering over it ([#806]) +- Make group and transform operations work on all shapes ([#825]) + +### Ecosystem improvements + +Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components. + +#### `fj-interop` + +- Add `ProcessedShape` from `fj-operations` ([#809]; thank you [@jeevcat]!) + +#### `fj-kernel` + +- Implement curve/face intersection algorithm ([#802], [#812], [#813], [#817], [#826]) +- Return local curves from surface/surface intersection ([#811]) +- Derive `Copy` for `VerticesOfEdge` ([#818]) +- Add `Sketch`/`Solid` to distinguish between 2D/3D shapes ([#819], [#823], [#827]) +- Provide more complete and convenient transform API ([#822]) + +#### `fj-math` + +- Fix edge case in `Vector::scalar_projection_onto` ([#810]) + +#### `fj-operations` + +- Rename `ToShape` to `Shape`; clean it up ([#820]) +- Make use of `Sketch` and `Solid` ([#824]) + +#### `fj-viewer` + +- Make events more high-level ([#803]; thank you [@jeevcat]!) + +### Internal Improvements + +Improvements that are relevant to developers working on Fornjot itself. + +- Update dependencies ([#799], [#800], [#801]) +- Update list of sponsors ([#833]) + +[#799]: https://github.com/hannobraun/Fornjot/pull/799 +[#800]: https://github.com/hannobraun/Fornjot/pull/800 +[#801]: https://github.com/hannobraun/Fornjot/pull/801 +[#802]: https://github.com/hannobraun/Fornjot/pull/802 +[#803]: https://github.com/hannobraun/Fornjot/pull/803 +[#806]: https://github.com/hannobraun/Fornjot/pull/806 +[#809]: https://github.com/hannobraun/Fornjot/pull/809 +[#810]: https://github.com/hannobraun/Fornjot/pull/810 +[#811]: https://github.com/hannobraun/Fornjot/pull/811 +[#812]: https://github.com/hannobraun/Fornjot/pull/812 +[#813]: https://github.com/hannobraun/Fornjot/pull/813 +[#817]: https://github.com/hannobraun/Fornjot/pull/817 +[#818]: https://github.com/hannobraun/Fornjot/pull/818 +[#819]: https://github.com/hannobraun/Fornjot/pull/819 +[#820]: https://github.com/hannobraun/Fornjot/pull/820 +[#822]: https://github.com/hannobraun/Fornjot/pull/822 +[#823]: https://github.com/hannobraun/Fornjot/pull/823 +[#824]: https://github.com/hannobraun/Fornjot/pull/824 +[#825]: https://github.com/hannobraun/Fornjot/pull/825 +[#826]: https://github.com/hannobraun/Fornjot/pull/826 +[#827]: https://github.com/hannobraun/Fornjot/pull/827 +[#833]: https://github.com/hannobraun/Fornjot/pull/833 + +[@jeevcat]: https://github.com/jeevcat + + ## v0.7.0 (2022-07-07) The following changelog is a summary of user-visible changes made since the previous release. User-visible changes are changes visible to end users (who define CAD models using `fj` and `fj-app`), and changes to the API of Fornjot ecosystem crates. From cc13a8b0000a549ac164c56c0baa981b6abacaf0 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Mon, 18 Jul 2022 13:43:02 +0200 Subject: [PATCH 2/4] Update versions --- Cargo.lock | 22 +++++++++++----------- crates/fj-app/Cargo.toml | 18 +++++++++--------- crates/fj-export/Cargo.toml | 6 +++--- crates/fj-host/Cargo.toml | 4 ++-- crates/fj-interop/Cargo.toml | 4 ++-- crates/fj-kernel/Cargo.toml | 6 +++--- crates/fj-math/Cargo.toml | 2 +- crates/fj-operations/Cargo.toml | 10 +++++----- crates/fj-proc/Cargo.toml | 2 +- crates/fj-viewer/Cargo.toml | 6 +++--- crates/fj-window/Cargo.toml | 8 ++++---- crates/fj/Cargo.toml | 4 ++-- 12 files changed, 46 insertions(+), 46 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 33c342b93..d905fb5a0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -829,7 +829,7 @@ dependencies = [ [[package]] name = "fj" -version = "0.7.0" +version = "0.8.0" dependencies = [ "fj-proc", "serde", @@ -838,7 +838,7 @@ dependencies = [ [[package]] name = "fj-app" -version = "0.7.0" +version = "0.8.0" dependencies = [ "anyhow", "clap", @@ -857,7 +857,7 @@ dependencies = [ [[package]] name = "fj-export" -version = "0.7.0" +version = "0.8.0" dependencies = [ "fj-interop", "fj-math", @@ -868,7 +868,7 @@ dependencies = [ [[package]] name = "fj-host" -version = "0.7.0" +version = "0.8.0" dependencies = [ "fj", "libloading", @@ -878,14 +878,14 @@ dependencies = [ [[package]] name = "fj-interop" -version = "0.7.0" +version = "0.8.0" dependencies = [ "fj-math", ] [[package]] name = "fj-kernel" -version = "0.7.0" +version = "0.8.0" dependencies = [ "anyhow", "anymap", @@ -903,7 +903,7 @@ dependencies = [ [[package]] name = "fj-math" -version = "0.7.0" +version = "0.8.0" dependencies = [ "approx 0.5.1", "decorum", @@ -915,7 +915,7 @@ dependencies = [ [[package]] name = "fj-operations" -version = "0.7.0" +version = "0.8.0" dependencies = [ "fj", "fj-interop", @@ -926,7 +926,7 @@ dependencies = [ [[package]] name = "fj-proc" -version = "0.7.0" +version = "0.8.0" dependencies = [ "proc-macro2", "quote", @@ -936,7 +936,7 @@ dependencies = [ [[package]] name = "fj-viewer" -version = "0.7.0" +version = "0.8.0" dependencies = [ "bytemuck", "egui", @@ -953,7 +953,7 @@ dependencies = [ [[package]] name = "fj-window" -version = "0.7.0" +version = "0.8.0" dependencies = [ "fj-host", "fj-operations", diff --git a/crates/fj-app/Cargo.toml b/crates/fj-app/Cargo.toml index eba6d7538..f66d4b52d 100644 --- a/crates/fj-app/Cargo.toml +++ b/crates/fj-app/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-app" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -24,35 +24,35 @@ version = "0.10.6" features = ["env", "toml"] [dependencies.fj] -version = "0.7.0" +version = "0.8.0" path = "../fj" [dependencies.fj-export] -version = "0.7.0" +version = "0.8.0" path = "../fj-export" [dependencies.fj-host] -version = "0.7.0" +version = "0.8.0" path = "../fj-host" [dependencies.fj-kernel] -version = "0.7.0" +version = "0.8.0" path = "../fj-kernel" [dependencies.fj-math] -version = "0.7.0" +version = "0.8.0" path = "../fj-math" [dependencies.fj-operations] -version = "0.7.0" +version = "0.8.0" path = "../fj-operations" [dependencies.fj-viewer] -version = "0.7.0" +version = "0.8.0" path = "../fj-viewer" [dependencies.fj-window] -version = "0.7.0" +version = "0.8.0" path = "../fj-window" [dependencies.serde] diff --git a/crates/fj-export/Cargo.toml b/crates/fj-export/Cargo.toml index 0f797b29b..abadbb914 100644 --- a/crates/fj-export/Cargo.toml +++ b/crates/fj-export/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-export" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -18,9 +18,9 @@ threemf = "0.3.1" stl = "0.2.1" [dependencies.fj-interop] -version = "0.7.0" +version = "0.8.0" path = "../fj-interop" [dependencies.fj-math] -version = "0.7.0" +version = "0.8.0" path = "../fj-math" diff --git a/crates/fj-host/Cargo.toml b/crates/fj-host/Cargo.toml index 4cb09d802..395486a0b 100644 --- a/crates/fj-host/Cargo.toml +++ b/crates/fj-host/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-host" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -18,5 +18,5 @@ notify = "5.0.0-pre.15" thiserror = "1.0.31" [dependencies.fj] -version = "0.7.0" +version = "0.8.0" path = "../fj" diff --git a/crates/fj-interop/Cargo.toml b/crates/fj-interop/Cargo.toml index 42aa700f0..fc67e1e68 100644 --- a/crates/fj-interop/Cargo.toml +++ b/crates/fj-interop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-interop" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -14,4 +14,4 @@ categories = ["encoding", "mathematics", "rendering"] [dependencies.fj-math] path = "../fj-math" -version = "0.7.0" +version = "0.8.0" diff --git a/crates/fj-kernel/Cargo.toml b/crates/fj-kernel/Cargo.toml index 42a856cc6..7476207b2 100644 --- a/crates/fj-kernel/Cargo.toml +++ b/crates/fj-kernel/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-kernel" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -23,11 +23,11 @@ spade = "2.0.0" thiserror = "1.0.31" [dependencies.fj-interop] -version = "0.7.0" +version = "0.8.0" path = "../fj-interop" [dependencies.fj-math] -version = "0.7.0" +version = "0.8.0" path = "../fj-math" diff --git a/crates/fj-math/Cargo.toml b/crates/fj-math/Cargo.toml index 904495b3a..3c7de2cce 100644 --- a/crates/fj-math/Cargo.toml +++ b/crates/fj-math/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-math" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." diff --git a/crates/fj-operations/Cargo.toml b/crates/fj-operations/Cargo.toml index 93773025d..0c0158c07 100644 --- a/crates/fj-operations/Cargo.toml +++ b/crates/fj-operations/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-operations" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -16,17 +16,17 @@ categories = ["encoding", "mathematics", "rendering"] thiserror = "1.0.31" [dependencies.fj] -version = "0.7.0" +version = "0.8.0" path = "../fj" [dependencies.fj-math] -version = "0.7.0" +version = "0.8.0" path = "../fj-math" [dependencies.fj-interop] -version = "0.7.0" +version = "0.8.0" path = "../fj-interop" [dependencies.fj-kernel] -version = "0.7.0" +version = "0.8.0" path = "../fj-kernel" diff --git a/crates/fj-proc/Cargo.toml b/crates/fj-proc/Cargo.toml index db255fc2c..d186c07b7 100644 --- a/crates/fj-proc/Cargo.toml +++ b/crates/fj-proc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-proc" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." diff --git a/crates/fj-viewer/Cargo.toml b/crates/fj-viewer/Cargo.toml index fd32ff0bc..d72e5326a 100644 --- a/crates/fj-viewer/Cargo.toml +++ b/crates/fj-viewer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-viewer" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -21,11 +21,11 @@ wgpu = "0.12.0" wgpu_glyph = "0.16.0" [dependencies.fj-interop] -version = "0.7.0" +version = "0.8.0" path = "../fj-interop" [dependencies.fj-math] -version = "0.7.0" +version = "0.8.0" path = "../fj-math" [dependencies.egui] diff --git a/crates/fj-window/Cargo.toml b/crates/fj-window/Cargo.toml index 905b50424..ecdfe9391 100644 --- a/crates/fj-window/Cargo.toml +++ b/crates/fj-window/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj-window" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -19,13 +19,13 @@ tracing = "0.1.35" winit = "0.26.1" [dependencies.fj-host] -version = "0.7.0" +version = "0.8.0" path = "../fj-host" [dependencies.fj-operations] -version = "0.7.0" +version = "0.8.0" path = "../fj-operations" [dependencies.fj-viewer] -version = "0.7.0" +version = "0.8.0" path = "../fj-viewer" diff --git a/crates/fj/Cargo.toml b/crates/fj/Cargo.toml index 5681da9e1..c2ed54770 100644 --- a/crates/fj/Cargo.toml +++ b/crates/fj/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fj" -version = "0.7.0" +version = "0.8.0" edition = "2021" description = "The world needs another CAD program." @@ -16,7 +16,7 @@ categories = ["encoding", "mathematics", "rendering"] serde = { version = "1.0.139", features = ["derive"], optional = true } [dependencies.fj-proc] -version = "0.7.0" +version = "0.8.0" path = "../../crates/fj-proc" [dev-dependencies] From 617a9cdd94b5543acb7666fd690487e16ce7466c Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Mon, 18 Jul 2022 13:51:08 +0200 Subject: [PATCH 3/4] Handle exit status from `cargo publish` --- tools/release-operator/src/registry.rs | 37 +++++++++++++------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/tools/release-operator/src/registry.rs b/tools/release-operator/src/registry.rs index 67aacf0ba..09a0e7944 100644 --- a/tools/release-operator/src/registry.rs +++ b/tools/release-operator/src/registry.rs @@ -1,9 +1,9 @@ -use anyhow::{anyhow, Context}; +use anyhow::{anyhow, bail, Context}; use secstr::SecUtf8; use serde::Deserialize; use std::fmt::{Display, Formatter}; -use std::io::{BufRead, BufReader}; use std::path::PathBuf; +use std::process::Command; use std::str::FromStr; pub struct Registry { @@ -157,26 +157,25 @@ impl Crate { std::env::set_current_dir(&self.path) .context("switch working directory to the crate in scope")?; - let cmd = { - let mut cmd = vec!["cargo", "publish", "--token", token.unsecure()]; + let mut command = Command::new("cargo"); + command.arg("publish").args(["--token", token.unsecure()]); - if dry_run { - cmd.push("--dry-run"); - } + if dry_run { + command.arg("--dry-run"); + } - cmd.join(" ") - }; + let exit_status = command.status()?; - // The `-e` makes sure that bash stops if any non-zero status code is - // encountered, and return a non-zero status code itself. - cmd_lib::spawn_with_output!(bash -e -c $cmd)?.wait_with_pipe( - &mut |pipe| { - BufReader::new(pipe) - .lines() - .flatten() - .for_each(|line| println!("{}", line)); - }, - )?; + if !exit_status.success() { + match exit_status.code() { + Some(code) => { + bail!("`cargo publish` failed with exit code {code}") + } + None => { + bail!("`cargo publish` was terminated by signal") + } + } + } std::env::set_current_dir(current_dir) .context("reset working directory")?; From 135771d787bf5622efa1ec7414af019d0c127a18 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Mon, 18 Jul 2022 13:52:23 +0200 Subject: [PATCH 4/4] Clean up handling of working directory --- tools/release-operator/src/registry.rs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/tools/release-operator/src/registry.rs b/tools/release-operator/src/registry.rs index 09a0e7944..85b92bbeb 100644 --- a/tools/release-operator/src/registry.rs +++ b/tools/release-operator/src/registry.rs @@ -152,13 +152,11 @@ impl Crate { fn submit(&self, token: &SecUtf8, dry_run: bool) -> anyhow::Result<()> { log::info!("{self} publishing new version"); - let current_dir = std::env::current_dir() - .context("determine current working directory")?; - std::env::set_current_dir(&self.path) - .context("switch working directory to the crate in scope")?; - let mut command = Command::new("cargo"); - command.arg("publish").args(["--token", token.unsecure()]); + command + .arg("publish") + .args(["--token", token.unsecure()]) + .current_dir(&self.path); if dry_run { command.arg("--dry-run"); @@ -177,9 +175,6 @@ impl Crate { } } - std::env::set_current_dir(current_dir) - .context("reset working directory")?; - Ok(()) } }