Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,117 @@
* `split` now throws a `RangeError` unless `numGroups` is a positive integer. The previous 32-group ceiling is gone: group membership is no longer stored as a `1 << g` bitmask, so any number of splits is supported (bounded in practice by the process' open file descriptor limit, one per group).
* `@thatopen/fragments` now requires node `>=20.11.0` (`fs.openAsBlob`, global web streams)

## [3.5.0](https://github.com/ThatOpen/engine_fragment/compare/v3.4.0...v3.5.0) (2026-09-11)


### Features

* add contributing guide ([908eea0](https://github.com/ThatOpen/engine_fragment/commit/908eea0a59a2eabe0cd00df86d44aa98e594eb00))
* add edit API to SingleThreadedFragmentsModel ([864dc23](https://github.com/ThatOpen/engine_fragment/commit/864dc237a140ebb5fd1f9d12d17f408275049e60))
* add frag load progress callback ([ac639f9](https://github.com/ThatOpen/engine_fragment/commit/ac639f9715e85d87dc5c17e42d5352d38b661bed))
* add VirtualMultithreadingConfig ([#194](https://github.com/ThatOpen/engine_fragment/issues/194)) ([ebd7750](https://github.com/ThatOpen/engine_fragment/commit/ebd7750032cad5fde842087292f3828e8b17612a))
* allow to get items chunks ([d65be31](https://github.com/ThatOpen/engine_fragment/commit/d65be31ab52d5c7963726b398c039bf4c5fc09fa))
* **edit:** add CREATE/UPDATE/DELETE_INDEX edit requests ([f8aa07f](https://github.com/ThatOpen/engine_fragment/commit/f8aa07f61805b93b19f6912eb36f3b079d777198)), closes [#164](https://github.com/ThatOpen/engine_fragment/issues/164)
* **editor:** add createIndex/updateIndex/deleteIndex convenience methods ([a17707e](https://github.com/ThatOpen/engine_fragment/commit/a17707e323789219bedf78b2649b268a70a15eda)), closes [#164](https://github.com/ThatOpen/engine_fragment/issues/164)
* expose getLocalIdsFromItemIds on the public model API ([18742ff](https://github.com/ThatOpen/engine_fragment/commit/18742ff96dafc307d25bea3abe0cca13ef2c7e5f))
* **FragmentsModels:** auto-detect raw vs deflated buffers ([041531f](https://github.com/ThatOpen/engine_fragment/commit/041531fb4bf999b5b959f90da51dad569b6706ef)), closes [#213](https://github.com/ThatOpen/engine_fragment/issues/213)
* **FragmentsModels:** shared IFragmentsModel interface across model types ([#227](https://github.com/ThatOpen/engine_fragment/issues/227)) ([3ccce85](https://github.com/ThatOpen/engine_fragment/commit/3ccce850303ddb72843133d3e04a86b4e19c2098))
* full uint32 localId range in tile id attribute ([fe11440](https://github.com/ThatOpen/engine_fragment/commit/fe11440b702850769bf94f18e983ec51345a9bef))
* **grids:** stamp userData kinds and expose grid material ([e383064](https://github.com/ThatOpen/engine_fragment/commit/e38306467edafa18000142676d4ceb692ffca42f)), closes [#192](https://github.com/ThatOpen/engine_fragment/issues/192)
* **ifc-importer:** include IFC4x3 alignment layouts in the spatial structure ([#743](https://github.com/ThatOpen/engine_fragment/issues/743)) ([c094e73](https://github.com/ThatOpen/engine_fragment/commit/c094e73aa0ef6c1eb67a9f63a7a7bd223f9d8ccd))
* **IfcImporter:** add doubleSidedMaterials option ([7f679ba](https://github.com/ThatOpen/engine_fragment/commit/7f679ba5fc5dd55ab3afaf8b101f054e13635fb3)), closes [#233](https://github.com/ThatOpen/engine_fragment/issues/233)
* implement model load abort ([bddbcfc](https://github.com/ThatOpen/engine_fragment/commit/bddbcfc7cfc5266cc5c311c19ae51caa0d22522a))
* implement worker control ([c5fac67](https://github.com/ThatOpen/engine_fragment/commit/c5fac678c41a586b02b0c527227887bd7f65e208))
* improve worker fetch logic ([d03b6a0](https://github.com/ThatOpen/engine_fragment/commit/d03b6a063a7e7536c687c6b12e8c08aadbce1ba4))
* itemId-keyed snap fetch + picker encoding ([0f48bb6](https://github.com/ThatOpen/engine_fragment/commit/0f48bb62da6463f2988aeb3c1bedb2e99a479e15))
* **model:** add VirtualIndexesController ([049a057](https://github.com/ThatOpen/engine_fragment/commit/049a057d52921bc8d1cd859d3097c94cedcd602b)), closes [#164](https://github.com/ThatOpen/engine_fragment/issues/164)
* **model:** expose user-defined index reads on FragmentsModel ([4a33282](https://github.com/ThatOpen/engine_fragment/commit/4a33282195f19bbc3dc81994175a2ed7a60edfe6)), closes [#164](https://github.com/ThatOpen/engine_fragment/issues/164)
* **model:** make index reads see pending edits ([5a08811](https://github.com/ThatOpen/engine_fragment/commit/5a08811c5534940bc48e01ff6a31e1b0b91a9029)), closes [#164](https://github.com/ThatOpen/engine_fragment/issues/164)
* **schema:** add ModelIndex table for user-defined lookups ([fd52cbc](https://github.com/ThatOpen/engine_fragment/commit/fd52cbce2e6e6bddbd740f788f1d39f1fb44d39b)), closes [#164](https://github.com/ThatOpen/engine_fragment/issues/164)
* **split:** return map of file paths to localIds ([#195](https://github.com/ThatOpen/engine_fragment/issues/195)) ([cf6345b](https://github.com/ThatOpen/engine_fragment/commit/cf6345ba9ce67c6fef9b56e29ab653042a6b84f2))
* store localId in tile geometry id attribute ([7c69110](https://github.com/ThatOpen/engine_fragment/commit/7c69110bef484f648c679be73399ac34b197396e))


### Bug Fixes

* **`getShellData`:** bbox + raw shell not respecting `settings.precision` ([#212](https://github.com/ThatOpen/engine_fragment/issues/212)) ([6c67266](https://github.com/ThatOpen/engine_fragment/commit/6c672661e2727d4b5bea783e9bafe42d2289bf9d))
* add getItemCategory wrapper to the virtual model ([#267](https://github.com/ThatOpen/engine_fragment/issues/267)) ([a95c679](https://github.com/ThatOpen/engine_fragment/commit/a95c679ac26e8529db98dddedde6515e39521b33))
* **alignments:** dispose all alignment geometries and materials instead of throwing ([#235](https://github.com/ThatOpen/engine_fragment/issues/235)) ([22b0bde](https://github.com/ThatOpen/engine_fragment/commit/22b0bdea5c07d1f91d827dabc48c9755979d955a))
* awaitable setup and clean disposal for SingleThreadedFragmentsModel ([#261](https://github.com/ThatOpen/engine_fragment/issues/261), [#262](https://github.com/ThatOpen/engine_fragment/issues/262)) ([2dd1748](https://github.com/ThatOpen/engine_fragment/commit/2dd17489e124d6fe0ee8af2835adba7d3424cc28))
* build GeometryProcessSettings jsdoc into types ([#226](https://github.com/ThatOpen/engine_fragment/issues/226)) ([d4839d2](https://github.com/ThatOpen/engine_fragment/commit/d4839d23babb2a0fc5a94681a8f93e80b9f32a83))
* cap the tile cache per worker ([217b9b0](https://github.com/ThatOpen/engine_fragment/commit/217b9b05da7d7e7fb54f01532715a0f441a9f6a8))
* collectDeps no longer reports nonexistent ids ([ae6b024](https://github.com/ThatOpen/engine_fragment/commit/ae6b024d5b64dd2417445204d09af4a31ee8ba43))
* compact tile indices into one draw range per tile ([9db04dd](https://github.com/ThatOpen/engine_fragment/commit/9db04dd66faa0ae42e166e9dc566ba7ef7e12cc5))
* correct docs that break docusaurus ([7ff557c](https://github.com/ThatOpen/engine_fragment/commit/7ff557c620e7df59db807fcbc8908b8f5cd57e91))
* correct worker url ([162f083](https://github.com/ThatOpen/engine_fragment/commit/162f083a225195c06ea1201162a5115172f8df10))
* deliver both minified and non-minified code ([2ebcbe5](https://github.com/ThatOpen/engine_fragment/commit/2ebcbe5fa1f673add5b5ab2f1f39ff4bddb68bd5))
* depth bias fields on MaterialDefinition to resolve coplanar z-fighting ([#266](https://github.com/ThatOpen/engine_fragment/issues/266)) ([caba371](https://github.com/ThatOpen/engine_fragment/commit/caba371731874e95b00514b4d180a2952072c7b1))
* don't cull geometry before a camera is set ([43b1f9c](https://github.com/ThatOpen/engine_fragment/commit/43b1f9ccbd0fbd2500b00b51a5c0419d6888bc5b)), closes [#255](https://github.com/ThatOpen/engine_fragment/issues/255)
* **editor:** swap models in save() without blank-frame flicker ([#208](https://github.com/ThatOpen/engine_fragment/issues/208)) ([6a4391b](https://github.com/ThatOpen/engine_fragment/commit/6a4391b6279d3443de606505cf5aecc3deddc0f4))
* fill tiles sorted by size ([e190daf](https://github.com/ThatOpen/engine_fragment/commit/e190dafc5a62c4d8accebeaaf016937ed0739249))
* **FragmentsModels:** geometry-accurate rectangleRaycast selection ([705ea90](https://github.com/ThatOpen/engine_fragment/commit/705ea905b5a093faa71e181777b1e313d7b00b9b)), closes [#229](https://github.com/ThatOpen/engine_fragment/issues/229)
* **FragmentsModels:** keep per-item highlight colors in LOD/WIRES view ([29d6179](https://github.com/ThatOpen/engine_fragment/commit/29d61794367417be215891f485c184fbf5621f7f)), closes [#230](https://github.com/ThatOpen/engine_fragment/issues/230)
* **FragmentsModels:** stop ThreadUpdater idle timer leaking on import ([9985277](https://github.com/ThatOpen/engine_fragment/commit/99852770795c58657347f8d961d7d285cc97d578)), closes [#234](https://github.com/ThatOpen/engine_fragment/issues/234)
* **FragmentsModels:** transfer Uint8Array model data to the worker instead of cloning it ([#241](https://github.com/ThatOpen/engine_fragment/issues/241)) ([948b385](https://github.com/ThatOpen/engine_fragment/commit/948b385ce8795ae715bc1a8876dfc7ac1e6cc2dc))
* get rid of debug logs ([03cd103](https://github.com/ThatOpen/engine_fragment/commit/03cd10361670d0285040f16b83210967f94b5cba))
* **Grids:** add opt-in grid labels ([#199](https://github.com/ThatOpen/engine_fragment/issues/199)) ([fd11e67](https://github.com/ThatOpen/engine_fragment/commit/fd11e67fc9c75ba47bc708b9e9d787ad9fa46c85))
* hierarchical frustum culling via the box structure ([2a6d31c](https://github.com/ThatOpen/engine_fragment/commit/2a6d31c38234d8517e2a08594c20aa3e031f7eec))
* **highlight:** clear all items on no-args resetHighlight ([00e7fe0](https://github.com/ThatOpen/engine_fragment/commit/00e7fe0335f0b13e6349363dbfe7dc36221c8761))
* **ifc-importer:** render IFCBEARING and IFCREFERENT ([#744](https://github.com/ThatOpen/engine_fragment/issues/744)) ([2b171e3](https://github.com/ThatOpen/engine_fragment/commit/2b171e3d94d956d69eb86ff5cbee58d3b51a19f8))
* **ifc-splitter:** add `IFCMECHANICALFASTENER` to elements types ([#179](https://github.com/ThatOpen/engine_fragment/issues/179)) ([e33a9b0](https://github.com/ThatOpen/engine_fragment/commit/e33a9b0f918e38e2d3947d76218b95fabe70bdf6))
* **IfcImporter:** add IFCBRIDGE to default elements ([6f10d85](https://github.com/ThatOpen/engine_fragment/commit/6f10d85edaac55236244868630354fd84f381328)), closes [#203](https://github.com/ThatOpen/engine_fragment/issues/203)
* **IfcImporter:** convert grids when a grid axis tag is omitted ([#244](https://github.com/ThatOpen/engine_fragment/issues/244)) ([2131605](https://github.com/ThatOpen/engine_fragment/commit/21316056caf518e977ee6eefe4a75934e38a50fd))
* **IfcImporter:** import material property sets behind includeMaterialProperties ([#249](https://github.com/ThatOpen/engine_fragment/issues/249)) ([e53276f](https://github.com/ThatOpen/engine_fragment/commit/e53276f3d1c1594c785750b1744650c87d42e07d))
* **IfcImporter:** order-sensitive vertex hashing in the geometry dedup key ([dfdd873](https://github.com/ThatOpen/engine_fragment/commit/dfdd8733e69455efccf58ac2ff369c137f7fc1a1))
* improve the getItemsByVisibility ([e68c376](https://github.com/ThatOpen/engine_fragment/commit/e68c376d7f679e51d7bfa09aedde118ba616ea00))
* include property names in rendered material identity ([6242c2b](https://github.com/ThatOpen/engine_fragment/commit/6242c2b6d8c2c204b08dcb3fd5643c5ca6c46f15))
* include type entities and solve DefinesOccurrence typo ([79b134a](https://github.com/ThatOpen/engine_fragment/commit/79b134adbc0d2e6a9704fedb28d9da9feb7b129e))
* index edit requests for faster property reads ([0ced7f1](https://github.com/ThatOpen/engine_fragment/commit/0ced7f14829e0c0ea02d69d16b1228200fb34d4c))
* index items by category for getItemsOfCategories ([5b8d4f5](https://github.com/ThatOpen/engine_fragment/commit/5b8d4f57724b0276785bf9f6660447d188b65fbb))
* **Indexes:** add getIndexKey and getIndexValues ([#215](https://github.com/ThatOpen/engine_fragment/issues/215)) ([a2d945f](https://github.com/ThatOpen/engine_fragment/commit/a2d945f96d289cb5b0262038785b9cb5083f1d03))
* **Indexes:** generic types for index read methods ([#224](https://github.com/ThatOpen/engine_fragment/issues/224)) ([1d1db70](https://github.com/ThatOpen/engine_fragment/commit/1d1db707e327115144937a3c738b623c213b5c92))
* **Indexes:** validate index edit requests ([#223](https://github.com/ThatOpen/engine_fragment/issues/223)) ([5ae2527](https://github.com/ThatOpen/engine_fragment/commit/5ae2527500eb29fe9f4e30b8ecf95184a52d9ac9))
* **Indexes:** validate index number keys/values are non-negative 32-bit integers ([9e57acf](https://github.com/ThatOpen/engine_fragment/commit/9e57acff6814dc13eb58a088d6d951fa5755935f)), closes [#214](https://github.com/ThatOpen/engine_fragment/issues/214)
* keep example.html filename in generated index links ([36b1357](https://github.com/ThatOpen/engine_fragment/commit/36b13574b5ad0b0b9d11de964afdaa2ba4571215))
* keep web-ifc out of the worker bundle ([#289](https://github.com/ThatOpen/engine_fragment/issues/289)) ([2e7b7bd](https://github.com/ThatOpen/engine_fragment/commit/2e7b7bd5d49b08f4adf9c12f92e51dd1e6b6876d))
* **parser:** streaming STEP tokenizer with web-ifc tape parity ([dceedc8](https://github.com/ThatOpen/engine_fragment/commit/dceedc86d3e39cb91faf2da675f2025b143e5833))
* **raycaster:** full precision result.facePoints ([#205](https://github.com/ThatOpen/engine_fragment/issues/205)) ([ccbc174](https://github.com/ThatOpen/engine_fragment/commit/ccbc174eb523e694834e6d4cfbf3af10b08756ac))
* **raycaster:** type facePoints as Float64Array ([0208f9a](https://github.com/ThatOpen/engine_fragment/commit/0208f9a22b3a5b12071c210fbcfe1035b51d90a4))
* read alignments when vertical data is missing ([5f67ad4](https://github.com/ThatOpen/engine_fragment/commit/5f67ad4ce6b1d530a0b0abc2065f5be8d5c29c9a))
* render faces whose normal has two equal components ([#218](https://github.com/ThatOpen/engine_fragment/issues/218)) ([24cfb48](https://github.com/ThatOpen/engine_fragment/commit/24cfb48cb7dc233e4b4998cc37023b57884691d6)), closes [#206](https://github.com/ThatOpen/engine_fragment/issues/206)
* restore raw output as default for edit() and save() ([ff9f387](https://github.com/ThatOpen/engine_fragment/commit/ff9f38766cf224224a9f33d6ade95a87cc6512ff))
* reuse identical preserved material definitions ([63bc3e9](https://github.com/ThatOpen/engine_fragment/commit/63bc3e970397efa2832ce7a19535ebe2c72f6f23))
* rotate thread updater across workers ([4ed4d47](https://github.com/ThatOpen/engine_fragment/commit/4ed4d47a8b98b2f7e0e62d7e35a03f503ce4a033))
* setSample passes real visibility to updateTile ([c6a0d2f](https://github.com/ThatOpen/engine_fragment/commit/c6a0d2f0fe49386bfea4549eb3b2ec31f9ceef8e))
* settle update fences when no models remain ([9746997](https://github.com/ThatOpen/engine_fragment/commit/9746997b208fe31e7abe7aa6f54add9627a513d2))
* **SingleThreadedFragmentsModel:** `getItemsChildren` return value ([#220](https://github.com/ThatOpen/engine_fragment/issues/220)) ([c30e553](https://github.com/ThatOpen/engine_fragment/commit/c30e553bb7d7e09a81070010ecf49f5df6119ec8))
* **SingleThreadedFragmentsModel:** expose `raw` arg ([#209](https://github.com/ThatOpen/engine_fragment/issues/209)) ([3f58f6e](https://github.com/ThatOpen/engine_fragment/commit/3f58f6e3a39605c82294c80fff50a2285b098df1))
* skip delta rebuild on data-only edits ([700b1b1](https://github.com/ThatOpen/engine_fragment/commit/700b1b1f4816e0de1cffb2c1acc6bfa020bc411b))
* skip IFC relations with unset relating/related attributes ([#217](https://github.com/ThatOpen/engine_fragment/issues/217)) ([ea4104d](https://github.com/ThatOpen/engine_fragment/commit/ea4104d14823ee9bb7e400a89efc582888c216d1))
* solve bug due to rebar circle curve edge case ([fab19d6](https://github.com/ThatOpen/engine_fragment/commit/fab19d6700f0b6ee14a0072d45b8b455674ab14a))
* solve grid bug in some bim models ([161b5b6](https://github.com/ThatOpen/engine_fragment/commit/161b5b6c6a92bb3fcb23b317bef61a564e24c880))
* solve ifc splitter missing lines ([bbf890c](https://github.com/ThatOpen/engine_fragment/commit/bbf890ca2213007a1f91de6fbb0c3a4f1f5f9c6c))
* **split:** configurable IfcSplitter type lists and options ([a16437b](https://github.com/ThatOpen/engine_fragment/commit/a16437bc2249772c1936012852216a6d7b03ad7e))
* **splitter:** environment-agnostic streaming IO for split and extract ([#197](https://github.com/ThatOpen/engine_fragment/issues/197)) ([40db05b](https://github.com/ThatOpen/engine_fragment/commit/40db05bcf3dda9c31e242307e57f3493899d4c0d)), closes [#180](https://github.com/ThatOpen/engine_fragment/issues/180)
* **splitter:** inline fixture conversion and test timeouts ([ec7a7c7](https://github.com/ThatOpen/engine_fragment/commit/ec7a7c79337bda79d6fdf20442ab4eb3f1553b10))
* stamp generator and version into model metadata ([#273](https://github.com/ThatOpen/engine_fragment/issues/273)) ([7da302d](https://github.com/ThatOpen/engine_fragment/commit/7da302df8dc1c7e1a6bdea4ba07f63af1be2495c))
* surface unsupported grid axis curves instead of dropping them ([#264](https://github.com/ThatOpen/engine_fragment/issues/264)) ([d02a8a3](https://github.com/ThatOpen/engine_fragment/commit/d02a8a380dade48663f13cbaae91f31adf5372a7))
* survive grids without ObjectPlacement and report per-grid failures ([#263](https://github.com/ThatOpen/engine_fragment/issues/263)) ([74d0b3e](https://github.com/ThatOpen/engine_fragment/commit/74d0b3ed37784a17994cc4c26ef6613d18466808))
* **TS:** `ProcessData#readCallback` type/jsdocs ([#178](https://github.com/ThatOpen/engine_fragment/issues/178)) ([0f89ec0](https://github.com/ThatOpen/engine_fragment/commit/0f89ec0a1a00b437b37cdd3f801fe14b588f36da))
* upgrade examples to latest three.js version ([a73bf32](https://github.com/ThatOpen/engine_fragment/commit/a73bf32d9cc628daf75f6d270bef65d160426f92))
* **visibility:** query item visibility in the itemId space ([#750](https://github.com/ThatOpen/engine_fragment/issues/750)) ([ea620e3](https://github.com/ThatOpen/engine_fragment/commit/ea620e3ee3a30fb0fc1ce4d764801e42049a7f04))
* write 0 sentinel instead of raw itemIndex when localId lookup misses ([7c560a5](https://github.com/ThatOpen/engine_fragment/commit/7c560a59b10f490e78e8d30017d0a243fa55e3ec))


### Performance Improvements

* **FragmentsModels:** coalesce forced updates inside the rate window instead of bypassing it ([756e3f1](https://github.com/ThatOpen/engine_fragment/commit/756e3f1960560df25be2f7597baa8e9fa64c2212))
* **FragmentsModels:** memoize localId index lookups in properties controller ([#245](https://github.com/ThatOpen/engine_fragment/issues/245)) ([dc8d5b2](https://github.com/ThatOpen/engine_fragment/commit/dc8d5b2e2a6f0f459b6a1ec298610d51285a111a))
* **FragmentsModels:** skip view refresh and re-cull when the view is unchanged ([d5627de](https://github.com/ThatOpen/engine_fragment/commit/d5627dee59e4585682a592d0927a9ad9786f6b38))
* **FragmentsModels:** use Set lookup for itemIds filter in getItemsByAttribute ([#246](https://github.com/ThatOpen/engine_fragment/issues/246)) ([ce1f686](https://github.com/ThatOpen/engine_fragment/commit/ce1f686899002b971513fe33a51da0042e6e25a3))
* lower default worker timing knobs ([6c5b7db](https://github.com/ThatOpen/engine_fragment/commit/6c5b7db61282f00f1b5a2b7df068c41134542c72))
* sequence-fenced update(true), drain on every FINISH ([aaf44ba](https://github.com/ThatOpen/engine_fragment/commit/aaf44ba0014e81cdfa213c0d212b3ce1e49a011d))

## [3.4.0](https://github.com/ThatOpen/engine_fragment/compare/v3.3.2...v3.4.0) (2026-04-09)


Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,5 @@
"vite": "5.1.6",
"vite-plugin-dts": "3.7.3"
},
"version": "3.4.0"
"version": "3.5.0"
}