diff --git a/.github/workflows/bundle-extension.yml b/.github/workflows/bundle-extension.yml index 22b3aff..79ab102 100644 --- a/.github/workflows/bundle-extension.yml +++ b/.github/workflows/bundle-extension.yml @@ -16,7 +16,7 @@ jobs: - uses: astral-sh/setup-uv@v6 - name: Vendorize Core Logic - run: uv run python-vendorize + run: uv run --only-group "build" python-vendorize - name: Get build script working-directory: packages/tree_clipper_addon/src @@ -24,11 +24,11 @@ jobs: - name: Build Blender extension bundles working-directory: packages/tree_clipper_addon/src/tree_clipper_addon - run: uv run --python 3.11 ../blender_ext.py build + run: uv run --no-project --python 3.11 ../blender_ext.py build - name: Generate index.json for easy updates working-directory: packages/tree_clipper_addon/src/tree_clipper_addon - run: uv run --python 3.11 ../blender_ext.py server-generate --repo-dir=./ + run: uv run --no-project --python 3.11 ../blender_ext.py server-generate --repo-dir=./ - uses: actions/upload-artifact@v4 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index 31736f5..a2467f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [0.1.6] - 2026-02-26 + +This release is a Banger. + +Tree Clipper already accepted exports from an earlier version of Tree Clipper, but the Blender version had to match exactly. +That was very limiting, and we're now trying to be backward-compatible. + +Also worth highlighting: progress on third-party-defined properties. + +### Added + +- Support for Blender 5.1. +- Backwards compatibility. + +### Changed + +### Fixed + +- Issues with properties registered by third-party addons. +- Min/Max issue for certain subtypes in interface sockets. +- Crytomatte nodes issues. + ## [0.1.5] - 2026-01-23 This version might be the first to be in the extension store. diff --git a/packages/tree_clipper/pyproject.toml b/packages/tree_clipper/pyproject.toml index 28f087d..1a2c7e9 100644 --- a/packages/tree_clipper/pyproject.toml +++ b/packages/tree_clipper/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "tree-clipper" -version = "0.1.5" +version = "0.1.6" dependencies = [] maintainers = [ { name="Algebraic", email="tree.clipper@algebraic.games" }, diff --git a/packages/tree_clipper/src/tree_clipper/common.py b/packages/tree_clipper/src/tree_clipper/common.py index b8f0ea5..34bc622 100644 --- a/packages/tree_clipper/src/tree_clipper/common.py +++ b/packages/tree_clipper/src/tree_clipper/common.py @@ -13,7 +13,7 @@ # these fields are in the top level JSON object BLENDER_VERSION = "blender_version" TREE_CLIPPER_VERSION = "tree_clipper_version" -CURRENT_TREE_CLIPPER_VERSION = "0.1.5" # tested to match pyproject.toml +CURRENT_TREE_CLIPPER_VERSION = "0.1.6" # tested to match pyproject.toml MATERIAL_NAME = "name" TREES = "node_trees" EXTERNAL = "external" diff --git a/packages/tree_clipper/tests/test_third_party_attributes.py b/packages/tree_clipper/tests/test_third_party_attributes.py index 82d76be..ad4c68f 100644 --- a/packages/tree_clipper/tests/test_third_party_attributes.py +++ b/packages/tree_clipper/tests/test_third_party_attributes.py @@ -94,7 +94,7 @@ def test_third_party_only_exporter_has_it(): try: diff_exports(before=before, import_report=import_report, after=after) assert False, "diff should be the properties" - except: + except AssertionError: pass register_third_party_properties() @@ -125,7 +125,7 @@ def test_third_party_only_impoter_has_it(): try: diff_exports(before=before, import_report=import_report, after=after) assert False, "diff should be the properties" - except: + except AssertionError: pass finally: diff --git a/packages/tree_clipper/tests/util.py b/packages/tree_clipper/tests/util.py index bad43ce..e086938 100644 --- a/packages/tree_clipper/tests/util.py +++ b/packages/tree_clipper/tests/util.py @@ -13,6 +13,9 @@ TREES, NAME, DEFAULT_HINT, + TREE_CLIPPER_VERSION, + CURRENT_TREE_CLIPPER_VERSION, + BLENDER_VERSION, ) from tree_clipper.id_data_getter import get_data_block_from_id_name from tree_clipper.export_nodes import ExportIntermediate, ExportParameters @@ -261,9 +264,10 @@ def import_and_check_export( with open(export_file, "r") as f: expected_string = f.read() - diff = deepdiff.DeepDiff( - json.loads(expected_string), json.loads(string), math_epsilon=0.01 - ) + expected = json.loads(expected_string) + expected[TREE_CLIPPER_VERSION] = CURRENT_TREE_CLIPPER_VERSION + expected[BLENDER_VERSION] = bpy.app.version_string + diff = deepdiff.DeepDiff(expected, json.loads(string), math_epsilon=0.01) print(diff.pretty()) assert diff == {} diff --git a/packages/tree_clipper_addon/src/tree_clipper_addon/blender_manifest.toml b/packages/tree_clipper_addon/src/tree_clipper_addon/blender_manifest.toml index 87e291f..95e5f79 100644 --- a/packages/tree_clipper_addon/src/tree_clipper_addon/blender_manifest.toml +++ b/packages/tree_clipper_addon/src/tree_clipper_addon/blender_manifest.toml @@ -3,7 +3,7 @@ schema_version = "1.0.0" # Example of manifest file for a Blender extension # Change the values according to your extension id = "tree_clipper" -version = "0.1.5" # should match tree_clipper (core logic) +version = "0.1.6" # should match tree_clipper (core logic) name = "Tree Clipper" tagline = "Export and import Blender node trees as JSON" maintainer = "Algebraic " diff --git a/pyproject.toml b/pyproject.toml index d44e4c1..a4745e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,10 @@ members = [ ] [dependency-groups] +build = [ + "vendorize", + "pip>=25.3", +] dev = [ "fake-bpy-module>=20251003", "pytest>=9.0.1", diff --git a/uv.lock b/uv.lock index 6cc8dfe..59c236b 100644 --- a/uv.lock +++ b/uv.lock @@ -24,9 +24,9 @@ dependencies = [ { name = "zstandard" }, ] wheels = [ - { url = "https://github.com/BradyAJohnston/dailybpy/releases/download/daily-2026-02-23/bpy-5.1.0b0-cp313-cp313-macosx_11_0_arm64.whl" }, - { url = "https://github.com/BradyAJohnston/dailybpy/releases/download/daily-2026-02-23/bpy-5.1.0b0-cp313-cp313-manylinux_2_39_x86_64.whl" }, - { url = "https://github.com/BradyAJohnston/dailybpy/releases/download/daily-2026-02-23/bpy-5.1.0b0-cp313-cp313-win_amd64.whl" }, + { url = "https://github.com/BradyAJohnston/dailybpy/releases/download/daily-2026-02-25/bpy-5.1.0b0-cp313-cp313-macosx_11_0_arm64.whl" }, + { url = "https://github.com/BradyAJohnston/dailybpy/releases/download/daily-2026-02-25/bpy-5.1.0b0-cp313-cp313-manylinux_2_39_x86_64.whl" }, + { url = "https://github.com/BradyAJohnston/dailybpy/releases/download/daily-2026-02-25/bpy-5.1.0b0-cp313-cp313-win_amd64.whl" }, ] [[package]] @@ -242,7 +242,7 @@ wheels = [ [[package]] name = "tree-clipper" -version = "0.1.5" +version = "0.1.6" source = { editable = "packages/tree_clipper" } [package.optional-dependencies] @@ -286,6 +286,10 @@ dependencies = [ ] [package.dev-dependencies] +build = [ + { name = "pip" }, + { name = "vendorize" }, +] dev = [ { name = "deepdiff" }, { name = "fake-bpy-module" }, @@ -303,6 +307,10 @@ requires-dist = [ ] [package.metadata.requires-dev] +build = [ + { name = "pip", specifier = ">=25.3" }, + { name = "vendorize", git = "https://github.com/Vollkornaffe/python-vendorize.git?rev=f284834c558483542ba0886f992ae2b918c22ab3" }, +] dev = [ { name = "deepdiff", specifier = ">=8.6.1" }, { name = "fake-bpy-module", specifier = ">=20251003" },