using the docs I self hosted a third party extension site using the json file.
some feedback
- the ui is driving me bonkers my mouse is on the gear icon, since i just added my repo/json file
i want to move to the repo list, to turn one on/off, so you move your mouse down and left, and 9 out of 10 times , i just clip the bottom right corner of the drop down button left of the gear
over…and over…it’s VERY annoying.
I had to click the gear to get the menu to show, but once it’s showing mouse over any item left of the gear will show a menu… until you get to the search then it stops and you have to click again to get menus to show. inconsistent and a bit frustrating.
- After adding my repo to a blender started with with a brand new profile folder, (i deleted
c:\Users\ray\AppData\Roaming\Blender Foundation\Blender\4.2\
before starting blender.
i get the following error in both the prefs dialog (but it doesn’t fit due to the default width of the prefs dialog):
f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release>blender --factory-startup
Writing userprefs: "C:\Users\ray\AppData\Roaming\Blender Foundation\Blender\4.2\config\userpref.blend" ok
Info: Preferences saved
Repository file: C:\Users\ray\AppData\Roaming\Blender Foundation\Blender\4.2\extensions\blender_org\.blender_ext\bl_ext_repo.json not found, sync required!
PRE:
POST:
[WinError 3] The system cannot find the path specified: 'C:\\Users\\ray\\AppData\\Roaming\\Blender Foundation\\Blender\\4.2\\extensions\\homelazydodocom'
SYNC: home.lazydodo.com
Repository file: C:\Users\ray\AppData\Roaming\Blender Foundation\Blender\4.2\extensions\homelazydodocom\.blender_ext\bl_ext_repo.json not found, sync required!
Traceback (most recent call last):
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_ops.py", line 621, in modal
self.exec_command_finish()
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_ops.py", line 766, in exec_command_finish
repo_cache_store.refresh_remote_from_directory(
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_utils.py", line 918, in refresh_remote_from_directory
repo_entry._json_data_refresh(force=force, error_fn=error_fn)
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_utils.py", line 767, in _json_data_refresh
self._json_data_refresh_from_toml(error_fn=error_fn, force=force)
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_utils.py", line 748, in _json_data_refresh_from_toml
with open(filepath_json, "w", encoding="utf-8") as fh:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\ray\\AppData\\Roaming\\Blender Foundation\\Blender\\4.2\\extensions\\user_default\\.blender_ext\\bl_ext_repo.json'
Error: Python: Traceback (most recent call last):
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_ops.py", line 621, in modal
self.exec_command_finish()
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_ops.py", line 766, in exec_command_finish
repo_cache_store.refresh_remote_from_directory(
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_utils.py", line 918, in refresh_remote_from_directory
repo_entry._json_data_refresh(force=force, error_fn=error_fn)
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_utils.py", line 767, in _json_data_refresh
self._json_data_refresh_from_toml(error_fn=error_fn, force=force)
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\bl_extension_utils.py", line 748, in _json_data_refresh_from_toml
with open(filepath_json, "w", encoding="utf-8") as fh:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\ray\\AppData\\Roaming\\Blender Foundation\\Blender\\4.2\\extensions\\user_default\\.blender_ext\\bl_ext_repo.json'
however, the repo does seem to load as my addon shows up in the list
- glorious! lets change something in the json, and hit the refresh button
no changes… check the console:
SYNC: home.lazydodo.com
RepoLock: freed without releasing lock!Error in bpy.app.handlers._extension_repos_sync[0]:
Traceback (most recent call last):
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\addons_contrib\bl_pkg\__init__.py", line 153, in extenion_repos_sync
bpy.ops.bl_pkg.repo_sync_all('INVOKE_DEFAULT', use_active_only=True)
File "f:\Downloads\blender-4.2.0-alpha+main.690cc6e3cb56-windows.amd64-release\4.2\scripts\modules\bpy\ops.py", line 107, in __call__
ret = _op_call(self.idname_py(), kw, C_exec, C_undo)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Error: Lock exists: lock is already held by this session
and no updates in the UI, closing blender, and restarting it shows the refreshed data
-
The random field i edited was
tagline
in the UI this field shows up asDescription
why? how is this already out of sync? This should have been calleddescription
in the json as well. -
my repo shows up as my hostname in the UI
given the odds of people hosting this on github are virtually 100% lets add a second package file on the same host
oh that’s not great, you can barely tell the two apart, the name in the list of extension sites is useless now, but hey, at least you should be able to tell what is what by the URL field, but…it’s too small…
You are seemingly allowed to rename things in this list so that’s the only option to organize this, better defaults would be the way to go though, perhaps the json could hold some extra metadata?
{
"repo":
{
"id": "lazydodo_madness"
"name": "LazyDodo's den of madness"
"homepage": "https://blahdieblah.com"
},
"packages":
[
...current content here..
]
}
-
minor inconvenience: the
archive_hash
field is case sensitive, i had upper case, blender needed lower case. -
I’ll admit, being a bit pedantic here, since i know the answer, but we poorly communicate it. Update vs sync? what’s the difference? why are there 2 buttons for something that sounds like it’s the same thing ? the documentation ignores existence of these two buttons. And the tooltips are not as helpful as they could be.
- When you add a repo it be nice if it looked for a default json file so i could tell my users to add
https://blender.lazydodo.com
rather than the slightly uglier
https://blender.lazydodo.com/packages.json
(fictitious URI used, will not work, do not try)
-
Having bothFigured it out, size is displayed in the UIarchive_size
andarchive_hash
for a file seems a bit superfluous? are we expecting collisions on an sha256 hash to be that common we need an additional check? -
The manifest for a repo is json, the manifest inside an extension zip is toml, how about we pick a team and stick with it?