Skip to content

Open PR review index, whole repository #8866

Description

@BIMvoice

Open PR review index, whole repository

A living overview of every open PR, grouped by the maintainer who seems the best fit and sorted smallest and safest first, so the top of each list is quick wins. Assembled as a review aid because the open queue has outgrown what anyone can track in the PR tab. The (NL) tag on each entry is its total size in changed lines (additions plus deletions), so the top of every list is the cheapest review. We will keep it updated as things merge, and are equally happy to close it if it is not useful. No expectations on timing, this is only meant to save you triage clicks.

For the BIMvoice entries specifically: every body states root cause and verification, conflicting ones are being rebased or closed this week, and we would rather close any PR you do not want than have it clutter the queue. Delegating any sub-section to someone else is welcome.

Anyone is welcome to review. The grouping below is only a suggested starting point, no PR is reserved for one person. If you have the domain experience and merge access, please feel free to review and approve any PR here, not just the ones under your name. More hands makes this backlog move faster, and it is all appreciated.

Priority: CI health (review these first)

CI health now has its own tracking issue with the full checklist and status: #8870. The PRs themselves stay listed under their reviewers' sections below.

@Moult (431)

Python core and utility APIs (91)

Drawings and documentation (82)

Bonsai UI and workflow (258)

@aothms (118)

  • #8467 (1L) ifcgeom: emit mtllib in OBJ output so materials are linked (#4846)
  • #8433 (2L) ifcgeom: use the real extrusion depth for IfcSurfaceOfLinearExtrusion (#8013)
  • #8452 (2L) serializers: fix empty-optional dereference in glTF finalize (separate Z-up node)
  • #8468 (2L) serializers: emit a stable id for nested materials in XML (#5109)
  • #8644 (2L) Bonsai: fix mismatched Fillet tooltip in CAD tool for plain mesh edit mode
  • #8712 (2L) IfcConvert: fix 1000x scale error in STEP export unit handling
  • #8811 (2L) ifcgeom: keep unopened geometry when opening subtraction throws a non-std::exception
  • #8808 (4L) SvgSerializer: only draw door swing arcs on the storey where the door is cut
  • #8856 (4L) SvgSerializer: emit machine-readable space area attribute; fix double-escaped area label (#1308)
  • #8424 (6L) IfcGeomTree: keep clash_intersection_many results in set_a, set_b order (#5357)
  • #8814 (6L) ifcgeom: fall back to unopened geometry when convert_openings() cleanly fails
  • #8772 (8L) ifcgeom: keep one copy of repeated faces in faceset helper duplicate removal
  • #8817 (8L) ifcgeom: fail the whole boolean when CGAL's base operand can't be preprocessed
  • #8419 (9L) IfcParse: free simple type instances created after load (#8070)
  • #8634 (9L) bonsai: preserve original tessellation edges from the CGAL kernel
  • #8466 (10L) serializers: glTF baseColorFactor should be the surface colour, not diffuse*factor (#2509)
  • #8520 (10L) ifcopenshell: fix geom.iterator memory growth on the OCC path (#6904)
  • #8635 (10L) bonsai: catch kernel RuntimeError when finishing an arbitrary profile edit
  • #8724 (10L) ifcgeom: avoid degenerate cross product in SvgSerializer for vertical section-line curves
  • #8454 (11L) ifcgeom: fix 'Failed to join curve segments' on zero-span trimmed conics (#6912)
  • #8767 (11L) ifcgeomserver, examples: finish renaming stray Ifc-prefixed internal classes (#1330)
  • #8862 (11L) Fix --no-normals ignored by CGAL kernel for OBJ output (#8861)
  • #8473 (12L) ifcparse: report INVALID_SYNTAX on a truncated file instead of success (#3460)
  • #8595 (12L) Fix IfcSweptDiskSolid directrix round-trip when updating representations
  • #8394 (14L) Fix IfcConvert --no-progress being ignored with --threads >= 2 (#1410)
  • #8469 (14L) ifcgeom: fix inverted normals on mirrored MappedRepresentations (#806)
  • #8492 (14L) ifcgeom: stop dropping products of dual-role representations on whole-file conversion (#2248)
  • #8542 (14L) Bonsai: delete representation items nested in an IfcGeometricSet (#6807)
  • #8853 (14L) ifcgeom: map IfcSphericalSurface so advanced-brep spheres render (#586)
  • #8404 (15L) Fix #7092: copy independent profile defs when duplicating a material profile set
  • #8522 (15L) ifcopenshell: attach owning file to geom.tree select results (#3189)
  • #8620 (15L) ifcopenshell: don't merge distinct splines through a mesh round-trip when writing curves (#5268)
  • #8370 (16L) ifcgeom: clone mapped items before in place mutation to fix nondeterministic multithreaded geometry (#8050)
  • #8463 (16L) ifcgeom: guard IfcGeom::serialise against null OCCT handles (#4926)
  • #8472 (16L) ifcgeom: fix inverted normals for indirect curved surfaces in IfcGeom::serialise (#5067)
  • #8457 (18L) serializers: correct OBJ texture-coordinate indices and guard material lookup
  • #8471 (18L) serializers: SVG cut plane from storey global placement, not Elevation attribute (#1231)
  • #8499 (18L) Retry boolean CUT that OCCT reports done but subtracts no volume (#5630)
  • #8453 (19L) ifcparse: don't segfault on truncated / fuzzed STEP files (#6750)
  • #8479 (19L) ifcgeom: CGAL kernel should emit the smoothed, unit vertex normal (#6997)
  • #8769 (19L) ifcconvert: default --threads to auto-detected CPU count (#2709)
  • #8771 (19L) GltfSerializer: fix hierarchy group node names, add opt-in --gltf-extras
  • #8439 (20L) serializers: use mesher-linear-deflection for polygonal HLR drawings (#7162)
  • #8461 (20L) ifcgeom: bounding-box broad-phase for the wire self-intersection check (#5999)
  • #8480 (20L) ifcgeom: fix CgalEmitOriginalEdges for placed elements (#6173)
  • #8500 (23L) Detect clash for perfectly aligned coplanar-face overlaps (#4594)
  • #8465 (24L) ifcgeom: cap wire_intersections recursion to prevent a stack overflow (#622)
  • #8822 (24L) (by @theoryshaw) Bonsai: harden BBIM_Boolean.Data parsing against non-list payloads
  • #8286 (25L) Bonsai: don't assert on non-surface item styles in swept disk loader (#8194)
  • #8474 (26L) serializers: SVG bounding box should follow the drawn arc, not the full circle (#2629)
  • #8475 (29L) serializers: section-height-from-storeys should use global placement Z (#2638)
  • #8524 (30L) ifcgeom: fall back to unsliced representation when layerset slicing fails (#6607)
  • #8323 (31L) util.selector: match boolean properties by True/False spelling (#8100)
  • #8460 (31L) ifcgeom: fix is_manifold always false for a loose-face compound (#8105)
  • #8498 (31L) Use NEGATIVE-side IfcSurfaceStyle as a fallback instead of dropping it (#5618)
  • #8459 (32L) ifcgeom: don't segfault on null/empty boolean operands (#1366)
  • #8786 (34L) ifcgeom: don't silently accept implausible empty opening subtractions (#5779)
  • #8584 (35L) Bonsai: fix/report IFC Set Origin no-op on SweptSolid representations (#6727)
  • #8775 (36L) ifcgeom: retry failed batched opening cuts sequentially (#487)
  • #8546 (37L) Bonsai: support editing IfcGeometricCurveSet representation items (#6407)
  • #8515 (43L) Derive pipe segment length through boolean-clipped bodies (#6761)
  • #8450 (44L) ifcgeom: import IfcRightCircularCylinder CSG geometry (#6742)
  • #8792 (44L) IfcParse: read back non-finite REALs serialized with a trailing dot
  • #8805 (45L) ifcparse: combine UTF-16 surrogate pairs in \X2\ escapes
  • #8369 (46L) win/msys2: make the OpenCOLLADA dependency build skippable via COLLADA_SUPPORT (#6568)
  • #8847 (50L) (by @sboddy) cgal: make deflection-driven circle tessellation unconditional for small-radius conics
  • #8784 (52L) ifcgeom: fix --site-local-placement breaking relative positions with nested IfcSites
  • #8486 (53L) ifcgeom: deterministic iterator output order under multithreading (#3904)
  • #8490 (57L) ifcgeom: cut openings when the wall void boundary has sub-precision edges (#4118)
  • #8852 (59L) ifcgeom: resolve default materials through the schema supertype chain (#473)
  • #8476 (66L) ifcgeom: honour POLYHEDRON triangulation type in the CGAL kernel (#5485)
  • #8521 (68L) ifcgeom: recover BRepCheck-valid non-manifold subtractions instead of dropping them (#620, #616)
  • #8489 (73L) ifcgeom: cut openings whose clip faces coincide with the host (#619)
  • #8508 (80L) Loft constant curved cross sections instead of crashing (#7658)
  • #8506 (82L) Fix IfcSweptDiskSolidPolygonal fillet: crash to correct rounded corners (#4094)
  • #8742 (83L) ifcgeom: don't crash the iterator when IfcProject.UnitsInContext is blank on a non-conformant file
  • #8801 (90L) SvgSerializer: optionally draw occluded linework as hidden lines
  • #8336 (105L) Bonsai: recover extrusions from OCCT-duplicated verts, tessellate only when truly not an extrusion (#2851)
  • #8810 (108L) ifcgeom: detect and repair collinear self-intersections in profiles
  • #8778 (110L) ifcgeom: salvage subtractions when OCCT refuses invalid boolean operands (#2320)
  • #8776 (120L) IfcParse: propagate file ownership when assigning instance attributes (fixes #414)
  • #8523 (123L) ifcgeom: collapse degenerate directrix segments to avoid a MakePipeShell hang (#8400)
  • #8278 (132L) pset.edit_pset: keep booleans for LOGICAL measures (#7475)
  • #8794 (144L) IfcCenterLineProfileDef: implement profile mapping (geometry side of #2077)
  • #8773 (147L) ifcgeom: add bbox-substitution-threshold to substitute overly dense geometry with bounding boxes (#2639)
  • #8750 (156L) Bonsai: add a UI entry point to author IfcSweptDiskSolid elements
  • #8488 (170L) ifcgeom: produce closed manifold IfcSurfaceCurveSweptAreaSolid sweeps (#1541)
  • #8485 (172L) ifcgeom: implement IfcRevolvedAreaSolidTapered following the revolve arc (#3540)
  • #8844 (179L) serializers: independent position/normal index streams for OBJ and Collada (#46)
  • #8840 (208L) ifcgeom/ifcparse: fix PSR library-API no-op, mapping-cache hang, and parser fast paths (#6712)
  • #8845 (215L) ifcgeom: style-aware permissive-shape-reuse folding; fix PSR on single-item mapped representations (#143)
  • #8757 (219L) IfcConvert: add --name-template for generic per-entity output naming
  • #8766 (225L) [Concept] Generic cross-schema apply_visitor for #1333
  • #8764 (232L) IfcConvert: port --name-template to ifcviewer-wgpu, convert coverage to pytest
  • #8751 (262L) (by @brunopostle) Add opt-in libFuzzer harness for IfcParse::IfcFile
  • #8722 (268L) ifcgeom: fall back to CGAL when OCCT boolean produces coincident faces
  • #8768 (295L) serializers: emit IfcClassification associations in XML output
  • #8725 (392L) ifcgeom: detect and recover from OCCT's silent no-op boolean cut
  • #7908 (664L) (by @theoryshaw) * Fix #3742: Remove coplanar boundary lines between adjacent same-mat…
  • #8859 (698L) ifcgeom: point/vertex representation support on clean v0.8.0 base (#1409, #5218)
  • #8787 (1271L) IfcConvert: remove unmaintained WITH_RELATIONSHIP_VALIDATION feature
  • #8660 (6L) (by @brunopostle) IfcParse: don't let a malformed binary token abort the parser
  • #8661 (7L) (by @brunopostle) IfcParse: don't abort when a string literal runs off the end of the file
  • #7670 (13L) (by @jaliste) Fix Text decoration doesn't work until you delete a specific annotation #7655: Handle missing spline data in decoration.py
  • #4862 (25L) (by @CKiOne) more checks for 2D boolean check. Issue #4839
  • #8477 (29L) [conflicting] serializers: don't abort the whole SVG drawing when one element's HLR fails (#4130, #3849)
  • #8491 (30L) [conflicting] ifcgeom: recover 2D-optimized boolean cuts dropped on retry (#5186)
  • #8494 (36L) [conflicting] Keep valid non-manifold subtraction instead of dropping the cut (#1015)
  • #7523 (160L) (by @ZijianWang-ZW) Fix: hybrid kernel sigsegv fallback (0.8.0)
  • #8377 (639L) [conflicting] Approximate swept solids in the taxonomy layer so cgal stops dropping IfcSweptDiskSolid (#8106)
  • #8793 (11L) [draft] (by @theoryshaw) ifcgeom: defer partial CGAL shells to the next hybrid kernel (fixes #8052)
  • #4002 (250L) [draft] (by @deliciousteas) IfcOpenShell Tutorial with C++
  • #7443 (524L) [draft, conflicting] (by @aothms) Initial investigation into lofting open profile with tags
  • #7534 (816099L) [draft, conflicting] (by @aothms) C++ datamodel v1.0

