## LTplus-AG/ifc-lite — v10.1.2…v10.2.0

_378+ commits._

### Features
- **feat(rebar): add caller-supplied fabrication prechecks (#6441)** (3c3d33d)
- **feat(rebar): compare source geometry with caller limits (#6309)** (839b03c)
- **feat(rebar): expose occurrence-aware analytic schedule inputs (#5801)** (935951b)
- **feat(viewer): Model inspector edits name, type, wall size and layers, one undo step each (#6232 M2.5) (#6395)** (e89d58b)
- **feat(viewer): Slab, Column and Beam commands; Wall Align and Chain (#6232 M2.2) (#6396)** (b2562e8)
- **feat(viewer): Model workspace shell: tool rail, storey chip, workplane, inspector (#6232 M2.1) (#6315)** (9d1ce44)
- **feat(viewer): split keeps the larger piece's identity; derived GlobalId for the new piece (#6233) (#6314)** (9828849)
- **feat(export): join authored and analytic source quantities (#6283)** (d9b05c2)
- **feat(measure): snap to exact swept-disk centrelines (#5780) (#6280)** (daa1546)
- **feat(viewer): authored elements re-mesh through the wasm mesher; collab mirrors the real mesh (#6232) (#6391)** (a1fe4ad)
- **feat(geometry): expose typed extrusion definitions (#6312)** (cd11f20)
- **feat(viewer): inspect swept-disk source geometry (#5783) (#6279)** (a06bf16)
- **feat(export): preserve authored IFC quantity provenance (#6272)** (185ccf2)
- **feat(viewer): snap glyphs and guide lines while a modeling command draws (#6232 WP3, part 3) (#6390)** (833e0cd)
- **feat(analytic): expose placed extrusion source definitions (#6271)** (0ae5784)
- **feat(viewer): overlay selected swept-disk centrelines (#5778) (#6278)** (e22698e)
- **feat(viewer): every export dialog on ExportDialogShell; registry test covers them all (#5848) (#6387)** (a4ceae6)
- **feat(renderer): carry the IFC finish to instanced, textured and type-level meshes (#5984) (#6381)** (888a9a7)
- **feat(server): carry the IFC-authored finish over REST JSON and Parquet (#5984) (#6380)** (8cf50cc)
- **feat(analytic): derive nominal source quantities from swept disks and extrusions (#6268)** (d9c0d05)
- **feat(renderer): outline selected and hovered GPU-instanced occurrences (#5745) (#6377)** (d09c7b6)
- **feat(parser,rules): reference values read as the referenced Name; memberPath addresses complex-property members (#5475) (#6054)** (05a2221)
- **feat(renderer): selection outline through occluders and hover pre-highlight (#5390) (#5748)** (e682e7a)
- **feat(renderer): use IFC-authored specular for per-material metallic/roughness (#5582) (#5665)** (c1bff6c)
- **feat(analytic): expose exact IFC extrusion source profiles (#6263)** (7e0aa0c)
- **feat(analytic): expose swept-disk descriptions through WASM and TypeScript (#5770) (#6269)** (10b3a44)
- **feat(analytic): expose reusable swept-disk sources and instances (#5785)** (ba85514)
- **feat(analytic): check swept-disk source geometry (#5758)** (80d1ba9)
- **feat(viewer): Model workspace entry/exit; edit mode is the workspace (#6232 WP2, part 4) (#6299)** (6719603)
- **feat(viewer): wall.place + wall.moveEndpoint commands; Add Element walls via the command (#6232 WP2, part 3) (#6296)** (5395b56)
- **feat(viewer): storey workplane, command pointer, authoring overlay; Split as element.split (#6232 WP2, part 2) (#6275)** (117cf93)
- **feat(viewer): type registered context menu command controls (#6244)** (1e53ed9)
- **feat(viewer): authoring session + modeling command framework (#6232 WP2, part 1) (#6253)** (60750f7)
- **feat(viewer): re-mesh edited elements through the wasm mesher (#6232) (#6297)** (3f38367)
- **feat(viewer): retire classic toolbar runtime and parity (#5874 part 1) (#6231)** (deed492)
- **Add selected entity Actions home to Elements ribbon (#5870) (#6293)** (bd1d1b1)
- **feat(viewer): capture registry command execution and verify surface matrix (#6229)** (81c3bce)
- **feat(viewer): snap sources + Space Sketch on the snap engine (#6232 WP3, part 2) (#6247)** (25ff088)

### Fixes
- **fix(perf): add MPL header to analytic cache benchmark runner (#6449)** (1c30f9f)
- **perf(analytic): measure mapped-source cache extraction cost (#6447)** (cf9ee04)
- **fix(geometry): share trimmed line and circle decoding (#6402) (#6420)** (673cb3f)
- **perf(viewer): refresh whole-model panels on a streaming cadence, not per geometry publish (#6411) (#6428)** (b8a197a)
- **perf(viewer,renderer): drain the GPU upload queue in longer slices once nothing competes (#6436) (#6438)** (224cb06)
- **perf(viewer): hash the placement source identity from the bytes the loader already holds (#6431) (#6435)** (67efe57)
- **fix: main's two #6421 leftovers (RTC-frame registry path, stale sibling-frame key test) (#6429)** (1061d7d)
- **fix(renderer): instanced mask uniform packs no drawable origin (#6400) (#6415)** (3774b0b)
- **fix(collab-server): observe FsBlobStorage init failure (#6286) (#6413)** (02b1291)
- **fix(viewer): a collaborator's edit no longer retires the Model workspace hint (#6232 M2.1) (#6423)** (f01cd77)
- **fix(viewer): preserve symbolic buckets across spatial refresh (#6421)** (0371412)
- **fix(parser): retain property value parser export (#6427)** (9f4160c)
- **fix(viewer): apply Exploded level offsets from live spatial edits (#6417)** (abf82ff)
- **fix(mutations): use live spatial membership for bulk filters (#5249) (#6422)** (84cd157)
- **fix(parser): extract material properties from effective entities (#6418)** (eb09636)
- **fix: distinguish crates.io semver lookup failures from missing baselines (#6407) (#6408)** (3b9efbf)
- **fix(parser): use effective entities for structural data (#6412)** (f8303f2)
- **fix(viewer): use effective group assignments in lens (#5249) (#6416)** (222f102)
- **fix(viewer): group generated schedules from live spatial relations (#6410)** (8568111)
- **fix(ifcx): resolve live spatial children from effective edges (#5249) (#6409)** (8ac81f7)
- **fix(create): duplicate into effective storey after session edits (#5249) (#6406)** (59b0668)
- **fix(viewer): resolve authored storeys in document fields (#6405)** (78684bc)
- **perf(renderer): upload instanced RTE deltas once per template per frame (#6393) (#6399)** (3c97765)
- **perf(viewer,renderer): stop the hover pre-highlight from stalling large models (#6392) (#6398)** (c17ee39)
- **fix(viewer): split elements authored in non-metre models; one split predicate (#6233) (#6282)** (3c3a981)
- **fix(viewer): count consenting sessions for first-run metrics (#6367)** (68db27d)
- **fix(server,renderer,viewer): bump the finish-bearing cache namespaces; deprecate edgeContrast (#6385)** (124037d)
- **fix(viewer): main follow-ups for #6054's member-path input (type scale, i18n fixture, accessible names) (#6382)** (6257240)
- **fix(renderer): drop the derivative edge darkening from the main shader (#5746) (#6049)** (cd7fab1)
- **fix(renderer): restore overrideParams in the shared mesh uniform struct (#6378)** (9c2a0bb)
- **fix(analytic): validate arbitrary-profile topology before nominal quantities (#6316) (#6319)** (faef38a)
- **fix(e2e): enter current modeling HUD states (#6365)** (0b34964)
- **fix(e2e): enter current Model workspace in authored IFC tests (#6363)** (6491185)
- **fix(ci): bound Viewer E2E shards and preserve failure context (#6361)** (41825cb)
- **fix(geometry): preserve large mapped-item translations before RTC (#6265)** (0c7481f)
- **fix(viewer): snap edited walls in composed storey frame (#6360)** (c7a30da)
- **fix(viewer): name remaining viewer form controls (#6347)** (f06d117)
- **fix(charts): resolve live element storeys (#5249) (#6354)** (60f6cb9)
- **fix(viewer): name selected effective storeys (#5249) (#6353)** (ceec043)
- **fix(viewer): chart clashes by effective storey (#5249) (#6352)** (382d119)
- **fix(viewer): use live storey for split and slab edits (#5249) (#6351)** (26fd996)
- **fix(viewer): build spatial tree rows from live containment (#5249) (#6350)** (e0049e9)
- **fix(viewer): resolve storeys through live containment (#5249) (#6348)** (0ff3a49)
- **fix(viewer): name residual Flow, schedule, and MCP form controls (#6336)** (aca561d)
- **fix(viewer): name three remaining icon-only actions (#6346)** (624a161)
- **fix(viewer): restore basket module size budget after spatial merge (#6345)** (efe471b)
- **fix(spatial): route direct container members through effective relationships (#5249) (#6344)** (64fc00a)
- **fix(viewer): enlarge sidebar chrome targets to 24px (#6340) (#6341)** (0b9fb72)
- **fix(viewer): preserve combobox a11y lint ratchet (#6339)** (a7c59ea)
- **fix(viewer): follow effective Raw STEP wrapper references (#6323)** (afbf0ef)
- **fix(create): apply live placement overlays during geometry reads (#5249) (#6331)** (7020f24)
- **fix(viewer): give toast controls 24 px targets (#6333) (#6335)** (7bc1bfc)
- **perf(viewer): re-mesh commit to frame under 50 ms by narrowing shell re-renders (#6232) (#6300)** (4a442d6)
- **fix(viewer): expose SearchInline as a combobox (#6326) (#6332)** (6dd395e)
- **fix(viewer): keep minimal Space Sketch HUD on one row (#6317)** (b343e66)
- **fix(viewer): keep hierarchy names readable beside grouped rail (#5873) (#6311)** (2d29804)
- **fix(viewer): restore panel-group test gates and house icon (#6304)** (6732615)
- **fix(viewer): extract surface command types below module budget (#6303)** (df365b4)
- **fix(revert-oracle): rebuild Python wheels per source state (#5800) (#5806)** (b5c0718)
- **fix(viewer): Add Element ghost matches commit on the storey workplane (#6233) (#6287)** (681a2da)
- **fix(viewer): label authored elements in the spatial tree from the overlay (#6233) (#6284)** (dbc4899)
- **Merge pull request #5732 from LTplus-AG/fix/5249-statusbar-storey** (270e85a)

### Backend
- **Show nominal IFC source quantities with provenance (#6439)** (9c1d524)
- **Inspect authored extrusion and profile sources in viewer (#6437)** (3fe9093)
- **Type registered Command Palette rows by command ID (#5878 follow-up) (#6264)** (913926a)
- **Reuse validated mapped sources across analytic occurrences (#6276)** (0bb90c2)
- **audit(viewer): classify placement source baseline and restore size budget (#5249) (#6337)** (9bac36f)
- **audit: classify source snapshot point reads (#5683)** (b294858)
- **audit(collab): classify source identity path cache (#6324)** (b009cbc)
- **audit(export): classify reference collector raw fallback (#5249) (#6322)** (4c557e0)
- **Name Info dialog close action (#6325) (#6334)** (a11ae19)
- **Guard rendered command ownership and primitive types (#5878) (#6295)** (08d145b)
- **Remove unused camera command label metadata (#5878) (#6321)** (ebb99d9)
- **Require every ribbon-declared command to render (#5870) (#6294)** (7083c9e)
- **Register all Author ribbon command labels (#6281)** (d72a3d5)
- **Register Elements ribbon controls under the command catalog (#6277)** (b2268d8)
- **Register File ribbon controls under the command catalog (#6274)** (63f0fee)
- **Register View ribbon controls under the command catalog (#6273)** (ab75bc1)
- **Guard ribbon command labels through the registry (#6252)** (b04f475)
- **Finish retired classic toolbar cleanup (#5874) (#6248)** (b001430)
- **Group viewer panels consistently across rail and ribbon (#5873) (#6230)** (7d57d8c)

### Tests
- **test(analytic): compare extrusion sources with world meshes (#6444)** (9b4e722)
- **test(viewer): measure panel secondary-text contrast on rendered state (#6205) (#6434)** (c98791b)
- **test(geometry): re-bless the ISSUE_068 heavy census rows #5943/#5411/#5361 moved (#6379) (#6424)** (098c29b)
- **test(viewer): a real canvas click event's detail drives the command double-click (#6232 M2.2) (#6430)** (b6ade32)
- **test(viewer): wall-end handles and drag on an offset storey in a mm file (#6232) (#6403)** (f5bd4f9)
- **test(server): avoid detached cache-write race in delete route test (#6383) (#6384)** (eeffe2f)
- **test(renderer): require both halves of each high/low mesh-uniform pair (#6386)** (4079d0b)
- **test(viewer): wait for model data before HUD authoring (#6376)** (a62c92d)
- **test(viewer): assert canonical Hide ribbon command (#5878) (#6320)** (d9b413e)
- **test(viewer): guard mobile and context command ownership (#6285)** (56cd88b)
- **test(viewer): align registry command expectations with ribbon labels (#6318)** (18140ea)
- **test(viewer): observe panel browser house icon path (#6308)** (608e181)
- **test(viewer): follow live View Settings name after classic retirement (#5874) (#6302)** (3377cf2)
- **test(viewer): move export regressions to ribbon (#5874) (#6238)** (e24d5b3)
- **test(viewer): retire mixed classic toolbar assertions (#5874) (#6236)** (7297d40)
- **test(geometry): detect corrupt swept-disk meshes (#5788) (#6260)** (4a3c9d5)
- **test(viewer): cover Actions ribbon home in legacy guards (#5870) (#6298)** (d9b6e4e)

### Docs
- **docs(query): classify fluent spatial reads as source snapshots (#5236) (#6414)** (438f9f8)
- **docs(changesets): correct source notes before release (#6068) (#6328)** (e023495)
- **docs: restore AGENTS.md size ratchet (#6327) (#6330)** (7246745)

### Chore
- **chore: version packages (#6068)** (c120fd7)
- **ci(revert-oracle): observe production through changed Playwright specs (#6267) (#6440)** (5b7e4de)
- **chore(lint): lower unused-local baseline after effective reads (#6426)** (e7d28db)
- **refactor: split effective entity helpers to satisfy module-size gate (#6425)** (17bbdf2)
- **chore(ids): classify parsed entity index reads for #5236 (#6419)** (71b74cf)
- **build(deps): bump the npm-minor-and-patch group across 1 directory with 23 updates (#6397)** (f24cc54)
- **build(deps): bump the cargo-minor-and-patch group across 1 directory with 2 updates (#6388)** (c6bd42d)
- **build(deps-dev): bump vitest from 4.1.11 to 5.0.2 (#6358)** (20ad24b)
- **refactor(viewer): remove unused legacy model count (#5249) (#5690)** (a3bb54a)
- **refactor(viewer): type registered ribbon labels by command ID (#5878 part 1) (#6241)** (55a59e9)
- **refactor(viewer): delete retired classic toolbar (#5874) (#6240)** (087da83)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/LTplus-AG/ifc-lite?utm_source=github-action)._