diff --git a/.all-contributorsrc b/.all-contributorsrc
index b30f3b2499..60812cdb3c 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1,6 +1,6 @@
{
"projectName": "OpenPype",
- "projectOwner": "pypeclub",
+ "projectOwner": "ynput",
"repoType": "github",
"repoHost": "https://github.com",
"files": [
@@ -319,8 +319,18 @@
"code",
"doc"
]
+ },
+ {
+ "login": "movalex",
+ "name": "Alexey Bogomolov",
+ "avatar_url": "https://avatars.githubusercontent.com/u/11698866?v=4",
+ "profile": "http://abogomolov.com",
+ "contributions": [
+ "code"
+ ]
}
],
"contributorsPerLine": 7,
- "skipCi": true
+ "skipCi": true,
+ "commitType": "docs"
}
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 96e768e420..0000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: bug
-assignees: ''
-
----
-**Running version**
-[ex. 3.14.1-nightly.2]
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Desktop (please complete the following information):**
- - OS: [e.g. windows]
- - Host: [e.g. Maya, Nuke, Houdini]
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 0000000000..2339ec878f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,183 @@
+name: Bug Report
+description: File a bug report
+title: 'Bug: '
+labels:
+ - 'type: bug'
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to fill out this bug report!
+ - type: checkboxes
+ attributes:
+ label: Is there an existing issue for this?
+ description: >-
+ Please search to see if an issue already exists for the bug you
+ encountered.
+ options:
+ - label: I have searched the existing issues
+ required: true
+ - type: textarea
+ attributes:
+ label: 'Current Behavior:'
+ description: A concise description of what you're experiencing.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: 'Expected Behavior:'
+ description: A concise description of what you expected to happen.
+ validations:
+ required: false
+ - type: dropdown
+ id: _version
+ attributes:
+ label: Version
+ description: What version are you running? Look to OpenPype Tray
+ options:
+ - 3.15.11-nightly.2
+ - 3.15.11-nightly.1
+ - 3.15.10
+ - 3.15.10-nightly.2
+ - 3.15.10-nightly.1
+ - 3.15.9
+ - 3.15.9-nightly.2
+ - 3.15.9-nightly.1
+ - 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
+ - 3.15.6-nightly.3
+ - 3.15.6-nightly.2
+ - 3.15.6-nightly.1
+ - 3.15.5
+ - 3.15.5-nightly.2
+ - 3.15.5-nightly.1
+ - 3.15.4
+ - 3.15.4-nightly.3
+ - 3.15.4-nightly.2
+ - 3.15.4-nightly.1
+ - 3.15.3
+ - 3.15.3-nightly.4
+ - 3.15.3-nightly.3
+ - 3.15.3-nightly.2
+ - 3.15.3-nightly.1
+ - 3.15.2
+ - 3.15.2-nightly.6
+ - 3.15.2-nightly.5
+ - 3.15.2-nightly.4
+ - 3.15.2-nightly.3
+ - 3.15.2-nightly.2
+ - 3.15.2-nightly.1
+ - 3.15.1
+ - 3.15.1-nightly.6
+ - 3.15.1-nightly.5
+ - 3.15.1-nightly.4
+ - 3.15.1-nightly.3
+ - 3.15.1-nightly.2
+ - 3.15.1-nightly.1
+ - 3.15.0
+ - 3.15.0-nightly.1
+ - 3.14.11-nightly.4
+ - 3.14.11-nightly.3
+ - 3.14.11-nightly.2
+ - 3.14.11-nightly.1
+ - 3.14.10
+ - 3.14.10-nightly.9
+ - 3.14.10-nightly.8
+ - 3.14.10-nightly.7
+ - 3.14.10-nightly.6
+ - 3.14.10-nightly.5
+ - 3.14.10-nightly.4
+ - 3.14.10-nightly.3
+ - 3.14.10-nightly.2
+ - 3.14.10-nightly.1
+ - 3.14.9
+ - 3.14.9-nightly.5
+ - 3.14.9-nightly.4
+ - 3.14.9-nightly.3
+ - 3.14.9-nightly.2
+ - 3.14.9-nightly.1
+ - 3.14.8
+ - 3.14.8-nightly.4
+ - 3.14.8-nightly.3
+ - 3.14.8-nightly.2
+ - 3.14.8-nightly.1
+ - 3.14.7
+ - 3.14.7-nightly.8
+ - 3.14.7-nightly.7
+ - 3.14.7-nightly.6
+ - 3.14.7-nightly.5
+ - 3.14.7-nightly.4
+ - 3.14.7-nightly.3
+ - 3.14.7-nightly.2
+ - 3.14.7-nightly.1
+ - 3.14.6
+ - 3.14.6-nightly.3
+ - 3.14.6-nightly.2
+ - 3.14.6-nightly.1
+ - 3.14.5
+ - 3.14.5-nightly.3
+ - 3.14.5-nightly.2
+ - 3.14.5-nightly.1
+ - 3.14.4
+ - 3.14.4-nightly.4
+ - 3.14.4-nightly.3
+ - 3.14.4-nightly.2
+ - 3.14.4-nightly.1
+ - 3.14.3
+ - 3.14.3-nightly.7
+ - 3.14.3-nightly.6
+ - 3.14.3-nightly.5
+ - 3.14.3-nightly.4
+ validations:
+ required: true
+ - type: dropdown
+ validations:
+ required: true
+ attributes:
+ label: What platform you are running OpenPype on?
+ description: |
+ Please specify the operating systems you are running OpenPype with.
+ multiple: true
+ options:
+ - Windows
+ - Linux / Centos
+ - Linux / Ubuntu
+ - Linux / RedHat
+ - MacOS
+ - type: textarea
+ id: to-reproduce
+ attributes:
+ label: 'Steps To Reproduce:'
+ description: Steps to reproduce the behavior.
+ placeholder: |
+ 1. How did the configuration look like
+ 2. What type of action was made
+ validations:
+ required: true
+ - type: checkboxes
+ attributes:
+ label: Are there any labels you wish to add?
+ description: Please search labels and identify those related to your bug.
+ options:
+ - label: I have added the relevant labels to the bug report.
+ required: true
+ - type: textarea
+ id: logs
+ attributes:
+ label: 'Relevant log output:'
+ description: >-
+ Please copy and paste any relevant log output. This will be
+ automatically formatted into code, so no need for backticks.
+ render: shell
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: 'Additional context:'
+ description: Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000..cc61bfd04a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Ynput Community Discussions
+ url: https://community.ynput.io
+ about: Please ask and answer questions here.
+ - name: Ynput Discord Server
+ url: https://discord.gg/ynput
+ about: For community quick chats.
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/enhancement_request.yml b/.github/ISSUE_TEMPLATE/enhancement_request.yml
new file mode 100644
index 0000000000..52b49e0481
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/enhancement_request.yml
@@ -0,0 +1,52 @@
+name: Enhancement Request
+description: Create a report to help us enhance a particular feature
+title: "Enhancement: "
+labels:
+ - "type: enhancement"
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for taking the time to fill out this enhancement request report!
+ - type: checkboxes
+ attributes:
+ label: Is there an existing issue for this?
+ description: Please search to see if an issue already exists for the bug you encountered.
+ options:
+ - label: I have searched the existing issues.
+ required: true
+ - type: textarea
+ id: related-feature
+ attributes:
+ label: Please describe the feature you have in mind and explain what the current shortcomings are?
+ description: A clear and concise description of what the problem is.
+ validations:
+ required: true
+ - type: textarea
+ id: enhancement-proposal
+ attributes:
+ label: How would you imagine the implementation of the feature?
+ description: A clear and concise description of what you want to happen.
+ validations:
+ required: true
+ - type: checkboxes
+ attributes:
+ label: Are there any labels you wish to add?
+ description: Please search labels and identify those related to your enhancement.
+ options:
+ - label: I have added the relevant labels to the enhancement request.
+ required: true
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: "Describe alternatives you've considered:"
+ description: A clear and concise description of any alternative solutions or features you've considered.
+ validations:
+ required: false
+ - type: textarea
+ id: additional-context
+ attributes:
+ label: "Additional context:"
+ description: Add any other context or screenshots about the enhancement request here.
+ validations:
+ required: false
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 11fc491ef1..0000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: enhancement
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/.github/pr-branch-labeler.yml b/.github/pr-branch-labeler.yml
new file mode 100644
index 0000000000..b434326236
--- /dev/null
+++ b/.github/pr-branch-labeler.yml
@@ -0,0 +1,15 @@
+# Apply label "feature" if head matches "feature/*"
+'type: feature':
+ head: "feature/*"
+
+# Apply label "feature" if head matches "feature/*"
+'type: enhancement':
+ head: "enhancement/*"
+
+# Apply label "bugfix" if head matches one of "bugfix/*" or "hotfix/*"
+'type: bug':
+ head: ["bugfix/*", "hotfix/*"]
+
+# Apply label "release" if base matches "release/*"
+'Bump Minor':
+ base: "release/next-minor"
diff --git a/.github/pr-glob-labeler.yml b/.github/pr-glob-labeler.yml
new file mode 100644
index 0000000000..286e7768b5
--- /dev/null
+++ b/.github/pr-glob-labeler.yml
@@ -0,0 +1,102 @@
+# Add type: unittest label if any changes in tests folders
+'type: unittest':
+- '*/*tests*/**/*'
+
+# any changes in documentation structure
+'type: documentation':
+- '*/**/*website*/**/*'
+- '*/**/*docs*/**/*'
+
+# hosts triage
+'host: Nuke':
+- '*/**/*nuke*'
+- '*/**/*nuke*/**/*'
+
+'host: Photoshop':
+- '*/**/*photoshop*'
+- '*/**/*photoshop*/**/*'
+
+'host: Harmony':
+- '*/**/*harmony*'
+- '*/**/*harmony*/**/*'
+
+'host: UE':
+- '*/**/*unreal*'
+- '*/**/*unreal*/**/*'
+
+'host: Houdini':
+- '*/**/*houdini*'
+- '*/**/*houdini*/**/*'
+
+'host: Maya':
+- '*/**/*maya*'
+- '*/**/*maya*/**/*'
+
+'host: Resolve':
+- '*/**/*resolve*'
+- '*/**/*resolve*/**/*'
+
+'host: Blender':
+- '*/**/*blender*'
+- '*/**/*blender*/**/*'
+
+'host: Hiero':
+- '*/**/*hiero*'
+- '*/**/*hiero*/**/*'
+
+'host: Fusion':
+- '*/**/*fusion*'
+- '*/**/*fusion*/**/*'
+
+'host: Flame':
+- '*/**/*flame*'
+- '*/**/*flame*/**/*'
+
+'host: TrayPublisher':
+- '*/**/*traypublisher*'
+- '*/**/*traypublisher*/**/*'
+
+'host: 3dsmax':
+- '*/**/*max*'
+- '*/**/*max*/**/*'
+
+'host: TV Paint':
+- '*/**/*tvpaint*'
+- '*/**/*tvpaint*/**/*'
+
+'host: CelAction':
+- '*/**/*celaction*'
+- '*/**/*celaction*/**/*'
+
+'host: After Effects':
+- '*/**/*aftereffects*'
+- '*/**/*aftereffects*/**/*'
+
+'host: Substance Painter':
+- '*/**/*substancepainter*'
+- '*/**/*substancepainter*/**/*'
+
+# modules triage
+'module: Deadline':
+- '*/**/*deadline*'
+- '*/**/*deadline*/**/*'
+
+'module: RoyalRender':
+- '*/**/*royalrender*'
+- '*/**/*royalrender*/**/*'
+
+'module: Sitesync':
+- '*/**/*sync_server*'
+- '*/**/*sync_server*/**/*'
+
+'module: Ftrack':
+- '*/**/*ftrack*'
+- '*/**/*ftrack*/**/*'
+
+'module: Shotgrid':
+- '*/**/*shotgrid*'
+- '*/**/*shotgrid*/**/*'
+
+'module: Kitsu':
+- '*/**/*kitsu*'
+- '*/**/*kitsu*/**/*'
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 20ae298f70..2adaffd23d 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,16 +1,9 @@
-## Brief description
-First sentence is brief description.
-
-## Description
-Next paragraf is more elaborate text with more info. This will be displayed for example in collapsed form under the first sentence in a changelog.
+## Changelog Description
+Paragraphs contain detailed information on the changes made to the product or service, providing an in-depth description of the updates and enhancements. They can be used to explain the reasoning behind the changes, or to highlight the importance of the new features. Paragraphs can often include links to further information or support documentation.
## Additional info
-The rest will be ignored in changelog and should contain any additional
-technical information.
-
-## Documentation (add _"type: documentation"_ label)
-[feature_documentation](future_url_after_it_will_be_merged)
+Paragraphs of text giving context of additional technical information or code examples.
## Testing notes:
1. start with this step
-2. follow this step
\ No newline at end of file
+2. follow this step
diff --git a/.github/workflows/automate-projects.yml b/.github/workflows/automate-projects.yml
deleted file mode 100644
index b605071c2d..0000000000
--- a/.github/workflows/automate-projects.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-name: Automate Projects
-
-on:
- issues:
- types: [opened, labeled]
-env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
-jobs:
- assign_one_project:
- runs-on: ubuntu-latest
- name: Assign to One Project
- steps:
- - name: Assign NEW bugs to triage
- uses: srggrs/assign-one-project-github-action@1.2.0
- if: contains(github.event.issue.labels.*.name, 'bug')
- with:
- project: 'https://github.com/pypeclub/pype/projects/2'
- column_name: 'Needs triage'
diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml
index f78e95528f..f2e7d1058f 100644
--- a/.github/workflows/documentation.yml
+++ b/.github/workflows/documentation.yml
@@ -1,4 +1,4 @@
-name: documentation
+name: ๐ Documentation
on:
pull_request:
diff --git a/.github/workflows/milestone_assign.yml b/.github/workflows/milestone_assign.yml
index 4b52dfc30d..df4625c225 100644
--- a/.github/workflows/milestone_assign.yml
+++ b/.github/workflows/milestone_assign.yml
@@ -1,4 +1,4 @@
-name: Milestone - assign to PRs
+name: ๐๐ป Milestone - assign to PRs
on:
pull_request_target:
@@ -13,7 +13,7 @@ jobs:
if: github.event.pull_request.milestone == null
uses: zoispag/action-assign-milestone@v1
with:
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
+ repo-token: "${{ secrets.YNPUT_BOT_TOKEN }}"
milestone: 'next-minor'
run_if_develop:
@@ -24,5 +24,5 @@ jobs:
if: github.event.pull_request.milestone == null
uses: zoispag/action-assign-milestone@v1
with:
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
- milestone: 'next-patch'
\ No newline at end of file
+ repo-token: "${{ secrets.YNPUT_BOT_TOKEN }}"
+ milestone: 'next-patch'
diff --git a/.github/workflows/milestone_create.yml b/.github/workflows/milestone_create.yml
index b56ca81dc1..437c9e31b4 100644
--- a/.github/workflows/milestone_create.yml
+++ b/.github/workflows/milestone_create.yml
@@ -1,4 +1,4 @@
-name: Milestone - create default
+name: โ Milestone - create default
on:
milestone:
@@ -12,7 +12,7 @@ jobs:
uses: "WyriHaximus/github-action-get-milestones@master"
id: milestones
env:
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ GITHUB_TOKEN: "${{ secrets.YNPUT_BOT_TOKEN }}"
- run: printf "name=number::%s" $(printenv MILESTONES | jq --arg MILESTONE $(printenv MILESTONE) '.[] | select(.title == $MILESTONE) | .number')
id: querymilestone
@@ -31,7 +31,7 @@ jobs:
with:
title: 'next-patch'
env:
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ GITHUB_TOKEN: "${{ secrets.YNPUT_BOT_TOKEN }}"
generate-next-minor:
runs-on: ubuntu-latest
@@ -40,7 +40,7 @@ jobs:
uses: "WyriHaximus/github-action-get-milestones@master"
id: milestones
env:
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+ GITHUB_TOKEN: "${{ secrets.YNPUT_BOT_TOKEN }}"
- run: printf "name=number::%s" $(printenv MILESTONES | jq --arg MILESTONE $(printenv MILESTONE) '.[] | select(.title == $MILESTONE) | .number')
id: querymilestone
@@ -59,4 +59,4 @@ jobs:
with:
title: 'next-minor'
env:
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
\ No newline at end of file
+ GITHUB_TOKEN: "${{ secrets.YNPUT_BOT_TOKEN }}"
diff --git a/.github/workflows/miletone_release_trigger.yml b/.github/workflows/miletone_release_trigger.yml
new file mode 100644
index 0000000000..4a031be7f9
--- /dev/null
+++ b/.github/workflows/miletone_release_trigger.yml
@@ -0,0 +1,50 @@
+name: ๐ฉ Milestone Release [trigger]
+
+on:
+ workflow_dispatch:
+ inputs:
+ milestone:
+ required: true
+ release-type:
+ type: choice
+ description: What release should be created
+ options:
+ - release
+ - pre-release
+ milestone:
+ types: closed
+
+
+jobs:
+ milestone-title:
+ runs-on: ubuntu-latest
+ outputs:
+ milestone: ${{ steps.milestoneTitle.outputs.value }}
+ steps:
+ - name: Switch input milestone
+ uses: haya14busa/action-cond@v1
+ id: milestoneTitle
+ with:
+ cond: ${{ inputs.milestone == '' }}
+ if_true: ${{ github.event.milestone.title }}
+ if_false: ${{ inputs.milestone }}
+ - name: Print resulted milestone
+ run: |
+ echo "${{ steps.milestoneTitle.outputs.value }}"
+
+ call-ci-tools-milestone-release:
+ needs: milestone-title
+ uses: ynput/ci-tools/.github/workflows/milestone_release_ref.yml@main
+ with:
+ milestone: ${{ needs.milestone-title.outputs.milestone }}
+ repo-owner: ${{ github.event.repository.owner.login }}
+ repo-name: ${{ github.event.repository.name }}
+ version-py-path: "./openpype/version.py"
+ pyproject-path: "./pyproject.toml"
+ secrets:
+ token: ${{ secrets.YNPUT_BOT_TOKEN }}
+ user_email: ${{ secrets.CI_EMAIL }}
+ user_name: ${{ secrets.CI_USER }}
+ cu_api_key: ${{ secrets.CLICKUP_API_KEY }}
+ cu_team_id: ${{ secrets.CLICKUP_TEAM_ID }}
+ cu_field_id: ${{ secrets.CLICKUP_RELEASE_FIELD_ID }}
diff --git a/.github/workflows/nightly_merge.yml b/.github/workflows/nightly_merge.yml
index 1d36c89cc7..3f8c75dce3 100644
--- a/.github/workflows/nightly_merge.yml
+++ b/.github/workflows/nightly_merge.yml
@@ -1,4 +1,4 @@
-name: Dev -> Main
+name: ๐ Dev -> Main
on:
schedule:
@@ -14,10 +14,10 @@ jobs:
- name: ๐ Checkout Code
uses: actions/checkout@v2
- - name: ๐จ Merge develop to main
+ - name: ๐จ Merge develop to main
uses: everlytic/branch-merge@1.1.0
with:
- github_token: ${{ secrets.ADMIN_TOKEN }}
+ github_token: ${{ secrets.YNPUT_BOT_TOKEN }}
source_ref: 'develop'
target_branch: 'main'
commit_message_template: '[Automated] Merged {source_ref} into {target_branch}'
@@ -25,5 +25,5 @@ jobs:
- name: Invoke pre-release workflow
uses: benc-uk/workflow-dispatch@v1
with:
- workflow: Nightly Prerelease
- token: ${{ secrets.ADMIN_TOKEN }}
\ No newline at end of file
+ workflow: prerelease.yml
+ token: ${{ secrets.YNPUT_BOT_TOKEN }}
diff --git a/.github/workflows/pr_labels.yml b/.github/workflows/pr_labels.yml
new file mode 100644
index 0000000000..ecc95051aa
--- /dev/null
+++ b/.github/workflows/pr_labels.yml
@@ -0,0 +1,49 @@
+name: ๐ PR labels
+
+on:
+ pull_request_target:
+ types: [opened, assigned]
+
+jobs:
+ size-label:
+ name: pr_size_label
+ runs-on: ubuntu-latest
+ if: github.event.action == 'assigned' || github.event.action == 'opened'
+ steps:
+ - name: Add size label
+ uses: "pascalgn/size-label-action@v0.4.3"
+ env:
+ GITHUB_TOKEN: "${{ secrets.YNPUT_BOT_TOKEN }}"
+ IGNORED: ".gitignore\n*.md\n*.json"
+ with:
+ sizes: >
+ {
+ "0": "XS",
+ "100": "S",
+ "500": "M",
+ "1000": "L",
+ "1500": "XL",
+ "2500": "XXL"
+ }
+
+ label_prs_branch:
+ name: pr_branch_label
+ runs-on: ubuntu-latest
+ if: github.event.action == 'assigned' || github.event.action == 'opened'
+ steps:
+ - name: Label PRs - Branch name detection
+ uses: ffittschen/pr-branch-labeler@v1
+ with:
+ repo-token: ${{ secrets.YNPUT_BOT_TOKEN }}
+
+ label_prs_globe:
+ name: pr_globe_label
+ runs-on: ubuntu-latest
+ if: github.event.action == 'assigned' || github.event.action == 'opened'
+ steps:
+ - name: Label PRs - Globe detection
+ uses: actions/labeler@v4.0.3
+ with:
+ repo-token: ${{ secrets.YNPUT_BOT_TOKEN }}
+ configuration-path: ".github/pr-glob-labeler.yml"
+ sync-labels: false
diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml
index 078f6c85bb..8c5c733c08 100644
--- a/.github/workflows/prerelease.yml
+++ b/.github/workflows/prerelease.yml
@@ -1,4 +1,4 @@
-name: Nightly Prerelease
+name: โณ Nightly Prerelease
on:
workflow_dispatch:
@@ -17,7 +17,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v2
with:
- python-version: 3.7
+ python-version: 3.9
- name: Install Python requirements
run: pip install gitpython semver PyGithub
@@ -25,43 +25,15 @@ jobs:
- name: ๐ Determine next version type
id: version_type
run: |
- TYPE=$(python ./tools/ci_tools.py --bump --github_token ${{ secrets.GITHUB_TOKEN }})
-
- echo ::set-output name=type::$TYPE
+ TYPE=$(python ./tools/ci_tools.py --bump --github_token ${{ secrets.YNPUT_BOT_TOKEN }})
+ echo "type=${TYPE}" >> $GITHUB_OUTPUT
- name: ๐ Inject new version into files
id: version
if: steps.version_type.outputs.type != 'skip'
run: |
- RESULT=$(python ./tools/ci_tools.py --nightly --github_token ${{ secrets.GITHUB_TOKEN }})
-
- echo ::set-output name=next_tag::$RESULT
-
- # - name: "โ๏ธ Generate full changelog"
- # if: steps.version_type.outputs.type != 'skip'
- # id: generate-full-changelog
- # uses: heinrichreimer/github-changelog-generator-action@v2.3
- # with:
- # token: ${{ secrets.ADMIN_TOKEN }}
- # addSections: '{"documentation":{"prefix":"### ๐ Documentation","labels":["type: documentation"]},"tests":{"prefix":"### โ
Testing","labels":["tests"]},"feature":{"prefix":"**๐ New features**", "labels":["type: feature"]},"breaking":{"prefix":"**๐ฅ Breaking**", "labels":["breaking"]},"enhancements":{"prefix":"**๐ Enhancements**", "labels":["type: enhancement"]},"bugs":{"prefix":"**๐ Bug fixes**", "labels":["type: bug"]},"deprecated":{"prefix":"**โ ๏ธ Deprecations**", "labels":["depreciated"]}, "refactor":{"prefix":"**๐ Refactored code**", "labels":["refactor"]}}'
- # issues: false
- # issuesWoLabels: false
- # sinceTag: "3.12.0"
- # maxIssues: 100
- # pullRequests: true
- # prWoLabels: false
- # author: false
- # unreleased: true
- # compareLink: true
- # stripGeneratorNotice: true
- # verbose: true
- # unreleasedLabel: ${{ steps.version.outputs.next_tag }}
- # excludeTagsRegex: "CI/.+"
- # releaseBranch: "main"
-
- - name: "๐จ๏ธ Print changelog to console"
- if: steps.version_type.outputs.type != 'skip'
- run: cat CHANGELOG.md
+ NEW_VERSION_TAG=$(python ./tools/ci_tools.py --nightly --github_token ${{ secrets.YNPUT_BOT_TOKEN }})
+ echo "next_tag=${NEW_VERSION_TAG}" >> $GITHUB_OUTPUT
- name: ๐พ Commit and Tag
id: git_commit
@@ -80,7 +52,7 @@ jobs:
- name: Push to protected main branch
uses: CasperWA/push-protected@v2.10.0
with:
- token: ${{ secrets.ADMIN_TOKEN }}
+ token: ${{ secrets.YNPUT_BOT_TOKEN }}
branch: main
tags: true
unprotect_reviews: true
@@ -89,7 +61,13 @@ jobs:
uses: everlytic/branch-merge@1.1.0
if: steps.version_type.outputs.type != 'skip'
with:
- github_token: ${{ secrets.ADMIN_TOKEN }}
+ github_token: ${{ secrets.YNPUT_BOT_TOKEN }}
source_ref: 'main'
target_branch: 'develop'
commit_message_template: '[Automated] Merged {source_ref} into {target_branch}'
+
+ - name: Invoke Update bug report workflow
+ uses: benc-uk/workflow-dispatch@v1
+ with:
+ workflow: update_bug_report.yml
+ token: ${{ secrets.YNPUT_BOT_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/project_task_statuses.yml b/.github/workflows/project_task_statuses.yml
new file mode 100644
index 0000000000..d078c08b70
--- /dev/null
+++ b/.github/workflows/project_task_statuses.yml
@@ -0,0 +1,70 @@
+name: ๐ Project task statuses
+
+on:
+ pull_request_review:
+ types: [submitted]
+ issue_comment:
+ types: [created]
+ pull_request_review_comment:
+ types: [created]
+
+jobs:
+
+ pr_review_started:
+ name: pr_review_started
+ runs-on: ubuntu-latest
+ # -----------------------------
+ # conditions are:
+ # - PR issue comment which is not form Ynbot
+ # - PR review comment which is not Hound (or any other bot)
+ # - PR review submitted which is not from Hound (or any other bot) and is not 'Changes requested'
+ # - make sure it only runs if not forked repo
+ # -----------------------------
+ if: |
+ (github.event_name == 'issue_comment' && github.event.pull_request.head.repo.owner.login == 'ynput' && github.event.comment.user.id != 82967070) ||
+ (github.event_name == 'pull_request_review_comment' && github.event.pull_request.head.repo.owner.login == 'ynput' && github.event.comment.user.type != 'Bot') ||
+ (github.event_name == 'pull_request_review' &&
+ github.event.pull_request.head.repo.owner.login == 'ynput' &&
+ github.event.review.state != 'changes_requested' &&
+ github.event.review.state != 'approved' &&
+ github.event.review.user.type != 'Bot')
+ steps:
+ - name: Move PR to 'Review In Progress'
+ uses: leonsteinhaeuser/project-beta-automations@v2.1.0
+ with:
+ gh_token: ${{ secrets.YNPUT_BOT_TOKEN }}
+ organization: ynput
+ project_id: 11
+ resource_node_id: ${{ github.event.pull_request.node_id || github.event.issue.node_id }}
+ status_value: Review In Progress
+
+ pr_review_requested:
+ # -----------------------------
+ # Resets Clickup Task status to 'In Progress' after 'Changes Requested' were submitted to PR
+ # It only runs if custom clickup task id was found in ref branch of PR
+ # -----------------------------
+ name: pr_review_requested
+ runs-on: ubuntu-latest
+ if: github.event_name == 'pull_request_review' && github.event.pull_request.head.repo.owner.login == 'ynput' && github.event.review.state == 'changes_requested'
+ steps:
+ - name: Set branch env
+ run: echo "BRANCH_NAME=${{ github.event.pull_request.head.ref}}" >> $GITHUB_ENV
+ - name: Get ClickUp ID from ref head name
+ id: get_cuID
+ run: |
+ echo ${{ env.BRANCH_NAME }}
+ echo "cuID=$(echo $BRANCH_NAME | sed 's/.*\/\(OP\-[0-9]\{4\}\).*/\1/')" >> $GITHUB_OUTPUT
+
+ - name: Print ClickUp ID
+ run: echo ${{ steps.get_cuID.outputs.cuID }}
+
+ - name: Move found Clickup task to 'Review in Progress'
+ if: steps.get_cuID.outputs.cuID
+ run: |
+ curl -i -X PUT \
+ 'https://api.clickup.com/api/v2/task/${{ steps.get_cuID.outputs.cuID }}?custom_task_ids=true&team_id=${{secrets.CLICKUP_TEAM_ID}}' \
+ -H 'Authorization: ${{secrets.CLICKUP_API_KEY}}' \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "status": "in progress"
+ }'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index 754f3d32d6..0000000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,124 +0,0 @@
-name: Stable Release
-
-on:
- release:
- types:
- - prereleased
-
-jobs:
- create_release:
- runs-on: ubuntu-latest
- if: github.actor != 'pypebot'
-
- steps:
- - name: ๐ Checkout Code
- uses: actions/checkout@v2
- with:
- fetch-depth: 0
-
- - name: Set up Python
- uses: actions/setup-python@v2
- with:
- python-version: 3.7
- - name: Install Python requirements
- run: pip install gitpython semver PyGithub
-
- - name: ๐ Inject new version into files
- id: version
- run: |
- echo ::set-output name=current_version::${GITHUB_REF#refs/*/}
- RESULT=$(python ./tools/ci_tools.py --finalize ${GITHUB_REF#refs/*/})
- LASTRELEASE=$(python ./tools/ci_tools.py --lastversion release)
-
- echo ::set-output name=last_release::$LASTRELEASE
- echo ::set-output name=release_tag::$RESULT
-
- # - name: "โ๏ธ Generate full changelog"
- # if: steps.version.outputs.release_tag != 'skip'
- # id: generate-full-changelog
- # uses: heinrichreimer/github-changelog-generator-action@v2.3
- # with:
- # token: ${{ secrets.ADMIN_TOKEN }}
- # addSections: '{"documentation":{"prefix":"### ๐ Documentation","labels":["type: documentation"]},"tests":{"prefix":"### โ
Testing","labels":["tests"]},"feature":{"prefix":"**๐ New features**", "labels":["type: feature"]},"breaking":{"prefix":"**๐ฅ Breaking**", "labels":["breaking"]},"enhancements":{"prefix":"**๐ Enhancements**", "labels":["type: enhancement"]},"bugs":{"prefix":"**๐ Bug fixes**", "labels":["type: bug"]},"deprecated":{"prefix":"**โ ๏ธ Deprecations**", "labels":["depreciated"]}, "refactor":{"prefix":"**๐ Refactored code**", "labels":["refactor"]}}'
- # issues: false
- # issuesWoLabels: false
- # sinceTag: "3.12.0"
- # maxIssues: 100
- # pullRequests: true
- # prWoLabels: false
- # author: false
- # unreleased: true
- # compareLink: true
- # stripGeneratorNotice: true
- # verbose: true
- # futureRelease: ${{ steps.version.outputs.release_tag }}
- # excludeTagsRegex: "CI/.+"
- # releaseBranch: "main"
-
- - name: ๐พ Commit and Tag
- id: git_commit
- if: steps.version.outputs.release_tag != 'skip'
- run: |
- git config user.email ${{ secrets.CI_EMAIL }}
- git config user.name ${{ secrets.CI_USER }}
- git add .
- git commit -m "[Automated] Release"
- tag_name="${{ steps.version.outputs.release_tag }}"
- git tag -a $tag_name -m "stable release"
-
- - name: ๐ Push to protected main branch
- if: steps.version.outputs.release_tag != 'skip'
- uses: CasperWA/push-protected@v2.10.0
- with:
- token: ${{ secrets.ADMIN_TOKEN }}
- branch: main
- tags: true
- unprotect_reviews: true
-
- - name: "โ๏ธ Generate last changelog"
- if: steps.version.outputs.release_tag != 'skip'
- id: generate-last-changelog
- uses: heinrichreimer/github-changelog-generator-action@v2.2
- with:
- token: ${{ secrets.ADMIN_TOKEN }}
- addSections: '{"documentation":{"prefix":"### ๐ Documentation","labels":["type: documentation"]},"tests":{"prefix":"### โ
Testing","labels":["tests"]},"feature":{"prefix":"**๐ New features**", "labels":["type: feature"]},"breaking":{"prefix":"**๐ฅ Breaking**", "labels":["breaking"]},"enhancements":{"prefix":"**๐ Enhancements**", "labels":["type: enhancement"]},"bugs":{"prefix":"**๐ Bug fixes**", "labels":["type: bug"]},"deprecated":{"prefix":"**โ ๏ธ Deprecations**", "labels":["depreciated"]}, "refactor":{"prefix":"**๐ Refactored code**", "labels":["refactor"]}}'
- issues: false
- issuesWoLabels: false
- sinceTag: ${{ steps.version.outputs.last_release }}
- maxIssues: 100
- pullRequests: true
- prWoLabels: false
- author: false
- unreleased: true
- compareLink: true
- stripGeneratorNotice: true
- verbose: true
- futureRelease: ${{ steps.version.outputs.release_tag }}
- excludeTagsRegex: "CI/.+"
- releaseBranch: "main"
- stripHeaders: true
- base: 'none'
-
-
- - name: ๐ Github Release
- if: steps.version.outputs.release_tag != 'skip'
- uses: ncipollo/release-action@v1
- with:
- body: ${{ steps.generate-last-changelog.outputs.changelog }}
- tag: ${{ steps.version.outputs.release_tag }}
- token: ${{ secrets.ADMIN_TOKEN }}
-
- - name: โ Delete Pre-release
- if: steps.version.outputs.release_tag != 'skip'
- uses: cb80/delrel@latest
- with:
- tag: "${{ steps.version.outputs.current_version }}"
-
- - name: ๐ Merge main back to develop
- if: steps.version.outputs.release_tag != 'skip'
- uses: everlytic/branch-merge@1.1.0
- with:
- github_token: ${{ secrets.ADMIN_TOKEN }}
- source_ref: 'main'
- target_branch: 'develop'
- commit_message_template: '[Automated] Merged release {source_ref} into {target_branch}'
diff --git a/.github/workflows/test_build.yml b/.github/workflows/test_build.yml
index ac7279117a..fd8e0e642d 100644
--- a/.github/workflows/test_build.yml
+++ b/.github/workflows/test_build.yml
@@ -1,7 +1,7 @@
# This workflow will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
-name: Test Build
+name: ๐๏ธ Test Build
on:
pull_request:
@@ -18,7 +18,7 @@ jobs:
runs-on: windows-latest
strategy:
matrix:
- python-version: [3.7]
+ python-version: [3.9]
steps:
- name: ๐ Checkout Code
@@ -28,7 +28,7 @@ jobs:
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
-
+
- name: ๐งต Install Requirements
shell: pwsh
run: |
@@ -45,7 +45,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- python-version: [3.7]
+ python-version: [3.9]
steps:
- name: ๐ Checkout Code
@@ -64,27 +64,3 @@ jobs:
run: |
export SKIP_THIRD_PARTY_VALIDATION="1"
./tools/build.sh
-
- # MacOS-latest:
-
- # runs-on: macos-latest
- # strategy:
- # matrix:
- # python-version: [3.7]
-
- # steps:
- # - name: ๐ Checkout Code
- # uses: actions/checkout@v2
-
- # - name: Set up Python
- # uses: actions/setup-python@v2
- # with:
- # python-version: ${{ matrix.python-version }}
-
- # - name: ๐งต Install Requirements
- # run: |
- # ./tools/create_env.sh
-
- # - name: ๐จ Build
- # run: |
- # ./tools/build.sh
\ No newline at end of file
diff --git a/.github/workflows/update_bug_report.yml b/.github/workflows/update_bug_report.yml
new file mode 100644
index 0000000000..1e5da414bb
--- /dev/null
+++ b/.github/workflows/update_bug_report.yml
@@ -0,0 +1,33 @@
+name: ๐ Update Bug Report
+
+on:
+ workflow_dispatch:
+ release:
+ # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#release
+ types: [published]
+
+jobs:
+ update-bug-report:
+ runs-on: ubuntu-latest
+ name: Update bug report
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ ref: ${{ github.event.release.target_commitish }}
+ - name: Update version
+ uses: ynput/gha-populate-form-version@main
+ with:
+ github_token: ${{ secrets.YNPUT_BOT_TOKEN }}
+ registry: github
+ dropdown: _version
+ limit_to: 100
+ form: .github/ISSUE_TEMPLATE/bug_report.yml
+ commit_message: 'chore(): update bug report / version'
+ dry_run: no-push
+
+ - name: Push to protected develop branch
+ uses: CasperWA/push-protected@v2.10.0
+ with:
+ token: ${{ secrets.YNPUT_BOT_TOKEN }}
+ branch: develop
+ unprotect_reviews: true
\ No newline at end of file
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/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000000..eec388924e
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,12 @@
+# See https://pre-commit.com for more information
+# See https://pre-commit.com/hooks.html for more hooks
+repos:
+- repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.4.0
+ hooks:
+ - id: trailing-whitespace
+ - id: end-of-file-fixer
+ - id: check-yaml
+ - id: check-added-large-files
+ - id: no-commit-to-branch
+ args: [ '--pattern', '^(?!((release|enhancement|feature|bugfix|documentation|tests|local|chore)\/[a-zA-Z0-9\-_]+)$).*' ]
diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md
new file mode 100644
index 0000000000..912780d803
--- /dev/null
+++ b/ARCHITECTURE.md
@@ -0,0 +1,77 @@
+# Architecture
+
+OpenPype is a monolithic Python project that bundles several parts, this document will try to give a birds eye overview of the project and, to a certain degree, each of the sub-projects.
+The current file structure looks like this:
+
+```
+.
+โโโ common - Code in this folder is backend portion of Addon distribution logic for v4 server.
+โโโ docs - Documentation of the source code.
+โโโ igniter - The OpenPype bootstrapper, deals with running version resolution and setting up the connection to the mongodb.
+โโโ openpype - The actual OpenPype core package.
+โโโ schema - Collection of JSON files describing schematics of objects. This follows Avalon's convention.
+โโโ tests - Integration and unit tests.
+โโโ tools - Conveninece scripts to perform common actions (in both bash and ps1).
+โโโ vendor - When using the igniter, it deploys third party tools in here, such as ffmpeg.
+โโโ website - Source files for https://openpype.io/ which is Docusaursus (https://docusaurus.io/).
+```
+
+The core functionality of the pipeline can be found in `igniter` and `openpype`, which in turn rely on the `schema` files, whenever you build (or download a pre-built) version of OpenPype, these two are bundled in there, and `Igniter` is the entry point.
+
+
+## Igniter
+
+It's the setup and update tool for OpenPype, unless you want to package `openpype` separately and deal with all the config manually, this will most likely be your entry point.
+
+```
+igniter/
+โโโ bootstrap_repos.py - Module that will find or install OpenPype versions in the system.
+โโโ __init__.py - Igniter entry point.
+โโโ install_dialog.py- Show dialog for choosing central pype repository.
+โโโ install_thread.py - Threading helpers for the install process.
+โโโ __main__.py - Like `__init__.py` ?
+โโโ message_dialog.py - Qt Dialog with a message and "Ok" button.
+โโโ nice_progress_bar.py - Fancy Qt progress bar.
+โโโ splash.txt - ASCII art for the terminal installer.
+โโโ stylesheet.css - Installer Qt styles.
+โโโ terminal_splash.py - Terminal installer animation, relies in `splash.txt`.
+โโโ tools.py - Collection of methods that don't fit in other modules.
+โโโ update_thread.py - Threading helper to update existing OpenPype installs.
+โโโ update_window.py - Qt UI to update OpenPype installs.
+โโโ user_settings.py - Interface for the OpenPype user settings.
+โโโ version.py - Igniter's version number.
+```
+
+## OpenPype
+
+This is the main package of the OpenPype logic, it could be loosely described as a combination of [Avalon](https://getavalon.github.io), [Pyblish](https://pyblish.com/) and glue around those with custom OpenPype only elements, things are in progress of being moved around to better prepare for V4, which will be released under a new name AYON.
+
+```
+openpype/
+โโโ client - Interface for the MongoDB.
+โโโ hooks - Hooks to be executed on certain OpenPype Applications defined in `openpype.lib.applications`.
+โโโ host - Base class for the different hosts.
+โโโ hosts - Integration with the different DCCs (hosts) using the `host` base class.
+โโโ lib - Libraries that stitch together the package, some have been moved into other parts.
+โโโ modules - OpenPype modules should contain separated logic of specific kind of implementation, such as Ftrack connection and its python API.
+โโโ pipeline - Core of the OpenPype pipeline, handles creation of data, publishing, etc.
+โโโ plugins - Global/core plugins for loader and publisher tool.
+โโโ resources - Icons, fonts, etc.
+โโโ scripts - Loose scipts that get run by tools/publishers.
+โโโ settings - OpenPype settings interface.
+โโโ style - Qt styling.
+โโโ tests - Unit tests.
+โโโ tools - Core tools, check out https://openpype.io/docs/artist_tools.
+โโโ vendor - Vendoring of needed required Python packes.
+โโโ widgets - Common re-usable Qt Widgets.
+โโโ action.py - LEGACY: Lives now in `openpype.pipeline.publish.action` Pyblish actions.
+โโโ cli.py - Command line interface, leverages `click`.
+โโโ __init__.py - Sets two constants.
+โโโ __main__.py - Entry point, calls the `cli.py`
+โโโ plugin.py - Pyblish plugins.
+โโโ pype_commands.py - Implementation of OpenPype commands.
+โโโ version.py - Current version number.
+```
+
+
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 530622f491..882620f26c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,5855 @@
# Changelog
+
+## [3.15.10](https://github.com/ynput/OpenPype/tree/3.15.10)
+
+
+[Full Changelog](https://github.com/ynput/OpenPype/compare/3.15.9...3.15.10)
+
+### **๐ New features**
+
+
+ Sourced from webpack's releases. Full Changelog: https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0 ... (truncated) This version was pushed to npm by evilebottnawi, a new releaser for webpack since your current version. This version was pushed to npm by marsup, a new releaser for Sourced from ua-parser-js's changelog. Version 0.8 was created by accident. This version is now deprecated and no longer maintained, please update to version 0.7 / 1.0.ImageIO: Adding ImageIO activation toggle to all hosts #4700
+
+Colorspace management can now be enabled at the project level, although it is disabled by default. Once enabled, all hosts will use the OCIO config file defined in the settings. If settings are disabled, the system switches to DCC's native color space management, and we do not store colorspace information at the representative level.
+
+
+___
+
+Redshift Proxy Support in 3dsMax #4625
+
+Redshift Proxy Support for 3dsMax.
+- [x] Creator
+- [x] Loader
+- [x] Extractor
+- [x] Validator
+- [x] Add documentation
+
+
+___
+
+Houdini farm publishing and rendering #4825
+
+Deadline Farm publishing and Rendering for Houdini
+- [x] Mantra
+- [x] Karma(including usd renders)
+- [x] Arnold
+- [x] Elaborate Redshift ROP for deadline submission
+- [x] fix the existing bug in Redshift ROP
+- [x] Vray
+- [x] add docs
+
+
+___
+
+Feature: Blender hook to execute python scripts at launch #4905
+
+Hook to allow hooks to add path to a python script that will be executed when Blender starts.
+
+
+___
+
+Feature: Resolve: Open last workfile on launch through .scriptlib #5047
+
+Added implementation to Resolve integration to open last workfile on launch.
+
+
+___
+
+General: Remove default windowFlags from publisher #5089
+
+The default windowFlags is making the publisher window (in Linux at least) only show the close button and it's frustrating as many times you just want to minimize the window and get back to the validation after. Removing that line I get what I'd expect.**Before:****After:**
+
+
+___
+
+General: Show user who created the workfile on the details pane of workfile manager #5093
+
+New PR for https://github.com/ynput/OpenPype/pull/5087, which was closed after merging `next-minor` branch and then realizing we don't need to target it as it was decided it's not required to support windows. More info on that PR discussion.Small addition to add name of the `user` who created the workfile on the details pane of the workfile manager:
+
+
+___
+
+Loader: Hide inactive versions in UI #5100
+
+Hide versions with `active` set to `False` in Loader UI.
+
+
+___
+
+Maya: Repair RenderPass token when merging AOVs. #5055
+
+Validator was flagging that `Maya: Improve error feedback when no renderable cameras exist for ASS family. #5092
+
+When collecting cameras for `ass` family, this improves the error message when no cameras are renderable.
+
+
+___
+
+Nuke: Custom script to set frame range of read nodes #5039
+
+Adding option to set frame range specifically for the read nodes in Openpype Panel. User can set up their preferred frame range with the frame range dialog, which can be showed after clicking `Set Frame Range (Read Node)` in Openpype Tools
+
+
+___
+
+Update extract review letterbox docs #5074
+
+Update Extract Review - Letter Box section in Docs. Letterbox type description is removed.
+
+
+___
+
+Project pack: Documents only skips roots validation #5082
+
+Single roots validation is skipped if only documents are extracted.
+
+
+___
+
+Nuke: custom settings for write node without publish #5084
+
+Set Render Output and other settings to write nodes for non-publish purposes.
+
+
+___
+
+Maya: Deadline servers #5052
+
+Fix working with multiple Deadline servers in Maya.
+- Pools (primary and secondary) attributes were not recreated correctly.
+- Order of collector plugins were wrong, so collected data was not injected into render instances.
+- Server attribute was not converted to string so comparing with settings was incorrect.
+- Improve debug logging for where the webservice url is getting fetched from.
+
+
+___
+
+Maya: Fix Load Reference. #5091
+
+Fix bug introduced with https://github.com/ynput/OpenPype/pull/4751 where `cmds.ls` returns a list.
+
+
+___
+
+3dsmax: Publishing Deadline jobs from RedShift #4960
+
+Fix the bug of being uable to publish deadline jobs from RedshiftUse Current File instead of Published Scene for just Redshift.
+- add save scene before rendering to ensure the scene is saved after the modification.
+- add separated aov files option to allow users to choose to have aovs in render output
+- add validator for render publish to aovid overriding the previous renders
+
+
+___
+
+Houdini: Fix missing frame range for pointcache and camera exports #5026
+
+Fix missing frame range for pointcache and camera exports on published version.
+
+
+___
+
+Global: collect_frame_fix plugin fix and cleanup #5064
+
+Previous implementation https://github.com/ynput/OpenPype/pull/5036 was broken this is fixing the issue where attribute is found in instance data although the settings were disabled for the plugin.
+
+
+___
+
+Hiero: Fix apply settings Clip Load #5073
+
+Changed `apply_settings` to classmethod which fixes the issue with settings.
+
+
+___
+
+Resolve: Make sure scripts dir exists #5078
+
+Make sure the scripts directory exists before looping over it's content.
+
+
+___
+
+removing info knob from nuke creators #5083
+
+- removing instance node if removed via publisher
+- removing info knob since it is not needed any more (was there only for the transition phase)
+
+
+___
+
+Tray: Fix restart arguments on update #5085
+
+Fix arguments on restart.
+
+
+___
+
+Maya: bug fix on repair action in Arnold Scene Source CBID Validator #5096
+
+Fix the bug of not being able to use repair action in Arnold Scene Source CBID Validator
+
+
+___
+
+Nuke: batch of small fixes #5103
+
+- default settings for `imageio.requiredNodes` **CreateWriteImage**
+- default settings for **LoadImage** representations
+- **Create** and **Publish** menu items with `parent=main_window` (version > 14)
+
+
+___
+
+Deadline: make prerender check safer #5104
+
+Prerender wasn't correctly recognized and was replaced with just 'render' family.In Nuke it is correctly `prerender.farm` in families, which wasn't handled here. It resulted into using `render` in templates even if `render` and `prerender` templates were split.
+
+
+___
+
+General: Sort launcher actions alphabetically #5106
+
+The launcher actions weren't being sorted by its label but its name (which on the case of the apps it's the version number) and thus the order wasn't consistent and we kept getting a different order on every launch. From my debugging session, this was the result of what the `actions` variable held after the `filter_compatible_actions` function before these changes:
+```
+(Pdb) for p in actions: print(p.order, p.name)
+0 14-02
+0 14-02
+0 14-02
+0 14-02
+0 14-02
+0 19-5-493
+0 2023
+0 3-41
+0 6-01
+```This caused already a couple bugs from our artists thinking they had launched Nuke X and instead launched Nuke and telling us their Nuke was missing nodes**Before:****After:**
+
+
+___
+
+TrayPublisher: Editorial video stream discovery #5120
+
+Editorial create plugin in traypublisher does not expect that first stream in input is video.
+
+
+___
+
+3dsmax: Move from deprecated interface #5117
+
+`INewPublisher` interface is deprecated, this PR is changing the use to `IPublishHost` instead.
+
+
+___
+
+add movalex as a contributor for code #5076
+
+Adds @movalex as a contributor for code.
+
+This was requested by mkolar [in this comment](https://github.com/ynput/OpenPype/pull/4916#issuecomment-1571498425)
+
+[skip ci]
+___
+
+3dsmax: refactor load plugins #5079
+
+
+___
+
+Blender: Implemented Loading of Alembic Camera #4990
+
+Implemented loading of Alembic cameras in Blender.
+
+
+___
+
+Unreal: Implemented Creator, Loader and Extractor for Levels #5008
+
+Creator, Loader and Extractor for Unreal Levels have been implemented.
+
+
+___
+
+Blender: Added setting for base unit scale #4987
+
+A setting for the base unit scale has been added for Blender.The unit scale is automatically applied when opening a file or creating a new one.
+
+
+___
+
+Unreal: Changed naming and path of Camera Levels #5010
+
+The levels created for the camera in Unreal now include `_camera` in the name, to be better identifiable, and are placed in the camera folder.
+
+
+___
+
+Settings: Added option to nest settings templates #5022
+
+It is possible to nest settings templates in another templates.
+
+
+___
+
+Enhancement/publisher: Remove "hit play to continue" label on continue #5029
+
+Remove "hit play to continue" message on continue so that it doesn't show anymore when play was clicked.
+
+
+___
+
+Ftrack: Limit number of ftrack events to query at once #5033
+
+Limit the amount of ftrack events received from mongo at once to 100.
+
+
+___
+
+General: Small code cleanups #5034
+
+Small code cleanup and updates.
+
+
+___
+
+Global: collect frames to fix with settings #5036
+
+Settings for `Collect Frames to Fix` will allow disable per project the plugin. Also `Rewriting latest version` attribute is hiddable from settings.
+
+
+___
+
+General: Publish plugin apply settings can expect only project settings #5037
+
+Only project settings are passed to optional `apply_settings` method, if the method expects only one argument.
+
+
+___
+
+Maya: Load Assembly fix invalid imports #4859
+
+Refactors imports so they are now correct.
+
+
+___
+
+Maya: Skipping rendersetup for members. #4973
+
+When publishing a `rendersetup`, the objectset is and should be empty.
+
+
+___
+
+Maya: Validate Rig Output IDs #5016
+
+Absolute names of node were not used, so plugin did not fetch the nodes properly.Also missed pymel command.
+
+
+___
+
+Deadline: escape rootless path in publish job #4910
+
+If the publish path on Deadline job contains spaces or other characters, command was failing because the path wasn't properly escaped. This is fixing it.
+
+
+___
+
+General: Company name and URL changed #4974
+
+The current records were obsolete in inno_setup, changed to the up-to-date.
+___
+
+Unreal: Fix usage of 'get_full_path' function #5014
+
+This PR changes all the occurrences of `get_full_path` functions to alternatives to get the path of the objects.
+
+
+___
+
+Unreal: Fix sequence frames validator to use correct data #5021
+
+Fix sequence frames validator to use clipIn and clipOut data instead of frameStart and frameEnd.
+
+
+___
+
+Unreal: Fix render instances collection to use correct data #5023
+
+Fix render instances collection to use `frameStart` and `frameEnd` from the Project Manager, instead of the sequence's ones.
+
+
+___
+
+Resolve: loader is opening even if no timeline in project #5025
+
+Loader is opening now even no timeline is available in a project.
+
+
+___
+
+nuke: callback for dirmapping is on demand #5030
+
+Nuke was slowed down on processing due this callback. Since it is disabled by default it made sense to add it only on demand.
+
+
+___
+
+Publisher: UI works with instances without label #5032
+
+Publisher UI does not crash if instance don't have filled 'label' key in instance data.
+
+
+___
+
+Publisher: Call explicitly prepared tab methods #5044
+
+It is not possible to go to Create tab during publishing from OpenPype menu.
+
+
+___
+
+Ftrack: Role names are not case sensitive in ftrack event server status action #5058
+
+Event server status action is not case sensitive for role names of user.
+
+
+___
+
+Publisher: Fix border widget #5063
+
+Fixed border lines in Publisher UI to be painted correctly with correct indentation and size.
+
+
+___
+
+Unreal: Fix Commandlet Project and Permissions #5066
+
+Fix problem when creating an Unreal Project when Commandlet Project is in a protected location.
+
+
+___
+
+Unreal: Added verification for Unreal app name format #5070
+
+The Unreal app name is used to determine the Unreal version folder, so it is necessary that if follows the format `x-x`, where `x` is any integer. This PR adds a verification that the app name follows that format.
+
+
+___
+
+Docs: Display wrong image in ExtractOIIOTranscode #5045
+
+Wrong image display in `https://openpype.io/docs/project_settings/settings_project_global#extract-oiio-transcode`.
+
+
+___
+
+Drop-down menu to list all families in create placeholder #4928
+
+Currently in the create placeholder window, we need to write the family manually. This replace the text field by an enum field with all families for the current software.
+
+
+___
+
+add sync to specific projects or listen only #4919
+
+Extend kitsu sync service with additional arguments to sync specific projects.
+
+
+___
+
+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`.
+
+
+___
+
+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.
+
+
+___
+
+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.
+
+
+___
+
+3dsmax: Refactored publish plugins to use proper implementation of pymxs #4988
+
+
+___
+
+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`.
+
+
+___
+
+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.
+
+
+___
+
+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.
+
+
+___
+
+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"
+
+
+___
+
+Substance Painter Integration #4283
+
+This implements a part of #4205 by implementing a Substance Painter integration
+
+Status:
+- [x] Implement Host
+- [x] start substance with last workfile using `AddLastWorkfileToLaunchArgs` prelaunch hook
+- [x] Implement Qt tools
+- [x] Implement loaders
+- [x] Implemented a Set project mesh loader (this is relatively special case because a Project will always have exactly one mesh - a Substance Painter project cannot exist without a mesh).
+- [x] Implement project open callback
+- [x] On project open it notifies the user if the loaded model is outdated
+- [x] Implement publishing logic
+- [x] Workfile publishing
+- [x] Export Texture Sets
+- [x] Support OCIO using #4195 (draft brach is set up - see comment)
+- [ ] Likely needs more testing on the OCIO front
+- [x] Validate all outputs of the Export template are exported/generated
+- [x] Allow validation to be optional **(issue: there's no API method to detect what maps will be exported without doing an actual export to disk)**
+- [x] Support extracting/integration if not all outputs are generated
+- [x] Support multiple materials/texture sets per instance
+- [ ] Add validator that can enforce only a single texture set output if studio prefers that.
+- [ ] Implement Export File Format (extensions) override in Creator
+- [ ] Add settings so Admin can choose which extensions are available.
+
+
+___
+
+Data Exchange: Geometry in 3dsMax #4555
+
+Introduces and updates a creator, extractors and loaders for model family
+
+Introduces new creator, extractors and loaders for model family while adding model families into the existing max scene loader and extractor
+- [x] creators
+- [x] adding model family into max scene loader and extractor
+- [x] fbx loader
+- [x] fbx extractor
+- [x] usd loader
+- [x] usd extractor
+- [x] validator for model family
+- [x] obj loader(update function)
+- [x] fix the update function of the loader as #4675
+- [x] Add documentation
+
+
+___
+
+AfterEffects: add review flag to each instance #4884
+
+Adds `mark_for_review` flag to the Creator to allow artists to disable review if necessary.Exposed this flag in Settings, by default set to True (eg. same behavior as previously).
+
+
+___
+
+Houdini: Fix Validate Output Node (VDB) #4819
+
+- Removes plug-in that was a duplicate of this plug-in.
+- Optimize logging of many prims slightly
+- Fix error reporting like https://github.com/ynput/OpenPype/pull/4818 did
+
+
+___
+
+Houdini: Add null node as output indicator when using TAB search #4834
+
+
+___
+
+Houdini: Don't error in collect review if camera is not set correctly #4874
+
+Do not raise an error in collector when invalid path is set as camera path. Allow camera path to not be set correctly in review instance until validation so it's nicely shown in a validation report.
+
+
+___
+
+Project packager: Backup and restore can store only database #4879
+
+Pack project functionality have option to zip only project database without project files. Unpack project can skip project copy if the folder is not found.Added helper functions to `openpype.client.mongo` that can be also used for tests as replacement of mongo dump.
+
+
+___
+
+Houdini: ExtractOpenGL for Review instance not optional #4881
+
+Don't make ExtractOpenGL optional for review instance optional.
+
+
+___
+
+Publisher: Small style changes #4894
+
+Small changes in styles and form of publisher UI.
+
+
+___
+
+Houdini: Workfile icon in new publisher #4898
+
+Fix icon for the workfile instance in new publisher
+
+
+___
+
+Fusion: Simplify creator icons code #4899
+
+Simplify code for setting the icons for the Fusion creators
+
+
+___
+
+Enhancement: Fix PySide 6.5 support for loader #4900
+
+Fixes PySide 6.5 support in Loader.
+
+
+___
+
+Maya: Validate Attributes #4917
+
+This plugin was broken due to bad fetching of data and wrong repair action.
+
+
+___
+
+Fix: Locally copied version of last published workfile is not incremented #4722
+
+### Fix 1
+When copied, the local workfile version keeps the published version number, when it must be +1 to follow OP's naming convention.
+
+### Fix 2
+Local workfile version's name is built from anatomy. This avoids to get workfiles with their publish template naming.
+
+### Fix 3
+In the case a subset has at least two tasks with published workfiles, for example `Modeling` and `Rigging`, launching `Rigging` was getting the first one with the `next` and trying to find representations, therefore `workfileModeling` and trying to match the current `task_name` (`Rigging`) with the `representation["context"]["task"]["name"]` of a Modeling representation, which was ending up to a `workfile_representation` to `None`, and exiting the process.
+
+Trying to find the `task_name` in the `subset['name']` fixes it.
+
+### Fix 4
+Fetch input dependencies of workfile.
+
+Replacing https://github.com/ynput/OpenPype/pull/4102 for changes to bring this home.
+___
+
+Maya: soft-fail when pan/zoom locked on camera when playblasting #4929
+
+When pan/zoom enabled attribute on camera is locked, playblasting with pan/zoom fails because it is trying to restore it. This is fixing it by skipping over with warning.
+
+
+___
+
+Maya Load References - Add Display Handle Setting #4904
+
+When we load a reference in Maya using OpenPype loader, display handle is checked by default and prevent us to select easily the object in the viewport. I understand that some productions like to keep this option, so I propose to add display handle to the reference loader settings.
+
+
+___
+
+Photoshop: add autocreators for review and flat image #4871
+
+Review and flatten image (produced when no instance of `image` family was created) were created somehow magically. This PRintroduces two new auto creators which allow artists to disable review or flatten image.For all `image` instances `Review` flag was added to provide functionality to create separate review per `image` instance. Previously was possible only to have separate instance of `review` family.Review is not enabled on `image` family by default. (Eg. follows original behavior)Review auto creator is enabled by default as it was before.Flatten image creator must be set in Settings in `project_settings/photoshop/create/AutoImageCreator`.
+
+
+___
+
+Maya: Playblast profiles #4777
+
+Support playblast profiles.This enables studios to customize what playblast settings should be on a per task and/or subset basis. For example `modeling` should have `Wireframe On Shaded` enabled, while all other tasks should have it disabled.
+
+
+___
+
+Maya: Support .abc files directly for Arnold standin look assignment #4856
+
+If `.abc` file is loaded into arnold standin support look assignment through the `cbId` attributes in the alembic file.
+
+
+___
+
+Maya: Hide animation instance in creator #4872
+
+- Hide animation instance in creator
+- Add inventory action to recreate animation publish instance for loaded rigs
+
+
+___
+
+Unreal: Render Creator enhancements #4477
+
+Improvements to the creator for render family
+
+This PR introduces some enhancements to the creator for the render family in Unreal Engine:
+- Added the option to create a new, empty sequence for the render.
+- Added the option to not include the whole hierarchy for the selected sequence.
+- Improvements of the error messages.
+
+
+___
+
+Unreal: Added settings for rendering #4575
+
+Added settings for rendering in Unreal Engine.
+
+Two settings has been added:
+- Pre roll frames, to set how many frames are used to load the scene before starting the actual rendering.
+- Configuration path, to allow to save a preset of settings from Unreal, and use it for rendering.
+
+
+___
+
+Global: Optimize anatomy formatting by only formatting used templates instead #4784
+
+Optimization to not format full anatomy when only a single template is used. Instead format only the single template instead.
+
+
+___
+
+Patchelf version locked #4853
+
+For Centos dockerfile it is necessary to lock the patchelf version to the older, otherwise the build process fails.
+
+___
+
+Houdini: Implement `switch` method on loaders #4866
+
+Implement `switch` method on loaders
+
+
+___
+
+Code: Tweak docstrings and return type hints #4875
+
+Tweak docstrings and return type hints for functions in `openpype.client.entities`.
+
+
+___
+
+Publisher: Clear comment on successful publish and on window close #4885
+
+Clear comment text field on successful publish and on window close.
+
+
+___
+
+Publisher: Make sure to reset asset widget when hidden and reshown #4886
+
+Make sure to reset asset widget when hidden and reshown. Without this the asset list would never refresh in the set asset widget when changing context on an existing instance and thus would not show new assets from after the first time launching that widget.
+
+
+___
+
+Maya: Fix nested model instances. #4852
+
+Fix nested model instance under review instance, where data collection was not including "Display Lights" and "Focal Length".
+
+
+___
+
+Maya: Make default namespace naming backwards compatible #4873
+
+Namespaces of loaded references are now _by default_ back to what they were before #4511
+
+
+___
+
+Nuke: Legacy convertor skips deprecation warnings #4846
+
+Nuke legacy convertor was triggering deprecated function which is causing a lot of logs which slows down whole process. Changed the convertor to skip all nodes without `AVALON_TAB` to avoid the warnings.
+
+
+___
+
+3dsmax: move startup script logic to hook #4849
+
+Startup script for OpenPype was interfering with Open Last Workfile feature. Moving this loggic from simple command line argument in the Settings to pre-launch hook is solving the order of command line arguments and making both features work.
+
+
+___
+
+Maya: Don't change time slider ranges in `get_frame_range` #4858
+
+Don't change time slider ranges in `get_frame_range`
+
+
+___
+
+Maya: Looks - calculate hash for tx texture #4878
+
+Texture hash is calculated for textures used in published look and it is used as key in dictionary. In recent changes, this hash is not calculated for TX files, resulting in `None` value as key in dictionary, crashing publishing. This PR is adding texture hash for TX files to solve that issue.
+
+
+___
+
+Houdini: Collect `currentFile` context data separate from workfile instance #4883
+
+Fix publishing without an active workfile instance due to missing `currentFile` data.Now collect `currentFile` into context in houdini through context plugin no matter the active instances.
+
+
+___
+
+Nuke: fixed broken slate workflow once published on deadline #4887
+
+Slate workflow is now working as expected and Validate Sequence Frames is not raising the once slate frame is included.
+
+
+___
+
+Add fps as instance.data in collect review in Houdini. #4888
+
+fix the bug of failing to publish extract review in HoudiniOriginal error:
+```python
+ File "OpenPype\build\exe.win-amd64-3.9\openpype\plugins\publish\extract_review.py", line 516, in prepare_temp_data
+ "fps": float(instance.data["fps"]),
+KeyError: 'fps'
+```
+
+
+___
+
+TrayPublisher: Fill missing data for instances with review #4891
+
+Fill required data to instance in traypublisher if instance has review family. The data are required by ExtractReview and it would be complicated to do proper fix at this moment! The collector does for review instances what did https://github.com/ynput/OpenPype/pull/4383
+
+
+___
+
+Publisher: Keep track about current context and fix context selection widget #4892
+
+Change selected context to current context on reset. Fix bug when context widget is re-enabled.
+
+
+___
+
+Scene inventory: Model refresh fix with cherry picking #4895
+
+Fix cherry pick issue in scene inventory.
+
+
+___
+
+Nuke: Pre-render and missing review flag on instance causing crash #4897
+
+If instance created in nuke was missing `review` flag, collector crashed.
+
+
+___
+
+After Effects: fix handles KeyError #4727
+
+Sometimes when publishing with AE (we only saw this error on AE 2023), we got a KeyError for the handles in the "Collect Workfile" step. So I did get the handles from the context if ther's no handles in the asset entity.
+
+
+___
+
+Maya: Cant assign shaders to the ass file - OP-4859 #4460
+
+Support AiStandIn nodes for look assignment.
+
+Using operators we assign shaders and attribute/parameters to nodes within standins. Initially there is only support for a limited mount of attributes but we can add support as needed;
+```
+primaryVisibility
+castsShadows
+receiveShadows
+aiSelfShadows
+aiOpaque
+aiMatte
+aiVisibleInDiffuseTransmission
+aiVisibleInSpecularTransmission
+aiVisibleInVolume
+aiVisibleInDiffuseReflection
+aiVisibleInSpecularReflection
+aiSubdivUvSmoothing
+aiDispHeight
+aiDispPadding
+aiDispZeroValue
+aiStepSize
+aiVolumePadding
+aiSubdivType
+aiSubdivIterations
+```
+
+
+___
+
+Maya: GPU cache representation #4649
+
+Implement GPU cache for model, animation and pointcache.
+
+
+___
+
+Houdini: Implement review family with opengl node #3839
+
+Implements a first pass for Reviews publishing in Houdini. Resolves #2720
+
+Uses the `opengl` ROP node to produce PNG images.
+
+
+___
+
+Maya: Camera focal length visible in review - OP-3278 #4531
+
+Camera focal length visible in review.
+
+Support camera focal length in review; static and dynamic.Resolves #3220
+
+
+___
+
+Maya: Defining plugins to load on Maya start - OP-4994 #4714
+
+Feature to define plugins to load on Maya launch.
+
+
+___
+
+Nuke, DL: Returning Suspended Publishing attribute #4715
+
+Old Nuke Publisher's feature for suspended publishing job on render farm was added back to the current Publisher.
+
+
+___
+
+Settings UI: Allow setting a size hint for text fields #4821
+
+Text entity have `minimum_lines_count` which allows to change minimum size hint of UI input.
+
+
+___
+
+TrayPublisher: Move 'BatchMovieCreator' settings to 'create' subcategory #4827
+
+Moved settings for `BatchMoviewCreator` into subcategory `create` in settings. Changes are made to match other hosts settings chema and structure.
+
+
+___
+
+Maya looks: support for native Redshift texture format #2971
+
+Add support for native Redshift textures handling. Closes #2599
+
+Uses Redshift's Texture Processor executable to convert textures being used in renders to the Redshift ".rstexbin" format.
+
+
+___
+
+Maya: custom namespace for references #4511
+
+Adding an option in Project Settings > Maya > Loader plugins to set custom namespace. If no namespace is set, the default one is used.
+
+
+___
+
+Maya: Set correct framerange with handles on file opening #4664
+
+Set the range of playback from the asset data, counting handles, to get the correct data when calling the "collect_animation_data" function.
+
+
+___
+
+Maya: Fix camera update #4751
+
+Fix resetting any modelPanel to a different camera when loading a camera and updating.
+
+
+___
+
+Maya: Remove single assembly validation for animation instances #4840
+
+Rig groups may now be parented to others groups when `includeParentHierarchy` attribute on the instance is "off".
+
+
+___
+
+Maya: Optional control of display lights on playblast. #4145
+
+Optional control of display lights on playblast.
+
+Giving control to what display lights are on the playblasts.
+
+
+___
+
+Kitsu: note family requirements #4551
+
+Allowing to add family requirements to `IntegrateKitsuNote` task status change.
+
+Adds a `Family requirements` setting to `Integrate Kitsu Note`, so you can add requirements to determine if kitsu task status should be changed based on which families are published or not. For instance you could have the status change only if another subset than workfile is published (but workfile can still be included) by adding an item set to `Not equal` and `workfile`.
+
+
+___
+
+Deactivate closed Kitsu projects on OP #4619
+
+Deactivate project on OP when the project is closed on Kitsu.
+
+
+___
+
+Maya: Suggestion to change capture labels. #4691
+
+Change capture labels.
+
+
+___
+
+Houdini: Change node type for OpenPypeContext `null` -> `subnet` #4745
+
+Change the node type for OpenPype's hidden context node in Houdini from `null` to `subnet`. This fixes #4734
+
+
+___
+
+General: Extract burnin hosts filters #4749
+
+Removed hosts filter from ExtractBurnin plugin. Instance without representations won't cause crash but just skip the instance. We've discovered because Blender already has review but did not create burnins.
+
+
+___
+
+Global: Improve speed of Collect Custom Staging Directory #4768
+
+Improve speed of Collect Custom Staging Directory.
+
+
+___
+
+General: Anatomy templates formatting #4773
+
+Added option to format only single template from anatomy instead of formatting all of them all the time. Formatting of all templates is causing slowdowns e.g. during publishing of hundreds of instances.
+
+
+___
+
+Harmony: Handle zip files with deeper structure #4782
+
+External Harmony zip files might contain one additional level with scene name.
+
+
+___
+
+Unreal: Use common logic to configure executable #4788
+
+Unreal Editor location and version was autodetected. This easied configuration in some cases but was not flexible enought. This PR is changing the way Unreal Editor location is set, unifying it with the logic other hosts are using.
+
+
+___
+
+Github: Grammar tweaks + uppercase issue title #4813
+
+Tweak some of the grammar in the issue form templates.
+
+
+___
+
+Houdini: Allow creation of publish instances via Houdini TAB menu #4831
+
+Register the available Creator's as houdini tools so an artist can add publish instances via the Houdini TAB node search menu from within the network editor.
+
+
+___
+
+Maya: Fix Collect Render for V-Ray, Redshift and Renderman for missing colorspace #4650
+
+Fix Collect Render not working for Redshift, V-Ray and Renderman due to missing `colorspace` argument to `RenderProduct` dataclass.
+
+
+___
+
+Maya: Xgen fixes #4707
+
+Fix for Xgen extraction of world parented nodes and validation for required namespace.
+
+
+___
+
+Maya: Fix extract review and thumbnail for Maya 2020 #4744
+
+Fix playblasting in Maya 2020 with override viewport options enabled. Fixes #4730.
+
+
+___
+
+Maya: local variable 'arnold_standins' referenced before assignment - OP-5542 #4778
+
+MayaLookAssigner erroring when MTOA is not loaded:
+```
+# Traceback (most recent call last):
+# File "\openpype\hosts\maya\tools\mayalookassigner\app.py", line 272, in on_process_selected
+# nodes = list(set(item["nodes"]).difference(arnold_standins))
+# UnboundLocalError: local variable 'arnold_standins' referenced before assignment
+```
+
+
+___
+
+Maya: Fix getting view and display in Maya 2020 - OP-5035 #4795
+
+The `view_transform` returns a different format in Maya 2020. Fixes #4540 (hopefully).
+
+
+___
+
+Maya: Fix Look Maya 2020 Py2 support for Extract Look #4808
+
+Fix Extract Look supporting python 2.7 for Maya 2020.
+
+
+___
+
+Maya: Fix Validate Mesh Overlapping UVs plugin #4816
+
+Fix typo in the code where a maya command returns a `list` instead of `str`.
+
+
+___
+
+Maya: Fix tile rendering with Vray - OP-5566 #4832
+
+Fixes tile rendering with Vray.
+
+
+___
+
+Deadline: checking existing frames fails when there is number in file name #4698
+
+Previous implementation of validator failed on files with any other number in rendered file names.Used regular expression pattern now handles numbers in the file names (eg "Main_beauty.v001.1001.exr", "Main_beauty_v001.1001.exr", "Main_beauty.1001.1001.exr") but not numbers behind frames (eg. "Main_beauty.1001.v001.exr")
+
+
+___
+
+Maya: Validate Render Settings. #4735
+
+Fixes error message when using attribute validation.
+
+
+___
+
+General: Hero version sites recalculation #4737
+
+Sites recalculation in integrate hero version did expect that it is integrated exactly same amount of files as in previous integration. This is not the case in many cases, so the sites recalculation happens in a different way, first are prepared all sites from previous representation files, and all of them are added to each file in new representation.
+
+
+___
+
+Houdini: Fix collect current file #4739
+
+Fixes the Workfile publishing getting added into every instance being published from Houdini
+
+
+___
+
+Global: Fix Extract Burnin + Colorspace functions for conflicting python environments with PYTHONHOME #4740
+
+This fixes the running of openpype processes from e.g. a host with conflicting python versions that had `PYTHONHOME` said additionally to `PYTHONPATH`, like e.g. Houdini Py3.7 together with OpenPype Py3.9 when using Extract Burnin for a review in #3839This fix applies to Extract Burnin and some of the colorspace functions that use `run_openpype_process`
+
+
+___
+
+Harmony: render what is in timeline in Harmony locally #4741
+
+Previously it wasn't possible to render according to what was set in Timeline in scene start/end, just by what it was set in whole timeline.This allows artist to override what is in DB with what they require (with disabled `Validate Scene Settings`). Now artist can extend scene by additional frames, that shouldn't be rendered, but which might be desired.Removed explicit set scene settings (eg. applying frames and resolution directly to the scene after launch), added separate menu item to allow artist to do it themselves.
+
+
+___
+
+Maya: Extract Review settings add Use Background Gradient #4747
+
+Add Display Gradient Background toggle in settings to fix support for setting flat background color for reviews.
+
+
+___
+
+Nuke: publisher is offering review on write families on demand #4755
+
+Original idea where reviewable toggle will be offered in publisher on demand is fixed and now `review` attribute can be disabled in settings.
+
+
+___
+
+Workfiles: keep Browse always enabled #4766
+
+Browse might make sense even if there are no workfiles present, actually in that case it makes the most sense (eg. I want to locate workfile from outside - from Desktop for example).
+
+
+___
+
+Global: label key in instance data is optional #4779
+
+Collect OTIO review plugin is not crashing if `label` key is missing in instance data.
+
+
+___
+
+Loader: Fix missing variable #4781
+
+There is missing variable `handles` in loader tool after https://github.com/ynput/OpenPype/pull/4746. The variable was renamed to `handles_label` and is initialized to `None` if handles are not available.
+
+
+___
+
+Nuke: Workfile Template builder fixes #4783
+
+Popup window after Nuke start is not showing. Knobs with X/Y coordination on nodes where were converted from placeholders are not added if `keepPlaceholders` is witched off.
+
+
+___
+
+Maya: Add family filter 'review' to burnin profile with focal length #4791
+
+Avoid profile burnin with `focalLength` key for renders, but use only for playblast reviews.
+
+
+___
+
+add farm instance to the render collector in 3dsMax #4794
+
+bug fix for the failure of submitting publish job in 3dsmax
+
+
+___
+
+Publisher: Plugin active attribute is respected #4798
+
+Publisher consider plugin's `active` attribute, so the plugin is not processed when `active` is set to `False`. But we use the attribute in `OptionalPyblishPluginMixin` for different purposes, so I've added hack bypass of the active state validation when plugin inherit from the mixin. This is temporary solution which cannot be changed until all hosts use Publisher otherwise global plugins would be broken. Also plugins which have `enabled` set to `False` are filtered out -> this happened only when automated settings were applied and the settings contained `"enabled"` key se to `False`.
+
+
+___
+
+Nuke: settings and optional attribute in publisher for some validators #4811
+
+New publisher is supporting optional switch for plugins which is offered in Publisher in Right panel. Some plugins were missing this switch and also settings which would offer the optionality.
+
+
+___
+
+Settings: Version settings popup fix #4822
+
+Version completer popup have issues on some platforms, this should fix those edge cases. Also fixed issue when completer stayed shown fater reset (save).
+
+
+___
+
+Hiero/Nuke: adding monitorOut key to settings #4826
+
+New versions of Hiero were introduced with new colorspace property for Monitor Out. It have been added into project settings. Also added new config names into settings enumerator option.
+
+
+___
+
+Nuke: removed default workfile template builder preset #4835
+
+Default for workfile template builder should have been empty.
+
+
+___
+
+TVPaint: Review can be made from any instance #4843
+
+Add `"review"` tag to output of extract sequence if instance is marked for review. At this moment only instances with family `"review"` were able to define input for `ExtractReview` plugin which is not right.
+
+
+___
+
+Deadline: Remove unused FramesPerTask job info submission #4657
+
+Remove unused `FramesPerTask` job info submission to Deadline.
+
+
+___
+
+Maya: Remove pymel dependency #4724
+
+Refactors code written using `pymel` to use standard maya python libraries instead like `maya.cmds` or `maya.api.OpenMaya`
+
+
+___
+
+Remove "preview" data from representation #4759
+
+Remove "preview" data from representation
+
+
+___
+
+Maya: Collect Review cleanup code for attached subsets #4720
+
+Refactor some code for Maya: Collect Review for attached subsets.
+
+
+___
+
+Refactor: Remove `handles`, `edit_in` and `edit_out` backwards compatibility #4746
+
+Removes backward compatibiliy fallback for data called `handles`, `edit_in` and `edit_out`.
+
+
+___
+
+Bump webpack from 5.69.1 to 5.76.1 in /website #4624
+
+Bumps [webpack](https://github.com/webpack/webpack) from 5.69.1 to 5.76.1.
+Release notes
+
+
+v5.76.1
+Fixed
+
+
+assert/strict built-in to NodeTargetPluginRevert
+
+
+hashRegExp lookup by @โryanwilsonperkin in webpack/webpack#16759v5.76.0
+Bugfixes
+
+
+@โJack-Works in webpack/webpack#16500@โlvivski in webpack/webpack#16491generatedCode info to fix bug in asset module cache restoration by @โryanwilsonperkin in webpack/webpack#16703hashRegExp lookup by @โryanwilsonperkin in webpack/webpack#16759Features
+
+
+target to LoaderContext type by @โaskoufis in webpack/webpack#16781Security
+
+
+@โakhilgkrishnan in webpack/webpack#16446Repo Changes
+
+
+@โjakebailey in webpack/webpack#16614@โjakebailey in webpack/webpack#16613@โpiwysocki in webpack/webpack#16493New Contributors
+
+
+@โJack-Works made their first contribution in webpack/webpack#16500@โlvivski made their first contribution in webpack/webpack#16491@โjakebailey made their first contribution in webpack/webpack#16614@โakhilgkrishnan made their first contribution in webpack/webpack#16446@โryanwilsonperkin made their first contribution in webpack/webpack#16703@โpiwysocki made their first contribution in webpack/webpack#16493@โaskoufis made their first contribution in webpack/webpack#16781v5.75.0
+Bugfixes
+
+
+experiments.* normalize to false when opt-outNaN%window before trying to access iteval-nosources-* actually exclude sourcesFeatures
+
+
+
+@import to extenal CSS when using experimental CSS in nodeCommits
+
+
+21be52b Merge pull request #16804 from webpack/chore-patch-release1cce945 chore(release): 5.76.1e76ad9e Merge pull request #16803 from ryanwilsonperkin/revert-16759-real-content-has...52b1b0e Revert "Improve performance of hashRegExp lookup"c989143 Merge pull request #16766 from piranna/patch-1710eaf4 Merge pull request #16789 from dmichon-msft/contenthash-hashsalt5d64468 Merge pull request #16792 from webpack/update-version67af5ec chore(release): 5.76.097b1718 Merge pull request #16781 from askoufis/loader-context-target-typeb84efe6 Merge pull request #16759 from ryanwilsonperkin/real-content-hash-regex-perfMaintainer changes
+
+
+
+[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot merge` will merge this PR after your CI passes on it
+- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
+- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
+- `@dependabot reopen` will reopen this PR if it is closed
+- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
+- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
+- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
+- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
+- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
+
+You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ynput/OpenPype/network/alerts).
+
+Documentation: Add Extract Burnin documentation #4765
+
+Add documentation for Extract Burnin global plugin settings.
+
+
+___
+
+Documentation: Move publisher related tips to publisher area #4772
+
+Move publisher related tips for After Effects artist documentation to the correct position.
+
+
+___
+
+Documentation: Add extra terminology to the key concepts glossary #4838
+
+Tweak some of the key concepts in the documentation.
+
+
+___
+
+Maya: Refactor Extract Look with dedicated processors for maketx #4711
+
+Refactor Maya extract look to fix some issues:
+- [x] Allow Extraction with maketx with OCIO Color Management enabled in Maya.
+- [x] Fix file hashing so it includes arguments to maketx, so that when arguments change it correctly generates a new hash
+- [x] Fix maketx destination colorspace when OCIO is enabled
+- [x] Use pre-collected colorspaces of the resources instead of trying to retrieve again in Extract Look
+- [x] Fix colorspace attributes being reinterpreted by maya on export (fix remapping) - goal is to resolve #2337
+- [x] Fix support for checking config path of maya default OCIO config (due to using `lib.get_color_management_preferences` which remaps that path)
+- [x] Merged in #2971 to refactor MakeTX into TextureProcessor and also support generating Redshift `.rstexbin` files. - goal is to resolve #2599
+- [x] Allow custom arguments to `maketx` from OpenPype Settings like mentioned here by @fabiaserra for arguments like: `--monochrome-detect`, `--opaque-detect`, `--checknan`.
+- [x] Actually fix the code and make it work. :) (I'll try to keep below checkboxes in sync with my code changes)
+- [x] Publishing without texture processor should work (no maketx + no rstexbin)
+- [x] Publishing with maketx should work
+- [x] Publishing with rstexbin should work
+- [x] Test it. (This is just me doing some test-runs, please still test the PR!)
+
+
+___
+
+Maya template builder load all assets linked to the shot #4761
+
+Problem
+All the assets of the ftrack project are loaded and not those linked to the shot
+
+How get error
+Open maya in the context of shot, then build a new scene with the "Build Workfile from template" button in "OpenPype" menu.
+
+
+
+___
+
+Global: Do not force instance data with frame ranges of the asset #4383
+
+This aims to resolve #4317
+
+
+___
+
+Cosmetics: Fix some grammar in docstrings and messages (and some code) #4752
+
+Tweak some grammar in codebase
+
+
+___
+
+Deadline: Submit publish job fails due root work hardcode - OP-5528 #4775
+
+Generating config templates was hardcoded to `root[work]`. This PR fixes that.
+
+
+___
+
+CreateContext: Added option to remove Unknown attributes #4776
+
+Added option to remove attributes with UnkownAttrDef on instances. Pop of key will also remove the attribute definition from attribute values, so they're not recreated again.
+
+
+___
+
+Blender: Extract Review #3616
+
+Added Review to Blender.
+
+This implementation is based on #3508 but made compatible for the current implementation of OpenPype for Blender.
+
+
+___
+
+Data Exchanges: Point Cloud for 3dsMax #4532
+
+Publish PRT format with tyFlow in 3dsmax
+
+Publish PRT format with tyFlow in 3dsmax and possibly set up loader to load the format too.
+- [x] creator
+- [x] extractor
+- [x] validator
+- [x] loader
+
+
+___
+
+Global: persistent staging directory for renders #4583
+
+Allows configure if staging directory (`stagingDir`) should be persistent with use of profiles.
+
+With this feature, users can specify a transient data folder path based on presets, which can be used during the creation and publishing stages. In some cases, these DCCs automatically add a rendering path during the creation stage, which is then used in publishing.One of the key advantages of this feature is that it allows users to take advantage of faster storages for rendering, which can help improve workflow efficiency. Additionally, this feature allows users to keep their rendered data persistent, and use their own infrastructure for regular cleaning.However, it should be noted that some productions may want to use this feature without persistency. Furthermore, there may be a need for retargeting the rendering folder to faster storages, which is also not supported at the moment.It is studio responsibility to clean up obsolete folders with data.Location of the folder is configured in `project_anatomy/templates/others`. ('transient' key is expected, with 'folder' key, could be more templates)Which family/task type/subset is applicable is configured in:`project_settings/global/tools/publish/transient_dir_profiles`
+
+
+___
+
+Kitsu custom comment template #4599
+
+Kitsu allows to write markdown in its comment field. This can be something very powerful to deliver dynamic comments with the help the data from the instance.This feature is defaults to off so the admin have to manually set up the comment field the way they want.I have added a basic example on how the comment can look like as the comment-fields default value.To this I want to add some documentation also but that's on its way when the code itself looks good for the reviewers.
+
+
+___
+
+MaxScene Family #4615
+
+Introduction of the Max Scene Family
+
+
+___
+
+Maya: Multiple values on single render attribute - OP-4131 #4631
+
+When validating render attributes, this adds support for multiple values. When repairing first value in list is used.
+
+
+___
+
+Maya: enable 2D Pan/Zoom for playblasts - OP-5213 #4687
+
+Setting for enabling 2D Pan/Zoom on reviews.
+
+
+___
+
+Copy existing or generate new Fusion profile on prelaunch #4572
+
+Fusion preferences will be copied to the predefined `~/.openpype/hosts/fusion/prefs` folder (or any other folder set in system settings) on launch.
+
+The idea is to create a copy of existing Fusion profile, adding an OpenPype menu to the Fusion instance.By default the copy setting is turned off, so no file copying is performed. Instead the clean Fusion profile is created by Fusion in the predefined folder. The default locaion is set to `~/.openpype/hosts/fusion/prefs`, to better comply with the other os platforms. After creating the default profile, some modifications are applied:
+- forced Python3
+- forced English interface
+- setup Openpype specific path maps.If the `copy_prefs` checkbox is toggled, a copy of existing Fusion profile folder will be placed in the mentioned location. Then they are altered the same way as described above. The operation is run only once, on the first launch, unless the `force_sync [Resync profile on each launch]` is toggled.English interface is forced because the `FUSION16_PROFILE_DIR` environment variable is not read otherwise (seems to be a Fusion bug).
+
+
+___
+
+Houdini: Create button open new publisher's "create" tab #4601
+
+During a talk with @maxpareschi he mentioned that the new publisher in Houdini felt super confusing due to "Create" going to the older creator but now being completely empty and the publish button directly went to the publish tab.This resolves that by fixing the Create button to now open the new publisher but on the Create tab.Also made publish button enforce going to the "publish" tab for consistency in usage.@antirotor I think changing the Create button's callback was just missed in this commit or was there a specific reason to not change that around yet?
+
+
+___
+
+Clockify: refresh and fix the integration #4607
+
+Due to recent API changes, Clockify requires `user_id` to operate with the timers. I updated this part and currently it is a WIP for making it fully functional. Most functions, such as start and stop timer, and projects sync are currently working. For the rate limiting task new dependency is added: https://pypi.org/project/ratelimiter/
+
+
+___
+
+Fusion publish existing frames #4611
+
+This PR adds the function to publish existing frames instead of having to re-render all of them for each new publish.I have split the render_locally plugin so the review-part is its own plugin now.I also change the saver-creator-plugin's label from Saver to Render (saver) as I intend to add a Prerender creator like in Nuke.
+
+
+___
+
+Resolution settings referenced from DB record for 3dsMax #4652
+
+- Add Callback for setting the resolution according to DB after the new scene is created.
+- Add a new Action into openpype menu which allows the user to reset the resolution in 3dsMax
+
+
+___
+
+3dsmax: render instance settings in Publish tab #4658
+
+Allows user preset the pools, group and use_published settings in Render Creator in the Max Hosts.User can set the settings before or after creating instance in the new publisher
+
+
+___
+
+scene length setting referenced from DB record for 3dsMax #4665
+
+Setting the timeline length based on DB record in 3dsMax Hosts
+
+
+___
+
+Publisher: Windows reduce command window pop-ups during Publishing #4672
+
+Reduce the command line pop-ups that show on Windows during publishing.
+
+
+___
+
+Publisher: Explicit save #4676
+
+Publisher have explicit button to save changes, so reset can happen without saving any changes. Save still happens automatically when publishing is started or on publisher window close. But a popup is shown if context of host has changed. Important context was enhanced by workfile path (if host integration supports it) so workfile changes are captured too. In that case a dialog with confirmation is shown to user. All callbacks that may require save of context were moved to main window to be able handle dialog show at one place. Save changes now returns success so the rest of logic is skipped -> publishing won't start, when save of instances fails.Save and reset buttons have shortcuts (Ctrl + s and Ctrls + r).
+
+
+___
+
+CelAction: conditional workfile parameters from settings #4677
+
+Since some productions were requesting excluding some workfile parameters from publishing submission, we needed to move them to settings so those could be altered per project.
+
+
+___
+
+Improve logging of used app + tool envs on application launch #4682
+
+Improve logging of what apps + tool environments got loaded for an application launch.
+
+
+___
+
+Fix name and docstring for Create Workdir Extra Folders prelaunch hook #4683
+
+Fix class name and docstring for Create Workdir Extra Folders prelaunch hookThe class name and docstring were originally copied from another plug-in and didn't match the plug-in logic.This also fixes potentially seeing this twice in your logs. Before:After:Where it was actually running both this prelaunch hook and the actual `AddLastWorkfileToLaunchArgs` plugin.
+
+
+___
+
+Application launch context: Include app group name in logger #4684
+
+Clarify in logs better what app group the ApplicationLaunchContext belongs to and what application is being launched.Before:After:
+
+
+___
+
+increment workfile version 3dsmax #4685
+
+increment workfile version in 3dsmax as if in blender and maya hosts.
+
+
+___
+
+Maya: Fix getting non-active model panel. #2968
+
+When capturing multiple cameras with image planes that have file sequences playing, only the active (first) camera will play through the file sequence.
+
+
+___
+
+Maya: Fix broken review publishing. #4549
+
+Resolves #4547
+
+
+___
+
+Maya: Avoid error on right click in Loader if `mtoa` is not loaded #4616
+
+Fix an error on right clicking in the Loader when `mtoa` is not a loaded plug-in.Additionally if `mtoa` isn't loaded the loader will now load the plug-in before trying to create the arnold standin.
+
+
+___
+
+Maya: Fix extract look colorspace detection #4618
+
+Fix the logic which guesses the colorspace using `arnold` python library.
+- Previously it'd error if `mtoa` was not available on path so it still required `mtoa` to be available.
+- The guessing colorspace logic doesn't actually require `mtoa` to be loaded, but just the `arnold` python library to be available. This changes the logic so it doesn't require the `mtoa` plugin to get loaded to guess the colorspace.
+- The if/else branch was likely not doing what was intended `cmds.loadPlugin("mtoa", quiet=True)` returns None if the plug-in was already loaded. So this would only ever be true if it ends up loading the `mtoa` plugin the first time.
+```python
+# Tested in Maya 2022.1
+print(cmds.loadPlugin("mtoa", quiet=True))
+# ['mtoa']
+print(cmds.loadPlugin("mtoa", quiet=True))
+# None
+```
+
+
+___
+
+Maya: Maya Playblast Options overrides - OP-3847 #4634
+
+When publishing a review in Maya, the extractor would fail due to wrong (long) panel name.
+
+
+___
+
+Bugfix/op 2834 fix extract playblast #4701
+
+Paragraphs contain detailed information on the changes made to the product or service, providing an in-depth description of the updates and enhancements. They can be used to explain the reasoning behind the changes, or to highlight the importance of the new features. Paragraphs can often include links to further information or support documentation.
+
+
+___
+
+Bugfix/op 2834 fix extract playblast #4704
+
+Paragraphs contain detailed information on the changes made to the product or service, providing an in-depth description of the updates and enhancements. They can be used to explain the reasoning behind the changes, or to highlight the importance of the new features. Paragraphs can often include links to further information or support documentation.
+
+
+___
+
+Maya: bug fix for passing zoom settings if review is attached to subset #4716
+
+Fix for attaching review to subset with pan/zoom option.
+
+
+___
+
+Maya: tile assembly fail in draft - OP-4820 #4416
+
+Tile assembly in Deadline was broken.
+
+Initial bug report revealed other areas of the tile assembly that needed fixing.
+
+
+___
+
+Maya: Yeti Validate Rig Input - OP-3454 #4554
+
+Fix Yeti Validate Rig Input
+
+Existing workflow was broken due to this #3297.
+
+
+___
+
+Scene inventory: Fix code errors when "not found" entries are found #4594
+
+Whenever a "NOT FOUND" entry is present a lot of errors happened in the Scene Inventory:
+- It started spamming a lot of errors for the VersionDelegate since it had no numeric version (no version at all).Error reported on Discord:
+```python
+Traceback (most recent call last):
+ File "C:\Users\videopro\Documents\github\OpenPype\openpype\tools\utils\delegates.py", line 65, in paint
+ text = self.displayText(
+ File "C:\Users\videopro\Documents\github\OpenPype\openpype\tools\utils\delegates.py", line 33, in displayText
+ assert isinstance(value, numbers.Integral), (
+AssertionError: Version is not integer. "None" Kitsu: Sync OP with zou, make sure value-data is int or float #4596
+
+Currently the data zou pulls is a string and not a value causing some bugs in the pipe where a value is expected (like `Set frame range` in Fusion).
+
+
+
+This PR makes sure each value is set with int() or float() so these bugs can't happen later on.
+
+
+
+_(A request to cgwire has also bin sent to allow force values only for some metadata columns, but currently the user can enter what ever they want in there)_
+
+
+___
+
+Max: fix the bug of removing an instance #4617
+
+fix the bug of removing an instance in 3dsMax
+
+
+___
+
+Global | Nuke: fixing farm publishing workflow #4623
+
+After Nuke had adopted new publisher with new creators new issues were introduced. Those issues were addressed with this PR. Those are for example broken reviewable video files publishing if published via farm. Also fixed local publishing.
+
+
+___
+
+Ftrack: Ftrack additional families filtering #4633
+
+Ftrack family collector makes sure the subset family is also in instance families for additional families filtering.
+
+
+___
+
+Ftrack: Hierarchical <> Non-Hierarchical attributes sync fix #4635
+
+Sync between hierarchical and non-hierarchical attributes should be fixed and work as expected. Action should sync the values as expected and event handler should do it too and only on newly created entities.
+
+
+___
+
+bugfix for 3dsmax publishing error #4637
+
+fix the bug of failing publishing job in 3dsMax
+
+
+___
+
+General: Use right validation for ffmpeg executable #4640
+
+Use ffmpeg exec validation for ffmpeg executables instead of oiio exec validation. The validation is used as last possible source of ffmpeg from `PATH` environment variables, which is an edge case but can cause issues.
+
+
+___
+
+3dsmax: opening last workfile #4644
+
+Supports opening last saved workfile in 3dsmax host.
+
+
+___
+
+Fixed a bug where a QThread in the splash screen could be destroyed before finishing execution #4647
+
+This should fix the occasional behavior of the QThread being destroyed before even its worker returns from the `run()` function.After quiting, it should wait for the QThread object to properly close itself.
+
+
+___
+
+General: Use right plugin class for Collect Comment #4653
+
+Collect Comment plugin is instance plugin so should inherit from `InstancePlugin` instead of `ContextPlugin`.
+
+
+___
+
+Global: add tags field to thumbnail representation #4660
+
+Thumbnail representation might be missing tags field.
+
+
+___
+
+Integrator: Enforce unique destination transfers, disallow overwrites in queued transfers #4662
+
+Fix #4656 by enforcing unique destination transfers in the Integrator. It's now disallowed to a destination in the file transaction queue with a new source path during the publish.
+
+
+___
+
+Hiero: Creator with correct workfile numeric padding input #4666
+
+Creator was showing 99 in workfile input for long time, even if users set default value to 1001 in studio settings. This has been fixed now.
+
+
+___
+
+Nuke: Nukenodes family instance without frame range #4669
+
+No need to add frame range data into `nukenodes` (backdrop) family publishes - since those are timeless.
+
+
+___
+
+TVPaint: Optional Validation plugins can be de/activated by user #4674
+
+Added `OptionalPyblishPluginMixin` to TVpaint plugins that can be optional.
+
+
+___
+
+Kitsu: Slightly less strict with instance data #4678
+
+- Allow to take task name from context if asset doesn't have any. Fixes an issue with Photoshop's review instance not having `task` in data.
+- Allow to match "review" against both `instance.data["family"]` and `instance.data["families"]` because some instances don't have the primary family in families, e.g. in Photoshop and TVPaint.
+- Do not error on Integrate Kitsu Review whenever for whatever reason Integrate Kitsu Note did not created a comment but just log the message that it was unable to connect a review.
+
+
+___
+
+Publisher: Fix reset shortcut sequence #4694
+
+Fix bug created in https://github.com/ynput/OpenPype/pull/4676 where key sequence is checked using unsupported method. The check was changed to convert event into `QKeySequence` object which can be compared to prepared sequence.
+
+
+___
+
+Refactor _capture #4702
+
+Paragraphs contain detailed information on the changes made to the product or service, providing an in-depth description of the updates and enhancements. They can be used to explain the reasoning behind the changes, or to highlight the importance of the new features. Paragraphs can often include links to further information or support documentation.
+
+
+___
+
+Hiero: correct container colors if UpToDate #4708
+
+Colors on loaded containers are now correctly identifying real state of version. `Red` for out of date and `green` for up to date.
+
+
+___
+
+Look Assigner: Move Look Assigner tool since it's Maya only #4604
+
+Fix #4357: Move Look Assigner tool to maya since it's Maya only
+
+
+___
+
+Maya: Remove unused functions from Extract Look #4671
+
+Remove unused functions from Maya Extract Look plug-in
+
+
+___
+
+Extract Review code refactor #3930
+
+Trying to reduce complexity of Extract Review plug-in
+- Re-use profile filtering from lib
+- Remove "combination families" additional filtering which supposedly was from OP v2
+- Simplify 'formatting' for filling gaps
+- Use `legacy_io.Session` over `os.environ`
+
+
+___
+
+Maya: Replace last usages of Qt module #4610
+
+Replace last usage of `Qt` module with `qtpy`. This change is needed for `PySide6` support. All changes happened in Maya loader plugins.
+
+
+___
+
+Update tests and documentation for `ColormanagedPyblishPluginMixin` #4612
+
+Refactor `ExtractorColormanaged` to `ColormanagedPyblishPluginMixin` in tests and documentation.
+
+
+___
+
+Improve logging of used app + tool envs on application launch (minor tweak) #4686
+
+Use `app.full_name` for change done in #4682
+
+
+___
+
+Docs/add architecture document #4344
+
+Add `ARCHITECTURE.md` document.
+
+his document attemps to give a quick overview of the project to help onboarding, it's not an extensive documentation but more of a elevator pitch one-line descriptions of files/directories and what the attempt to do.
+
+
+___
+
+Documentation: Tweak grammar and fix some typos #4613
+
+This resolves some grammar and typos in the documentation.Also fixes the extension of some images in after effects docs which used uppercase extension even though files were lowercase extension.
+
+
+___
+
+Docs: Fix some minor grammar/typos #4680
+
+Typo/grammar fixes in documentation.
+
+
+___
+
+Maya: Implement image file node loader #4313
+
+Implements a loader for loading texture image into a `file` node in Maya.
+
+Similar to Maya's hypershade creation of textures on load you have the option to choose for three modes of creating:
+- Texture
+- Projection
+- StencilThese should match what Maya generates if you create those in Maya.
+- [x] Load and manage file nodes
+- [x] Apply color spaces after #4195
+- [x] Support for _either_ UDIM or image sequence - currently it seems to always load sequences as UDIM automatically.
+- [ ] Add support for animation sequences of UDIM textures using the `Maya Look Assigner: Don't rely on containers for get all assets #4600
+
+This resolves #4044 by not actually relying on containers in the scene but instead just rely on finding nodes with `cbId` attributes. As such, imported nodes would also be found and a shader can be assigned (similar to when using get from selection).**Please take into consideration the potential downsides below**Potential downsides would be:
+- IF an already loaded look has any dagNodes, say a 3D Projection node - then that will also show up as a loaded asset where previously nodes from loaded looks were ignored.
+- If any dag nodes were created locally - they would have gotten `cbId` attributes on scene save and thus the current asset would almost always show?
+
+
+___
+
+Maya: Unify menu labels for "Set Frame Range" and "Set Resolution" #4605
+
+Fix #4109: Unify menu labels for "Set Frame Range" and "Set Resolution"This also tweaks it in Houdini from Reset Frame Range to Set Frame Range.
+
+
+___
+
+Resolve missing OPENPYPE_MONGO in deadline global job preload #4484
+
+In the GlobalJobPreLoad plugin, we propose to replace the SpawnProcess by a sub-process and to pass the environment variables in the parameters, since the SpawnProcess under Centos Linux does not pass the environment variables.
+
+In the GlobalJobPreLoad plugin, the Deadline SpawnProcess is used to start the OpenPype process. The problem is that the SpawnProcess does not pass environment variables, including OPENPYPE_MONGO, to the process when it is under Centos7 linux, and the process gets stuck. We propose to replace it by a subprocess and to pass the variable in the parameters.
+
+
+___
+
+Tests: Added setup_only to tests #4591
+
+Allows to download test zip, unzip and restore DB in preparation for new test.
+
+
+___
+
+Maya: Arnold don't reset maya timeline frame range on render creation (or setting render settings) #4603
+
+Fix #4429: Do not reset fps or playback timeline on applying or creating render settings
+
+
+___
+
+Bump @sideway/formula from 3.0.0 to 3.0.1 in /website #4609
+
+Bumps [@sideway/formula](https://github.com/sideway/formula) from 3.0.0 to 3.0.1.
+Commits
+
+
+5b44c1b 3.0.19fbc20a chore: better number regex41ae98e Cleanupc59f35e Move to SidewayMaintainer changes
+@โsideway/formula since your current version.
+
+
+[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot merge` will merge this PR after your CI passes on it
+- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
+- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
+- `@dependabot reopen` will reopen this PR if it is closed
+- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
+- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
+- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
+- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
+- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
+
+You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ynput/OpenPype/network/alerts).
+
+Update artist_hosts_maya_arnold.md #4626
+
+Correct Arnold docs.
+___
+
+Maya: Add "Include Parent Hierarchy" option in animation creator plugin #4645
+
+Add an option in Project Settings > Maya > Creator Plugins > Create Animation to include (or not) parent hierarchy. This is to avoid artists to check manually the option for all create animation.
+
+
+___
+
+General: Filter available applications #4667
+
+Added option to filter applications that don't have valid executable available in settings in launcher and ftrack actions. This option can be disabled in new settings category `Applications`. The filtering is by default disabled.
+
+
+___
+
+3dsmax: make sure that startup script executes #4695
+
+Fixing reliability of OpenPype startup in 3dsmax.
+
+
+___
+
+Project Manager: Change minimum frame start/end to '0' #4719
+
+Project manager can have frame start/end set to `0`.
+
+
+___
+
+maya gltf texture convertor and validator #4261
+
+Continuity of the gltf extractor implementation
+
+Continuity of the gltf extractor https://github.com/pypeclub/OpenPype/pull/4192UPDATE:**Validator for GLSL Shader**: Validate whether the mesh uses GLSL Shader. If not it will error out. The user can choose to perform the repair action and it will help to assign glsl shader. If the mesh with Stringray PBS, the repair action will also check to see if there is any linked texture such as Color, Occulsion, and Normal Map. If yes, it will help to relink the related textures to the glsl shader.*****If the mesh uses the PBS Shader,
+
+
+___
+
+Unreal: New Publisher #4370
+
+Implementation of the new publisher for Unreal.
+
+The implementation of the new publisher for Unreal. This PR includes the changes for all the existing creators to be compatible with the new publisher.The basic creator has been split in two distinct creators:
+- `UnrealAssetCreator`, works with assets in the Content Browser.
+- `UnrealActorCreator` that works with actors in the scene.
+
+
+___
+
+Implementation of a new splash screen #4592
+
+Implemented a new splash screen widget to reflect a process running in the background. This widget can be used for other tasks than UE. **Also fixed the compilation error of the AssetContainer.cpp when trying to build the plugin in UE 5.0**
+
+
+___
+
+Deadline for 3dsMax #4439
+
+Setting up deadline for 3dsmax
+
+Setting up deadline for 3dsmax by setting render outputs and viewport camera
+
+
+___
+
+Nuke: adding nukeassist #4494
+
+Adding support for NukeAssist
+
+For support of NukeAssist we had to limit some Nuke features since NukeAssist itself Nuke with limitations. We do not support Creator and Publisher. User can only Load versions with version control. User can also set Framerange and Colorspace.
+
+
+___
+
+Maya: OP-2630 acescg maya #4340
+
+Resolves #2712
+
+
+___
+
+Default Ftrack Family on RenderLayer #4458
+
+With default settings, renderlayers in Maya were not being tagged with the Ftrack family leading to confusion when doing reviews.
+
+
+___
+
+Maya: Maya Playblast Options - OP-3783 #4487
+
+Replacement PR for #3912. Adds more options for playblasts to preferences/settings.
+
+Adds the following as options in generating playblasts, matching viewport settings.
+- Use default material
+- Wireframe on shaded
+- X-ray
+- X-ray Joints
+- X-ray active component
+
+
+___
+
+Maya: Passing custom attributes to alembic - OP-4111 #4516
+
+Passing custom attributes to alembic
+
+This PR makes it possible to pass all user defined attributes along to the alembic representation.
+
+
+___
+
+Maya: Options for VrayProxy output - OP-2010 #4525
+
+Options for output of VrayProxy.
+
+Client requested more granular control of output from VrayProxy instance. Exposed options on the instance and settings for vrmesh and alembic.
+
+
+___
+
+Maya: Validate missing instance attributes #4559
+
+Validate missing instance attributes.
+
+New attributes can be introduced as new features come in. Old instances will need to be updated with these attributes for the documentation to make sense, and users do not have to recreate the instances.
+
+
+___
+
+Refactored Generation of UE Projects, installation of plugins moved to the engine #4369
+
+Improved the way how OpenPype works with generation of UE projects. Also the installation of the plugin has been altered to install into the engine
+
+OpenPype now uses the appropriate tools to generate UE projects. Unreal Build Tool (UBT) and a "Commandlet Project" is needed to properly generate a BP project, or C++ code in case that `dev_mode = True`, folders, the .uproject file and many other resources.On the plugin's side, it is built seperately with the UnrealAutomationTool (UAT) and then it's contents are moved under the `Engine/Plugins/Marketplace/OpenPype` directory.
+
+
+___
+
+Unreal: Use client functions in Layout loader #4578
+
+Use 'get_representations' instead of 'legacy_io' query in layout loader.
+
+This is removing usage of `find_one` called on `legacy_io` and use rather client functions as preparation for AYON connection. Also all representations are queried at once instead of one by one.
+
+
+___
+
+General: Support for extensions filtering in loaders #4492
+
+Added extensions filtering support to loader plugins.
+
+To avoid possible backwards compatibility break is filtering exactly the same and filtering by extensions is enabled only if class attribute 'extensions' is set.
+
+
+___
+
+Nuke: multiple reformat in baking review profiles #4514
+
+Added support for multiple reformat nodes in baking profiles.
+
+Old settings for single reformat node is supported and prioritised just in case studios are using it and backward compatibility is needed. Warnings in Nuke terminal are notifying users to switch settings to new workflow. Settings are also explaining the migration way.
+
+
+___
+
+Nuke: Add option to use new creating system in workfile template builder #4545
+
+Nuke workfile template builder can use new creators instead of legacy creators.
+
+Modified workfile template builder to have option to say if legacy creators should be used or new creators. Legacy creators are disabled by default, so Maya has changed the value.
+
+
+___
+
+Global, Nuke: Workfile first version with template processing #4579
+
+Supporting new template workfile builder with toggle for creation of first version of workfile in case there is none yet.
+
+
+___
+
+Fusion: New Publisher #4523
+
+This is an updated PR for @BigRoy 's old PR (https://github.com/ynput/OpenPype/pull/3892).I have merged it with code from OP 3.15.1-nightly.6 and made sure it works as expected.This converts the old publishing system to the new one. It implements Fusion as a new host addon.
+
+
+- Create button removed in OpenPype menu in favor of the new Publisher
+- Draft refactor validations to raise PublishValidationError
+- Implement Creator for New Publisher
+- Implement Fusion as Host addon
+
+
+___
+
+TVPaint: Use Publisher tool #4471
+
+Use Publisher tool and new creation system in TVPaint integration.
+
+Using new creation system makes TVPaint integration a little bit easier to maintain for artists. Removed unneeded tools Creator and Subset Manager tools. Goal is to keep the integration work as close as possible to previous integration. Some changes were made but primarilly because they were not right using previous system.All creators create instance with final family instead of changing the family during extraction. Render passes are not related to group id but to render layer instance. Render layer is still related to group. Workfile, review and scene render instances are created using autocreators instead of auto-collection during publishing. Subset names are fully filled during publishing but instance labels are filled on refresh with the last known right value. Implemented basic of legacy convertor which should convert render layers and render passes.
+
+
+___
+
+TVPaint: Auto-detect render creation #4496
+
+Create plugin which will create Render Layer and Render Pass instances based on information in the scene.
+
+Added new creator that must be triggered by artist. The create plugin will first create Render Layer instances if were not created yet. For variant is used color group name. The creator has option to rename color groups by template defined in settings -> Template may use index of group by it's usage in scene (from bottom to top). After Render Layers will create Render Passes. Render Pass is created for each individual TVPaint layer in any group that had created Render Layer. It's name is used as variant (pass).
+
+
+___
+
+TVPaint: Small enhancements #4501
+
+Small enhancements in TVPaint integration which did not get to https://github.com/ynput/OpenPype/pull/4471.
+
+It was found out that `opacity` returned from `tv_layerinfo` is always empty and is dangerous to add it to layer information. Added information about "current" layer to layers information. Disable review of Render Layer and Render Pass instances by default. In most of productions is used only "scene review". Skip usage of `"enabled"` key from settings in automated layer/pass creation.
+
+
+___
+
+Global: color v3 global oiio transcoder plugin #4291
+
+Implements possibility to use `oiiotool` to transcode image sequences from one color space to another(s).
+
+Uses collected `colorspaceData` information about source color spaces, these information needs to be collected previously in each DCC interested in color management.Uses profiles configured in Settings to create single or multiple new representations (and file extensions) with different color spaces.New representations might replace existing one, each new representation might contain different tags and custom tags to control its integration step.
+
+
+___
+
+Deadline: Added support for multiple install dirs in Deadline #4451
+
+SearchDirectoryList returns FIRST existing so if you would have multiple OP install dirs, it won't search for appropriate version in later ones.
+
+
+___
+
+Ftrack: Upload reviewables with original name #4483
+
+Ftrack can integrate reviewables with original filenames.
+
+As ftrack have restrictions about names of components the only way how to achieve the result was to upload the same file twice, one with required name and one with origin name.
+
+
+___
+
+TVPaint: Ignore transparency in Render Pass #4499
+
+It is possible to ignore layers transparency during Render Pass extraction.
+
+Render pass extraction does not respect opacity of TVPaint layers set in scene during extraction. It can be enabled/disabled in settings.
+
+
+___
+
+Anatomy: Preparation for different root overrides #4521
+
+Prepare Anatomy to handle only 'studio' site override on it's own.
+
+Change how Anatomy fill root overrides based on requested site name. The logic which decide what is active site was moved to sync server addon and the same for receiving root overrides of local site. The Anatomy resolve only studio site overrides anything else is handled by sync server. BaseAnatomy only expect root overrides value and does not need site name. Validation of site name happens in sync server same as resolving if site name is local or not.
+
+
+___
+
+Nuke | Global: colormanaged plugin in collection #4556
+
+Colormanaged extractor had changed to Mixin class so it can be added to any stage of publishing rather then just to Exctracting.Nuke is no collecting colorspaceData to representation collected on already rendered images.
+
+Mixin class can no be used as secondary parent in publishing plugins.
+
+
+___
+
+look publishing and srgb colorspace in maya #4276
+
+Check the OCIO color management is enabled before doing linearize colorspace for converting the texture maps into tx files.
+
+Check whether the OCIO color management is enabled before the condition of converting the texture to tx extension.
+
+
+___
+
+Maya: extract Thumbnail "No active model panel found" - OP-3849 #4421
+
+Error when extracting playblast with no model panel.
+
+If `project_settings/maya/publish/ExtractPlayblast/capture_preset/Viewport Options/override_viewport_options` were off and publishing without showing any model panel, the extraction would fail.
+
+
+___
+
+Maya: Fix setting scene fps with float input #4488
+
+Returned value of float fps on integer values would return float.
+
+This PR fixes the case when switching between integer fps values for example 24 > 25. Issue was when setting the scene fps, the original float value was used which makes it unpredictable whether the value is float or integer when mapping the fps values.
+
+
+___
+
+Maya: Multipart fix #4497
+
+Fix multipart logic in render products.
+
+Each renderer has a different way of defining whether output images is multipart, so we need to define it for each renderer. Also before the `multipart` class variable was defined multiple times in several places, which made it tricky to debug where `multipart` was defined. Now its created on initialization and referenced as `self.multipart`
+
+
+___
+
+Maya: Set pool on tile assembly - OP-2012 #4520
+
+Set pool on tile assembly
+
+Pool for publishing and tiling jobs, need to use the settings (`project_settings/deadline/publish/ProcessSubmittedJobOnFarm/deadline_pool`) else fallback on primary pool (`project_settings/deadline/publish/CollectDeadlinePools/primary_pool`)
+
+
+___
+
+Maya: Extract review with handles #4527
+
+Review was not extracting properly with/without handles.
+
+Review instance was not created properly resulting in the frame range on the instance including handles.
+
+
+___
+
+Maya: Fix broken lib. #4529
+
+Fix broken lib.
+
+This commit from this PR broke the Maya lib module.
+
+
+___
+
+Maya: Validate model name - OP-4983 #4539
+
+Validate model name issues.
+
+Couple of issues with validate model name;
+- missing platform extraction from settings
+- map function should be list comprehension
+- code cosmetics
+
+
+___
+
+Maya: SkeletalMesh family loadable as reference #4573
+
+In Maya, fix the SkeletalMesh family not loadable as reference.
+
+
+___
+
+Unreal: fix loaders because of missing AssetContainer #4536
+
+Fixing Unreal loaders, where changes in OpenPype Unreal integration plugin deleted AssetContainer.
+
+`AssetContainer` and `AssetContainerFactory` are still used to mark loaded instances. Because of optimizations in Integration plugin we've accidentally removed them but that broke loader.
+
+
+___
+
+3dsmax unable to delete loaded asset in the scene inventory #4507
+
+Fix the bug of being unable to delete loaded asset in the Scene Inventory
+
+Fix the bug of being unable to delete loaded asset in the Scene Inventory
+
+
+___
+
+Hiero/Nuke: originalBasename editorial publishing and loading #4453
+
+Publishing and loading `originalBasename` is working as expected
+
+Frame-ranges on version document is now correctly defined to fit original media frame range which is published. It means loading is now correctly identifying frame start and end on clip loader in Nuke.
+
+
+___
+
+Nuke: Fix workfile template placeholder creation #4512
+
+Template placeholder creation was erroring out in Nuke due to the Workfile template builder not being able to find any of the plugins for the Nuke host.
+
+Move `get_workfile_build_placeholder_plugins` function to NukeHost class as workfile template builder expects.
+
+
+___
+
+Nuke: creator farm attributes from deadline submit plugin settings #4519
+
+Defaults in farm attributes are sourced from settings.
+
+Settings for deadline nuke submitter are now used during nuke render and prerender creator plugins.
+
+
+___
+
+Nuke: fix clip sequence loading #4574
+
+Nuke is loading correctly clip from image sequence created without "{originalBasename}" token in anatomy template.
+
+
+___
+
+Fusion: Fix files collection and small bug-fixes #4423
+
+Fixed Fusion review-representation and small bug-fixes
+
+This fixes the problem with review-file generation that stopped the publishing on second publish before the fix.The problem was that Fusion simply looked at all the files in the render-folder instead of only gathering the needed frames for the review.Also includes a fix to get the handle start/end that before throw an error if the data didn't exist (like from a kitsu sync).
+
+
+___
+
+Fusion: Updated render_local.py to not only process the first instance #4522
+
+Moved the `__hasRun` to `render_once()` so the check only happens with the rendering. Currently only the first render node gets the representations added.Critical PR
+
+
+___
+
+Fusion: Load sequence fix filepath resolving from representation #4580
+
+Resolves issue mentioned on discord by @movalex:The loader was incorrectly trying to find the file in the publish folder which resulted in just picking 'any first file'.
+
+This gets the filepath from representation instead of taking the first file from listing files from publish folder.
+
+
+___
+
+Fusion: Fix review burnin start and end frame #4590
+
+Fix the burnin start and end frame for reviews. Without this the asset document's start and end handle would've been added to the _burnin_ frame range even though that would've been incorrect since the handles are based on the comp saver's render range instead.
+
+
+___
+
+Harmony: missing set of frame range when opening scene #4485
+
+Frame range gets set from DB everytime scene is opened.
+
+Added also check for not up-to-date loaded containers.
+
+
+___
+
+Photoshop: context is not changed in publisher #4570
+
+When PS is already open and artists launch new task, it should keep only opened PS open, but change context.
+
+Problem were occurring in Workfile app where under new task files from old task were shown. This fixes this and adds opening of last workfile for new context if workfile exists.
+
+
+___
+
+hiero: fix effect item node class #4543
+
+Collected effect name after renaming is saving correct class name.
+
+
+___
+
+Bugfix/OP-4616 vray multipart #4297
+
+This fixes a bug where multipart vray renders would not make a review in Ftrack.
+
+
+___
+
+Maya: Fix changed location of reset_frame_range #4491
+
+Location in commands caused cyclic import
+
+
+___
+
+global: source template fixed frame duplication #4503
+
+Duplication is not happening.
+
+Template is using `originalBasename` which already assume all necessary elements are part of the file name so there was no need for additional optional name elements.
+
+
+___
+
+Deadline: Hint to use Python 3 #4518
+
+Added shebank to give deadline hint which python should be used.
+
+Deadline has issues with Python 2 (especially with `os.scandir`). When a shebank is added to file header deadline will use python 3 mode instead of python 2 which fix the issue.
+
+
+___
+
+Publisher: Prevent access to create tab after publish start #4528
+
+Prevent access to create tab after publish start.
+
+Disable create button in instance view on publish start and enable it again on reset. Even with that make sure that it is not possible to go to create tab if the tab is disabled.
+
+
+___
+
+Color Transcoding: store target_colorspace as new colorspace #4544
+
+When transcoding into new colorspace, representation must carry this information instead original color space.
+
+
+___
+
+Deadline: fix submit_publish_job #4552
+
+Fix submit_publish_job
+
+Resolves #4541
+
+
+___
+
+Kitsu: Fix task itteration in update-op-with-zou #4577
+
+From the last PR (https://github.com/ynput/OpenPype/pull/4425) a comment-commit last second messed up the code and resulted in two lines being the same, crashing the script. This PR fixes that.
+___
+
+AttrDefs: Fix type for PySide6 #4584
+
+Use right type in signal emit for value change of attribute definitions.
+
+Changed `UUID` type to `str`. This is not an issue with PySide2 but it is with PySide6.
+
+
+___
+
+Scene Inventory: Avoid using ObjectId #4524
+
+Avoid using conversion to ObjectId type in scene inventory tool.
+
+Preparation for AYON compatibility where ObjectId won't be used for ids. Representation ids from loaded containers are not converted to ObjectId but kept as strings which also required some changes when working with representation documents.
+
+
+___
+
+SiteSync: host dirmap is not working properly #4563
+
+If artists uses SiteSync with real remote (gdrive, dropbox, sftp) drive, Local Settings were throwing error `string indices must be integers`.
+
+Logic was reworked to provide only `local_drive` values to be overrriden by Local Settings. If remote site is `gdrive` etc. mapping to `studio` is provided as it is expected that workfiles will have imported from `studio` location and not from `gdrive` folder.Also Nuke dirmap was reworked to be less verbose and much faster.
+
+
+___
+
+General: Input representation ids are not ObjectIds #4576
+
+Don't use `ObjectId` as representation ids during publishing.
+
+Representation ids are kept as strings during publishing instead of converting them to `ObjectId`. This change is pre-requirement for AYON connection.Inputs are used for integration of links and for farm publishing (or at least it looks like).
+
+
+___
+
+Shotgrid: Fixes on Deadline submissions #4498
+
+A few other bug fixes for getting Nuke submission to Deadline work smoothly using Shotgrid integration.
+
+Continuing on the work done on this other PR this fixes a few other bugs I came across with further tests.
+
+
+___
+
+Fusion: New Publisher #3892
+
+This converts the old publishing system to the new one. It implements Fusion as a new host addon.
+
+
+- Create button removed in OpenPype menu in favor of the new Publisher
+- Draft refactor validations to raise `PublishValidationError`
+- Implement Creator for New Publisher
+- Implement Fusion as Host addon
+
+
+___
+
+Make Kitsu work with Tray Publisher, added kitsureview tag, fixed sync-problems. #4425
+
+Make Kitsu work with Tray Publisher, added kitsureview tag, fixed sync-problems.
+
+This PR updates the way the module gather info for the current publish so it now works with Tray Publisher.It fixes the data that gets synced from Kitsu to OP so all needed data gets registered even if it doesn't exist on Kitsus side.It also adds the tag "Add review to Kitsu" and adds it to Burn In so previews gets generated by default to Kitsu.
+
+
+___
+
+Maya: V-Ray Set Image Format from settings #4566
+
+Resolves #4565
+
+Set V-Ray Image Format using settings.
+
+
+___
+
+Maya: Xgen (3d / maya ) - #4256
+
+___
+
+#### Brief description
+
+Initial Xgen implementation.
+
+
+
+#### Description
+
+Client request of Xgen pipeline.
+
+
+
+
+___
+
+Data exchange cameras for 3d Studio Max (3d / 3dsmax ) - #4376
+
+___
+
+#### Brief description
+
+Add Camera Family into the 3d Studio Max
+
+
+
+#### Description
+
+Adding Camera Extractors(extract abc camera and extract fbx camera) and validators(for camera contents) into 3dMaxAlso add the extractor for exporting 3d max raw scene (which is also related to 3dMax Scene Family) for camera family
+
+
+
+
+___
+
+Adding path validator for non-maya nodes (3d / maya ) - #4271
+
+___
+
+#### Brief description
+
+Adding a path validator for filepaths from non-maya nodes, which are created by plugins such as Renderman, Yeti and abcImport.
+
+
+
+#### Description
+
+As File Path Editor cannot catch the wrong filenpaths from non-maya nodes such as AlembicNodes, It is neccessary to have a new validator to ensure the existence of the filepaths from the nodes.
+
+
+
+
+___
+
+Deadline: Allow disabling strict error check in Maya submissions (3d / maya / deadline ) - #4420
+
+___
+
+#### Brief description
+
+DL by default has Strict error checking, but some errors are not fatal.
+
+
+
+#### Description
+
+This allows to set profile based on Task and Subset values to temporarily disable Strict Error Checks.Subset and task names should support regular expressions. (not wildcard notation though).
+
+
+
+
+___
+
+Houdini: New publisher code tweak (3d / houdini ) - #4374
+
+___
+
+#### Brief description
+
+This is cosmetics only - the previous code to me felt quite unreadable due to the lengthy strings being used.
+
+
+
+#### Description
+
+Code should do roughly the same, but just be reformatted.
+
+
+
+
+___
+
+3dsmax: enhance alembic loader update function (3d / 3dsmax ) - #4387
+
+___
+
+## Enhancement
+
+
+
+This PR is adding update/switch ability to pointcache/alembic loader in 3dsmax and fixing wrong tool shown when clicking on "Manage" item on OpenPype menu, that is now correctly Scene Inventory (but was Subset Manager).
+
+
+
+Alembic update has still one caveat - it doesn't cope with changed number of object inside alembic, since loading alembic in max involves creating all those objects as first class nodes. So it will keep the objects in scene, just update path to alembic file on them.
+___
+
+Global: supporting `OPENPYPE_TMPDIR` in staging dir maker (editorial / hiero ) - #4398
+
+___
+
+#### Brief description
+
+Productions can use OPENPYPE_TMPDIR for staging temp publishing directory
+
+
+
+#### Description
+
+Studios were demanding to be able to configure their own shared storages as temporary staging directories. Template formatting is also supported with optional keys formatting and following anatomy keys: - root[work | General: Functions for current context (other ) - #4324
+
+___
+
+#### Brief description
+
+Defined more functions to receive current context information and added the methods to host integration so host can affect the result.
+
+
+
+#### Description
+
+This is one of steps to reduce usage of `legacy_io.Session`. This change define how to receive current context information -> call functions instead of accessing `legacy_io.Session` or `os.environ` directly. Plus, direct access on session or environments is unfortunatelly not enough for some DCCs where multiple workfiles can be opened at one time which can heavily affect the context but host integration sometimes can't affect that at all.`HostBase` already had implemented `get_current_context`, that was enhanced by adding more specific methods `get_current_project_name`, `get_current_asset_name` and `get_current_task_name`. The same functions were added to `~/openpype/pipeline/cotext_tools.py`. The functions in context tools are calling host integration methods (if are available) otherwise are using environent variables as default implementation does. Also was added `get_current_host_name` to receive host name from registered host if is available or from environment variable.
+
+
+
+
+___
+
+Houdini: Do not visualize the hidden OpenPypeContext node (other / houdini ) - #4382
+
+___
+
+#### Brief description
+
+Using the new publisher UI would generate a visible 'null' locator at the origin. It's confusing to the user since it's supposed to be 'hidden'.
+
+
+
+#### Description
+
+Before this PR the user would see a locator/null at the origin which was the 'hidden' `/obj/OpenPypeContext` node. This null would suddenly appear if the user would've ever opened the Publisher UI once.After this PR it will not show:Nice and tidy.
+
+
+
+
+___
+
+Maya + Blender: Pyblish plugins removed unused `version` and `category` attributes (other ) - #4402
+
+___
+
+#### Brief description
+
+Once upon a time in a land far far away there lived a few plug-ins who felt like they didn't belong in generic boxes and felt they needed to be versioned well above others. They tried, but with no success.
+
+
+
+#### Description
+
+Even though they now lived in a universe with elaborate `version` and `category` attributes embedded into their tiny little plug-in DNA this particular deviation has been greatly unused. There is nothing special about the version, nothing special about the category.It does nothing.
+
+
+
+
+___
+
+General: Fix original basename frame issues (other ) - #4452
+
+___
+
+#### Brief description
+
+Treat `{originalBasename}` in different way then standard files processing. In case template should use `{originalBasename}` the transfers will use them as they are without any changes or handling of frames.
+
+
+
+#### Description
+
+Frames handling is problematic with original basename because their padding can't be defined to match padding in source filenames. Also it limits the usage of functionality to "must have frame at end of fiename". This is proposal how that could be solved by simply ignoring frame handling and using filenames as are on representation. First frame is still stored to representation context but is not used in formatting part. This way we don't have to care about padding of frames at all.
+
+
+
+
+___
+
+Publisher: Report also crashed creators and convertors (other ) - #4473
+
+___
+
+#### Brief description
+
+Added crashes of creators and convertos discovery (lazy solution).
+
+
+
+#### Description
+
+Report in Publisher also contains information about crashed files caused during creator plugin discovery and convertor plugin discovery. They're not separated into categroies and there is no other information in the report about them, but this helps a lot during development. This change does not need to change format/schema of the report nor UI logic.
+
+
+
+
+___
+
+Maya: Fix Validate Attributes plugin (3d / maya ) - #4401
+
+___
+
+#### Brief description
+
+Code was broken. So either plug-in was unused or it had gone unnoticed.
+
+
+
+#### Description
+
+Looking at the commit history of the plug-in itself it seems this might have been broken somewhere between two to three years. I think it's broken since two years since this commit.Should this plug-in be removed completely?@tokejepsen Is there still a use case where we should have this plug-in? (You created the original one)
+
+
+
+
+___
+
+Maya: Ignore workfile lock in Untitled scene (3d / maya ) - #4414
+
+___
+
+#### Brief description
+
+Skip workfile lock check if current scene is 'Untitled'.
+
+
+
+
+___
+
+Maya: fps rounding - OP-2549 (3d / maya ) - #4424
+
+___
+
+#### Brief description
+
+When FPS is registered in for example Ftrack and round either down or up (floor/ceil), comparing to Maya FPS can fail. Example:23.97 (Ftrack/Mongo) != 23.976023976023978 (Maya)
+
+
+
+#### Description
+
+Since Maya only has a select number of supported framerates, I've taken the approach of converting any fps to supported framerates in Maya. We validate the input fps to make sure they are supported in Maya in two ways:Whole Numbers - are validated straight against the supported framerates in Maya.Demical Numbers - we find the closest supported framerate in Maya. If the difference to the closest supported framerate, is more than 0.5 we'll throw an error.If Maya ever supports arbitrary framerates, then we might have a problem but I'm not holding my breath...
+
+
+
+
+___
+
+Strict Error Checking Default (3d / maya ) - #4457
+
+___
+
+#### Brief description
+
+Provide default of strict error checking for instances created prior to PR.
+
+
+
+
+___
+
+Create: Enhance instance & context changes (3d / houdini,after effects,3dsmax ) - #4375
+
+___
+
+#### Brief description
+
+Changes of instances and context have complex, hard to get structure. The structure did not change but instead of complex dictionaries are used objected data.
+
+
+
+#### Description
+
+This is poposal of changes data improvement for creators. Implemented `TrackChangesItem` which handles the changes for us. The item is creating changes based on old and new value and can provide information about changed keys or access to full old or new value. Can give the values on any "sub-dictionary".Used this new approach to fix change in houdini and 3ds max and also modified one aftereffects plugin using changes.
+
+
+
+
+___
+
+Houdini: hotfix condition (3d / houdini ) - #4391
+
+___
+
+## Hotfix
+
+
+
+This is fixing bug introduced int #4374
+___
+
+Houdini: Houdini shelf tools fixes (3d / houdini ) - #4428
+
+___
+
+#### Brief description
+
+Fix Houdini shelf tools.
+
+
+
+#### Description
+
+Use `label` as mandatory key instead of `name`. Changed how shelves are created. If the script is empty it is gracefully skipping it instead of crashing.
+
+
+
+
+___
+
+3dsmax: startup fixes (3d / 3dsmax ) - #4412
+
+___
+
+#### Brief description
+
+This is fixing various issues that can occur on some of the 3dsmax versions.
+
+
+
+#### Description
+
+On displays with +4K resolution UI was broken, some 3dsmax versions couldn't process `PYTHONPATH` correctly. This PR is forcing `sys.path` and disabling `QT_AUTO_SCREEN_SCALE_FACTOR`
+
+
+
+
+___
+
+Fix features for gizmo menu (2d / nuke ) - #4280
+
+___
+
+#### Brief description
+
+Fix features for the Gizmo Menu project settings (shortcut for python type of usage and file type of usage functionality)
+
+
+
+
+___
+
+Photoshop: fix missing legacy io for legacy instances (2d / photoshop,after effects ) - #4467
+
+___
+
+#### Brief description
+
+`legacy_io` import was removed, but usage stayed.
+
+
+
+#### Description
+
+Usage of `legacy_io` should be eradicated, in creators it should be replaced by `self.create_context.get_current_project_name/asset_name/task_name`.
+
+
+
+
+___
+
+Fix - addSite loader handles hero version (other / sitesync ) - #4359
+
+___
+
+#### Brief description
+
+If adding site to representation presence of hero version is checked, if found hero version is marked to be donwloaded too.Replacing https://github.com/ynput/OpenPype/pull/4191
+
+
+
+
+___
+
+Remove OIIO build for macos (other ) - #4381
+
+___
+
+## Fix
+
+
+
+Since we are not able to provide OpenImageIO tools binaries for macos, we should remove the item from th `pyproject.toml`. This PR is taking care of it.
+
+
+
+It is also changing the way `fetch_thirdparty_libs` script works in that it doesn't crash when lib cannot be processed, it only issue warning.
+
+
+
+
+
+Resolves #3858
+___
+
+General: Attribute definitions fixes (other ) - #4392
+
+___
+
+#### Brief description
+
+Fix possible issues with attribute definitions in publisher if there is unknown attribute on an instance.
+
+
+
+#### Description
+
+Source of the issue is that attribute definitions from creator plugin could be "expanded" during `CreatedInstance` initialization. Which would affect all other instances using the same list of attributes -> literally object of list. If the same list object is used in "BaseClass" for other creators it would affect all instances (because of 1 instance). There had to be implemented other changes to fix the issue and keep behavior the same.Object of `CreatedInstance` can be created without reference to creator object. `CreatedInstance` is responsible to give UI attribute definitions (technically is prepared for cases when each instance may have different attribute definitions -> not yet).Attribute definition has added more conditions for `__eq__` method and have implemented `__ne__` method (which is required for Py 2 compatibility). Renamed `AbtractAttrDef` to `AbstractAttrDef` (fix typo).
+
+
+
+
+___
+
+Ftrack: Don't force ftrackapp endpoint (other / ftrack ) - #4411
+
+___
+
+#### Brief description
+
+Auto-fill of ftrack url don't break custom urls. Custom urls couldn't be used as `ftrackapp.com` is added if is not in the url.
+
+
+
+#### Description
+
+The code was changed in a way that auto-fill is still supported but before `ftrackapp` is added it will try to use url as is. If the connection works as is it is used.
+
+
+
+
+___
+
+Fix: DL on MacOS (other ) - #4418
+
+___
+
+#### Brief description
+
+This works if DL Openpype plugin Installation Directories is set to level of app bundle (eg. '/Applications/OpenPype 3.15.0.app')
+
+
+
+
+___
+
+Photoshop: make usage of layer name in subset name more controllable (other ) - #4432
+
+___
+
+#### Brief description
+
+Layer name was previously used in subset name only if multiple instances were being created in single step. This adds explicit toggle.
+
+
+
+#### Description
+
+Toggling this button allows to use layer name in created subset name even if single instance is being created.This follows more closely implementation if AE.
+
+
+
+
+___
+
+SiteSync: fix dirmap (other ) - #4436
+
+___
+
+#### Brief description
+
+Fixed issue in dirmap in Maya and Nuke
+
+
+
+#### Description
+
+Loads of error were thrown in Nuke console about dictionary value.`AttributeError: 'dict' object has no attribute 'lower'`
+
+
+
+
+___
+
+General: Ignore decode error of stdout/stderr in run_subprocess (other ) - #4446
+
+___
+
+#### Brief description
+
+Ignore decode errors and replace invalid character (byte) with escaped byte character.
+
+
+
+#### Description
+
+Calling of `run_subprocess` may cause crashes if output contains some unicode character which (for example Polish name of encoder handler).
+
+
+
+
+___
+
+Publisher: Fix reopen bug (other ) - #4463
+
+___
+
+#### Brief description
+
+Use right name of constant 'ActiveWindow' -> 'WindowActive'.
+
+
+
+
+___
+
+Publisher: Fix compatibility of QAction in Publisher (other ) - #4474
+
+___
+
+#### Brief description
+
+Fix `QAction` for older version of Qt bindings where QAction requires a parent on initialization.
+
+
+
+#### Description
+
+This bug was discovered in Nuke 11. Fixed by creating QAction when QMenu is already available and can be used as parent.
+
+
+
+
+___
+
+General: Remove 'openpype.api' (other ) - #4413
+
+___
+
+#### Brief description
+
+PR is removing `openpype/api.py` file which is causing a lot of troubles and cross-imports.
+
+
+
+#### Description
+
+I wanted to remove the file slowly function by function but it always reappear somewhere in codebase even if most of the functionality imported from there is triggering deprecation warnings. This is small change which may have huge impact.There shouldn't be anything in openpype codebase which is using `openpype.api` anymore so only possible issues are in customized repositories or custom addons.
+
+
+
+
+___
+
+docs-user-Getting Started adjustments (other ) - #4365
+
+___
+
+#### Brief description
+
+Small typo fixes here and there, additional info on install/ running OP.
+
+
+
+
+___
+
+Renderman support for sample and display filters (3d / maya ) - #4003
+
+___
+
+#### Brief description
+
+User can set up both sample and display filters in Openpype settings if they are using Renderman as renderer.
+
+
+
+#### Description
+
+You can preset which sample and display filters for renderman , including the cryptomatte renderpass, in Openpype settings. Once you select which filters to be included in openpype settings and then create render instance for your camera in maya, it would automatically tell the system to generate your selected filters in render settings.The place you can find for setting up the filters: _Maya > Render Settings > Renderman Renderer > Display Filters/ Sample Filters_
+
+
+
+
+___
+
+Maya: Create Arnold options on repair. (3d / maya ) - #4448
+
+___
+
+#### Brief description
+
+When validating/repairing we previously required users to open render settings to create the Arnold options. This is done through code now.
+
+
+
+
+___
+
+Update Asset field of creator Instances in Maya Template Builder (3d / maya ) - #4470
+
+___
+
+#### Brief description
+
+When we build a template with Maya Template Builder, it will update the asset field of the sets (creator instances) that are imported from the template.
+
+
+
+#### Description
+
+When building a template, we also want to define the publishable content in advance: create an instance of a model, or look, etc., to speed up the workflow and reduce the number of questions we are asked. After building a work file from a saved template that contains pre-created instances, the template builder should update the asset field to the current asset.
+
+
+
+
+___
+
+Blender: fix import workfile all families (3d / blender ) - #4405
+
+___
+
+#### Brief description
+
+Having this feature related to workfile available for any family is absurd.
+
+
+
+
+___
+
+Nuke: update rendered frames in latest version (2d / nuke ) - #4362
+
+___
+
+#### Brief description
+
+Introduced new field to insert frame(s) to rerender only.
+
+
+
+#### Description
+
+Rendering is expensive, sometimes it is helpful only to re-render changed frames and reuse existing.Artists can in Publisher fill which frame(s) should be re-rendered.If there is already published version of currently publishing subset, all representation files are collected (currently for `render` family only) and then when Nuke is rendering (locally only for now), old published files are copied into into temporary render folder where will be rewritten only by frames explicitly set in new field.That way review/burnin process could also reuse old files and recreate reviews/burnins.New version is produced during this process!
+
+
+
+
+___
+
+Feature: Keep synced hero representations up-to-date. (other ) - #4343
+
+___
+
+#### Brief description
+
+Keep previously synchronized sites up-to-date by comparing old and new sites and adding old sites if missing in new ones.Fix #4331
+
+
+
+
+___
+
+Maya: Fix template builder bug where assets are not put in the right hierarchy (other ) - #4367
+
+___
+
+#### Brief description
+
+When buiding scene from template, the assets loaded from the placeholders are not put in the hierarchy. Plus, the assets are loaded in double.
+
+
+
+
+___
+
+Bump ua-parser-js from 0.7.31 to 0.7.33 in /website (other ) - #4371
+
+___
+
+Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.31 to 0.7.33.
+Changelog
+
+
+Version 0.7.31 / 1.0.2
+
+
+Version 0.7.32 / 1.0.32
+
+
+Version 0.7.33 / 1.0.33
+
+
+Version 0.8
+Commits
+
+
+f2d0db0 Bump version 0.7.33a6140a1 Remove unsafe regex in trim() functiona886604 Fix #605 - Identify Macintosh as Apple deviceb814bcd Merge pull request #606 from rileyjshaw/patch-17f71024 Fix documentationc239ac5 Merge pull request #604 from obecerra3/master8d3c2d3 Add new browser: Cobaltd11fc47 Bump version 0.7.32b490110 Merge branch 'develop' of github.com:faisalman/ua-parser-jscb5da5e Merge pull request #600 from moekm/develop
+
+
+[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot merge` will merge this PR after your CI passes on it
+- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
+- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
+- `@dependabot reopen` will reopen this PR if it is closed
+- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
+- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
+- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
+- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
+- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
+
+You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/ynput/OpenPype/network/alerts).
+
+Docs: Question about renaming in Kitsu (other ) - #4384
+
+___
+
+#### Brief description
+
+To keep memory of this discussion: https://discord.com/channels/517362899170230292/563751989075378201/1068112668491255818
+
+
+
+
+___
+
+New Publisher: Fix Creator error typo (other ) - #4396
+
+___
+
+#### Brief description
+
+Fixes typo in error message.
+
+
+
+
+___
+
+Chore: pyproject.toml version because of Poetry (other ) - #4408
+
+___
+
+#### Brief description
+
+Automatization injects wrong format
+
+
+
+
+___
+
+Fix - remove minor part in toml (other ) - #4437
+
+___
+
+#### Brief description
+
+Causes issue in create_env and new Poetry
+
+
+
+
+___
+
+General: Add project code to anatomy (other ) - #4445
+
+___
+
+#### Brief description
+
+Added attribute `project_code` to `Anatomy` object.
+
+
+
+#### Description
+
+Anatomy already have access to almost all attributes from project anatomy except project code. This PR changing it. Technically `Anatomy` is everything what would be needed to get fill data of project.
+
+```
+
+{
+
+ "project": {
+
+ "name": anatomy.project_name,
+
+ "code": anatomy.project_code
+
+ }
+
+}
+
+```
+
+
+___
+
+Maya: Arnold Scene Source overhaul - OP-4865 (other / maya ) - #4449
+
+___
+
+#### Brief description
+
+General overhaul of the Arnold Scene Source (ASS) workflow.
+
+
+
+#### Description
+
+This originally was to support static files (non-sequencial) ASS publishing, but digging deeper whole workflow needed an update to get ready for further issues. During this overhaul the following changes were made:
+
+- Generalized Arnold Standin workflow to a single loader.
+
+- Support multiple nodes as proxies.
+
+- Support proxies for `pointcache` family.
+
+- Generalized approach to proxies as resources, so they can be the same file format as the original.This workflow should allow further expansion to utilize operators and eventually USD.
+
+
+
+
+___
+
+