Skip to content
Merged
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
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ No tests exist. No linter is configured.

The full cohort graduated to v1.0 on 2026-05-07 alongside OCCT 8.0.0 GA. SemVer-stable from these floors — only bump on documented breaking changes. Pre-1.0 dep history (which API landed in which 0.x tag) lives in git log; consult it when you actually need to support an older floor, otherwise treat the v1.0 surface as the contract.

- **OCCTSwift** — `https://github.com/gsdali/OCCTSwift.git` (>= 1.3.1; xcframework built against **OCCT 8.0.0 GA**). The B-Rep kernel: ~400+ methods for parametric CAD, the full ISO drawings stack (Sheet/TitleBlock/ProjectionSymbol/Section2D/Hatch/AutoCentermarks/CuttingPlaneLine/CosmeticThread/SurfaceFinish/GDT/DetailView/DrawingScale), `FeatureReconstructor` for `reconstruct`, the `SheetMetal` namespace for `compose-sheet-metal`, and the XCAF surfaces (`AssemblyNode.labelId`, `Document.node(at:)`) for `inspect-assembly` / `set-metadata`. The functional floor for graph work is v1.0.1 (a `TopologyGraph.NodeKind` raw-value fix where assembly-rooted graphs returned an empty `rootNodes`), but the floor is **v1.3.1** because the `recipes/` cookbook uses the v1.3.1 ergonomics: `Shape.circularPatternCut` (feature-level circular pattern, #169), orientation-normalised `Shape.sweep` + `orientedForward`/`signedVolume` (#170), and `concaveEdges`/`convexEdges`/`edges(where:)` selectors (#171). NB: those landed **only in v1.3.1** — the v1.2.1/v1.3.0 tags pre-date the merge to `main`, so don't trust the CHANGELOG's "v1.2.1" attribution when checking floors.
- **OCCTSwift** — `https://github.com/gsdali/OCCTSwift.git` (>= 1.7.1; xcframework built against **OCCT 8.0.0p1**). The B-Rep kernel: ~400+ methods for parametric CAD, the full ISO drawings stack (Sheet/TitleBlock/ProjectionSymbol/Section2D/Hatch/AutoCentermarks/CuttingPlaneLine/CosmeticThread/SurfaceFinish/GDT/DetailView/DrawingScale), `FeatureReconstructor` for `reconstruct`, the `SheetMetal` namespace for `compose-sheet-metal`, and the XCAF surfaces (`AssemblyNode.labelId`, `Document.node(at:)`) for `inspect-assembly` / `set-metadata`. **Floored at v1.7.1 (= OCCT 8.0.0p1)**: v1.7.0 realigned the BRepGraph wrapper to OCCT's redesigned graph model (definitions vs references/usages, persistent UIDs, controlled layers) and v1.7.1 made the derived graph reads real again — `adjacentFaces`/`faces(of:)`/`edges(of:)`/`sharedEdges`, `faceSameDomain`, `faceIsNaturalRestriction` — plus durable `UID`/`RefUID`/`ItemUID` identity. Our graph verbs (graph-validate/compact/dedup/ml, query-topology) build and run **unchanged** against it. Behaviour changes are **confined to the BRepGraph domain**: `edgeMaxContinuity`/`setEdgeRegularity` are now no-ops (use `Shape.maxContinuity` for continuity); `degenerated`/`closed`/`sameParameter`/`sameRange` setters no-op while their getters return the live derived value. The cookbook ergonomics relied on since v1.3.1 — `Shape.circularPatternCut` (#169), orientation-normalised `Shape.sweep` + `orientedForward`/`signedVolume` (#170), `concaveEdges`/`convexEdges`/`edges(where:)` selectors (#171) — are unchanged. The rest of the cohort still resolves at its existing floors (Viewport 1.0.4 / Tools 1.1.1 / AIS 1.0.2 / Mesh 1.0.0 / IO 1.0.0), all of which compile against 1.7.1.
- **OCCTSwiftViewport** — `https://github.com/gsdali/OCCTSwiftViewport.git` (>= 1.0.0). Provides `OffscreenRenderer`, `CameraState`, `DisplayMode`, `ViewportBody` for `render-preview`. Graduated to v1.0.0 on 2026-05-08, one day after the rest of the cohort; floor unblocked by Tools v1.0.2 (closes #45).
- **OCCTSwiftTools** — `https://github.com/gsdali/OCCTSwiftTools.git` (>= 1.0.0; resolves to v1.0.2+ for the widened Viewport constraint). Bridge layer between the B-Rep kernel and the Metal viewport. We use `CADFileLoader.shapeToBodyAndMetadata` in `render-preview` for Shape → `ViewportBody` conversion (both input bodies and highlight sub-shapes). Lives in its own repo since Viewport v0.55.0 split.
- **OCCTSwiftAIS** — `https://github.com/gsdali/OCCTSwiftAIS.git` (>= 1.0.0). Headless-friendly subset only: `Trihedron` / `WorkPlane` / `Axis` / `PointCloud` scene objects (each emits `[ViewportBody]` via `makeBodies()`) for `render-preview`'s `--show-axes` / `--show-workplane` overlays, plus the SubShape selection vocabulary for `--highlight face[N]/edge[M]/vertex[K]`. Selection / Manipulator / SwiftUI surfaces aren't relevant to a CLI. `Dimension` overlays render via a SwiftUI Canvas inside `MetalViewportView` and so can't reach `OffscreenRenderer` — `--annotate-dimensions` is deferred (filed as OCCTSwiftViewport#26). Note: `OCCTSwiftAIS` re-exports a `DisplayMode` enum (3 cases) that collides with `OCCTSwiftViewport.DisplayMode` (6 cases); fully-qualify in `RenderPreview.swift` as `OCCTSwiftViewport.DisplayMode`.
Expand Down
6 changes: 3 additions & 3 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 13 additions & 10 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,19 @@ let package = Package(
),
],
dependencies: [
// OCCTSwift v1.0.0 pins to OCCT 8.0.0 GA (2026-05-07). v1.0.1 ships
// the TopologyGraph.NodeKind fix (Product/Occurrence raw values were
// missing, so rootNodes silently returned [] for any graph with
// assembly roots). Floored at v1.3.1, which adds the cookbook-driven
// ergonomics used by recipes/: Shape.circularPatternCut (feature-level
// circular pattern, #169), orientation-normalised Shape.sweep +
// orientedForward/signedVolume (#170), and concaveEdges/convexEdges/
// edges(where:) selectors (#171). NB these landed only in v1.3.1 — the
// v1.2.1/v1.3.0 tags pre-date the merge. SemVer-stable from this floor.
.package(url: "https://github.com/gsdali/OCCTSwift.git", from: "1.3.1"),
// Floored at v1.7.1 = OCCT 8.0.0p1. v1.7.0 realigned BRepGraph to OCCT's
// redesigned graph model (definitions vs references/usages, persistent
// UIDs, controlled layers); v1.7.1 made the derived graph reads real
// again — `adjacentFaces`/`faces(of:)`/`edges(of:)`/`sharedEdges`,
// `faceSameDomain`, `faceIsNaturalRestriction` — plus durable
// UID/RefUID/ItemUID accessors. Behaviour changes vs the old model are
// confined to the BRepGraph domain (see OCCTSwift docs/CHANGELOG v1.7.0):
// edgeMaxContinuity/setEdgeRegularity are now no-ops (use
// Shape.maxContinuity); SameParameter/SameRange/Degenerated/IsClosed
// setters no-op but getters return the live derived value. The cookbook
// ergonomics relied on since v1.3.1 (circularPatternCut #169, sweep
// orientation #170, concave/convex/edges(where:) #171) are unchanged.
.package(url: "https://github.com/gsdali/OCCTSwift.git", from: "1.7.1"),
// RenderPreview rasterizes through Viewport's OffscreenRenderer.
// Floored at v1.0.4: v1.0.3 fixes an uncatchable quantize() crash on
// body load (Viewport #30) and v1.0.4 makes the published Viewport
Expand Down
Loading