Repository navigation
2.0
Performance & Responsiveness:
Asynchronous Save: Heavy material processing (hashing, DB writes) was moved from the blocking save_handler to a non-blocking, timer-based background process (process_dirty_materials_timer), eliminating UI freezes on save.
Efficient UI Filtering: Filtering logic was moved into the optimized UIList.filter_items method, which now intelligently caches data about which materials are used in the scene to avoid recalculations.
Superior Sorting: Replaced the inefficient timestamp-based sorting with a high-performance recency counter system (promote_material_by_recency_counter), making sorting operations instantaneous.
Robustness & Bug Fixes:
Correct Material Hashing: Implemented a new, queue-based traversal algorithm in get_material_hash to correctly read all properties from complex, nested node groups, fixing a major source of potential hash inaccuracies.
Stable Thumbnail UI: Fixed the BKE_icon_get error by adding a versioning system (list_version) to the UI cache, ensuring the UI list invalidates and re-fetches stale thumbnail IDs when they are updated in the background.
Effective Process Cleanup: Switched from terminate/wait to an immediate kill command for background processes during shutdown, preventing zombie processes.
Texture Recovery for Thumbnails: The background worker can now create thumbnails for materials with packed or generated textures by saving them to temporary files first.
Persistent Worker Hashing Scene: The background worker now uses a managed, persistent scene for hashing, improving its performance and stability.
User Experience & Code Quality:
Smarter "Duplicate/Localise" Button: Consolidated two operators into one intelligent "Create Local Copy" button.
Predictable List Selection: The list selection now automatically resets to the top after any filtering action.
Intuitive Recency Sorting: Materials now correctly jump to the top of the list when they are assigned or used.
Correct Default Naming: Fixed a logic flaw where newly created materials would get an incorrect .001 suffix on their default "Material" display name.
This are still high level changes. In summary, a shit ton of optimisations, bug fixes and improvements, my favourite being complex node setups update material thumbnails.