diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 0d75b669d2..4d7d06a2c8 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -35,6 +35,12 @@ body:
label: Version
description: What version are you running? Look to OpenPype Tray
options:
+ - 3.15.8
+ - 3.15.8-nightly.3
+ - 3.15.8-nightly.2
+ - 3.15.8-nightly.1
+ - 3.15.7
+ - 3.15.7-nightly.3
- 3.15.7-nightly.2
- 3.15.7-nightly.1
- 3.15.6
@@ -129,12 +135,6 @@ body:
- 3.14.2-nightly.4
- 3.14.2-nightly.3
- 3.14.2-nightly.2
- - 3.14.2-nightly.1
- - 3.14.1
- - 3.14.1-nightly.4
- - 3.14.1-nightly.3
- - 3.14.1-nightly.2
- - 3.14.1-nightly.1
validations:
required: true
- type: dropdown
diff --git a/.gitignore b/.gitignore
index 18e7cd7bf2..50f52f65a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -112,3 +112,9 @@ tools/run_eventserver.*
tools/dev_*
.github_changelog_generator
+
+
+# Addons
+########
+/openpype/addons/*
+!/openpype/addons/README.md
diff --git a/.gitmodules b/.gitmodules
index fe93791c4e..4de92471f7 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,4 +4,7 @@
[submodule "tools/modules/powershell/PSWriteColor"]
path = tools/modules/powershell/PSWriteColor
- url = https://github.com/EvotecIT/PSWriteColor.git
\ No newline at end of file
+ url = https://github.com/EvotecIT/PSWriteColor.git
+[submodule "openpype/hosts/unreal/integration"]
+ path = openpype/hosts/unreal/integration
+ url = https://github.com/ynput/ayon-unreal-plugin.git
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 07c1e7d5fd..a33904735b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,601 @@
# Changelog
+## [3.15.8](https://github.com/ynput/OpenPype/tree/3.15.8)
+
+
+[Full Changelog](https://github.com/ynput/OpenPype/compare/3.15.7...3.15.8)
+
+### **π New features**
+
+
+
+Publisher: Show instances in report page #4915
+
+Show publish instances in report page. Also added basic log view with logs grouped by instance. Validation error detail now have 2 colums, one with erro details second with logs. Crashed state shows fast access to report action buttons. Success will show only logs. Publish frame is shrunked automatically on publish stop.
+
+
+___
+
+
+
+
+
+Fusion - Loader plugins updates #4920
+
+Update to some Fusion loader plugins:The sequence loader can now load footage from the image and online family.The FBX loader can now import all formats Fusions FBX node can read.You can now import the content of another workfile into your current comp with the workfile loader.
+
+
+___
+
+
+
+
+
+Fusion: deadline farm rendering #4955
+
+Enabling Fusion for deadline farm rendering.
+
+
+___
+
+
+
+
+
+AfterEffects: set frame range and resolution #4983
+
+Frame information (frame start, duration, fps) and resolution (width and height) is applied to selected composition from Asset Management System (Ftrack or DB) automatically when published instance is created.It is also possible explicitly propagate both values from DB to selected composition by newly added menu buttons.
+
+
+___
+
+
+
+
+
+Publish: Enhance automated publish plugin settings #4986
+
+Added plugins option to define settings category where to look for settings of a plugin and added public helper functions to apply settings `get_plugin_settings` and `apply_plugin_settings_automatically`.
+
+
+___
+
+
+
+### **π Enhancements**
+
+
+
+Load Rig References - Change Rig to Animation in Animation instance #4877
+
+We are using the template builder to build an animation scene. All the rig placeholders are imported correctly, but the automatically created animation instances retain the rig family in their names and subsets. In our example, we need animationMain instead of rigMain, because this name will be used in the following steps like lighting.Here is the result we need. I checked, and it's not a template builder problem, because even if I load a rig as a reference, the result is the same. For me, since we are in the animation instance, it makes more sense to have animation instead of rig in the name. The naming is just fine if we use create from the Openpype menu.
+
+
+___
+
+
+
+
+
+Enhancement: Resolve prelaunch code refactoring and update defaults #4916
+
+The main reason of this PR is wrong default settings in `openpype/settings/defaults/system_settings/applications.json` for Resolve host. The `bin` folder should not be a part of the macos and Linux `RESOLVE_PYTHON3_PATH` variable.The rest of this PR is some code cleanups for Resolve prelaunch hook to simplify further development.Also added a .gitignore for vscode workspace files.
+
+
+___
+
+
+
+
+
+Unreal: π move Unreal plugin to separate repository #4980
+
+To support Epic Marketplace have to move AYON Unreal integration plugins to separate repository. This is replacing current files with git submodule, so the change should be functionally without impact.New repository lives here: https://github.com/ynput/ayon-unreal-plugin
+
+
+___
+
+
+
+
+
+General: Lib code cleanup #5003
+
+Small cleanup in lib files in openpype.
+
+
+___
+
+
+
+
+
+Allow to open with djv by extension instead of representation name #5004
+
+Filter open in djv action by extension instead of representation.
+
+
+___
+
+
+
+
+
+DJV open action `extensions` as `set` #5005
+
+Change `extensions` attribute to `set`.
+
+
+___
+
+
+
+
+
+Nuke: extract thumbnail with multiple reposition nodes #5011
+
+Added support for multiple reposition nodes.
+
+
+___
+
+
+
+
+
+Enhancement: Improve logging levels and messages for artist facing publish reports #5018
+
+Tweak the logging levels and messages to try and only show those logs that an artist should see and could understand. Move anything that's slightly more involved into a "debug" message instead.
+
+
+___
+
+
+
+### **π Bug fixes**
+
+
+
+Bugfix/frame variable fix #4978
+
+Renamed variables to match OpenPype terminology to reduce confusion and add consistency.
+___
+
+
+
+
+
+Global: plugins cleanup plugin will leave beauty rendered files #4790
+
+Attempt to mark more files to be cleaned up explicitly in intermediate `renders` folder in work area for farm jobs.
+
+
+___
+
+
+
+
+
+Fix: Download last workfile doesn't work if not already downloaded #4942
+
+Some optimization condition is messing with the feature: if the published workfile is not already downloaded, it won't download it...
+
+
+___
+
+
+
+
+
+Unreal: Fix transform when loading layout to match existing assets #4972
+
+Fixed transform when loading layout to match existing assets.
+
+
+___
+
+
+
+
+
+fix the bug of fbx loaders in Max #4977
+
+bug fix of fbx loaders for not being able to parent to the CON instances while importing cameras(and models) which is published from other DCCs such as Maya.
+
+
+___
+
+
+
+
+
+AfterEffects: allow returning stub with not saved workfile #4984
+
+Allows to use Workfile app to Save first empty workfile.
+
+
+___
+
+
+
+
+
+Blender: Fix Alembic loading #4985
+
+Fixed problem occurring when trying to load an Alembic model in Blender.
+
+
+___
+
+
+
+
+
+Unreal: Addon Py2 compatibility #4994
+
+Fixed Python 2 compatibility of unreal addon.
+
+
+___
+
+
+
+
+
+Nuke: fixed missing files key in representation #4999
+
+Issue with missing keys once rendering target set to existing frames is fixed. Instance has to be evaluated in validation for missing files.
+
+
+___
+
+
+
+
+
+Unreal: Fix the frame range when loading camera #5002
+
+The keyframes of the camera, when loaded, were not using the correct frame range.
+
+
+___
+
+
+
+
+
+Fusion: fixing frame range targeting #5013
+
+Frame range targeting at Rendering instances is now following configured options.
+
+
+___
+
+
+
+
+
+Deadline: fix selection from multiple webservices #5015
+
+Multiple different DL webservice could be configured. First they must by configured in System Settings., then they could be configured per project in `project_settings/deadline/deadline_servers`.Only single webservice could be a target of publish though.
+
+
+___
+
+
+
+### **Merged pull requests**
+
+
+
+3dsmax: Refactored publish plugins to use proper implementation of pymxs #4988
+
+
+___
+
+
+
+
+
+
+## [3.15.7](https://github.com/ynput/OpenPype/tree/3.15.7)
+
+
+[Full Changelog](https://github.com/ynput/OpenPype/compare/3.15.6...3.15.7)
+
+### **π New features**
+
+
+
+Addons directory #4893
+
+This adds a directory for Addons, for easier distribution of studio specific code.
+
+
+___
+
+
+
+
+
+Kitsu - Add "image", "online" and "plate" to review families #4923
+
+This PR adds "image", "online" and "plate" to the review families so they also can be uploaded to Kitsu.It also adds the `Add review to Kitsu` tag to the default png review. Without it the user would manually need to add it for single image uploads to Kitsu and might confuse users (it confused me first for a while as movies did work).
+
+
+___
+
+
+
+
+
+Feature/remove and load inv action #4930
+
+Added the ability to remove and load a container, as a way to reset it.This can be useful in cases where a container breaks in a way that can be fixed by removing it, then reloading it.Also added the ability to add `InventoryAction` plugins by placing them in `openpype/plugins/inventory`.
+
+
+___
+
+
+
+### **π Enhancements**
+
+
+
+Load Rig References - Change Rig to Animation in Animation instance #4877
+
+We are using the template builder to build an animation scene. All the rig placeholders are imported correctly, but the automatically created animation instances retain the rig family in their names and subsets. In our example, we need animationMain instead of rigMain, because this name will be used in the following steps like lighting.Here is the result we need. I checked, and it's not a template builder problem, because even if I load a rig as a reference, the result is the same. For me, since we are in the animation instance, it makes more sense to have animation instead of rig in the name. The naming is just fine if we use create from the Openpype menu.
+
+
+___
+
+
+
+
+
+Maya template builder - preserve all references when importing a template #4797
+
+When building a template with Maya template builder, we import the template and also the references inside the template file. This causes some problems:
+- We cannot use the references to version assets imported by the template.
+- When we import the file, the internal reference files are also imported. As a side effect, Maya complains about a reference that no longer exists.`// Error: file: /xxx/maya/2023.3/linux/scripts/AETemplates/AEtransformRelated.mel line 58: Reference node 'turntable_mayaSceneMain_01_RN' is not associated with a reference file.`
+
+
+___
+
+
+
+
+
+Unreal: Renaming the integration plugin to Ayon. #4646
+
+Renamed the .h, and .cpp files to Ayon. Also renamed the classes to with the Ayon keyword.
+
+
+___
+
+
+
+
+
+3dsMax: render dialogue needs to be closed #4729
+
+Make sure the render setup dialog is in a closed state for the update of resolution and other render settings
+
+
+___
+
+
+
+
+
+Maya Template Builder - Remove default cameras from renderable cameras #4815
+
+When we build an asset workfile with build workfile from template inside Maya, we load our turntable camera. But then we end up with 2 renderables camera : **persp** the one imported from the template.We need to remove the **persp** camera (or any other default camera) from renderable cameras when building the work file.
+
+
+___
+
+
+
+
+
+Validators for Frame Range in Max #4914
+
+Switch Render Frame Range Type to 3 for specific ranges (initial setup for the range type is 4)Reset Frame Range will also set the frame range for render settingsRender Collector won't take the frame range from context data but take the range directly from render settingAdd validators for render frame range type and frame range respectively with repair action
+
+
+___
+
+
+
+
+
+Fusion: Saver creator settings #4943
+
+Adding Saver creator settings and enhanced rendering path with template.
+
+
+___
+
+
+
+
+
+General: Project Anatomy on creators #4962
+
+Anatomy object of current project is available on `CreateContext` and create plugins.
+
+
+___
+
+
+
+### **π Bug fixes**
+
+
+
+Maya: Validate shader name - OP-5903 #4971
+
+Running the plugin would error with:
+```
+// TypeError: 'str' object cannot be interpreted as an integer
+```Fixed and added setting `active`.
+
+
+___
+
+
+
+
+
+Houdini: Fix slow Houdini launch due to shelves generation #4829
+
+Shelf generation during Houdini startup would add an insane amount of delay for the Houdini UI to launch correctly. By deferring the shelf generation this takes away the 5+ minutes of delay for the Houdini UI to launch.
+
+
+___
+
+
+
+
+
+Fusion - Fixed "optional validation" #4912
+
+Added OptionalPyblishPluginMixin and is_active checks for all publish tools that should be optional
+
+
+___
+
+
+
+
+
+Bug: add missing `pyblish.util` import #4937
+
+remote publishing was missing import of `remote_publish`. This is adding it back.
+
+
+___
+
+
+
+
+
+Unreal: Fix missing 'object_path' property #4938
+
+Epic removed the `object_path` property from `AssetData`. This PR fixes usages of that property.Fixes #4936
+
+
+___
+
+
+
+
+
+Remove obsolete global validator #4939
+
+Removing `Validate Sequence Frames` validator from global plugins as it wasn't handling correctly many things and was by mistake enabled, breaking functionality on Deadline.
+
+
+___
+
+
+
+
+
+General: fix build_workfile get_linked_assets missing project_name arg #4940
+
+Linked assets collection don't work within `build_workfile` because `get_linked_assets` function call has a missing `project_name`argument.
+- Added the `project_name` arg to the `get_linked_assets` function call.
+
+
+___
+
+
+
+
+
+General: fix Scene Inventory switch version error dialog missing parent arg on init #4941
+
+QuickFix for the switch version error dialog to set inventory widget as parent.
+
+
+___
+
+
+
+
+
+Unreal: Fix camera frame range #4956
+
+Fix the frame range of the level sequence for the Camera in Unreal.
+
+
+___
+
+
+
+
+
+Unreal: Fix missing parameter when updating Alembic StaticMesh #4957
+
+Fix an error when updating an Alembic StaticMesh in Unreal, due to a missing parameter in a function call.
+
+
+___
+
+
+
+
+
+Unreal: Fix render extraction #4963
+
+Fix a problem with the extraction of renders in Unreal.
+
+
+___
+
+
+
+
+
+Unreal: Remove Python 3.8 syntax from addon #4965
+
+Removed Python 3.8 syntax from addon.
+
+
+___
+
+
+
+
+
+Ftrack: Fix editorial task creation #4966
+
+Fix key assignment on instance data during editorial publishing in ftrack hierarchy integration.
+
+
+___
+
+
+
+### **Merged pull requests**
+
+
+
+Add "shortcut" to Scripts Menu Definition #4927
+
+Add the possibility to associate a shorcut for an entry in the script menu definition with the key "shortcut"
+
+
+___
+
+
+
+
+
+
## [3.15.6](https://github.com/ynput/OpenPype/tree/3.15.6)
diff --git a/openpype/addons/README.md b/openpype/addons/README.md
new file mode 100644
index 0000000000..92b8b8c07c
--- /dev/null
+++ b/openpype/addons/README.md
@@ -0,0 +1,3 @@
+This directory is for storing external addons that needs to be included in the pipeline when distributed.
+
+The directory is ignored by Git, but included in the zip and installation files.
diff --git a/openpype/hosts/aftereffects/api/__init__.py b/openpype/hosts/aftereffects/api/__init__.py
index a7137ba8fb..28062cc35d 100644
--- a/openpype/hosts/aftereffects/api/__init__.py
+++ b/openpype/hosts/aftereffects/api/__init__.py
@@ -4,9 +4,8 @@ Anything that isn't defined here is INTERNAL and unreliable for external use.
"""
-from .launch_logic import (
+from .ws_stub import (
get_stub,
- stub,
)
from .pipeline import (
@@ -18,7 +17,8 @@ from .pipeline import (
from .lib import (
maintained_selection,
get_extension_manifest_path,
- get_asset_settings
+ get_asset_settings,
+ set_settings
)
from .plugin import (
@@ -27,9 +27,8 @@ from .plugin import (
__all__ = [
- # launch_logic
+ # ws_stub
"get_stub",
- "stub",
# pipeline
"ls",
@@ -39,6 +38,7 @@ __all__ = [
"maintained_selection",
"get_extension_manifest_path",
"get_asset_settings",
+ "set_settings",
# plugin
"AfterEffectsLoader"
diff --git a/openpype/hosts/aftereffects/api/extension.zxp b/openpype/hosts/aftereffects/api/extension.zxp
index b436f0ca0b..50fda416f8 100644
Binary files a/openpype/hosts/aftereffects/api/extension.zxp and b/openpype/hosts/aftereffects/api/extension.zxp differ
diff --git a/openpype/hosts/aftereffects/api/extension/CSXS/manifest.xml b/openpype/hosts/aftereffects/api/extension/CSXS/manifest.xml
index f96e80c503..9f65720ef0 100644
--- a/openpype/hosts/aftereffects/api/extension/CSXS/manifest.xml
+++ b/openpype/hosts/aftereffects/api/extension/CSXS/manifest.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/openpype/hosts/aftereffects/api/extension/index.html b/openpype/hosts/aftereffects/api/extension/index.html
index 52a7c4964f..291965559f 100644
--- a/openpype/hosts/aftereffects/api/extension/index.html
+++ b/openpype/hosts/aftereffects/api/extension/index.html
@@ -2,7 +2,7 @@
-
+
@@ -25,11 +25,11 @@
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
-
-
+
+
+
-
-
-
+
+
+
+
+
+
-
-
+
+
-
+
@@ -107,6 +143,6 @@
-
+
-
\ No newline at end of file
+