v2.0.0-rc2
Pre-releaseSecond release candidate. Everything in v2.0.0-rc1, plus the two items below. Cut so consumers test the deprecation rather than a version that predates it.
Deprecated
OCCTSwiftAIS.InteractiveObject, SubShapeRef and SubShape. These moved to OCCTSwiftTools in #2, and the aliases left behind are now marked deprecated, naming 3.0.0 as the removal point.
They were deliberately left un-deprecated through 0.x for a real reason: a same-module typealias shadows the imported type it aliases, so deprecating them warned at every one of this package's own uses rather than only at a consumer's. That is now fixed at the source. This package names the canonical OCCTSwiftTools.* types directly at all 72 sites, so the deprecation reaches only consumers.
Consumers that import OCCTSwiftAIS and name these three types unqualified will now see warnings. The fix is to import OCCTSwiftTools and name them there; the types are identical, so nothing else changes. The aliases are not being removed in 2.0.0.
Testing
A multibody fixture exists, which this package has never had. Three solids at x -2..2, 27..33 and 57..63, as a BREP compound, with the OCCTSwiftScripts script that generated it committed alongside. Three new tests cover a real multibody import end to end: one entity owning one body per solid, framing spanning every body, and each body resolving its own picks to distinct geometry.
The separation is deliberate. Framing the first body spans 4mm and framing all three spans 65mm, so an assertion about the union cannot be satisfied by a camera that frames only body 0.
366 tests in 34 suites. swift-format lint --strict and swiftlint --strict clean.
Known, and why this is still an rc
2.0.0 is a coordinated bump. Every consumer currently caps this package at from: "0.x", which is .upToNextMajor and therefore excludes 2.x. A leaf application asking for 2.x while a shared dependency demands <1.0.0 is unsatisfiable, and SwiftPM resolves it by silently selecting an older, pre-merge version of that dependency, which then collides on duplicate target names at build-graph assembly. Tracked as ecosystem#52; the fleet is being bumped against this candidate now.
Separately, OCCTSwiftIO#41: a STEP assembly loads its root as a body alongside its children, so every triangle renders twice. Found while building the fixture. It does not affect this package's own code, and it is why the fixture is a BREP compound rather than a STEP assembly.