- Report when a repository is added since it's not so clear from the
popup that a new repository has been added.
- Fix for missing redraw after selecting all/none tags.
- Also access the tags property once instead of getting it for each
button.
Changes the the extension repositories in the preferences while
update notifications were running could raise an exception.
Resolve by only calculating outdated extensions for
repositories that still exist.
Previously add-ons were sorted by category & name, remove the category
only sorting by name since the category is no longer displayed and
isn't part of extension meta-data. Now the add-ons are sorted by name
(case insensitive).
Details:
- Store add-ons modules sorted to avoid having to sort on every redraw.
- addon_utils.modules() now returns an iterator.
The "repository" in links from the generated HTML was only valid when
the URL did not contain a path component.
Resolve by supporting relative "repository".
This simplifies referencing the JSON from a generated HTML since
a relative link doesn't need to know the repositories absolute URL
to the destination.
Extensions with a manifest that can't be parsed caused can exception
in the add-ons UI.
Account for errors loading the manifest, falling back to dummy values
& show a warning that the exceptions manifest could not be parsed.
Changes to an extensions manifest weren't accounted for.
This was particularly a problem for "System" extensions which aren't
intended to be managed inside Blender however the problem existed for
any changes made outside of Blender.
Now enabled extensions are checked on startup to ensure:
- They are compatible with Blender.
- The Python wheels are synchronized.
Resolves#123645.
Details:
- Any extension incompatibilities prevent the add-on being enabled
with a message printing the reason for it being disabled.
- Incompatible add-ons are kept enabled in the preferences to avoid
loosing their own preferences and allow for an upgrade to restore
compatibility.
- To avoid slowing down Blender's startup:
- Checks are skipped when no extensions are enabled
(as is the case for `--factory-startup` & running tests).
- Compatibility data is cached so in common case,
the cache is loaded and all enabled extensions `stat` their
manifests to detect changes without having to parse them.
- The cache is re-generated if any extensions change or the
Blender/Python version changes.
- Compatibility data is updated:
- On startup (when needed).
- On an explicit "Refresh Local"
(mainly for developers who may edit the manifest).
- When refreshing extensions after install/uninstall etc.
since an incompatible extensions may become compatible
after an update.
- When reloading preferences.
- Additional info is shown when the `--debug-python` is enabled,
if there are ever issues with the extension compatibility cache
generation not working as expected.
- The behavior for Python wheels has changed so they are only setup
when the extension is enabled. This was done to simplify startup
checks and has the benefit that an installed but disabled extension
never runs code - as the ability to install wheels means it could
have been imported from other scripts. It also means users can disable
an extension to avoid wheel version conflicts.
This does add the complication however that enabling add-on which is
an extension must first ensure it's wheels are setup.
See `addon_utils.extensions_refresh(..)`.
See code-comments for further details.
Instead of having the Rigify meta-rigs directly in the 'Add → Armature`
menu, move them into 'Add → Armature → Rigify Meta-Rigs`.
This also removes the " (Meta-Rig)" suffix from every individual
meta-rig menu item.
This serves multiple purposes:
- It's now clear that these meta-rigs come from Rigify.
- The built-in 'Single Bone' armature now has similar visual weight as
the 'Rigify Meta-Rigs' menu item.
- Opens up the menu in a fairer way to other add-ons, to add their own
entries in a similar way.
Pull Request: https://projects.blender.org/blender/blender/pulls/123833
Run `make format` to reformat the Rigify code. It now adheres to the
global Blender code style standard, rather than having its own style.
Most of the changes are simply adding spaces around operators, newlines
below docstrings, and changing some indentation.
Note that this does not reformat any stored-as-multiline-strings code
blocks.
No functional changes.
Pull Request: https://projects.blender.org/blender/blender/pulls/123833
The fix is to set local-space Limit Rotation constraints to use the
legacy behavior from pre-4.2. The legacy behavior isn't meaningful/
useful for other spaces, so we leave those constraints alone.
This is one part of a two-part fix for blender/blender#123105. The other part
is blender/blender#123361, which adds the Legacy Behavior option to the Limit
Rotation constraint.
Reviewed-on: https://projects.blender.org/extensions/rigify/pulls/4
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
Move Rigify from the external add-ons repository into
`scripts/addons_core`.
This commit adds Rigify, from the latest revision in [the add-ons
repo][addons]. It contains work by the following authors:
202 Alexander Gavrilov
67 Campbell Barton
58 Nathan Vegdahl
31 Lucio Rossi
24 Demeter Dzadik
10 Brecht Van Lommel
8 Dalai Felinto
7 Bastien Montagne
7 Sybren A. Stüvel
5 Damien Picard
4 meta-androcto
3 Ines Almeida
2 Jonathan Smith
2 ZanQdo
1 Aaron Carlisle
1 Andrej730
1 Hans Goudey
1 Luca Bonavita
1 Patrick Huang
1 Sergey Sharybin
1 Thomas Dinges
For the full history see the read-only [add-ons repository][addons].
Rigify has existed briefly as an extension on the extensions platform,
and commits were made to Rigify's extension repository (which is
different from the above-mentioned add-ons repository). That repository
will be deleted soon. Its commits that actually changed Rigify will be
committed as followups to this commit. Some commits were necessary to
turn the add-on into an extension; those will be ignored, as they're no
longer relevant.
[addons]: https://projects.blender.org/blender/blender-addons/src/rigify
Ref: !121825
Pull Request: https://projects.blender.org/blender/blender/pulls/123833
This was originally introduced on c6e452d865.
A subsequent Cleanup commit (c3d18854f3) changed this further,
increasing the gap a few extra pixels.
Since no functional/visual change should ever come with a cleanup commit
I'm treating this small regression as a bug, fixed by this commit.
There was something right about c3d18854f3, and one of the align=True
is indeed not needed.
In the case of user managed files we can't rely on paths to remove
being directories, they could be symbolic links as developers may point
to their own repository. While unlikely the paths to remove could
be files too.
Use a wrapper for shutil.rmtree(..) that handles symlinks & files,
use when removing paths that are expected to be directories from user
managed locations.
The extensions UI was aligning all buttons then adding a separator.
Simplify the layout by removing align which removes the need for an
explicit separator.
It was too easy to click on Install by mistake, while trying to click on
the "⌄" menu. This is particulary problematic since we enable add-ons by
default.
Co-authored by: Pablo Vazquez, based on (informal) report by Campbell Barton.
Add utility class to check extension visibility to remove
incomplete logic that was duplicated into operator code.
Also minor refactoring to reduce the number of arguments passed
to internal function.s
Disambiguate
- "Thickness": use "Material" for EEVEE's thickness material setting.
- "Generated": use "Texture" for texture coordinates, "Image" for
image source, keep default context for animation keyframe types.
Translate
- Split "Online access required to (check for|install) updates..."
into 2x2 messages individually translatable.
- "Geometry" input in bake node.
- "New" for the Palette ID: extract it as part of the
BLT_I18N_MSGID_MULTI_CTXT for "New".
Some issues reported by Gabriel Gazzán and Satoshi Yamasaki.
Pull Request: https://projects.blender.org/blender/blender/pulls/123404
This changes the sorting for the installed extensions.
- Update.
- Enable.
- A-Z.
Don't use A-Z for "Available" extensions to prevent name manipulation
to bring an extension up on the ranks.
Match the design of !123728, rewritten to support sorting across
multiple repositories and update tags which weren't handled in the PR.
Details:
- Remove the "Filter" popover & the option "Updates Available"
since updates are now shown first.
- Add an iterator to for visible extensions to de-duplicate logic which
was copied for code that scanned for tags.
- Split out logic for drawing an extension into it's own function.
- Tags are now calculated based on visible extensions limited by search.
Provide a convenient way to access a writable directory for extensions.
This will typically be accessed via:
bpy.utils.extension_path_user(__package__, create=True)
This API is provided as some extensions on extensions.blender.org
are writing into the extensions own directory which is error prone:
- The extensions own directory is removed when upgrading.
- Users may not have write access to the extensions directory,
especially with "System" repositories which may be on shared network
drives for example.
These directories are only removed when:
- Uninstalling the extension.
- Removing the repository and its files.
Functionality from [0] to skip-saving remote repositories was only
applied when dropping extensions. Now this is done when installing
from the file selector too.
[0]: 9b7f2c9976
This changes the sorting for the installed extensions.
* Update
* Enable
* A-Z
We don't use A-Z for the Available one to prevent name manipulation to
bring an extension up on the ranks.
Pull Request: https://projects.blender.org/blender/blender/pulls/123728