We are excited to release v1.1 of our integrations. This release includes a whole new take on our default configuration, updates to our new publisher, and updates to how the communication between Shotgun Desktop and Shotgun Web works.
Our default configuration has been updated to use the new Publisher, to take advantage of the new Software entity in Shotgun, and to make updating easier via a new organization. These changes allow a seamless transition for people using our integrations from running without a configuration to running with one.
We have also added new features to our new Publisher which make editing settings across multiple selections easier and give you the ability to embed custom UI for different types of publishes. Additionally we have updated the default hooks for the publisher so that they cover the functionality from the old default configuration while moving the engine specific logic into the engine itself.
The protocol for how Shotgun Desktop works with Shotgun Web has been updated. We have optimized the protocol so anybody running tools from within Shotgun should see a significant improvement in how quickly those menus are populated (note that we will need to recache the menus, which will happen when somebody first uses the update). The commands themselves now come from the tk-shotgun instance in the environment returned by the pick_environment core hook, which allows much more flexibility in deciding what menu items should show up where.
The new default configuration
The initial release of our out of the box integrations had a few features that were available as long as your project did not have a custom configuration. With our new default configuration, all the new functionality is available along with everything that was in our old configuration. This includes:
- An update to our project configuration wizard to make the new configuration available while preserving the ability to keep on using the tried and true configuration that we've had for years.
- A new directory structure that organizes the configuration into easier to find and easier to update files.
- An updated pick_environment hook that deprecates the use of the old shotgun_*.yml environment files.
- An update to use the new tk-multi-publisher2, with updated hooks that have been moved into the app and engines. The updated hooks are compatible with how the publisher works without a configuration, but adds in the extra functionality that becomes available once you have a configuration (such as the ability to publish our custom Nuke and Houdini nodes).
- The new hooks support publishing to a location specified via a template.
- The new hooks are implemented in their corresponding engine (e.g. in tk-maya for Maya).
For more information on the default configuration changes, please see our Default Configuration Update FAQ.
We've finished up some features that will make our new publisher more powerful and easier to use:
- You can now add custom UI to a type of publish to give artists the power to control aspects of the publish.
- It is now possible to set common settings (such as thumbnail and description) across multiple publish items at the same time.
- Toolkits let you know the details about warnings and errors without needing to switch over to the log view.
Websocket protocol updates
Last but not least, with this release we are enabling an update to the protocol that Shotgun Web uses to populate its action menus and that implements local file linking. The protocol updates speed up the way we populate these menus and implements a more flexible environment lookup. Now rather than looking for an environment corresponding to the Shotgun entity type a menu is displaying (such as shotgun_asset.yml) we use the pick environment core hook to find an environment containing an instance of the tk-shotgun engine and use the configuration of that engine to populate the menu. For example, you can now have a different launchers for Asset versus Shot tasks, or different launchers per pipeline step.
The old protocol is still available via an environment variable (SHOTGUN_ENABLE_LEGACY_BROWSER_INTEGRATION_WORKAROUND) if you want to compare the old behavior to the new. Note that the old protocol requires shotgun_asset.yml style environment files to populate the menus in Shotgun, which the new default protocol does not have. This fallback is only compatible with the legacy configuration.
- Path cache optimizations. Removed inner loop for secondary entities and batched find queries into smaller chunks. 
- synchronize_folders command was looking at every FilesystemLocation entity on the site, causing large sync times when there were a lot of entities. This optimization ensures that performing a full sync of the path cache now only considers FilesystemLocation entities that belong to the current project. 
- Introduced the SHOTGUN_DISABLE_APPSTORE_ACCESS environment variable to disable all attempts to talk to the Shotgun app store. 
- Updated pipeline_configuration.yml, shotgun.yml, interpreter_*.cfg, tank, and tank.bat for compatibility with Rez style environment management. 
- Previously, when an unhandled exception bubbled up, we replied to the web app with the full exception stack. This fix ensures we reply with a general error message and log the full exception. If debug logging is turned on, we do still reply with the full exception. 
- Nuke read node frame ranges were not set when loaded from the loader app when templates were not available. This fix ensures we correctly determine the start/end frame of an image sequence, regardless of whether a template can be used to parse the file name or not. 
- unregister_folders command failed when unregistered a large amount of folders. This fix resolves that issue by batching up any large deletions into batched sql queries where 200 items are deleted at a time. 
- v0000 files were incorrectly being published as v1. This fix publishes the correct name. 
- Files with UTF-8 characters were not supported. This fix enables the publishing of files with UTF-8 characters. 
- Descriptors had no flexibility in where they could be cached. This fix introduced the SHOTGUN_BUNDLE_CACHE_PATH environment variable to allow control over where descriptors are cached. 
- Hook templates were breaking. This fix ensures hook templates from run properly. 
New storage mapping interface during project setup, as well as a number of improved features and bug fixes, including:
- Using tk-config-default2 as a site configuration to run Shotgun Desktop
- Adding a local_properties property to publish items in tk-multi-publish2 for storing data that is specific to the current plugin
- Fixing an issue that prevents Shotgun Integration to work in Nuke Studio 9.0.
- New storage mapping interface during project setup. [SG-2845]
- Roots required by a configuration are no longer required to match the name of a local storage defined in SG.
The Toolkit Setup wizard will ask you to map each storage root required by the configuration to a local storage in Shotgun.
Storage mappings can be defined explicitly in the configuration's
roots.ymlfile by specifying
<id>is the id of a local storage defined in site preferences
The default root can also be defined explicitly in
roots.ymlby specifying a default: true key/value pair
- Updated the git-based config example we provide in the project setup wizard to use tk-config-default2. [SG-2636]
- We can now use tk-config-default2 as a site configuration to run Shotgun Desktop.
- sgtk_from_path can now be used with site-wide pipeline configurations. [SG-4715]
- Better error handling if a pipeline configuration uses a roots.yml but it's project does not have a tank_name set. [SG-4686]
- When unregistering folders via entity type and id, if the entity is retired (or just doesn’t exist), we now suggest to the user that they try to unregister the folder(s) by path instead of by entity. [SG-2818]
- Added local_properties property to publish items for storing data that is specific to the current plugin. [SG-4299]
- Fixed path length issues on Windows. Copying the core into a configuration will no longer carry over tests and documentation. [SG-4717]
- Updated the Python API to 3.0.36, which adds support for downloads and uploads when using SHOTGUN_API_CACERTS and properly handles malware scanning error codes from the server. [SG-4718]
- The Delivery entity is now supported by the folder creation and unregistering. A big thanks to Patrick Macdonald and Halo VFX for his contribution to this feature. [SG-4729]
- A Sgtk.templates_from_path method is now available to retrieve all templates which match a given path. A big thanks to Patrick Macdonald and Halo VFX for his contribution to this feature. [SG-2830]
- Added ability to sort ./tank commands by name when listing all commands. [SG-4783]
- Shotgun Desktop was crashing on startup if the desktopstartup framework was locked to an old version or when using an old Shotgun Desktop installer, v1.3.6 or before, for the first time. This fix ensures that Shotgun Desktop does not crash on startup. [SG-4816]
- As of tk-core v0.18.141, a shared core couldn’t be used to launch project actions if site-wide configurations were found that could be used with that project. This fix ensures a shared core can launch project actions. [SG-4798]
- There was an issue that prevented Shotgun integrations from working in Nuke Studio 9.0. This fix ensures that Shotgun integration works fine in Nuke Studio 9.0. [SG-2631]
There was an issue where folder creation symbolic links did not correctly support references to list fields. With this fix, it is now possible to define symbolic links referencing for example Asset.sg_asset_type as part of the folder schema. [SG-4785]
Improved Workfiles2 performance with Step filtering for Tasks and deferred queries, as well as a number of improved features, including:
- Updated Shotgun’s integration with 3dsMax for 3ds Max 2019,
- Hook methods for building custom widgets for each processor we provide in tk-hiero-export, and
- New descriptor tokens and multi-level folder creation.
- Improved Workfiles2 performances with Step filtering for Tasks and deferred queries. 
- It is now possible to reduce the amount of data fetched from Shotgun for Tasks by only retrieving Tasks for a given set of Pipeline Steps. Step filtering is controlled by a small piece of the application under entity tabs, and is saved in user settings when closing the application and restored when opening it.
- A new
sub_hierarchysetting is now available to run two steps queries, with the second query being deferred until fetching children from Shotgun is really needed—typically when the user expands the tree view. Not systematically fetching a huge amount of data from Shotgun when the application is started can greatly improve performance.
- Updated Shotgun’s integration with 3dsMax for 3ds Max 2019. 
- Provided hook methods for building custom widgets for each processor we provide in tk-hiero-export. This allows for custom preset properties to be created, and those properties then being used to set/initialize the custom widgets. In addition, additional hook methods have been added to allow for customization of if/how Shots, Cuts, and CutItems are created/updated during the export process. A big thanks to Dashiel Bivens and CBS Digital for his contribution to this feature. 
- It is now possible to define Shotgun Entity folder schemas that can span multiple folders. It is also possible to include a regular expression syntax to allow for the extraction of substrings from Shotgun values. This follows the same syntax and format as the subset token in the template system. 
- Path-based descriptors in environment files can now use the CONFIG_FOLDER to refer to the folder containing the configuration files (core, hooks, env) in a pipeline configuration. 
- The clone command has been adjusted so that it will fail quickly if the user does not have permissions to modify/create PC entities in Shotgun, and it'll do so without having copied any data on disk prior to the failure. 
- In Shotgun Desktop, you now see a message saying ”Retrieving configuration…” when downloading zipped configurations from Shotgun. 
- Implemented comparison logic for RPC proxy objects in Photoshop CC. This implements equal (==) and not-equal (!=) magic methods for ProxyWrapper and adds the associated RPC logic to compare the wrapped objects in the remote interpreter. 
- Added support for a tkdeploy file in tk-framework-desktopserver which will be used when uploading to the app store. This file operates similar to a gitignore file and is used to exclude files when the app store zip archive is created. 
- There was a high CPU usage issue on CentOS when using PySide 2. This fix ensures there is no more high CPU usage with our integration. 
- There was an issue that caused Shotgun Panel apps to not load when launched from Houdini’s native pane tab menu. This fix ensures the Shotgun panel loads correctly. 
- Flame Assists and Flare were not launching properly with the Shotgun Integration advanced setup auto-path detection. This fix ensures Flame Assist and Flare launch properly. 
- Exceptions raised from executing code were not caught in Shotgun Python console. This fix ensures exceptions are caught and also that they are logged to the engine. 
- In cases where the tank name had a slash in it, and so represents two folders in the hierarchy, it caused an issue where publishes registered incorrectly in Shotgun. This fix ensures publishes in projects where the project contains multiple folders to register correctly in Shotgun. 
- Sometimes, calling show() and exec_() caused a Qt issue where we were getting an invisible modal QDialog, causing the host application to freeze. This fix ensures the modal QDialog is showing up correctly. 
- The Shotgun descriptor using local bundle cache could cause issues with long file names on Windows. This fix shortens the file names used by the Shotgun descriptor to avoid running into the filename length limit on Windows. 
- There was an issue with zipped configurations where a core cached inside it's bundle_cache folder would still be downloaded from the AppStore or Git instead of being pulled from the cache. This fix ensures we are always looking at the cache before downloading a core. 
- There was an issue that prevented the use of procedural hook based evaluation on complex environment properties such as list and dicts. This fix ensures they are correctly handle. 
We have a new drop-down menu in the login dialog, as well as a number of improved features, such as:
- Polish and bug fixes for Publisher,
- Ability to put all configuration dependencies inside a sub-folder named bundle_cache, and
- Platform improvements around bootstrapping.
- The login dialog now remembers the list of the 8 most recent sites and users you have used, and displays them. You can also start typing the name of a site or user to filter down the list’s content. 
- The Publish app has a new app setting, enable_manual_load, which defaults to True. When set to False, it no longer shows the ’splash’ screen which lets you load/drag and drop files or browse to them and turns off the drop zone in the left hand side tree view so that items cannot be dropped in there. 
- The tk-multi-demo app now has a context selector widget demo. 
- When using a descriptor-based pipeline configuration, it is now possible to put all its dependencies inside a sub-folder named bundle_cache. It means that you can now store an entire pipeline configuration (hooks, environment and bundles) inside Shotgun so it can be deployed anywhere. 
- When using a descriptor-based pipeline configuration, the contents of the configuration (e.g., tk-config-basic) are no longer copied inside the pipeline configuration, providing a small speed boost and reducing the risk of locked files when updating the pipeline configuration. Those folders will be read directly from where they are stored on disk, i.e., the bundle cache for a shotgun, git, or app_store descriptor, or at the location where path and dev descriptors point to. 
- The path to the log file is now exposed via a log_file property on core Logger objects. 
- Publish with a bad template now has better error handling. 
- The Shotgun utils framework now performs a cached data clean up when it is loaded, only for the sg, sg_nav and thumbs cached folders. Files which have not been modified or accessed in the last 60 days are removed to prevent the cache to grow indefinitely. 
- In some circumstances, only the new records added in Shotgun since the previous launch of an app using a ShotgunModel would be added to the model and appear in tree views. This fix ensures that all records always appear in tree views. 
- There were styling issues with Houdini 16+ versions, where some of our style changes bleed into Houdini’s dialogs. This fix ensures our style changes are not bleed into Houdini’s dialogs. 
- The Quick Review app was not working if the playlist status field was missing. This fix ensures that the Quick Review app is no longer looking for the playlist status field. 
- There was an issue which prevented you from configuring the loader in a way so that you would be browsing Versions in the left hand side tree and see the publishes associated with that version. This fix ensures you see the publishes associated with that version. 
- With the Shotgun Standard Integration workflow, the frame range was not set correctly after doing a create read node from Shotgun Panel. This fix ensures that the frame range is always set correctly. 
- With the Photoshop CC standard integration, publishing versioned files always converted publishes to .psd file format. This fix ensures tk-multi-publish2 no longer forces the use of the .psd extension. 
- Sometimes an error was showing up if the .version file was missing. This fix ensures the Photoshop CC extension is now more fault tolerant to a missing .version file. 
- When roaming user profiles were used on a Windows network, using the CEP api to get the path to the extension’s root folder returned the path with any $ characters encoded as %24. This fix ensures that the extension initializes properly. 
- It was not possible to load files having utf-8 encoded names. This fix ensures Loader2 app handles files have utf-8 encoded names correctly. 
- There was a Shotgun Desktop Windows-only issue, where errors raised during bootstrap were not reported to the user. This fix ensures errors are reported successfully. 
- Shotgun picked storages not used by Toolkit when there were multiple storages overlaps in Shotgun. This fix allows Toolkit to specify the storage into which a file needs to be stored. 
- Projects with configurations that used a descriptor without `tank_name` defined sometimes led to bootstrap failure. This fix ensures that no failure happen when a pipeline configuration in Shotgun does not have a tank_name defined. 
- Sometimes after a core swap, Shotgun connection objects were created with an older Core API. This fix ensures that the ShotgunUser instantiated with a previous version of the API is re-instantiated with a newer version of the API. 
We have a new quickreview app for Nuke, as well as a number of improved features, such as:
- Polish and bug fixes for publisher,
- Added support for single sign-on (SSO) beta,
- Motionbuilder thumbnail support,
- Platform improvements around bootstrapping and git, and
- New formalized hook interfaces.
- New Quickreview app for Nuke that works with or without an advanced project setup, that makes it easy to submit Nuke renders for review in Shotgun. 
- Added support for SSO beta. Adds the necessary authentication logic for Toolkit to be able to interact with Shotgun SSO-enabled sites. 
- It is now possible to set a thumbnail in the summary of the Publisher items tree that gets inherited by all plugins that accept a thumbnail. 
- Improved UX around image sequence publishing by adding an additional browse button on the drag/drop screen. 
- Entire publish item is now draggable in the publisher items tree. 
- Added validate_on_publish setting to Publisher which allows disabling of validation when Publish is clicked. 
- Allowed renders published in Flame to be loaded inside of Nuke via the standard Shotgun integrations. 
- Moved Flame family icons launcher from Finishing Tools to Creative Tools group in Shotgun Desktop. 
- The Toolkit project setup wizard and project setup command now recognizes the
[config]/core/core_api.ymlfile. If such a file is present, the project setup wizard will automatically localize the new project and pull in whatever core version is defined in the file. 
- Setup wizard supports zip downloaded directly from Github. It is now possible to download a zipped up tag or branch from Github's webui and use that in the desktop setup wizard. 
- Improved Git related error messages. [37578, 40633]
- Clearer error messages in startup and bootstrap. We have cleaned up several places where technical, unhelpful, or misleading error messages where being displayed when Toolkit was starting up. 
- Collector/Plugin interfaces in Publisher now defined in the app itself, allowing for default implementation and doc generation. Read more in our developer documentation. 
- Added support for base class restriction for hook interfaces. This change adds a new, optional
base_classargument to the various hook methods in core. 
- Flexible primary root name allows use of any arbitrary name for the primary storage in single root configurations. 
- Introduced a new context selection widget, first introduced in tk-multi-publish2 and now moved in tk-framework-qtwidgets. 
- Thumbnails were not showing up inside MotionBuilder. This fix ensures they are showing up correctly. 
- Nuke promoted write knobs were reverting to their preset’s default value. This fix ensures new values are kept. 
- There was a slowdown issue in Photoshop CC when using the long/deep folder path. This fix ensures no more slowdown happens with the long/deep folder path. 
- There was an RPC error when opening Workfiles2 app in Photoshop CC. This fix ensures no more RPC error appears. 
- Maya playblast and render images collection paths were hard coded directory names. This fix ensures they will write to the right folders configured for the project. 
- Previously, it was not possible to bootstrap into our default configs if a configuration had been launched via the bootstrap API rather than via a traditional 'project setup' route. This fix ensures that all types of configuration arrangements are supported by bootstrap and descriptor based pipeline configurations. 
- There were some errors with tank commands, like cache_apps, when running against a Git repo on a project config having UNC path. This fix provides Git support for UNC paths on Windows. 
- A regression was introduced in tk-core
v0.18, causing the
.gitfolder not to be copied in certain situations (clone config, push config, etc). This fix ensures the
.gitfolder is copied during those maintenance operations. 
Better support for running configurations from zip files uploaded directly to Shotgun. We fixed a file locking scenarios that could cause an update to fail, improved support for sharing of cache data, and made improvements and bug fixes for Publish2 and different engines and apps.
- Added expand/collapse indicators to publish items inside Publish2 app. 
- Added an option to the publish2 summary overlay that allows going back to the publish page after a publish has been performed. 
- Added display_name and display_action_name settings to the Publish2 app, allowing a TD to configure how it appears on the Shotgun menu. 
- Configuration option descriptions have been updated in the Advanced Project Setup Wizard. 
- Added support for new Shotgun fields PipelineConfiguration.uploaded_config and PipelineConfiguraton.sg_uploaded_config, which configurations can be zipped and uploaded directly to. 
- Thumbnails and Shotgun queries are now cached at the site level, instead of being cached per project, pipeline configuration, and plugin ID. 
- Added tk-multi-publish2 and tk-multi-loader2 hooks inside tk-flame. 
- Added Shotgun Site URL on the project context item in the work area information. 
- When in a project with a classic config, if you selected the reload and restart option from the project context menu in the top right, then it would duplicate all the options in the menu. This fix ensures no more duplication happens. 
- Deleting items prevented them from being dropped again in Publish2 app. This fix ensures you can add them back again. 
- When a user had no work or published files in their sandbox, and chose to open a work file from another users sandbox, it threw an error. This fix ensures no more errors are thrown and that the file opens correctly. 
- On Windows there were some file locking scenarios that could cause an update to fail.
This fix provides improvements and cleanup of bootstrap resolver logic to avoid an update to fail. 
- With SW entities, the engine name was no longer configured and was not guaranteed to be available to the launch hooks. We now supply the engine name to the hooks. 
- The version number was missing in the version name after doing a publish from Photoshop CC via the Publish2 app. This fix ensures the version number gets added to version name.