You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
2026-07-29 — The Unity Bridge offers to install the optional unitytk instead of failing to import, and CoreUtils.ensure_packages generalises the Pillow provisioning._unity_bridge.py imported unitytk at module scope, so a user without the optional package hit an ImportError when the module was merely loaded — before the panel existed to explain it. The import is now deferred behind UnityBridge._deliverer_cls(), and the panel's make_bridge calls ensure_optional_package("unitytk", feature="Unity Bridge") (see uitk's changelog) — prompt, install, proceed; decline and the panel simply reports no engine. list_delivery_modes became a classmethod so it resolves the deliverer the same lazy way. CoreUtils.ensure_packages(packages, add_to_path=True) is the general form of ensure_image_deps: same Blender provisioning policy (install into the per-version user-modules dir, already on sys.path, driven against Blender's bundled interpreter — sys.executable is blender.exe and cannot be pip'd) with no assumption about what is being installed. ensure_image_deps keeps its Pillow default and PIL-rebind and now delegates to it, so the shared body lives once; both are backed by _CoreUtilsInternal._ensure_packages. BlenderBridgeSlotsBase overrides _install_optional_package to route through it — necessary because uitk's default is pip install --user, which would succeed and still be unimportable, Blender's user-site not being on sys.path. Verified: test_unity_bridge.py 15/15, test_core_utils.py 13/13, and the package still imports with unitytk blocked (only the Unity panel is affected).