# Changelog All notable changes to Pr3tz are documented here. ## [Unreleased] ### Changed - **Minimum Blender version raised to 5.0** — `bl_info["blender"]` updated to `(5, 0, 0)`. Blender 4.x is no longer supported. Drops all legacy compatibility shims: - `_get_action_fcurves` now uses the Blender 5 layered Action API only (no `action.fcurves` fallback). - Principled BSDF shaders use Blender 5 canonical input names directly: `"Specular IOR Level"`, `"Transmission Weight"`, `"Coat Weight"`, `"Coat Roughness"`. - Removed `"Specular"` / `"Clearcoat"` / `"Transmission"` key-in-inputs guards. ## [2.0.0] — Current ### Added - Full modular rewrite: `knot_animation.py` split into 10 focused modules under `knot_animation/` - 20 built-in shader presets (up from 7 in 1.x) - Per-knot material overrides — color, roughness, metallic, emission strength - Per-knot animation rates: spin phase, revolution phase, height pulse, scale oscillation - Smooth geometry transitions with Linear / Quadratic / Smoothstep easing - Random playlist generator with configurable min/max ranges for every parameter - Bake & Export operator with split-file support for distributed render farms (SheepIt) - Blender 5.0 layered-action API support (`_get_action_fcurves` compatibility helper) - `FitTimeline` and `FitPlaylist` operators - Global Reactivity factor for audio-reactive animation - `preview_resolution` / `render_resolution` split for fast viewport + quality renders - Camera shake baked to `delta_location` keyframes during export - Headless `align_matrix` monkey-patch for crash-free command-line rendering ### Changed - Handler no longer uses `bpy.ops` or reads `bpy.context.space_data` — safe in all execution contexts - Material cache keyed by preset ID — no rebuilds on every frame ## [1.x] — Single-file era - `knot_animation.py`: procedural torus knot animation with hardcoded 10-knot config list - 7 shader presets - No playlist editor, no transitions, no export