diff --git a/website/docs/addon_applications_admin.md b/website/docs/addon_applications_admin.md index 5e50db96..ee975e0d 100644 --- a/website/docs/addon_applications_admin.md +++ b/website/docs/addon_applications_admin.md @@ -15,9 +15,12 @@ import versions from '@site/docs/assets/json/Ayon_addons_version.json' {versions.Applications_Badge} -## Introduction -The Applications addon streamlines the setup of applications and tools across your studio. It empowers you to set executable paths and startup environments, with support for various operating systems including Windows, Linux, and macOS. +## Applications Addon Features + +### Applications, Tools and Filters + +The Applications addon streamlines the setup of applications and tools across your studio. It allows you to set executable paths and startup environments, with support for various operating systems including Windows, Linux, and macOS. :::info Please note that the addon does not differentiate between different Linux distributions. @@ -30,6 +33,22 @@ The Addon features two primary settings categories: Definitions and Filters: 1. **Definitions:** available only in studio settings, allows to define all possible applications and tools that can be used across all projects. 2. **Filters:** defines when certain applications and tools are used on project level. This filters whether a certain application or tool should be enabled in a certain launch context, like a specific task type or project-wide. + +### Applications Web Actions + +:::info +The web actions feature requires AYON Server version `1.3.0` or higher, core addon version `0.4.4` or higher, and Launcher version `1.1.0` or higher. + +Web actions run through **shims**, which are automatically set up when users install the AYON launcher version `1.1.0` or higher. +::: + +Web actions let you launch applications directly through the AYON web server. You can find these actions in the [details panel](artist_details_panel.md). + +The application addon handles the logic for web actions. Currently, there are no specific settings for web actions. + +The application web actions are generated from your application's definitions in your production or development bundles, depending on the developer mode setting, and they adhere to your application’s filter settings. + + ## Applications Addon Settings ### Show only available applications ![](assets/applications/show_only_available_apps.png) diff --git a/website/docs/addon_core_settings.md b/website/docs/addon_core_settings.md index 00b32ea9..3bfd8e71 100644 --- a/website/docs/addon_core_settings.md +++ b/website/docs/addon_core_settings.md @@ -2,6 +2,8 @@ id: addon_core_settings title: Core addon settings sidebar_label: Core addon settings +description: AYON core addon settings documentations for admins. +toc_max_heading_level: 5 --- import ReactMarkdown from "react-markdown"; @@ -206,15 +208,15 @@ Notable parameters: - **`Colorspace`** - target colorspace, which must be available in used color config. (If `Transcoding type` is `Use Colorspace` value in configuration is used OR if empty value collected on instance from DCC). - **`Display & View`** - display and viewer colorspace. (If `Transcoding type` is `Use Display&View` values in configuration is used OR if empty values collected on instance from DCC). - **`Arguments`** - special additional command line arguments for `oiiotool`. -- **[`Tags`](#tags)** +- **[`Tags`](#tags)** - Add additional tags to representation. #### Examples Example here describes use case for creation of new color coded review of png image sequence. Original representation's files are kept intact, review is created from transcoded files, but these files are removed in cleanup process. -![core_oiio_transcode](assets/core_oiio_transcode.png) +![core_oiio_transcode](assets/core/admin/oiio_transcode_example.png) Another use case is to transcode in Maya only `beauty` render layers and use collected `Display` and `View` colorspaces from DCC. -![core_oiio_transcode_in_Maya](assets/core_oiio_transcode2.png) +![core_oiio_transcode_in_Maya](assets/core/admin/oiio_transcode_example2.png) ### Extract Review diff --git a/website/docs/addon_deadline_admin.md b/website/docs/addon_deadline_admin.md index 621fe7ce..bd898b42 100644 --- a/website/docs/addon_deadline_admin.md +++ b/website/docs/addon_deadline_admin.md @@ -115,6 +115,23 @@ It submits a dependent AYON Job to publish the rendered images. 3. **+ icon:** Add more AOV regexes 2. **+ icon:** Add more filters +### Add AYON server to farm job + +> Setting Location: `ayon+settings://deadline/publish/CollectAYONServerToFarmJob` + +![](assets/deadline/add_ayon_server_to_farm_job.png) + +:::tip +This feature is handy for submissions from a separate AYON dev server. +::: + +When enabled, submit your current `AYON_SERVER_URL` with the job to enforce using your current server. This requires modifying the Deadline AYON plugin configuration (`Deadline monitor > Tools > Configure Plugins > AYON`) to add additional AYON servers. + +Additional servers should follow this format: `{server url}@{token}`, e.g., `http://11.2.3.47@myapikey1`. + +![](assets/deadline/additional_ayon_servers.png) + + ## Troubleshooting diff --git a/website/docs/addon_resolve_admin.md b/website/docs/addon_resolve_admin.md index 5bbd4ef9..4b1e2c93 100644 --- a/website/docs/addon_resolve_admin.md +++ b/website/docs/addon_resolve_admin.md @@ -17,8 +17,9 @@ import TabItem from '@theme/TabItem'; ## Resolve requirements Resolve uses a separate Python interpreter (it does not come with Python itself). The interpreter needs to have installed PySide2 (or PySide6 if on MacOS) and OpenTimelineIO dependencies for Ayon to work correctly. Bellow you can find instructions on how to install them into an installed Python of your choice. +- Resolve 19 - our recommended version range `Python 3.9.x` (in complience with Ayon), also been tested with `Python 3.10.x` +- Resolve 18 - our recommended version range `Python 3.9.x` (in complience with Ayon) - Resolve 17 - our recommended version `Python 3.6.2` -- Resolve 18 - our recommended version range `Python 3.10.x` (in complience with Ayon) :::warning Resolve Studio is the only version that works with the Ayon toolkit because of external scripting requirements which the free edition of Resolve is lacking. @@ -78,11 +79,16 @@ python3 -m pip install PySide6 ### OpenTimelineIO -:::warning Permissions -Installation guide for OpenTimelineIO in Python 3.6 can be found [here](https://github.com/ynput/OpenPype/blob/develop/openpype/hosts/resolve/README.markdown#basic-setup). -::: -AYON is using OpenTimelineIO for editorial publishing. OpenTimelineIO has to be installed into the python. +AYON is using OpenTimelineIO for editorial publishing. OpenTimelineIO has to be installed into the Resolve Python environment. +Tested versions: +- Resolve 19 - `OpenColorIO 0.17.0` with `Python 3.9.x` or `Python 3.10.x` +- Resolve 18 - `OpenColorIO 0.17.0` with `Python 3.9.x` +- Resolve 17 - `OpenColorIO 0.13.0` with `Python 3.6.2` (see special build instruction below) + +:::tip OpenColorIO 0.13.0 +Installation guide for OpenTimelineIO 0.13.0 in Python 3.6 can be found [here](https://github.com/ynput/ayon-resolve/blob/develop/client/ayon_resolve/README.markdown). +:::
-The new windows that opens, let's you define various attributes for your future products and shots. +The "Create options" section let you define various attributes for your future products and shots. Set Rename clips to active if you wish to use different names of shots in pipeline then the original clip names conformed from EDL/XML. @@ -233,13 +235,14 @@ There are two ways to create a publishable editorial package: by creating a new ### Create/Convert a Timeline from Media Pool into an Editorial Package -To create an editorial package, select a timeline in the media pool (1) and use the Create tool (2) to mark the timeline with Editorial Package (3) publishable product data. Keep _`Use selection`_ (5) active and choose _`Editorial Package`_ (3) as the product type. You can also use a Variant (4) to differentiate between different versions of timelines within the same target context. Hit Create (6). +To create an editorial package, select a timeline in the media pool (1) and use the AYON Create tool (2). +Then set the target folder (3) context and task (4). -![Create Editorial pkg01](assets/resolve/user_editorial_pkg_create01.png) +Choose _`Editorial Package`_ (5) as the product type. You can also use a Variant (6) to differentiate between different versions of timelines within the same target context. Hit Create (7). -In the next step, define the target folder (1) context and task (2) for the product to be published into and hit **OK** (3). Now, your timeline is ready to be published. +Now, your timeline is ready to be published. -![Create Editorial pkg02](assets/resolve/user_editorial_pkg_create02.png) +![Create Editorial pkg01](assets/resolve/user_editorial_pkg_create01.png) :::warning Metadata storing AYON is storing metadata for production tracking in the media pool clip's **VFX Notes**. The content of this key should not be changed or removed. @@ -254,7 +257,7 @@ Loading a previously published package adds publishable product data to the time ### Publishing Editorial Package -Open the publisher (1) from the AYON menu. Ensure that only the Editorial Package product type (2) is activated (click the square icon (3) next to the name) in the left panel of the publisher window. You can then publish by clicking the _`Play`_ button (4). +Open the publisher (1) from the AYON menu. Ensure that your editorial package instance is enabled in the "Product to publish" section (2). You can then publish by clicking the _`Publish`_ button (3). ![Publishing editorial package 01](assets/resolve/user_editorial_pkg_publishing01.png) diff --git a/website/docs/addon_unreal_admin.md b/website/docs/addon_unreal_admin.md index 83d20a21..7b406e10 100644 --- a/website/docs/addon_unreal_admin.md +++ b/website/docs/addon_unreal_admin.md @@ -94,7 +94,11 @@ pip.main(["install", "pyside6"]) Be aware that calling **pip** like so is deprecated by pip itself and might not work in newer versions. :::note -For Unreal Engine versions `>= 5.4`, use `pyside6`. For earlier versions, use `pyside2`. +For Unreal Engine versions `>= 5.4`, use `pyside6` with version *6.7.x*. For earlier versions, use `pyside2`. +::: + +:::caution +Early releases of PySide `6.8.x` has shown issues/crashes. As such, we recommend using `6.7.x` releases for the time being in the hope that future releases of `6.8` become more stable. ::: ## Setup Publish template for UAsset Product diff --git a/website/docs/addon_unreal_artist.md b/website/docs/addon_unreal_artist.md index cc15d2ad..2b5fd611 100644 --- a/website/docs/addon_unreal_artist.md +++ b/website/docs/addon_unreal_artist.md @@ -80,9 +80,21 @@ The AYON menu will be the main tool to interact with AYON in Unreal. It will all The structure of the project data is handled by AYON. The first time you create an instance or load an asset, AYON will create a folder called `AYON` in the Content Browser. This folder will contain all the data handled by AYON, and it is organised as follows: - `/Content/AYON/` is the default AYON root directory. - `/Content/AYON/{your_folder_path}/{your_product_name}` is the default directory which contains all the single assets that are loaded from AYON. Users can customize their asset directories through `ayon+settings://unreal/loaded_asset_dir` +By default, the asset directories for all loaded assets are `{folder[path]}/{product[name]}_{version[version]}` ![Unreal AYON Asset Directories Setting](assets/unreal_ayon_asset_directory_setting.png) +::: note +There are several formats we can use as the template for the asset directories. +For example: +{folder[name]}: folder name +{folder[path]}: folder path +{product[name]}: product name +{product{productType}}: product type +{version[version]}: version number +{representation[name]}: name of the representation type +::: + - `/Content/AYON/Assets` contains all the single assets that are loaded from AYON. - `/Content/AYON/PublishInstances` contains all the instances that are created in Unreal. - The rest of the directories contain all shot data of your AYON project, keeping same structure as the AYON project. In particular, they contain the levels and level sequences that are generated when you load Layout and Camera assets via **Load** tool. diff --git a/website/docs/artist_details_panel.md b/website/docs/artist_details_panel.md new file mode 100644 index 00000000..cf2ffbd3 --- /dev/null +++ b/website/docs/artist_details_panel.md @@ -0,0 +1,33 @@ +--- +id: artist_details_panel +title: The Details Panel +sidebar_label: Details Panel +--- + +## Overview +When using the AYON production tracker, you'll encounter the details panel frequently. It's essential for team interactions. +As the name suggests, the details panel is packed with information, serving as a communication tool and offering useful actions. + + +## Panel Content + +![](assets/details_panel/details_panel_overview.png) + +- **Folder Path**: Displays the folder path to the entity. +- **Name & Thumbnail**: Shows the name and thumbnail of the entity. +:::tip Update Thumbnail +You can update the thumbnail by right-clicking the thumbnail and selecting Upload new thumbnail. +::: +- **Tags**: View and add tags. +- **Status**: View and update status. +- **Web Actions**: Access available web actions, e.g. applications, directly via the AYON web server. +- **[Activity Feed](artist_activity_feed.md)**: Leave comments and track activity. +- **[Watchers](artist_inbox.md#watchers)**: Update notification settings for the current folder or task and choose who receives updates. +- **Picture in Picture**: Open a panel that can stay open as you navigate to different pages. +- **Escape**: Close the current details panel. +- **Assigned Users**: Shows the assignees of the current task. +- **Priority**: View and update the priority of the current task. +- **Attributes**: Provides task details like `fps`, `Start frame`, `End frame`. +:::tip Attributes and Pipeline +These attributes are used within the pipeline and can be modified by the admin via the project editor. +::: \ No newline at end of file diff --git a/website/docs/artist_task_progress_page.mdx b/website/docs/artist_task_progress_page.mdx index dc1daa4f..f2c72af9 100644 --- a/website/docs/artist_task_progress_page.mdx +++ b/website/docs/artist_task_progress_page.mdx @@ -47,3 +47,31 @@ For more details or additional changes to a task, open the details panel by doub :::tip To quickly view a task's reviewables, press the `Spacebar` on a selected task. Tasks with available reviewables will display a play button in the top-right corner. ::: + +### Search and Filtering + +To focus on specific tasks, use the search and filters bar to create a custom view. + +![Filtering tasks by status and assignee](./assets/task_progress/progress_filtering.gif) + +You can search using any keyword with the text filter or choose from the predefined filters in the dropdown. + +After selecting an attribute to filter by, choose the values to include or exclude. + +Each selected value will show tasks matching any of the chosen values. For example, filtering by “Status” and selecting “In Progress” and “Pending review” will display tasks that are either “In Progress” or “Pending review.” + +![Filtering tasks by status or status](./assets/task_progress/filter_status_or_status.png) + +Multiple filters work together to refine results. For example, filtering by “Status: Ready to start” and “Assignee: Has none” will show tasks that are both “Ready to start” and have no assigned users. + +![Filtering tasks by status and not assignee](./assets/task_progress/filter_status_and_no_assignee.png) + +:::tip +You can add the same filter multiple times for advanced filtering. For example, adding two “Tag” filters, one with “Happy” or “Sad” and another with “Scary,” will display tasks that are either “Happy” or “Sad” and also “Scary.” + +![Filtering tasks by tags](./assets/task_progress/filter_tag_and_tag.png) +::: + +To exclude a value, click the filter and toggle “Excludes” or use the button on the left of the filter card. In this example, the filter excludes all tasks with priority "Normal" or "Low". + +![Filtering excludes](./assets/task_progress/filter_excludes.png) diff --git a/website/docs/assets/addon_dev/web_action_example.png b/website/docs/assets/addon_dev/web_action_example.png new file mode 100644 index 00000000..0c671d2c Binary files /dev/null and b/website/docs/assets/addon_dev/web_action_example.png differ diff --git a/website/docs/assets/core/admin/oiio_transcode_example.png b/website/docs/assets/core/admin/oiio_transcode_example.png new file mode 100644 index 00000000..ac40619e Binary files /dev/null and b/website/docs/assets/core/admin/oiio_transcode_example.png differ diff --git a/website/docs/assets/core/admin/oiio_transcode_example2.png b/website/docs/assets/core/admin/oiio_transcode_example2.png new file mode 100644 index 00000000..da4c9f48 Binary files /dev/null and b/website/docs/assets/core/admin/oiio_transcode_example2.png differ diff --git a/website/docs/assets/core_oiio_transcode.png b/website/docs/assets/core_oiio_transcode.png deleted file mode 100644 index 3f09faf4..00000000 Binary files a/website/docs/assets/core_oiio_transcode.png and /dev/null differ diff --git a/website/docs/assets/core_oiio_transcode2.png b/website/docs/assets/core_oiio_transcode2.png deleted file mode 100644 index 5da404f7..00000000 Binary files a/website/docs/assets/core_oiio_transcode2.png and /dev/null differ diff --git a/website/docs/assets/deadline/add_ayon_server_to_farm_job.png b/website/docs/assets/deadline/add_ayon_server_to_farm_job.png new file mode 100644 index 00000000..de433f09 Binary files /dev/null and b/website/docs/assets/deadline/add_ayon_server_to_farm_job.png differ diff --git a/website/docs/assets/deadline/additional_ayon_servers.png b/website/docs/assets/deadline/additional_ayon_servers.png new file mode 100644 index 00000000..e61687d0 Binary files /dev/null and b/website/docs/assets/deadline/additional_ayon_servers.png differ diff --git a/website/docs/assets/details_panel/details_panel_overview.png b/website/docs/assets/details_panel/details_panel_overview.png new file mode 100644 index 00000000..3df90868 Binary files /dev/null and b/website/docs/assets/details_panel/details_panel_overview.png differ diff --git a/website/docs/assets/resolve/user_editorial_pkg_create01.png b/website/docs/assets/resolve/user_editorial_pkg_create01.png index 9e369d7a..d5721d4c 100644 Binary files a/website/docs/assets/resolve/user_editorial_pkg_create01.png and b/website/docs/assets/resolve/user_editorial_pkg_create01.png differ diff --git a/website/docs/assets/resolve/user_editorial_pkg_publishing01.png b/website/docs/assets/resolve/user_editorial_pkg_publishing01.png index 3ee3a4fa..6042aa9b 100644 Binary files a/website/docs/assets/resolve/user_editorial_pkg_publishing01.png and b/website/docs/assets/resolve/user_editorial_pkg_publishing01.png differ diff --git a/website/docs/assets/resolve_create_clips.png b/website/docs/assets/resolve_create_clips.png index b589bfb6..1c90addb 100644 Binary files a/website/docs/assets/resolve_create_clips.png and b/website/docs/assets/resolve_create_clips.png differ diff --git a/website/docs/assets/resolve_create_renaming_clips.png b/website/docs/assets/resolve_create_renaming_clips.png index 20c303e5..386031a3 100644 Binary files a/website/docs/assets/resolve_create_renaming_clips.png and b/website/docs/assets/resolve_create_renaming_clips.png differ diff --git a/website/docs/assets/resolve_create_single_track_rename_hero_track.png b/website/docs/assets/resolve_create_single_track_rename_hero_track.png index 5f68258d..4b5e01e1 100644 Binary files a/website/docs/assets/resolve_create_single_track_rename_hero_track.png and b/website/docs/assets/resolve_create_single_track_rename_hero_track.png differ diff --git a/website/docs/assets/resolve_create_template_filling.png b/website/docs/assets/resolve_create_template_filling.png index faa8c51e..9e2494ba 100644 Binary files a/website/docs/assets/resolve_create_template_filling.png and b/website/docs/assets/resolve_create_template_filling.png differ diff --git a/website/docs/assets/resolve_create_vertical_rename_creator_ui.png b/website/docs/assets/resolve_create_vertical_rename_creator_ui.png index e1638449..b7e25c17 100644 Binary files a/website/docs/assets/resolve_create_vertical_rename_creator_ui.png and b/website/docs/assets/resolve_create_vertical_rename_creator_ui.png differ diff --git a/website/docs/assets/resolve_menu_openpype.png b/website/docs/assets/resolve_menu_openpype.png index 98128580..54e29950 100644 Binary files a/website/docs/assets/resolve_menu_openpype.png and b/website/docs/assets/resolve_menu_openpype.png differ diff --git a/website/docs/assets/task_progress/filter_excludes.png b/website/docs/assets/task_progress/filter_excludes.png new file mode 100644 index 00000000..c5565762 Binary files /dev/null and b/website/docs/assets/task_progress/filter_excludes.png differ diff --git a/website/docs/assets/task_progress/filter_status_and_no_assignee.png b/website/docs/assets/task_progress/filter_status_and_no_assignee.png new file mode 100644 index 00000000..92a5152a Binary files /dev/null and b/website/docs/assets/task_progress/filter_status_and_no_assignee.png differ diff --git a/website/docs/assets/task_progress/filter_status_or_status.png b/website/docs/assets/task_progress/filter_status_or_status.png new file mode 100644 index 00000000..6b0539f9 Binary files /dev/null and b/website/docs/assets/task_progress/filter_status_or_status.png differ diff --git a/website/docs/assets/task_progress/filter_tag_and_tag.png b/website/docs/assets/task_progress/filter_tag_and_tag.png new file mode 100644 index 00000000..4b63dbc8 Binary files /dev/null and b/website/docs/assets/task_progress/filter_tag_and_tag.png differ diff --git a/website/docs/assets/task_progress/progress_filtering.gif b/website/docs/assets/task_progress/progress_filtering.gif new file mode 100644 index 00000000..3db1b0d5 Binary files /dev/null and b/website/docs/assets/task_progress/progress_filtering.gif differ diff --git a/website/docs/assets/unreal_ayon_asset_directory_setting.png b/website/docs/assets/unreal_ayon_asset_directory_setting.png index 8b832dd3..caa123f6 100644 Binary files a/website/docs/assets/unreal_ayon_asset_directory_setting.png and b/website/docs/assets/unreal_ayon_asset_directory_setting.png differ diff --git a/website/docs/dev_addon_creation.md b/website/docs/dev_addon_creation.md index 1894177d..23b72aeb 100644 --- a/website/docs/dev_addon_creation.md +++ b/website/docs/dev_addon_creation.md @@ -275,10 +275,168 @@ If you are curious, here's what happens when you access the api without logging ### Web Action -:::note TODO -Write about it and add an example. + +Web actions let users trigger AYON Addons CLI actions directly from the AYON server to perform actions on their machines. They run through **shims**, which are automatically set up when users install the AYON launcher version `1.1.0` or higher. + +Web actions are added in two steps: + +1. **Client-Side CLI Actions**: Develop the addon CLI actions in the client-side code of the addon. More about them in the next section [CLI Interface](dev_addon_creation.md#cli-interface). +2. **Server-Side Web Actions**: Implement web actions in the server-side code of the addon and link them to their corresponding addon CLI actions. + + + +
Simple Web Action Example + +This simple example triggers a QT dialog on the user's machine, showing the folder path from which the action was triggered. + +![](assets/addon_dev/web_action_example.png) + +```python title="my_addon/client/my_addon/__init__.py" +from qtpy import QtWidgets +import ayon_api + +from ayon_core.addon import AYONAddon, click_wrap +from .version import __version__ + + +class MyAddonCode(AYONAddon): + """My addon class.""" + + label = "My Addon" + name = "my_addon" + version = __version__ + + # Add CLI + def cli(self, click_group): + # Convert `cli_main` command to click object and add it to parent group + click_group.add_command(cli_main.to_click_obj()) + + +@click_wrap.group( + MyAddonCode.name, + help="My Addon cli commands.") +def cli_main(): + pass + +@cli_main.command() # Add child command +@click_wrap.option( + "--project", + help="project name", + type=str, + required=False +) +@click_wrap.option( + "--entity-id", + help="entity id", + type=str, + required=False +) +def show_selected_path(project, entity_id): + """Display a dialog showing the folder path from which the action was triggered.""" + + # Process the input arguments + con = ayon_api.get_server_api_connection() + entity = con.get_folder_by_id(project, entity_id) + + folder_path = f"{project}{entity['path']}" + + # Show Dialog + app = QtWidgets.QApplication() + QtWidgets.QMessageBox.information( + None, + "Triggered from AYON Server", + f"The action was triggered from folder: '{folder_path}'", + ) +``` + +```python title="my_addon/server/__init__.py" +from ayon_server.actions import ( + ActionExecutor, + ExecuteResponseModel, + SimpleActionManifest, +) + +from ayon_server.addons import BaseServerAddon + + +IDENTIFIER_PREFIX = "myaddon.launch" + + +class MyAddonSettings(BaseServerAddon): + # Set settings + async def get_simple_actions( + self, + project_name: str | None = None, + variant: str = "production", + ) -> list[SimpleActionManifest]: + """Return a list of simple actions provided by the addon""" + output = [] + + # Add a web actions to folders. + label = "Trigger Simple Action" + icon = { + "type": "material-symbols", + "name": "switch_access_2", + } + output.append( + SimpleActionManifest( + identifier=f"{IDENTIFIER_PREFIX}.show_dialog", + label=label, + icon=icon, + order=100, + entity_type="folder", + entity_subtypes=None, + allow_multiselection=False, + ) + ) + + return output + + async def execute_action( + self, + executor: "ActionExecutor", + ) -> "ExecuteResponseModel": + """Execute an action provided by the addon. + + Note: + Executes CLI actions defined in the addon's client code or other addons. + + """ + + project_name = executor.context.project_name + entity_id = executor.context.entity_ids[0] + + if executor.identifier == f"{IDENTIFIER_PREFIX}.show_dialog": + return await executor.get_launcher_action_response( + args=[ + "addon", "my_addon", "show-selected-path", + "--project", project_name, + "--entity-id", entity_id, + ] + ) + + raise ValueError(f"Unknown action: {executor.identifier}") + +``` + +:::tip icons +Icons support [material-symbols](https://fonts.google.com/icons) as well as addon static icons, more info check [Private and Public Dirs](dev_addon_creation.md#private-and-public-dirs). +```python +icon = { + "type": "url", + "url": "{addon_url}/public/icons/" + icon_name +} + +``` + +:::tip entity_type +For `SimpleActionManifest`, you can use different entity types. +- `"folder"`: Any folder path that is not a task. +- `"task"`: Tasks. ::: +
+ ## Addon Client Code Also, we can refer to this section as Unlock Pipeline Powers since client code is used to direct the pipeline! diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 0fcc1ce6..1d02a01e 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -27,6 +27,7 @@ const config = { stylesheets: [ "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200", ], + presets: [ [ "classic", @@ -204,6 +205,13 @@ const config = { ], "docusaurus-plugin-sass", ], + scripts: [ + { + src: "https://plausible.io/js/script.js", + defer: true, + "data-domain": "ayon.ynput.io", + }, + ], }; module.exports = config; diff --git a/website/sidebars.js b/website/sidebars.js index fdcd1537..9fbe9a2e 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -112,6 +112,7 @@ module.exports = { label: "Production Tracking", items: [ "artist_my_tasks_page", + "artist_details_panel", "artist_activity_feed", "artist_reviewables", "artist_inbox",