Improvements to Fornjot libraries.
- Add
fj::Instance
(#2217)
- Expand and improve validation checking (#2144, #2148, #2256; thank you, @nathan-folsom and @emka!)
- Add operation for creating shell from vertices and indices (#2149)
- Make background validation configurable (#2150; thank you, @brungardtdb!)
- Make some cleanups in
transform
, move it tooperations
(#2169) - Refactor
services
intolayers
(#2212, #2213, #2214, #2215) - Move color information to dedicated presentation layer (#2167, #2168, #2179, #2219, #2220, #2221, #2230, #2232, #2233, #2234)
- Add
IsObject
trait (#2178) - Rename
Object
toAnyObject
; clean it up (#2185, #2186, #2187) - Improve documentation (#2188, #2209; thank you, @watana318!)
- Add new entry point into API:
Core
(#2191, #2192, #2196, #2197, #2198, #2207, #2210, #2211, #2218) - Clean up
update
operations API (#2200, #2203, #2205, #2206, #2253, #2255; thank you, @IamTheCarl!) - Don't require dropping validation layer to handle validation errors (#2216)
- Fix panic in
ObjectSet
due to equal but not identical objects (#2228) - Start cleanup of validation infrastructure (#2229, #2231, #2235, #2242, #2277)
- Remove unused intersection checks (#2236, #2268)
- Start moving geometry from object graph to dedicate geometry layer (#2237, #2241, #2245, #2246, #2247, #2261, #2263, #2265, #2267, #2270, #2271, #2272, #2274, #2275)
- Expand
build
operations API (#2239, #2240, #2276) - Return more information from shell-face sweep operation (#2260)
- Lots of minor clean-ups (#2147, #2195, #2199, #2204, #2208, #2262, #2273)
- Upgrade to
3mf-rs
0.5 (#2248; thank you, @IamTheCarl!) - Make export functions more general; make them public (#2252, #2254; thank you, @IamTheCarl!)
- Upgrade to wgpu 0.19 (#2182)
Improvements that are not associated with a specific Fornjot library.
- Improve release procedure (#2141, #2142, #2177)
- Clean up example models (#2143, #2183, #2184)
- Keep dependencies up-to-date (#2146, #2151, #2152, #2154, #2156, #2173, #2181, #2190, #2202, #2225, #2238, #2251, #2257, #2258, #2269)
- Keep Rust version up-to-date (#2153, #2226)
- Keep README files in repository up-to-date (#2155, #2163, #2176, #2189, #2243, #2244, #2259)
- Update
CONTRIBUTING.md
(#2175)
Improvements to Fornjot libraries.
- Make improvements to validation infrastructure (#1907, #1914, #1942, #2058, #2061, #2064, #2065, #2095, #2096)
- Expand and clean up build and update operations (#1912, #1913, #1934, #1975, #2029, #2031, #2032, #2033, #2119)
- Add
ObjectSet
to manage and access references to other objects (#1915, #2026, #2027, #2028, #2036, #2083, #2084, #2109) - Clean up edge approximation code (#1936, #1953, #1966, #1996, #2005, #2008, #2009, #2010, #2016, #2017, #2019, #2020, #2021, #2041, #2042, #2043, #2044, #2046, #2051, #2054, #2055, #2057, #2066, #2067, #2068, #2074)
- Improve user-facing documentation (#1938, #2056, #2081, #2100, #2101)
- Clean up representation of curves in object graph (#1939, #1950, #1952, #1982, #1983, #1997, #1998, #1999, #2000, #2059)
- Make various minor cleanups and additions (#1940, #1951, #1981, #2107, #2113, #2127, #2135)
- Add
CurveBoundary
to represent boundaries on a curve (#1941, #1967, #1990, #1991, #2037) - Add
queries
API (#1949, #1974, #2063, #2077) - Remove out-of-date note (#1954; thank you, @A-Walrus!)
- Validate shell orientations (#1968; thank you, @A-Walrus!)
- Expand reverse operation (#1976, #1979, #1980)
- Make
IsInserted
more useful (#1978) - Add
operations::split
(#2076, #2088, #2093, #2094, #2097, #2115) - Add
operations::replace
(#2086, #2089, #2091, #2092) - Clean up sweep operations (#2099, #2103, #2106, #2110, #2111, #2114, #2120, #2137)
- Add operation to extend a shell by sweeping one of its faces (#2121)
- Add operations to add holes to a shell (#2128, #2134, #2136, #2138)
- Be more relaxed about what GPU configs to accept (#2014)
- Fix initialization panic with GL backend (#2015)
- Add debug logging, improve error messages, shuffle some render stuff around (#2035)
- Try all adapters, if one fails to return a device (#2038)
Improvements that are not associated with a specific Fornjot library.
- Update release procedure (#1902)
- Update README (#1903, #1989, #2050, #2075)
- Update dependencies (#1906, #1911, #1919, #1933, #1948, #1965, #1972, #1987, #1992, #1993, #1994, #1995, #2001, #2002, #2003, #2006, #2007, #2018, #2022, #2030, #2039, #2048, #2052, #2053, #2062, #2073, #2079, #2080, #2082, #2085, #2090, #2102, #2112, #2122, #2131, #2139)
- Add automation for generating blog posts on sponsor updates (#1920)
- Update contribution guide (#1955; thank you, @TobiasJacob!)
- Remove fj.toml file (#1956; thank you, @TobiasJacob!)
- Upgrade to Rust 1.74.1 (#1988, #2004, #2024, #2045, #2104, #2129)
- Add configuration for developing on NixOS (#2105, #2108)
Improvements to Fornjot libraries.
- Add new
fj
crate as all-in-one interface to the whole kernel (#1853) - Add standardized CLI for models (#1860)
- Compute tolerance manually, if not provided via CLI (#1872)
- Add
Region
to share code betweenSketch
andFace
(#1828, #1883; thank you, @A-Walrus!) - Make various cleanups (#1830, #1831)
- Expand and update operations API (#1850, #1879, #1884, #1891)
- Rename
fj-kernel
tofj-core
(#1852) - Compute AABB from boundary representation (#1871, #1886, #1888)
- Clean up
Reverse
(#1885)
- Remove GUI code (#1829)
- Remove vestigial debug rendering code (#1862)
- Make more cleanups (#1893, #1898)
- Re-add
fj-window
crate (#1837) - Work around crash when opening window (#1849)
- Rename
window::run
todisplay
(#1861) - Expect
Model
infj_window::display
(#1865)
Improvements that are not associated with a specific Fornjot library.
- Update dependencies (#1821, #1827, #1835, #1845, #1847, #1858, #1880, #1897)
- Execute the change in focus, towards building only a CAD kernel (#1822, #1823, #1824, #1836, #1838, #1846, #1851, #1889, #1890, #1892)
- Upgrade to Rust 1.70.0 (#1859)
- Update README (#1869, #1881)
- Update documentation (#1882, #1894, #1899)
- Determine crates to publish automatically (#1900)
Improvements to Fornjot and its documentation that are visible to end users.
None this week! Busy working on the kernel.
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.
- Derive
Eq
/Ord
forObject
(#1810) - Clean up validation service (#1811)
- Replace remaining parts of obsolete builder API with operations API (#1812, #1813)
Improvements that are relevant to developers working on Fornjot itself.
None this week.
Improvements to Fornjot and its documentation that are visible to end users.
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.
- Clean up and expand operations API (#1794, #1797)
- Clean up in-kernel services API (#1795)
- Add missing information to error messages (#1796)
Improvements that are relevant to developers working on Fornjot itself.
- Fix warning; make sure warnings can't slip through CI again (#1793)
- Update list of sponsors in README (#1798)
- Update dependencies (#1808)
Improvements to Fornjot and its documentation that are visible to end users.
None this week. Busy working on the kernel!
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.
- Clean up
Solid
validation code (#1774) - Update and expand operations API (#1775, #1776, #1777, #1778, #1779, #1783)
- Add some useful methods to
Cycle
(#1780)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1773, #1790; thank you, @dzvon!)
- Turn
pretty_assertions
into adev
dependency (#1781; thank you, @therealprof!) - Upgrade to Rust 1.69.0 (#1782)
Improvements to Fornjot and its documentation that are visible to end users.
- Add support for exporting
.obj
format (#1739; thank you, @replicadse!)
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.
- Make minor cleanups in
Solid
validation code (#1737) - Expand operations API; replace
HalfEdgeBuilder
(#1738)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1733, #1753, #1760, #1762, #1770)
- Upgrade to latest Rust version (#1734, #1752)
- Replace custom code with new features from
robust
(#1761) - Update list of sponsors in README (#1771)
Improvements to Fornjot and its documentation that are visible to end users.
- Improve error message, if model code panics (#1716, #1721; thank you, @IamTheCarl!)
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.
- Remove dependency on winit (#1712; thank you, @IamTheCarl!)
- Add validation checks for
Shell
andSolid
(#1695; thank you, @A-Walrus!) - Fix winding algorithm not going back to start (#1709)
- Create new API for creating/updating geometry (#1711, #1714, #1717, #1718, #1719)
- Clean up objects service code (#1715)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1701, #1702, #1703, #1705, #1707, #1723)
- Update release procedure (#1708)
- Fix rust-analyzer in Nix flake (#1710; thank you, @A-Walrus!)
Improvements to Fornjot and its documentation that are visible to end users.
None this week, busy working on the kernel!
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.
- Require
Handle<HalfEdge>
in fewer places (#1680) - Simplify some tests (#1681)
- Unify remaining partial objects with their full variants (#1682, #1683, #1684, #1685)
- Add
Cycle
validation (#1686; thank you, @A-Walrus!) - Update and fix Nix flake (#1687, #1690; thank you, @A-Walrus!)
- Clean up builder API (#1692, #1693)
- Update docs for
Solid
(#1696; thank you, @A-Walrus!)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1669, #1670, #1671, #1672, #1673, #1674, #1675, #1676, #1677, #1678)
- Upgrade to Rust 1.68.0 (#1679)
- Allow export-validator to receive model name (#1698; thank you, @A-Walrus!)
- Update list of sponsors in README (#1699)
Improvements to Fornjot and its documentation that are visible to end users.
None this week. Busy working on the kernel!
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.
- Unify
HalfEdge
andPartialHalfEdge
(#1660, #1661, #1662, #1663, #1664) - Rewrite
HalfEdgeBuilder
(#1665)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1651, #1652, #1653, #1654, #1655, #1656, #1657, #1658, #1659)
- Update list of sponsors in README (#1667)
Improvements to Fornjot and its documentation that are visible to end users.
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.
- Make some tweaks in service code (#1629)
- Simplify object graph around
HalfEdge
(#1630, #1632, #1638, #1642, #1644) - Remove unused builder methods (#1633)
- Remove redundant data from object graph, compute it on-demand instead (#1635, #1636, #1640, #1641, #1647)
- Make validation unit tests more explicit (#1637)
- Remove unused validation error (#1639)
- Start unifying full and partial objects (#1645, #1646, #1648)
Improvements that are relevant to developers working on Fornjot itself.
Improvements to Fornjot and its documentation that are visible to end users.
- Fix
cargo install fj-app
(#1606)
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.
- Consolidate redundant references to
Surface
(#1604) - Simplify object graph by removing
Curve
/GlobalCurve
(#1607, #1610, #1614, #1615, #1616) - Update documentation on edges (#1609)
- Rename
SurfacePath
toCurve
(#1617)
Improvements that are relevant to developers working on Fornjot itself.
Improvements to Fornjot and its documentation that are visible to end users.
- Add UI element that shows model orientation (#1573, #1584; thank you, @erenoku!)
- Don't panic, if model code creates empty sketch (#1585; thank you, @tmayoff!)
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.
- Rewrite parts of sweep code (#1593)
- Start consolidating redundant references to
Surface
(#1596, #1597, #1598, #1599)
Improvements that are relevant to developers working on Fornjot itself.
Improvements to Fornjot and its documentation that are visible to end users.
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.
- Make various fixes and small updates in builder API (#1572)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1560, #1561, #1562, #1563, #1564, #1566, #1567)
- Upgrade to Rust 1.67.1 (#1574)
Improvements to Fornjot and its documentation that are visible to end users.
- Fixed status messages taking up too much space (#1551; thank you, @tmayoff!)
- Display version mismatch warning in GUI (#1554; thank you, @tmayoff!)
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.
- Improve validation error message (#1553)
- Lift limitation when inferring surface as plane (#1556)
- Reuse cached curve approximation, if range is reversed (#1557)
- Improve projections into plane (#1555)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1546, #1547, #1548, #1550)
- Update list of sponsors (#1552)
- Updated nix flake inputs (#1558; thank you, @Philipp-M!)
Improvements to Fornjot and its documentation that are visible to end users.
None this week. Busy working on the kernel!
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.
- Continue simplifying object graph around
HalfEdge
(#1535, #1536) - Add more debug information to approximation (#1537)
- Improve validation error messages (#1540)
- Respect existing boundary when updating
HalfEdge
as line segment (#1541)
- Box event loop error variants (#1539)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1528, #1529, #1530, #1531, #1533)
- Minimize scope of
unsafe
block (#1538) - Update release automation (#1542)
- Upgrade to Rust 1.67.0 (#1543)
Improvements to Fornjot and its documentation that are visible to end users.
None this week, busy working on the kernel!
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.
- Improve validation error message (#1518)
- Add
FaceBuilder::infer_curves
(#1520) - Simplify object graph around
HalfEdge
(#1521, #1522, #1524, #1526, #1527)
- Fix
Plane::project_vector
(#1523)
Improvements that are relevant to developers working on Fornjot itself.
Improvements to Fornjot and its documentation that are visible to end users.
- Fix app crashing, if it is minimized too long (#1504)
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.
- Improve builder API (#1495, #1501, #1502, #1509, #1510)
- Don't stop on first validation error (#1505)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1490, #1491, #1492, #1494)
- Fix rust-analyzer configuration in VS Code (#1497)
- Upgrade to Rust 1.66.1 (#1500)
- Box large error variants (#1506; thank you, @zthompson47!)
Improvements to Fornjot and its documentation that are visible to end users.
- Fix model updates freezing GUI; improve loading messages (#1476; thank you, @zthompson47!)
- Don't wrap
Angle
by default (#1478; thank you, @antonok-edm!) - Support arcs in sketches (#1484; thank you, @antonok-edm!)
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.
- Expand and clean up builder API (#1479, #1483, #1485, #1489)
- Remove
fj_kernel::iter
(#1480) - Remove
Vertex::global_form
(#1481) - Improve some validation error messages and validation test output (#1486)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1472, #1473, #1474, #1475, #1487)
- Expand and clean up release automation (#1482)
Improvements to Fornjot and its documentation that are visible to end users.
None this time!
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.
- Simplify
CycleBuilder
andFaceBuilder
(#1467)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1459, #1460, #1461, #1462, #1463, #1465, #1470)
- Upgrade to Rust 1.66.0 (#1466)
- Replace
robust-predicates
(#1468) - Cross-compile to Android and iOS (#1469)
Improvements to Fornjot and its documentation that are visible to end users.
- Fix crash when minimizing window on Windows (#1447; thank you, @kazatsuyu!)
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.
- Continue cleanup of object construction code (#1445, #1446, #1448, #1449, #1450, #1451, #1452, #1453, #1456, #1457)
- Fix doc comment (#1458)
- Return line coordinates from
Line::from_points
(#1455)
Improvements that are relevant to developers working on Fornjot itself.
Improvements to Fornjot and its documentation that are visible to end users.
- Fail, if RUST_LOG is invalid (#1435; thank you, @zthompson47!)
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.
- Improve behavior around validation failures (#1417, #1418, #1436)
- Continue cleanup of object construction code (#1419, #1423, #1428, #1429, #1430, #1432, #1433)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1412, #1414, #1416)
- Fix some Clippy lints (#1421; thank you, @danieleades!)
- Improve usage and documentation of
justfile
(#1422, #1425)
Improvements to Fornjot and its documentation that are visible to end users.
- Display more errors in the GUI and display more information about them (#1405)
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.
- Move validation to separate service (#1403, #1404)
- Continue cleanup of object construction code (#1406, #1407, #1408, #1409)
- Rename
GlobalVertex::from_position
tonew
(#1410) - Touch up documentation of objects (#1411)
Improvements that are relevant to developers working on Fornjot itself.
Improvements to Fornjot and its documentation that are visible to end users.
- Remove model generation feature to fix
cargo install
error (#1373) - Enable model version check on Windows (#1374)
- Change messages to say "evaluating" instead of "compiling" (#1396)
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.
- Build service abstraction around
Objects
(#1377, #1384, #1390, #1392, #1393) - Fix
Store
iteration bug (#1383) - Simplify old builder structs (#1388)
- Add
Object
enum (#1391)
- Take
&mut Objects
inShape::compute_brep
(#1389) - Simplify return value of
Shape::compute_brep
(#1394)
Improvements that are relevant to developers working on Fornjot itself.
Improvements to Fornjot and its documentation that are visible to end users.
- Fix potential soundness hole in version comparison (#1358)
- Fix error when
cargo install
ingfj-app
fromcrates.io
(#1364, #1365) - Soften shading (#1366)
- Improve output of
--version
(#1367) - Fix triangulation of sharp, concave faces (#1369)
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.
- Add infrastructure for abstracting over access to referenced objects (#1359)
- Continue cleanup of partial object API (#1360, #1361, #1362)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1345, #1347, #1348, #1355)
- Update release procedure (#1363)
- Make some smaller code cleanups (#1368, #1370, #1371)
Improvements to Fornjot and its documentation that are visible to end users.
- Don't require
--model
to pass a model (#1323; thank you, @kopackiw!) - Add command to create a new model (#1344; thank you, @MartinKavik!)
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.
- Complete transition to new validation infrastructure (#1326, #1328, #1330)
- Continue cleaning up partial object API (#1331, #1334, #1337, #1338, #1339, #1340, #1343)
- Remove use of old validation infrastructure (#1329)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1321)
- Make some minor code cleanups (#1322, #1332, #1336)
- Fix some release automation issues (#1324, #1325, #1333, #1335; thank you, @kopackiw!)
- Add Windows support to
export-validator
(#1342; thank you, @MartinKavik!)
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)
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.
- Clean up partial object API (#1294, #1305, #1309, #1310, #1312)
- Move most validation code to new validation infrastructure (#1295, #1299)
- Simplify
Cycle
andFace
(#1297) - Improve
Debug
implementation ofHandle
(#1298) - Simplify
GlobalPath
transforms (#1313)
- Simplify interaction with
Gui
(#1301)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1290, #1291, #1292, #1293, #1314, #1315, #1316, #1318, #1319)
- Upgrade to Rust 1.65.0 (#1306)
- Make some clean-ups in internal
fj
code (#1311)
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!)
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.
- Clean up API (#1269)
- Add new validation infrastructure (#1279, #1282, #1283, #1284, #1285)
- Simplify handling of
MaybePartial
(#1287)
- Replace
Point::distance
withdistance_to
(#1281)
Improvements that are relevant to developers working on Fornjot itself.
- Update release procedure (#1258)
- Clean up CI build (#1259, #1260)
- Update dependencies (#1261, #1262, #1263, #1264, #1265, #1267)
- Lower limits requested of the graphics backend (#1273)
- Make sure
fj
'sbuild.rs
doesn't run too often (#1277)
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!)
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.
- Rename
Watcher::receive
; improve its error handling (#1234)
- 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
inFaceBuilder
(#1254)
- Clean up API (#1232)
Improvements that are relevant to developers working on Fornjot itself.
- Compile Fornjot to WebAssembly (#1221)
- Update release procedure (#1225)
- Run export validation on macOS (#1226)
- Update dependencies (#1227, #1228, #1229)
- Clean up some code (#1241, #1251)
- Update
README.md
(#1250)
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
inCargo.toml
(#1209) - Fix some
wgpu
/egui-winit
errors and warnings (#1216)
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.
- Rename
Stores
toObjects
, move it toobjects
(#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)
- Fix
Triangle::winding
(#1217)
- Remove redundant argument from
Shape::compute_brep
(#1201)
- Remove dependency on winit (#1210)
Improvements that are relevant to developers working on Fornjot itself.
- Update release procedure (#1195, #1208)
- Update dependencies (#1196, #1197)
- Add Nix build and dev-shell support via Nix flakes (#1199, #1203; thank you, @Philipp-M!)
- Clean up egui-related code (#1211)
Improvements to Fornjot and its documentation that are visible to end users.
None this week. Still busy improving the kernel!
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.
- 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 ofObjectId
(#1173) - Simplify
HalfEdge
andVertex
(#1175, #1178) - Expand scope of centralized object storage (#1176, #1179, #1180)
- Clean up handling of vertices in normalized order (#1181)
Improvements that are relevant to developers working on Fornjot itself.
- Update release procedure (#1165, #1177)
- Update dependencies (#1166, #1182, #1183, #1184, #1185, #1186, #1187, #1188, #1189, #1192)
Improvements to Fornjot and its documentation that are visible to end-users.
None this week. Busy improving the kernel!
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- 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)
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)
Improvements to Fornjot and its documentation that are visible to end-users.
None this week. Busy improving the kernel!
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Implement centralized object storage (#1108, #1116, #1121)
- Prepare for removing geometry from
GlobalCurve
(#1111, #1114) - Start converting builder API into partial object API (#1113, #1117, #1118, #1119, #1120, #1123, #1124, #1126, #1128, #1130, #1131, #1133, #1134, #1135)
- Simplify
Triangulate
trait (#1122) - Clean up
Face
constructor (#1125) - Remove
HalfEdge::from_curve_and_vertices
(#1127)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#1101, #1103, #1104, #1105, #1106, #1107, #1109)
- Remove unused dependencies (#1110)
- Expand release automation (#1115)
- Upgrade to Rust 1.64.0 (#1132)
- Update list of sponsors in README (#1136)
Improvements to Fornjot and its documentation that are visible to end-users.
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Improve validation of
HalfEdge
andVertex
(#1075) - Expand builder API (#1076, #1083)
- Expand sweep test suite (#1077)
- Perform various cleanups (#1080, #1084)
- Replace
CurveKind
withSurfacePath
/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)
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)
Improvements to Fornjot and its documentation that are visible to end-users.
None this week; busy improving the kernel!
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Improve sweep algorithm (#1038, #1054, #1061, #1063, #1068)
- Add
SurfaceVertex
(#1048) - Produce better approximations, validate their correctness (#1049, #1053, #1056, #1058)
- Make triangulation more flexible (#1050)
- Add
Faces
(#1051) - Simplify
Edge
; perform cleanups this enables (#1055, #1057, #1059, #1062) - Rename
Edge
toHalfEdge
(#1064) - Define face orientation by the winding of its exterior cycle (#1066)
- Add API for finding faces (#1067)
- Add
Vector<2>::cross
(#1065)
Improvements that are relevant to developers working on Fornjot itself.
- Update release procedure (#1037)
- Update dependencies (#1039, #1040, #1041, #1042, #1043, #1044, #1045, #1047)
- Expand release automation (#1046)
Improvements to Fornjot and its documentation that are visible to end-users.
- Fix crash on some graphics hardware (#1035)
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Clean up approximation code (#1011, #1012, #1013, #1028)
- Clean up and expand
algorithms::reverse
(#1017) - Fix edge cases in object equality comparisons (#1018, #1022)
- Improve and expand object validation (#1023, #1024, #1030, #1031)
- Make small improvements in kernel (#1025)
- Clean up sweep algorithm (#1026, #1033)
- Add some validation code to
PolyChain
(#1027) - Derive
Default
for all math types (#1029) - Add
Line::from_points_with_line_coords
(#1032)
Improvements that are relevant to developers working on Fornjot itself.
- Update release procedure (#1008, #1009)
- Update dependencies (#1010)
- Expand release automation (#1016)
Improvements to Fornjot and its documentation that are visible to end-users.
- Update usage documentation in README (#994)
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Improve comments and documentation (#988)
- Expand intersection tests (#977, #978)
- Extract
Shell
fromSolid
(#983) - Clean up sweep API (#984, #989, #991)
- Add builder API for
Sketch
(#992) - Add
GlobalEdge
(#998, #999) - Make some minor cleanups (#1000, #1001, #1005)
- Clean up
approx
module (#1003, #1006)
- Make minor API additions (#1004)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#964, #965, #966, #968, #969, #970, #974)
- Update release procedure (#972)
- Upgrade to Rust 1.63.0 (#973)
- Expand release automation (#981, #982)
- Add usage documentation to
CONTRIBUTING.md
(#995)
Improvements to Fornjot and its documentation that are visible to end-users.
- Display the last few status updates (#919, #945, #952; thank you, @devanlooches!)
- Add table of contents to README (#942)
- Display model compile times in status updates (#960; thank you, @connor-lennox!)
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Add
Surface
toCycle
(#939) - Clean up and expand intersection testing code (#940, #941, #946, #947, #948, #949, #950, #951)
Improvements that are relevant to developers working on Fornjot itself.
- Switch to model-driven host API (#885, #934; thank you, @Michael-F-Bryan!)
- Update list of sponsors in README (#921, #961)
- Update dependencies (#922, #923, #924, #925, #926, #928, #929, #930, #931, #933, #953, #954, #956, #957, #958, #959)
- Update release procedure (#932)
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!)
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- 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)
- Validate
Line
andCircle
on construction (#910, #913) - Extend and clean up
AbsDiffEq
implementations (#912)
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)
Improvements to Fornjot and its documentation that are visible to end-users.
- Add
--version
argument (#868; thank you, @Michael-F-Bryan!) - Improve README (#877, #882)
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Re-use
fj_math::Triangle
infj_interop::mesh
(#886)
- 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)
- Make
Triangle::from_points
fallible; addLine::is_coincident_with
(#887)
Improvements that are relevant to developers working on Fornjot itself.
Improvements to Fornjot and its documentation that are visible to end-users.
- Determine model's
target/
directory from Cargo metadata (#828, #841, #853; special thanks go to first-time contributor @Michael-F-Bryan!) - Derive
PartialEq
for types infj
crate (#832; thank you, @Michael-F-Bryan!) - Type-check model functions (#867; thank you, @Michael-F-Bryan!)
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Convert
Color
into a struct (#862)
- Clean up and expand APIs of
Edge
,Face
, andCycle
(#854, #855, #863, #865) - Return references to objects, where appropriate (#858)
- Make names of
Local
methods more explicit (#860) - Revamp builder API (#864, #866)
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
'siter
module (#859) - Expand implementation note (#861)
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)
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Implement curve/face intersection algorithm (#802, #812, #813, #817, #826)
- Return local curves from surface/surface intersection (#811)
- Derive
Copy
forVerticesOfEdge
(#818) - Add
Sketch
/Solid
to distinguish between 2D/3D shapes (#819, #823, #827) - Provide more complete and convenient transform API (#822)
- Fix edge case in
Vector::scalar_projection_onto
(#810)
Improvements that are relevant to developers working on Fornjot itself.
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.
- Support serialization using Serde (#610, #682, #685, #688)
- Add
Angle
(#619, #621, #641) - Add
#[fj::model]
macro (#643, #652, #655, #659) - Fix memory leak in
Sketch
(#646)
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
withfj_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
withfj_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 replacegeometry::Point
(#761)
Library that provides math primitives for the Fornjot ecosystem.
- Rename
Transform::project_to_slice
toproject_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.
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:
- 2022-W04
- 2022-W05
- 2022-W06
- 2022-W07
- 2022-W08
- 2022-W09
- 2022-W10
- 2022-W11
- 2022-W12
- 2022-W13
- 2022-W14
- 2022-W15
- 2022-W16/W17
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
tofj::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.
- Replace
fj::Rectangle
with the more powerfulfj::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
tofj::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)
-
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.
- 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
.
- Replace
fj::Square
withfj::Rectangle
.
- Reload current model, whenever its source code is modified.
- 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.
- 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.
- Link
README.md
inCargo.toml
Initial release.