@sboddy (41)

  • #8478 (2L) build: decouple the OpenCascade examples from BUILD_CONVERT (#7835)
  • #8557 (2L) Fix ci: test_get_class_relations calls the wrong bSDD client method
  • #8560 (2L) Fix ci-bonsai-daily: get_linked_element_geom_slice hidden-face index space
  • #8782 (2L) win: do not close the calling console when build-deps.cmd finishes
  • #8790 (2L) ci: push the latest tag when publishing the docker image
  • #8574 (4L) Fix ci-bonsai-daily: configure unmerged_blobs mock in git_mergetool tests
  • #8573 (6L) Fix ci-bonsai-daily: ProjectLibraryData duplicate parent-library enum entry
  • #8863 (6L) (dependabot) build(deps-dev): bump immutable from 5.1.5 to 5.1.9 in /src/ifctester/webapp
  • #8864 (6L) (dependabot) build(deps-dev): bump tar from 7.5.16 to 7.5.21 in /src/ifctester/webapp
  • #8575 (11L) Fix ci-bonsai-daily: guard on_depsgraph_update_caps during file load
  • #8456 (17L) examples: fix missing OpenCASCADE includes on MSVC x64 (#7822)
  • #8604 (18L) (by @thierry-FreeBSD) cmake/CMakeLists.txt: fix for dependencies
  • #8783 (19L) win: document LNK1248 causes and the USE_CCACHE escape hatch
  • #8565 (23L) Fix ci-bonsai-daily BDD: OperatorSpy.bl_rna + stale MEP port name
  • #8571 (23L) Fix ci-bonsai-daily: assign_class drops active_object; assign_material usage type
  • #8566 (33L) Fix ci-bonsai-daily: classification operators honor their obj argument
  • #8685 (34L) win: pre-detect VS2017 MSBuild path before building mpir dependency
  • #8763 (43L) ci: fix compile-and-test failures on v0.8.0 (validate_stub crash + missing Optimise test deps)
  • #8276 (1988L) win: use exit /b in build-deps.cmd so the console stays open (#7884)
  • #7987 (2L) (dependabot) Bump lxml from 4.9.1 to 6.1.0 in /src/ifcopenshell-python/ifcopenshell
  • #8076 (2L) (dependabot) Bump lxml from 4.9.1 to 6.1.0 in /src/ifcopenshell-python
  • #8094 (2L) [conflicting] (dependabot) Bump black from 26.3.1 to 26.5.1
  • #8126 (2L) [conflicting] (dependabot) Bump gersemi from 0.26.1 to 0.27.7
  • #8029 (6L) (dependabot) Bump postcss from 8.5.4 to 8.5.13 in /src/ifctester/webapp
  • #8058 (6L) (dependabot) Bump devalue from 5.6.4 to 5.8.1 in /src/ifctester/webapp
  • #8181 (33L) (dependabot) Bump ws and engine.io-client in /src/ifctester/webapp
  • #8075 (34L) (dependabot) Bump svelte from 5.53.6 to 5.55.8 in /src/ifctester/webapp
  • #8028 (37L) (dependabot) Bump uuid and hyperid in /src/ifctester/webapp
  • #8189 (102L) (dependabot) Bump actions/checkout from 6 to 7
  • #8182 (1580L) (dependabot) Bump vite, @sveltejs/vite-plugin-svelte and @tailwindcss/vite in /src/ifctester/webapp
  • #5698 (5L) [draft] (by @cjmayo) Install headers under CMAKE_INSTALL_INCLUDEDIR/ifcopenshell
  • #6449 (17L) [draft] (by @Adarshgupta1127) IfcConvert CI/CD Pipeline

