{"id":21120352,"url":"https://github.com/razcore-rad/blender-addon-dev-watcher","last_synced_at":"2025-10-06T21:53:48.727Z","repository":{"id":198004558,"uuid":"699854226","full_name":"razcore-rad/blender-addon-dev-watcher","owner":"razcore-rad","description":"Hot-reload Blender addons during development","archived":false,"fork":false,"pushed_at":"2024-02-21T07:02:08.000Z","size":96,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T10:23:34.829Z","etag":null,"topics":["addon","blender","blender-addon","blender-plugin","development","hot-reload","hot-reloading","live-reload","live-reloading","python","watch","watcher"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/razcore-rad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-03T13:26:13.000Z","updated_at":"2024-04-29T16:53:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"31383da1-ca45-402c-a5cb-03751c5db5db","html_url":"https://github.com/razcore-rad/blender-addon-dev-watcher","commit_stats":null,"previous_names":["razcore-rad/blender-addon-dev-watcher"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/razcore-rad/blender-addon-dev-watcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razcore-rad%2Fblender-addon-dev-watcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razcore-rad%2Fblender-addon-dev-watcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razcore-rad%2Fblender-addon-dev-watcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razcore-rad%2Fblender-addon-dev-watcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/razcore-rad","download_url":"https://codeload.github.com/razcore-rad/blender-addon-dev-watcher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/razcore-rad%2Fblender-addon-dev-watcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275844443,"owners_count":25538991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["addon","blender","blender-addon","blender-plugin","development","hot-reload","hot-reloading","live-reload","live-reloading","python","watch","watcher"],"created_at":"2024-11-20T03:08:19.850Z","updated_at":"2025-09-18T22:33:25.498Z","avatar_url":"https://github.com/razcore-rad.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# INFO\n\nTested with Blender 4.0.2.\n\n# Blender Addon Dev Watcher\n\nThis addon auto-reloads the watched addons when file changes get detected for a fast development cycle.\n\nIt uses the Python [watchdog](https://github.com/gorakhargosh/watchdog) module.\n\n## The Problem\n\nBlender addon development is greatly slowed down due to lack of hot-reloading on file changes.\n\nSome proposed workarounds include:\n\n1. Refresh followed by disabling/enabling the addon from the `Preferences... \u003e Add-ons` panel.\n2. Using the `Reload Scripts` button.\n\n![](readme/reload-scripts.png)\n\nBoth of these options are less than ideal.\n\n## The Solution\n\nThis addon found under the `View 3D \u003e Sidebar \u003e Tool \u003e Addon Dev Watcher` panel lists the available (user) addons in the top list apart from itself.\n\n![](readme/addon-dev-watcher.png)\n\nWe can add any addon from the top list to the bottom list with the `Add Watch` button. This starts a `watchdog` process waiting for file changes in the respective addon. When such a file change is detected it auto-reloads that addon.\n\nTo remove an addon from the watch list use the `Remove Watch` button.\n\nThat's it, nice and simple.\n\n## Notes\n\nFor now, there are no preference and the addon resets every time Blender is restart. This means that you have to actively add an addon to the watched list every restart.\n\nThe addon adds itself to the watch list and can't be unwatched. This is so we can hot-reload it during development at any time for whatever reason.\n\nRefreshing the addon is done with the help of the `bpy.ops.preferences.addon_disable()`, `bpy.ops.preferences.addon_enable()` Blender function, and a solution to recursively reload modules from [this gist](https://gist.github.com/KristianHolsheimer/f139646259056c1dffbf79169f84c5de).\n\nThe watchdog dependency is installed in the `ADDON_PATH/dependnecies` local folder by creating a virtual environment using the `venv` module.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazcore-rad%2Fblender-addon-dev-watcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frazcore-rad%2Fblender-addon-dev-watcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frazcore-rad%2Fblender-addon-dev-watcher/lists"}