From 33809c7266d356770540a81a456b62b1c4750487 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Sat, 25 Apr 2026 11:13:48 +0200 Subject: [PATCH 01/12] pin pyodide versions --- pyodide/build_pyodide.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pyodide/build_pyodide.sh b/pyodide/build_pyodide.sh index e7f399adfd..205ee5395f 100755 --- a/pyodide/build_pyodide.sh +++ b/pyodide/build_pyodide.sh @@ -1,6 +1,9 @@ #!/usr/bin/bash set -ex +PYODIDE_VERSION=0.29.3 +PYODIDE_BUILD_VERSION=0.33.0 + # Script is assuming that it will be possible to execute it multiple times # therefore we're clearing venv each time and ignoring existing 'emsdk' folder. @@ -11,14 +14,14 @@ source .venv/bin/activate # Install pyodide cross build environment. # Instructions: https://pyodide.org/en/stable/development/building-packages.html -uv pip install pyodide-build +uv pip install "pyodide-build==${PYODIDE_BUILD_VERSION}" # `uv run` is required, so xbuildenv would skip using `pip`. -uv run pyodide xbuildenv install +uv run pyodide xbuildenv install "${PYODIDE_VERSION}" uv run pyodide xbuildenv install-emscripten EMSDK_ROOT=$(pyodide config get emscripten_dir) -[ -f ${EMSDK_ROOT}/emsdk_env.sh ] && source ${EMSDK_ROOT}/emsdk_env.sh -[ -f ${EMSDK_ROOT}/../../emsdk_env.sh ] && source ${EMSDK_ROOT}/../../emsdk_env.sh +[ -f "${EMSDK_ROOT}/emsdk_env.sh" ] && source "${EMSDK_ROOT}/emsdk_env.sh" +[ -f "${EMSDK_ROOT}/../../emsdk_env.sh" ] && source "${EMSDK_ROOT}/../../emsdk_env.sh" which emcc mkdir -p packages/ifcopenshell From 98c24b95f37212cef9aba3e1604c61c51e52a4c3 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Sun, 26 Apr 2026 21:28:02 +0200 Subject: [PATCH 02/12] Simple SPF submodule update --- src/ifcopenshell-python/ifcopenshell/simple_spf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ifcopenshell-python/ifcopenshell/simple_spf b/src/ifcopenshell-python/ifcopenshell/simple_spf index ed50b756c4..9400d243d8 160000 --- a/src/ifcopenshell-python/ifcopenshell/simple_spf +++ b/src/ifcopenshell-python/ifcopenshell/simple_spf @@ -1 +1 @@ -Subproject commit ed50b756c4035290d50eb2d928f89423f3aa0947 +Subproject commit 9400d243d880dace57490949d74ab1932ce99a09 From 8b5b4006aa1a5314159b4e6176a75e099fba81e4 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Sat, 25 Apr 2026 11:34:31 +0200 Subject: [PATCH 03/12] Try with manual paths --- pyodide/build_pyodide.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pyodide/build_pyodide.sh b/pyodide/build_pyodide.sh index 205ee5395f..8afbb3fcce 100755 --- a/pyodide/build_pyodide.sh +++ b/pyodide/build_pyodide.sh @@ -3,6 +3,8 @@ set -ex PYODIDE_VERSION=0.29.3 PYODIDE_BUILD_VERSION=0.33.0 +PYODIDE_XBUILDENV_ROOT="${HOME}/.cache/.pyodide-xbuildenv-${PYODIDE_BUILD_VERSION}" +PYODIDE_XBUILDENV="${PYODIDE_XBUILDENV_ROOT}/${PYODIDE_VERSION}" # Script is assuming that it will be possible to execute it multiple times # therefore we're clearing venv each time and ignoring existing 'emsdk' folder. @@ -19,10 +21,10 @@ uv pip install "pyodide-build==${PYODIDE_BUILD_VERSION}" uv run pyodide xbuildenv install "${PYODIDE_VERSION}" uv run pyodide xbuildenv install-emscripten -EMSDK_ROOT=$(pyodide config get emscripten_dir) -[ -f "${EMSDK_ROOT}/emsdk_env.sh" ] && source "${EMSDK_ROOT}/emsdk_env.sh" -[ -f "${EMSDK_ROOT}/../../emsdk_env.sh" ] && source "${EMSDK_ROOT}/../../emsdk_env.sh" +EMSDK_ROOT="${PYODIDE_XBUILDENV}/emsdk" +source "${EMSDK_ROOT}/emsdk_env.sh" which emcc +emcc --version mkdir -p packages/ifcopenshell VERSION=`cat IfcOpenShell/VERSION` From 434b179ed9964d486e69e63f62d57788bf7daf6c Mon Sep 17 00:00:00 2001 From: E Shattow Date: Sun, 19 Apr 2026 20:03:28 -0700 Subject: [PATCH 04/12] docs: project_overview: project_info blender tip to change display units after project creation Link to Blender Manual for tip to change display units --- src/bonsai/docs/reference/project_overview/project_info.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bonsai/docs/reference/project_overview/project_info.rst b/src/bonsai/docs/reference/project_overview/project_info.rst index f2fe105f8c..ffe33427a6 100644 --- a/src/bonsai/docs/reference/project_overview/project_info.rst +++ b/src/bonsai/docs/reference/project_overview/project_info.rst @@ -58,7 +58,7 @@ Fields Class** based on the IFC Schema version. **Unit System** - Choose between metric and imperial units of measurement when creating a project. + Choose between metric and imperial units of measurement when creating a project. Project data is stored in this Unit System and displayed according to e.g. Length Unit, Area Unit, Volume Unit. Properly changing the Unit System after project creation requires conversion. See `Blender Manual : Scene Properties : Units `_ for a description of changing the display units e.g. from Feet to Adaptive (enable Separate Units option) for Feet-and-Inches. **Length Unit** Depending on the unit system, choose the default unit to be used for all length measurements. Lengths are used for moving objects around in the 3D scene, as well as lengths, widths, height, and depth quantity take-off data. From c999a92aa7c61484539dff4268e15806efdc203b Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Wed, 29 Apr 2026 10:00:35 -0500 Subject: [PATCH 05/12] Fix #8024 - Fix TypeError when CardinalPoint is None Guard the int() cast on CardinalPoint in BIM_OT_edit_assigned_material so a None value (no cardinal point set) no longer raises a TypeError. Generated with the assistance of an AI coding tool. --- src/bonsai/bonsai/bim/module/material/operator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/material/operator.py b/src/bonsai/bonsai/bim/module/material/operator.py index 7587a7e4ed..8a54478179 100644 --- a/src/bonsai/bonsai/bim/module/material/operator.py +++ b/src/bonsai/bonsai/bim/module/material/operator.py @@ -630,7 +630,7 @@ class EditAssignedMaterial(bpy.types.Operator, tool.Ifc.Operator): slab.DumbSlabPlaner().regenerate_from_layer_set(layer_set) if material_set_usage.is_a("IfcMaterialProfileSetUsage"): - if "CardinalPoint" in attributes: + if "CardinalPoint" in attributes and attributes["CardinalPoint"] is not None: attributes["CardinalPoint"] = int(attributes["CardinalPoint"]) ifcopenshell.api.material.edit_profile_usage( self.file, From 7a61cf20a4eeb5fe1b1a7f0be0febfe7267d15cd Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Sat, 18 Apr 2026 12:55:52 -0500 Subject: [PATCH 06/12] Fix #7927: Fix SECTION annotation for MODEL_VIEW drawings generate_section_reference_points had no handler for MODEL_VIEW target view, causing it to silently return None. Add MODEL_VIEW branch that clips the section line to XY camera bounds while preserving the Z coordinate for correct 3D placement. Generated with the assistance of an AI coding tool. --- src/bonsai/bonsai/tool/drawing.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bonsai/bonsai/tool/drawing.py b/src/bonsai/bonsai/tool/drawing.py index 86113b9c95..232e963359 100644 --- a/src/bonsai/bonsai/tool/drawing.py +++ b/src/bonsai/bonsai/tool/drawing.py @@ -1756,6 +1756,10 @@ class Drawing(bonsai.core.tool.Drawing): # For section/elevation views, elevate the segment vertically if not (points := helper.elevate_segment(bounds, [v1, v2])): return + elif target_view == "MODEL_VIEW": + # For model views, clip to XY bounds and keep Z (3D line at true elevation) + if not (points := helper.clip_segment(bounds, [v1, v2])): + return else: return From 856631092b3356d2f0d292e1516ca526d914dd11 Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Wed, 1 Apr 2026 11:50:05 -0500 Subject: [PATCH 07/12] Fix #7885: LAYER3 crash on IfcCompositeProfileDef The x-angle transformation for LAYER3 slabs assumed SweptArea is always IfcArbitraryClosedProfileDef (which has OuterCurve), but composite profiles use IfcCompositeProfileDef instead. Apply the coord scaling to each sub-profile individually. Generated with the assistance of an AI coding tool. --- src/bonsai/bonsai/bim/module/model/wall.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/model/wall.py b/src/bonsai/bonsai/bim/module/model/wall.py index 4d0c9b3de7..b5d2f5fa77 100644 --- a/src/bonsai/bonsai/bim/module/model/wall.py +++ b/src/bonsai/bonsai/bim/module/model/wall.py @@ -468,14 +468,16 @@ class ChangeExtrusionXAngle(bpy.types.Operator, tool.Ifc.Operator): existing_x_angle = 0 if tool.Cad.is_x(existing_x_angle, 0, tolerance=0.001) else existing_x_angle existing_x_angle = 0 if tool.Cad.is_x(existing_x_angle, pi, tolerance=0.001) else existing_x_angle - coord_list = builder.get_polyline_coords(extrusion.SweptArea.OuterCurve) - coord_list = [ - (p[0], p[1] * abs(cos(existing_x_angle))) for p in coord_list - ] # Reset the transformation and returns to the original points with 0 degrees - coord_list = [ - (p[0], p[1] * abs(1 / cos(x_angle))) for p in coord_list - ] # Apply the transformation for the new x_angle - builder.set_polyline_coords(extrusion.SweptArea.OuterCurve, coord_list) + profiles = extrusion.SweptArea.Profiles if extrusion.SweptArea.is_a("IfcCompositeProfileDef") else [extrusion.SweptArea] + for profile in profiles: + coord_list = builder.get_polyline_coords(profile.OuterCurve) + coord_list = [ + (p[0], p[1] * abs(cos(existing_x_angle))) for p in coord_list + ] # Reset the transformation and returns to the original points with 0 degrees + coord_list = [ + (p[0], p[1] * abs(1 / cos(x_angle))) for p in coord_list + ] # Apply the transformation for the new x_angle + builder.set_polyline_coords(profile.OuterCurve, coord_list) # The extrusion direction calculated previously default to the positive direction # Here we set the extrusion direction to negative if that's the case From 852d620dc63b55b5f3b6c51d50f30bb6b2db6292 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 22:45:02 +0000 Subject: [PATCH 08/12] Bump ty from 0.0.29 to 0.0.32 Bumps [ty](https://github.com/astral-sh/ty) from 0.0.29 to 0.0.32. - [Release notes](https://github.com/astral-sh/ty/releases) - [Changelog](https://github.com/astral-sh/ty/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ty/compare/0.0.29...0.0.32) --- updated-dependencies: - dependency-name: ty dependency-version: 0.0.32 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 45c0b357a8..775c6b324b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ dependencies = [ "black==26.3.1", "ruff==0.15.10", "poethepoet", - "ty==0.0.29", + "ty==0.0.32", "gersemi==0.26.1", ] From e1a7214a29f35fe9d6ecb9648c1c12acda42ddf5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 22:44:55 +0000 Subject: [PATCH 09/12] Bump ruff from 0.15.10 to 0.15.12 Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.10 to 0.15.12. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.15.10...0.15.12) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.15.12 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 775c6b324b..37aed2dded 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "IfcOpenShell" version = "0.0.0" dependencies = [ "black==26.3.1", - "ruff==0.15.10", + "ruff==0.15.12", "poethepoet", "ty==0.0.32", "gersemi==0.26.1", From c58711a8f79caddba006249847a76b76ac66fb87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 22:44:49 +0000 Subject: [PATCH 10/12] Bump hendrikmuhs/ccache-action from 1.2.22 to 1.2.23 Bumps [hendrikmuhs/ccache-action](https://github.com/hendrikmuhs/ccache-action) from 1.2.22 to 1.2.23. - [Release notes](https://github.com/hendrikmuhs/ccache-action/releases) - [Commits](https://github.com/hendrikmuhs/ccache-action/compare/v1.2.22...v1.2.23) --- updated-dependencies: - dependency-name: hendrikmuhs/ccache-action dependency-version: 1.2.23 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/build_osx.yml | 2 +- .github/workflows/build_pyodide.yml | 2 +- .github/workflows/build_rocky.yml | 2 +- .github/workflows/build_rocky_arm.yml | 2 +- .github/workflows/build_win.yml | 2 +- .github/workflows/ci-ifcopenshell-docker.yml | 2 +- .github/workflows/ci.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_osx.yml b/.github/workflows/build_osx.yml index 4c6cb9312c..c758470a79 100644 --- a/.github/workflows/build_osx.yml +++ b/.github/workflows/build_osx.yml @@ -53,7 +53,7 @@ jobs: python ../nix/cache_dependencies.py unpack - name: ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: mac-${{ matrix.arch }} diff --git a/.github/workflows/build_pyodide.yml b/.github/workflows/build_pyodide.yml index a5e80a32df..050b542cff 100644 --- a/.github/workflows/build_pyodide.yml +++ b/.github/workflows/build_pyodide.yml @@ -29,7 +29,7 @@ jobs: python ../IfcOpenShell/nix/cache_dependencies.py unpack - name: ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ubuntu-22.04-${{ runner.arch }} diff --git a/.github/workflows/build_rocky.yml b/.github/workflows/build_rocky.yml index a1aa611826..a716a330fb 100644 --- a/.github/workflows/build_rocky.yml +++ b/.github/workflows/build_rocky.yml @@ -54,7 +54,7 @@ jobs: uv run ../nix/cache_dependencies.py unpack - name: ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ubuntu-22.04-${{ runner.arch }}-rockylinux9 diff --git a/.github/workflows/build_rocky_arm.yml b/.github/workflows/build_rocky_arm.yml index a5cbea640d..78b37ea0f5 100644 --- a/.github/workflows/build_rocky_arm.yml +++ b/.github/workflows/build_rocky_arm.yml @@ -54,7 +54,7 @@ jobs: uv run ../nix/cache_dependencies.py unpack - name: ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ubuntu-22.04-${{ runner.arch }}-rockylinux9 diff --git a/.github/workflows/build_win.yml b/.github/workflows/build_win.yml index 7880296a2a..5b976f7886 100644 --- a/.github/workflows/build_win.yml +++ b/.github/workflows/build_win.yml @@ -52,7 +52,7 @@ jobs: } - name: ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: win-${{ matrix.arch }} # Windows ccache needs ~1GB diff --git a/.github/workflows/ci-ifcopenshell-docker.yml b/.github/workflows/ci-ifcopenshell-docker.yml index df672139b8..50978c9d6f 100644 --- a/.github/workflows/ci-ifcopenshell-docker.yml +++ b/.github/workflows/ci-ifcopenshell-docker.yml @@ -35,7 +35,7 @@ jobs: - name: ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 - name: Build ifcopenshell diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a49c92fcd7..ea7fb590e2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -79,7 +79,7 @@ jobs: libhdf5-dev libcgal-dev libeigen3-dev - name: ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ubuntu-22.04-${{ runner.arch }} From 674d98dbb3681962b25c2900e60ac1e8b103f0bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:44:55 +0000 Subject: [PATCH 11/12] Bump astral-sh/setup-uv from 3 to 7 Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 3 to 7. - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](https://github.com/astral-sh/setup-uv/compare/v3...v7) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build_rocky.yml | 2 +- .github/workflows/build_rocky_arm.yml | 2 +- .github/workflows/publish-bonsai-releases.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_rocky.yml b/.github/workflows/build_rocky.yml index a716a330fb..0de26089f6 100644 --- a/.github/workflows/build_rocky.yml +++ b/.github/workflows/build_rocky.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Set up uv - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0 + uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0 - name: Install Python # Installs latest Python version so it's preferred by uv over Rocky's system Python. diff --git a/.github/workflows/build_rocky_arm.yml b/.github/workflows/build_rocky_arm.yml index 78b37ea0f5..e7401f1f63 100644 --- a/.github/workflows/build_rocky_arm.yml +++ b/.github/workflows/build_rocky_arm.yml @@ -10,7 +10,7 @@ jobs: steps: - name: Set up uv - uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0 + uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0 - name: Install Python # Installs latest Python version so it's preferred by uv over Rocky's system Python. diff --git a/.github/workflows/publish-bonsai-releases.yml b/.github/workflows/publish-bonsai-releases.yml index 25d9a67d41..674c2baeb2 100644 --- a/.github/workflows/publish-bonsai-releases.yml +++ b/.github/workflows/publish-bonsai-releases.yml @@ -9,7 +9,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v3 + - uses: astral-sh/setup-uv@v7 - run: uv run .github/scripts/publish-bonsai-releases.py env: From 57ef96a909b7f9424881ca9186ff907f7f10ed4c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:44:49 +0000 Subject: [PATCH 12/12] Bump actions/checkout from 4 to 6 Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/publish-bonsai-releases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-bonsai-releases.yml b/.github/workflows/publish-bonsai-releases.yml index 674c2baeb2..6d423deadf 100644 --- a/.github/workflows/publish-bonsai-releases.yml +++ b/.github/workflows/publish-bonsai-releases.yml @@ -7,7 +7,7 @@ jobs: publish: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@v7