Skip to content

Latest commit

 

History

History
1572 lines (1184 loc) · 65.1 KB

CHANGELOG.md

File metadata and controls

1572 lines (1184 loc) · 65.1 KB

Fornjot - Changelog

v0.24.0 (2022-11-14)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end users.

Ecosystem improvements

Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.

fj-kernel

fj-operations

  • Remove use of old validation infrastructure (#1329)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.23.0 (2022-11-07)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end users.

  • Fix panic when quitting application (#1296)
  • Warn on full version mismatch of host and model (#1300; thank you, @zthompson47!)
  • Improve status messages around model loading (#1302)
  • Fix panic on Windows when loading model version (#1304, #1308)

Ecosystem improvements

Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.

fj-kernel

  • Clean up partial object API (#1294, #1305, #1309, #1310, #1312)
  • Move most validation code to new validation infrastructure (#1295, #1299)
  • Simplify Cycle and Face (#1297)
  • Improve Debug implementation of Handle (#1298)
  • Simplify GlobalPath transforms (#1313)

fj-viewer

  • Simplify interaction with Gui (#1301)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.22.0 (2022-10-31)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end users.

  • Fix UI being blurry on some systems (#1266; thank you, @erenoku!)
  • Improve error message when failing to load model (#1268)
  • Enable anti-aliasing (#1274)
  • Fix text of status messages looking jagged (#1275)
  • Fix some crashes, turn them into actionable errors (#1276)
  • Add UI to load model from within app, if no model is passed (#1286, #1288; thank you, @erenoku!)

Ecosystem improvements

Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.

fj-host

fj-kernel

fj-math

  • Replace Point::distance with distance_to (#1281)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.21.0 (2022-10-24)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end users.

  • Improve error message, if model can't be loaded (#1235)
  • Make sure versions are compatible before loading model (#1237)
  • Always require model when starting fj-app (#1242)
  • Fix startup delay while model is compiling (#1244)
  • Print timestamp with each status update (#1256; thank you, @erenoku!)

Ecosystem improvements

Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.

fj-host

  • Rename Watcher::receive; improve its error handling (#1234)

fj-kernel

  • Fix last known object duplication issues (#1233, #1238)
  • Integrate all remaining objects into centralized object storage (#1246, #1247, #1248, #1252, #1255)
  • Simplify use of MaybePartial (#1253)
  • Consolidate builder API for Face in FaceBuilder (#1254)

fj-viewer

fj-window

  • Simplify fj_window::run arguments (#1243, #1245)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.20.0 (2022-10-17)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end users.

  • Improve error message, if model can't be found (#1154; thank you, @ArshErgon!)
  • Remove old UI (#1202)
  • Invert default zoom direction; add config to override that (#1204)
  • Document convenient syntax for fj operations (#1205)
  • Remove the need to specify crate-type in Cargo.toml (#1209)
  • Fix some wgpu/egui-winit errors and warnings (#1216)

Ecosystem improvements

Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.

fj-kernel

  • Rename Stores to Objects, move it to objects (#1198)
  • Provide access to default planes through Objects (#1200)
  • Fix more object duplication issues (#1206, #1207, #1215, #1218, #1220, #1222)
  • Expand partial object API(#1212, #1213)
  • Integrate SurfaceVertex into centralized object storage (#1214)
  • Add methods to access single HalfEdge vertices (#1219)

fj-math

  • Fix Triangle::winding (#1217)

fj-operations

  • Remove redundant argument from Shape::compute_brep (#1201)

fj-viewer

  • Remove dependency on winit (#1210)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.19.0 (2022-10-10)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end users.

None this week. Still busy improving the kernel!

Ecosystem improvements

Improvements to Fornjot components that are relevant to developers building on top of those. These have an indirect effect on end users, through fixed bugs and improved robustness.

fj-kernel

  • Make minor cleanups in sweep code (#1167)
  • Fix various instances of duplicate objects being created (#1168, #1170, #1172, #1174)
  • Expand and improve partial object API (#1169, #1171)
  • Improve Debug implementation of ObjectId (#1173)
  • Simplify HalfEdge and Vertex (#1175, #1178)
  • Expand scope of centralized object storage (#1176, #1179, #1180)
  • Clean up handling of vertices in normalized order (#1181)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.18.0 (2022-10-04)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

None this week. Busy improving the kernel!

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-kernel

  • Improve some panic messages (#1139, #1149)
  • Improve partial object API (#1140, #1144, #1148, #1150)
  • Fix some code that creates duplicate global curves (#1145, #1151, #1152)
  • Remove redundant geometry from GlobalCurve (#1146, #1153)
  • Make GlobalEdge undirected (#1155)
  • Validate winding of interior cycles of Face (#1158)
  • Add HorizontalRayToTheRight::direction (#1159)
  • Integrate Surface into centralized object storage (#1163)

fj-math

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

  • Update release procedure (#1138)
  • Expand release automation (#1141)
  • Update dependencies (#1142)
  • Update screenshot of test model (#1156)

v0.17.0 (2022-09-26)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

None this week. Busy improving the kernel!

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-kernel

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.16.0 (2022-09-19)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

  • Fix GUI not being loaded, if model is not available (#1095; thank you, @payload!)

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-math

fj-kernel

  • Improve validation of HalfEdge and Vertex (#1075)
  • Expand builder API (#1076, #1083)
  • Expand sweep test suite (#1077)
  • Perform various cleanups (#1080, #1084)
  • Replace CurveKind with SurfacePath/GlobalPath (#1081)
  • Make path approximation deterministic (#1089, #1090, #1094)
  • Future-proof curve approximation code (#1082, #1091, #1092, #1096)
  • Un-derive Copy from various object types (#1097)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

  • Update dependencies (#1071, #1072, #1074)
  • Update release procedure (#1073)
  • Expand release automation (#1078)
  • Update list of sponsors in README (#1098)

v0.15.0 (2022-09-12)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

None this week; busy improving the kernel!

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-kernel

fj-math

  • Add Vector<2>::cross (#1065)

fj-operations

  • Make use of Faces (#1052)
  • Remove unused parameter of Shape::compute_brep (#1060)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.14.0 (2022-09-05)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

  • Fix crash on some graphics hardware (#1035)

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-kernel

fj-math

  • Add some validation code to PolyChain (#1027)
  • Derive Default for all math types (#1029)
  • Add Line::from_points_with_line_coords (#1032)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

  • Update release procedure (#1008, #1009)
  • Update dependencies (#1010)
  • Expand release automation (#1016)

v0.13.0 (2022-08-29)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

  • Update usage documentation in README (#994)

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-host

  • Improve comments and documentation (#988)

fj-kernel

fj-math

  • Make minor API additions (#1004)

fj-viewer/fj-window

  • Upgrade dependencies related to wgpu/winit (#975, #979)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.12.0 (2022-08-22)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-kernel

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.11.0 (2022-08-08)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

  • Prevent crashes due to unavailable features in graphics backend (#902, #909, #914; special thanks go to first-time contributor @hekno25!)
  • Add UI element that display current model status (#911; special thanks go to first-time contributor @devanlooches!)

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-kernel

  • Clean up handling of curves (#900, #901, #904)
  • Clean up intersection code (#905, #906)
  • Implement face/face intersection (#915)
  • Make ray casting code public, clean it up (#918)

fj-math

  • Validate Line and Circle on construction (#910, #913)
  • Extend and clean up AbsDiffEq implementations (#912)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

  • Update dependencies (#892, #894, #895, #896, #899)
  • Update release procedure (#898)
  • Speed up release automation (#903)
  • Update description of Cargo packages (#916)
  • Update list of sponsors in README (#921)

v0.10.0 (2022-08-01)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-interop

  • Re-use fj_math::Triangle in fj_interop::mesh (#886)

fj-kernel

  • Improve wording in doc comment (#880)
  • Clean up API of object types (#881, #891)
  • Implement curve/edge intersection (#884, #888, #889)
  • Clean up surface/surface intersection (#890)

fj-math

  • Make Triangle::from_points fallible; add Line::is_coincident_with (#887)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

v0.9.0 (2022-07-25)

End-user improvements

Improvements to Fornjot and its documentation that are visible to end-users.

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-interop

  • Convert Color into a struct (#862)

fj-kernel

  • Clean up and expand APIs of Edge, Face, and Cycle (#854, #855, #863, #865)
  • Return references to objects, where appropriate (#858)
  • Make names of Local methods more explicit (#860)
  • Revamp builder API (#864, #866)

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

  • Fix release automation issues (#814, #843; thank you, @hendrikmaus!)
  • Update dependencies (#836, #840)
  • Update release procedure (#838, #839, #857)
  • Add unit test for triangulation bug (#842; special thanks go to first-time contributor @willhansen!)
  • Upgrade to Rust 1.62.1 (#852)
  • Clean up fj-kernel's iter module (#859)
  • Expand implementation note (#861)

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

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

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.

For a full summary of all pull requests, feel free to check out the Weekly Dev Logs that cover the time period since the previous release:

The API that Fornjot models are written against.

The Fornjot application.

  • Fix usability of --parameters (#692)

In addition to the changes listed here, many of the changes to other crates, listed below, have a direct impact on the user experience of fj-app.

Library for exporting Fornjot models to external file formats.

Library for loading and running Fornjot models in a host application.

No changes in this release.

Library that defines types to enable interoperation between Fornjot components.

No changes in this release.

Fornjot's CAD kernel library.

  • Expand and update constructors of Curve/Surface (#542, #611, #690, #721)
  • Implement some intersection tests (#543, #560, #562)
  • Replace Line with fj_math::Line (#558)
  • Update Surface API for point/vector conversion (#561)
  • Update conversion API of geometry types (#564)
  • Store local representation of vertices (#574, #625, #627, #751, #752)
  • Generate approximations in native coordinates (#575, #762)
  • Replace Circle with fj_math::Circle (#578)
  • Store local representation of curves (#579, #591, #750)
  • Make Face easier to use, less redundant (#593, #597)
  • Fix face orientation (#628)
  • Require surface coordinates when building faces or cycles (#665)
  • Add custom data type to represent edge vertices (#667)
  • Remove Edge::new (#693)
  • Move all objects to new objects module (#694)
  • Implement new validation infrastructure (#705, #706, #707, #709, #710, #718)
  • Remove Shape API (#715, #716, #730, #732, #733, #735, #736, #737, #738, #743, #747)
  • Add Local to manage local forms; use it to replace geometry::Point (#761)

Library that provides math primitives for the Fornjot ecosystem.

  • Rename Transform::project_to_slice to project_to_array (#545)
  • Add support for Point/Vector subtraction (#547)
  • Add Vector::scalar_projection_onto (#553)
  • Add Line (#557, #563)
  • Improve Aabb API (#559)
  • Add Circle (#577)
  • Add Triangle::normal (#600)

Library that defines CAD operations, serving as a link between fj and fj-kernel.

  • Make 2D difference operation more flexible (#598)
  • Fix bounding volume of swept shapes (#623)
  • Improve error handling (#629, #632)
  • Reduce reliance on Shape (#734)

Procedural macros for the fj crate.

Initial release.

Library that provides a model viewer.

  • Fix field of view (#614)
  • Improve error handling (#633, #635)
  • Extract fj-window (#640)
  • Fix camera rotation (#644, #669)
  • Fix performance issue related to mouse movement (#758)
  • Simplify zoom, fix it for larger models (#764, #781)

Library to embed fj-viewer in a winit-based window.

Initial release.

v0.6.0 (2022-05-05)

The following changelog is a summary of user-visible changes, meaning changes visible to end users (who define CAD models using fj and fj-app), or changes visible to users of the API.

For a full summary of all pull requests, feel free to check out all Weekly Dev Logs that cover the time period since the previous release:

The API that Fornjot models are written against.

  • Improve documentation (#106, #411)
  • Remove fj::Difference (#265)
  • Add support for coloring models (#343)
  • Rename fj::Union to fj::Group (#366)
  • Add convenient syntax for fj::Difference2d (#372)
  • Clean up API (#412)
  • Support sweeping in arbitrary directions (#505)

The main Fornjot application.

  • Fix model loading error, if name contains '-' (#107)
  • Fix circle approximation being able to freeze application (#111)
  • Prevent potential floating-point accuracy issues in triangulation (#133)
  • Add missing space to error message (#144)
  • Enable console output (#148, #297)
  • Fix various triangulation bugs (#158, #448, #453)
  • Display size of model bounding box (#217)
  • Ensure that vertices are unique (#278)
  • Fix sweeping of non-symmetrical sketches (#284)
  • Fix bugs that affect shading faces and exporting 3MF files (#289, #484)
  • Fix crash on some graphics hardware (#323)
  • Fix warning about glyph cache size (#337)
  • Add support for specifying tolerance as command-line argument (#352, #359)
  • Rename application to fj-app (#356)
  • Add configuration file (#362)
  • Enable fj-app to run outside of Fornjot repository (#364)
  • Fix tolerance value not being updated on model reload (#379)
  • Fix race condition when loading model initially (#380)
  • Fix warning about buffer having a pending mapping (#397)
  • Fix crash with AMD GPUs (#437)
  • Make rotation work, even when not clicking on model (#503)

Library for exporting Fornjot models to external file formats.

Initial release.

Library for hosting Fornjot models.

Initial release.

Library that defines types to allow interoperation between other Fornjot components.

Initial release.

Fornjot's CAD kernel library.

Initial release.

Library that provides math primitives for the Fornjot ecosystem.

Initial release.

Library that defines CAD operations, as a link between fj and fj-kernel.

Initial release.

Library that provides a model viewer.

Initial release.

v0.5.0 (2022-01-26)

fj Library

  • Replace fj::Rectangle with the more powerful fj::Sketch.
  • Add fj::Union to express unions. This is subject to limitations (see API Reference).
  • Add fj::Transform to support transforming shapes.
  • Add traits to provide simplified syntax for various operations. These traits can be accessed through a use fj::prelude::*;.
  • Rename fj::Difference to fj::Difference2d to make room for a 3D difference operation.
  • Add fj::Difference to express difference operation in 3D. This is not supported by the host application yet.
  • Improve documentation (#86)

Host Application

  • Fix shapes that are very near or very far not being shown on camera.

  • Add support for Windows and macOS (#22, #23, #28; special thanks to Fornjot's first contributor, @Bandsberg!).

  • Add support for concave 2D sketches.

  • Add debug info visualization mechanism to help debug internal algorithms. So far, it just outputs lines to visualize the triangulation algorithm.

  • Fix bug in 2D difference operation, that would create an internal pseudo-face within the model, if the 2D difference was swept into a 3D model.

  • Add blacklist to avoid multiple rebuilds on model changes (#39; special thanks to first-time contributor, @mxdamien)

  • Fix triangulation bugs that would cause errors in some models (#61, #74, #81)

  • Add star model to repository (#50)

  • Lots of internal clean-ups, to enable more features in the future.

v0.4.0 (2021-12-07)

Host Application

  • Tweak zooming behavior: Zoom speed is dependent on the frequency of input signals (either the movement of the mouse wheel, or of the fingers on the track pad). Speed zooming in is limited depending on the distance to the model.
  • Improve rotation behavior: Always rotate the model around the point on the model that the mouse cursor points at, not the origin of the model coordinate system. This allows for much more precise control when inspecting details of the model.
  • Improve movement behavior: When moving the model, keep the same point on the model under the cursor for the whole movement. This doesn't work great yet (see #18).
  • Rename --arguments argument of host application to --parameters.

fj Library

  • Replace fj::Square with fj::Rectangle.

v0.3.1 (2021-11-22)

  • Reload current model, whenever its source code is modified.

v0.3.0 (2021-11-21)

  • Function representation (F-rep) has been phased out in favor of a more traditional approach inspired by boundary representation (B-rep). This has resulted in much higher-quality triangulation of the geometry in significantly less time (spacer previously took around 1 second, now there is no perceivable delay).
  • Most of the system is no longer a library; it now consists of a host application, and a very light library used to define geometry. Models are compiled as dynamic libraries and loaded at runtime. This has resulted in much shorter compile times when changing a model (previously many seconds, now way below 0.5s for the spacer model).
  • Due to a rewrite of all CAD-specific code, the way models are defined is completely different.

v0.2.0 (2021-07-07)

  • Add support for exporting models to the 3MF format. This makes it possible to 3D-print Fornjot models.
  • Also return surface normal (in addition to distance from surface) when sampling geometry.
  • Greatly improve accuracy of the triangle mesh that is generated from models. More room for improvement remains, as sharp edges aren't reproduced faithfully.

v0.1.1 (2021-05-19)

  • Link README.md in Cargo.toml

v0.1.0 (2021-05-19)

Initial release.