@maxfb87 (17)

  • #8868 (18L) ifc5d: compute footing gross area, volume and outer surface on the ifcopenshell engine (#6305)
  • #8318 (7L) Skip quantity takeoff for elements with empty geometry (#7147)
  • #8380 (16L) fix(ifc5d): correct swapped Width and Depth in Qto_SlabBaseQuantities
  • #8393 (40L) ifc5d: add base-quantity rule for IfcGeographicElement (#6508)
  • #8539 (40L) Resolve nested complex quantity paths in the selector (#2041)
  • #8287 (142L) ifc5d: professional grade ODS/XLSX cost schedule export (#6251)
  • #8503 (263L) Return nan for non-manifold volume and skip it in QTO (#6125)
  • #7329 (65L) [conflicting] (by @maxfb87) Ifc5d qto optimization
  • #8728 (159L) [conflicting] Bonsai: apply a new Pset/Qto to the whole selection, not just the active object
  • #8332 (294L) [conflicting] ifc5d: measure segment length from geometry when it is not a supported extrusion
  • #7342 (340L) (by @DimitriosThe) #7331 related: Modifications to include IfcSpace entities in Cost Schedules, as elements and quantities + Project Library extended support for costing and scheduling

@RickBrice (4)

  • #8833 (1287L) alignment: support spiral transition curves and cant in the PI-method CSV import (#6890)
  • #7659 (9L) (by @jaliste) Fix window/door preview alignment regression in ProductDecorator
  • #7785 (178L) [draft] (by @DesertSpringsCivil) fix: Correct vertical/cant segment handling in alignment API
  • #7589 (3916L) [draft] (by @Moult) Saikei alignment editing capabilities

Feel free to pin this if it helps, or close it if it does not. This index was assembled with AI assistance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions