Releases: SecondMouseAU/OCCTSwiftScripts
Release list
v1.5.1 — fix OCCTSwiftIO cap conflicting with OCCTSwiftTools
Raises the OCCTSwiftIO floor from .upToNextMinor(from: "1.0.0") (>=1.0.0, <1.1.0) to from: "1.7.5". The old cap conflicted with OCCTSwiftTools 1.6.1's own OCCTSwiftIO >= 1.7.0 requirement, so any consumer depending on both OCCTSwiftScripts and OCCTSwiftTools directly (e.g. OCCTMCP) could not resolve both at their latest versions — SwiftPM reported an unsatisfiable version conflict, forcing a workaround pin to OCCTSwiftScripts 1.4.1 and its pre-BRepGraph-rename ScriptHarness/DrawingComposer.
The heavy mesh-IO stack (SwiftPMX/SwiftGLTF/ThreeMF/SwiftJWW/SwiftX) pulled in by OCCTSwiftIO remains unavoidable — confirmed OCCTSwiftIO 1.7.5's own OCCTSwiftIO target has an unconditional dependency on its MeshIO target, not something a consumer can decline at the product level. Grepping OCCTSwiftIO's own source shows no file there actually imports MeshIO, so that dependency may be vestigial upstream, but that's a separate, out-of-scope cleanup for the OCCTSwiftIO repo, not fixable here.
Verified with the actual regression test for this bug: a throwaway root package depending on both this fix and OCCTSwiftTools 1.6.1 directly (mirroring OCCTMCP's shape) resolves cleanly, with occtswiftio landing on 1.7.5, satisfying both floors simultaneously. No public API or behaviour change to OCCTSwiftScripts itself.
Closes #80.
v1.5.0 — TopologyGraph → BRepGraph rename, OCCTSwift floor 1.15.0
Repins the OCCTSwift floor to 1.15.0 — required because BRepGraph doesn't exist as a symbol before that release (only the deprecated TopologyGraph typealias does). Every internal reference to the deprecated name across ScriptHarness's BREP graph exporters, the occtkit graph-select/graph-ml commands, and the standalone GraphML tool is renamed TopologyGraph → BRepGraph to match. No public API or behaviour change — this is a pure identifier rename plus the forced dependency-floor bump; the occtkit CLI's JSON/SQLite output and verb behaviour are unchanged (spot-checked against a real recipe).
See SecondMouseAU/OCCTSwift#333 / OCCTSwift v1.15.0 for the upstream rename this follows. Closes #78.
v1.4.6 — repin OCCTSwift 1.12.9 (#318 + #323 fixes)
v1.4.5 — repin OCCTSwift 1.12.7 (#317 crash fix)
Repin the OCCTSwift floor to 1.12.7: OCCT kernel patch 0005 guards a null Context() in ShapeFix_Face::FixPeriodicDegenerated, fixing the SIGSEGV in #317. No API or behaviour change.
v1.4.4 — repin OCCTSwift 1.12.6 (free-bounds crash fix)
Repin the OCCTSwift floor to 1.12.6 — OCCT kernel patch 0004 fixes the uncatchable ShapeAnalysis_FreeBounds SIGSEGV (#310), on top of the thread-safe-fillet fix (#298). No API or behaviour change.
v1.4.3 — repin OCCTSwift 1.12.3 (thread-safe fillet)
v1.4.2 — cap OCCTSwiftIO to 1.0.x (fixes lean-consumer resolution)
Dependency-constraint patch. No API changes.
Fix (#69, PR #70): OCCTSwiftScripts declared occtDep("OCCTSwiftIO", from: "1.0.0"), which is only bounded by the major version. Once OCCTSwiftIO v1.5.0 was published, any consumer depending on OCCTSwiftScripts without its own root-level OCCTSwiftIO override resolved OCCTSwiftIO to 1.5.0, dragging in the heavy mesh-IO stack (SwiftX / SwiftDXF / SwiftJWW / SwiftPMX / ThreeMF / SwiftGLTF / Nodal / Zip) and making the dependency graph unsolvable (exhausted attempts to resolve the dependencies graph). This broke OCCTMCP's execute_script, whose cached SPM workspace depends on ScriptHarness alone.
Change:
- New
occtDepUpToNextMinorhelper; OCCTSwiftIO is now pinned with.upToNextMinor(from: "1.0.0")(the 1.0.x line — the narrow surface used by theGraphML/graphmlverbs, which has no need for 1.1.0+). - Also fixes a sibling-detection false-positive in the local-clone
occtDeppath (a.build/checkouts/OCCTSwiftIOwas wrongly treated as a dev sibling and used via.package(path:)transitively — the deeper mechanism behind #69).
Lean/transitive consumers (OCCTMCP execute_script, PadCAM, PartsAgent) now resolve without needing their own OCCTSwiftIO cap.
🤖 Generated with Claude Code
v1.4.0 — load-brep / import --allow-invalid
load-brep and import gain --allow-invalid (JSON: allowInvalid), threaded to OCCTSwift 1.8.0's Exporter.writeBREP(allowInvalid:). Lets an in-progress reconstruction — a compound of loose analytic faces, possibly invalid — be persisted into a scene manifest and reloaded for measurement (metrics, measure-deviation, graph-validate), instead of being refused by the shape.isValid write gate. Default off preserves the gate. OCCTSwift floor → 1.8.0.
v1.3.0 — occtkit measure-deviation verb + metrics boundingBoxOptimal
Two introspection capabilities, bringing occtkit (and the OCCTMCP Node server that wraps it) to parity with OCCTMCP's Swift in-process tools.
measure-deviation <a.brep> <b.brep> [--deflection D] [--max-samples N]
Directed + symmetric surface deviation (one-sided / symmetric Hausdorff). Unlike measure-distance (minimum gap, ≈0 for overlapping bodies), it samples each shape's tessellated surface and projects onto the other's triangles — the metric for certifying a mesh→analytic reconstruction. Reports {max, rms, mean, worstPoint, samples} per direction + symmetricHausdorff. Exact point-to-triangle; fidelity scales with --deflection (default 0.5% of the a-shape bbox diagonal).
metrics --metrics …,boundingBoxOptimal
Opt-in tight extent (BRepBndLib::AddOptimal); the default Bnd_Box over-reports curved B-spline faces (control-point hull). Default-all set unchanged.
v1.2.0 — graph-select verb + convexity in graph-ml
Adds the BRepGraph selection primitives (on the 1.7.1 floor).
- graph-select verb (closes #54): local adjacency/selection queries — face-neighbors (+ convexity + shared-edge count via the kernel AAG), edge-faces, vertex-edges, face-adjacency (full gAAG), edges-class (boundary|non-manifold|seam|degenerate) — without dumping the whole graph.
- graph-ml now emits a convexity-attributed faceAdjacency block (closes #55), the gAAG edge attribute B-rep GNNs key on.
Built + smoke-tested against OCCTSwift 1.7.1; the rewrap preserved the AAG/adjacency reads. (#56)