# Introduction

{% hint style="info" %}
[**Workflower 2.5.2 is here!**](/releases#id-2-5-1)

[NEW: AE 26 Ready, Renaming Features, Fixes & More! Check it out!](/releases#id-2-5-1)
{% endhint %}

Welcome to the *Workflower* User Guide.

*Workflower* is a script for *After Effects*, designed for advanced compositing and motion graphics tasks. The script's main focus is to enhance and speed up your everyday workflow.

Using *Workflower*, you can create groups of layers within a composition, automatically parent them to the group header, collapse and expand the group, color label, disable, enable, or solo it. Besides groups, you can also merge track mattes, clone layers, create an adjustment layer only to certain layers, and much more.

You can buy the script on [aescripts.com](http://www.aescripts.com/workflower).

{% embed url="<https://www.youtube.com/watch?v=-4Z5UScjDbI>" %}


# What's new in v2.5?

## New Features in v2.5

{% embed url="<https://www.youtube.com/watch?v=O6r82yg_POk>" %}

### **Pre-Render Groups, Clones & More**

<figure><img src="/files/3WiQnvhehNfHGu3tdHYv" alt="" width="317"><figcaption></figcaption></figure>

After *Workflower* tackled *After Effects'* lacking organizational tools, one giant criticism always remained: *'But AE is soooo slow!!11!!1!'* Well, now not anymore: *Workflower v2.5* introduces a feature-rich [pre-rendering system](/layer-functions/pre-rendering#pre-render), catapulting AE's performance into the 21st century!!

Pre-render groups, layers, *Precomp Clones* as well as precomps, and experience an entirely new way of working in AE! Simply click *Pre-Render* and let *Workflower* handle all the annoying file management for you.

Also: Customize the hell out of it by setting up the render format, proxy, file path and even automatically enabling that dreaded *Preserve RGB* checkbox! Kaboom!

### **Sort Project Items**

<figure><img src="/files/HInW9FIpjFHMKRufjXeP" alt="" width="281"><figcaption></figcaption></figure>

Do you love constantly dragging all your comp project items into that *'Comps'* folder and all those footage items into that *'Footage'* folder? If so, this feature ain't for you! But for everyone who hates cleaning as much as I do, there's now: [*Sort Project Items*](/main-functions/layout#sort-project-items)!

It'll sort your project items into:

* Clones
* Comps
* Footage
* Imported Projects

And for folks who see something special in some of their project items: You may exclude certain folders from sorting by setting their label to *None*. Sweeeeeet!

### **Link & Parent Masks**

<figure><img src="/files/HcUqRfpZonnqK9tmo6rQ" alt="" width="350"><figcaption></figcaption></figure>

A long time ago, the *After Effects* *Gods* decreed that masks apply BEFORE the layer's transforms, so if you copy a mask from one layer to another with different transforms, the two masks align at the source but not in the viewer. Engraved deeply into AE’s source code, this law is eternal.

However, in a rebellious act of defiance, I’ve implemented a heretical feature: *Workflower* [links a mask from one layer to another](/main-functions/connections#adding-linked-masks)... with all transforms intact - no matter the layers' position, even on 3D layers. And since this is done via expressions, it all updates automatically. Oh, AE Gods, have mercy on my soul...

And for those audacious enough to challenge the divine even further, you can also easily [parent a layers' mask](/layer-functions/matting#creating-linked-masks): Execute *Create Matte* on it and *Workflower* will copy the mask to a new layer and link the old mask to the new mask, allowing you transform and parent it as only the devil himself would dare.

### Show Layer Relationships

<figure><img src="/files/PQWnn3LeSEiX9RZfBydD" alt="" width="375"><figcaption></figcaption></figure>

For years, layers have been carrying on secret affairs right under your nose. You thought you knew them - you trusted them. But every time you'd click into those effect controls, it was like finding cryptic texts on your partner's phone. 'Who is this other layer you're referencing? What do they mean to you?'

But now, with [Layer Relationships](/main-functions/layout#show-hide-layer-relationships), *Workflower* pulls back the curtain on all those clandestine connections. Every romance, every tangled web of dependencies, revealed with brutal honesty right on the timeline.

It might be painful to uncover the truth, but isn't it better to know? Discover who your layers have really been seeing behind your back - and take back control of your timeline!

### Copy Layers across Projects

<figure><img src="/files/zQyoI5EW1BVPgbDhlR4R" alt="" width="248"><figcaption></figcaption></figure>

After Effects projects have always lived in isolation, each in its own little universe. But with *Workflower's* [Global Store Comp](/layer-functions/storing-layers#saving-global-store-comps), you can now defy the laws of AE physics, sending layers through the multiverse of projects.

It's like string theory, but for After Effects! Save layers into one of three *Global Store Comp* slots, jump into a new project, and summon them instantly. Turns out, AE universes were more intertwined than you ever imagined!

### And more!

<figure><img src="/files/bumbFVJUr3zpIZ9PCASo" alt="" width="233"><figcaption></figcaption></figure>

And yet, there's even more, for example:

* [Compatibility with AE 2025](/system-requirements#software-compatibility)
* [Precompose with all expression references in your project updating](/layer-functions/precomposing#precompose) to the new comp name
* Create [*Downwards Clones*](/layer-functions/cloning#downwards-clone) (i.e. *Precomp Clones* grabbing all layers below)
* Quickly create [control layers](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2) (e.g. a null as parent to a layer, or a null to control a point property)

### Full Changelog

For a full changelog, please click [here](/releases#id-2-1)!

### Tutorial for v2.5 is Coming!

{% hint style="warning" %}
I’m currently tied up with other projects and haven’t had a chance to create a video tutorial yet, but I’ve heard your feedback, and it’s on my radar. While I can’t promise a timeline, I’ll do my best to get to it when I can.

In the meantime, please refer to the [user guide](/releases#id-2-5) for detailed instructions.
{% endhint %}

## **New Features in older Versions**

* [What's new in v2.0?](/whats-new/whats-new-in-v2.0)
* [What's new in v1.1?](/whats-new/whats-new-in-v1.1)


# What's new in v2.0?

## New Features in v2.0

{% embed url="<https://www.youtube.com/watch?v=zx3bMzVxU_A>" %}

{% hint style="info" %}
[**Check out the tutorial on v2!**](/video-tutorials#tutorial-v2)
{% endhint %}

### **After Effects 2023/24+ Ready**

<figure><img src="/files/EKfbdVxfhu0Nve3APhGE" alt=""><figcaption></figcaption></figure>

*Workflower* is finally *After Effects 2023/24+* compatible!

Literally hundreds of sections within the code - across matting-, cloning-, and adjustment layer-functions - had to be completely rebuilt, mostly relating to AE's new track matte system.

But now you can take full advantage of AE's new track matte system as well as other new AE features (like the *Advanced 3D* renderer) while at the same time enjoying *Workflower's* various functions!

### **ScriptUI Panel**

<figure><img src="/files/IuJGMSO3YA7dKH9BSmmR" alt=""><figcaption></figcaption></figure>

Staying true to *After Effects* feature development, the most requested while at the same time most basic feature took the longest to develop... But here it finally is: The option to use *Workflower* as a [ScriptUI Panel](/main-functions/main-menu#main-menu-as-scriptui-panel)!

To make use of it, install *Workflower ScriptUI Panel.jsxbin* (provided in the download files) into AE's *ScriptUI Panels* folder, or use the [aescripts + aeplugins manager app](https://aescripts.com/learn/aescripts-aeplugins-manager-app/).

Please note that it is still mandatory to additionally have *--- Workflower ---.jsxbin* installed in AE's *Scripts* folder!

The ScriptUI panel is resizable and available in 4 different configurations:

1. Row layout, 1 line
2. Row layout, 2 lines
3. Column layout, 1 column
4. Column layout, 2 columns

### Improved & Faster Matting Tools

<figure><img src="/files/PpckXyjPWQo0HLWnMd77" alt=""><figcaption></figcaption></figure>

All matting tools within *Workflower* have been overhauled in a major way to conform to AE 23's *Selectable Track Mattes* and in turn, are easier to use and execute way faster.

[Group Mattes](/layer-functions/matting#group-matte), for example, perform many times faster now since the *Group Matte* only has to be calculated once, whereas, in AE 22 and below, *Group Matte* layers have to be applied to every group layer individually, slowing down your comp the more group layers you have.

However, now, you can add as many group layers as you want and AE will stay super fast and responsive! (Well, okay, as super fast and responsive as things were back in 2005. But that's not my fault!)

### Relabel Keyframes

<figure><img src="/files/ZUq1RWPyxqXtqvgFRLoP" alt=""><figcaption></figcaption></figure>

Using [Relabel Layer/s](/layer-functions/relabeling#relabel-layer-s), you can now relabel keyframes too!

Simply select keyframes instead of layers and execute *Relabel Layer/s*. Click on the desired color and keyframes will be relabeled.

Hold down Ctrl+Alt/Cmd+Option when clicking on a color if you want to relabel the entire keyframe label group of your currently selected keyframe/s within your comp.

Bonus: If you execute [Select Group](/group-functions/collapse-and-select-groups#select-group) while keyframes are selected, all keyframes with the currently selected label color group/s in the comp will be selected.

### Easier Ways to learn Workflower

<figure><img src="/files/ELEx4W5XMWqvPGYcNa83" alt=""><figcaption></figcaption></figure>

*Workflower* now provides various ways that help with learning *Workflower*. This is especially useful for newer users. However, even older users can find it insightful since they might still learn a thing or two about the functions that way.

The new ways to learn *Workflower* include:

* **Extended Tooltips:** Hover over the functions on the *Main Menu* to get information on the function. When pressing a modifier key, the *Extended Tooltip* of the modifier function will be displayed. You can also turn off *Extended Tooltips* and only use simple tooltips (displaying solely the function name and shortcut), or disable tooltips altogether by going to the *Miscellaneous Settings*.
* **Pop-Up Tips:** When first executing certain functions (like creating a group), *Workflower* will now display useful tips about the functions.
* **Links to User Guide & Tutorial Chapters:** When right-clicking on a function button on the [Main Menu](/main-functions/main-menu), *Workflower* will now open up a dropdown where you can click on links to the user guide and tutorial chapter about the specific function. Hold down a modifier key and right-click on the button to open up the links for the modifier functions.

### Tag Layers & Groups

<figure><img src="/files/q7cZ6I6rnGGdAvR6NhJh" alt=""><figcaption></figcaption></figure>

*Workflower* now features the ability to [tag layers](/layer-functions/tagging-layers). That way, you can create groups of layers not bound by the layer hierarchy and perform various actions on them. You can even tag *Workflower's* regular groups.

Simply select your layers/groups and execute [Tag / Untag Layer/s](/layer-functions/tagging-layers#tag-untag-layer-s). Now choose one of *After Effects'* 17 label colors as well as a name for your *Tag Group*.

Afterwards, execute [Perform Action on Tagged Layer/s](/layer-functions/tagging-layers#perform-action-on-tagged-layer-s) and choose either of these actions:

1. Activate (= enable & solo if necessary) / Deactivate
2. Enable / Disable
3. Solo / Unsolo
4. Lock / Unlock
5. Select / Deselect
6. Toggle effects
7. Toggle motion blur
8. Jump to the top-most layer of the *Tag Group* in your timeline

### And more!

<figure><img src="/files/xnwg5olS8niLguyntRVe" alt=""><figcaption></figcaption></figure>

But wait, there's even more! For example:

* **New Double-Click Behavior:** Now you can [double-click](/group-functions/collapse-and-select-groups#expand-collapse-a-group-by-double-clicking) on a group header to expand/collapse the group! *Alt/Option+double-click* to select, *Shift+double-click* to enable/disable, and *Alt/Option+Shift+double-click* to solo. (Needs the *WQ* plug-in installed that can be found in the installation files.)
* **Reveal Opacity Properties:** When you execute [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) while having properties selected, all contained properties with an opacity will now be revealed in the timeline too (e.g. the *Effect Opacity*, or clone stroke opacity properties when having the *Paint* effect selected).
* **New Trimming Functions:** [Trim Layer to Keyframes](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes) & [Trim Layer to Layer](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-1).
* ... as well as a bunch of other little features and fixes.

### Full Changelog

For a full changelog, please click [here](/releases)!


# What's new in v1.1?

## New Features in v1.1

{% embed url="<https://www.youtube.com/watch?v=atNSD21v2h4>" %}

{% hint style="info" %}
[**Check out the tutorial on v1.1!**](/video-tutorials#tutorial-v1-1)
{% endhint %}

### Speed Improvements

![](/files/L8RA3uqTMwv3qwxNkPZD)

The speed of [Refresh Layout](/main-functions/layout#refresh-layout) has been greatly improved. In most cases, it will be around 2-4 times faster! This is especially useful when working on larger comps with a lot of layers.

Since the layout is being refreshed within every function, this speed improvement will impact the execution of all functions.

### Group Opacity

![](/files/c4zr0psM2ULL0dnNxyqv)

You now have the ability to adjust the opacity of all group layers at once.

On the *Group || Settings* effect, enable *Group Opacity* and execute *Refresh Layout*. *Workflower* will then add an expression to the opacity of the layers and it will add a special opacity slider effect to all group layers as it does with [Prime Clone](/layer-functions/cloning#prime-clone) layers. Execute [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) (Win: Alt+F1, Mac: Ctrl+3) to reveal the slider in the timeline.

Additionally, you can also enable *Layers respect Group In/Out*. Using this option, all layers outside of the group header's in and out point won't be visible. (Please note that *Layers respect Group In/Out* will disable the new feature *Trim Group Header to contained Layers* which is explained [below](#automatic-trimming).)

### Masks & Effects to Group Header

![](/files/po4RiqVl5VNLDecXLdYx)

In addition to the ability to use a [Group Matte](/layer-functions/matting#group-matte) and [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers), you now have the option to apply masks and effects directly to the group header. That way, you can keep your group header collapsed and still work on your group effects and masks.

To make use of this, simply add masks (no shapes) and/or effects to the group header and execute [Refresh Connections](/main-functions/connections#refresh-connections) (Win: Ctrl+Alt+Q, Mac: Ctrl+Q). This will create a *Group Matte* layer which is linked to the group header, and/or a *Group Linked Adjustment Layer* which will consider effects from the group header in addition to its own effects.

Please be aware that only masks will be considered for the *Group Matte*, not effects altering the alpha, as they will already be considered for the *Group Linked Adjustment Layer*.

### Automatic Trimming

![](/files/OTfhJqCmkPrfDZznz9i0)

If enabled, the group header's in and out point will be adjusted to the group's layers once you execute *Refresh Layout*. That way, you always know the group's position in time even when the group is collapsed.

Additionally, there is even more automatic trimming: *Group Mattes* and *Group Adjustment Layers* will be adjusted to their group header, track mattes to their matted layers, [Precomp Clones](/layer-functions/cloning#clone-and-precomp) to its contained layers, as well as adjustment layers which are matted to clones. (You can disable any of these options by going to *Settings > Trimming*.)

To exempt any of these layers from being trimmed, simply add a marker to the layer with the comment 'TTT' (without quotation marks) or execute *Exempt Layer from Trimming* by going to the main menu, holding down *Alt/Option,* and clicking on the [Rename Layer/s](/layer-functions/renaming#rename-layer-s) button.

### Convert Groups to/from Precomps

![](/files/e2rEfYV3Bc4gSGWKd0Yk)

You're now able to convert groups to precomps and vice versa. Simply select the group/precomp and execute *Precompose*.

All group transforms (if [parenting](/group-functions/parent-group-layers#parent-layers-to-group) is enabled), *Group Mattes*, *Group Clones* and *Group Adjustment Layers* will also be converted so that the precomp layer (or the group when converting from a precomp) will inherit these attributes. Among other things, converting a group to a precomp can be useful to improve performance since mattes, effects, etc. don't have to be copied to all group layers.

If no single group/precomp is selected, you can use this function to regularly precomp layers as well. In addition to saving the need for refreshing the layout two times afterwards (in the main comp + precomp), it also offers more options for precomposing: The ability to set the start timecode to zero, as well as the option to set a custom label setting within the precomp.

### Shy Group Matte Layers

![](/files/7qBvB5sKwJ65IFuL3pjD)

When using a *Group Matte*, [Matte Merge](/layer-functions/matting#merge-mattes) layers will be added above every group layer as a track matte. This, however, makes it more difficult to see the structure of layers. That's why you will have the option to shy *Matte Merge* layers that only contain *Group Matte* effects. (You can disable this feature too.)

If you want to move a group layer, select it and execute [Select Group](/group-functions/collapse-and-select-groups#select-group) (Shift+D). This will additionally select the shy'd *Matte Merge* layer above and temporarily unshy all *Matte Merge* layers, so that you can move your layers without any confusion. The next time you execute *Refresh Layout*, all *Matte Merge* layers will be shy'd again.

Also, when you just select group layers without the shy'd *Matte Merge* layers above and you execute [Duplicate Group](/group-functions/create-and-duplicate-groups#duplicate-group), the layers including their *Matte Merge* layers will be duplicated. The same goes for when executing [Create Group](/group-functions/create-and-duplicate-groups#create-group).

### And more!

![](/files/QFkYZ7vZGvOOv1ahLa0t)

But that's not even all. Here are some other new features:

* Integration of some *Refresh Connections* features into *Refresh Layout*: When you add/remove a layer to/from a group, group mattes and group effects will now be added/removed without the need for executing *Refresh Connections* anymore. (However, you still need to execute *Refresh Connections* when you add/remove effects on a *Group Linked Adjustment Layer* or you, for example, change the *Referenced Group Matte Layer* of a *Group Matte*.)
* An advanced way to duplicate groups and layers. For example, all effects that reference other selected layers will be updated to their duplicates, as well as a more straightforward naming of the duplicates, an automated way of updating group mattes and group adjustment layers to the duplicated group, and more.
* New function: *Expand / Collapse All Sub-Groups*.
* ... as well as a bunch of other little features and fixes.

### Full Changelog

For a full changelog, please click [here](/releases#1-1)!


# Releases

{% hint style="info" %}
If you want to revert to an older version of *Workflower*, please check out the [dedicated download page for older versions](/releases/download-old-versions).
{% endhint %}

## 2.5.2 - May 17, 2026 <a href="#id-2-5-1" id="id-2-5-1"></a>

### Fixed

* Fixed issues on Mac some people were experiencing when trying to install [shortcut slots](/main-functions/shortcuts#shortcut-slots) or the [WQ plug-in](/installation#id-04-plug-in).

## 2.5.1 - March 16, 2026 <a href="#id-2-5-1" id="id-2-5-1"></a>

**NOW AE 26+ COMPATIBLE!**

### Added

* Full compatibility with After Effects 2026.
* Ability to [define permanent layer name exceptions from alteration](/main-functions/layout#define-layer-name-exceptions-from-alteration). To define them, go to *Settings > Layout > Define Layer Name Exceptions from Alteration*.
* Applying a new layer name via [Rename Layer/s](/layer-functions/renaming#rename-layer-s) is now faster.
* New function: [Change Comp Items](/layer-functions/precomposing#change-comp-items) (right-click on [Precompose](/layer-functions/precomposing#precompose), then select *Change Comp Items*). Allows you to batch-change attributes on all selected comp items in the project panel.
* When [precomposing the current comp](/layer-functions/precomposing#additional-comp-wide-features), you can now choose to *Replace Current Comp in Other Comps with New Comp*.
* When [unprecomposing all precomps in your current comp](/layer-functions/precomposing#additional-comp-wide-features) with Workflower's [Precompose](/layer-functions/precomposing#precompose), more attributes will now be taken into consideration.
* New function: [Duplicate & Replace Names](/group-functions/create-and-duplicate-groups#duplicate-and-replace-names) (right-click on [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group), then select *Duplicate & Replace Names*). Duplicates layers and groups and replaces given names in all layer names.
* When [duplicating project comp items](/group-functions/create-and-duplicate-groups#duplicate-project-panel-items) (right-click on [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group), then select *Duplicate Project Item/s*), *Workflower* now features the option to replace precomps in new comps with duplicated precomps (a.k.a. *true comp duplication*). **IMPORTANT:** Needs to have the desired precomps in the project panel selected as well.
* New function: [Rename to](/layer-functions/renaming#rename-to) (right-click on [Rename Layer/s](/layer-functions/renaming#rename-layer-s), then select *Rename to*). Renames the selected layers either to source or replaces parts of the string.
* When [pre-rendering](/layer-functions/pre-rendering#pre-render) comp items from the project panel, they will now be rendered in order of their containment (= comps containing other comps will be rendered later).
* Ability to set the project bit depth for every [pre-render](/layer-functions/pre-rendering#pre-render) in the *Pre-Rendering Settings*.
* [Allow External Layer Comments](/main-functions/layout#allowing-external-layer-comments) has been officially implemented (disabled by default; enable under *Settings > Layout > Allow External Layer Comments*). This feature allows you to add layer comments without *Workflower* overwriting them. This makes *Workflower* compatible with add-ons that rely on writing/reading data to/from layer comments (like *Flatten Layers* or *AutoSway*). *Workflower* achieves this by saving its data to a layer marker when a non-Workflower layer comment is added. Do not remove this marker! Using non-*Workflower* layer comments can reduce performance of *Workflower* functions, so it's recommended to use as few as possible. To return to *Workflower* using layer comments in order to store data, just put in an empty string into the layer comment and execute any *Workflower* function.
* When having 3D lights with environment source within a [Precomp Clone](/layer-functions/cloning#clone-and-precomp), it's not required anymore to select the environment manually on a separate layer.
* *Workflower's* [shortcuts panel](/main-functions/shortcuts) now features a scrollbar, hence making the panel smaller and easier to use on low-resolution monitors.
* Ability to apply shortcuts to [Push Frame to Photoshop](/layer-functions/pre-rendering#push-frame-to-photoshop) and [Create Control](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2).
* [Shortcut Slot files](/main-functions/shortcuts#shortcut-slots) on Mac or *Individual Scripts* mode on Windows are now much smaller (under 1KB). In case of issues with shortcuts, can be disabled under 'Settings > Shortcuts'.
* Ability to quickly open up AE's *User Presets* folder by right-clicking on *Workflower's* [ScriptUI Panel](/main-functions/main-menu#main-menu-as-scriptui-panel) and then Shift+Ctrl/Cmd-clicking on *AE Scripts Folder*.
* New bug report UI when an error occurs to make bug reporting easier.
* Updated license framework to v4.4.2.

### Changed

* **ATTENTION:** Due to AE 26+ now occupying Shift+D, the default shortcut for [Select Group](/group-functions/collapse-and-select-groups#select-group) has been changed to Shift+W (on French keyboards to Shift+Z).
* **ATTENTION (Win Users):** Due to AE now occupying Ctrl+Shift+B, the default shortcut for [Tag / Untag Layer/s](/layer-functions/tagging-layers#tag-untag-layer-s) has been changed to Ctrl+Shift+3.
* **IMPORTANT:** Changed the [scripting API Variable](/main-functions/scripting-api#api-variable) to *workflowerScriptAPI* in order to prevent possible issues stemming from short global variables. Please adapt your scripts to this change. The legacy variable *wfAPI* is currently still active but will be disabled in the future. (You will always be able to use the old variable in coming versions by going to *Settings > System > Use Legacy Scripting API Variable wfAPI*.)
* *Workflower* will now only create a [pre-render](/layer-functions/pre-rendering#pre-render) folder when actually rendering, and not every time the settings dialog is opened.
* When creating a [transform control](/layer-functions/miscellaneous-layer-functions#creating-transform-control-layers) with [Create Control](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2), expression-locked properties of *Workflower* layers will now be copied with their pre-expression value to the control layer.

### Fixed

* Fix for online activation connection issues.
* When installing the [WQ plugin](/installation#id-04-plug-in) for the first time on Mac, *Workflower* will now mark the file as safe so you won't get an error message when opening AE the next time.
* Fixed a bug that would not execute shortcuts on Mac.
* The *Import Shortcuts* dialog now orders the preset names correctly.
* Fixed a bug that would occur when trying to [create a group](/group-functions/create-and-duplicate-groups#create-group) of multiple groups or layers that were not directly above each other.
* Fixed a bug that could occur when removing a [Group Matte](/layer-functions/matting#group-matte).
* Fixed a bug that would enable clone layers within an unlinked [Precomp Clone](/layer-functions/cloning#clone-and-precomp) when they would be in a disabled group.
* Fixed a bug that prevented unlinking a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) when it contained a 3D model layer.
* Nulls created with [Create Control](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2) now take the *Default Separated Dimensions* preference into account.
* [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) now properly updates light sources of environment lights.
* Fixed potential expression errors when a layer was renamed which contained an effect with the same name of the layer.

## 2.5 - January 16, 2025 <a href="#id-2-5" id="id-2-5"></a>

**NOW AE 25+ COMPATIBLE!**

{% hint style="warning" %}
**Attention:** If you want to exchange your project with someone who uses *Workflower* 2.0.4 and/or AE 24, you have to [downgrade your project](/main-functions/layout#convert-project-to-older-wf-version) beforehand. To do this, go to *Settings > Layout > Convert Project to older WF/AE Version*.
{% endhint %}

### Added

#### Pre-Rendering

* New function: [Pre-Render](/layer-functions/pre-rendering#pre-render) (Win: Ctrl+F2, Mac: no default shortcut). Pre-renders the selected groups, layers, [Precomp Clones](/layer-functions/cloning#clone-and-precomp) & precomps. When pre-rendering group/layer, the function effectively renders group's/layer's *Precomp Clone*, so if there's no existing clone, it will be created. To show actual layers again, execute [Show Clone Layers](/layer-functions/cloning#show-clone-layers) (Ctrl/Cmd-click on [Cloning](/layer-functions/cloning#clone-and-precomp)-button). For visible pre-renders to appear in your final render, set AE's *Proxy Use* to *Current Settings* in *Render Settings*.
* New function: [Show / Hide Pre-Render](/layer-functions/pre-rendering#show-hide-pre-render) (Win: Ctrl+Alt+Space, Mac: no default shortcut / Via [Main Menu](/main-functions/main-menu): Shift-click on [Pre-Render](/layer-functions/pre-rendering#pre-render)-button). Shows or hides pre-renders.
* New function: [Show / Hide Pre-Render WF Proxy](/layer-functions/pre-rendering#show-hide-pre-render-wf-proxy) (no default shortcut / Via [Main Menu](/main-functions/main-menu): Ctrl/Cmd-click on [Pre-Render](/layer-functions/pre-rendering#pre-render)-button). Shows or hides WF proxies of pre-renders. To avoid confusion with *After Effects'* proxies, *Workflower's* pre-render proxies are consistently called *WF Proxies*, as opposed to *AE Proxies*. If you want to show or hide only footage AE proxies, right-click on the function button and click on *Show/Hide Footage AE Proxies*.
* New function: [Push Frame to Photoshop](/layer-functions/pre-rendering#push-frame-to-photoshop) (only available via [Main Menu](/main-functions/main-menu): Alt/Option-click on [Pre-Render](/layer-functions/pre-rendering#pre-render)-button). Pushes the current frame to Photoshop and imports it into After Effects' timeline.
* New function: [Mark Pre-Render State](/layer-functions/pre-rendering#mark-pre-render-state) (only available via [Main Menu](/main-functions/main-menu): Right-click on [Pre-Render](/layer-functions/pre-rendering#pre-render)-button, then click on *Mark Pre-Render Skip State*). Either marks an element to only pre-render still, or marks a group to be skipped when pre-rendering all groups.

#### Masking / Matting

* Ability to [reference a mask on another layer with transforms set correctly](/main-functions/connections#adding-linked-masks): [Execute Add / Remove Layer / Mask References](/main-functions/connections#add-remove-layer-references) while 2 layers are selected AND 2nd layer has a mask selected. This creates a mask on the 1st layer which is linked to the 2nd layer's mask (i.e. a *Linked Mask*).
* Ability to 'parent' a mask: When you execute [Create Matte](/layer-functions/matting#create-matte) while a mask is selected on one layer, a layer will be created where the existing mask is copied to and the mask on the original layer will be [linked to the new mask](/layer-functions/matting#creating-linked-masks) using expressions (i.e. a *Linked Mask*). This enables you to parent the layer with the mask to another layer and animate its position.
* Quickly [set/remove mask references to/from effects](/main-functions/connections#adding-removing-effect-masks): Execute [Add / Remove Layer / Mask References](/main-functions/connections#add-remove-layer-references) while one layer is selected AND on it mask/s + effect/s are selected. When one layer is selected AND only an effect is selected, removes all mask references from the effect.
* Ability to quickly [create a matte using a *Set Matte* effect](/layer-functions/matting#single-matte): Right-click on [Create Matte](/layer-functions/matting#create-matte)-button and click *Switch to FX Matte* (or enable it under *Settings > Matting Settigs*). Now, when executing *Create Matte* on a single layer, a *Set Matte* effect + matte layer will be created.
* Ability to use effect masks on an effect of a [Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer). After adding the effect mask, simply execute [Refresh Connections](/main-functions/connections#refresh-connections) to apply them to all *Linked Layers*. Please note that this might not always work properly on 3D layers.
* When you execute [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) while having a mask selected, *Workflower* will remove the mask as well as all [Linked Masks](/main-functions/connections#adding-linked-masks) referencing the mask (and their corresponding effect).
* When you execute [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) while having a [Linked Mask](/main-functions/connections#adding-linked-masks) or its corresponding effect selected, *Workflower* will remove the *Linked Mask* as well as the effect.
* Selected masks will now be checked for unique naming during [Refresh Layout](/main-functions/layout#refresh-layout) too.

#### Project Items

* New Feature: [Sort Project Items](/main-functions/layout#sort-project-items) (Win: Alt+Shift+F2, Mac: no default shortcut / Via [Main Menu](/main-functions/main-menu): Alt/Option-click on [Create Group](/group-functions/create-and-duplicate-groups#create-group)-button). Sorts comps, footage, imported projects and clones in the project panel. By default, folders with label *None* will be excluded. Go to the *Sorting Settings* to customize more settings.
* [Import and directly sort files](/main-functions/layout#import-and-sort-file-s) by right-clicking on the [Sort Project Items](/main-functions/layout#sort-project-items)-button. This function additionally offers the ability to set the framerate on EXR sequences on import when creating a layered composition.
* New Feature: [Create Project Item Folder](/group-functions/create-and-duplicate-groups#create-project-item-folder). Right-click on the *Create Group*-button, then select *Create Project Item Folder* to create a folder from all currently selected project items (as opposed to AE's function which does NOT create a folder that contains selected items).
* New Feature: [Dissolve Project Item Folder](/group-functions/ungroup-dissolve-and-delete-groups#dissolve-project-item-folder). Right-click on the *Dissolve Group*-button, then select *Dissolve Project Item Folder* to dissolve the currently selected project item folder.
* When right-clicking on the [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group)-button, you can now access [Duplicate Project Item/s](/group-functions/create-and-duplicate-groups#duplicate-project-panel-items) too.

#### Layer Storing

* New feature: [Save Global Store Comp](/layer-functions/storing-layers#saving-global-store-comps) (Right-click on the *Store Layers-*&#x62;utton). Saves a *Global Store Comp,* meaning that the *Store Comp* is accessible across AE projects.
* New feature: [Load Global Store Comp](/layer-functions/storing-layers#loading-global-store-comps) (Right-click on the *Paste Stored Layers-*&#x62;utton). Loads a *Global Store Comp* that was previously saved via *Save Global Store Comp*.
* You can now store and paste *Store Comp* *2* and *3* via the [Main Menu](/main-functions/main-menu): Right-click on the [Store Layers](/layer-functions/storing-layers#store-layers)-button or [Paste Stored Layers](/layer-functions/storing-layers#paste-stored-layers)-button and click *Store Layer/s by ID* / *Paste Stored Layer/s by ID'* (Previously these were only available via shortcut.)
* You can now choose to paste stored layers to the current time indicator. This is disabled by default; enable it by going to *Settings > Miscellaneous > When Pasting Stored Layers, paste to Current Time Indicator*.

#### Layer Relationships

* New feature: [Show / Hide Layer Relationships](/main-functions/layout#show-hide-layer-relationships) (no default shortcut / Via [Main Menu](/main-functions/main-menu): Alt/Option+click on *Refresh Layout*-button). Toggles layer relationships (= layer markers representing effects referencing other layers) on and off in your current comp. Updates during [Refresh Layout](/main-functions/layout#refresh-layout). (Attention: Can slow down *Refresh Layout*; so if too slow, only enable when needed.)

#### **Cloning**

* New [Precomp Clone](/layer-functions/cloning#clone-and-precomp) type: [Downwards Clone](/layer-functions/cloning#downwards-clone). Grabs all layers in comp downwards from the *Precomp Clone* layer. To use it, select the first layer, then execute *Clone and Precomp* and check *Create Downwards Clone*. To update added/removed source layers, execute [Refresh Connections](/main-functions/connections#refresh-connections).
* New function: [Show and Solo Clone Layers](/layer-functions/cloning#show-and-solo-clone-layers) (Win: Ctrl+Alt+Return, Mac: no default shortcut / Via [Main Menu](/main-functions/main-menu): right-click on [Show Clone Layers](/layer-functions/cloning#show-clone-layers)-button).
* When executing [Show Clone Layers](/layer-functions/cloning#show-clone-layers) on a group header and the group holds a [Group Clone](/layer-functions/cloning#group-clone), the clone layers will now be revealed.
* You can now show/hide clone layers of multiple [Prime Clones](/layer-functions/cloning#prime-clone) if selected when executing [Show Clone Layers](/layer-functions/cloning#show-clone-layers).
* When executing [Show Clone Layers](/layer-functions/cloning#show-clone-layers) with no layer selected, you can now show/hide all clone layers in comp.
* Compatibility with sources to *Advanced 3D* renderer's *Environment Lights* in [Precomp Clones](/layer-functions/cloning#clone-and-precomp). Since it's impossible to read the source information via scripting, you'll have to re-select the source on the *Environment Source* layer created by *Workflower* upon cloning. Afterwards, execute [Refresh Connections](/main-functions/connections#refresh-connections) to include the source in the clone.
* [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) will now take *Compositing Options* on true 3D objects in the *Advanced 3D* renderer into account.
* Ability to choose not to link properties via expressions upon creating a [Precomp Clone](/layer-functions/cloning#clone-and-precomp).
* Greatly improved the speed when creating & refreshing [Precomp Clones](/layer-functions/cloning#clone-and-precomp) that contain layers with AE's *Paint* effect.
* During [Refresh Layout](/main-functions/layout#refresh-layout), names of [Precomp Clones](/layer-functions/cloning#clone-and-precomp) in the project panel will now automatically inherit the *Precomp Clone* layer name as well as always indicate the *Precomp Clone* layer's containing comp with the suffix *(in '\[COMP]')*.
* The icon for a [Prime Clone](/layer-functions/cloning#prime-clone) showing its layers can now be displayed as a marker instead of within the layer name. (On Windows, enabled by default. On Mac, has to be enabled in the *Icons* settings.) This increases performance on showing/hiding and reduces the risk of expression errors originating from the clone.

#### Precomposing

* When using Workflower's [Precompose](/layer-functions/precomposing#precompose), ability to update all layer references in expressions within the entire project to new comp. Works in every precompose or unprecompose action.
* On the [Precompose](/layer-functions/precomposing#precompose) dialog, you can now quickly preprend the current comp name to the precomp name and more.
* When using Workflower's [Precompose](/layer-functions/precomposing#precompose), ability to set the start timecode of a new precomp to a specific frame (instead of only to zero).
* Ability to precompose multiple groups in Workflower's [Precompose](/layer-functions/precomposing#precompose). Advanced precompose features for this function are disabled (except for updating expressions).
* Ability to precompose all layers in comp. With no layer selected, hit Workflower's [Precompose](/layer-functions/precomposing#precompose). Advanced precompose features for this function are disabled (except for updating expressions).
* Ability to precompose your current comp. With no layer selected, hit Workflower's [Precompose](/layer-functions/precomposing#precompose).
* Ability to unprecompose all precomps in your current comp. With no layer selected, simply hit Workflower's [Precompose](/layer-functions/precomposing#precompose). (As of now, does not take precomp's transforms into account.)
* [Rig Multi-Pass Layers from Precomp](/layer-functions/miscellaneous-layer-functions#rig-multi-pass) now has been officially implemented. With a precomp layer selected, hit Workflower's [Precompose](/layer-functions/precomposing#precompose) to access it.

#### Control Creation

* New feature: [Create Control](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2) (only available via [Main Menu](/main-functions/main-menu): Alt/Option+click on *Parent Layers to Group*-button). With layer/s selected, creates a null & parents layers to it.
* Ability to create a null control layer to a point control property: Execute [Create Control](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2) while a point control property is selected.
* Ability to create a transform control layer to a layer: Execute [Create Control](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2) while the layer's transform property is selected.

#### Miscellaneous

* Compatibility with AE's new Spectrum UI. **IMPORTANT:** Due to AE using a different font in the Spectrum UI, *Workflower* now has to use regular characters as icons in its layer names on both Windows and Mac (previously this was only necessary on Mac). Check out the user guide on [Unavailable Characters](/main-functions/layout#unavailable-characters) for more information.
* New feature: [Reveal Project File](/main-functions/main-menu#reveal-project-file) (via [Main Menu](/main-functions/main-menu): right-click on empty space, then click on *Reveal Project File*). Reveals the current project file in the file explorer/finder.
* You can now trim all layers in comp to work area duration by executing [Trim Layer to Layer](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-1) with no layer selected. (Function doesn't extend trims.)
* New function: [Push Comp to Premiere](/layer-functions/miscellaneous-layer-functions#push-comp-to-premiere) (only available via [Main Menu](/main-functions/main-menu): Right-click on [Push Frame to Photoshop](/layer-functions/pre-rendering#push-frame-to-photoshop)-button, then click on *Push Comp to Premiere*). Pushes the active comp or the currently selected project panel items to Premiere Pro via Dynamic Link.
* Added [KBar functions](/installation#kbar) for new Workflower functions: *'showLayerRelationships', 'sortProjectItems', 'showAndSoloCloneLayers', 'showMoveIndicator', 'preRender', 'showHidePreRender', 'showHidePreRenderWFProxy', 'pushFrameToPhotoshop', 'markPreRenderState', 'saveGlobalStoreComp', 'loadGlobalStoreComp', 'storeLayersByID', 'pasteLayersByID', 'revealProjectFile', 'createControl'*
* New API function: [wfAPI.kbarExecute('functionName')](https://workflower.constantin-maier.com/pages/GjKvUAGzyQ67pvgwmhE4#wfapi.kbarexecute). Similar to [wfAPI.execute()](https://workflower.constantin-maier.com/pages/GjKvUAGzyQ67pvgwmhE4#wfapi.execute) but allows to execute a single *Workflower* function through KBar's *Add Scriptlet* feature. If you want to call multiple commands, however, check out the [user guide section on the function](https://workflower.constantin-maier.com/pages/GjKvUAGzyQ67pvgwmhE4#wfapi.kbarexecute). (Please note: *wfAPI.kbarExecute()* always creates Workflower undo groups.)
* Updated to aescripts licensing framework 4.3.1.

### Changed

* **IMPORTANT:** To make room for the new pre-render functions on the main menu, [Precompose](/layer-functions/precomposing#precompose) has been moved behind the [Create Group](/group-functions/create-and-duplicate-groups#create-group) button (Ctrl/Cmd-click to access it).
* To improve performance when frequently showing/hiding layers of a [Prime Clone](/layer-functions/cloning#prime-clone), connections will now *not* be refreshed on hiding. (Can be re-enabled in the *Cloning* settings.)
* When [refreshing connections](/main-functions/connections#refresh-connections) of a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) that shares the same clone comp with a *Precomp Clone* in another comp, the *Precomp Clone* in the current comp will now get a new clone comp (instead of the *Precomp Clone* in the other comp). Additionally, the [Dependent Clones](/layer-functions/cloning#duplicating-a-precomp-clone) within the other comp will now refer to the *Precomp Clone* in their comp.
* [Relabel Layer/s](/layer-functions/relabeling#relabel-layer-s) has been renamed to *Relabel Layer / Group / Keyframe* to better reflect its functionality. Additionally, on the shortcuts panel, it has been moved to the *Groups* category.
* [Create Matte](/layer-functions/matting#create-matte) has been renamed to *Create Matte / Mask* to better reflect its functionality.
* [Add / Remove Layer References](/main-functions/connections#add-remove-layer-references) has been renamed to *Add / Remove Layer / Mask References* to better reflect its functionality.
* When you duplicate a regular layer with [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group) and the original layer is contained in a regular [Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer), the duplicated layer is now added automatically to the *Linked Adjustment Layer* too. You can disable this feature under *Settings > Adjustment Layers*.
* [Linked Adjustment Layers](/layer-functions/adjustment-layers#create-linked-adjustment-layer) will now only be set inactive when the layer is disabled; **not** when it's not solo'd while other layers are solo'ing. This only applies to newly created/refreshed *Linked Adjustment Layers*, not those created in older *Workflower* versions. To return to the way it used to behave, go to *Settings > Adjustment Layers* and enable *Set Linked Adjustments inactive when not solo'd while other Layers are solo'ing*.
* When grouping multiple layers, the lowest layer name will now be suggested as the group's name by default (can be disabled in the *Naming Settings*).
* When precomposing, the suffix *'Comp'* will now **not** be added to the suggested precomp name by default (can be enabled in the *Naming Settings*).
* The default *Renaming Mode Preference* of [Rename Layer/s](/layer-functions/renaming#rename-layer-s) has been changed to *Remember Choice*.

### Fixed

* Fixed a bug in [Refresh Layout](/main-functions/layout#refresh-layout) that could slow down the function by 2x or sometimes even more when the comp contained [Precomp Clones](/layer-functions/cloning#clone-and-precomp).
* Fixed a bug in [Create Matte](/layer-functions/matting#create-matte) that sometimes caused a [matte created from a *Set Matte* effect (or any other effect)](/layer-functions/matting#creating-single-mattes-from-effects) to jump to an incorrect position when the base layer didn't have comp dimensions or *Collapse Transformation* enabled.
* Fixed a bug that prevented [Convert Property to Comp Size](/layer-functions/adjustment-layers#convert-property-to-comp-size) to work on degrees properties when the After Effects language was anything other than English.
* Fixed a bug that would falsely remove *Ambient* and *Environment* lights from a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) during [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental).
* Fixed a bug on Mac that would not allow to flip through naming levels on the [Rename Layer/s](/layer-functions/renaming#rename-layer-s) panel properly. However, it's still important to let go of the shortcut immediately after pressing it to avoid flipping through the next naming levels.
* Fixed a bug in [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) that would incorrectly use regular [Refresh Connections](/main-functions/connections#refresh-connections) when the [Precomp Clone](/layer-functions/cloning#clone-and-precomp) comp was stored in a [Store Comp](/layer-functions/storing-layers#store-layers).
* Fixed the *WQ* plug-in issue message on Mac to reflect the settings dialog on newer Mac OS systems.
* The WQ plug-in launch error on Mac will now ***not*** be triggered anymore on *Workflower* updates. (It may, however, still happen on the first installation.)
* Fixed a bug that would sometimes not switch the view from *Source Name* to *Layer Name* on a comp where Workflower was first executed on.
* Fixed a bug on Mac that would cause AE to freeze when a folder was opened in the Finder from within *Workflower* and the folder path contained special characters.
* Fixed a bug on Mac that would sometimes not display the correct label colors on *Workflower's* panels when you've had AE installed in more than 1 language.
* Fixed a bug that would not properly close all opened comps when updating all comps within the project.
* Fixed a bug when using a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) that would sometimes not link layers with *Element 3D* effect applied properly.
* Fix for local license activation when license server is configured.
* Fix for -38 license deactivation error.
* Fix for -6 activation error.

{% hint style="warning" %}
**Tutorial for v2.5 is Coming!**

I’m currently tied up with other projects and haven’t had a chance to create a video tutorial yet, but I’ve heard your feedback, and it’s on my radar. While I can’t promise a timeline, I’ll do my best to get to it when I can.

In the meantime, please refer to the [user guide](/releases#id-2-5) for detailed instructions.
{% endhint %}

## 2.0.4 - January 15, 2024 <a href="#id-2-0-4" id="id-2-0-4"></a>

### Added

* Full compatibility with the new *Advanced 3D* renderer, introduced in AE 24.1.
* [Rename Layers by Number](/layer-functions/renaming#rename-layers-by-number) lets you now define by what increment you want to renumber as well as to keep a certain suffix. To do this, go to *Settings > Naming > When executing Rename Layers by Number:*.
* [Rename Layers by Number](/layer-functions/renaming#rename-layers-by-number) now also works on project panel items. Make sure to have no layer in your current comp selected, then select your project panel items and execute 'Rename Layers by Number'. IMPORTANT: This will only work when you execute the function from the menu (not via shortcut).
* You can now duplicate project panel items by selecting them and executing [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group). When you duplicate a comp, it will open the timeline of the duplicated comp and make all its [Precomp Clones](/layer-functions/cloning#clone-and-precomp) independent. IMPORTANT: This will only work when you execute the function from the menu (not via shortcut) AND you don't have any layers in your currently active comp selected (otherwise *Workflower* will duplicate the selected layers)!
* When executing [Paste Stored Layers](/layer-functions/storing-layers#paste-stored-layers) while [Precomp Clones](/layer-functions/cloning#clone-and-precomp) are within the selection, *Workflower* will now create unique *Precomp Clones* and potentially update contained [Dependent Clones](/layer-functions/cloning#duplicating-a-precomp-clone) to the new clone comp. Check out the user guide on [Using a Precomp Clone in another Comp](/layer-functions/cloning#using-a-precomp-clone-in-another-comp) for more information.
* *Clones* and *Stored Layers* folders in the project panel will now be identified solely by their name and not their item comment. This makes *Workflower* compatible with add-ons that rely on folder item comments (like [Pro IO](https://aescripts.com/pro-io/)).
* \[Beta feature]: It's now possible to [add layer comments without *Workflower* overwriting them](/main-functions/layout#allowing-external-layer-comments). This also makes *Workflower* compatible with a variety of add-ons that rely on writing/reading data to/from the layer comments (like [Flatten Layers](https://aescripts.com/flatten-layers/) or [AutoSway](https://aescripts.com/autosway/)). *Workflower* achieves this by saving its data to a layer marker when a non-*Workflower* layer comment is added. Do not remove this marker! Using non-*Workflower* layer comments can reduce performance of *Workflower* functions, so it's recommended to use as few as possible. To return to *Workflower* using layer comments in order to store data, just put in an empty string into the layer comment and execute any *Workflower* function. Since this feature is still in beta, you have to enable it under *Settings > Layout > Allow External Layer Comments*.
* When right-clicking on some functions on the [Main Menu](/main-functions/main-menu) (like matting-, cloning- or naming-functions), you can now access the dedicated settings page directly.
* You can now quickly access the [Convert all Comps to another Layout](/main-functions/layout#convert-all-comps-to-another-layout) function by right-clicking on empty space on the ScriptUI panel and choosing *Export/Import Project*.
* When an error occurs, you can now send a support ticket on the spot, directing you to a pre-populated contact form.
* When you execute a function that requires an active comp and there is no active comp, you will now get an error.
* Added the function [wfAPI.refeshLayouts(comps\[, doNotLabelLayersOutsideToNone\])](https://workflower.constantin-maier.com/pages/GjKvUAGzyQ67pvgwmhE4#wfapi.refeshlayouts) to the scripting API. This allows you to refresh the layout of several comps at once, making the overall execution faster.
* Added the functions [wfAPI.isInTagID(layer, tagID)](https://workflower.constantin-maier.com/pages/GjKvUAGzyQ67pvgwmhE4#wfapi.isintagid) and [wfAPI.isInTagName(layer, tagName)](https://workflower.constantin-maier.com/pages/GjKvUAGzyQ67pvgwmhE4#wfapi.isintagname) to the scripting API. This checks whether a given layer is within a tag group with either a certain ID (0 - 16) or name.

### Changed

* When [Refresh Layout](/main-functions/layout#refresh-layout) or [Rename Layers by Number](/layer-functions/renaming#rename-layers-by-number) renumber layer names, *Workflower* now doesn't add a space between the original name and the new number when the last character is a *'0'* or a symbol like *'\_'*.
* When you execute [Rename Layers by Number](/layer-functions/renaming#rename-layers-by-number), *Workflower* now will try to find a unique name for each selected name *after* the entire renaming process took place.

### Fixed

* Fixed a bug when executing [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) that would falsely reveal other properties on a layer.
* Fixed a bug that occurred when showing/hiding [Prime Clone](/layer-functions/cloning#prime-clone) layers and properties on a layer's effect were hidden (e.g. in certain circumstances on *Element 3D* and others).
* Fixed a bug that would occur during [Refresh Layout](/main-functions/layout#refresh-layout) after a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) was moved in time and its keyframes became negative.

## 2.0.3 - November 4, 2023 <a href="#id-2-0-3" id="id-2-0-3"></a>

### Added

* Compatibility with After Effects 2024.
* The [Layer Tagging](/layer-functions/tagging-layers) panels now feature buttons that let you switch between [Tagging](/layer-functions/tagging-layers#tag-untag-layer-s) and [Performing](/layer-functions/tagging-layers#perform-action-on-tagged-layer-s).
* You can now apply keyboard shortcuts to [Trim Layer to Keyframes](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes) and [Trim Layer to Layer](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-1).
* When moving [Precomp Clone](/layer-functions/cloning#clone-and-precomp) layers in time and executing [Refresh Layout](/main-functions/layout#refresh-layout), the keyframes on the *Precomp Clone* layer will now stay exactly where they used to be relative to comp time.
* Unless a [*TTT* marker](/main-functions/layout#exempt-layer-from-trimming) has been added, [Dependent Clones](/layer-functions/cloning#duplicating-a-precomp-clone) will now adjust during 'Refresh Layout' to the in/out of their contained layers too. When executing [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group), a *TTT* marker will be added automatically to the *Dependent Clone* (you may change this behavior in the *Cloning Settings*). Remove the marker to make use of the automatic trimming. Since the automatic adjustment of a *Dependent Clones'* in/out point would break legacy comps, a trim exception will be added to all *Dependent Clones* upon executing any *Workflower* function on any comp created with *Workflower* v2.0.2 and lower.
* The speed when using [Add / Remove Layer References](/main-functions/connections#add-remove-layer-references) while having two layers selected in order to set an effect layer control dropdown has been improved.
* Ability to limit the calculation of the layer size/s during cropping in [Precompose](/layer-functions/precomposing#precompose) to comp size (enabled by default). This will speed things up when you know that the layers to be precomposed are within the bounds of the current comp. When layers stretch beyond the comp size, please disable this checkbox.
* Added the parameter *doNotLabelLayersOutsideToNone* to [*Refresh Layout* in the scripting API](https://workflower.constantin-maier.com/pages/GjKvUAGzyQ67pvgwmhE4#wfapi.refeshlayout). Call it like this: *wfAPI.refreshLayout(\[comp, doNotLabelLayersOutsideToNone])*. This sets the current comp to not label layers outside groups to *None*. Default is false.

### Changed

* To make room for the new shortcuts on the shortcuts panel UI, [Store Layers 4](/layer-functions/storing-layers#store-layers) and [Paste Stored Layers 4](/layer-functions/storing-layers#paste-stored-layers) have been removed. You can still access these functions using [KBar](/installation#kbar).
* When duplicating groups or layers using [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group) and the group/selection contains [Precomp Clones](/layer-functions/cloning#clone-and-precomp) as well as corresponding [Dependent Clones](/layer-functions/cloning#duplicating-a-precomp-clone), the source comp of the duplicated *Dependent Clones* will now be set to the duplicated *Precomp Clone* source comp.
* When creating a [Group Clone](/layer-functions/cloning#group-clone) and NOT choosing [Prime Clone](/layer-functions/cloning#prime-clone), the created [Precomp Clone](/layer-functions/cloning#clone-and-precomp) will now be disabled by default since the clone will generally only be used to be referenced by an effect or a [Dependent Clone](/layer-functions/cloning#duplicating-a-precomp-clone) of it will be the layer that's actually visible.
* When performing *Toggle Motion Blur* on a [Tag Group](/layer-functions/tagging-layers#performing-actions), and a contained layer holds a motion blur effect (*Pixel Motion Blur*, *RSMB*, etc.), the layer's motion blur switch will now be toggled on/off too in addition to the effect.

### Fixed

* Fixed a bug that would prevent *Essential Properties* of the same type (e.g. text) from being referenced properly in a [Precomp Clone](/layer-functions/cloning#clone-and-precomp).
* Fixed a bug that could occur when trying to [unprecompose](/layer-functions/precomposing#precompose) layers in certain situations (e.g. when the precomp was within a [Group Matte](/layer-functions/matting#group-matte)).
* Fixed a bug that would additionally [precompose](/layer-functions/precomposing#precompose) the [Group Matte](/layer-functions/matting#group-matte) layer when a layer within a group with *Group Matte* was precomposed.
* Fixed a bug that would occur when creating a group with the new *Advanced 3D* renderer selected in AE's beta.
* Fixed a bug that could create a *Missing Font* error upon reopening a project file created with *Workflower*.
* Fixed a bug that would accidentally execute some functions twice when executed from the [ScriptUI Panel](/main-functions/main-menu#main-menu-as-scriptui-panel).
* Fixed a bug that would use a wrong date naming format for log files.
* Fixed a bug that could falsely create a mov file titled *\[WF] Interpretation Reference* in the project panel when opening Workflower's settings.

## 2.0.2 - June 30, 2023 <a href="#id-2-0-2" id="id-2-0-2"></a>

### Fixed

* Fixed a bug that would generate an error after applying a layer name using [Rename Layer/s](/layer-functions/renaming#rename-layer-s).
* Fixed a bug that would create an expression error on a text layer's *Source Text* property in a [Precomp Clone](/layer-functions/cloning#clone-and-precomp).

## 2.0.1 - June 26, 2023 <a href="#id-2-0-1" id="id-2-0-1"></a>

### Added

* The [ScriptUI Panel](/main-functions/main-menu#main-menu-as-scriptui-panel) now uses smaller buttons by default. To revert back to larger buttons, right-click on any button and select *Use Large Buttons*.
* On the [ScriptUI Panel](/main-functions/main-menu#main-menu-as-scriptui-panel), center-clicking on empty space will now execute [Refresh Layout](/main-functions/layout#refresh-layout).
* \[WF beta feature:] Compatibility with proper 3D objects (GLB, OBJ) using the *Mercury 3D* renderer in *AE's* beta. Since those objects can't contain effects, no effects will be added when the layer is a [Group Opacity Layer](/group-functions/miscellaneous-group-functions#group-opacity), [Prime Clone Layer](/layer-functions/cloning#prime-clone), [Clone in Comp Base](/layer-functions/cloning#clone-in-comp) or [Matte Layer](/layer-functions/matting#merge-mattes). Instead, control the opacity of a *Group Opacity Layer* by clicking on the original opacity property; Control the *Prime Clone Layer* opacity from the *Custom Opacity* Slider on the layer's corresponding effect on the *Precomp Clone*; Control the *Clone in Comp* properties from the clone itself; Control the *Matte Layer* properties from the *Matte Merge Layer Effect*. Also: *Mercury 3D* objects can't set track mattes, therefore, when adding a [Group Matte](/layer-functions/matting#group-matte), you might want to create a [Prime Clone](/layer-functions/cloning#prime-clone) of your contained *Mercury 3D* objects first before creating the *Group Matte*.
* \[WF beta feature:] Ability to change the comp's renderer from *Mercury 3D* to *Classic 3D* after having created a *Prime Clone* containing *Mercury 3D* objects in *AE's* beta. When you execute [Refresh Connections](/main-functions/connections#refresh-connections) on a clone that contains *Mercury 3D* objects, the clone's renderer will be always set to *Mercury 3D* regardless of the source comp's renderer. This enables you to work with proper 3D objects while being able to use blend modes, track mattes, etc. on non-*Mercury 3D* layers in your comp.
* When re-assigning a [Tag Group](/layer-functions/tagging-layers) and the newly selected *Tag Group* already contains layers, you can now choose to either merge or swap both *Tag Groups*.
* On *Workflower's* shortcuts panel, you now have the ability to export and import shortcuts to/from a txt file.
* You can now assign shortcuts that contain the *Tab* key on Workflower's shortcuts panel.

### Changed

* When merging while re-assigning a [Tag Group](/layer-functions/tagging-layers), the newly merged *Tag Group* will now always take on the name of the tag that it was re-assigned to.

### Fixed

* Since AE will display scripting progress bars as of 23.5, *Workflower* will now disable them automatically during *Workflower's* execution on Windows, and guide you to disable them on Mac. (The automatic disabling mechanism seems to fail on Mac at the moment. Hopefully, this will be fixed in the future.)
* Circumvented permissions issues that could prevent shortcuts slots from being installed on Mac. Now, an alternative method to install the slots will be used when the original one fails.
* Fixed a bug on Mac or when using *Individual Scripts Mode* on Windows that prevented the user, in certain circumstances, to be informed correctly to set a shortcut for the [Main Menu](/main-functions/main-menu#main-menu-as-dialog) when there was none.

## 2.0 - May 12, 2023 <a href="#id-2-0" id="id-2-0"></a>

**FINALLY AE 23/24+ COMPATIBLE!**

{% hint style="warning" %}
**Attention:** If you work in AE 22 (no matter whether you use Workflower v2 or v1 in it) and you want to open up a project that was created in AE 23/24 + Workflower v2, you have to [downgrade that project](/main-functions/layout#convert-project-to-older-wf-version) beforehand. To do this, go to *Settings > Layout > Convert Project to older WF/AE Version*.
{% endhint %}

### Added

#### ScriptUI Panel

* Option to use *Workflower's* [Main Menu](/main-functions/main-menu) as a [ScriptUI Panel](/main-functions/main-menu#main-menu-as-scriptui-panel). Install *Workflower ScriptUI Panel.jsxbin* into AE's *ScriptUI Panels* folder. Please note that it is still mandatory to additionally have *--- Workflower ---.jsxbin* installed in AE's *Scripts* folder.

#### Matting

* [All matting tools](/layer-functions/matting) (creating single/multi-layer mattes, creating *Group Mattes* & merging mattes) now conform to AE's new *Selectable Track Matte* system (introduced in AE 23). Especially [Group Mattes](/layer-functions/matting#group-matte) benefit significantly, making them many times faster. When, within a *Group Matte*, existing track mattes have to be merged or you reference another matte layer (like the group header), an [Intermediate Matte Merge](/layer-functions/matting#group-mattes-in-ae-23-and-upwards) (*Inter-Merge*) has to be added above the *Group Matte Layer* that is being used as track matte for group layers. Read the [updated user guide chapter on matting](/layer-functions/matting) for more information.
* If you create a [Matted Adjustment Layer](/layer-functions/adjustment-layers#create-matted-adjustment-layer) to a single Layer in AE 23 and up, an adjustment layer with a track matte set to the selected layer will be created (instead of an additional clone).
* When you execute *Create Matte* on a single layer while having a *Set Matte* effect on the layer selected, now the created matte layer will **not** be used as a track matte but the *Set Matte* layer control will be set to the new matte layer instead. This also works for other effects too, e.g. to create to depth map layer to a *Camera Lens Blur* effect. Please read the [user guide chapter on *Matting*](/layer-functions/matting#creating-single-mattes-from-effects) for more information.
* [Invisible Mattes](/layer-functions/matting#invisible-mattes) now display the icon ‡ for easier detection of the layer type.
* *Matte Clone Collection Groups* will now get deleted if there are no clones within anymore upon executing [Merge Mattes](/layer-functions/matting#merge-mattes).

#### Relabeling

* Using [Relabel Layer/s](/layer-functions/relabeling#relabel-layer-s), you can now affect keyframe label colors, too (introduced in AE 22.6). Instead of layers, select keyframes and execute *Relabel Layer/s*.
* When keyframes are transferred (for example when *Workflower* adds a special opacity slider to apply group opacity), keyframe label colors are now transferred as well.
* Now, when you have keyframes selected and you execute [Select Group](/group-functions/collapse-and-select-groups#select-group), all keyframes of the selected label color will be selected.
* When using the relabel panel with keyframes selected and you hold down *Ctrl+Alt* (Win) / *Cmd+Opt* (Mac) while clicking on a label color, all keyframes in the current comp with the old label color old the selected keyframe will change to the new one.
* On the relabel panel, you can now press keyboard shortcuts to quickly apply label colors (0 - 9, A - G).

#### Learning

* Extended tooltips with additional info when hovering over function buttons. You can also disable the extended tooltips under the *Miscellaneous* settings tab.
* Ability to disable any kind of tooltip on the 'Main Menu'. To do this, go to the *Miscellaneous* settings tab.
* When first executing certain functions (like creating a group), *Workflower* will now display useful tips about the functions.
* When you right-click on any function in the [Main Menu](/main-functions/main-menu), a menu will open with links to the user guide and video tutorial chapter on the function.

#### Layer Tagging

* New functions: [Tag / Untag Layer/s](/layer-functions/tagging-layers#tag-untag-layer-s) & [Perform Action on Tagged Layer/s](/layer-functions/tagging-layers#perform-action-on-tagged-layer-s). Tag layers and groups with a specified label color by using the *Tag / Untag Layer/s* panel. Afterwards, use *Perform Action on Tagged Layer/s* to execute any of these actions on them: activating (= enable & solo if necessary), selecting, enabling, soloing, locking, toggling effects, toggling motion blur & jumping to the top-most layer of a *Tag Group*.
* New functions: [Activate / Deactivate Tag Group 1 / 2 / 3](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2-3): (De)activate *Tag Group 1*, *2* or *3* quickly without the need for first opening up the *Perform Action on Tagged Layer/s* panel. *Activate / Deactivate Tag Group 3* is only available via shortcut.

#### Group Functions

* Now you can expand/collapse a group simply by [double-clicking on a group header](/group-functions/collapse-and-select-groups#expand-collapse-a-group-by-double-clicking). Select a group by [Alt/Option+double-clicking](https://workflower.constantin-maier.com/pages/-MQrPDLP9WbvM8ymNwP2#select-a-group-by-alt-option+double-clicking), enable/disable by [Shift+double-clicking](https://workflower.constantin-maier.com/pages/-MQrO6kGWULcFTTHTPxD#enable-disable-a-group-by-shift+double-clicking), and solo by [Alt/Option+Shift+double-clicking](https://workflower.constantin-maier.com/pages/-MQrO6kGWULcFTTHTPxD#solo-unsolo-a-group-by-ctrl-cmd+shift+double-clicking). Only works when you have a single group header selected. For multiple groups, use *Workflower's* dedicated functions. For the double-clicking behavior to work, you need to have the *WQ* plug-in installed that's provided in the installation files. Read the [installation instructions](/installation#step-1-installing-the-script) on how to set it up.
* When you execute [Ungroup Layer/s](/group-functions/ungroup-dissolve-and-delete-groups#ungroup-layers) on a group-less layer, it will now be moved after the next group.
* When you create a group of a single layer, *Workflower* will now suggest the layer name as the group name.

#### Trimming

* New function: [Trim Layer to Keyframes](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes) (*Ctrl/Cmd*+click on *Paste Stored Layers* button / Not available via shortcut).
* New function: [Trim Layer to Layer](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-1) (*Alt/Option*+click on *Paste Stored Layers* button / Not available via shortcut). With two layers selected, trims 2nd to 1st selected layer. With more than two layers selected, either trims to 1st layer, or trims 1st layer to other layers.

#### Precomposing

* When using *Workflower's* [Precompose](/layer-functions/precomposing#precompose) while having multiple layers selected, you now have the option to create a precomp for each selected clip.
* When using *Workflower's* [Precompose](/layer-functions/precomposing#precompose) and having checked *Adjust Composition to the Time Span of the Selected Layers*, you can now add handles before and after the precomposed clip/s.
* When using *Workflower's* [Precompose](/layer-functions/precomposing#precompose), you now have the option to choose *Leave only Transform Attributes* if you have a single layer with a source item.
* When using *Workflower's* [Precompose](/layer-functions/precomposing#precompose) with *Leave all/only Transform Attributes* checked, you can now choose to *Adjust Composition to the Time Span of the Selected Layers* too.
* When executing [Precompose](/layer-functions/precomposing#precompose) while having a precomp layer selected, you can choose to [rig multi-pass layers](/layer-functions/miscellaneous-layer-functions#rig-multi-pass) from the precomp's contained layers (still experimental!).

#### Naming

* When you execute [Rename Layer/s](/layer-functions/renaming#rename-layer-s) while having a layer property selected, the selected layer will now be renamed to the property name, e.g. to the selected mask name. (Please note that this is disabled by default. Enable it by going to *Settings > Naming > When Property is selected while executing 'Rename Layer/s', rename Layer to it*.)
* Group elements (*Group Mattes*, *Group Inter-Merges*, *Group Adjustment Layers* and Group *Clones*) will be renamed to their group header name automatically within [Refresh Layout](/main-functions/layout#refresh-layout). You can also deactivate this in the *Naming Settings*.
* [Matte Merge](/layer-functions/matting#merge-mattes) layers will be renamed to their matted layer name automatically within [Refresh Layout](/main-functions/layout#refresh-layout). You can also deactivate this in the *Naming Settings*.

#### KBar Integration

* Now you can execute *every* *Workflower* function from *KBar*. (4 previously not available functions were added + 7 functions introduced in v2.0.) Check out the user guide chapter on [Installation](/installation#kbar) for more.
* When installing a *WF KBar Toolbar* from the *Layout Settings*, the buttons will now be installed *without* modifier keys.

#### Miscellaneous

* When you execute [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) while having properties selected, all contained properties with an opacity will now be revealed too (e.g. clone stroke opacity properties when having the *Paint* effect selected).
* When using [Add / Remove Layer References](/main-functions/connections#add-remove-layer-references) and the 1st selected layer has properties selected that contain a layer control (e.g. *Set Matte* effect) & only 2 layers in total are selected, the function now sets the layer control to the 2nd layer (regardless of whether it's a *Precomp Clone*, *Matte Merge Layer*, or *Linked Adjustment Layer*).
* Upon executing [Preview Custom Clone Size](/layer-functions/cloning#preview-custom-clone-size), the *Precomp Size* of the *Precomp Clone* will now be automatically set to *Custom Size*.
* In the *Cloning Settings*, you now have the ability to turn off automatic *Refresh Connections* of *Precomp Clones* that happen within various functions, e.g. when executing *Parent Layers to Group*, clones will be generally updated to the new parent. However, this can slow down the execution of these functions significantly when working with larger clones and thereby hinder your workflow. When turned off, you will have to execute *Refresh Connections* yourself to update these clones.
* Functions have been updated to work when AE's new *Mercury 3D* renderer is active.
* *Workflower* now has its own scripting API in beta. Please be aware that the API is experimental at the moment and has to be used with caution! Some functions might not work as expected. Read the [user guide on the Scripting API](/main-functions/scripting-api) for more information.

#### System

* Updated to *AEScripts* licensing framework 4.1.4.
* Improved support and better error messaging for online activation.
* When checkboxes hold a tooltip with additional info, the icon *\[ ? ]* will now indicate this.
* *Workflower* will now remember the last position of a borderless panel separately when executed from *ScriptUI Panel / KBar* and when executed via a shortcut.

### Changed

#### System

* **IMPORTANT (Win only):** Due to AE now occupying *Shift+J* & *Shift+K*, the default shortcut for [Parent Layers to Group](/group-functions/parent-group-layers#parent-layers-to-group) has been changed to *Ctrl+Alt+3* & for [Set Parent Exception Layer](/group-functions/parent-group-layers#set-parent-exception-layer) to *Ctrl+Alt+Shift+3.*
* (Win only in AE 22 and below)**:** Due to [Activate / Deactivate Tag Group 2](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2-3) now occupying *Alt+F5*, the default shortcut for [Unshy Layers](/layer-functions/matting#unshy-layers) has been changed to *Alt+9.*
* Due to great usage, [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) has been moved on the *Main Menu* to the spot of [Ungroup Layer/s](/group-functions/ungroup-dissolve-and-delete-groups#ungroup-layers) so that you don't have to a press modifier key to access it. Now press *Shift* to access *Ungroup Layer/s* & *Ctrl/Cmd* to access [Dissolve Group](/group-functions/ungroup-dissolve-and-delete-groups#dissolve-group).
* [Relabel Layer/s](/layer-functions/relabeling#relabel-layer-s) has been moved on the *Main Menu* to the *Groups* category since it's mainly used for group relabeling.
* [Precompose](/layer-functions/precomposing#precompose) has been moved on the *Main Menu* to the *Layer* category.
* [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) has been moved on the shortcuts panel from the *Layers* to the *Groups* functions section since it's mainly used for groups.
* *Duplicate Group* has been renamed to [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group) to better reflect its functionality.
* System-related settings have been moved from the *Miscellaneous* settings tab to the new *System* tab.
* Logging is now enabled by default in order to make troubleshooting easier.
* Made online activation period more graceful.

#### Group & Layer Functions

* For improved visual clarity, sub-group headers will now **NOT** display the extra icon (Win: └ / Mac: >) left to the expanded/collapsed icon in *Indented Layout*.
* Automatic [trimming of regular track mattes to matted layers](/main-functions/layout#automatic-trimming) is now **disabled** by default since it sometimes resulted in confusing automatic trims. (Re-enable it by going to the *Trimming Settings*.)
* The clone border expansion of [Clones in Comp](/layer-functions/cloning#clone-in-comp) will now be set to 0% by default.
* The experimental option to combine track mattes on one layer when merging mattes has been removed due to low usage.

### Fixed

#### System

* Fixed a bug that would cause a *JSON.parse* error.
* Fixed error in alert to open After Effects preferences to allow scripts to access network.
* Fixed a bug that caused Workflower not to find AE's shortcut file if you only had a major AE version installed whose version number had three digits.

#### Group & Layer Functions

* Fixed a bug when using *Workflower's* [Precompose](/layer-functions/precomposing#precompose) that would shift a precomposed layer's position if it were parented to a layer outside of the selection.
* Fixed a bug when using *Workflower's* [Precompose](/layer-functions/precomposing#precompose) that would not set the created precomp to the correct length if *Leave all Attributes* was checked.
* Fixed a bug that would copy group-less layers in the wrong order to the clipboard after selecting all comp layers using [Select Group](/group-functions/collapse-and-select-groups#select-group) without any layer selected.
* Fixed a bug when using [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) that would cause layers to shift position if they were parented to deleted layer.
* Fixed a bug that would throw an error while refreshing [Group Mattes](/layer-functions/matting#group-matte) when a [Matte Merge](/layer-functions/matting#merge-mattes) layer was the first layer within the comp.
* Fixed a bug within [Store Layers](/layer-functions/storing-layers#store-layers) that prevented a group from being copied into a *Store Comp* when only the group header was selected.
* Fixed issues that occurred when you executed *Workflower* on a comp with existing non-*Workflower* layer comments which could have caused *Workflower* to malfunction. Now, all existing layer comments will be deleted by *Workflower* beforehand.
* Fixed a bug that would cause AE to crash if illegal group header/footer constellations existed. *Workflower* will now exit the execution to prevent the crash and give instructions on how to fix the comp structure.
* Fixed a bug that would falsely remove the *Group || Settings* effect when converting[ all comps to another layout](/main-functions/layout#convert-all-comps-to-another-layout) and enabling *Remove all Layer/Comp Comments*.
* Fixed a bug that would falsely add a *Group Opacity* slider to a disabled track matte within a disabled group.

## 1.1.4 - May 26, 2022 <a href="#id-1-1-4" id="id-1-1-4"></a>

### Added

* If you separate position dimensions by default (introduced in AE 22.4), group headers as well as other *Workflower* layers will now separate dimensions too.
* When you use [Store Layers](/layer-functions/storing-layers#store-layers) and [Paste Stored Layers](/layer-functions/storing-layers#paste-stored-layers), layer references in effects will now be retained.

### Changed

* When [merging mattes](/layer-functions/matting#merge-mattes), a matte layer with separated dimensions but otherwise unchanged transforms will now be added to the *Matte Merge* directly and not be cloned.
* When [centering a group header](/group-functions/miscellaneous-group-functions#center-group-header), disabled layers as well as [Parent Exception Layers](/group-functions/parent-group-layers#set-parent-exception-layer) will now be ignored while averaging the position.

### Fixed

* Fixed a bug that prevented the check within [Refresh Layout](/main-functions/layout#refresh-layout) whether [Group Adjustment Layers](/layer-functions/adjustment-layers#group-linked-adjustment-layers) need to be refreshed to work in certain circumstances.
* Fixed a bug that would prevent entire groups to be pasted using [Paste Stored Layers](/layer-functions/storing-layers#paste-stored-layers).
* Fixed a bug that would falsely parent a [Clone in Comp](/layer-functions/cloning#clone-in-comp), created from a layer with *Collapse Transformation*, within a parented group.
* Fixed a bug that would not [precompose](/layer-functions/precomposing#precompose) a layer while leaving all attributes in the comp when the layer contained a *sampleImage()* expression.

## 1.1.3 - May 15, 2022 <a href="#id-1-1-3" id="id-1-1-3"></a>

### Added

* Ability to [install a KBar toolbar](/installation#batch-create-all-buttons) that replicates the entire [Main Menu](/main-functions/main-menu) of *Workflower*. To install it, go to *Settings > Layout > Install WF KBar Toolbar*.

### Changed

* When opening *Workflower* for the first time, the user will now be asked whether they want to label layers outside groups to *None*.

### Fixed

* Fixed a bug on Mac or when using [Individual Scripts Mode](https://workflower.constantin-maier.com/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) on Windows that would not set the shortcut slots to the correct value when entering the shortcuts panel for the first time.

## 1.1.2 - May 4, 2022 <a href="#id-1-1-2" id="id-1-1-2"></a>

### Added

* When you [Un-Precompose](/layer-functions/precomposing#precompose) layers, you can now choose to adjust transforms of the un-precomposed layers to the transforms of the precomp layer.

### Fixed

* Fixed a bug that removed all parents within a group when unparenting a group.

## 1.1.1 - April 17, 2022 <a href="#id-1-1-1" id="id-1-1-1"></a>

### Added

* When you create a [Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer) and one of your selected layers has currently selected effects, those effects will now be cut from the layer and pasted to the *Linked Adjustment Layer*.

### Fixed

* Fixed issues that occurred after updating to a new AE version. *Workflower* will now inform you correctly to go to the *Workflower* shortcuts panel to apply shortcuts for the new version.
* If you updated to v1.1 from an earlier version, the default of *Trim Matte Merges with only Group Matte FXs to Matted Layer* has been incorrectly set to *off*. This will now be set to *on*.
* If you have a duplicate file of *Workflower* within the *ScriptUI Panels* folder (either in the system or user folder), *Workflower* will now inform you to remove the file. (Otherwise, the script won't work.)

## 1.1 - April 1, 2022 <a href="#id-1-1" id="id-1-1"></a>

{% hint style="warning" %}
**ATTENTION:** Projects created in v1.1 or newer are not fully backwards-compatible!

You can open up older projects with v1.1 but when you're switching back to v1.0.6 or older and you try to open up a project created with v1.1 or newer, you will have to [downgrade your project](/main-functions/layout#convert-project-to-older-wf-version) beforehand. To do this, go to *Settings > Layout > Convert Project to older WF Version*.
{% endhint %}

### Added

#### Speed Improvements

* Big speed improvement for [Refresh Layout](/main-functions/layout#refresh-layout). Around 2-4 times faster!
* Improved the speed of [Solo Group](/group-functions/disable-solo-and-lock-groups#solo-group), [Enable / Disable Group](/group-functions/disable-solo-and-lock-groups#enable-disable-group), [Select Group](/group-functions/collapse-and-select-groups#select-group) as well as for the [shortcuts panel](/main-functions/shortcuts#default-shortcuts) to come up.
* Improved performance of [Quick Refresh Clone Connections within Refresh Layout](/main-functions/layout#quick-refresh-clone-connections-of-selected-layers), especially when dealing with [Group Clones](/layer-functions/cloning#group-clone) that contain a lot of layers.

#### New Group Functions

* Ability to use [Group Opacity](/group-functions/create-and-duplicate-groups#group-opacity) and [Layers respect Group In/Out](/group-functions/create-and-duplicate-groups#layers-respect-group-in-out-point). Once you enable *Group Opacity*, *Workflower* will add an expression to the opacity of the layers and it will add a special opacity slider effect to all group layers as it does with [Prime Clone](/layer-functions/cloning#prime-clone) layers. Execute [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) to reveal the slider in the timeline.
* Ability to [add masks to a group header](/layer-functions/matting#using-the-group-header-as-referenced-group-matte-layer). When you draw a mask on the group header and you execute [Refresh Connections](/main-functions/connections#refresh-connections), a [Group Matte](/layer-functions/matting#group-matte) linked to the group header will be applied to all layers. However, it will only consider the masks, not the effects of the group header. (The border size of the group header will be set to comp size. You can change the size by going to the layer's *Contents > Border > Fill > Size*.) If you remove the mask/s from your group header, it will turn back to the default group header size.
* Ability to [add effects to a group header](/layer-functions/adjustment-layers#applying-effects-to-the-group-header). When you apply effects to the group header and you execute [Refresh Connections](/main-functions/connections#refresh-connections), a [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers) will be created which will consider the effects of the group header in addition to its own effects.
* When you create a group with [Parent Layers to Group](/group-functions/parent-group-layers#parent-layers-to-group) enabled, the group header will now be set at the [average position of the contained layers' anchor points](/group-functions/create-and-duplicate-groups#group-header-at-average-position).
* New function: [Center Group Header](/group-functions/miscellaneous-group-functions#center-group-header). Moves the header to the average position of all group layers' anchor points. (That way you can center the group header at any point, even after having created the group.)
* On the [Create Group](/group-functions/create-and-duplicate-groups#create-group) dialog, you can now choose a group label color.
* Ability to create an empty group. With no layer selected, execute *Create Group*.

#### Automatic Trimming

* [Automatic trimming](/main-functions/layout#automatic-trimming) of the in and out point of the group header to its contained layers (off when using [Layers respect Group In/Out](/group-functions/create-and-duplicate-groups#layers-respect-group-in-out-point)), as well as automatic adjustment of [Group Linked Adjustment Layers](/layer-functions/adjustment-layers#group-linked-adjustment-layers) and [Group Mattes](/layer-functions/matting#group-matte) to their group header. Also of track mattes to their matted layer, of [Precomp Clones](/layer-functions/cloning#clone-and-precomp) to their contained layers, and of [Matted Adjustment Layers](/layer-functions/adjustment-layers#create-matted-adjustment-layer) to their matted clone.
* Ability to exempt layers from getting trimmed. Simply add a marker to the layer with the comment "TTT" (without quotation marks), or use the new function: [Exempt Layer from Trimming](/main-functions/layout#exempt-layer-from-trimming), which is only available via the [Main Menu](/main-functions/main-menu): *Alt/Option+Click* on the [Rename Layer/s](/layer-functions/renaming#rename-layer-s) button.

#### Matting

* Ability to [shy *Matte Merge* layers that only contain *Group Matte* effects (*Shy Mattes*)](/layer-functions/matting#shy-mattes). Select any of the group layers and execute [Select Group](/group-functions/collapse-and-select-groups#select-group) to select the corresponding *Shy Mattes* too. If enabled (under *Settings > Matting*), all shy'd layers will then be unshy'd temporarily. Now move your layers and the next time you execute [Refresh Layout](/main-functions/layout#refresh-layout), all *Shy Mattes* will be shy'd again.
* New function: [Unshy Layers](/layer-functions/matting#unshy-layers). Only available via shortcut (Win: Alt+F5, Mac: no default shortcut). Temporarily unshy's all [Shy Mattes](/layer-functions/matting#shy-mattes) until the next time you execute [Refresh Layout](/main-functions/layout#refresh-layout). Useful when you, for example, want to move a layer without existing [Group Matte](/layer-functions/matting#group-matte) into a group with Group *Matte* and you want to be able to easily place the layer at the correct position.

#### Precomposing

* New function: [Precompose](/layer-functions/precomposing#precompose). A replacement for AE's *Pre-compose* with additional options. Using this function, you can convert a group to a precomp and vice versa too. When doing this, you can also convert transforms, [Group Mattes](/layer-functions/matting#group-matte), and [Group Linked Adjustment Layers](/layer-functions/adjustment-layers#group-linked-adjustment-layers) so that the precomp layer/group will inherit these attributes.

#### Connections

* When you add/remove a layer to/from a group, [Group Mattes](/layer-functions/matting#group-matte) and group effects will now be added/removed when executing [Refresh Layout](/main-functions/layout#refresh-layout) without the need for executing [Refresh Connections](/main-functions/connections#refresh-connections) afterward anymore. (You can also deactivate this behavior under *Settings > Matting* or *Settings > Adjustment La*yers since it might slow [Refresh Layout](/main-functions/layout#refresh-layout) down when dealing with a lot of layers.)
* When you're unlinking a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) or [Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer) where source properties have expressions applied to them, you can now automatically convert all expressions to keyframes on the cloned/linked layer to improve performance. (You need to enable this feature under the *Cloning* or *Adjustment Layer* *Settings*.)

#### Duplicate Group (& Layers)

* An advanced way to [duplicate groups and layers](/group-functions/create-and-duplicate-groups#duplicate-group). For example, all effects that reference other selected layers will be updated to their duplicates, as well as a more straightforward naming of the duplicates and an automated way of updating [Group Mattes](/layer-functions/matting#group-matte) and [Group Adjustment Layers](/layer-functions/adjustment-layers#group-linked-adjustment-layers) to the duplicated group.
* If you don't have a group header selected, *Duplicate Group* will now duplicate only the selected layers (not the group) with the advanced features mentioned above.
* When duplicating a group, the duplicated group will now get a new label color.

#### Layout & Naming

* New function: [Exempt Layer Name from Alteration](/main-functions/layout#exempt-layer-name-from-alteration). Only available via the [Main Menu](/main-functions/main-menu): *Ctrl/Cmd+Click* on the [Rename Layer/s](/layer-functions/renaming#rename-layer-s) button. Useful when you want to batch-exempt several layer names from alteration at once.
* Option to use a [custom indentation icon in Expression Mode](/main-functions/layout#custom-indentation-icon-in-expression-mode). Go to the *Icon Settings* to enable it. Useful when working a lot in *Expression Mode* and you want to have an indication of the layers' indentation level.
* Ability to define custom default names of *Group Clones*, *Group Linked Adjustment Layers*, and *Group Mattes*. Go to *Settings > Naming* to define them.
* When you [batch convert all comps to another layout style](/main-functions/layout#convert-all-comps-to-another-layout), you can now also choose to save the converted project as a copy.

#### Miscellaneous

* New function: [Expand / Collapse all Sub-Groups](/group-functions/collapse-and-select-groups#expand-collapse-all-sub-groups).
* You can now create [Clones in Comp](/layer-functions/cloning#clone-in-comp) from shape and text layers as well as from comps that have collapse transformation enabled, too.
* When you're creating a group with a lot of layers, or you're [toggling between layout styles](/main-functions/layout#toggle-non-indented-layout) in a larger comp (40+ layers), a progress bar will now indicate how long it will take until the action is complete.
* Ability to create a [KBar button](/installation#kbar) to directly label the selected group/layer with a specific color. Simply pass the label ID as an argument in the function, e.g. to label with the 3rd color, write: relabelLayers(3)

#### System & Shortcuts

* On *Workflower's* shortcuts panel, you can now reset a single function to its default shortcut by *Shift+Clicking* on *Edit*.
* Option to simulate an enter press to skip the AE panel after applying *Workflower* shortcuts. (You need to enable this by going to *Settings > Miscellaneous*.)
* On Windows, you now have the option to select a different method of how *Workflower* determines the current mouse position. Go to *Settings > Miscellaneous* and set Mouse *Position Calculation* to *External File (Advanced)*. (This has been added because some people experienced issues with dialogs not coming up which happens due to the fact that the mouse position calculation fails.)
* Ability to log *Workflower* activity. To enable it, go to *Settings > License & Help > Enable Logging* or create a file named "wf\_enable\_log.txt" (without quotation marks) in your *Documents* user folder if you cannot access the settings dialog. In case you encounter issues and you contact customer support, you might want to include your latest logfile (to be found under *\~Documents/Adobe/Workflower/Logging*).
* Ability to disable the update check from outside of the script. Useful since there are rare instances when the update check prevents the script from being opened. In these cases, please add a file named "wf\_disable\_update\_check.txt" (without quotation marks) in your 'Documents' user folder and start the script again.
* Updated to AEScripts licensing framework v4.0.3.

### Changed

#### Group Functions

* When you release a layer from a parented group and you execute [Refresh Layout](/main-functions/layout#refresh-layout), the parent will now be removed from the layer.
* Now you can have any group layer selected to execute [Select Group](/group-functions/collapse-and-select-groups#select-group). This does not apply when you have a group layer and a group header that is contained in the same group selected. The other exception is when the selected layer has a [Shy Matte](/layer-functions/matting#shy-mattes) above. (In that case, only the *Shy Matte* will be selected).
* When you execute [Ungroup Layer/s](/group-functions/ungroup-dissolve-and-delete-groups#ungroup-layers) while a group header at the highest level is selected, the group will now be moved after the next group at the highest level (instead of dissolving the group).
* You can now delete a [Group Matte](/layer-functions/matting#group-matte) layer and then execute [Refresh Layout](/main-functions/layout#refresh-layout) and all [Matte Merge](/layer-functions/matting#merge-mattes) layers with *Group Matte* effects will be removed. (Before, the only option was to select the group header and execute *Create Matte* to remove the layers.)
* When you duplicate a group, only the duplicated group header will now be selected (instead of the whole group).

#### Groups in 3D Space

* When a group header is 3D, the shy'd layer above the group which exists to display potential group error messages will now be disabled. That way, 3D space is retained and layers across different groups can intersect. Potential group error messages will still be displayed but only the shy'd layer above the topmost 2D group header will be used for that.
* When you create a [Group Matte](/layer-functions/matting#group-matte) or [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers) on a group header that is 3D, they will be turned into 3D as well by default so that 3D space is retained beyond the *Group Matte* and *Adjustment Layer*.

#### Precomp Clones

* When you execute [Refresh Connections](/main-functions/connections#refresh-connections) on a duplicated [Precomp Clone](/layer-functions/cloning#clone-and-precomp) layer, now the duplicated *Precomp Clone* layer (or more precisely: the selected layer) will get a fresh clone comp while the non-selected *Precomp Clone* keeps the existing clone comp.
* When you move a [Group Clone](/layer-functions/cloning#group-clone) out of its group and you execute [Refresh Connections](/main-functions/connections#refresh-connections) on it, it will now be turned into a regular [Precomp Clone](/layer-functions/cloning#clone-and-precomp).

#### Matte Merging

* The blending mode of mattes added to a [Matte Merge](/layer-functions/matting#merge-mattes) will now be set to *Stencil Alpha* (instead of *Normal*) by default.
* If you add a layer that is already within a [Matte Collection Group](/layer-functions/matting#matte-collection-groups) to a [Matte Merge](/layer-functions/matting#merge-mattes), the layer will now be turned into an [Invisible Matte](/layer-functions/matting#invisible-mattes).

#### System & Shortcuts

* When you open a project that was created with an earlier version or on another OS, you will now be informed and you can choose to update all comps in the project to the current version/OS.
* On Mac or when using [Individual Scripts Mode](https://workflower.constantin-maier.com/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) on Windows, when you have a reduced number of shortcuts and you click *Reset to Default* on *Workflower's* shortcuts panel, shortcuts will now be applied by priority (not by index).
* On Mac or when using [Individual Scripts Mode](https://workflower.constantin-maier.com/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) on Windows, two new default shortcuts have been added: [Precompose](/layer-functions/precomposing#precompose) (Win: Alt+F3, Mac: macControl+C) and [Ungroup Layer/s](/group-functions/ungroup-dissolve-and-delete-groups#ungroup-layers) (Win+Mac: Shift+H). To make room for those, [Clone in Comp](/layer-functions/cloning#clone-in-comp) and [Store Layers 1](/layer-functions/storing-layers#store-layers) have been removed from the list of functions with default shortcuts.

### Fixed

#### Group & Layer Functions

* Fixed a bug that would move layers incorrectly when a group with a large number of sub-groups was created.
* Fixed a bug that would not unshy accidentally shy'd group headers when refreshing the layout.
* When you [dissolve a group](/group-functions/ungroup-dissolve-and-delete-groups#dissolve-group) and it holds a [Group Matte](/layer-functions/matting#group-matte), [Group Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers), and/or [Group Clone](/layer-functions/cloning#group-clone), those elements will now be removed.
* When executing [Refresh Connections](/main-functions/connections#refresh-connections) on a [Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer), no issues occur anymore when undoing and then trying to redo the action.
* Fixed a bug that occurred when a [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers) was created and the group contained camera and/or lights.
* Fixed a bug that would unlock previously locked layers when creating a [Group Matte](/layer-functions/matting#group-matte).
* Fixed bug that would occur when you created a [Group Matte](/layer-functions/matting#group-matte) on a group with a [Group Matted Adjustment Layer](/layer-functions/adjustment-layers#create-matted-adjustment-layer).
* Fixed bug that would not refresh *Layer Styles* when using [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental).
* Fixed bug that would not update visibility states on shape and text layers when using [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental).

#### System

* On Windows, when you use multiple monitors with different DPI scalings, panels that appear at mouse position, now come up at the correct position. (For this to work properly, you need to disable *Warn User when Executing Files* in AE's *Scripting & Expressions* preferences because *Workflower* has to execute a file at startup to check the different monitor scalings.)
* Fixed *ExtComms* error handling.

## 1.0.6 - February 19, 2022 <a href="#id-1-0-6" id="id-1-0-6"></a>

### Added

* Updated licensing framework.
* On Mac, when pressing a modifier key on the [Main Menu](/main-functions/main-menu), new icons for the additional functions will now be revealed. (Unfortunately, this will only happen once you move the mouse.)
* Slightly improved the speed of [Refresh Layout](/main-functions/layout#refresh-layout). (In the upcoming v1.1, the speed of *Refresh Layout* will be improved by at least 4x.)

### Fixed

* Fixed issues when the user folder and/or AE shortcut file couldn't be found. Sometimes, this could have prevented the user from opening the script and/or reduced performance when executing functions.
* Fixed issues that occurred when shortcuts with a combination of *Shift+Alt/Option+Key* were applied.
* Greatly reduced the number of times you could get the *No corresponding Function found* error message.
* On Windows, when you use a scaled monitor resolution, panels that appear at mouse position, now come up at the correct position. (Unfortunately, *Workflower* will only take the scaling of the primary monitor into account. This will be fixed in the upcoming v1.1.)
* Fixed a bug on Mac that would cause panels that are supposed to appear at mouse position not to come up when multiple monitors with custom scalings were used.
* If dialogs that are supposed to appear at mouse position do not come up because the calculation of the mouse position fails, *Workflower* will now inform the user to restart AE, and if it doesn't help, to change the *Position of Borderless Dialogs* to *At Last Position.*
* On Mac or when using [Individual Scripts Mode](https://workflower.constantin-maier.com/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) on Windows, when no shortcut has been applied to the [Main Menu](/main-functions/main-menu), the user will now be informed to add a shortcut. (Otherwise, the script won't work.)
* Fixed issues that caused the automatic update check to get disabled by accident.
* Fixed a bug when using [Individual Scripts Mode](https://workflower.constantin-maier.com/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) on Windows that would prevent shortcut slots from being updated correctly if the shortcuts panel wasn't accessed via the [Main Menu](/main-functions/main-menu).

## 1.0.5 - October 23, 2021 <a href="#id-1-0-5" id="id-1-0-5"></a>

### Added

* Ability to [exempt the name of specific layers from being altered](/main-functions/layout#exempt-layer-names). Useful when working with scripts/plugins that depend on specific layer names. Simply add a marker to the layer with the comment *NNN*.

### Changed

* When you create a group that contains 3D layers and that is supposed to parent the layers, the group header will now automatically be turned into 3D.
* [Store Comps](/layer-functions/storing-layers) now don't depend anymore on staying within the *Stored Layers* folder in the project panel. Useful when working with a tool like [Declutter](https://aescripts.com/declutter/) that will overwrite the current folder structure.

### Fixed

* On Mac, when *Indent Layers Outside Groups to Fit AE Icons* is deactivated, no space will now be added in front of group-less layer names.
* [Linked Adjustment Layers](/layer-functions/adjustment-layers#create-linked-adjustment-layer) now resize if the comp size has been changed.
* Fixed a bug that would occur if layers of a [Prime Clone](/layer-functions/cloning#prime-clone) were shown and a layer was renamed using *Workflower's* [renaming tool](/layer-functions/renaming#rename-layer-s). (The expression on the opacity of the [Prime Clone](/layer-functions/cloning#prime-clone) used to then contain *undefined*.)

## 1.0.4 - September 10, 2021 <a href="#id-1-0-4" id="id-1-0-4"></a>

### Added

* Support for *KBar* buttons. Check out the user guide on [Installation](/installation#kbar) for more.
* Ability to add a shortcut for [Rename Layers by Number](/layer-functions/renaming#rename-layers-by-number).

### Changed

* [Matte Merge](/layer-functions/matting#merge-mattes) layers now resize automatically if the comp size has been changed.
* A more robust updating process for shortcut slots on Mac and [Individual Scripts Mode](/main-functions/shortcuts#individual-scripts-mode-windows-mac) on Windows. There's no need anymore to go to the shortcuts panel yourself. Also, if the update wasn't successful, *Workflower* will keep reminding you to update.

### Fixed

* Under certain conditions, some Japanese users experienced problems with opening the script. Now, alerts with more meaningful messages have been put in to guide the installation.
* The user will now be informed if the script file was accidentally put into the *ScriptUI Panels* folder.

## 1.0.3 - August 26, 2021

### Added

* Ability to [batch convert all comps to another layout style](/main-functions/layout#convert-all-comps-to-another-layout). Very useful when exchanging the project with someone who doesn't own *Workflower*. (For example, you might want to convert all of your comps to *Expression Mode* then.) Go to Workflower's settings and click on *Convert all Comps in Project to another Layout Style*.

### Fixed

* As there are issues with *Workflower's* shortcuts on Windows when the OS language is Japanese, the user will now be informed about the problem and how to set up everything correctly.
* Fixed a bug that would occur when actions are executed for multiple comps at once (like linking/unlinking elements across all comps in the project).

## 1.0.2 - August 20, 2021

**VERSION WITH CRITICAL BUG FIXES. PLEASE UPDATE!**

### Added

* Support for *Supercomp* layers in *Indented Layout*. Now, the *Supercomp* layer will not be indented so that it doesn't break the *Supercomp*.
* Speed for the *Relabel* panel to come up has been improved. Also for the execution of *Create Matte*, *Delete Layer / Clone / Group* and *Paste Stored Layers*.

### Fixed

* Fixed issues that could lead AE to crash/freeze.

## 1.0.1 - August 18, 2021

### Added

* *Precomp Clones* now support text style expressions on the *Source Text* property.

### Changed

* Within a *Precomp Clone*, when a text layer has different text styles, no linked expression will now be created, as an expression on this property will set a uniform text style. (Please execute *Refresh Connections* to refresh potential changes.)

### Fixed

* As some users were not able to open the script when AE's shortcut file contains special characters, the user will now be alerted to change the shortcut file name to only contain regular English characters. (Fixing the underlying issue might take a bit as this seems to be a bug within AE.)
* The user will now be alerted when, under certain circumstances, AE's shortcut folder cannot be found. (The user will have to manually select the shortcut file then.)
* Fixed a bug that occurred when the shape content of a group header was deleted.

## 1.0 - August 13, 2021

* Initial release


# Download Old Versions

If you want to revert to an older version of *Workflower*, here you can get the latest stable releases of a major version.

Please note that for v1.x to work you have to have bought the v1 license and not just the v2 license.

## Version 2.5

Release date: Jan 15, 2025

{% file src="/files/poibAp5A3CKcQnCXC3lU" %}

## Version 2.0.4

Release date: Jan 15, 2024

{% file src="/files/LSB9OYXqbuFBbaVoXaxK" %}

## Version 1.1.4

Release date: May 26, 2022

{% file src="/files/IiuREY8tfG3tZcaFEiCl" %}

## Version 1.0.6

Release date: February 19, 2022

{% file src="/files/0z69rURAcdTz2pv47P8u" %}


# Compatibility

## Software Compatibility

*Workflower* is compatible with:

* After Effects 2026
* After Effects 2025
* After Effects 2024
* After Effects 2023
* After Effects 2022
* After Effects 2021
* After Effects 2020
* After Effects CC 2019
* After Effects CC 2018
* After Effects Beta

### Software Compatibility Remarks

#### Extensive Testing only for the latest 2 After Effects Versions

{% hint style="warning" %}
While *Workflower* will open up in After Effects versions older than the last two ones, we do not have the resources to do extensive testing for new features of *Workflower* for these older AE versions, so full compatibility cannot be assured.
{% endhint %}

#### After Effects Beta is only supported to a Limited Extend

{% hint style="warning" %}
While it is technically possible to use *Workflower* in After Effects' Beta, we cannot guarantee for it to work, as the After Effects team frequently updates the beta with work-in-progress functions, and it's impossible to react to these changes in time.
{% endhint %}

#### Use Workflower's Downgrade Function to open After Effects 2025+/Workflower 2.5+ Projects in After Effects 2024 or Workflower 2.0.4

{% hint style="warning" %}
If you want to exchange your project with someone who uses *Workflower* 2.0.4 and/or AE 24, you have to [downgrade your project](/main-functions/layout#convert-project-to-older-wf-version) beforehand. To do this, go to *Settings > Layout > Convert Project to older WF/AE Version*.
{% endhint %}

#### Use Workflower's Downgrade Function to open After Effects 2023+ Projects in After Effects 2022

{% hint style="warning" %}
If you work in AE 22 (no matter whether you use Workflower v2 or v1 in it) and you want to open up a project that was created in AE 23+ and Workflower v2, you have to [downgrade that project](/main-functions/layout#convert-project-to-older-wf-version) beforehand. To do this, go to *Settings > Layout > Convert Project to older WF/AE Version*.
{% endhint %}

#### Workflower v1.x only compatible up to After Effects 2022

{% hint style="warning" %}
Please note that **only** *Workflower* [version 2.x](/releases#id-2-0) is compatible with After Effects 2023 and upwards. *Workflower* [version 1.x](/releases#1-1-4) is only compatible up to After Effects 2022.
{% endhint %}

## OS Compatibility

*Workflower* works on Windows and Mac.

### Notice for Mac Users

Be aware that the Mac version has a few limitations compared to the Windows version:

* You can only set a maximum of 20 shortcuts. Also, if you choose to use the maximum number of shortcuts, you can't use shortcuts on any other script. Reduce the number of *Workflower* shortcuts to be able to set shortcuts on other scripts. On Windows, on the other hand, you can set as many shortcuts as you want and it won't compromise on the number of shortcuts you're able to set for other scripts.
* The renaming panel has slightly less functionality (see [Known Bugs](/known-bugs#rename-layer-s-bugs)).
* (Limitation also applies for Windows users since AE's Spectrum UI ->) ~~You cannot use certain character combinations in your layer names anymore. Read up~~ [~~here~~](/main-functions/layout#unavailable-characters-mac-only) ~~for more information.~~

### Notice for Japanese Users on Windows

For most Japanese users of Windows, there are two limitations:

* [Single Script](/main-functions/shortcuts#single-script-mode-windows-only) shortcut mode (which allows for an unlimited amount of shortcuts) doesn't work when the OS language is Japanese. You will either have to switch the OS language to US or similar, or use [Individual Scripts](/main-functions/shortcuts#individual-scripts-mode-windows-mac) mode instead. So, as on Mac, you can only use a maximum of 20 shortcuts. Also, if you choose to use the maximum number of shortcuts, you can't use shortcuts on any other script. Reduce the number of *Workflower* shortcuts to be able to set shortcuts on other scripts.
* Setting custom shortcuts on *Workflower's* shortcuts panel doesn't work when the OS language is Japanese. Temporarily switch the OS language to US or similar to set custom shortcuts. Read up [here](/main-functions/shortcuts#shortcut-issues-for-japanese-users) for information on how to do it.

Unfortunately, these issues are caused by an AE bug. It has been reported to Adobe but as long as Adobe hasn't fixed this, you will have to rely on the solutions mentioned above.

If you encounter any other issues relating to your OS language, please contact customer support! We try to fix every issue or at least figure out a workaround for the time being.

### Cross-Compatibility between Windows and Mac

You can easily exchange After Effects projects that were created with *Workflower* between Windows and Mac. For more information, read up [here](/faq#win-and-mac).

## Compatibility with Non-Workflower Users

An After Effects user that doesn't own *Workflower* can easily open up a project created with *Workflower* without any issues!

However, it's recommended to batch-convert your comps to one of the *Non-Indented Layouts* beforehand so the non-Workflower user doesn't have to deal with the indented layer names:

<figure><img src="/files/-MR-ZCss6ZSgwnPwZJeW" alt=""><figcaption></figcaption></figure>

Please read the [F.A.Q. section on *Can I open up a project that was created with Workflower when I don't have the script?*](/faq#can-i-open-a-project) for more information.

## Compatibility with other Plugins/Scripts

### KBar

As of [version 1.0.4](/releases), *Workflower* supports the use of [KBar](https://aescripts.com/kbar/) buttons. Click [here](/installation#kbar) for instructions on how to set it up.

### Other Plugins/Scripts and Workflower's Comp Layout

If you wonder whether plugins/scripts are compatible with *Workflower's Indented Layout*, please check out the [F.A.Q. section](/faq#specific-layer-names) on this.


# F.A.Q.

## Bugs/Problems <a href="#update_issues" id="update_issues"></a>

### I'm a Japanese user (other users might be affected too) and I cannot start up the script, use *Single Script Mode* on Windows, and/or set shortcuts on *Workflower's* shortcuts panel. <a href="#problems-japanese-user" id="problems-japanese-user"></a>

If the script is not starting up, please make sure that your AE keyboard layout preset file name only contains regular English characters or numbers. To do that, go to AE's *Keyboard Shortcuts* panel and next to the keyboard layout preset dropdown, click on *Save As...* to create a copy of the current preset. Then choose a name only with English characters or numbers. (It might take a bit to solve the underlying issue as this seems to be a bug within AE.)

If you cannot use [Single Script Mode](/main-functions/shortcuts#single-script-mode-windows-only), please switch to [Individual Scripts Mode](/main-functions/shortcuts#individual-scripts-mode-windows-mac). There seems to be an AE bug that prevents *Single Script Mode* from working when the OS language is in Japanese.

If you cannot set shortcuts on *Workflower's* shortcuts panel, you can temporarily switch the language of your OS to US or something similar to set shortcuts.

For more information on *Single Script Mode* and typing in shortcuts, please read the [dedicated chapter for Japanese users](/main-functions/shortcuts#shortcut-issues-for-japanese-users).

### After installing *Workflower* using the *aescripts manager app*, I get this error when opening up the ScriptUI Panel: *Workflower's Main File '--- Workflower ---.jsxbin' does not exist, or has been put into the wrong Folder.*

<figure><img src="/files/Imojq8mNTdO6XvSGaoqZ" alt=""><figcaption></figcaption></figure>

*"--- Workflower ---.jsxbin"* is a mandatory file that's necessary to install in addition to the ScriptUI Panel file *Workflower ScriptUI Panel.jsxbin*.

The *aescripts manager app* should install all files properly, however, there seems to be a bug that happens on some machines and that causes the *aescripts manager app* **not** to install the main file "*--- Workflower ---.jsxbin"* properly.

If that's the case, please perform a [manual installation of Workflower](/installation#option-2-manual-install).

### On Mac, upon installing the *WQ* plug-in for double-click behavior, I get this error: *Even though File at Destination exists, an Error was encountered in Process of Installing.*

<figure><img src="/files/x12gjBcoKGuzqU0DnMtj" alt="" width="563"><figcaption></figcaption></figure>

If you can double-click on groups to expand/collapse them without issues, there's nothing to worry about.

However, if the function doesn't work, please install the *WQ* plug-in manually. For installation instructions, please check out [this user guide section](/installation#option-2-manual-install) (you only have to copy-paste the plug-in folder as outlined in *04 Plug-in* in the linked section).

Nevertheless, we try to resolve this issue going forward. If any other issues come up relating to this, please [contact customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW2-SUL).

### I'm getting this error frequently: *Attempt was made to run second script while another script was already running.*

![](/files/9aJfWH88N27QO3WeUWbR)

The issue comes up because you're executing a function while another is still processing. Some of *Workflower* functions take a bit to process and if you're pressing a shortcut directly after pressing another one, AE will throw this error.

It is advised just to wait a little bit longer until you execute a function again. If the mouse cursor is still showing the loading icon, wait a little bit until it shows the regular cursor again and you should be able to execute the next function without issues.

### On Windows, when I hit *Pre-Render*, *Workflower* queues the renders but then stops with this error: *An unexpected error occurred while exporting a composition. Error Code: 3.*

<figure><img src="/files/rJuTYQIjwoIALRelKFWy" alt=""><figcaption></figcaption></figure>

To our knowledge, this problem only occurs very infrequently. Simply restart After Effects (or sometimes you'll have to restart your computer), and try executing *Pre-Render* again. This should get rid of the error. If it doesn't, please contact customer support.

### On Mac, when I execute *Pre-Render*, *After Effects* freezes after finishing the render, and I either have to force quit it or it crashes with this error: *Sorry, an error occurred.*

<figure><img src="/files/vVtwRf5xo3ISMZaQbDFI" alt="" width="375"><figcaption></figcaption></figure>

In our testing, this problem only occurs infrequently. Simply restart After Effects or your computer, and try executing *Pre-Render* again. (Sometimes, you have to restart a second time.) This should get rid of the error. If it doesn't, please contact customer support.

### I'm a Windows user and *Workflower's* layer icons only display a rectangle with an "X" inside or seem to be missing in some other form. <a href="#layer-icons-missing" id="layer-icons-missing"></a>

![Icons on the Group Header not displayed properly](/files/HESCCNH6FUGVSShHkOeI)

The issue might come up because the Unicode block [Halfwidth and Fullwidth Forms](https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_\(Unicode_block\)) (which *Workflower* uses for most of its icons on Windows) is missing or is somehow corrupted on your OS.

Since *Halfwidth and Fullwidth Forms* is a Chinese/Japanese/Korean Unicode block, you can solve this issue by installing either one of these languages on your OS.

To do this, simply go to Windows's *Language settings* and add a language, for example Chinese. You don't have to use the language, it's enough to have it installed.

Now you might want to restart your computer to make sure Windows is loading the language. If you start After Effects now and run *Workflower*, layer icons should be displayed properly. If they aren't, please contact [customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW2-SUL).

### After entering my license, I get this error: *Trial expired (-100)*

![](/files/YQBMsenPwv67Ox4Xcvqj)

This issue can come up when you've entered the license code on too many machines. There's a new licensing system from aescripts that allows for a script to be licensed on two machines only.

You can deactivate one of these licenses by logging into your aescripts account, then go to *My Downloads & Licenses*, navigate to your *Workflower* license and click on *Info*. Here you can deactivate the license on another machine. Now, if you enter the license on your current machine, *Workflower* should open up.

If that's not the cause of your problem or the solution is not working, please conctact [customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW2-SUL).

### I'm a Mac user and on opening *After Effects* with *Workflower* installed, I get this error: *"WQ.plugin" can't be opened because Apple cannot check for malicious software.*

<figure><img src="/files/zSLlWx7ZehGwvymrGZDk" alt=""><figcaption></figcaption></figure>

If you receive this error, please follow [these instructions](/installation#possible-issues-with-the-wq-plug-in) on how to fix the issue.

You may also want to check out [this quick video tutorial](https://drive.google.com/file/d/124Gt95VeD2RBMpXQLdf-RgGtfUiTck_M/view?usp=sharing) on the issue.

### I'm a Mac user or *Individual Scripts Mode* user on Windows, and when trying to assign a shortcut to another script (like *MoBar's Quick Search Bar*), I can't assign it, or strange things happen on execution (like alternating between *Workflower* and the other script). <a href="#add-shortcut-to-other-script-issue" id="add-shortcut-to-other-script-issue"></a>

There are a few things to know about adding a shortcut for another script. Let's use *MoBar's* *Quick Search Bar* for this example:

* Unfortunately, After Effects only allows assigning shortcuts to a total of 20 scripts.
* Since *Workflower* by default already assigns 20 shortcuts, you have to reduce *Workflower's* shortcut slots first. To do this, go to *Workflower's* shortcuts panel (*Settings > Shortcuts > Set Shortcuts for Current Layout*) and in the dropdown at the top of the panel, set the shortcut slots from 20 to 19. This will remove the last shortcut in the panel. You can also delete another shortcut instead and re-add the previously deleted shortcut. Then click *Save* and close After Effects.
* The 20 scripts to which you can assign shortcuts in After Effects are, alphabetically, the first 20 scripts in the folder. Since *'MoBar Quick Search.jsxbin'* will not be among them, you need to rename it so that it is the 20th script in the folder. Go to the *Scripts* folder (Mac: */Applications/Adobe After Effects XX/Scripts*  |  Win: *C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Scripts*) and rename it to, for example, *'00 MoBar Quick Search.jsxbin'*.
  * (If you are working with the aescripts manager app, this renaming might become a problem during an update, as the manager app will install *'MoBar Quick Search.jsxbin'* instead of *'00 MoBar Quick Search.jsxbin'*, meaning you would probably have to rename the file again with every *MoBar* update.)
* Now restart After Effects and open After Effects' *Keyboard Shortcuts* panel. Search for *'MoBar Quick Search'* and make sure that the script file is in the *Scripts* section and \*not\* in the *Last Script Files* section. Then add the shortcut and save. Now it should work.
  * If you experienced before that strange things happened when executing the other script shortcut - like alternating between *Workflower* and the other script - this might be due to the fact that you assigned the shortcut to a script file in the *Last Script Files* section which will always execute the last script. (Strangely enough, this entry in the *Keyboard Shortcuts* panel carries solely the name of the script and is therefore easy to confuse.)
* If you ever want to add a shortcut for another script, you will need to further reduce the shortcut slots.

We also wish this process was different and that After Effects would allow assigning more shortcuts for scripts. This has been a feature request at Adobe for a long time, but as long as they do not add it, our hands are tied in this regard.

### *Workflower* did not get me a date as promised by the promotional video!

Please make sure you're not dabbling in any other competing software to After Effects. Dates are only available to users who are loyal to their love for After Effects. You MUST NOT have any instance of Nuke, Cavalry, or similar installed on your computer! Please remove the programs immediately and try again. Various dates should now appear quickly.

## Compatibility

### Can I open up a project that was created with *Workflower* when I don't have the script? <a href="#can-i-open-a-project" id="can-i-open-a-project"></a>

Yes, you can open up a project created with *Workflower* even if you don't have the script.

However, if you want to continue to work in this project, it is recommended to convert your comps to either [Non-Indented Layout](/main-functions/layout#toggle-non-indented-layout) or [Expression Mode Layout](/main-functions/layout#toggle-expression-mode) (no indent and no special characters) before handing over the project in order to get rid of all indent of layer names. As of [version 1.0.3](/releases#1-0-3-august-26-2021), you're able to batch convert all of your comps in a project to one of these layout styles. For more info about this function, [click here](/main-functions/layout#convert-all-comps-to-another-layout).

![Left: Indented Layout; Right: Expression Mode (No Indent + No Special Characters)](/files/-MR-ZCss6ZSgwnPwZJeW)

If the aep is returned to you, it is possible to convert the comps back to *Indented Layout*. For that to be possible, however, it is necessary that no layer/comp comments were deleted, as *Workflower* [relies on them to store information about groups and layers](/main-functions/layout#unavailable-after-effects-functions).

![Layer Comments with Internal Workflower Information](/files/-Mga1tanIqPs5g_swo3-)

Also, the group header, as well as [the shy'd layers above and below the group](/group-functions/create-and-duplicate-groups#additional-layers-to-keep-in-mind), mustn't have been deleted. These are necessary for *Workflower* to be able to identify the beginning and end of a group.

![Left: A Group with shy'd Layers above and below; Right: A Group with shy'd Layers revealed](/files/-MQvk7-h7XIsnnrvto9w)

However, if you want to exchange the project file with someone who doesn't have *Workflower*, that person might find it annoying to deal with the additional shy'd layers above and below groups. That's why you can also remove those layers using the [batch conversion function](/main-functions/layout#convert-all-comps-to-another-layout). But be aware that it will then be impossible to read group information on re-importing and you would have to create your groups anew!

### Can projects be exchanged between Windows and Mac without problems? <a href="#win-and-mac" id="win-and-mac"></a>

Yes, *Workflower* will work on both platforms, and yes, you can easily exchange between the two OS'.

However, on Mac, *Workflower* uses different [icons within the layer names](/main-functions/layout#unavailable-characters-mac-only) than on Windows. Also, the layers are indented a bit differently due to the fact that AE uses a slightly different font here.&#x20;

Still, importing a project from another OS works without any issues and once you execute any *Workflower* function, it will convert the entire project to your OS-specific layout.&#x20;

{% hint style="danger" %}
It is important that your entire project is converted to the OS-specific layout because otherwise certain expressions can break once you start working!
{% endhint %}

### Will *Workflower's* comp layout break scripts/plugins that depend on specific layer names? <a href="#specific-layer-names" id="specific-layer-names"></a>

It depends on the specific script/plugin and how it's referring to that layer name. If layer names are properly referenced in expressions, for example, *Workflower* will update the names in these expressions so that they don't break. If they aren't, or the script/plugin refers back to the layer name in some way, this can cause issues.

In case certain expressions/script functions break, you can exempt the names of specific layers from being indented by adding a marker with "NNN" (without quotation marks) to the layer, or by executing the dedicated function [Exempt Layer Name from Alteration](/main-functions/layout#exempt-layer-name-from-alteration). That way, you can keep using *Indented Layout* and even put these layers into a group without altering their names. Read up [here](/main-functions/layout#exempt-layer-names) for more information about exempting layer names from being indented.

![Exempting 'Original Base' from being indented to keep the 'Normalize Track' script functional](/files/nHbBtLqMpcGs9QReBVcT)

If you would have to exempt too many layers and you wouldn't have any benefits by using *Indented Layout*, you can also use Workflower's [Non-Indented Layout](/main-functions/layout#toggle-non-indented-layout) or [Expression Mode Layout](/main-functions/layout#toggle-expression-mode) which will remove the indent from **all** layer names.

As *Non-Indented Layout* will still rename some layer types with special characters, you might want to disable the icons for [Parent Exception Layers](/group-functions/parent-group-layers#set-parent-exception-layer) and [Prime Clone Layers](/layer-functions/cloning#prime-clone) in the *Icons Settings* of *Workflower* as these are the only icons that affect regular layers (that means: layers not created by *Workflower*).

If your workflow is mainly based around these other scripts/plugins, you also might want to set your *Default Layout Style* to *Non-Indented Layout* or *Expression Mode* in the *Layout Settings* of *Workflower*.

![Left: Indented Layout; Right: Non-Indented Layout](/files/-MR-YvzjOULGNEHx8iLh)

Another option to deal with certain layers that cannot be renamed would be to place them outside of groups and go to *Workflower's Layout Settings* to disable *Indent Layers Outside Groups to Fit AE Layer Icons*. Now, all group-less layers won't be indented.

However, in addition to that, sometimes there are certain modifications we can do to the code of *Workflower* in order to make it (more) compatible with that other script/plugin. If you experience any issues with the conjunction of another script/plugin and *Workflower*, please don't hesitate to [reach out to us](https://aescripts.com/contact/?product_id=1790) and we'll take a look at it.

**So far, we have tested these scripts/plugins that depend on certain layer names:**

* ***Supercomp*****&#x20;by Red Giant:** Compatible! The layer name of the *Supercomp* will **not** be indented in *Indented Layout* so that it doesn't break the *Supercomp*.
* ***Deekay Tool*****&#x20;by Motion Design School:** Unfortunately, *Deekay Tool* is not compatible with *Workflower's Indented Layout*. Either exempt layer names from indented, or use *Non-Indented Layout* or *Expression Mode* instead.
* ***Limber*****&#x20;by Steve Kirby:** As far as we've tested this, *Limber* seems to be compatible with *Workflower's Indented Layout*. However, as we're not familiar with the everyday use of this script, as of now we cannot guarantee it will work in every situation. You will have to test it out and see for yourself.
* ***RubberHose 2*****&#x20;by Battle Axe:** Unfortunately, *RubberHose* is not compatible with *Workflower's Indented Layout* when using the default settings. Since *Rubberhose's* controller layers depend on having exactly the name they're given, either exempt layer names from being indented, or place the layers outside of groups and deactivate *Indent Layers Outside Groups to Fit AE Layer Icons,* or use *Non-Indented Layout*.
* ***Joysticks 'n Sliders*****&#x20;by Mike Overbeck:** According to a user report, *Joysticks 'n Sliders* is compatible with *Workflower's Indented Layout*. However, if you experience any issues with it, please contact us.
* ***Layer Storage*****&#x20;by Joachim Holler:** Unfortunately, *Layer Storage* is incompatible with any layout of *Workflower*.
* ***Normalize Track*****&#x20;by Workbench:** Since *Normalize Track* depends on the layer named *Original Base* to have exactly the same name, you can just exempt this layer name from indentation.

If you know of any other script/plugin that is or is not compatible with *Workflower's Indented Layout*, you can let us know, so we can extend our list.

### Can you make the ScriptUI panel more responsive like *KBar* offers?

*Workflower's* ScriptUI panel is already responsive and depending on how you resize it, can be configured in 4 different layouts. But in case you want a responsive UI like *KBar* offers, this will very likely not be implemented natively in *Workflower* as it would be quite a feat to do. But if you own *KBar*, you can always [set up *Workflower* icons for it](/installation#kbar) (all functions can be mapped to *KBar* buttons) and customize your own toolbar the way you want to. There's also a function that [batch-creates all KBar buttons](/installation#batch-create-all-buttons) when you go to *Settings > Layout > Install WF KBar Toolbar*. Please note that the buttons will be created without the modifier keys, so you'd have to arrange them yourself if you want those.

If you want to reduce the panel size, you can also [disable some of the buttons](/main-functions/main-menu#customize-scriptui-buttons) if you don't or rarely need them. Go to *Settings > Miscellaneous > Customize ScriptUI* *Buttons* and choose which buttons should appear on the panel. When, at some point, you need to access a button you've disabled, you can simply come up with the [Main Menu by shortcut](/main-functions/main-menu#main-menu-as-dialog) (Win: Ctrl+Alt+X, Mac: macControl+X) which will always display the full menu.

## Performance

### Will *Workflower* slow down the performance of my comps? <a href="#wf-performance" id="wf-performance"></a>

It depends on what aspect of *Workflower* you mean.

[Groups](/group-functions/create-and-duplicate-groups#create-group), for example, don't really reduce performance. There's only one expression that's used when dealing with groups, which is on a [layer that's used to display potential error messages about groups](/group-functions/create-and-duplicate-groups#additional-layers-to-keep-in-mind). However, we have not experienced this to cause a visible slowdown in performance. Still, you can also disable this error message in the *Miscellaneous Settings* if you think it reduces your performance. Other than that, though, groups cannot reduce performance since all layers that are used to create groups (headers and footers) are either disabled or set to 0% opacity which AE won't render.

Other *Workflower* tools, namely [Precomp Clones](/layer-functions/cloning#clone-and-precomp), [Clones in Comp](/layer-functions/cloning#clone-in-comp), [Matte Merges](/layer-functions/matting#merge-mattes), [Group Mattes](/layer-functions/matting#group-matte), [Linked Adjustment Layers](/layer-functions/adjustment-layers#create-linked-adjustment-layer), and [Matted Adjustment Layers](/layer-functions/adjustment-layers#create-matted-adjustment-layer), all rely on some sort of expressions that can slow down your comp. However, when using *Precomp Clones*, *Linked Adjustment Layers*, and *Matted Adjustment Layers*, you can also [unlink them](/main-functions/connections#link-unlink-properties) after you're done working on them (meaning that the expressions will be removed) which should boost the performance.

(The speed improvement after unlinking will be most significant when using *Precomp Clones*. On *Linked Adjustment Layers*, however, the speed improvement may not be that great since the fact that all its effects will be copied to all selected layers is the most important factor here concerning speed.)

In the future, we want to implement more features that deal with improving the performance of your comp.

### Executing [Refresh Layout](/main-functions/layout#refresh-layout) sometimes gets slow. What can I do about it?

If you are still using [version 1.0.6](/releases#1-0-5) or lower, please update to the [latest Workflower version](/releases) as it will improve the speed of *Refresh Layout* by 2-4 times.

In addition, you also might want to set *Refresh Layout when Expanding / Collapsing / Selecting / Renaming* to *Never*.

(**Only applicable if you haven't updated to version 1.1 or newer** ->) If you want to use version 1.0.6 or lower, you can also consider these tips:

* Use no or as few locked layers as possible in your comp as they will have to be unlocked and then locked again during the execution of *Refresh Layout* and - depending on the number of locked layers - this can increase execution time quite a bit. (This issue has been fixed in version 1.1.)
* In addition, you might want to go to *Settings > Layout* and disable *When executing 'Refresh Layout', check Selected Layers for Unique Naming*. This should reduce execution time when executing *Refresh Layout* while layers are selected. However, if you want to keep this option on, you can also deselect your layers before executing *Refresh Layout*. (The speed of *Unique Name Checking* has been greatly improved in version 1.1.)

## Workflow

### Adjustment Layers, Group Mattes, etc. aren't refreshing although I'm executing *Refresh*. <a href="#refresh-functions" id="refresh-functions"></a>

The issue could be due to the fact that you're using [Refresh Layout](/main-functions/layout#refresh-layout) instead of [Refresh Connections](/main-functions/connections#refresh-connections). Those are two different functions if you weren't aware of this yet:

| Refresh Layout                                                                                                                                                                                                                                                                                                                                                                                                             | Refresh Connections                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="/files/-MQw6hzTaHhfX1UUA3e4" alt="" data-size="original">                                                                                                                                                                                                                                                                                                                                                        | <img src="/files/-MQw6mKK6DVyTcli2hrH" alt="" data-size="original">                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| <p>Simply put, <em>Refresh Layout</em> refreshes the comp layout (indent, icons, labels) as well as very simple attributes (visibility, solo, and lock states, as well as group parents).<br><br>But it features only a very limited refreshing of 'heavier' attributes like the ones of <em>Precomp Clones</em>, <em>Linked Adjustment Layers</em>, and <em>Group Mattes</em>. (More on this limited behavior below.)</p> | <p><em>Refresh Connections</em>, on the other hand, refreshes those 'heavier' attributes. Every time layers, effects, etc. have to be created/copied/etc., <em>Refresh Connections</em> needs to be executed.</p><p></p><p>For example, when you add effects to a <a href="/pages/-MQrDiuMZlGeJpQ5olUe#create-linked-adjustment-layer">Linked Adjustment Layer</a>, those effects will have to be copied to all <em>Linked Layers</em>, hence you will have to execute <em>Refresh Connections</em> for this.</p> |

Separating *Refresh Connections* from *Refresh Layout* is necessary in order to keep the performance of *Refresh Layout* as fast as possible. Since you will have to execute *Refresh Layout* quite frequently, it would interrupt your workflow too much if all connections would be refreshed every time you execute *Refresh Layout*.

That being said, since the [v1.1 release of *Workflower*](/releases#1-1), there is some integration of *Refresh Connections* features into *Refresh Layout:* Connections of *Group Mattes* and *Group Linked Adjustment Layers* will be refreshed within *Refresh Layout.* (Compared to the regular *Refresh Connections* which will refresh all attributes no matter what, the *Refresh Connections* within *Refresh Layout* will only refresh connections if *Workflower* detects that a refresh is necessary.)

However, please be aware that this does not eliminate the need for *Refresh Connections* - it only applies when layers have been added/removed to/from a group, not when you add/remove effects on your *Group Linked Adjustment Layer,* or when you, for example, change the *Referenced Group Matte Layer* on a *Group Matte*. In those instances, you still have to execute *Refresh Connections*.

Additionally, since the initial release, there's already a limited integration of *Refresh Connections* for *Precomp Clones* within *Refresh Layout*. Please refer to the [dedicated chapter](/main-functions/layout#quick-refresh-clone-connections-of-selected-layers) for more information.

### When I want to move a group/layer below a group and execute *Refresh Layout*, the group/layer gets moved into the group above.

Let's say you have a structure like:

**GROUP 1**\
**GROUP 2**\
**GROUP 3**

...and you want to move GROUP 3 between GROUP 1 and GROUP 2. However, when you select GROUP 3, move it there and execute *Refresh Layout*, it's moved into GROUP 1 as a sub-group:

**GROUP 1**\
&#x20;     **-> GROUP 3**\
**GROUP 2**

To avoid this, you have to do this: When you're moving GROUP 3 upwards of GROUP 2, you have to pay attention to the blue line (which is indicating where you're moving the layers to). There are two possible states of the line above GROUP 2:

| State 1                                                                                                                                                | State 2                                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <p><strong>GROUP 1</strong><br><br><mark style="color:blue;"><strong>---------------------------------</strong></mark><br><strong>GROUP 2</strong></p> | <p><strong>GROUP 1</strong><br><mark style="color:blue;"><strong>---------------------------------</strong></mark><br><br><strong>GROUP 2</strong></p> |

You'll need to release the layers in state 1 where the line is lower. State 2 on the other hand would move the layers into the GROUP 1. If you release them in state 1 and execute *Refresh Layout*, the structure will look like this:

**GROUP 1**\
**GROUP 3**\
**GROUP 2**

### Can I copy-paste a Precomp Clone into another comp?

Please read up on this issue in [the following chapter](/layer-functions/cloning#using-a-precomp-clone-in-another-comp).

### When I create a group or execute any other *Workflower* function, the label colors of all my other layers turn gray. How do I prevent this? <a href="#labels-turn-grey" id="labels-turn-grey"></a>

![Layers outside the Group labeled to Gray](/files/fHgmobrXV8JOKq0IfSJ7)

This is a feature and it is intended for when you mostly work with groups. All layers outside groups will be labeled to *None* by default whereas all layers within a group get a uniform color. However, when you don't use so many groups (or you just generally don't want to work like that), you can also change this setting. Go to *Settings* and in the *Layout* panel, disable *Color Label Layers Outside Groups to 'None' by Default*.

You can also change this setting for comps individually if you want to - some comps might be smaller without groups or with fewer groups where you want to color label your group-less layers, some other comps might be bigger ones with mostly groups where it's easier to see which layers are in a group and which aren't when group-less layers are labeled to *None*. To change this for comps individually, in the *Layout Settings*, enable *Use Custom Color Label Setting for Active Comp*. Or even quicker - click on the [dedicated button on the relabel panel](/layer-functions/relabeling#change-labeling-layers-outside-groups-to-none-in-active-comp).

![Button for Custom Color Label Setting on the Relabel Panel](/files/-Md1_yHNvcrOxI-C-p--)

## Questions about older Versions (v2.0.x)

### I'm a Windows user and my anti-malware software detects two files from Workflower's folder: *scale.exe* & *mouseposition.exe*

That's a false positive. *scale.exe* and *mouseposition.exe* are both alright and needed to run *Workflower* on Windows.

However, as of [version 2.5](/releases#id-2-5), the files shouldn't be detected by anti-malware software anymore.

## Questions about older Versions (v1.x)

### Upon installing *Workflower*, I get this error: *Did not find After Effects Shortcut File*. After clicking *Okay*, it says: *Function lowestFolder.openDlg* *is undefined*.

This might be a known bug that occurs when you only have an After Effects version of a major version installed that has three numbers in its name, like After Effects 22.6.4. If that's the case, please try downgrading to a two-number version, like After Effects 22.6.

If that's not addressing your problem, please contact [customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW-SUL).

### I've updated to a new AE version and now *Workflower* shortcuts don't work anymore. <a href="#update-issues" id="update-issues"></a>

If you haven't done so already, please update to [version 1.1.1](/releases#1-1-1) of *Workflower* which should fix this issue.

However, in case there are still issues, this is the general approach when shortcuts don't seem to work anymore after updating AE:

Please try to access *Workflower's* main menu (by going to *File > Scripts > --- Workflower ---.jsxbin*), then go to the shortcuts panel and click on *Save*. This will make sure shortcuts will be applied again.

If cannot open up the main menu, you might want to remove all shortcuts set by AE to the *Workflower* script/s. Go to *Edit > Keyboard Shortcuts*, then twirl down *File > Scripts* and remove all shortcuts associated with *--- Workflower ---.jsxbin*, as well as all shortcuts associated with all *--- Workflower II Function XX ---.jsxbin* files when you're on Mac or you're using *Individual Scripts Mode* on Windows.

If you still can't open up the main menu, you might want to reset AE's preferences. To do this, please press and hold the following keys while the application is starting: Ctrl+Alt+Shift (Windows), or Cmd+Option+Shift (Mac).

If none of these solutions work for you, please contact [customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW2-SUL).

### I'm getting this error trying to execute the script: *Unable to find After Effects Shortcut File*

If you're still using [version 1.0.5](/releases#1-0-5) or older, please update to the latest version as it will fix this issue.

In case you still experience issues, please contact [customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW2-SUL).

### I'm a Mac OS user and the script crashes on startup.

If you're still using [version 1.0.5](/releases#1-0-5) or older, please update to the latest version as it will fix various issues relating to Mac OS.

In case you still experience issues, please contact [customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW2-SUL).

If you want to use version 1.0.5 or older, please read the following:

The cause might be related to a Dropbox backup you have enabled on your machine. Please check out [this article](https://aescripts.com/knowledgebase/index/view/faq/dropbox-macos-warning/) on the issue.

If you are a Mac OS Monterey user, the cause of the issue could also be another one, however: Unfortunately, there seems to be an issue with the update check that the script performs at startup and Mac OS Monterey. Please check out [this page](https://aescripts.com/knowledgebase/index/view/faq/scripts-crashing-in-macos-monterey/) on how to disable the update check before launching the script.

### *Workflower* seems to cause AE or other scripts/extensions to crash/freeze. Why is this happening? <a href="#crash-freeze" id="crash-freeze"></a>

If you're still using version 1.0 or 1.0.1, please update to the [current version](/releases) as it contains fixes for critical bugs that caused AE or other scripts/extensions to crash!

If the update doesn't solve your problems concerning crashing/freezing, please contact *Workflower's* [customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW2-SUL).

### Can you make *Workflower* into a dockable panel?

As of [version 2.0](/releases#2-0), Workflower finally offers a [dockable panel](/main-functions/main-menu#main-menu-as-scriptui-panel).

Additionally, you have the option to [create buttons in *KBar*](/installation#kbar) and even [batch-create all *Workflower* function buttons in *KBar*](/installation#batch-create-all-buttons).


# Known Bugs

{% hint style="info" %}
As of [version 1.1](/releases#1-1), *Workflower* offers the ability to log activity in order to help us debug. As of [version 2.0](/releases#2-0), logging is enabled by default. If it's disabled for you, go to *Settings > License & Help > Enable Logging*. If you cannot access the settings dialog, create a file named "wf\_enable\_log.txt" (without quotation marks) in your *Documents* user folder to enable logging.

Your logfiles are to be found under:

**\~/Documents/Adobe/Workflower/Logging**

If you want to resolve an issue, you might want to include your latest logfile when contacting customer support.
{% endhint %}

## Most Common Bugs/Problems

{% hint style="info" %}
[For the most common bugs or problems, please check out the F.A.Q. section on *Bugs/Problems*!](/faq#update_issues)
{% endhint %}

## System Bugs

* Sometimes, upon executing a function, the script just loads forever without executing anything.
  * **Workaround:** Hit *Escape* to stop the execution. If the problem persists when trying to execute the function again, please restart After Effects. Sometimes, this solves the issue. If it doesn't, please contact customer support.

## ScriptUI Panel Bugs

* Sometimes clicking a button does not execute a function.
  * **Workaround 1:** Most of the time, this is because you don't have a timeline selected and most functions require an active composition. However, often in the circumstances, you might have a timeline open but AE will not recognize that for some reason and think you only have the ScriptUI Panel active at the time. To make it work, please click on the timeline of the comp to select it and then click on the function button on the ScriptUI Panel again. Most of the time, the function will execute now.
  * **Workaround 2:** If clicking the button still doesn't work, please restart the panel which can solve the issue. To quickly restart the panel, right-click on empty space of the panel and click on *Restart ScriptUI Panel*.
* Sometimes AE throws an error unrelated to *Workflower* and then *Workflower's* ScriptUI Panel becomes unresponsive.
  * **Workaround:** Please restart the panel by closing it and then re-selecting it from *Window -> Workflower ScriptUI Panel.jsxbin.* You might have to do this two times as the panel can start up blank the first time.
* Sometimes after rendering in AE's *Render Queue*, *Workflower's* ScriptUI Panel becomes unresponsive. In some instances, AE will throw an error after rendering: *"Can not run a script while a modal dialog is waiting for response"*
  * **Workaround:** Please restart the panel by closing it and then re-selecting it from *Window -> Workflower ScriptUI Panel.jsxbin.* You might have to do this two times as the panel might start up blank the first time.
* **(Only on Mac:):** Sometimes, when clicking on a button while holding down a modifier key, the non-modifier-key buttons will flash in between.
  * &#x20;Unfortunately, there's no workaround to this problem.

## Dialog Bugs

* Sometimes a borderless dialog (*Main Menu, Rename Layer/s, Relabel Layer/s*) will not come up at all.
  * **Workaround 1:** In some instances, this is due to the fact that *Workflower* is unable to determine the mouse position. When you hit *Escape*, the panel should come up. However, if you continue to experience the issue, please restart After Effects. In some cases, this will solve the issue.
  * **Workaround 2:** If workaround 1 didn't work and you are a Windows user, you can go to *Settings > Miscellaneous* and set *Mouse Position Calculation* to *External File (Advanced)*. This will use a different method for calculating the mouse position. For this method to work properly, please deactivate *Warn User when Execting Files* in AE's *Scripting & Expressions* Preferences.
  * **Workaround 3:** If workarounds 1 and 2 don't work for you, please contact customer support, so we can investigate the cause. For the time being, please go to *Settings > Miscellaneous* and set *Position of Borderless Dialogs* either to *At Last Position* or *Always Centered*.
* **(Only on Windows:)** When hitting *Escape* on a borderless dialog (*Main Menu*, *Relabel Layer/s*, *Rename Layer/s*), in some instances an error message will pop up. This, however, does not affect anything.
* When your mouse cursor is right at the edge of the screen (or very close to it), borderless dialogs *(Main Menu, Relabel Layer/s, Rename Layer/s)* might not come up.
  * **Workaround 1:** Move the mouse cursor a little bit away from the edge.
  * **Workaround 2:** If you are a Windows user, you can go to *Settings > Miscellaneous* and set *Mouse Position Calculation* to *External File (Advanced)*. This will use a different method for calculating the mouse position which is still able to read the mouse position if it is close to the edge of the screen.
* **(Only on Mac + After Effects 2021 and below:)** When you move the mouse cursor away from the main menu and then back to it, mouseover icons won't work anymore.
  * **Workaround 1:** Update to After Effects 2022 or higher which will fix this issue.
  * **Workaround 2:** Click on a random button, hold it, then move away from the button and let go. After that, mouseover icons will work again.
* **(Fixed in** [**version 1.0.6**](/releases#1-0-6)**)&#x20;**~~**(Only on Mac:)** On the *Main Menu*, no new icons will be revealed when pressing Shift, Cmd, or Option to execute additional functions. The execution of these functions works without problems, though.~~
  * ~~**Workaround:** Check the help-tip to know which modifier key will execute what.~~
* **(Fixed in** [**version 1.1**](/releases#1-1)**)** ~~There are issues with certain monitors, most of the time when their resolution is scaled up. Borderless dialogs (*Main Menu*, *Relabel Layer/s*, *Rename Layer/s*) might come up at the wrong position or not come up at all.~~
  * ~~**Workaround:** Open up the *Settings*, go to the *Miscellaneous* tab and change the *Position of Borderless Dialogs* from *At Mouse Position* to either *At Last Position* or *Always Centered*.~~

## Shortcut Bugs *(Windows - Single Script Mode)*

* **(Only on Windows:)** Sometimes hitting a shortcut might not work at all. An error message from *Workflower* will come up, telling you that you need to restart *After Effects* or your computer. Most of the time, restarting the computer will be necessary. Quite likely, this bug cannot be fixed since it seems to be a bug within the *Adobe* scripting environment. In these cases, the variable that gives information on the pressed key will not return anything. Unless *Adobe* isn't fixing this issue, you will need to stick to restarting *After Effects* or your computer.
  * **Workaround:** If you encounter too many problems when using shortcuts on Windows, switch to [Individual Scripts Mode](/main-functions/shortcuts#individual-scripts-mode-windows-mac) (go to *Settings / Shortcuts / Shortcut Mode*). You will only have a maximum of 20 shortcuts t    o assign but you will not encounter any bugs anymore.
* **(Only on Windows:)** In very rare instances, a certain function is being executed when actually having hit the shortcut for another function.
* **(Only on Windows for Japanese users:)** [Single Script Shortcut Mode](/main-functions/shortcuts#single-script-mode-windows-only) doesn't work when the OS language is Japanese. (This is due to an AE bug. It has been reported to Adobe but as long as they haven't fixed this, Japanese users will have to rely on the following workarounds.)
  * **Workaround 1:** Use [Individual Scripts Shortcut Mode](/main-functions/shortcuts#individual-scripts-mode-windows-mac). It doesn't have some advantages that *Single Script Mode* has (like being able to set an unlimited amount of shortcuts) but it will work without a problem when the OS language is Japanese.
  * **Workaround 2:** If you really want to use *Single Script Mode*, you will have to switch your OS language to US or similar. Read up [here](/main-functions/shortcuts#shortcut-issues-for-japanese-users) for more information.

## Shortcut Bugs *(Mac)*

* **(Only on Mac:)** On some machines, shortcuts that contain a number might not work (e.g. *macControl+1* for *Create Group* or *macControl+3* for *Reveal Layer Opacity*).
  * **Workaround:** Please change the shortcuts to ones that do not contain a number. It would be great if you could contact [customer support](https://aescripts.com/contact/?direct=1\&sku=CMRW2-SUL) too, so we can try to help you fix the issue. Unfortunately, we haven't been able to reproduce the issue ourselves so we're reliant on users cooperating with us on this issue.

## *Select Group* Bugs

* When executing [Select Group](/group-functions/collapse-and-select-groups#select-group) on a group with [effects on its header](/layer-functions/adjustment-layers#applying-effects-to-the-group-header) or with [Group Opacity](/group-functions/miscellaneous-group-functions#group-opacity) enabled, this might cause "ghost" expression errors to occur (= not actual errors, however ones that are being displayed). This is because upon executing *Select Group*, the icon \[   ] will be displayed briefly next to the group header name in order to indicate it's being selected (and therefore confuse the expressions of the *Linked Effects* or the *Group Opacity* expressions).
  * **Workaround:** To avoid the errors, you can go to the *Icon Settings* and disable the icon when selecting a group.

## *Group Opacity* Bugs

* When using *Layers respect Group In/Out* on a group that contains a group which, too, has *Layers respect Group In/Out* enabled, the trim of upper group will behave as without the setting enabled.&#x20;
  * **Workaround:** Add a trimming exception to the upper group header by executing [Exempt Layer from Trimming](/main-functions/layout#exempt-layer-from-trimming). Now, you'll be able to trim the group properly.

## *Create Matte* Bugs

* If you want to undo your action after drawing a parametric shape on the group header and then executing [Refresh Connections](/main-functions/connections#refresh-connections) to create a [Group Matte](/layer-functions/matting#group-matte) from it, you create an undo state from within the execution of the function rather than before. (Note: This does not happen when drawing a bezier/custom shape path.)
  * **Workaround:** Hit *Undo* three times to go back to before the execution of the function.

## *Merge Mattes* Bugs

* Due to a bug of the *Calculations* effect used on *Matte Merge* layers, when setting the *Blending Mode* to *Stencil Alpha* or *Silhouette Alpha*, under certain circumstances a very slight transparency might become visible although the matte source layer is at 100% opacity. (Since this is an AE bug, this problem will remain until AE is fixing it.)
  * **Workaround:** Add a *Curves* or *Levels* effect to the *Matte Merge* layer and boost the alpha channel a bit to get rid of the transparency.
* **(Fixed in** [**version 1.0.4**](/releases#1-0-4)**)** ~~As of now, when changing the comp size, *Matte Merge* layers will **not** be adjusted to the new size automatically and produce weird results.~~
  * ~~**Workaround:** To make the *Matte Merge* layer work again, you need to go to its *Solid Settings* and hit *Make Comp Size*. It is recommended to disable *Affect all layers that use this solid.* (Only when you are sure that no *Workflower* layer other than the *Matte Merge* layers of the comp with a new size use this solid, you may enable *Affect all layers that use this solid*.)~~

## *Clone & Precomp* Bugs

#### Cloning Mode Bugs

* Under very rare circumstances, the *Clone & Precomp* mode *Faster for fewer properties* can cause various errors. This only happens when you have another script installed that uses a callback function *(app.onError)* to display errors that happen within the application.
  * **Workaround 1:** Remove the other script from your interface and restart *After Effects.*
  * **Workaround 2:** If you can't remove the other script, go to the *Cloning Settings* and switch the *Clone and Precomp Mode* to *Faster for more Properties.* This will not cause the errors to be generated. Please note that you won't be able to use *Quick Refresh Connections* in that case, too. You can only use the regular *Refresh Connections*.
* The *Clone & Precomp* mode *Faster for more Properties* invalidates the user's clipboard. Since the mode uses AE's native function *Copy with Property Links*, the clipboard will then contain the layers copied to the clone comp.
  * **Workaround:** If that's a problem for you, go to the *Cloning Settings* and switch to *Faster for fewer Properties* mode instead.
* The *Clone & Precomp* mode *Faster for more Properties* will cause a specific problem with AE's *Redo*: If you undo the cloning action and then try to redo it after that, you will not be able to recreate the original state but rather a state midway through the function's execution. Other *Undo/Redo* states aren't affected, though. The bug happens because *Workflower* has to rely on a workaround in scripting in order to make use of AE's native *Copy with Property Links.* Unless Adobe isn't fixing this issue, *Faster for more Properties* will cause issues with *Redo*.
  * **Workaround:** If that's a problem for you, go to the *Cloning Settings* and switch to *Faster for fewer Properties* mode instead.

#### Expression Errors

* Sometimes it may happen that expression errors come up directly after creating a *Precomp Clone* if the clone has been created within a *Group Precomp Clone* or a *Group Linked Adjustment Layer.* The errors come up because certain linked attributes in the clone comps/adjustment layers haven't been updated yet.
  * **Workaround:** Simply hit *Refresh Connections* on the new *Precomp Clone* and/or the higher clones/adjustment layers to fix that.
* Sometimes, after creating a *Precomp Clone* or refreshing its connections, expression errors can come up. These errors don't have any cause, though (quite likely due to some bug within *After Effects*).&#x20;
  * **Workaround:** Just click on the magnifying glass icon on the expression error message to search for the errors - that way, the error message will disappear by itself since AE cannot find any actual error.

#### Miscellaneous Bugs

* In rare instances, something within the *Precomp Clone* is off compared to the source layers.
  * **Workaround 1:** It might help just to execute [Refresh Connections](/main-functions/connections#refresh-connections) on the *Precomp Clone*.
  * **Workaround 2:** Sometimes issues occur because of the fact that *Workflower* adds an expression to the *Compositing Options* of every effect within the *Precomp Clone*. AE sometimes seems to have bugs when it comes to expressions on the *Compositing Options*. To get around this, [unlink](/layer-functions/cloning#unlink-properties) your *Precomp Clone*. That way, *Workflower* will copy the layers to the *Precomp Clone* without expressions on the *Compositing Options*.
* When using *Refresh Connections* on a *Precomp Clone* and one or more of its contained layers has audio, potential open property tabs of the *Precomp Clone* layer (including tabs of potential Dependent[ Clones](/layer-functions/cloning#duplicating-a-precomp-clone)) in the timeline will be collapsed.
  * **Workaround 1:** If you have any property selected on the *Precomp Clone layer* in the timeline, property tabs won't be collapsed. (Tabs of *Dependent Clones* will be still collapsed, though.)
  * **Workaround 2:** Use [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) instead of [Refresh Connections](/main-functions/connections#refresh-connections). In most cases, this will not collapse the tabs. (Using this technique, tabs of *Dependent Clones* will not collapse too.)
* In rare instances, when using *Refresh Connections* or *Quick Refresh Connections* on a *Prime Clone*, the first frame of one of the clone layers might become invisible.
  * **Workaround 1:** Trim the source layer's in-point to one frame before the first frame. (If you need the trim to be exactly where it is, you might want to animate the opacity to 0% on the frame before.)
  * **Workaround 2:** Use [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) instead of [Refresh Connections](/main-functions/connections#refresh-connections) (or vice-versa). Sometimes this gets rid of the first invisible frame.
  * **Workaround 3:** If the culprit is *Refresh Connections* but *Quick Refresh Connections* doesn't work either or you want to use the regular *Refresh Connections*, go to the *Cloning Settings* and deactivate *When disabling Source Layers, set Clone Layers to 0% Opacity by Expression*. Then select the clone and hit *Refresh Connections* to enforce the new setting. Visibility states won't be linked now but the first frame should be visible.
* When creating a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) that contains another *Precomp Clone* with [enabled Precomp Transforms](/layer-functions/cloning#enabling-precomp-transforms), the position of the *Precomp Clone* with enabled transforms shifts within the higher *Precomp Clone*.
  * **Workaround:** Unfortunately, there's no workaround. We try to fix this in an upcoming update.
* When executing [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group) on a [Prime Clone](/layer-functions/cloning#prime-clone) with [enabled Precomp Transforms](/layer-functions/cloning#enabling-precomp-transforms) and their contained source layers, the duplication doesn't work properly and one *Precomp Clone* will be turned into a [Dependent Clone](/layer-functions/cloning#duplicating-a-precomp-clone).
  * **Workaround:** Unfortunately, there's no workaround. We try to fix this in an upcoming update.
* *3D Precomp Clones* are only experimental and have several limitations. You might encounter some bugs too. Check out the [dedicated chapter](/layer-functions/cloning#3d-precomp-clones-beta) to understand its limitations.

## *Linked Adjustment Layer* Bugs

* When using [Refresh Connections](/main-functions/connections#refresh-connections) on a *Linked Adjustment Layer*, the user's clipboard will be invalidated. Since it uses AE's native function *Copy with Relative Property Links*, the clipboard will then contain the effects copied to the *Linked Layers*.
  * Unfortunately, there's no workaround to this problem.
* When deleting a *Linked Adjustment* Layer with a *Calculations* effect applied to it (other effects might be affected too), then execting *Refresh Layout* (which delete the corresponding effects on the *Linked Layers*) and after that undoing the deletion, *After Effects* will crash in a lot of circumstances. (This is an *After Effects* bug and it has to do with an expression that *Workflower* applies to the *Effect Opacity* of the *Composition Options* on every *Linked Layer*. If the deletion of a referenced layer in this expression is undone, *After Effects* almost always seems to crash. So far, this behavior has only been observed when using the *Calculations* effect, though.)
  * **Workaround:** Use [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) to delete the *Linked Adjustment Layer* instead. This does not seem to cause problems with *Undo* later.
* [Convert Property to Comp Size](/layer-functions/adjustment-layers#convert-property-to-comp-size) causes unexpected behavior on certain properties when AE's language is not in English. We already have fixed this issue and will provide the fix in the next release of *Workflower*.
  * **Workaround:** Change AE's language to English.&#x20;
* **(Fixed in** [**version 1.1**](/releases)**)** ~~When using~~ [~~Refresh Connections~~](/main-functions/connections#refresh-connections) ~~on a *Linked Adjustment Layer*, a specific problem with AE's *Redo* occurs: If you undo the refresh action and then try to redo it after that, you will not be able to recreate the original state but rather a state midway through the function's execution. Other *Undo/Redo* states aren't affected, though. The bug happens because *Workflower* has to rely on a workaround in scripting in order to make use of AE's native *Copy with Relative Property Links*. Unless Adobe isn't fixing this issue, using *Refresh Connections* on a *Linked Adjustment Layer* will cause issues with *Redo*.~~
  * ~~Unfortunately, there's no workaround to this problem.~~

## *Pre-Render* Bugs

* **(Only on Windows:)** When executing [Pre-Render](/layer-functions/pre-rendering#pre-render),  sometimes *Workflower* queues the renders but then stops before starting the render with this error: *An unexpected error occurred while exporting a composition. Error Code: 3. Please restart After Effects and retry the export.*
  * **Workaround:** To our knowledge, this problem only occurs very infrequently. Simply restart After Effects or your computer, and try executing *Pre-Render* again. This should get rid of the error. If it doesn't, please contact customer support.
* **(Only on Mac:)** When executing [Pre-Render](/layer-functions/pre-rendering#pre-render), sometimes After Effects freezes after finishing the render, and it has to be force quit it or it crashes with this error message: *After Effects quit unexpectedly.*
  * **Workaround:** In our testing, this problem only occurs infrequently. Simply restart After Effects or your computer, and try executing *Pre-Render* again. (Sometimes, you have to restart a second time.) This should get rid of the error. If it doesn't, please contact customer support.
* **(Only on Mac:)** When making use of *Resize WF Proxy*, the output has slightly different colors.
  * **Workaround:** Unfortunately, there is no workaround at the moment. Since this is an AE bug that always occurs when resizing via the output module, there's nothing much we can do about it. If Adobe is not fixing this, however, we want to find a fix for this ourselves in the future.
* *(This issue probably has been solved ->)* If you right-click the project item with pre-render, then set the AE Proxy to none, and you execute *Refresh Layout* afterwards, this can lead to a bug which crashes AE.
  * **Workaround:** Please always unset the pre-render by selecting the layers with pre-render and executing [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group).

## *Rename Layer/s* Bugs

* **(Only on Mac:)** On the renaming panel, when flipping forward or backward through the naming levels, the new name level will **not** be selected (as compared to the Windows version).
  * **Workaround:** Hit Cmd+A to select the name level.

## *Relabel Layer/s* Bugs

* *(Solved?)* On some machines, an error message might come up when trying to open the relabel panel. This is because *Workflower* has to rely on a workaround to read AE's label colors. If that is the case, contact customer support with specific details about the After Effects version, language, etc., so we can fix this issue.
  * **Workaround:** To relabel groups, you can also just come up to the group header, select another label color using AE's native label dropdown, and then hit *Refresh Layout* to relabel the entire group.

## *Reveal Layer Opacity* Bugs

* When revealing the opacity of a layer with time remapping enabled, the *Time Remap* property will be revealed as well.
  * Unfortunately, there's no workaround to this problem.


# Installation

## Step 1: Installing the Script

### Option 1: Install using the Manager App

To install the script, you can use the [aescripts + aeplugins manager app](https://aescripts.com/learn/aescripts-aeplugins-manager-app/). Make sure to use at least version *1.5.344.0* of the app, otherwise, the script won't be installed correctly.

When you're installing the trial, click on *Account > Add Trial* in the app and search for *Workflower 2*. After you added the trial, you can simply click on *Install.*

<figure><img src="/files/PlaM8mDfJtCAC8KuyH2I" alt="" width="344"><figcaption><p>Adding the Trial to install it</p></figcaption></figure>

When you've already licensed *Workflower 2*, you can install it from the *Licenses* tab.

{% hint style="danger" %}
If you receive an error upon opening AE because the *WQ* plugin cannot load (seems to be mostly an issue on Mac), please read the [following section](#possible-issues-with-the-wq-plug-in).
{% endhint %}

### Option 2: Manual Install

If you're not using the manager app, please follow these instructions:

Download the script from [aescripts.com/workflower/](https://aescripts.com/workflower/). (You can simply download the trial by clicking on *'TRY'*. This also works for people with a license as trial and licensed product are the same file. If you have a license, you may also go to your account, then click on *My Downloads & Licenses* to download *Workflower*.)

Unzip the downloaded file. In the unzipped files, you'll find a folder called *"00 Files":*

<figure><img src="/files/3HgbCN8mWV0e7a9PThgY" alt="" width="375"><figcaption></figcaption></figure>

Within this folder, you'll find all relevant files to copy-paste:

<figure><img src="/files/eo2b2Bi0amVHrbZ46kEP" alt="" width="227"><figcaption></figcaption></figure>

#### 01 Script

In the folder *"01 Script"*, you'll find the file *"--- Workflower ---.jsxbin".* Copy and paste this file into *After Effects'* **Scripts folder**:

* Windows: **C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Scripts**
* Mac: **/Applications/Adobe After Effects XX/Scripts**

#### 02 ScriptUI Panel

In the folder *"02 ScriptUI Panel"*, you'll find the file *"Workflower ScriptUI Panel.jsxbin".* Copy and paste this file into *After Effects'* **ScriptUI Panels folder**:

* Windows: **C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Scripts\ScriptUI Panels**
* Mac: **/Applications/Adobe After Effects XX/Scripts/ScriptUI Panels**

#### **03 Startup**

In the folder *"03 Startup"*, you'll find the file *"Workflower Startup.jsxbin".* Copy and paste this file into *After Effects'* **Startup folder**:

* Windows: **C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Scripts\Startup**
* Mac: **/Applications/Adobe After Effects XX/Scripts/Startup**

#### 04 Plug-in

In the folder *"04 Plug-in Windows"* or *"04 Plug-in Mac"* (choose depending on your OS), you'll find the folder *"TerribleJunkShow"*. Copy and paste the entire folder *"TerribleJunkShow"* (**not only** *"WQ.aex"* or *"WQ.plugin"*) into *After Effects'* **Plug-ins folder**:

* Windows: **C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Plug-ins**
* Mac: **/Applications/Adobe After Effects XX/Plug-ins**

{% hint style="warning" %}
In case you experience issues with the *WQ* plug-in upon opening *After Effects* (seems to be only an issue on Mac), please check out [this section](#possible-issues-with-the-wq-plug-in).
{% endhint %}

#### 05 App Data

In the folder *"05 App Data Windows"* or *"05 App Data Mac"* (choose depending on your OS), you'll find the folder *"Workflower for After Effects"*. Copy and paste the entire folder *"Workflower for After Effects"* (**not only** the content) into your system's **App Data folder**:

* Windows: *Path of* **%PROGRAMDATA%**, *by default this is* **C:\ProgramData**
  * (*To find it, simply type C:\ProgramData into the search bar of the file browser as it might visibly not appear at the highest level of C:)*
* Mac: **/Library/Application Support**
  * *(To find it, simply go to the highest level of your main drive, then click on Library > Application Support)*

### Taking Precautions with Workflower's Script Files

{% hint style="warning" %}
You need to put the script files into the system scripts folder, as specified above, **not** the user scripts folder. Otherwise, the script won't work. That's why you also **can't** install the script via the *File > Scripts > Install Script File...* which would put the script into the user scripts folder.
{% endhint %}

{% hint style="danger" %}
If accidentally put *--- Workflower ---.jsxbin* into the *ScriptUI Panels* folder or into the user scripts folder and you then copied the file to the correct location, you need to make sure the file at the wrong location is deleted because the script otherwise won't work.
{% endhint %}

Make sure that the main script *"--- Workflower ---.jsxbin"* is the first or one of the first entries in the folder. (However, because of its name, starting with "---", it should appear at the top or near the top most of the time anyway.) This is important because *After Effects* can apply shortcuts only to the first 20 scripts within the scripts folder. So *"--- Workflower ---.jsxbin"* should be at least script 20 when you're on Windows, or pretty much script 1 when you're on Mac. (On Mac, *Workflower* will have to install more scripts in the scripts folder to apply shortcuts. For more on this, read the [chapter on Shortcut Modes](/main-functions/shortcuts#shortcut-modes).)

![Workflower Script at the Top of the Folder](/files/-MVIZfpEwiy2F-RqwPjs)

{% hint style="danger" %}
Also, be aware that you should **NEVER** rename the script files. If they don't have exactly that name, the script won't work.
{% endhint %}

### After Installing the Script Files

After copying the script files or installing them via the manager app, (re-)start *After Effects*, go to *File / Scripts* and click on *"--- Workflower ---.jsxbin"*.

If you didn't install the ScriptUI Panel yourself, *Workflower* will now inform you about how to install it yourself.

Afterwards, you will be directed to install the shortcuts.

### Possible Issues with the *WQ* Plug-In

On Mac, the OS might refuse to load the plug-in upon launching *After Effects* since Apple cannot scan for malicious software:

<figure><img src="/files/zSLlWx7ZehGwvymrGZDk" alt=""><figcaption><p>WQ.plugin Error</p></figcaption></figure>

If that's the case, please do the following:

1. Make sure the problem just occurred. If it didn't, start *After Effects* so the error will be triggered.
2. Open up your *System Preferences*
3. Go to *Privacy & Security*:
   * ![](/files/5gpmv75bSTGqZWVsh4vq)
4. *On MacOS Ventura/Sonoma* and later, scroll down the *Privacy & Security* settings page. On *MacOS Monterey* and earlier, make sure you're at the *General* tab of the *Privacy & Security* settings page.
5. Allow *WQ.plugin* to load:
   * ![](/files/TK8VGyEeqSm0zKahZkpz)
6. Restart *After Effects*
7. You will get the same error message but this time you can click on *Open*:
   * ![](/files/TMNx7VjzRQLFZXWbKBfJ)

You may also take a look at [this quick video tutorial](https://drive.google.com/file/d/124Gt95VeD2RBMpXQLdf-RgGtfUiTck_M/view?usp=sharing) on how to fix the issue.

If you experience something similar on Windows, please make sure to exempt the plug-in from a security check as well.

## Step 2: Installing the Shortcuts

During the installation process of *Workflower*, eventually the *Keyboard Shortcuts* panel will come up.

![Workflower Keyboard Shortcuts Panel](/files/-Md9JXAMYdmKSqbJ4Qh5)

In the *Keyboard Shortcuts* panel, the default shortcuts will have been set (if chosen before). You can customize your shortcuts by clicking on *Edit* next to the shortcut. When you're done, make sure to click on *Save* to apply the shortcuts. (Otherwise, no shortcuts will be applied.)

From now on, you can access any *Workflower* function via a shortcut. Either by hitting the shortcut of the main panel (from where you can access every function) or the shortcut of the desired function itself.

{% hint style="info" %}
For more information on shortcuts and the different shortcut modes (the default mode is a different one on Windows than on Mac), read the chapter on [Shortcuts](/main-functions/shortcuts).
{% endhint %}

#### Keyboard Layout Presets

*Workflower* will always set shortcuts on the current *Keyboard Layout* in *After Effects*. It is not possible, however, to set shortcuts on the default layout (*After Effects Default.txt*). Go to the *After Effects Keyboard Shortcuts* panel to change it. Click on *Save As...* to create a copy of it and define a new preset.

![Saving a Copy of the Default Shortcut File](/files/-MVGqCLucVSI186uePSx)

If *After Effects* is running in another language than English, it **will** be possible to set *Workflower* shortcuts on the default file (since it will not be the *After Effects Default.txt* file); it is recommended, however, to create a copy of that, too, in order to have a backup copy the original shortcuts.

After creating the new preset, click on *OK* and open up the *Workflower Keyboard Shortcuts* panel to set the shortcuts.

{% hint style="warning" %}
When, at some point, you switched the *Keyboard Layout* within *After Effects*, hitting a *Workflower* shortcut might not have an effect since no shortcuts have been associated with the new keyboard layout. In that case, go to *File / Scripts* and click on *"--- Workflower ---.jsxbin"* agai&#x6E;*. Workflower's* main panel will come up. Now go to the *Workflower Keyboard Shortcuts* panel and set shortcuts for this layout.
{% endhint %}

## (Step 3:) Updating the Script

### Option 1: Update using the Manager App

To update the script, you can use the [aescripts + aeplugins manager app](https://aescripts.com/learn/aescripts-aeplugins-manager-app/). Make sure to use at least version *1.5.344.0* of the app, otherwise, the script won't be installed correctly.

After updating make sure to restart *After Effects* in case you have it open already.

### Option 2: Manual Update

If you're not using the manager app, download the new version of *Workflower* from [aescripts.com](http://www.aescripts.com) and you will receive all installation files. Repeat the steps as outlined in the [Manual Installation](#option-2-manual-install) instructions. Choose to replace all prior installed files.

Now you have successfully updated to the newest version. Afterwards, make sure to restart *After Effects* in case you have it open already.

When you're on Mac, or you're using [Individual Scripts Mode](/main-functions/shortcuts#individual-scripts-mode-windows-mac) on Windows, after updating the main script file, all other shortcut slots will have to be updated to the newest version as well. Just execute any *Workflower* function and all shortcut slots will be automatically updated.

## (Step 4:) Setting up KBar Buttons <a href="#kbar" id="kbar"></a>

**(Added in** [**version 1.0.4**](/releases#1-0-4)**)**

*Workflower* supports [KBar](https://aescripts.com/kbar/) buttons. As of Workflower 2.5, there are two ways of setting up the buttons:

#### 1.) Set up via Linking Script File (since Workflower 1.0.4)

<img src="/files/-MjEMDaHc82JUGMOBIH5" alt="Setting up a KBar Button via Script File Linking for &#x27;Create Group&#x27;" width="375">

To set up a KBar button via linking, go to *KBar's* settings, click on *Add Button* and select *Run JSX/JSXBIN File*. Now link it to the script file *"--- Workflower ---.jsxbin".*

This also applies when you're on Mac or you're using [Individual Scripts Mode](/main-functions/shortcuts#individual-scripts-mode-windows-mac) on Windows - do **not** link it to another shortcut slot file in that case (like *"--- Workflower II Function 03 ---.jsxbin"*). Afterwards, put in your desired function name.

#### 2.) Set up via Workflower API (since Workflower 2.5)

<figure><img src="/files/i2dhfvwbjft9Jm3sHpKW" alt="" width="375"><figcaption></figcaption></figure>

To set up via the [Workflower API](/main-functions/scripting-api), go to *KBar's* settings, click on *Add Button* and select *Run Scriptlet*. Now put in this code (please note that the API variable *wfAPI* is outdated and has been replaced by *workflowerScriptAPI*):

```javascript
workflowerScriptAPI.kbarExecute("functionName")
```

So, when you want to add [Create Group](/group-functions/create-and-duplicate-groups#create-group), you would write:

```javascript
workflowerScriptAPI.kbarExecute("createGroup")
```

The advantage of using the API over [linking the script file](#id-1.-set-up-via-linking-script-file-since-workflower-1.0.4) is that the button will always call the *Workflower* file within the AE version that's currently running. When you're using *Script File Linking* on the other hand and you've linked the script file in another AE version, however, the wrong Workflower file will be called (e.g. you originally set up the buttons in AE 2023, then upgrade to AE 2024), meaning you will have to redirect each of the buttons to the current AE version.

{% hint style="warning" %}
To call a function via the API, *Workflower* needs to have been started once in your session. Opening and closing the ScriptUI Panel will suffice for example.

You may even check within your KBar command for this, so you don't have to manually open and close the ScriptUI Panel after every After Effects launch (you'll only need to change the *functionName* variable):

```javascript
var functionName = "createGroup";
if (typeof workflowerScriptAPI === "undefined"){
   var cmdID = app.findMenuCommandId("Workflower ScriptUI Panel.jsxbin");
   if (cmdID){
      app.executeCommand(cmdID);
      app.executeCommand(cmdID);
   }
}
workflowerScriptAPI.kbarExecute(functionName);
```

{% endhint %}

### Function Names

To link a *KBar* button to a specific function, use these script function names:

#### Main Functions

| Workflower Function                                                                             | Function Name in KBar    |
| ----------------------------------------------------------------------------------------------- | ------------------------ |
| [Main Menu](/main-functions/main-menu)                                                          | menu                     |
| Settings                                                                                        | settings                 |
| [Keyboard Shortcuts](/main-functions/shortcuts)                                                 | keyboardShortcuts        |
| [Refresh Layout](/main-functions/layout#refresh-layout)                                         | refreshLayout            |
| [Toggle Non-Indented Layout](/main-functions/layout#toggle-non-indented-layout)                 | nonIndentLayout          |
| [Toggle Expression Mode](/main-functions/layout#toggle-expression-mode)                         | expressionModeLayout     |
| [Show / Hide Layer Relationships](/main-functions/layout#show-hide-layer-relationships)         | showLayerRelationships   |
| [Refresh Connections](/main-functions/connections#refresh-connections)                          | refreshConnections       |
| [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) | quickRefreshConnections  |
| [Add / Remove Layer / Mask References](/main-functions/connections#add-remove-layer-references) | addRemoveLayerReferences |
| [Link / Unlink Properties](/main-functions/connections#link-unlink-properties)                  | linkUnlinkProperties     |
| [Sort Project Items](/main-functions/layout#sort-project-items)                                 | sortProjectItems         |
| [Reveal Project File](/main-functions/main-menu#reveal-project-file)                            | revealProjectFile        |

#### Group Functions

| Workflower Function                                                                                            | Function Name in KBar                            |
| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [Create Group](/group-functions/create-and-duplicate-groups#create-group)                                      | createGroup                                      |
| [Duplicate Group](/group-functions/create-and-duplicate-groups#duplicate-group)                                | duplicateGroup                                   |
| [Expand / Collapse Group](/group-functions/collapse-and-select-groups#expand-collapse-group)                   | expandGroup                                      |
| [Expand / Collapse All Sub-Groups](/group-functions/collapse-and-select-groups#expand-collapse-all-sub-groups) | expandAllSubGroups                               |
| [Select Group](/group-functions/collapse-and-select-groups#select-group)                                       | selectGroup                                      |
| [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group)   | deleteLayerCloneGroup                            |
| [Ungroup Layer/s](/group-functions/ungroup-dissolve-and-delete-groups#ungroup-layers)                          | ungroup                                          |
| [Dissolve Group](/group-functions/ungroup-dissolve-and-delete-groups#dissolve-group)                           | dissolveGroup                                    |
| [Parent Layers to Group](/group-functions/parent-group-layers#parent-layers-to-group)                          | parentGroup                                      |
| [Set Parent Exception Layer](/group-functions/parent-group-layers#set-parent-exception-layer)                  | parentExceptionLayer                             |
| [Center Group Header](/group-functions/miscellaneous-group-functions#center-group-header)                      | centerHeader                                     |
| [Enable / Disable Group](/group-functions/disable-solo-and-lock-groups#enable-disable-group)                   | enableGroup                                      |
| [Solo Group](/group-functions/disable-solo-and-lock-groups#solo-group)                                         | soloGroup                                        |
| [Lock Group](/group-functions/disable-solo-and-lock-groups#lock-group)                                         | lockGroup                                        |
| [Relabel Layer / Group / Keyframe](/layer-functions/relabeling#relabel-layer-s)                                | relabelLayers                                    |
| [Relabel Layer/s](/layer-functions/relabeling#relabel-layer-s) with a specific label color                     | relabelLayers(*label-ID*), e.g. relabelLayers(3) |

#### Layer Functions

| Workflower Function                                                                                    | Function Name in KBar     |
| ------------------------------------------------------------------------------------------------------ | ------------------------- |
| [Create Matte](/layer-functions/matting#create-matte)                                                  | createMatte               |
| [Merge Mattes](/layer-functions/matting#merge-mattes)                                                  | mergeMattes               |
| [Clone and Precomp](/layer-functions/cloning#clone-and-precomp)                                        | cloneAndPrecomp           |
| [Clone in Comp](/layer-functions/cloning#clone-in-comp)                                                | cloneInComp               |
| [Show Clone Layers](/layer-functions/cloning#show-clone-layers)                                        | showCloneLayers           |
| [Show and Solo Clone Layers](/layer-functions/cloning#show-clone-layers)                               | showAndSoloCloneLayers    |
| [Preview Custom Clone Size](/layer-functions/cloning#preview-custom-clone-size)                        | previewCustomCloneSize    |
| [Create Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer)    | linkedAdjustmentLayer     |
| [Create Matted Adjustment Layer](/layer-functions/adjustment-layers#create-matted-adjustment-layer)    | mattedAdjustmentLayer     |
| [Convert Property to Comp Size](/layer-functions/adjustment-layers#convert-property-to-comp-size)      | convertPropertyToCompSize |
| [Rename Layer/s](/layer-functions/renaming#rename-layer-s)                                             | renameLayers              |
| [Rename Layers by Number](/layer-functions/renaming#rename-layers-by-number)                           | renameLayersByNumber      |
| [Store Layers 1](/layer-functions/storing-layers#store-layers)                                         | storeLayers1              |
| [Store Layers 2](/layer-functions/storing-layers#store-layers)                                         | storeLayers2              |
| [Store Layers 3](/layer-functions/storing-layers#store-layers)                                         | storeLayers3              |
| [Store Layers 4](/layer-functions/storing-layers#store-layers)                                         | storeLayers4              |
| [Paste Stored Layers 1](/layer-functions/storing-layers#paste-stored-layers)                           | pasteLayers1              |
| [Paste Stored Layers 2](/layer-functions/storing-layers#paste-stored-layers)                           | pasteLayers2              |
| [Paste Stored Layers 3](/layer-functions/storing-layers#paste-stored-layers)                           | pasteLayers3              |
| [Paste Stored Layers 4](/layer-functions/storing-layers#paste-stored-layers)                           | pasteLayers4              |
| [Store Layers by ID](/layer-functions/storing-layers#store-layers)                                     | storeLayersByID           |
| [Paste Stored Layers by ID](/layer-functions/storing-layers#paste-stored-layers)                       | pasteLayersByID           |
| [Save Global Store Comp](/layer-functions/storing-layers#saving-global-store-comps)                    | saveGlobalStoreComp       |
| [Load Global Store Comp](/layer-functions/storing-layers#loading-global-store-comps)                   | loadGlobalStoreComp       |
| [Tag / Untag Layer/s](/layer-functions/tagging-layers#tag-untag-layer-s)                               | tagUntagLayers            |
| [Perform Action on Tagged Layer/s](/layer-functions/tagging-layers#perform-action-on-tagged-layer-s)   | performOnTaggedLayers     |
| [Activate / Deactivate Tag Group 1](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2) | activateTag1              |
| [Activate / Deactivate Tag Group 2](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2) | activateTag2              |
| [Activate / Deactivate Tag Group 3](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2) | activateTag3              |
| [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity)            | revealLayerOpacity        |
| [Show / Hide Move Indicator](/main-functions/layout#show-hide-move-indicator)                          | showMoveIndicator         |
| [Precompose](/layer-functions/precomposing#precompose)                                                 | precompose                |
| [Pre-Render](/layer-functions/pre-rendering#pre-render)                                                | preRender                 |
| [Show / Hide Pre-Render](/layer-functions/pre-rendering#show-hide-pre-render)                          | showHidePreRender         |
| [Show / Hide Pre-Render WF Proxy](/layer-functions/pre-rendering#show-hide-pre-render-wf-proxy)        | showHidePreRenderWFProxy  |
| [Push Frame to Photoshop](/layer-functions/pre-rendering#push-frame-to-photoshop)                      | pushFrameToPhotoshop      |
| [Mark Pre-Render State](/layer-functions/pre-rendering#mark-pre-render-state)                          | markPreRenderState        |
| [Exempt Layer Name from Alteration](/main-functions/layout#exempt-layer-name-from-alteration)          | nameExceptionLayer        |
| [Exempt Layer from Trimming](/main-functions/layout#exempt-layer-from-trimming)                        | trimExceptionLayer        |
| [Trim Layer to Keyframes](/main-functions/layout#trim-layer-to-keyframes)                              | trimLayerToKeyframes      |
| [Trim Layer to Layer](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-1)        | trimLayerToLayer          |
| [Create Control](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2)             | createControl             |
| [Unshy Layers](/layer-functions/miscellaneous-layer-functions#unshy-layers)                            | unshy                     |

### Icons

If you want to use *Workflower* icons in *KBar*, you can download them as PNGs below.

*(Note: Icons have been updated for* [*version 2.5*](/releases#id-2-5)*.)*

{% file src="/files/LuVq9VPkeVuaN3JhRuhh" %}

### Batch-create all Buttons (Legacy) <a href="#batch-create-all-buttons" id="batch-create-all-buttons"></a>

<figure><img src="/files/aI1lEOR4kjpBOMkdKdlH" alt=""><figcaption><p>All Workflower Buttons added to KBar</p></figcaption></figure>

{% hint style="warning" %}
This is a legacy function. Since Workflower now features its own ScriptUI Panel, buttons for functions added after v2.0 won't be created.
{% endhint %}

As of [version 1.1.3](/releases#1-1-3), you can create all of *Workflower's* buttons at once as a KBar toolbar.

Simply go to the *Layout Settings* and click on *Install WF KBar Toolbar*. *Workflower* will then create a new toolbar in *KBar* and replicate the entire [Main Menu](/main-functions/main-menu).

After installing, (re-)start KBar and click on its hamburger menu to select the *Workflower* toolbar.

For safety, *Workflower* will create a backup of your old *KBar* settings file and save it next to the current one. So if you want to go back, you can always go back to your old *KBar* settings. To do that, simply go to *KBar's Settings*, click on *Restore* and select the backup file.

As of [version 2.0](/releases#2-0), buttons will be added **without** modifier keys. That way, you may want to use KBar over *Workflower's* ScriptUI Panel if you prefer to have all buttons visible at the same time.

## Third-Party Licenses used in Workflower

### FFmpeg (Multimedia Processing Suite)

#### FFmpeg Versions and Licensing

* Default Installation (Bundled Version)
  * Windows Version:
    * LGPL v3 compliant FFmpeg build from BtbN
    * Distributed under MIT license (build) and LGPL v3 (FFmpeg)
    * Code-signed for Windows security
    * Original build available at: <https://github.com/BtbN/FFmpeg-Builds>
    * Source code available at: <https://ffmpeg.org/download>
  * Mac Version:
    * LGPL v3 compliant FFmpeg custom-build
    * Compiled specifically for Workflower
    * Unmodified FFmpeg source code
    * Source code available at: <https://ffmpeg.org/download>
  * Automatically installed with the script
* Fallback Option 1: Terminal Installation (Package Managers)
  * License: Subject to the package managers' choice
  * Installed independently via system package managers:
    * Windows: Winget (`winget install ffmpeg`)
    * Mac: Homebrew (`brew install ffmpeg`)
  * Workflower only references the FFmpeg installation path and does not modify or redistribute the externally installed FFmpeg code.
* Fallback Option 2: Manual Installation
  * License: Varies based on chosen version
  * User is responsible for:
    * Choosing appropriate version
    * License compliance
    * Proper installation
    * Maintaining installation path
  * Workflower only references the FFmpeg manual installation path and does not modify or redistribute any externally installed FFmpeg code.

#### Why Different Licenses?

The bundled version is specifically compiled to be LGPL v3 compliant, allowing for more flexible integration with commercial software. Manual and package manager installations may vary in their licensing depending on the source and version chosen.

#### Compliance Information

* Our bundled version uses unmodified FFmpeg source code compiled with LGPL v3 compliant options
* Original FFmpeg source code is available at: [ffmpeg.org/download](https://ffmpeg.org/download.html#get-sources)
* Users can choose which version to use based on their needs
* Package manager and manual installations are handled independently of our script

#### Technical Implementation

The script interfaces with FFmpeg through standard CLI commands, regardless of which version is installed. The script only references the FFmpeg installation path and does not modify or redistribute any externally installed FFmpeg code.

### Name that Color JavaScript (JavaScript Library)

* By Chirag Mehta
* Licensed under Creative Commons Attribution 2.5 License (CC BY 2.5)
* <http://chir.ag/projects/name-that-color/>

### WQ (After Effects Plug-in)

* By Terrible Junk Show
* [https://www.terriblejunkshow.com](https://www.terriblejunkshow.com/)

### Full License Texts

Full license texts are available here:

* FFmpeg: [LGPL v3 License](https://www.gnu.org/licenses/lgpl-3.0.html)
* BtbN: [MIT License](https://github.com/BtbN/FFmpeg-Builds?tab=MIT-1-ov-file)
* Name that Color: [CC BY 2.5 License](https://creativecommons.org/licenses/by/2.5/legalcode.en)


# Video Tutorials

{% hint style="warning" %}
**Tutorial for v2.5 is Coming!**

I’m currently tied up with other projects and haven’t had a chance to create a video tutorial yet, but I’ve heard your feedback, and it’s on my radar. While I can’t promise a timeline, I’ll do my best to get to it when I can.

In the meantime, please refer to the [user guide](/releases#id-2-5) for detailed instructions.
{% endhint %}

## 1. Overview

{% hint style="info" %}
If you want to go straight into learning more in-depth about *Workflower*, you can also skip this tutorial, as everything will be taught from scratch in the other tutorials. However, if you still want to get a basic overview of the functions and/or just a very quick start on how to use *Workflower*, this tutorial is for you.
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=oEo7VDjLO14>" %}

<table><thead><tr><th width="150">Time</th><th width="263.38841031857606">Chapter in Video Tutorial</th><th width="150">Chapter in User Guide</th></tr></thead><tbody><tr><td><a href="https://youtu.be/oEo7VDjLO14?t=0">00:00</a></td><td>Introduction</td><td><a href="/pages/-MQrDVfbQi66bYJmGoVf">Link</a></td></tr><tr><td><a href="https://youtu.be/oEo7VDjLO14?t=34">00:34</a></td><td>Overview of Group Functions</td><td><a href="/pages/-MQrNt0tupkyuI-ZG4ak">Link</a></td></tr><tr><td><a href="https://youtu.be/oEo7VDjLO14?t=230">03:50</a></td><td>Overview of Cloning Functions</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6">Link</a></td></tr><tr><td><a href="https://youtu.be/oEo7VDjLO14?t=545">09:05</a></td><td>Overview of Matting Functions</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg">Link</a></td></tr><tr><td><a href="https://youtu.be/oEo7VDjLO14?t=598">09:58</a></td><td>Overview of Adjustment Layer Functions</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe">Link</a></td></tr></tbody></table>

## 2. Installation & Using the ScriptUI Panel

{% hint style="info" %}
For the release of [version 2.0](/releases#2-0), the section *Installing the Script* has been updated, as well as the section *Additional Info on the ScriptUI Panel* has been added.
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=pVOyj3d0bw0>" %}

<table><thead><tr><th width="150">Time</th><th width="373.96492624416095">Chapter in Video Tutorial</th><th>Chapter in User Guide</th></tr></thead><tbody><tr><td><a href="https://www.youtube.com/watch?v=pVOyj3d0bw0&#x26;t=0s">00:00</a></td><td>Installing the Script</td><td><a href="/pages/-MQrDVfbQi66bYJmGoVf#step-1-installing-the-script">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=pVOyj3d0bw0&#x26;t=244s">04:04</a></td><td>Installing Shortcuts</td><td><a href="/pages/-MQrDVfbQi66bYJmGoVf#step-2-installing-the-shortcuts">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=pVOyj3d0bw0&#x26;t=490s">08:10</a></td><td>Additional Shortcut Instructions for Mac Users (&#x26; some Windows Users)</td><td><a href="/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-mac">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=pVOyj3d0bw0&#x26;t=718s">11:58</a></td><td>Single Script vs. Individual Scripts Mode (for Windows Users only)</td><td><a href="/pages/-MQrDoLiIMsw-gaM_Mnu#single-script-mode-windows-only">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=pVOyj3d0bw0&#x26;t=820s">13:40</a></td><td>Additional Info on the ScriptUI Panel</td><td><a href="/pages/-MQrDfHzwDGybHSv21W2#main-menu-as-scriptui-panel">Link</a></td></tr></tbody></table>

## 3. Groups, Renaming & Relabeling

{% hint style="warning" %}
As of [version 2.0](/releases#2-0), due to AE now occupying *Shift+J* & *Shift+K*, the default shortcut for [Parent Layers to Group](/group-functions/parent-group-layers#parent-layers-to-group) has been changed to *Ctrl+Alt+3* & for [Set Parent Exception Layer](/group-functions/parent-group-layers#set-parent-exception-layer) to *Ctrl+Alt+Shift+3.*
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=C1C0D81XL8o>" %}

<table><thead><tr><th width="150">Time</th><th width="350.85228192156194">Chapter in Video Tutorial</th><th>Chapter in User Guide</th></tr></thead><tbody><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=0">00:00</a></td><td>Create Groups</td><td><a href="/pages/-MQrNt0tupkyuI-ZG4ak#create-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=150">02:30</a></td><td>Refresh Layout</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#refresh-layout">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=204">03:24</a></td><td>Relabel Groups</td><td><a href="/pages/-MQrNHsOFmCQHmcaLTx9#relabel-layer-s">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=275">04:35</a></td><td>Expand and Collapse Groups</td><td><a href="/pages/-MQrPDLP9WbvM8ymNwP2#expand-collapse-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=325">05:25</a></td><td>Select and Move Groups</td><td><a href="/pages/-MQrPDLP9WbvM8ymNwP2#select-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=532">08:52</a></td><td>Rename Layers</td><td><a href="/pages/-MQrNDW8_2iFa4XG1VgE#rename-layer-s">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=590">09:50</a></td><td>Enable and Disable Groups</td><td><a href="/pages/-MQrO6kGWULcFTTHTPxD#enable-disable-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=663">11:03</a></td><td>Solo Groups</td><td><a href="/pages/-MQrO6kGWULcFTTHTPxD#solo-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=701">11:41</a></td><td>Lock Groups</td><td><a href="/pages/-MQrO6kGWULcFTTHTPxD#lock-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=722">12:02</a></td><td>Ungroup Layers</td><td><a href="/pages/-MQrPSm0_9fYZQo-5OYE#ungroup-layers">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=785">13:05</a></td><td>Dissolve Groups</td><td><a href="/pages/-MQrPSm0_9fYZQo-5OYE#dissolve-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=811">13:31</a></td><td>Delete Groups</td><td><a href="/pages/-MQrPSm0_9fYZQo-5OYE#delete-layer-clone-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=858">14:18</a></td><td>Parent Group Layers</td><td><a href="/pages/-MQrP4FWSffsZ09YYS8O#parent-layers-to-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=998">16:38</a></td><td>Set Parent Exception Layers</td><td><a href="/pages/-MQrP4FWSffsZ09YYS8O#set-parent-exception-layer">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=1066">17:46</a></td><td>Duplicate Groups</td><td><a href="/pages/-MQrNt0tupkyuI-ZG4ak#duplicate-group">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=1103">18:23</a></td><td>Non-Indented Layout</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#toggle-non-indented-layout">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=1170">19:30</a></td><td>Expression Mode</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#toggle-expression-mode">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=1258">20:58</a></td><td>Unavailable After Effects Functions</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#unavailable-after-effects-functions">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=1363">22:43</a></td><td>Additional Relabeling Functions</td><td><a href="/pages/-MQrNHsOFmCQHmcaLTx9#relabel-layer-s">Link</a></td></tr><tr><td><a href="https://youtu.be/C1C0D81XL8o?t=1503">25:03</a></td><td>Additional Renaming Functions</td><td><a href="/pages/-MQrNDW8_2iFa4XG1VgE#renaming-modes">Link</a></td></tr></tbody></table>

## 4. Precomp Clones & Clones in Comp

{% embed url="<https://www.youtube.com/watch?v=FBafAeuPcMI>" %}

<table><thead><tr><th width="150">Time</th><th width="369.05149051490514">Chapter in Video Tutorial</th><th>Chapter in User Guide</th></tr></thead><tbody><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=0">00:00</a></td><td>Introduction to Clone &#x26; Precomp</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#clone-and-precomp">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=126">02:06</a></td><td>Refresh Connections</td><td><a href="/pages/-MQrPrFnkvhVysqzr1Uf#refresh-connections">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=260">04:20</a></td><td>Add and Remove Clone Layers</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#adding-removing-clone-layers">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=345">05:45</a></td><td>Custom Clone Layers States</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#custom-clone-layer-states">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=363">06:03</a></td><td>Duplicate Precomp Clones</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#duplicating-a-precomp-clone">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=444">07:24</a></td><td>Delete Precomp Clones</td><td><a href="/pages/-MQrPSm0_9fYZQo-5OYE#delete-layer-clone-group">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=509">08:29</a></td><td>Group Clones</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#group-clone">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=652">10:52</a></td><td>Create a Lightwrap using Precomp Clones</td><td><a href="/pages/-MQrO6kGWULcFTTHTPxD#lock-group">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=735">12:15</a></td><td>Refresh All Connections</td><td><a href="/pages/-MQrPrFnkvhVysqzr1Uf#refresh-connections">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=831">13:51</a></td><td>Link and Unlink Properties</td><td><a href="/pages/-MQrPrFnkvhVysqzr1Uf#link-unlink-properties">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=913">15:13</a></td><td>Custom Clone Layer Order</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#custom-layer-order">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=955">15:55</a></td><td>Duplicate Comps with Precomp Clones</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#duplicating-a-precomp-clone">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=997">16:37</a></td><td>Introduction to Prime Clones</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#prime-clone">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=1115">18:35</a></td><td>Create a Bump Map using Prime Clones</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#prime-clone">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=1200">20:00</a></td><td>Stack Prime Clones</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#stacking-prime-clones">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=1310">21:50</a></td><td>Reveal Opacity of Prime Clone Layers</td><td><a href="/pages/-MQrNShW4Z5tx13dlOTy#reveal-layer-opacity">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=1352">22:32</a></td><td>Show and Hide Prime Clone Layers</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#working-on-prime-clone-source-layers">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=1460">24:20</a></td><td>Solo Prime Clone Layers</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#soloing-prime-clone-source-layers">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=1507">25:07</a></td><td>Enable Precomp Transforms</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#enabling-precomp-transforms">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=1708">28:28</a></td><td>Custom Precomp Size</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#custom-precomp-size">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=1964">32:44</a></td><td>Clone in Comp (to use with 2.5D Layers)</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#clone-in-comp">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=2186">36:26</a></td><td>Clone in Comp (to use as a Matte)</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#clone-in-comp">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=2323">38:43</a></td><td>Quick Refresh Connections</td><td><a href="/pages/-MQrPrFnkvhVysqzr1Uf#quick-refresh-connections-experimental">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=2494">41:34</a></td><td>Quick Refresh Clone Connections within Refresh Layout</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#quick-refresh-clone-connections-of-selected-layers">Link</a></td></tr><tr><td><a href="https://youtu.be/FBafAeuPcMI?t=2648">44:08</a></td><td>3D Precomp Clones (Beta)</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#3d-precomp-clones-beta">Link</a></td></tr></tbody></table>

## 5. Creating & Merging Mattes

{% hint style="warning" %}
Please note that *Workflower's* matting tools (creating mattes, group mattes & multi-layer mattes, as well as merging mattes) work a bit differently in AE 23 and upwards. So if you're using AE 23 or upwards, make sure, in addition to this tutorial, to watch the section about matting in the [tutorial on Workflower v2.0](#tutorial-v2).
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=fYL0NVaxj3E>" %}

<table><thead><tr><th width="150">Time</th><th width="358.80334728033466">Chapter in Video Tutorial</th><th>Chapter in User Guide</th></tr></thead><tbody><tr><td><a href="https://youtu.be/fYL0NVaxj3E?t=0">00:00</a></td><td>Create Mattes</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#create-matte">Link</a></td></tr><tr><td><a href="https://youtu.be/fYL0NVaxj3E?t=66">01:06</a></td><td>Multi-Layer Mattes</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#multi-layer-matte">Link</a></td></tr><tr><td><a href="https://youtu.be/fYL0NVaxj3E?t=138">02:18</a></td><td>Group Mattes</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#group-matte">Link</a></td></tr><tr><td><a href="https://youtu.be/fYL0NVaxj3E?t=189">03:09</a></td><td>Group Matte with External Layers</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#group-matte">Link</a></td></tr><tr><td><a href="https://youtu.be/fYL0NVaxj3E?t=295">04:55</a></td><td>Introduction to Merge Mattes</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#merge-mattes">Link</a></td></tr><tr><td><a href="https://youtu.be/fYL0NVaxj3E?t=628">10:28</a></td><td>Adding new Mattes to a Matte Merge</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#adding-new-mattes">Link</a></td></tr><tr><td><a href="https://youtu.be/fYL0NVaxj3E?t=814">13:34</a></td><td>Matte Collection Groups</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#matte-collection-groups">Link</a></td></tr><tr><td><a href="https://youtu.be/fYL0NVaxj3E?t=953">15:53</a></td><td>Update Matte Merge Effect Names</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#updating-effect-names-and-clones">Link</a></td></tr></tbody></table>

## 6. Adjustment Layers & Storing Layers

{% embed url="<https://www.youtube.com/watch?v=S6V2iKe3YQw>" %}

<table><thead><tr><th width="150">Time</th><th width="357.5753052917232">Chapter in Video Tutorial</th><th>Chapter in User Guide</th></tr></thead><tbody><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=0">00:00</a></td><td>Introduction to Linked Adjustment Layers</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#creating-and-working-with-a-linked-adjustment-layer">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=157">02:37</a></td><td>Add and Remove Linked Layers</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#adding-removing-layers">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=211">03:31</a></td><td>Convert Properties to Comp Size</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#convert-property-to-comp-size">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=470">07:50</a></td><td>Multiple Linked Adjustment Layers</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#order-of-linked-adjustment-layers">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=572">09:32</a></td><td>Other Effects on Linked Layers</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#other-effects-on-a-referenced-layer">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=605">10:05</a></td><td>Link and Unlink Properties</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#unlink-properties">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=644">10:44</a></td><td>Delete Linked Adjustment Layers</td><td><a href="/pages/-MQrPSm0_9fYZQo-5OYE#delete-layer-clone-group">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=672">11:12</a></td><td>Group Linked Adjustment Layers</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#group-linked-adjustment-layers">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=764">12:44</a></td><td>Create Matted Adjustment Layers</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#create-matted-adjustment-layer">Link</a></td></tr><tr><td><a href="https://youtu.be/S6V2iKe3YQw?t=898">14:58</a></td><td>Store and Paste Stored Layers</td><td><a href="/pages/-MQrNLIk5vmXrnoiPfG9">Link</a></td></tr></tbody></table>

## 7. New Features in Version 1.1: Precompose, Additional Group Functions & More <a href="#tutorial-v1-1" id="tutorial-v1-1"></a>

{% embed url="<https://www.youtube.com/watch?v=KeT5sVqGrus>" %}

<table><thead><tr><th width="150">Time</th><th width="400.33947616340714">Chapter in Video Tutorial</th><th width="196">Chapter in User Guide</th></tr></thead><tbody><tr><td><a href="https://youtu.be/KeT5sVqGrus">00:00</a></td><td>Introduction</td><td><a href="/pages/-MQrCred0jxA3F8-XnAH#1-1">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=46">00:46</a></td><td>Group Opacity</td><td><a href="/pages/-Md2lliRBWB0Ein8oZvY#group-opacity">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=174">02:54</a></td><td>Refresh Layout Speed Improvements</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#refresh-layout">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=307">05:07</a></td><td>Effects to Group Header</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#applying-effects-to-the-group-header">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=372">06:12</a></td><td>Mattes to Group Header</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#using-the-group-header-as-referenced-group-matte-layer">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=499">08:19</a></td><td>Refresh Connections within Refresh Layout</td><td><a href="/pages/-MQrDiuMZlGeJpQ5olUe#group-linked-adjustment-layers">Link 1</a> / <a href="/pages/-MQrLB0VXqiHCtwcVhHg#group-matte">Link 2</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=585">09:45</a></td><td>Automatic Trimming</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#automatic-trimming">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=710">11:50</a></td><td>Shy Group Matte Layers</td><td><a href="/pages/-MQrLB0VXqiHCtwcVhHg#shy-mattes">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=944">15:44</a></td><td>Introduction to Precompose</td><td><a href="/pages/05S3yy41M2vwM1w6ZsiX#precompose">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1125">18:45</a></td><td>Convert Groups to Precomps</td><td><a href="/pages/05S3yy41M2vwM1w6ZsiX#converting-a-group-to-a-precomp">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1215">20:15</a></td><td>Convert Precomps to Groups</td><td><a href="/pages/05S3yy41M2vwM1w6ZsiX#converting-a-precomp-to-a-group">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1327">22:07</a></td><td>Convert all Comps to another Layout</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#convert-all-comps-to-another-layout">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1459">24:19</a></td><td>Expand and Collapse all Sub-Groups</td><td><a href="/pages/-MQrPDLP9WbvM8ymNwP2#expand-collapse-all-sub-groups">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1512">25:12</a></td><td>New Select Group Behavior</td><td><a href="/pages/-MQrPDLP9WbvM8ymNwP2#select-group">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1567">26:07</a></td><td>Clones in Comp from Text and Shape Layers</td><td><a href="/pages/-MQrLZFFIXemYwJKCQI6#clone-in-comp">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1654">27:34</a></td><td>Exempt Layer Names from Alteration</td><td><a href="/pages/-MQrGNUsXQmFvOI2mf7o#exempt-layer-names">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1750">29:10</a></td><td>Logging</td><td><a href="/pages/-MQrQPt1jWhg6XgCXMWc">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1795">29:55</a></td><td>KBar Support</td><td><a href="/pages/-MQrDVfbQi66bYJmGoVf#kbar">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1866">31:06</a></td><td>Advanced Duplication</td><td><a href="/pages/-MQrNt0tupkyuI-ZG4ak#duplicate-group">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=1987">33:07</a></td><td>Group Header at average Position</td><td><a href="/pages/-MQrNt0tupkyuI-ZG4ak#create-group">Link</a></td></tr><tr><td><a href="https://youtu.be/KeT5sVqGrus?t=2056">34:16</a></td><td>Other Features &#x26; Outro</td><td><a href="/pages/-MQrCred0jxA3F8-XnAH#1-1">Link</a></td></tr></tbody></table>

## 8. New Features in Version 2: ScriptUI Panel, Matting in AE 23, Layer Tagging & More <a href="#tutorial-v2" id="tutorial-v2"></a>

{% hint style="info" %}
Please note that the sections *How to Install* as well as *ScriptUI Panel* are almost identical to the sections in the [Installation](#2.-installation) tutorial which was updated with the release of [version 2.0](/releases#2-0).
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=XnggphPWMGY>" %}

<table><thead><tr><th width="145.33333333333331">Time</th><th width="399">Chapter in Video Tutorial</th><th>Chapter in User Guide</th></tr></thead><tbody><tr><td>​<a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=0s">00:00</a>​</td><td>Introduction</td><td>​<a href="/pages/-MQrCred0jxA3F8-XnAH#2-0">Link​</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=98s">01:38</a></td><td>How to Install</td><td><a href="/pages/-MQrDVfbQi66bYJmGoVf">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=271s">04:31​</a></td><td>ScriptUI Panel</td><td>​<a href="/pages/-MQrDfHzwDGybHSv21W2#main-menu-as-scriptui-panel">Link</a>​</td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=572s">09:32</a></td><td>Double-Click Behavior</td><td><a href="/pages/-MQrPDLP9WbvM8ymNwP2#expand-collapse-a-group-by-double-clicking">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=691s">11:31</a></td><td>Easier Ways to learn Workflower</td><td><a href="/pages/yWr5OZ3maA41fyNNuFBv#easier-ways-to-learn-workflower">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=835s">13:55</a>​</td><td>Updated &#x26; Faster Matting Tools</td><td>​<a href="#5.-creating-and-merging-mattes">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1242s">20:42</a></td><td>New Matte Merge Layer Behavior</td><td>​<a href="/pages/-MQrLB0VXqiHCtwcVhHg#merge-mattes">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1371s">22:51</a></td><td>Create Mattes from 'Set Matte' Effect</td><td>​<a href="/pages/-MQrLB0VXqiHCtwcVhHg#creating-single-mattes-from-effects">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1552s">25:52</a></td><td>Introduction to Layer Tagging</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1671s">27:51</a></td><td>Perform Actions on Tagged Layers</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#perform-action-on-tagged-layer-s">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1777s">29:37</a></td><td>Quickly Activate &#x26; Deactivate Tag Groups</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#activate-deactivate-tag-group-1-2-3">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1820s">30:20</a></td><td>Tag other Layers &#x26; Groups</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#tag-untag-layer-s">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1890s">31:30</a></td><td>Add Layers to Tag Group</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#adding-removing-tags">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1923s">32:03</a></td><td>Re-Assign, Rename &#x26; Remove Tag Groups</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#tag-untag-layer-s">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=1987s">33:07</a></td><td>Use Multiple Tags per Layer</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#adding-removing-tags">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=2023s">33:43</a></td><td>Untag Layers</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#adding-removing-tags">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=2057s">34:17</a></td><td>Use Tags to work with Multi-Pass Layers</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#perform-action-on-tagged-layer-s-shortcuts">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=2188s">36:28</a></td><td>Jump to Tags in the Timeline</td><td><a href="/pages/fLFZkTz2gJXDc68jWQ3C#perform-action-on-tagged-layer-s-shortcuts">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=2235s">37:15</a></td><td>Relabel Keyframes</td><td><a href="/pages/-MQrNHsOFmCQHmcaLTx9#relabel-layer-s">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=2398s">39:58</a></td><td>Additional Precompose Functions</td><td><a href="/pages/05S3yy41M2vwM1w6ZsiX#precompose">Link</a></td></tr><tr><td><a href="https://www.youtube.com/watch?v=XnggphPWMGY&#x26;t=2602s">43:22</a></td><td>Other Features &#x26; Outro</td><td>​<a href="/pages/-MQrCred0jxA3F8-XnAH#2-0">Link​</a></td></tr></tbody></table>


# Main Menu

*Workflower*'s main menu offers access to all functions of the script. You access it either as a [dialog](#main-menu-as-dialog) or - since version 2.0 - as a [ScriptUI Panel](#main-menu-as-scriptui-panel).

On the panel, hold down *Shift*, *Ctrl/Cmd*, or *Alt/Option* to execute additional functions. New icons will be revealed for the additional functions.

When right-clicking on each of the buttons, you get [quick links to the function's user guide chapter and tutorial](#2.-help-menu).

## Main Menu as Dialog

Hit the shortcut for the *Main Menu* dialog to come up (Win: Ctrl+Alt+X, Mac: macControl+X).

![Workflower's Main Menu as Dialog](/files/31h9s2byEQe0IjWVNTNI)

Click anywhere in the menu but the buttons or hit *Escape* to close it. (Closing it by clicking outside of the menu unfortunately won't work.)

{% hint style="info" %}
If you encounter performance issues with the main menu (or another panel) coming up, this might be due to calculating the current mouse position. If this is bothering you, go to *Settings > System > Position of Borderless Dialogs* and set it to *At Last Position* or *Always Centered* to disable calculating the mouse position.

On Windows, you may also try to change the *Mouse Position Calculation* to External *File (Advanced)*.
{% endhint %}

#### Main Menu Panel Shortcuts (Windows only)

| Function         | Shortcut (Win)       | Shortcut (Mac) |
| ---------------- | -------------------- | -------------- |
| Move Panel left  | Ctrl+Alt+Left        | -              |
| Move Panel right | Ctrl+Alt+Right       | -              |
| Move Panel up    | Ctrl+Alt+Up          | -              |
| Move Panel down  | Ctrl+Alt+Down        | -              |
| Center Panel     | Ctrl+Alt+Shift+Left  | -              |
|                  | Ctrl+Alt+Shift+Right | -              |
|                  | Ctrl+Alt+Shift+Up    | -              |
|                  | Ctrl+Alt+Shift+Down  | -              |

## Main Menu as ScriptUI Panel

**(Added in** [**version 2.0**](/releases#2-0)**)**

<figure><img src="/files/Fs5PZG5Hl3mcFqL4RwfG" alt=""><figcaption><p>Configurations of Workflower's Main Menu as ScriptUI Panel</p></figcaption></figure>

To install the ScriptUI Panel, please follow the [instructions](/installation#step-1-installing-the-script).

{% hint style="warning" %}
Please note that is **optional** to have the ScriptUI panel *Workflower ScriptUI Panel.jsxbin* installed while it is **mandatory** to have the main script file *--- Workflower ---.jsxbin* installed.
{% endhint %}

After installation, open the ScriptUI Panel by going to *Window > Workflower ScriptUI Panel.jsxbin*.

The ScriptUI panel has a responsive layout. Change the panel size for it to adjust to the four possible configurations:

1. Row layout, 1 line
2. Row layout, 2 lines
3. Column layout, 1 column
4. Column layout, 2 columns

{% hint style="info" %}
If you want to use *Workflower's Main Menu* **without** modifier keys and you own KBar, you can easily [batch-create all buttons for KBar](/installation#batch-create-all-buttons) which, as of [version 2.0](/releases#2-0), will be added without modifier keys.
{% endhint %}

{% hint style="warning" %}
Did you encounter that a button sometimes does not execute a function? Please read the following page on some [known bugs and workarounds](/known-bugs#scriptui-panel-bugs) of *Workflower's* ScriptUI Panel.

*Tip:* If you want to restart the ScriptUI Panel, right-click on empty space of the panel and click on *Restart ScriptUI Panel*. You might want to do this if you encounter any issues relating to the panel and you want to quickly see whether a restart helps.
{% endhint %}

Tip: When you center-click on empty space on the ScriptUI panel, [Refresh Layout](/main-functions/layout#refresh-layout) will be executed.

### Customize ScriptUI Buttons

<figure><img src="/files/Uw8EpmhKAKfw6gqr6Jrf" alt=""><figcaption><p>Custom ScriptUI Buttons Dialog</p></figcaption></figure>

If you want to save on space in your AE interface, you can also customize which buttons you want to appear in *Workflower's* ScriptUI Panel.

To make use of this, go to *Settings > Miscellaneous > Customize ScriptUI Buttons*. Now choose which buttons you want to deselect.

Please note that these settings only apply to the ScriptUI Panel. The [Main Menu via shortcut](#main-menu-as-dialog) will still feature all available buttons.

### Button Size

As of [version 2.0.1](/releases#2-0-1), *Workflower's* ScriptUI Panel displays smaller buttons than the [Main Menu as Dialog](#main-menu-as-dialog).

In case you rather like larger buttons to be displayed, right-click on any button and select *Use Large Buttons*.

### ScriptUI Panel Caching

#### The Caching Problem

It does seem that a ScriptUI Panel only has limited access to AE's cache, and when executing a function that relies heavily on caches, performance will not be as good as compared to executing the function from within a regular script.

#### Default Caching Solution

That's why, for certain functions that rely heavily on caching (e.g. [Refresh Connections](/main-functions/connections#refresh-connections)), the ScriptUI panel will not execute the function itself but it will call the main *Workflower* file within which the function will be executed, hence accessing more of AE's cache and increasing the performance. Nevertheless, there will be a bit of a lag between pressing the button and the execution of the function.

However, since most functions don't rely so much on caching, they will be executed directly from the ScriptUI Panel itself, hence reducing the lag and interacting with the ScriptUI Panel feels more responsive.

#### Choosing a Manual Solution

<figure><img src="/files/QCrr5bJQL6KbEIXMuW7i" alt=""><figcaption><p>ScriptUI Panel Execution Method Dropdown</p></figcaption></figure>

But there's also a way to manually choose the method to be used. Go to the *System Settings* and choose between these options:

1. *Better Responsiveness* (= executing from ScriptUI Panel)
2. *Better Caching* (= executing from main *Workflower* file)
3. *Mix between Methods* (= mix as described above)

Now, this choice can come in handy when you're working on a comp and you might notice a slowdown when executing *Workflower* functions. You might want to try to set the method to *Better Caching* and see whether it helps when more of AE's cache can be taken into account.

## Learning Tools built into the Main Menu

**(Added in** [**version 2.0**](/releases#2-0)**)**

The *Main Menu* provides two ways that help with learning *Workflower:*

### **1.) Extended Tooltips**

<figure><img src="/files/vIosd0CMRkvGj0pe4ojU" alt=""><figcaption><p>Extended tooltip for 'Ceate Group'</p></figcaption></figure>

Hover over the functions on the *Main Menu* to get information on the function.

When pressing a modifier key, the *Extended Tooltip* of the modifier function will be displayed.

You can also turn off *Extended Tooltips* and only use simple tooltips (displaying solely the function name and shortcut), or disable tooltips altogether by going to the *Miscellaneous Settings* or by right-clicking on a button and disabling it from the [Help Menu](#2.-help-menu).

### 2.) Help Menu

<figure><img src="/files/YZ1UOktDoJ5qskXJYI8B" alt=""><figcaption><p>Help Menu for 'Create Matte'</p></figcaption></figure>

When right-clicking on a function button, *Workflower* will open up a dropdown where you can click on links to the user guide and tutorial chapter about the specific function.

Press one of the modifier keys and right-click on the button to open up the links for the modifier functions.

You may also change your tooltips preferences from this menu.

## Other Main Menu Features

### Reveal Project File

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Reveals the current project file in the file explorer/finder (via *Main Menu*: right-click on empty space, then click on *Reveal Project File*).


# Shortcuts

{% hint style="info" %}
For more information on how to install the shortcuts for the first time, go to the [Shortcuts Installation](/installation#step-2-installing-the-shortcuts) page.
{% endhint %}

## Shortcut Modes

<div align="left"><img src="/files/-MQw9vXg8K5xSCAxKnEy" alt=""></div>

On Windows, you can choose between two ways on how *Workflower* applies its shortcuts: *Single Script Mode* and *Individual Scripts Mode*. To change the mode, go to *Settings* / *Shortcuts*.

On Mac, due to scripting limitations, you only can use the *Individual Scripts Mode*.

![Shortcut Mode Dropdown (on Windows only)](/files/-MUy--LxgHRJX-MCJzhO)

### Single Script Mode (Windows only)

Single Script Mode unifies all shortcuts in one script in AE's *Script* folder. You can apply as many shortcuts as you like. Within AE, all shortcuts get applied to the one *Workflower* script. All shortcuts call the script and within the script itself, it is being determined which specific keys are being pressed in order to execute the corresponding function.

{% hint style="danger" %}
When the OS language is Japanese, *Single Script Mode* doesn't seem to work. Please switch your OS language to US or similar, or use [Individual Scripts Mode](/main-functions/shortcuts#individual-scripts-mode-windows-mac) instead. [More info on shortcut issues for Japanese users](/main-functions/shortcuts#shortcut-issues-for-japanese-users).
{% endhint %}

#### Advantages of Single Script Mode

The advantage of Single Script Mode is that you don't need multiple scripts within AE's scripts folder which can get messy, especially when adding other scripts to the folder. Also because you can only apply a maximum of 20 shortcuts to scripts, you otherwise couldn't apply shortcuts to all *Workflower* functions. It would limit the number of shortcuts you can apply to non-*Workflower* scripts, too.

#### Disadvantages Single Script Mode

In some instances, there might be some sort of lag between pressing the shortcut and the execution of the function.

Also, in very rare instances, the *Workflower* Main Menu will come up although you pressed another shortcut. This happens when you let go of the keys too early because, at the moment when the script is called, there are no keys to gather information from. And when no shortcut is being registered, the *Workflower Main Menu* will always come up.

In rare instances as well, no function might be executed at all. An error message will pop up telling you that this is a known bug. Often you can just keep on working but sometimes pressing shortcuts will continue not to work. This is because of a bug within the *Adobe* scripting environment. The variable that reads the currently pressed key will return without result and will be broken from then on. You will have to restart your computer. (Sometimes just restarting *After Effects* will help, too.) After that, shortcuts should work without a problem.

![Unrecognized Keypress Error Message](/files/-MUy27fMvrhLaXW4QMyB)

{% hint style="info" %}
If you encounter too many problems when using shortcuts on Windows, switch to *Individual Scripts* Mode instead. You will only have a maximum of 20 shortcuts to assign but you will not encounter any bugs anymore. However, because of its advantages, we still recommend *Single Script Mode* for most users.&#x20;
{% endhint %}

### Individual Scripts Mode (Windows + Mac)

*Individual Scripts Mode* will create one script for every shortcut within AE's *Script* folder.

{% hint style="warning" %}
On Windows, you will have to run *After Effects* as administrator when opening up the *Keyboard Shortcuts* panel in *Individual Scripts Mode*. After setting the shortcuts, you don't have to run it as an administrator anymore. On Mac, this isn't necessary.
{% endhint %}

#### Shortcut Slots

![Shortcut Slots Dropdown](/files/-MUy4Kl7r6UYAX9IirV4)

Within the *Keyboard Shortcuts* panel, you can define how many *Workflower* scripts (slots) should be created. You can create up to 20 shortcut slots. When you create 20 slots, however, you cannot assign shortcuts to non-*Workflower* scripts, since *After Effects* only allows for up to 20 shortcuts to be applied to scripts. If you want to assign shortcuts to other scripts, lower the number of slots via the dedicated dropdown.

{% hint style="info" %}
In case you experience issues when trying to assign a shortcut to a another script, please read [this F.A.Q. entry](/faq#add-shortcut-to-other-script-issue) first.
{% endhint %}

Be aware that every time you change the number of slots, all non-*Workflower* script shortcuts will get deleted.

When you set shortcuts for the first time, or when you change the number of slots, you will have to restart *After Effects* after saving to correctly apply the shortcuts. This is because *Workflower* scripts will have to created/removed and *After Effects* only loads new scripts when starting up. If the number of slots stays the same, however, you don't have to restart *After Effects*.

If you have other scripts before *--- Workflower ---.jsxbin* within AE's *Script* folder, your available number of slots will be lower than 20 since shortcuts can only be applied to the **first** 20 scripts. Change the name of the other scripts or move them out of the folder to increase the number of slots.

When you switch from *Single Script Mode* to *Individual Scripts Mode*, only the first 20 functions within the panel will have a shortcut. Click on *Reset to Default* to set shortcuts to the 20 most important functions instead.

When you switched from *Individual Scripts Mode* back to *Single Script Mode* and you want to remove the created *Workflower* script files from AE's scripts folder, you need to run AE as administrator, go to *Wokflower's* shortcuts panel, and just hit *Save*. (You can also simply manually remove the files AE's scripts folder. Make sure to keep your original *--- Workflower ---.jsxbin*!) Now restart AE and the additional script files will be gone from the menu.

## Shortcut Issues for Japanese Users on Windows (others might be affected too) <a href="#shortcut-issues-for-japanese-users" id="shortcut-issues-for-japanese-users"></a>

Japanese users on Windows seem to encounter two main issues with *Workflower's* shortcuts:

1. [Single Script Shortcut Mode](/main-functions/shortcuts#single-script-mode-windows-only) doesn't work.
2. Typing in custom shortcuts on *Workflower's* [Shortcut Panel](/main-functions/shortcuts#default-shortcuts) doesn't work.

These issues are due to an AE bug which only occurs when the OS language is Japanese. It has been reported to Adobe but as long as they haven't fixed this, Japanese users will have to rely on the following solutions:

Japanese users **can** use *Single Script Mode* and type in custom *Workflower* shortcuts when [they switch the OS language to US or similar](/main-functions/shortcuts#switching-the-os-language). As it might be unpractical to have the OS language changed for the whole time you're running AE, using *Single Script Mode* that way doesn't seem like a viable workaround for most users, though. (You will have to use [Individual Scripts Shortcut Mode](/main-functions/shortcuts#individual-scripts-mode-windows-mac) which will work without a problem in your OS language.) However, you can use this workaround to at least type in custom shortcuts on *Workflower's* shortcut panel:

1. Temporarily [switch your OS language to US or similar](/main-functions/shortcuts#switching-the-os-language).
2. (You might have to restart AE for the change to take effect.)
3. Open up *Workflower's* shortcuts panel, type in your shortcuts, and save them.
4. Now switch your OS language back to Japanese.

### Switching the OS Language

If you need to know how to switch the language of your OS, here's how you do it:

![](/files/-Mi170jg8tXSskFMJlmW)

1. If you haven't installed the US language yet, go to Windows' *Language settings.*
2. Click on *Add a language*, then add *English (United States).*
3. You can even choose to use the Japanese keyboard layout with the English language: After installing, click on *English (United States)*, then on *Options,* and then on *Add a keyboard* to add the Japanese keyboard.
4. Now, on the right side of Windows' taskbar, just click on the language button and choose *English (United States) / Japanese keyboard* (or just *English (United States)* if you haven't added the Japanese keyboard layout to it).

## Default Shortcuts

<div align="left"><img src="/files/-MQw9vXg8K5xSCAxKnEy" alt=""></div>

{% hint style="danger" %}
**Notice for all users:**

* Due to AE 26+ now occupying Shift+D, the default shortcut for [Select Group](/group-functions/collapse-and-select-groups#select-group) has been changed to Shift+W (on French keyboards to Shift+Z) in [version 2.5.1](/releases#id-2-5-1).
  {% endhint %}

{% hint style="danger" %}
**Notice for Windows users with** [**Single Script Mode**](#single-script-mode-windows-only) **enabled:**

* Due to AE now occupying Ctrl+Shift+B, the default shortcut for [Tag / Untag Layer/s](/layer-functions/tagging-layers#tag-untag-layer-s) has been changed to Ctrl+Shift+3 in [version 2.5.1](/releases#id-2-5-1).
* Due to AE now occupying Shift+J and Shift+K, the default shortcut for [Parent Layers to Group](/group-functions/parent-group-layers#parent-layers-to-group) has been changed to Ctrl+Alt+3 and for [Set Parent Exception Layer](/group-functions/parent-group-layers#set-parent-exception-layer) to Ctrl+Alt+Shift+3 in [version 2.0](/releases#id-2-5-1).
* *Additionally, in AE 22 and below:* Due to [Activate / Deactivate Tag Group 2](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2-3) now occupying Alt+F5, the default shortcut for [Unshy Layers](/layer-functions/matting#unshy-layers) has been changed to Alt+9 in [version 2.0](/releases#id-2-5-1)*.*
  {% endhint %}

{% hint style="danger" %}
**Notice for Mac users or Windows users with** [**Individual Scripts Mode**](https://workflower.constantin-maier.com/main-functions/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) **enabled:**

New default shortcuts have been added in [version 2.0](/releases#2-0) and [version 1.1](/releases#1-1):

1. [Perform Action on Tagged Layer/s](/layer-functions/tagging-layers#perform-action-on-tagged-layer-s) (Win: Ctrl+Shift+2, Mac: macControl+R) *\[added in v2.0]*
2. [Ungroup Layer/s](/group-functions/ungroup-dissolve-and-delete-groups#ungroup-layers) (Win+Mac: Shift+H) *\[added in v1.1]*
3. [Precompose](/layer-functions/precomposing#precompose) (Win: Alt+F3, Mac: macControl+C) *\[added in v1.1]*

To make room for those, the following functions have been removed from the list of functions with default shortcuts:

1. [Add Layer References](/main-functions/connections#add-remove-layer-references) *\[removed in v2.0]*
2. [Clone in Comp](/layer-functions/cloning#clone-in-comp) *\[removed in v1.1]*
3. [Store Layers 1](/layer-functions/storing-layers#store-layers) *\[removed in v1.1]*
   {% endhint %}

{% hint style="warning" %}
Sometimes language-specific shortcuts (like German or French) won't get applied correctly by default because the OS or AE language can't get detected accurately. In that case, the English shortcut will be applied. If you want the best user experience, change the shortcuts to their default according to this table (most relevant in the case of *Refresh Layout*).
{% endhint %}

### Main Functions

| Function                                                                                        | Shortcut (Win)   | Shortcut (Mac)                          |
| ----------------------------------------------------------------------------------------------- | ---------------- | --------------------------------------- |
| [Main Menu](/main-functions/main-menu)                                                          | Ctrl+Alt+X       | macControl+X                            |
| Settings                                                                                        | Ctrl+Alt+F1      | -                                       |
| [Keyboard Shortcuts](/main-functions/shortcuts)                                                 | Ctrl+Alt+F2      | -                                       |
| [Refresh Layout](/main-functions/layout#refresh-layout)                                         | Shift+Z          | Shift+Z                                 |
| - German                                                                                        | Shift+Y          | Shift+Y                                 |
| - French                                                                                        | Shift+W          | Shift+W                                 |
| [Toggle Non-Indented](/main-functions/layout#toggle-non-indented-layout)                        | Shift+I          | -                                       |
| [Toggle Expression Mode](/main-functions/layout#toggle-expression-mode)                         | Shift+O          | -                                       |
| [Show / Hide Layer Relationships](/main-functions/layout#show-hide-layer-relationships)         | -                | -                                       |
| [Refresh Connections](/main-functions/connections#refresh-connections)                          | Ctrl+Alt+Q       | macControl+Q                            |
| [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) | Alt+F2           | macControl+2                            |
| [Add / Remove Layer / Mask References](/main-functions/connections#add-remove-layer-references) | Ctrl+Alt+Shift+I | *(removed in v2.0 ->)* ~~macControl+I~~ |
| [Link / Unlink Properties](/main-functions/connections#link-unlink-properties)                  | Ctrl+Alt+Shift+0 | -                                       |
| [Sort Project Items](/main-functions/layout#sort-project-items)                                 | Alt+Shift+F2     | -                                       |

### Group Functions

| Function                                                                                                       | Shortcut (Win)                                                 | Shortcut (Mac)                                          |
| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------- |
| [Create Group](/group-functions/create-and-duplicate-groups#create-group)                                      | Shift+F1                                                       | macControl+1                                            |
| [Expand / Collapse Group](/group-functions/collapse-and-select-groups#expand-collapse-group)                   | Shift+X                                                        | Shift+X                                                 |
| [Expand / Collapse all Sub-Groups](/group-functions/collapse-and-select-groups#expand-collapse-all-sub-groups) | Ctrl+Alt+Shift+B                                               | -                                                       |
| [Select Group](/group-functions/collapse-and-select-groups#select-group)                                       | Shift+W *(changed in v2.5.1 from&#x20;*~~*Shift+D*~~*)*        | Shift+W *(changed in v2.5.1 from&#x20;*~~*Shift+D*~~*)* |
| - French                                                                                                       | Shift+Z *(changed in v2.5.1 from&#x20;*~~*Shift+D*~~*)*        | Shift+Z *(changed in v2.5.1 from&#x20;*~~*Shift+D*~~*)* |
| [Duplicate Group](/group-functions/create-and-duplicate-groups#duplicate-group)                                | Ctrl+Alt+Shift+M                                               | -                                                       |
| [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group)   | Shift+FwdDel                                                   | Shift+Delete                                            |
| [Ungroup Layers](/group-functions/ungroup-dissolve-and-delete-groups#ungroup)                                  | Shift+H                                                        | Shift+H *(added in v1.1)*                               |
| [Dissolve Group](/group-functions/ungroup-dissolve-and-delete-groups#dissolve-group)                           | Ctrl+Shift+FwdDel                                              | -                                                       |
| [Parent Layers to Group](/group-functions/parent-group-layers#parent-layers-to-group)                          | Ctrl+Alt+3 *(changed in v2.0 from&#x20;*~~*Shift+J*~~*)*       | -                                                       |
| [Set Parent Exception Layer](/group-functions/parent-group-layers#set-parent-exception-layer)                  | Ctrl+Alt+Shift+3 *(changed in v2.0 from&#x20;*~~*Shift+K*~~*)* | -                                                       |
| [Center Group Header](/group-functions/miscellaneous-group-functions#center-group-header)                      | Ctrl+Alt+Shift+9 *(added in v1.1)*                             | -                                                       |
| [Enable / Disable Group](/group-functions/disable-solo-and-lock-groups#enable-disable-group)                   | Shift+B                                                        | Shift+B                                                 |
| [Solo Group](/group-functions/disable-solo-and-lock-groups#solo-group)                                         | Ctrl+Alt+D                                                     | macControl+D                                            |
| [Lock Group](/group-functions/disable-solo-and-lock-groups#lock-group)                                         | -                                                              | -                                                       |
| [Relabel Layer / Group / Keyframe](/layer-functions/relabeling#relabel-layer-s)                                | Ctrl+Shift+Space                                               | Option+Space                                            |

### Layer Functions

| Function                                                                                                 | Shortcut (Win)                                                                      | Shortcut (Mac)                                |
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------- |
| [Create Matte](/layer-functions/matting#create-matte)                                                    | Ctrl+Alt+Z                                                                          | macControl+Z                                  |
| - German                                                                                                 | Shift+Z                                                                             | macControl+Z                                  |
| [Merge Mattes](/layer-functions/matting#merge-mattes)                                                    | Ctrl+Alt+Shift+Z                                                                    | -                                             |
| [Clone and Precomp](/layer-functions/cloning#clone-and-precomp)                                          | Ctrl+Alt+Shift+W                                                                    | macControl+W                                  |
| [Clone in Comp](/layer-functions/cloning#clone-in-comp)                                                  | Shift+N                                                                             | *(removed in v1.1 ->)* ~~Shift+N~~            |
| [Show Clone Layers](/layer-functions/cloning#show-clone-layers)                                          | Ctrl+Shift+Return                                                                   | macControl+Return                             |
| [Show and Clone Layers](/layer-functions/cloning#show-and-solo-clone-layers)                             | Ctrl+Alt+Return *(added in v2.5)*                                                   | -                                             |
| [Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer)             | Ctrl+Alt+.                                                                          | -                                             |
| [Matted Adjustment Layer](/layer-functions/adjustment-layers#create-matted-adjustment-layer)             | -                                                                                   | -                                             |
| [Rename Layer/s](/layer-functions/renaming#rename-layer-s)                                               | Shift+Return                                                                        | Shift+Return                                  |
| [Rename Layers by Number](/layer-functions/renaming#rename-layers-by-number)                             | -                                                                                   | -                                             |
| [Store Layers 1](/layer-functions/storing-layers#store-layers)                                           | Ctrl+Shift+6                                                                        | *(removed in v1.1 ->)* ~~Shift+macControl+6~~ |
| [Store Layers 2](/layer-functions/storing-layers#store-layers)                                           | Ctrl+Shift+7                                                                        | -                                             |
| [Store Layers 3](/layer-functions/storing-layers#store-layers)                                           | Ctrl+Shift+8                                                                        | -                                             |
| [Paste Stored Layers 1](/layer-functions/storing-layers#paste-stored-layers)                             | Ctrl+Alt+6                                                                          | macControl+6                                  |
| [Paste Stored Layers 2](/layer-functions/storing-layers#paste-stored-layers)                             | Ctrl+Alt+7                                                                          | -                                             |
| [Paste Stored Layers 3](/layer-functions/storing-layers#paste-stored-layers)                             | Ctrl+Alt+8                                                                          | -                                             |
| [Tag / Untag Layer/s](/layer-functions/tagging-layers#tag-untag-layer-s)                                 | Ctrl+Shift+3 *(added in v2.0)* *(changed in v2.5.1 from&#x20;*~~*Ctrl+Shift+B*~~*)* | -                                             |
| [Perform Action on Tagged Layer/s](/layer-functions/tagging-layers#perform-action-on-tagged-layer-s)     | Ctrl+Shift+2 *(added in v2.0)*                                                      | macControl+R *(added in v2.0)*                |
| [Activate / Deactivate Tag Group 1](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2-3) | Ctrl+F3 *(added in v2.0)*                                                           | -                                             |
| [Activate / Deactivate Tag Group 2](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2-3) | Ctrl+F5 *(added in v2.0)*                                                           | -                                             |
| [Activate / Deactivate Tag Group 3](/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2-3) | Ctrl+F6 *(added in v2.0)*                                                           | -                                             |
| [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity)              | Alt+F1                                                                              | macControl+3                                  |
| [Show / Hide Movie Indicator](/main-functions/layout#show-hide-move-indicator)                           | -                                                                                   | -                                             |
| [Pre-Render](/layer-functions/pre-rendering#pre-render)                                                  | Ctrl+F2 *(added in v2.5)*                                                           | -                                             |
| [Show / Hide Pre-Render](/layer-functions/pre-rendering#show-hide-pre-render)                            | Ctrl+Alt+Space *(added in v2.5)*                                                    | -                                             |
| [Precompose](/layer-functions/precomposing#precompose)                                                   | Ctrl+F1 *(added in v1.1)*                                                           | macControl+C *(added in v1.1)*                |
| [Trim Layers to Keyframes](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes)       | -                                                                                   | -                                             |
| [Trim Layer to Layer](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-1)          | -                                                                                   | -                                             |
| [Unshy Layers](/layer-functions/matting#unshy-layers) *(only when using AE 22 or below)*                 | Alt+F9 *(changed in v2.0 from&#x20;*~~*Alt+F5*~~*)*                                 | -                                             |

### Panel Shortcuts

{% hint style="warning" %}
Panel shortcuts can't be modified.
{% endhint %}

#### All Panels (Main Menu, Rename Layer/s, Relabel Layer/s, Tag Layer/s) (Windows only)

| Function         | Shortcut (Win)       | Shortcut (Mac) |
| ---------------- | -------------------- | -------------- |
| Move Panel left  | Ctrl+Alt+Left        | -              |
| Move Panel right | Ctrl+Alt+Right       | -              |
| Move Panel up    | Ctrl+Alt+Up          | -              |
| Move Panel down  | Ctrl+Alt+Down        | -              |
| Center Panel     | Ctrl+Alt+Shift+Left  | -              |
|                  | Ctrl+Alt+Shift+Right | -              |
|                  | Ctrl+Alt+Shift+Up    | -              |
|                  | Ctrl+Alt+Shift+Down  | -              |

#### Rename Panel

| Function                                                  | Shortcut (Win)  | Shortcut (Mac)    |
| --------------------------------------------------------- | --------------- | ----------------- |
| <p>Re-Rename on Dependency</p><p>(surrounding Layers)</p> | Ctrl+Alt+Return | Cmd+Option+Return |
| <p>Re-Rename on Dependency</p><p>(all Layers in Comp)</p> | Ctrl+Return     | Cmd+Return        |
| Rename all Instances of Name                              | Shift+Return    | Shift+Return      |
| Switch Split <-> Full Mode                                | Alt+Return      | Option+Return     |
| Flip one Name Level backward                              | Alt+Left        | Option+Left       |
| Flip one Name Level forward                               | Alt+Right       | Option+Right      |
| Add new Name Level                                        | Alt+Up          | Option+Up         |
| Delete current Name Level                                 | Alt+Down        | Option+Down       |

#### Relabel Panel

| Function                                                      | Shortcut (Win)          | Shortcut (Mac)            |
| ------------------------------------------------------------- | ----------------------- | ------------------------- |
| Change Label Color                                            | Shift+Click on Color    | Shift+Click on Color      |
| Change and Apply Label Color                                  | Ctrl+Click on Color     | Cmd+Click on Color        |
| Open AE Label Color Preferences                               | Alt+Click on Color      | Option+Click on Color     |
| Relabel entire Keyframe Label Group in Comp *(added in v2.0)* | Ctrl+Alt+Click on Color | Cmd+Option+Click on Color |
| Apply Label Color by Shortcut *(added in v2.0)*               | 1 - 9, A - G            | 1 - 9, A - G              |

#### Tag / Untag Layer/s Panel&#x20;

<table><thead><tr><th width="266">Function</th><th width="233.33333333333331">Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td>Rename / Remove Tag Group</td><td>Shift+Click on Color</td><td>Shift+Click on Color</td></tr><tr><td>Tag / Untag Layer/s by Shortcut</td><td>1 - 9, A - G</td><td>1 - 9, A - G</td></tr></tbody></table>

#### Perform Action on Tagged Layer/s Panel

<table><thead><tr><th width="266">Function</th><th width="233.33333333333331">Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td>Toggle States when performing Action</td><td>Left-Click on Color</td><td>Left-Click on Color</td></tr><tr><td>Enable States when performing Action</td><td>Center-Click on Color</td><td>Center-Click on Color</td></tr><tr><td>Disable States when performing Action</td><td>Right-Click on Color</td><td>Right-Click on Color</td></tr><tr><td>Activate / Deactivate (Apply directly)</td><td>Ctrl+Click on Color</td><td>Cmd+Click on Color</td></tr><tr><td>Solo / Unsolo (Apply directly)</td><td>Alt+Click on Color</td><td>Option+Click on Color</td></tr><tr><td>Select / Deselect (Apply directly)</td><td>Ctrl+Alt+Click on Color</td><td>Cmd+Option+Click on Color</td></tr><tr><td>Jump To (Apply directly)</td><td>Ctrl+Shift+Click on Color</td><td>Cmd+Shift+Click on Color</td></tr><tr><td>Continue to Perform Actions</td><td>Ctrl+Alt+Shift+Click on Color</td><td>Cmd+Option+Shift+Click on Color</td></tr><tr><td>Activate / Deactivate (Select on Panel)</td><td>T</td><td>T</td></tr><tr><td>Enable / Disable (Select on Panel)</td><td>N</td><td>N</td></tr><tr><td>Solo / Unsolo (Select on Panel)</td><td>O</td><td>O</td></tr><tr><td>Lock / Unlock (Select on Panel)</td><td>L</td><td>L</td></tr><tr><td>Select / Deselect (Select on Panel)</td><td>S</td><td>S</td></tr><tr><td>Toggle Effects (Select on Panel)</td><td>F</td><td>F</td></tr><tr><td>Toggle Motion Blur (Select on Panel)</td><td>M</td><td>M</td></tr><tr><td>Jump To (Select on Panel)</td><td>J</td><td>J</td></tr><tr><td>Rename / Remove Tag Group</td><td>Shift+Click on Color</td><td>Shift+Click on Color</td></tr><tr><td>Perform Action on Tag Group by Shortcut</td><td>1 - 9, A - G</td><td>1 - 9, A - G</td></tr></tbody></table>

### Double-Click Shortcuts

**(Added in** [**version 2.0**](/releases#2-0)**)**

{% hint style="warning" %}
For double-clicking behavior to work, you need the *WQ* plug-in installed that you find in your installation files. For installation instructions, please read the user guide chapter on [Installation](/installation#step-1-installing-the-script).
{% endhint %}

{% hint style="info" %}
Please note that by double-clicking a group header, you can only execute the action if you have a single group header selected. If you want to execute the action on multiple groups, you have to execute *Workflower's* dedicated functions for that.
{% endhint %}

<table><thead><tr><th width="242.33333333333331">Function</th><th>Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td><a href="/pages/-MQrPDLP9WbvM8ymNwP2#expand-collapse-group">Expand / Collapse Group</a></td><td>Double-Click on group header</td><td>Double-Click on group header</td></tr><tr><td><a href="/pages/-MQrPDLP9WbvM8ymNwP2#select-group">Select Group</a></td><td><em>Alt</em>+Double-Click on group header</td><td><em>Option</em>+Double-Click on group header</td></tr><tr><td><a href="/pages/-MQrO6kGWULcFTTHTPxD#enable-disable-group">Enable / Disable Group</a></td><td><em>Shift</em>+Double-Click on group header</td><td><em>Shift</em>+Double-Click on group header</td></tr><tr><td><a href="/pages/-MQrO6kGWULcFTTHTPxD#solo-group">Solo Group</a></td><td><em>Ctrl+Shift</em>+Double-Click on group header</td><td><em>Cmd+Shift</em>+Double-Click on group header</td></tr></tbody></table>


# Layout

## Refresh Layout

<div align="left"><figure><img src="/files/VPRNzxBjUeYxkerU3D5J" alt=""><figcaption></figcaption></figure></div>

Refreshes the layout of the current comp (Win+Mac: Shift+Z, Win+Mac \[German]: Shift+Y, Win+Mac \[French]: Shift+W).

{% hint style="warning" %}
Sometimes the language-specific shortcut (German or French) of *Refresh Layout* won't get applied correctly by default because the OS or AE language can't get detected accurately. In that case, the English shortcut will be applied. If you want the best user experience, change the shortcut manually to its default in these languages (German: Shift+Y, French: Shift+W).
{% endhint %}

Use *Refresh Layout* every time layers have been moved, created, or renamed (using AE renaming).

*Refresh Layout* will refresh:

* Indent
* Visibility, solo, and lock states
* Group parents
* Group labels
* Layer icons
* Trim of group headers to their contained layers (as well as trimming of other layer types; for more information, [see below](#automatic-trimming))

It will also:

* Quick refresh clone connections of selected layers (for more information, [see below](/main-functions/layout#quick-refresh-clone-connections-of-selected-layers))
* (added in [version 1.1](/releases#1-1) ->) Refresh [Group Mattes](/layer-functions/matting#group-matte) if layers were added/removed to/from a group
* (added in [version 1.1](/releases#1-1) ->) Refresh [Group Linked Adjustment Layers](/layer-functions/adjustment-layers#group-linked-adjustment-layers) if layers were added/removed to/from a group
* Collapse layers that have been shifted into a collapsed group
* Convert layers of a *Prime Clone* to *Prime Clone* layers and vice versa
* Convert *Precomp Clones*, on which its *Cloned Layer* effects have been deleted, to *Dependent Clones*
* Reorder effects on *Linked Adjustment Layers* according to the order in which the *Linked Adjustment Layers* are within the comp (for more on this, see [Create Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer) chapter)
* Remove Group Mattes from layers if the Group Matte Layer itself has been deleted
* Check names of selected layers for whether duplicate names exist and rename the selected layers if needed
* (added in [version 2.5](/releases#id-2-5) ->) Check names of selected masks for whether duplicate names exist and rename the selected masks if needed
* (added in [version 2.0](/releases#2-0) ->) Refresh names of group elements ([Group Mattes](/layer-functions/matting#group-matte), [Group Inter-Merges](/layer-functions/matting#group-mattes-in-ae-23-and-upwards), [Group Adjustment Layers](/layer-functions/adjustment-layers#group-linked-adjustment-layers), and [Group Clones](/layer-functions/cloning#group-clone)) to their group header name, as well as [Matte Merge](/layer-functions/matting#merge-mattes) layer names to their matted layer name.
* (added in [version 2.0](/releases#2-0) ->) Refresh the timing of [Tag Markers](/layer-functions/tagging-layers) to their original position
* (added in [version 2.5](/releases#id-2-5) ->) Refresh names of [Precomp Clones](/layer-functions/cloning#clone-and-precomp) in the project panel to inherit the *Precomp Clone* layer name as well as indicate the *Precomp Clone* layer's containing comp with the suffix *(in '\[COMP]')*.
* (added in [version 2.5](/releases#id-2-5) ->) Refresh names of [Linked Masks](/main-functions/connections#adding-linked-masks) and their corresponding effects.
* (added in [version 2.5](/releases#id-2-5) ->) Refresh names of [masks referenced by an effect](/main-functions/connections#adding-removing-effect-masks).

Tip: *Refresh Layout* will also be executed when you center-click on empty space on the [ScriptUI Panel](/main-functions/main-menu#main-menu-as-scriptui-panel).

{% hint style="info" %}
*Refresh Layout* will only refresh the comp's layout. Connections of *Clones in Comp*, entire Precomp *Clones*, *Linked Adjustment Layers,* and *Group Mattes* are **not** being refreshed. You need to use [Refresh Connections](/main-functions/connections#refresh-connections) for this.

Also, read up [here](/faq#refresh-functions) for more info on the difference between *Refresh Layout* and *Refresh Connections*.
{% endhint %}

### Unavailable After Effects Functions

<img src="/files/-Mga1tanIqPs5g_swo3-" alt="Layer Comments
with Internal Workflower Information" width="188">

In order for *Workflower* to run its functions, by default it is taking full control of:

* AE's shy mode (to collapse groups)
* AE's layer comments (to store internal information)
  * However, as of version 2.5.1, it's possible to use [external layer comments](#allowing-external-layer-comments)
* AE's project item comments of compositions (to store internal information)

{% hint style="danger" %}
That means, though, that shy states and comments are **not** usable anymore. Keep that in mind when applying *Workflower* to an existing comp because all shy and comment data will be overwritten.
{% endhint %}

#### Allowing External Layer Comments <a href="#allowing-external-layer-comments" id="allowing-external-layer-comments"></a>

**(Added in** [**version 2.5.1**](/releases#id-2-5-1)**)**

As of *version 2.5.1*, it's possible to add layer comments without *Workflower* overwriting them. (It has been in beta since 2.0.4.)

It's disabled by default. Enable it under *Settings > Layout > Allow External Layer Comments*.

This makes Workflower compatible with a variety of add-ons that rely on writing/reading data to/from the layer comments (like [Flatten Layers](https://aescripts.com/flatten-layers/) or [AutoSway](https://aescripts.com/autosway/)).

*Workflower* achieves this by saving its data to a layer marker when a non-*Workflower* layer comment is added. Do not remove this marker!

{% hint style="warning" %}
Using non-*Workflower* layer comments can reduce performance of *Workflower* functions, so it's recommended to use as few as possible.
{% endhint %}

To return to *Workflower* using layer comments in order to store data, just put in an empty string into the layer comment and execute any Workflower function.

### Exempting Layer Names from Indentation <a href="#exempt-layer-names" id="exempt-layer-names"></a>

**(Added in** [**version 1.0.5**](/releases#1-0-5)**)**

![Exempting 'Original Base' from being indented to keep the 'Normalize Track' Script functional](/files/nHbBtLqMpcGs9QReBVcT)

Certain plugins/scripts depend on specific layers to keep their original name. Tools that depend on this include *RubberHose 2*, *Deekay Tool*, or *Normalize Track*. However, in *Indented Layout*, *Workflower* will rename almost all layer names in your comp indent them. To combat this, you can add a marker to your layer with the comment "NNN" (without quotation marks).

Be aware that doing this will keep the layer name from being altered at all. So if the layer already has an indent, it will keep that indent. If you don't want the layer to have that indent, just remove it and the next time you execute *Refresh Layout*, no indent will be added.

As of [version 1.1](https://workflower.constantin-maier.com/main-functions/pages/-Ml5GvnEbRagPappfC6F#coming-soon-in-workflower-1.1), you can also use the dedicated function [Exempt Layer Name from Alteration](#exempt-layer-name-from-alteration) in order to add the marker with "NNN" to a layer. This makes it faster to add the marker to multiple layers at once. Additionally, it will also remove the layer name's indent in case it had one.

For a list of plugins/scripts that depend on specific layer names and that we've tested for their compatibility with *Workflower*, please click [here](/faq#specific-layer-names).

#### Always exempt certain Layer Names from Indentation

As of [version 2.5.1](/releases#id-2-5-1), you can also [define a set of layer names that are always to be exempted from alteration](#define-layer-name-exceptions-from-alteration).

### Automatic **Trimming**

**(Added in version 1.1)**

![Group Headers trimmed to contained Layers](/files/WmPsyJ7AhViKh9NzxbnH)

If enabled under the *Trimming Settings*, the group header's in and out point will be adjusted to the group's layers once you execute *Refresh Layout*. That way, you always know the group's position in time even when the group is collapsed.

All empty groups will be trimmed to the entire comp duration.

Additionally, there are even more layer types that will be automatically trimmed to another set of layers, so in total these are your total trimming functions:

1. Group header to contained layers
2. *Group Matte Layers* to their group header
3. *Group Adjustment Layers* to their group header
4. Track mattes to their matted layers (disabled by default since [version 2.0](/releases#2-0))
5. [Matte Merge](/layer-functions/matting#merge-mattes) layers to their matted layer (when track matte directly above)
6. [Precomp Clones](/layer-functions/cloning#clone-and-precomp) to their contained layers
7. Adjustment layers that are matted to clones (when track matte directly above)

{% hint style="warning" %}
Automatic trimming of regular track mattes to matted layers has been disabled by default in [version 2.0](/releases#2-0) since it sometimes resulted in confusing automatic trims.
{% endhint %}

You can disable or enable any of these options by going to *Settings > Trimming*.

To exempt any of these layers from being trimmed, simply add a marker to the layer with the comment "TTT" (without quotation marks) or execute [Exempt Layer from Trimming](#exempt-layer-from-trimming) by going to the [Main Menu](/main-functions/main-menu), holding down *Alt/Option,* and clicking on the [Rename Layer/s](/layer-functions/renaming#rename-layer-s) button.

{% hint style="warning" %}
Don't confuse this feature with [Layers respect Group In/Out](/group-functions/miscellaneous-group-functions)! *Layers respect Group In/Out* will trim every contained layer to the group header's trim whereas this feature will do the opposite: trim the header's in/out point to the contained layers.

When you're using *Layers respect Group In/Out*, the automatic trimming of the header's in/out point will be disabled.
{% endhint %}

### Unavailable Characters <a href="#unavailable-characters" id="unavailable-characters"></a>

Since *After Effects'* Spectrum UI (AE 25 and up), *Workflower* has to use regular characters as icons in its layer names on both Windows and Mac (previously this was only necessary on Mac).

That's why certain combinations of characters cannot be used in layer names since they will be removed and replaced every time *Refresh Layout* is executed. Make sure not to use the following combinations of characters within your layer names:

| Unavailable Characters on Windows                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Unavailable Characters on Mac                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><em>(applies since After Effects 2025)</em></p><p></p><p>－    (Special Minus)</p><p>＋    (Special Plus)</p><p>└</p><p>～<br>¤</p><p>ｏ    (Special 'o')</p><p>╒╕</p><p>\[t]</p><p>\[x]</p><p>\[c]</p><p>\[p]</p><p>\[i]</p><p>\[d]</p><p>\[g]</p><p>\[w]</p><p>\[ws]</p><p>\[m]</p><p>Ø</p><p>≫    (Special Guillemet)</p><p>\[a]</p><p>\[\[U]]</p><p>∆</p><p>∆ ∆</p><p>‡</p><p>\[R]</p><p>\[--R--]</p><p>\[PR]</p><p>\[--PR--]</p><p>\[r]</p><p>\[--r--]</p><p>\[pr]</p><p>\[--pr--]</p> | <p><em>(applies in all After Effects versions)</em></p><p></p><p>\[–]<br>\[+]<br>></p><p>\~<br>\[\[O]]<br>\[o]<br>\[==]<br>\[t]<br>\[x]<br>\[c]<br>\[p]<br>\[i]<br>\[d]<br>\[g]</p><p>\[w]</p><p>\[ws]<br>\[m]<br>\[ø]<br>»<br>\[a]<br>\[\[U]]<br>∆<br>∆ ∆<br>‡<br>\[R]<br>\[--R--]<br>\[PR]<br>\[--PR--]<br>\[r]<br>\[--r--]<br>\[pr]<br>\[--pr--]</p> |

### Quick Refresh Clone Connections of Selected Layers

By default, this setting is disabled. To enable it, go to the *Cloning Settings* and activate *When executing 'Refresh Layout', quick refresh Clone Connections of selected Layers*. Now, every time you add or delete effects/masks, change the effects/masks order, change a parent or blending mode, enable/disable 3D, etc., simply execute *Refresh Layout* to update the corresponding clone layer/s.

This *Quick Refresh Connections* function within *Refresh Layout* is mostly identical to the separate *Quick Refresh Connections* function and has similar limitations. For more on this, see the [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) chapter. However, there are also some differences between the *Quick Refresh Connections* function within *Refresh Layout* and the actual *Quick Refresh Connections* function:

* Only connections of the selected layers, as well as the layer order, will be refreshed within *Refresh Layout*; not the other layers within the clone comp.
* Potentially cloning and replacing layers with non-readable effects **DOES NOT** happen when quick refreshing connections within *Refresh Layout*, as it would slow down *Refresh Layout* too much.
* Only *Precomp Clone* connections will be refreshed. No *Clones in Comp*, *Linked Adjustment Layers,* or *Group Mattes*.

{% hint style="info" %}
Using *Quick Refresh Clone Connections* within *Refresh Layout* might slow down *Refresh Layout*. If you prefer a better performance, disable this option in the *Cloning Settings* and refresh connections only via its [dedicated functions](/main-functions/connections).
{% endhint %}

## Toggle Non-Indented Layout

<div align="left"><figure><img src="/files/Ugjy6V4fJoZXgrDbwfLD" alt=""><figcaption></figcaption></figure></div>

Toggles from *Indented Layout* to *Non-Indented Layout* and vice versa (Win: Shift+I, Mac: no default shortcut).

![Left: Indented Layout; Right: Non-Indented Layout](/files/-MR-YvzjOULGNEHx8iLh)

*Non-Indented Layout* may be useful to you if you want to use *Refresh Layout* less since indenting can only happen if *Refresh Layout* is executed every time layers have been moved. Aside from that, if the indent in *Indented Layout* is updated, the layer names will be renamed and if the layers in question are linked using expressions by other layers, all expressions will have to updated by AE, which will take a bit of time. To avoid this, you can instead use *Non-Indented Layout*.

Be aware that toggling to *Non-Indented Layout* may take a bit of time since all layers have to be renamed.

*Non-Indented Layout* can be set as the default layout in the *Layout Settings*.

## Toggle Expression Mode

<div align="left"><figure><img src="/files/OqHdPUAuH8nJNVmkf5vi" alt=""><figcaption></figcaption></figure></div>

Toggles from *Indented Layout* to *Expression Mode* and vice versa (Win: Shift+O, Mac: no default shortcut).

![Left: Indented Layout; Right: Expression Mode](/files/-MR-ZCss6ZSgwnPwZJeW)

*Expression Mode* removes the indent and strips away all special characters, created by *Workflower*. This is useful when writing expressions where other layers are referenced. When typing out another layer's name in an expression, it may be annoying to type out every space in the indent, or to put in the special characters, which can't be found on a keyboard.

Be aware that toggling to *Expression Mode* may take a bit of time since all layers have to be renamed.

*Expression Mode* can be set as the default layout in the *Layout Settings*.

### Custom Indentation Icon in Expression Mode

**(Added in** [**version 1.1**](/releases#1-1)**)**

You have the option to use a custom indentation icon in *Expression Mode*. (Go to the *Icon Settings* to enable it.) This will display one icon (*#* by default) for each level of indentation, e.g. *# Layer 1* for a layer which is one group level deep, *## Layer 2* for a layer which is two group levels deep, etc.

This can be useful if you work a lot in *Expression Mode* and you want to have an indication of the layers' indentation level when writing your expressions.

{% hint style="warning" %}
When using an indentation icon and exchanging your project, make sure to use the same icon. Otherwise, *Workflower* will interpret the icon as part of the layer name. Another option would be to use **no** *Expression Mode* when handing over comps or to disable the custom indentation icon.
{% endhint %}

## Show / Hide Layer Relationships

<div align="left"><img src="/files/5NjkxRUMbv41ZpePuJE4" alt=""></div>

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Toggles layer relationships, displayed via layer markers, on and off (no default shortcut; Win: *Alt+Click* on the *Refresh Layout Button*; Mac: *Option+Click* on the *Refresh Layout Button*).

<figure><img src="/files/gjnyVkAikzNbRNQ5j8ZV" alt=""><figcaption><p>Markers displaying Layer Relationships</p></figcaption></figure>

This feature enables you to see the relationship between the layers. It displays which layer references another layer via effect, and indicates the referenced layer too.

To update the state, please execute [Refresh Layout](#refresh-layout).

By default, this feature is disabled for new comps and has to be enabled first. In the *Layout Settings*, you can customize whether layer relationships should be displayed by default as well as how many relationship slots per layer are displayed at a maximum.

{% hint style="warning" %}
Be aware that this function might slow down *Refresh Layout* a bit since the layer markers have to be recreated internally every time you execute it. So if *Refresh Layout* gets too slow, only enable *Layer Relationships* when needed.
{% endhint %}

## Sort Project Items

<div align="left"><img src="/files/AVeHvKWvzN1x7BYB1xtW" alt=""></div>

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Sorts items in the project panel into folders of their type (Win: Alt+Shift+F2, Mac: no default shortcut / Via [Main Menu](/main-functions/main-menu): Win: *Alt+Click* on the *Create Group Button*, Mac: *Option+Click* on the *Create Group Button*).

<figure><img src="/files/g2ubHenIixPbxZ257FaK" alt="" width="197"><figcaption><p>Sorted Folders</p></figcaption></figure>

Sorts into the following folders:

* Clones
* Comps
* Footage
  * Audio
  * Other/Missing
  * PSD/AI
  * Stills
  * Video
* Imported Projects (folders need to keep *.aep* suffix)

Customize which folders ought to be sorted in the *Sorting* settings.

Folders with label *None* will be excluded. (Additional labels can be defined in the *Sorting* settings.)

#### Import & Sort File/s

You can import and directly sort files by right-clicking on the [Sort Project Items](/main-functions/layout#sort-project-items)-button.

This function additionally offers the ability to set the framerate on EXR sequences on import when creating a layered composition.

## Convert all Comps to another Layout

**(Added in** [**version 1.0.3**](/releases#1-0-3-august-26-2021)**)**

Batch-converts all comps in the current project to another layout style.

!['Convert all Comps to another Layout' Dialog](/files/xLBMSWAB6V9jmhUwQeHX)

To make use of this, go to the *Layout Settings*, you click on *Convert all Comps to another Layout*. Or, as of [version 2.0.4](/releases#id-2-0-4), you can also right-click on empty space on the ScriptUI Panel and click on *Export/Import Project* to open the same function.

This is useful when you want to exchange the project file with someone who doesn't own *Workflower:*

Preferably, you want to convert your comps then to *Expression Mode* which will get rid of all indent and special characters. You also might want to enable *Expand all Collapsed Groups*, *Disable Shy'd WF Layers above Groups with Error Message* (the [shy'd layer above a *Workflower* group header](/group-functions/create-and-duplicate-groups#additional-layers-to-keep-in-mind) holds information for potential error messages - however, when you don't work with *Workflower*, this message will be useless and might confuse you), and *Unlock Shy'd WF Layers above and below Groups*.

If the aep is returned to you, it is possible to convert the comps back to *Indented Layout* using *Convert all Comps in Project to another Layout Style*. For that to be possible, however, it is necessary that no layer/comp comments were deleted, as *Workflower* relies on them to store information about groups and layers. Also, the group header, as well as the shy'd layers above and below the group, mustn't have been deleted. These are necessary for *Workflower* to be able to identify the beginning and end of a group.

If you want to exchange the project file with someone who doesn't have *Workflower*, that person might find it annoying to deal with the additional shy'd layers above and below groups, so using this function, you can also remove those layers. However, be aware that it will then be impossible to read group information on re-importing and you would have to create your groups anew!

## Update all Comps

**(Added in** [**version 1.1**](/releases#1-1)**)**

Batch-refreshes the layout of all comps in the current project.

To make use of this, go to the *Layout Settings*, you click on *Update all Comps*.

This can be useful if you accidentally dismissed the update dialog after opening the project and you want to update all comps to your current version or current OS.

## Convert Project to older WF/AE Version <a href="#convert-project-to-older-wf-version" id="convert-project-to-older-wf-version"></a>

**(Added in** [**version 1.1**](/releases#1-1)**)**

Batch-converts all comps in the current project to an older *Workflower* or *After Effects* version.

To make use of this function, go to the *Layout Settings*, you click on *Convert Project to older WF/AE Version*.

Since certain *Workflower* versions (like *1.1*) include features that are incompatible with older *Workflower* versions, you will have to downgrade your project before handing it over to someone who uses an older *Workflower* version, or before you downgrade to an older *Workflower* version yourself.

{% hint style="warning" %}
Please be aware that certain attributes get removed when converting to an older version. For example, [v1.0.6](/releases#1-0-5) does not include the ability to use [Group Opacity](/group-functions/miscellaneous-group-functions#group-opacity), that's why all *Group Opacities* get removed when converting the project to *v1.0.6*.
{% endhint %}

## Exempt Layer Name from Alteration

<div align="left"><figure><img src="/files/RdXauEzLM283s0pCONQP" alt=""><figcaption></figcaption></figure></div>

**(Added in version 1.1)**

Adds a marker with "NNN" to the selected layers in order to exempt their names from alteration (not available via shortcut; Win: *Ctrl+Click* on the *Rename Layer/s Button*; Mac: *Cmd+Click* on the *Rename Layer/s Button*).

Especially useful when you want to exempt several layers from indentation at once.

For more information on this, [see above](#exempt-layer-names).

## Define Layer Name Exceptions from Alteration

**(Added in** [**version 2.5.1**](/releases#id-2-5-1)**)**

Allows to define a set of layer names always to be exempted from alteration.

<figure><img src="/files/HwH6QJpWDPhveS3UGyYv" alt=""><figcaption></figcaption></figure>

Since some 3rd party add-ons depend on specific layer names, Workflower provides the [Exempt Layer Name from Alteration](#exempt-layer-name-from-alteration) function. However, this has to be done for every layer individually and since the names to be exempted are often the same, *Define Layer Name Exceptions from Alteration* allows you to permanently exempt layers with certain names.

To make use of this, go to the *Layout Settings* and click on *Define Layer Name Exceptions from Alteration*.

In the textbox, add your layer names. Separate the names by adding a new line.

Additionally, the function allows you to customize additional conditions (**need to precede name with NO spaces between**):

<table><thead><tr><th width="317.89453125">Condition</th><th>Explanation</th></tr></thead><tbody><tr><td>[*<em>WF-INCLUDE-ONLY*</em>]</td><td>String should be only included in layer name</td></tr><tr><td>[<em>*WF-FX-DISPLAY:'Display Name'*</em>]</td><td>Excludes only if layer has effect with display name (= name in AE interface)</td></tr><tr><td>[<em>*WF-FX-MATCH:'Match Name'*</em>]</td><td>Excludes only if layer has effect with match name (= internal name)</td></tr></tbody></table>

**Example:** *\[\*WF-INCLUDE-ONLY\*]\[\*WF-FX-DISPLAY:'Transform'\*]Control*\
**Will match:** Layer with name 'Control Layer' and 'Transform' effect

## Exempt Layer from Trimming

<div align="left"><figure><img src="/files/1ivvzlx29e3O09d0u6dy" alt=""><figcaption></figcaption></figure></div>

**(Added in version 1.1)**

Adds a marker with "TTT" to the selected layers in order to exempt them from being automatically trimmed (not available via shortcut; Win: *Ctrl+Click* on the *Rename Layer/s Button*; Mac: *Cmd+Click* on the *Rename Layer/s Button*).

For more information on this, [see above](#automatic-trimming).


# Connections

## Refresh Connections

<div align="left"><img src="/files/-MQw6mKK6DVyTcli2hrH" alt=""></div>

Refreshes connections of *Precomp Clones*, *Clones in Comp*, *Group Mattes,* and *Linked Adjustment Layers* (Win: Ctrl+Alt+Q, Mac: macControl+Q).

To execute *Refresh Connections*, you need to have one of these layers selected:

* a *Precomp Clone,* or one of its contained layers, or - if it's a *Group Clone* - new group layers, not yet contained in the clone
* a *Clone in Comp* source layer  - not the clone layer itself, though
* a *Group Matte* layer, or layers contained in a group with a *Group Matte* (also: new group layers, net yet added to the *Group Matte*)
* a *Linked Adjustment Layer -* not the *Linked Layers*, though (except for when it is a new group layer, not yet contained in a *Group Linked Adjustment Layer*)

If no layer is selected, connections of all *Precomp Clones*, *Clones in Comp*, *Group Mattes* and *Linked Adjustment Layers* will be refreshed. (Depending on the number of elements, this may take a bit.)

{% hint style="info" %}
In case, something isn't refreshing correctly, you might want to try [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) on that layer.
{% endhint %}

{% hint style="info" %}
Please be aware that *Refresh Connections* is a different type of refresh than [Refresh Layout](/main-functions/layout#refresh-layout). Read up [here](/faq#refresh-functions) for more info on the difference between *Refresh Layout* and *Refresh Connections*.
{% endhint %}

### Refreshing Precomp Clones

Because not all properties of clone layers can be linked to their source layers by expressions, you need to hit *Refresh Connections* to refresh non-linkable properties of *Precomp Clones*. These properties include:

* Changed layer order
* Changed 3D renderer
* Added/deleted effects and masks
* Effects and masks order
* Changed non-linkable properties, like:
  * Certain dropdowns, sliders, or checkboxes on effects that can't be keyframed
  * Effects with a custom UI
  * A referenced layer on an effect's layer control
  * Mask modes, inverted state, motion blur, and roto bezier state
* Added/deleted properties within shape and text layers
* Added/changed/deleted parent
* Layer switches:
  * Collapse transformation
  * Quality and sampling
  * Frame blending
  * Motion blur
  * Adjustment layer
  * 3D layer
* Blending mode
* Preserve transparency
* Track matte state
* In/out point
* Start time
* Stretch

Changes to certain properties on the dedicated *Precomp Clone* effects will need *Refresh Connections* as well to be applied. (This is also noted next to the property.)

Certain comp attributes unfortunately can't be updated by *Refresh Connections*, like *Shadow Map Resolution* of the *Classic 3D* renderer, or *Render Quality* of the *Advanced 3D* renderer. To change those, please go into the clone comp and change the properties yourself.

### Refreshing Clones in Comp

On *Clones in Comp*, fewer attributes than *Precomp Clone* layers need refreshing. There is no need to refresh any changes on masks or effects anymore. However, changed layer switches, parents, blending modes and layer time properties still require refreshing.

### Refreshing Group Mattes

Use *Refresh Connections* on Group Mattes always when:

* Layers have been added/removed to/from the group
* The matte layer has been changed within the dedicated *Group Matte* effect

### Refreshing Linked Adjustment Layers

Use *Refresh Connections* on *Linked Adjustment Layers* every time effects have been added/deleted, the effects order has been changed, or non-linkable effect properties have been changed.

## Quick Refresh Connections <a href="#quick-refresh-connections-experimental" id="quick-refresh-connections-experimental"></a>

<div align="left"><img src="/files/-MQw6pKrGy48qYRwvpou" alt=""></div>

Refreshes connections faster than the regular *Refresh Connections* (Win: Alt+F2, Mac: macControl+2).

Whereas the regular *Refresh Connections* will delete all clone layers within a clone comp and replace them with new clone layers, *Quick Refresh Connections* will match all attributes of the source and clone layer. In most cases this is faster, however, not all attributes can be read (and therefore be matched) via scripting. Not matchable properties include:

* Effects with a layer control property. Whereas the referenced layer from the control can be read, its second dropdown *Source / Masks / Effects & Masks* cannot be accessed via scripting.
* Effects with a custom interface. Only actual values, like numbers, colors, layer references, etc. can be matched by *Workflower*.

To combat this, when executing *Quick Refresh Connections*, the currently selected layers will be checked for whether they contain non-readable effects, and if they do, the layers will be cloned and replaced within the clone comp. (This, however, will take a bit longer than just matching the attributes.) Be aware that only the selected layers will potentially be cloned and replaced, not other layers in the same clone comp.

When no layer is selected, Quick Refresh Connections will refresh connections of all *Precomp Clones*, *Clones in Comp*, *Linked Adjustment Layers,* and *Group Mattes* within the current com&#x70;*.*

Currently, only *Precomp Clones* will be refreshed faster when using *Quick Refresh Connections* compared to regular *Refresh Connections.* In a future release, you will also be able to refresh *Linked Adjustment Layers* faster.

(Fixed in [version 1.1](/releases#1-1) ->) ~~As of now, *Quick Refresh Connections* does **not** refresh *Layer Styles*. Please use the regular *Refresh Connections* to refresh them for the time being.~~

{% hint style="warning" %}
Because of its drawbacks, *Quick Refresh Connections* is only recommended to users that are aware of its limitations.
{% endhint %}

{% hint style="info" %}
The *Quick Refresh Connections* function, built into *Refresh Layout*, differs from the actual *Quick Refresh Connections* function. For more information, see [its chapter in Refresh Layout](/main-functions/layout#quick-refresh-clone-connections-of-selected-layers).
{% endhint %}

## Add / Remove Layer / Mask References <a href="#add-remove-layer-references" id="add-remove-layer-references"></a>

<div align="left"><figure><img src="/files/s1NOO4J9rjhOzgTAv1OQ" alt=""><figcaption></figcaption></figure></div>

Adds and removes layer references to and from *Precomp Clones*, *Matte Merge Layers,* and *Linked Adjustment Layers*. Additionally, adds and removes layer and mask references in effects, as well as references a mask to another mask (Win: Ctrl+Alt+Shift+I, Mac: no default shortcut).

{% hint style="danger" %}
*Note for Mac users and when using* [*Individual Scripts Mode*](https://workflower.constantin-maier.com/main-functions/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) *on Windows:*\
The default shortcut for this function has been removed in [version 2.0](/releases#2-0). (If you still want to use a shortcut, please set it yourself in the shortcuts panel.)
{% endhint %}

### Adding / Removing Layer References to / from Workflower Layers

First, select the layers that should be added or removed, and as the last layer, select the *Precomp Clone*, *Matte Merge Layer,* or *Linked Adjustment Layer.* Then hit *Add / Remove Layer References*.

Using this function, it's a lot faster to add multiple layers compared to just duplicating the dropdown effect on a *Precomp Clone* or *Linked Adjustment Layer* and then having to select the layers using the dropdown for each layer individually.

{% hint style="info" %}
Be aware that, on *Matte Merge Layers*, the order in which layers have to be selected, is reversed using *Add / Remove Layer References* compared to the *Merge Mattes* function. If you execute *Merge Mattes* to add new matte layers, you need to select the *Matte Merge Layer* first, then the mattes.
{% endhint %}

### Adding / Removing Layer References to / from regular Properties

As of [version 2.0](/releases#2-0), when the first selected layer has properties selected that contain a layer control (e.g. *Set Matte* effect) **AND** only two layers in total are selected, the function sets the contained layer control to the second layer (regardless of whether it's a *Precomp Clone*, *Matte Merge Layer*, or *Linked Adjustment Layer*).

You may also select the layer control property directly in AE's timeline. This might be necessary when an effect contains multiple layer controls (as otherwise all layer controls within the effect would be set).

### Adding / Removing Effect Masks

As of [version 2.1](/releases#id-2-1), when one layer is selected **AND** on it, mask/s plus effect/s are selected, sets/removes a mask reference to/from the effect.

When one layer is selected **AND** only an effect is selected, the functions removes all mask references from the effect.

### Adding Linked Masks

As of [version 2.1](/releases#id-2-1), when two layers are selected **AND** the second layer has one or multiple masks selected, the function creates a mask on the first layer which is linked by expressions to the second layer's mask (called a *Linked Mask*).

All mask transforms, regardless of the layers' transforms will be displayed correctly.

{% hint style="warning" %}
Please note that a *Linked Mask* **cannot** take variable feathering into account.
{% endhint %}

If you have an effect on the first layer selected while the mask is selected on the second layer, the function will create a *Linked Mask* on the first layer with a [mask reference set to the effect](#adding-removing-effect-masks).

#### Modifying Properties of Linked Masks

<figure><img src="/files/umiudMUj9w9mPbxNgVJk" alt=""><figcaption><p>Linked Mask Effect</p></figcaption></figure>

For each *Linked Mask*, an effect is added to the layer. You can modify various properties on a *Linked Mask*:

* ***Source Mask***: To modify the the source mask, change the *Source Mask on Layer* dropdown to the desired layer, then reveal the effect in the timeline and open up the expression of *Source Mask Index*. Change the name of the mask to your desired one:

  <figure><img src="/files/hJgTuaWC3u9nWMDO3iyq" alt=""><figcaption><p>Mask Name to be modified is selected</p></figcaption></figure>
* ***Mode/Inverted Value:*** By default, the mode and inverted state of the *Linked Mask* are being set independently from the source mask. Adjust those properties directly on the *Linked Mask* itself (not the effect). To continually copy those properties from the source mask, change the dropdown *Mode/Inverted Values* to *Copy*. To update the values, [Refresh Layout](/main-functions/layout#refresh-layout) needs to be executed.
* ***Feather/Expansion Values:*** By default, feather/expansion values are copied from the source mask. You have the option to copy those values from either comp size or layer size, i.e. the former will calculate the values on the source mask to comp size (as if the layer has *Collapse Transformation* enabled), whereas the latter will take layer transforms into account (as if no *Collapse Transformation* is enabled). Additionally, you can select to use custom values. You may modify those on the *Linked Mask* itself then.
* ***Opacity Value:*** By default, the opacity value will be copied from the source mask. You may also use a custom value and modify this one on the *Linked Mask* itself.

You can also hide the *Linked Mask* quickly by disabling the *Linked Mask* effect.

#### Deleting Linked Masks

When you execute [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) while having a mask selected, *Workflower* will remove the mask as well as all [Linked Masks](/main-functions/connections#adding-linked-masks) referencing the mask (and their corresponding effect).

Additionally, when you execute [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) while having a [Linked Mask](/main-functions/connections#adding-linked-masks) or its corresponding effect selected, *Workflower* will remove the *Linked Mask* as well as the effect.

## Link / Unlink Properties

<div align="left"><img src="/files/-MQw6sp7HX1FQIsTwbj0" alt=""></div>

Links or unlinks properties of selected *Precomp Clones* and *Linked Adjustment Layers* (Win: Ctrl+Alt+Shift+0; Mac: no default shortcut).

![An Unlinked Precomp Clone, as indicated by the  ：Ｕ  ： Icon](/files/-MU-VmwVBJZG293QmpTQ)

### Using Link / Unlink Properties

When you're done working a *Precomp Clone* or *Linked Adjustment Layer*, execute *Link / Unlink Properties* to unlink all properties in order to work faster since expressions slow down your performance. When you want to come back to work on your *Precomp Clone* or *Linked Adjustment Layer*, execute *Link / Unlink Properties* again to link the properties.

To (un)link a *Precomp Clone*, you need to have the *Precomp Clone* or one of its contained layers selected to execute the function. To (un)link a *Linked Adjustment Layer*, you need to have the Linked *Adjustment Layer* selected (not one of the *Linked Layers*, though).

### Link / Unlink all Properties in Comp

![Link / Unlink all Properties Dialog](/files/-MUEEsW2jYkdpKXapEtZ)

If no layer is selected and *Link / Unlink Properties* is executed, properties of all *Precomp Clones* and *Linked Adjustment Layers* in the current comp (or the entire project) can be linked/unlinked. This is useful when you, for example, want to render and all elements should be unlinked to get the maximum render performance. Link all properties again when you get back to working on the comp.


# Scripting API \[Beta]

As of [version 2.0](/releases#2-0), *Workflower* has its own scripting **API in beta** to automate all kinds of processes in *After Effects* + *Workflower*.

{% hint style="warning" %}
**IMPORTANT:** As of [version 2.5.1](/releases#id-2-5), the scripting API variable has been changed from ***wfAPI*** to ***workflowerScriptAPI*** in order to prevent possible issues stemming from short global variables. Please adapt your scripts to this change. The legacy variable *wfAPI* is currently still active but will be disabled in the future. (You will always be able to use the old variable in coming versions by going to *Settings > System > Use Legacy Scripting API Variable wfAPI*.)
{% endhint %}

{% hint style="danger" %}
Please be aware that the **API is experimental** at the moment and has to be used with caution! Some functions might not work as expected.

Also, the API is still very limited but this will change in the future as more functions will get added.
{% endhint %}

## API Variable

The API variable (a global variable) is called:

```
workflowerScriptAPI
```

*Workflower* needs to have been started at least once in your current session for the API variable to be active.

You can easily check whether the API exists, like this (and if it doesn't exist, just open and close the ScriptUI Panel, so the variable gets established):

{% code lineNumbers="true" %}

```javascript
// FUNCTION: Check whether Workflower API Variable exists
function workflowerScriptAPIExists(){
    
    // If it exists --> Return true
    if (typeof workflowerScriptAPI !== 'undefined'){
        return true;
    }
    
    // Check whether the ScriptUI Panel is installed (& return false if not)
    var wfMenuID = app.findMenuCommandId('Workflower ScriptUI Panel.jsxbin');
    if (!wfMenuID){
        return false;
    }
    
    // Open & Close ScriptUI Panel to establish API Variable
    app.executeCommand(wfMenuID);
    app.executeCommand(wfMenuID);
    
    // If API Variable now exists, return true, else false
    if (typeof workflowerScriptAPI !== 'undefined'){
        return true;
    } else {
        return false;
    }

}
```

{% endcode %}

## How to use API Functions

The *Workflower* functions listed below are exposed to the API. Just call them and use their arguments if you want to.

If a parameter is undefined, the default execution value is used.

### Using Functions in Non-Active Comps

Currently, it is recommended to **only use API functions in your active comp**. They theoretically work when processing other comps but unexpected behaviors can occur!

The exception to this is [**workflowerScriptAPI.refreshLayout()**](#workflowerscriptapi.refreshlayout) and [**workflowerScriptAPI.refreshLayouts()**](#workflowerscriptapi.refreshlayouts) which should execute the other comps properly when fed into the function.

So to be safe when using all other functions, always check whether the comp you want to work on is active. Like this:

<pre class="language-javascript"><code class="lang-javascript">// FUNCTION: Start the Workflower Execution
<strong>function startWfExecution(elementsToProcess){
</strong><strong>
</strong><strong>    // Get Comp to Process from Element
</strong><strong>    var compToProcess;
</strong><strong>    if (elementsToProcess[0] instanceof CompItem){
</strong><strong>        compToProcess = elementsToProcess[0];
</strong><strong>    } else {
</strong><strong>        compToProcess = elementsToProcess[0].containingComp;
</strong><strong>    }
</strong><strong>
</strong><strong>    // Check Active Comp &#x26; Change if needed
</strong><strong>    var saveOrigActiveItem = app.project.activeItem;
</strong>    if (compToProcess !== app.project.activeItem){
        compToProcess.openInViewer();
    }

    // Return with Original Active Item, so we can revert back to it later
    return saveOrigActiveItem;
    
}

// FUNCTION: End the Workflower Execution
function endWfExecution(saveOrigActiveItem){

    // Switch Active Comp back if needed
    if (saveOrigActiveItem !== app.project.activeItem){
        saveOrigActiveItem.openInViewer();
    }
    
}

// Execute Workflower Action
app.beginUndoGroup("Create Multi-Layer Matte");
var layersToMatteTo = [layer1, layer2, layer3];
var startWfInfo = startWfExecution(layersToMatteTo);
workflowerScriptAPI.createMatte(layersToMatteTo);
endWfExecution(startWfInfo);
app.endUndoGroup();
</code></pre>

### Undo Groups

When calling a function through the API, *Workflower* will **not** create any undo groups to ensure that you can wrap everything in your own undo groups and don't get any undo mismatch errors.

The only exception to this is [**workflowerScriptAPI.execute()**](#workflowerscriptapi.execute) which lets you define whether you want *Workflower* to create undo groups or not.

### Error Handling

{% hint style="danger" %}
At the moment, the *Workflower* API will **not** throw any custom errors. So always double-check with the user guide that the function is called properly. If you come across any unexpected errors, please contact customer support.
{% endhint %}

## Attributes

### workflowerScriptAPI.<mark style="color:green;">scriptVersion</mark>

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.scriptVersion
```

{% endcode %}

The currently installed version number of *Workflower*.

#### Type

String of script version number; read-only

### workflowerScriptAPI.<mark style="color:green;">apiVersion</mark>

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.apiVersion
```

{% endcode %}

The current version number of the *Workflower* API.

#### Type

String of API version number; read-only

## System Check Functions

### workflowerScriptAPI.<mark style="color:orange;">scriptExists</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.scriptExists()
```

{% endcode %}

Checks whether the *Workflower* script exists.

#### Returns

Boolean

### workflowerScriptAPI.<mark style="color:orange;">scriptUiPanelExists</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.scriptUiPanelExists()
```

{% endcode %}

Checks whether the *Workflower* ScriptUI Panel exists.

#### Returns

Boolean

## Layer & Group Check Functions

### workflowerScriptAPI.<mark style="color:orange;">cleanNames</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.cleanNames(layerNames)
```

{% endcode %}

Cleans layer names, i.e. removes all special characters added by *Workflower* as well as the indent.

#### Parameters

* **layerNames:** *Array of layer name strings* to be cleaned.

#### Returns

Array of layer name strings

### workflowerScriptAPI.<mark style="color:orange;">isWfComp</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.isWfComp(comp)
```

{% endcode %}

Checks whether a given comp is a *Workflower* comp.

#### Parameters

* **comp:** *Comp object* to be checked.

#### Returns

Boolean

### workflowerScriptAPI.<mark style="color:orange;">isGroupHeader</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.isGroupHeader(layer)
```

{% endcode %}

Checks whether a given layer is a group header.

#### Parameters

* **layer:** *Layer object* to be checked.

#### Returns

Boolean

### workflowerScriptAPI.<mark style="color:orange;">getAllGroupLayers</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.getAllGroupLayers(groupHeader[, excludeStartersFooters])
```

{% endcode %}

Gets all group layers to a given group header.

#### Parameters

* **groupHeader:** *Layer object* of the group header.
* **excludeStartersFooters:** Optional. *Boolean* to determine whether returning array should exclude *Workflower's* [internal shy'd starter and footer layers](/group-functions/create-and-duplicate-groups#additional-layers-to-keep-in-mind). Default is false.

#### Returns

Array of layer objects of the group layers

### workflowerScriptAPI.<mark style="color:orange;">isInTagID</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.isInTagID(layer, tagID)
```

{% endcode %}

Checks whether a given layer is within a [tag group](/layer-functions/tagging-layers) with a certain ID (0 - 16). Added in script version 2.04 / API version 0.2.

#### Parameters

* **layer:** *Layer object* to be checked.
* **tagID:** *Integer* of tag ID (0 - 16).

#### Returns

Boolean

### workflowerScriptAPI.<mark style="color:orange;">isInTagName</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.isInTagName(layer, tagName)
```

{% endcode %}

Checks whether a given layer is within a [tag group](/layer-functions/tagging-layers) with a certain name. Added in script version 2.04 / API version 0.2.

#### Parameters

* **layer:** *Layer object* to be checked.
* **tagName:** *String* of tag name.

#### Returns

Boolean

## Major Functions

### workflowerScriptAPI.<mark style="color:orange;">execute</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.execute(functionName[, doCreateUndoGroup])
```

{% endcode %}

Executes a function, as specified by the function name. Names are identical to [KBar function names](/installation#function-names).

{% hint style="warning" %}
This function only calls the regular *Workflower* functions as they are called by the user interface. The other dedicated API functions, on the other hand, let you define custom arguments as well.
{% endhint %}

{% hint style="info" %}
workflowerScriptAP&#x49;*.execute()* is the only API function that allows for the automatic creation of Workflower's regular undo groups. Set *doCreateUndoGroup* to *true* if you want to force it to create undo groups.
{% endhint %}

#### Parameters

* **functionName:** *String* of a function name to be executed. Names are identical to [KBar function names](/installation#function-names).&#x20;
* **doCreateUndoGroup:** Optional. *Boolean* to define whether you want Workflower to create its regular undo groups. Default is false.

#### Returns

Nothing

### workflowerScriptAPI.<mark style="color:orange;">kbarExecute</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.kbarExecute(functionName)
```

{% endcode %}

Allows to execute a function, as specified by the function name, via KBar's *Run Scriplet* feature. Names are identical to [KBar function names](/installation#function-names).

Since [**workflowerScriptAPI.execute()**](#workflowerscriptapi.execute) cannot execute via KBar's *Run Scriptlet* feature, *workflowerScriptAPI.kbarExecute()* is needed instead.

{% hint style="info" %}
workflowerScriptAP&#x49;*.kbarExecute()* always creates undo groups compared to the other API functions.
{% endhint %}

workflowerScriptAP&#x49;*.kbarExecute()* **is only meant to execute a single command** via KBar's *Run Scriptlet* feature. If you want to run multiple commands, you need to use *workflowerScriptAPI.execute()* or any other function listed here, wrap the commands within a function and call the function with app.setTimeout(), so for example:

```javascript
function createAndStoreGroup(){
    app.beginUndoGroup("Create and Store Group");
    var layers = app.project.activeItem.selectedLayers;
    var newGroupHeader = workflowerScriptAPI.createGroup(layers, "New Group", false, false, false);
    newGroupHeader.selected = true;
    workflowerScriptAPI.execute("storeLayers1", false);
    app.endUndoGroup();
}
app.setTimeout(createAndStoreGroup, 1);
```

#### Parameters

* **functionName:** *String* of a function name to be executed. Names are identical to [KBar function names](/installation#function-names).&#x20;

#### Returns

Nothing

### workflowerScriptAPI.<mark style="color:orange;">refreshLayout</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.refreshLayout([comp, doNotLabelLayersOutsideToNone])
```

{% endcode %}

Refreshes the comp layout.

#### Parameters

* **comp:** Optional. *Comp object* to be refreshed. Default is current comp.
* **doNotLabelLayersOutsideToNone:** Optional. Sets the current comp to [not label layers outside groups to 'None'](/layer-functions/relabeling#change-labeling-layers-outside-groups-to-none-in-active-comp). Default is false. Added in script version 2.03 / API version 0.11.

#### Returns

Nothing

### workflowerScriptAPI.<mark style="color:orange;">refreshLayouts</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.refreshLayouts(comps[, doNotLabelLayersOutsideToNone])
```

{% endcode %}

Refreshes the layout of multiple comps. Added in script version 2.04 / API version 0.2.

#### Parameters

* **comps:** *Array of comp objects* to be refreshed. Default is none.
* **doNotLabelLayersOutsideToNone:** Optional. Sets the comps to [not label layers outside groups to 'None'](/layer-functions/relabeling#change-labeling-layers-outside-groups-to-none-in-active-comp). Default is false.&#x20;

#### Returns

Nothing

### workflowerScriptAPI.<mark style="color:orange;">createGroup</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.createGroup(groupLayers[, groupName, parentGroup, groupOpacity, groupTrim])
```

{% endcode %}

Creates a *Workflower* group.

#### Parameters

* **groupLayers:** *Array of layer objects* to be grouped.
* **groupName:** Optional. *String* of the group name. Default is *GROUP \[Increment]*.
* **parentGroup:** Optional. *Boolean* to parent the group. Default is false.
* **groupOpacity:** Optional. *Boolean* to use group opacity. Default is false.
* **groupTrim:** Optional. *Boolean* to use group trim. Default is false.

#### Returns

Layer object of the group header

#### Example

This script creates a group and moves the group to the beginning of the composition.

{% code overflow="wrap" %}

```javascript
// Define Layer Array to be grouped
var layersToGroup = [layer1, layer2, layer3];

// Create the new Group with our Layer Array
var newHeader = workflowerScriptAPI.createGroup(layersToGroup, "My New Group", true, false, false);

// Get All Group Layers, so we can move them (including internal Starters & Footers)
var allGroupLayers = workflowerScriptAPI.getAllGroupLayers(newHeader, false);

// Move all Group Layers (& make sure to unlock + re-lock Layers since Starters & Footers are locked Layers)
for (var i = allGroupLayers.length - 1; i >= 0; i--){
    var groupLayer = allGroupLayers[i];
    var wasLocked = groupLayer.locked;
    groupLayer.locked = false;
    groupLayer.moveToBeginning();
    groupLayer.locked = wasLocked;
}

// Afterwards, refresh Layout (in case, Indent or similar has to be adjusted)
workflowerScriptAPI.refreshLayout();
```

{% endcode %}

### workflowerScriptAPI.<mark style="color:orange;">selectGroups</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.selectGroups(groupHeaders)
```

{% endcode %}

Selects *Workflower* groups.

#### Parameters

* **groupHeaders:** *Array of group header layer objects* to be selected.

#### Returns

Nothing

### workflowerScriptAPI.<mark style="color:orange;">createMatte</mark>()

{% code overflow="wrap" %}

```javascript
workflowerScriptAPI.createMatte(layers)
```

{% endcode %}

Creates a matte to a given set of layers. On regular layers, creates a matte to them. On group headers, creates a group matte.

#### Parameters

* **layers:** *Array of layer objects* for the matte to be created to.

#### Returns

Layer object of the created matte


# Create and Duplicate Groups

## Create Group

<div align="left"><img src="/files/-MQw6whqZp2T5_-vEnrq" alt=""></div>

Creates a group (Win: Shift+F1; Mac: macControl+1).

!['Create Group' Dialog](/files/lqJGpw5zwygaGg1CuSBm)

Select the desired layers and then hit *Create Group*. If the layers are spread out across the comp, they will be moved beneath each other.

As of [version 1.1](/releases#1-1), you can also create an empty group. With no layer selected, execute *Create Group*.

### Additional Layers to Keep in Mind

In order for *Workflower* to know what's inside the group, two shy'd layers will be created to define the start and end of the group: a top and bottom layer. These layers also create visual lines above and below the layers in the timeline (which shy'd layers always create) and thereby make it easier for the user to see the group's boundaries.

![Left: A Group with visual Lines above and below; Right: A Group with Top and Bottom Layer revealed](/files/-MQvk7-h7XIsnnrvto9w)

Be aware that, if you want to move the group in the timeline, the shy'd top and bottom layer must be moved as well. Otherwise, if all layers would be moved without top and bottom, the group would simply be emptied and the layers would become 'group-less' after executing *Refresh Layout*. That's why you always must use [Select Group](/group-functions/collapse-and-select-groups) in order to select the entire group if you want to move it. If you want to delete a group, use [Delete Layer / Clone / Group](/layer-functions/miscellaneous-layer-functions#delete-layer-clone-group).

### Moving Groups/Layers below a Group

Let's say you have a structure like:

**GROUP 1**\
**GROUP 2**\
**GROUP 3**

...and you want to move GROUP 3 between GROUP 1 and GROUP 2. However, when you select GROUP 3 (using *Select Group*), move it there and execute *Refresh Layout*, it's moved into GROUP 1 as a sub-group:

**GROUP 1**\
&#x20;     **-> GROUP 3**\
**GROUP 2**

To avoid this, you have to do this: When you're moving GROUP 3 upwards of GROUP 2, you have to pay attention to the blue line (which is indicating where you're moving the layers to). There are two possible states of the line above GROUP 2:

| State 1                                                                                                                                                | State 2                                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <p><strong>GROUP 1</strong><br><br><mark style="color:blue;"><strong>---------------------------------</strong></mark><br><strong>GROUP 2</strong></p> | <p><strong>GROUP 1</strong><br><mark style="color:blue;"><strong>---------------------------------</strong></mark><br><br><strong>GROUP 2</strong></p> |

You'll need to release the layers in state 1 where the line is lower. State 2 on the other hand would move the layers into the GROUP 1. If you release them in state 1 and execute *Refresh Layout*, the structure will look like this:

**GROUP 1**\
**GROUP 3**\
**GROUP 2**

### Group Header at average Position

When you enable *Parent Layers to Group* on the *Create Group* dialog, the group header will be created at the average position of all group layers' anchor points. (This will only take the position at the current time into account.)

When you want to move the header to the average position after having created the group, select the group header and execute [Center Group Header](/group-functions/miscellaneous-group-functions#center-group-header).

### Groups in 3D Space

A group header, if not turned into 3D, will break AE's 3D space. If you have layers in different groups that are supposed to intersect, you need to turn the header into 3D. If you have a [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers) or [Group Matte](/layer-functions/matting#group-matte) below the group header, you need to turn them into 3D as well so that 3D space is retained. (The 3D state of the *Linked Adjustment Layer* doesn't affect how the effects are applied to the layers.)

As of [version 1.1](/releases), *Workflower* will disable the [shy'd layer above every group header](#additional-layers-to-keep-in-mind) if the group header is turned into 3D. This will ensure that 3D space is retained across groups since disabled 2D layers don't break 3D space (enabled 2D layers do on the other hand).

The shy'd layer above every group header is generally used to display potential error messages (when moving layers illegally, for example). Typically, the layer is enabled but set to 0% opacity and only set to 100% opacity once an error occurs. Error messages can still be displayed - the shy'd layer above the topmost 2D group header will be used instead. (When you don't have any 2D group header in your comp, no errors can be displayed.)

(Outdated since [version 1.1](/releases#1-1) ->) ~~In order to retain the 3D space across groups, you need to do the following:~~

1. ~~Turn the group header/s into a 3D layer.~~
2. ~~Go to *Settings / Miscellaneous* and turn **off**~~ ~~*Show Warning: Group Header removed from Content*. By default, the shy'd layer above the group header is turned on, so it can display the said error message. However, since the layer is enabled (but typically set to 0% opacity), it will break AE's 3D space. By deactivating this setting (and thereby the layer), we can retain the 3D space. Just be aware that you won't get an error message anymore when moving group layers illegally.~~

### Create Project Item Folder

As of [version 2.5](/releases#id-2-5), you can create an item folder from all currently selected project items (as opposed to AE's function which does NOT create a folder that contains selected items).

To access this feature, select your project items, then right-click on the *Create Group*-button and choose *Create Project Item Folder*.

## Duplicate Layer / Clone / Group <a href="#duplicate-group" id="duplicate-group"></a>

<div align="left"><img src="/files/-MQw7-mLy0JQ6XFKfUe0" alt=""></div>

Duplicates groups, regular layers, *Precomp Clones*, or project panel items (Win: Ctrl+Alt+Shift+M, Mac: no default shortcut).

Just selecting all group layers and then using AE's *Duplicate* won't work, since the additional, shy'd layers that are needed for the group to function, won't be duplicated. That's why you need to use *Duplicate Group* to achieve this.

Simply select a group header to duplicate the entire group.

As of [version 1.1](/releases#1-1), you can also select regular layers to only duplicate layers.

As of [version 2.0.4](/releases#id-2-0-4), you can also select project panel items to duplicate those.

### Duplicated Layer Attributes <a href="#additional-features" id="additional-features"></a>

As of [version 1.1](/releases#1-1), *Duplicate Group* will update the following attributes:

* [Precomp Clones](/layer-functions/cloning#clone-and-precomp) to their duplicated layers
  * However, when you just duplicate regular layers and the referenced layers of the clone aren't within the selection, *Workflower* will turn the *Precomp Clone* into a [Dependent Clone](/layer-functions/cloning#duplicating-a-precomp-clone).
* [Group Mattes](/layer-functions/matting#group-matte) to the duplicated group
* [Group Linked Adjustment Layers](/layer-functions/adjustment-layers#group-linked-adjustment-layers) to the duplicated group, as well as regular [Linked Adjustment Layers](/layer-functions/adjustment-layers#create-linked-adjustment-layer) to their corresponding duplicates
* Parents to their corresponding duplicates
* All layer controls within effects to the corresponding duplicate layers
* All references within expressions to duplicates
  * Enabled by default. Go to *Settings > Miscellaneous* to disable it. You might want to disable this because updating expressions can cause an internal error within the expressions. If you want to keep this enabled and encounter the error, undo your action and then try executing *Duplicate Group* again. You might have to do this a couple of times.
* When using [naming on dependency](/layer-functions/renaming#rename-on-dependency), *Workflower* will try its best to update the duplicated layer name so that the number incrementation will always happen within the same name level. (However, *Workflower* will only update the name upwards but not downwards the layer hierarchy.)
* A new label color for every duplicated group
* When you duplicate a layer with a track matte but the track matte layer is not within the selection, the track matte state will be removed.
* As of [version 2.5](/releases#id-2-5), when the duplicated selection contains a a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) with pre-render, the pre-render will be removed on the duplicate (as this will be seen as a fresh, independent clone from the original).
* When you duplicate multiple regular layers, the duplicates will all be moved beneath each other.
* When you duplicate a layer with a [Shy Matte](/layer-functions/matting#shy-mattes) above, the *Shy Matte* will be duplicated as well.

### Duplicate Project Panel Items

As of [version 2.0.4](/releases#id-2-0-4), you can duplicate project panel items by selecting them and executing [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group).

{% hint style="warning" %}
**Important:** This will only work when you execute the function from the menu (not via shortcut) AND you don't have any layers in your currently active comp selected (otherwise *Workflower* will duplicate the selected layers)! As of [version 2.5](/releases#id-2-5), you can also right-click on the *Duplicate Layer / Clone / Group*-button to access this function.
{% endhint %}

When you duplicate a comp, it will open the timeline of the duplicated comp.

Additionally, it will make all duplicated [Precomp Clones](/layer-functions/cloning#clone-and-precomp) independent from the original clone comps and update all [Dependent Clones](/layer-functions/cloning#duplicating-a-precomp-clone) in the duplicated comp to the new clone comps. This is therefore the recommended way to duplicate a comp containing *Precomp Clones* as these attributes **aren't** updated when done manually.

As of [version 2.5.1](/releases#id-2-5-1), *Workflower* features the option to replace precomps in new comps with duplicated precomps (a.k.a. *true comp duplication*). **IMPORTANT:** For this to work, you need to have the desired precomps (i.e. the ones to be duplicated too) in the project panel selected as well.

## Duplicate & Replace Names

**(Added in** [**version 2.5.1**](/releases#id-2-5-1)**)**

Duplicates layers and groups and replaces given names in all layer names of the duplicates.

<figure><img src="/files/vyBmsJGNQABaXX7Noi6L" alt="" width="316"><figcaption></figcaption></figure>

To access this feature, right-click on the [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group) button, then select *Duplicate & Replace Names*.

This feature is identical to [Duplicate Layer / Clone / Group](#duplicate-group) with the difference of being able to replace layer names.


# Collapse and Select Groups

## Expand / Collapse Group

<div align="left"><img src="/files/-MQw77iPCwzi96lSSaY_" alt=""></div>

Expands or collapses a group (Win+Mac: Shift+X).&#x20;

![Left: Group 'CIRCLES' expanded; Right: Group 'CIRLCES' collapsed](/files/6OTRi8dej2sFxjQdnlGI)

You can have a layer within the group or the group header itself selected to expand/collapse the group. The expanded/collapsed state of sub-groups will be remembered when a higher group will be collapsed and then expanded again.

### Expanding / Collapsing all Groups

If you have no layer selected and you execute *Expand / Collapse Group*, all groups at the upper level (no sub-groups) will collapse. If you hit *Expand / Collapse Group* again, all groups at the upper level will expand.

If you want to expand / collapse all sub-groups, you can use the [dedicated function](#undefined).

### Refreshing Layout when Expanding / Collapsing Groups

Most functions of *Workflower* refresh the layout of the current comp too (see [Refresh Layout](/main-functions/layout#refresh-layout)). When expanding/collapsing groups, however, only the layout of comps with less than 25 layers will be refreshed by default. This is because expanding/collapsing can get comparatively slow in bigger comps if *Refresh Layout* would have to be executed as well.

You can deactivate this behavior, too, if you don't like it, or choose to not refresh the layout even in smaller comps as well, by going to the *Layout Settings* and changing *Refresh Layout when Expanding/Collapsing/Selecting/Renaming*.

### Expand / Collapse a Group by Double-Clicking

**(Added in** [**version 2.0**](/releases#2-0)**)**

You can also expand or collapse a group simply by double-clicking on the group header.

For this to work, you need the *WQ* plug-in installed that you find in your installation files. For installation instructions, please read the user guide chapter on [Installation](/installation#step-1-installing-the-script).

Please note that by double-clicking the group header, you can only expand/collapse the group if you have a single group header selected. If you want to expand/collapse multiple groups or you want to expand/collapse all groups, you have to execute *Workflower's Expand / Collapse Group* function.

Also, be aware that the double-clicking behavior only is active when one layer is selected. So, let's say you select a collapsed group, then you move it and afterwards you want to expand it again by double-clicking but since all group layers are still selected, the function won't expand the group. You will have to deselect all layers beforehand and then you can doube-click the group header to expand the group.

## Expand / Collapse all Sub-Groups

<div align="left"><img src="/files/HdkWJm7DhzaQzeFsiB1w" alt=""></div>

**(Added in** [**version 1.1**](/releases)**)**

Expands or collapses all sub-groups (Win: Ctrl+Alt+Shift, Mac: no default shortcut).

Sometimes you just quickly want to hide all sub-groups to get a clearer view of your comp. That's what *Expand / Collapse All Sub-Groups* is for. It will collapse or expand all sub-groups that are contained in higher sub-groups as well.

## Select Group

<div align="left"><img src="/files/-MQw7ACPGcXvG6MAc8uA" alt=""></div>

Selects groups or *Shy Mattes* (Win+Mac: Shift+W, Win+Mac \[French]: Shift+Z).

{% hint style="info" %}
**ATTENTION:** Due to AE 26+ now occupying Shift+D, the default shortcut for *Select Group* has been changed to Shift+W (on French keyboards to Shift+Z).
{% endhint %}

Because of the additional shy'd layers needed for a group (see [Create Group](/group-functions/create-and-duplicate-groups#create-group) for an explanation), you cannot simply select all (visible) group layers in order to move a group. That's why you always have to use the *Select Group* function.

![Left: The Group as it generally looks like; Right: Additional shy'd Layers revealed that need to be selected too](/files/-MQvk7-h7XIsnnrvto9w)

### Selection Condition

Select either a group header or a layer contained in the group and execute *Select Group*.

There are two exceptions when you **cannot** just have a layer contained in the group selected:

1. *Select Group* will not select the containing group to a selected layer when you additionally have a group header selected that is contained within the same group. In this situation, it will only select the group of the selected group header in addition to the existing selection.
2. When you have a group layer selected that has a [Shy Matte](/layer-functions/matting#shying-of-matte-merge-layers) above, *Select Group* will only select the *Shy Matte* above in addition to the existing selection. [See below for more info.](#undefined)

(Outdated since [version 1.1](/releases#1-1) ->) ~~Compared to most other group functions, *Select Group* won't work when only having a group layer selected. You need to have the group header selected to use *Select Group*. (This is because when you are within a group, you might want to select a handful of layers - of which some might be a sub-group header and some not. If only a group would be needed to select the entire group, the higher group would then be selected instead of the sub-groups.)~~

### Selection Icon

An \[   ] icon will be shown next to the group header name for a brief time to indicate that the group is selected. This will, however, slow down selecting the group by a little bit.

As of [version 1.1](/releases#1-1), you can choose for the icon to stay until the next time you execute *Refresh Layout* too. (Go to *Settings > Icons* to enable this setting.) This will not slow down the execution of the function. However, it might confuse you since the \[   ] icon will stay even after deselecting the group if you don't execute *Refresh Layout* beforehand (and therefore make you falsely think the group would be still selected).

If you don't want the icon to be shown at all, you can also go to *Settings >* *Icons* to disable it.

{% hint style="danger" %}
When executing *Select Group* on a group with [effects on its header](/layer-functions/adjustment-layers#applying-effects-to-the-group-header), this might cause "ghost" expression errors to occur (= not actual errors, however ones that are being displayed). This is because upon executing *Select Group*, the icon \[   ] will be displayed briefly next to the group header name in order to indicate it's being selected (and therefore confuse the expressions of the *Linked Effects*). To avoid the errors, you can go to the *Icon Settings* and disable the icon when selecting a group.
{% endhint %}

### Selecting all Layers

If you have no layer selected and you execute *Select Group*, all groups and all layers outside of groups will be selected. This is equivalent to AE's *Select All*, however, AE's function **DOES NOT** select shy'd layers, so the additional, shy'd layers for the *Workflower* groups to function as well as the content of collapsed groups will not be selected. So whenever you want to select all layers in your comp, use *Workflower*'s function instead.

### Selecting Keyframe Label Groups

**(Added in** [**version 2.0**](/releases#2-0)**)**

When using AE 22.6 and above, you can also select keyframe label groups. Instead of a layer, simply select a keyframe (or multiple ones) and execute *Select Group*. Now all keyframes in the comp with the selected label color/s will be selected.

### Refreshing Layout when Selecting Groups

Most functions of *Workflower* refresh the layout of the current comp too (see [Refresh Layout](/main-functions/layout#refresh-layout)). When selecting groups, however, only the layout of comps with less than 25 layers will be refreshed by default. This is because selecting groups can get comparatively slow in bigger comps if *Refresh Layout* would have to be executed as well.

You can deactivate this behavior, too, if you don't like it, or choose to not refresh the layout even in smaller comps as well, by going to the *Layout Settings* and changing *Refresh Layout when Expanding/Collapsing/Selecting/Renaming*.

### Select a Group by Alt/Option+Double-Clicking

**(Added in** [**version 2.0**](/releases#2-0)**)**

You can also select a group simply by *Alt/Option*+double-clicking on the group header.

For this to work, you need the *WQ* plug-in installed that you find in your installation files. For installation instructions, please read the user guide chapter on [Installation](/installation#step-1-installing-the-script).

Please note that by *Alt/Option*+double-clicking the group header, you can only select the group if you have a single group header selected. If you want to select multiple groups or you want to select all groups/layers, you have to execute *Workflower's Select Group* function.

Also, be aware that the double-clicking behavior only is active when one layer is selected. So, let's say you select a collapsed group, then you move it and afterwards you want to expand it again by double-clicking but since all group layers are still selected, the function won't expand the group. You will have to deselect all layers beforehand and then you can doube-click the group header to expand the group.

### Selecting Shy Mattes

*<mark style="color:orange;">**(Only applicable if using AE versions below 23 without Selectable Track Mattes)**</mark>*

As of [version 1.1](/releases#1-1), *Select Group* will select [Shy Mattes](/layer-functions/matting#shy-mattes) as well.

First, select the group layer which has a *Shy Matte* above, then execute *Select Group* and *Workflower* will additionally select the *Shy Matte*.&#x20;

{% hint style="info" %}
For more information on the selection behavior, please read the [chapter on Shy Mattes](/layer-functions/matting#shy-mattes).
{% endhint %}


# Delete, Ungroup and Dissolve Groups

## Delete Layer / Clone / Group / Pre-Render <a href="#delete-layer-clone-group" id="delete-layer-clone-group"></a>

<div align="left"><img src="/files/-MQw73SWKu85xPFR_5yC" alt=""></div>

Deletes regular layers, *Precomp Clones,* groups, or pre-renders (Win: Shift+FwdDel, Mac: Shift+Delete).

Select either a regular layer, a *Precomp Clone* layer, a group header, or a layer holding a pre-render and then execute *Delete Layer / Clone / Group / Pre-Render*.

### Deleting Regular Layers

If you delete a regular layer that is contained in a *Precomp Clone*, it will remove the layer from the *Precomp Clone* as well.

If you delete a track matte layer, it will remove the track matte state from the layer below.

Otherwise, it is identical to AE's *Delete* when deleting regular layers.

### Deleting Precomp Clones

If you delete a *Precomp Clone*, the function will also delete the clone comp item from the project window. If you would delete the *Precomp Clone* using AE's *Delete*, only the layer within the comp, not the clone comp itself would be deleted. Because of that, expression errors will appear since the expressions on the clone layers cannot reference the *Precomp Clone* anymore. That's why it is always advised to use *Delete Layer / Clone / Group* when deleting a *Precomp Clone*.

{% hint style="info" %}
In case, unused clone comps already exist and expression errors accumulate, open up the settings, go to the *Cloning* tab and click *Delete Unused Precomp Clones*.
{% endhint %}

### Deleting Groups

Just deleting all group layers individually still would leave the additional, shy'd layers from the group, so always use *Delete Layer / Clone / Group* to delete a group, or alternatively use *Select Group* and then use AE's *Delete*.

### Deleting or Unsetting Pre-Renders

As of [version 2.5](/releases#id-2-5), the function also deletes or unsets pre-renders. To do this, select the desired layers with pre-render and execute the function.

It will give you the option to either:

* Unset the pre-render but keep the layer as well as the pre-render file on disk
* Remove the layer but keep the pre-render file on disk
* Remove the layer as well as remove the pre-render file on disk

### Deleting Linked Masks

As of [version 2.5](/releases#id-2-5), when you execute *Delete Layer / Clone / Group* while having a mask selected, *Workflower* will remove the mask as well as all [Linked Masks](/main-functions/connections#adding-linked-masks) referencing the mask (and their corresponding effect).

Additionally, when you execute *Delete Layer / Clone / Group* while having a [Linked Mask](/main-functions/connections#adding-linked-masks) or its corresponding effect selected, *Workflower* will remove the *Linked Mask* as well as the effect.

## Ungroup Layers

<div align="left"><img src="/files/-MQw7Da0KQP0uuQ0irOA" alt=""></div>

Releases layers from a group, or a group from another group (Win+Mac: Shift+H).

{% hint style="info" %}
*Note for Mac users and when using* [*Individual Scripts Mode*](https://workflower.constantin-maier.com/group-functions/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) *on Windows:*\
The default shortcut for this function has been added in [version 1.1](/releases#1-1).
{% endhint %}

![Left: Layers in Sub-Group at the End of a higher Group; Center: Layers moved down and now appear two Levels upwards; Right: Layers moved using 'Ungroup Layers' and now appear one Level upwards](/files/-MSY2ZNhRQMVUX4y0sWo)

All selected layers or groups will be ungrouped and moved below the group they were contained in. This is especially useful when the containing group is right at the bottom of another group. If you would move the layers below by yourself and then execute *Refresh Layout*, the layers would then be shifted two levels upwards instead of one. In these circumstances, use *Ungroup* instead to only move them one level upwards.

As of [version 1.1](/releases#1-1), if a group at the highest level is selected, *Ungroup Layers* will move the entire group after the next group at the highest level.

(Removed in [version 1.1](/releases#1-1) ->) ~~If a group is selected and is at the highest level already, the group will be dissolved completely.~~

## Dissolve Group

<div align="left"><img src="/files/-MWW5HYlAJnFLkBuGkfZ" alt=""></div>

Dissolves a group (Win: Ctrl+Shift+FwdDel, Mac: no default shortcut).

Select either the group header or a layer contained in the group and then execute *Dissolve Group*. It will remove the group but will not delete all contained layers, as [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) would. It will release the layers one level upwards, either to a higher group or move them out of groups completely.

### Dissolve Project Item Folder

As of [version 2.5](/releases#id-2-5), you can dissolve your currently selected item folder in the project panel.

To access this feature, select your project item, then right-click on the *Dissolve Group*-button and choose *Dissolve Project Item Folder*.


# Parent Group Layers

## Parent Layers to Group

<div align="left"><img src="/files/-MQw7Ki6jMjnWL4qA_Eg" alt=""></div>

Parents all layers, contained in a group, to its group header (Win: Ctrl+Alt+3, Mac: no default shortcut).

{% hint style="info" %}
*Note for Windows* [*Single Script Mode*](/main-functions/shortcuts#single-script-mode-windows-only) *users:*\
The default shortcut has been changed from *Shift+J* to *Ctrl+Alt+3* in [version 2.0](/releases#2-0) due to AE now occupying *Shift+J*.
{% endhint %}

![Layers parented to its Group Header](/files/-MR-maQz_Nca0zq1UT8Q)

When enabling group parenting, all layers that have no parent or parents outside of the group will be parented to its group header. Parents within the group, however, are allowed. If a group has sub-groups, all layers, contained in the sub-group, will be parented to the sub-group header. (If you try to unparent one of those sub-groups, they will be parented again.) If layers are moved into a parented group and *Refresh Layout* is executed, they will be parented as well.

If you want to have layers with parents outside of the group or no parent within a parented group, you need to set a *Parent Exception Layer* ([see below](/group-functions/parent-group-layers#set-parent-exception-layer)).

## Set Parent Exception Layer

<div align="left"><img src="/files/-MQw7Osege1hF8_d7AGN" alt=""></div>

Turns the selected layers into *Parent Exception Layers* (Win: Ctrl+Alt+Shift+3, Mac: no default shortcut).

{% hint style="info" %}
*Note for Windows* [*Single Script Mode*](/main-functions/shortcuts#single-script-mode-windows-only) *users:*\
The default shortcut has been changed from *Shift+K* to *Ctrl+Alt+Shift+3* in [version 2.0](/releases#2-0) due to AE now occupying *Shift+K*.
{% endhint %}

![A Parent Exception Layer, as indicated by the ｘ Icon](/files/-MUEidRAlGfpo9xaSafB)

A *Parent Exception Layer* won't be parented to a group header when the group has *Parent Layers to Group* enabled. You can either set no parent or a parent outside of the group.

*Parent Exception Layers* are also excluded from being parented when a *Prime Clone* has *Precomp Transforms* enabled.

*Precomp Clones*, *Matte Merge Layers* as well as *Linked and Matted Adjustment Layers* are all *Parent Exception Layers* by default since they're fit to the comp size and their contents (the individual clone layers in a Precomp Clone, for example) are already parented to the group header (in case it has parenting enabled).


# Disable, Solo and Lock Groups

## Enable / Disable Group

<div align="left"><img src="/files/-MQw7SNwJVrbI7HPRIal" alt=""></div>

Disables or enabled a group (Win+Mac: Shift+B).

When a group is being disabled, all layers, contained in the group, will be disabled. When enabling again, the previous visibility state of every layer will be remembered. When moving layers into a disabled group, they will get disabled. When moving layers out of a disabled group, they will be enabled again.

You can have any layer in the group selected to enable/disable the group using this function.

Alternatively, the eyeball icon of the group header can be enabled/disabled, and then *Refresh Layout* be executed to enable/disable the group.

If you have no layer selected and you execute *Enable / Disable Group*, all groups at the upper level will be disabled (in case at least one group was enabled before) or enabled (in case no group was enabled). Just be aware that, when disabling all upper groups, *Workflower* won't remember which group used to be disabled before. So when you execute *Enable / Disable Group* again **all** groups will be enabled again.

In the *Icons Settings*, you can enable icons for enabled layers in disabled groups. Be aware that, to add the icons, layers will have to be renamed, which may take a little bit.

### Enable / Disable a Group by Shift+Double-Clicking

**(Added in** [**version 2.0**](/releases#2-0)**)**

You can also enable or disable a group simply by *Shift*+double-clicking on the group header.

For this to work, you need the *WQ* plug-in installed that you find in your installation files. For installation instructions, please read the user guide chapter on [Installation](/installation#step-1-installing-the-script).

Please note that by *Shift*+double-clicking the group header, you can only enable/disable the group if you have a single group header selected. If you want to enable/disable multiple groups or you want to enable/disable all groups, you have to execute *Workflower's Enable / Disable Group* function.

## Solo Group

<div align="left"><img src="/files/-MQw7VditeaBc09uhCxz" alt=""></div>

Solos or unsolos a group (Win: Ctrl+Alt+D, Mac: macControl+D).

If a group has been soloed and individual layers will then be unsoloed, *Workflower* will remember that they have been unsoloed, so when *Refresh Layout* is executed, these layers will stay unsoloed. When moving layers into a soloed group, they will get soloed. When moving layers out of a soloed group, they will be unsoloed again.

You can have any layer in the group selected to solo/unsolo the group using this function.

Alternatively, the solo icon of the group header can be enabled/disabled, and then *Refresh Layout* be executed to solo/unsolo the group.

If no layer is selected and *Solo Group* is executed, all layers and groups will be unsoloed.

### Solo / Unsolo a Group by Ctrl/Cmd+Shift+Double-Clicking

**(Added in** [**version 2.0**](/releases#2-0)**)**

You can also solo or unsolo a group simply by *Ctrl/Cmd+Shift*+double-clicking on the group header.

For this to work, you need the *WQ* plug-in installed that you find in your installation files. For installation instructions, please read the user guide chapter on [Installation](/installation#step-1-installing-the-script).

Please note that by *Ctrl/Cmd+Shift*+double-clicking the group header, you can only solo/unsolo the group if you have a single group header selected. If you want to solo/unsolo multiple groups or you want to unsolo all groups/layers, you have to execute *Workflower's Solo Group* function.

## Lock Group

<div align="left"><img src="/files/-MQw7ZaPMd96LCTdZALM" alt=""></div>

Locks or unlocks a group (no default shortcut).

You can have any layer in the group selected to lock/unlock the group using this function.

Alternatively, the lock icon of the group header can be enabled/disabled, and then *Refresh Layout* be executed to lock/unlock the group.


# Miscellaneous Group Functions

In addition to functions mentioned under this category, there are *Group Functions* that are either not available as an executable function itself, or that are a sub-function of a *Layer Function*:

## Group Opacity

**(Added in** [**version 1.1**](/releases#1-1)**)**

![Group Effect with 'Group Opacity' enabled](/files/KML5MqwUhFRvo0R1gJ3D)

As of [version 1.1](/releases#1-1), you have the ability to adjust the opacity of all group layers at once.

On the *Group || Settings* effect, enable *Group Opacity* and execute [Refresh Layout](/main-functions/layout#refresh-layout). *Workflower* will then add an expression to the opacity of the layers and it will add a special opacity slider effect to all group layers as it does with [Prime Clone](/layer-functions/cloning#prime-clone) layers. Execute [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) (Win: Alt+F1, Mac: Ctrl+3) to reveal the special opacity slider on each layer in the timeline. To reveal the *Group Opacity* slider on the *Group || Settings* effect in the timeline, you can execute *Reveal Layer Opacity* too.

![Group Layer with revealed Opacity Slider](/files/aXh47NNsIeuwaYZ3hIYx)

When you move layers into/out of the group, you need to execute *Refresh Layout* so that these attributes get added/removed to/from the layers.

If you disable the *Group || Settings* effect while using *Group Opacity*, the visibility of the whole group will be disabled.

{% hint style="info" %}
Please be aware that *Group Opacity* will not look the same as changing the opacity on a precomp. Since *Workflower* will adjust the opacity of every layer individually, the opacities of layers that intersect will add up. For example, if the *Group Opacity* is 50% and two layers intersect, the resulting opacity on the intersected area will amount to 75%.
{% endhint %}

True 3D objects in AE's *Advanced 3D* renderer cannot contain effects. That's why *Workflower* **cannot** add a special opacity slider effect to those layers. So in case true 3D objects are within a group with group opacity, you can control the individual opacity of those layers by clicking on the value itself and modifying the property before the expression.

### Layers respect Group In/Out Point

Additionally, you can also enable *Layers respect Group In/Out*. Using this option, all layers outside of the group header's in and out point won't be visible.

{% hint style="warning" %}
Please note that *Layers respect Group In/Out* will disable [Automatic Trimming](/main-functions/layout#automatic-trimming) of the group header to its contained layers.
{% endhint %}

{% hint style="warning" %}
If your group layers have time-stretch enabled, the result might be off by a frame. (Maybe this is fixable in a future release.)
{% endhint %}

### Known *Group Opacity* Bugs

{% hint style="warning" %}
[There are known *Group Opacity* bugs. Click here to read up on their descriptions as well as potential workarounds.](/known-bugs#pre-render-bugs)
{% endhint %}

## Center Group Header

<div align="left"><img src="/files/5rhKZz6wGIBUCmKzywQL" alt=""></div>

**(Added in** [**version 1.1**](/releases#1-1)**)**

Centers a group header at the average position of the group layers' anchor points (Win: Ctrl+Alt+Shift+9, Mac: no default shortcut).

Select either a group header or a layer contained in a group and execute *Center Group Header* to move the group's header to the center of all layers. Note that this will only take the position at the current time into account.

When keyframes are on the *Position* property of the group header, they will be moved relative to the new position.

## Relabel Group

<div align="left"><img src="/files/-MQw9Gh459F5etAcAj0A" alt=""></div>

To relabel an entire group, select either the group header or a layer contained in the group and execute [Relabel Layer/s](/layer-functions/relabeling#relabel-layer-s).

## Create Group Matte

<div align="left"><img src="/files/-MQw7fFF5SiLM1Pa8hfu" alt=""></div>

To create a [Group Matte](/layer-functions/matting#group-matte), execute [Create Matte](/layer-functions/matting#create-matte) while a group header is selected.

## Create Group Clone

<div align="left"><img src="/files/-MQw7nw2z6xNvSh8ug7z" alt=""></div>

To create a [Group Clone](/layer-functions/cloning#group-clone), execute [Clone and Precomp](/layer-functions/cloning#clone-and-precomp) while a group header is selected.

## Create Group Linked Adjustment Layer

<div align="left"><img src="/files/-MQw8mzIuBqfYdiy_Dd2" alt=""></div>

To create a [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers), execute [Create Linked Adjustment Layer](/layer-functions/adjustment-layers#create-linked-adjustment-layer) while a group header is selected.

## Create Group Matted Adjustment Layer

<div align="left"><img src="/files/-MQw8qFjtwmAtPgZv_9C" alt=""></div>

To create a [Group Matted Adjustment Layer](/layer-functions/adjustment-layers#group-matted-adjustment-layer), execute [Create Matted Adjustment Layer](/layer-functions/adjustment-layers#create-matted-adjustment-layer) while a group header is selected.

## Pre-Render Group

<div align="left"><img src="/files/q5Gz8NlpWoniZ66KUQb9" alt="" width="30"></div>

To pre-render a group, execute [Pre-Render](/layer-functions/pre-rendering#pre-render) while a group header is selected.

## Convert Group to Precomp

<div align="left"><img src="/files/8tkQH9jCe9CZ1f9ievGb" alt=""></div>

**(Added in** [**version 1.1**](/releases#id-1-1)**)**

To [convert a group to a precomp](/layer-functions/precomposing#converting-a-group-to-a-precomp), select the group header and execute [Precompose](/layer-functions/precomposing#precompose).

## Convert Precomp to Group

<div align="left"><img src="/files/8tkQH9jCe9CZ1f9ievGb" alt=""></div>

**(Added in** [**version 1.1**](/releases#id-1-1)**)**

To [convert a precomp to a group](/layer-functions/precomposing#converting-a-precomp-to-a-group), select the precomp layer in your comp and execute [Precompose](/layer-functions/precomposing#precompose).

## Order of Group Clones, Group Mattes, and Group Linked Adjustment Layers

![Order of Group Elements](/files/-Mglj9m92XLZ_cjehvAM)

The order of *Group Clones*, *Group Mattes,* and *Group Linked Adjustment Layers* is **not** customizabl&#x65;*.* Going from the top-most layer, it is always:

1. *Group Linked Adjustment Layer*
2. *Group Matte*
3. *Group Clone*

This is because a *Group Matte* and/or *Group Linked Adjustment Layer* will have the same effect on top of the *Group Clone* as them being contained in there, so most of the time there is no reason for the order to be different, and the performance and layer/effect clarity is improved that way since matte layers and adjustment layer effects don't have to be copied to all group layers. (If you still want to change the order of these group elements, there is a [way](/group-functions/miscellaneous-group-functions#changing-the-order-of-group-elements).)

If you move the group elements around and execute [Refresh Connections](/main-functions/connections#refresh-connections) on one of them, they will be reordered in the order described above.

### Changing the Order of Group Elements

![Group Linked Adjustent Layer and Group Matte contained in a Group Clone](/files/-Mglj6BZqVyvh_WjkcfR)

There are a few situations when you want the *Group Matte* and/or *Group Linked Adjustment Layer* to be contained the *Group Clone*. (If you want to reference a *Group Clone* by an effect, for example, and you want the matte to be baked into the clone already.) The solution to this is as follows:

Since sub-groups can contain their own *Group Clones*, *Group Mattes,* and/or *Group Linked Adjustment Layers*, you can create a sub-group that holds a *Group Linked Adjustment Layer* and/or *Group Matte* while the higher group holds a *Group Clone*.


# Matting

## Create Matte / Mask <a href="#create-matte" id="create-matte"></a>

<div align="left"><img src="/files/-MQw7fFF5SiLM1Pa8hfu" alt=""></div>

Creates a matte, either to one layer, to multiple layers, or to a group, as well as creates *Linked Masks* (Win: Ctrl+Alt+Z, Win \[German]: Shift+Z, Mac: macControl+Z).

### Single Matte

![Quick Track Matte created to a Layer](/files/-MU-nT0s8lGebE42Vd8A)

With one layer selected, this function will create an empty track matte layer to the selected layer. By default, it will be two times the size of the current composition. This is to have extra pixels for when the matte will be parented or animated, so it doesn't get cut off on the edges when moving. If you open up the *Settings* and go to the *Matting* tab, you can set another default size for the matte layer.

If the selected layer already has a track matte, *Workflower* will execute *Merge Mattes* ([see below](/layer-functions/matting#merge-mattes)), so that both mattes will be matted to the selected layer.

By default, mattes are created with *Collapse Transformation* enabled. In the *Matting Settings*, you can also disable this option.

As of [version 2.5](/releases#id-2-5), you can enable in the *Matting Settings* (optionally right-click on the *Create Matte* button) to create an *FX Matte* instead of a track matte when executing *Create Matte* in a single layer. An *FX Matte* means, *Workflower* will add a *Set Matte* effect to the layer, then create an empty layer and link the *Set Matte's* layer control to the added layer. (This is the same function as covered in [Creating Single Mattes from Effects](#creating-single-mattes-from-effects) but it skips the necessity to create a *Set Matte* effect first.)

### Other Elements from Single Layers

#### Creating Single Mattes from Effects

**(Added in** [**version 2.0**](/releases#2-0)**)**

If you have an effect with a layer control selected on your layer, and you execute *Create Matte*, Workflower will **not** create a track matte to the layer but it will create empty layer and link the layer control to the added layer.

Very useful when you, for example, want to quickly create a matte for a *Set Matte* effect. But it also works for every other effect with a layer control, e.g. for creating a depth map layer to a *Camera Lens Blur*, or a map layer for a *Displacement Map*.

{% hint style="warning" %}
Please note that the dropdown *Source / Masks / Effects & Masks* will **not** be modified on the effect and you will have to set it manually before or after executing *Create Matte* (since you usually want to change it to either *Effects & Masks* or *Masks*).

The only exception to this is the *Set Matte* effect where Workflower will set the dropdown to *Effects & Masks* for you.

(We plan on expanding this to other effects in the future, however, since it's not easy to set this dropdown via scripting, this might take some time.)
{% endhint %}

When the selected layer doesn't have comp transforms or *Collapse Transformation* enabled, the created matte will have the exact dimensions of the selected layer and will be parented to the layer to ensure the matte is always at the correct position of the original layer. (If you don't have the setting enabled to always create mattes with *Collapse Transformation*, this will always be done.)

#### Creating Linked Masks

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

With one regular layer selected **AND** mask/s on it selected, the function creates a matte layer where it copies the selected mask/s to, and it links the original mask to the copied mask (i.e. creates a [Linked Mask](/main-functions/connections#adding-linked-masks)).

Since all mask transforms are exactly mirrored on the original mask regardless of the layers' transforms, this allows you to parent and animate the matte layer and all transforms will be reflected on the original mask.

{% hint style="warning" %}
Please note that a *Linked Mask* **cannot** take variable feathering into account.
{% endhint %}

### Multi-Layer Matte

With several layers selected, this function will create a *Multi-Layer Matte* that applies to all selected layers.

#### Multi-Layer Mattes in AE 23 and upwards

*Simple Multi-Layer Mattes:*

<figure><img src="/files/lxBj3zTOMpdb9QYmRcHX" alt=""><figcaption><p>Multi-Layer Matte applied to Layers without existing Track Mattes in AE 23 or upwards</p></figcaption></figure>

In AE 23 and above, if the selected layers don't have an already existing track matte, a *Multi-Layer Matte* will be created and the track mattes of all selected layers set to the *Multi-Layer Matte.*

*Merged Multi-Layer Mattes:*

<figure><img src="/files/ZKXJq5Yh7sQ3v6x4Op15" alt=""><figcaption><p>Multi-Layer Matte applied to Layers with an existing Track Matte in AE 23 or upwards</p></figcaption></figure>

If the selected layers have already existing track mattes, those track mattes will be merged with the *Multi-Layer Matte* using a [Matte Merge](#merge-mattes). In addition, an *Intermediate Matte Merge* (also called *Inter-Merge*) will be created which is used to be referenced as track matte by all layers that don't have an existing track matte.

This *Inter-Merge* is necessary so that all matting controls, present in the [Matte Layer Settings effect](#modifying-matte-source-layers), align with the controls on the *Matte Merge Layers* that were created for the layers with existing track mattes.

When an *Inter-Merge* has to be created, you will have the option to choose beforehand whether you want to use a custom matte layer or an already existing layer from the comp as your *Multi-Layer Matte*.

#### Multi-Layer Mattes in AE 22 or below

![Multi-Layer Matte applied to Layers in AE 22 or below](/files/-MU-p1xhvWRQ1v7xSa3k)

In AE 22 or below, [Matte Merge Layers](#merge-mattes) will be created for every selected layer, containing a reference to the *Multi-Layer Matte*.

You have the option of either using a custom matte layer or an already existing layer from the comp.

### Group Matte

With a group header selected, *Workflower* will create a *Group Matte Layer.* By default, the *Group Matte Layer* is a custom layer, added to the top of the group.

#### Group Mattes in AE 23 and upwards

*Simple Group Mattes:*

<figure><img src="/files/S3iK6gjYQ0YNbePsmRoS" alt=""><figcaption><p>A Simple Group Matte applied to the Group</p></figcaption></figure>

In AE 23 and above, the track matte of all contained group layers will be simply set to the *Group Matte Layer* **if** the following conditions apply:

1. No group layer has an already existing track matte
2. You're **not** using an [external layer as the *Referenced Group Matte Layer*](#group-matte-settings-effect) (like the [group header](#using-the-group-header-as-referenced-group-matte-layer))
3. No contained sub-group holds a *Group Matte*

{% hint style="warning" %}
Please note that there are [a few minor limitations on the *Group Matte Settings* effect](#group-matte-settings-effect) when using a *Simple Group Matte*.
{% endhint %}

*Merged Group Mattes:*

<figure><img src="/files/lVF1Y88NLvO4FG7IUu31" alt=""><figcaption><p>A Merged Group Matte applied to the Group (since one Group Layer had an existing Track Matte and a Sub-Group holds a Group Matte as well)</p></figcaption></figure>

If one of the conditions listed above does **not** apply, an *Intermediate Matte Merge* (also called *Inter-Merge*) has to be created above the *Group Matte Layer* and the group layers' track matte will reference that *Inter-Merge*.

If a layer has an already existing track matte, the matte will be merged with the *Referenced Group Matte Layer* using a [Matte Merge](/layer-functions/matting#merge-mattes).

*Inter-Merges* for *Group Mattes* are necessary for a few reasons:

1. An *Inter-Merge* makes sure that all matting controls present in the [Group Matte Settings effect](#the-group-matte-settings-effect) align with the controls on the *Matte Merge Layers* that were created for the layers with existing track mattes.
2. When you're just using an external *Referenced Group Matte Layer*, the *Inter-Merge* is necessary so that the referenced layer does not become a track matte which will add certain undesired attributes to the layer: for example, when a layer is a track matte, it has to be disabled if you don't want to see it since you can't just set it to 0% opacity (this would make all layers invisible that are referencing it as track matte). However, when you would disable the group header, this would [trigger the entire group to get disabled](/group-functions/disable-solo-and-lock-groups#enable-disable-group). But when the group header is only referred to in an effect (as the *Inter-Merge* provides), its opacity is disregarded and you can set the opacity to 0%. In the example of the group header, this allows the group header to be enabled and still be used as an invisible matte.
3. When you have a sub-group that holds a *Group Matte*, the *Inter-Merges* exist so that multiple *Group Mattes* can be merged on one track matte.

As soon as a *Group Matte* doesn't qualify anymore for a *Simple Group Matte*, it will be converted to a *Merged Group Matte* right away upon executing [Refresh Layout](/main-functions/layout#refresh-layout). If, on the other hand, it qualifies again, it will be converted back to a *Simple Group Matte*.

You can also disable the creation of *Simple Group Mattes* in favor of *Merged Group Mattes* in all instances by going to the *Matting Settings*. You might want to do that because there might be an attribute or two that doesn't match exactly when switching between *Simple Group Mattes* and *Merged Group Mattes.* For example, when trimming the in/out point of a *Simple Group Matte*, all group layers become visible without matte being applied outside of the in/out points, whereas when trimming a *Merged Group Matte*, all group layers become completely **in**visible. Also, it's [not possible to invert a *Simple Group Matte* in addition to adjusting their blending modes](#group-matte-settings-effect).

{% hint style="info" %}
However, please be aware that since an intermediate matting effect is necessary and the matte can't be referenced right away as track matte, *Merged Group Mattes* will perform slightly slower than *Simple Group Mattes*, even if no existing track mattes have to be merged and you just use, for example, the group header as *Referenced Group Matte Layer*.

Nevertheless, even *Merged Group Mattes* will be many times faster than [*Group Mattes* in AE 22 or below](#group-mattes-in-ae-22-or-below).
{% endhint %}

#### Group Mattes in AE 22 or below

![A Group Matte applied to every Group Layer](/files/-MST6Y81AdKQE3aNwMZJ)

In AE 22 or below, *Merge Mattes* will be executed on every layer, contained in the group, to apply the *Group Matte*. (These *Matte Merge* layers which have been added as the track matte above every group layer and which hold a matting effect, referencing the *Group Matte*, will be called *Group Matte Merge Layers* in the following paragraphs. However, *Group Matte Merge Layers* can also contain other [merged mattes](#adding-new-mattes).)

By default, *Group Mattes* won't be applied to disabled layers in AE 22 or below. You can choose to apply them too by going to the *Matting Settings* and deactivating that setting.

#### Group Matte Settings Effect

![Group Matte Effect](/files/-MS7qoNCgeDyeXWa8LCS)

Using the *Group Matte* effect, to be found on the *Group Matte Layer*, you can customize your matte.

Among other things, you can choose another layer from the comp as your *Referenced Group Matte Layer* by selecting the desired layer from the dropdown and hitting [Refresh Connections](/main-functions/connections#refresh-connections). (Note that what is called *Referenced Group Matte Layer* - the actually visible *Group Matte* on every layer - can differ from the *Group Matte Layer* - the custom layer at the top of the group.)

To disable a *Group Matte* temporarily, just deactivate the effect switch of the *Group Matte* effect.

**Note for AE 23 and upwards:** When you're using a [Simple Group Matte](#group-mattes-in-ae-23-and-upwards) (i.e. without an *Intermediate Matte Merge*), there are some limitations:

* Changing the *Blending Mode* requires you to execute *Refresh Layout* afterwards
* *Respect In/Out Points*, *Invert Matte* and *Show Matte* **cannot** be modified:
  * In/out points will always be respected since that's the way track mattes work in AE
  * You can invert your matte by changing the *Blending Mode* to *Silhouette Alpha* or Silhouette *Luma*, however, it's not possible to additionally invert the matte
  * *Show Matte* is a property that only makes sense when working with [Invisible Mattes](#invisible-mattes). However, since a *Simple Group Matte* is a regular track matte, the layer does not have to stay enabled and the opacity set to 0% so that layer bounding boxes are retained. To show your matte, simply enable the layer as you're used to with track mattes.

#### Moving Group Layers

As of [version 1.1](/releases#1-1), when new layers have been added to the group or layers have been released from the group, you have to execute *Refresh Layout* to add/remove the *Group Matte Merge Layers* to/from all new/old group layers.

(In prior *Workflower* versions, or if you have *When executing 'Refresh Layout', check whether Group Mattes need to be refreshed* disabled (to be found under the *Matting Settings*), you need to select a group layer or the *Group Matte Layer* and execute *Refresh Connections* in order to add/remove the *Group Matte Merge Layers* to/from the layers.)

#### Group Mattes and Sub-Groups

If you have sub-groups with *Group Mattes* themselves, *Workflower* will apply the *Group Matte* of the sub-group as well as the *Group Matte* of the higher group to every layer.&#x20;

#### Using the Group Header as Referenced Group Matte Layer

**(Added in** [**version 1.1**](/releases#1-1)**)**

![Using a Mask on the Group Header](/files/1x48l9jDQC4d2IpEjbyR)

You can also use the group header as your *Referenced Group Matte Layer*. Simply draw masks on the group header and execute [Refresh Connections](/main-functions/connections#refresh-connections).

*(Note: Workflower needs a mask path, not a shape path. However, when you draw a shape path, Refresh Connections will convert it to a mask path.)*

If you don't have a *Group Matte Layer* yet, *Workflower* will then create it and link the group header as *Referenced Group Matte Layer* on the *Matte Layer* control. (If your *Group Matte Layer* already exists, *Workflower* will just link the reference.)

Using the group header instead of the *Group Matte Layer* can be useful if you want to collapse your group and still be able to manipulate the *Group Matte*.

Please note that only the masks of the group header will be considered. Effects altering the alpha cannot be taken into account as they will already be considered for the [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#applying-effects-to-the-group-header). If you need effects to be taken into account, please use the *Group Matte Layer* itself or an external layer as your *Referenced Group Matte Layer*.

By default, the border size of the group header will be expanded to comp size when it holds masks. However, there can be certain situations where the matte could get cut off. To expand the border size, please twirl down the group header and go to *Contents > Border > Fill > Size*. If you remove the mask/s from your group header, the border size will turn back to the default group header size.

#### True 3D Objects within a Group Matte

True 3D objects in AE's *Advanced 3D* renderer cannot set track mattes. That's why *Workflower* **cannot** add a *Group Matte* to those layers. So in case a true 3D object is within a *Group Matte*, you might want to create a [Prime Clone](/layer-functions/cloning#prime-clone) or [Clone in Comp](/layer-functions/cloning#clone-in-comp) of your 3D layer first which can be matted properly.

#### Removing a Group Matte

To remove a *Group Matte*, either:

1. Select the group header and hit *Create Matte* again.
2. Use [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group) on the *Group Matte Layer.*
3. Delete the *Group Matte Layer* using AE's *Delete* and then execute [Refresh Layout](/main-functions/layout#refresh-layout).
4. When using the group header as the *Referenced Group Matte Layer*, select the group header, remove the mask/s and execute *Refresh Connections*.

All references to the *Group Matte* will then be removed from the layers.

If layers have *Group Matte Merge Layers* which contain only the reference to the deleted *Group Matte Layer* (those only exist in AE versions below 23), the *Matte Merge* layer and track matte state will be removed.

If multiple matte references on the *Matte Merge* layer exist, the *Matte Merge* layer will stay intact, and only the *Calculations* effect, referencing the *Group Matte Layer* will be removed. If there's just one matte reference left after removing the reference to the *Group Matte Layer*, the *Matte Merge* will be undone and the matte converted back to a single track matte.

(Fixed in [version 1.1](/releases) ->) ~~Do **not** simply delete the *Group Matte* layer. If you would then execute *Refresh Layout*, the *Group Matte* will be removed - however, *Matte Merge* layers will remain above the group layers, even if they have no matting effect left on them. (*Tip:* If you quickly want to delete empty *Matte Merge* layers, select them and execute~~ [~~Delete Layer / Clone / Group~~](/layer-functions/miscellaneous-layer-functions#delete-layer-clone-group)~~. This will remove the matte layers as well as the track matte state of the layer below.)~~

#### Order of Group Mattes, Group Clones, and Group Linked Adjustment Layers

*Group Mattes, Group Clones*, and *Group Linked Adjustment Layers* have a specific layer order when used in conjunction. Read up [here](/group-functions/miscellaneous-group-functions#order-of-group-clones-group-mattes-and-group-linked-adjustment-layers) for more information.

#### Shying of Group Matte Merge Layers <a href="#shy-mattes" id="shy-mattes"></a>

*<mark style="color:red;">**(Only applicable in AE 22 or below)**</mark>*

**(Added in** [**version 1.1**](/releases#1-1)**)**

![Left: Group Matte Merge Layers visible; Right: Group Matte Merge Layers shy'd (Shy Mattes)](/files/sa4dLhTXJiKk6Ur7caVN)

When using a *Group Matte*, [Matte Merge](/layer-functions/matting#merge-mattes) layers will be added above every group layer as a track matte (*Group Matte Merge Layers*). This, however, makes it more difficult to see the structure of layers. That's why you have the option to shy *Group Matte Merge Layers* that solely contain *Group Matte* effects (called *Shy Mattes*). (This is disabled by default. Go to *Settings > Matting* to enable it.)

If you want to move a group layer, select it and execute [Select Group](/group-functions/collapse-and-select-groups#select-group). This will additionally select the *Shy Matte* above.

If enabled under *Settings > Matting > Temporarily unshy Shy Mattes when executing 'Select Group'*, all *Shy Mattes* within your comp will be temporarily unshy'd so that you can move your layers without accidentally moving your layers in between another layer and its *Shy Matte*. When you execute *Refresh Layout* afterwards, all *Shy Mattes* will be shy'd again.&#x20;

If *Temporarily unshy Shy Mattes* is **not** enabled, the selection icon \[   ] will indicate that the *Shy Matte* above has been selected as well so that you know you can now move your layers. Having the setting disabled guarantees a faster workflow since the layers don't have to be unshy'd. However, you also have to pay more attention so that you don't move your layers in between another layer and its *Shy Matte*. If you move them in between, Workflower will give you an error message, telling you either to undo your action or to hit *Refresh Layout* so that track mattes will be arranged correctly.

![Illegal Shy Matte Movement Error Message](/files/80SzGy7n9s8fw0qcbgR1)

If you want to temporarily unshy all *Shy Mattes* but you **don't** want to select anything via *Select Group* (or you don't have *Temporarily unshy Shy Mattes* enabled), you can also execute [Unshy Layers](#unshy-layers). This will unshy all *Shy Mattes* until the next time you execute *Refresh Layout*. Useful when you, for example, want to move a layer without an existing *Shy Matte* into a group with group matte and you want to be able to easily place it at the correct position.

You don't always have to execute *Select Group* first to select the *Shy Matte*. The following *Workflower* functions will consider *Shy Mattes* even if they are not within the selection:

* [Duplicate Group](/group-functions/create-and-duplicate-groups#duplicate-group) will duplicate the selected layers as well as their *Shy Mattes* above.
* [Create Group](/group-functions/create-and-duplicate-groups#create-group) will move all selected layers along with their *Shy Mattes* into the new group.
* [Delete Layer / Clone / Group](/layer-functions/miscellaneous-layer-functions#delete-layer-clone-group) will delete all corresponding *Shy Mattes* of the selected layers.

### Known *Create Matte* Bugs

{% hint style="warning" %}
[There are known *Create Matte* bugs. Click here to read up on their descriptions as well as potential workarounds.](/known-bugs#create-matte-bugs)
{% endhint %}

## Merge Mattes

<div align="left"><img src="/files/-MQw7jErg_LEVy31jp2q" alt=""></div>

Merges multiple mattes into one track matte layer to a layer (Win: Ctrl+Alt+Shift+Z, Mac: no default shortcut).

### Creating the Matte Merge Layer

![Left: Base and Matte Layers selected before Matte Merge; Right: The created Matte Merge Layer and Matte Collection Group](/files/-MSboIO5cez78pR6iAjR)

First, select the layer you want the mattes to be matted to. If the layer already has a track matte, you can also select the track matte. After that, select your desired matte layers and hit *Merge Mattes*. A *Matte Merge Layer* will be created and used as a track matte for the layer that the mattes should be matted to. On the *Matte Merge Layer*, matting effects, using AE's *Calculations* effect, for each matte layer will have been created. If the matte layers are directly above the base layer and are disabled, they will be put into a *Matte Collection Group*. (For more information on this, [see below](/layer-functions/matting#matte-collection-groups).)

If the matte layers have *Collapse Transformation* enabled, or have comp dimensions and are unmoved, the matte effects on the *Matte Merge Layer* will reference those layers directly. For all other matte layers, a *Precomp Clone* of the layer will be created in order to fit it to comp dimensions.

**Note for AE 23 and upwards:** Although in AE 23 and up, you can potentially move the track matte layer to another spot in the comp, you **need to keep the&#x20;*****Matte Merge Layer*****&#x20;always directly above the matted layer** in order for the layers to be recognized as connected. This connection is important when you want to add or remove a [Group Matte](#group-matte) or [Multi-Layer Matte](#multi-layer-matte) so that mattes can be merged correctly. Nevertheless, it is still possible to reference the *Matte Merge Layer* as track matte by other layers, however only the layer directly below will be recognized as the main matted layer.

(Fixed in [version 1.0.4](/releases#1-0-4) ->) ~~As of now, when changing the comp size, *Matte Merge* layers will **not** be adjusted to the new size automatically. To make the *Matte Merge* layer work again, you need to go to its *Solid Settings* and hit *Make Comp Size*. It is recommended to disable *Affect all layers that use this solid.* (Only when you are sure that no *Workflower* layer other than the *Matte Merge* layers of the comp with a new size use this solid, you may enable *Affect all layers that use this solid*.)~~

### Modifying Mattes

![Multiple Matting Effects](/files/-MSbm905WthCM3YN7Pip)

On the *Matte Merge Layer*, you can use the *Calculations* effects to modify your mattes by changing the blending modes (either to *Normal*, *Stencil Alpha*, *Stencil Luma*, *Silhouette Alpha*, or *Silhouette Luma*), the opacity, the inverted state, and the matte order by moving the *Calculations* effects around.

### Modifying Matte Source Layers

![Matte Layer Settings Effect](/files/-Mf58nlzwow936fhmk2m)

To all matte source layers, a *Matte Layer Settings* effect will be applied. Using the effect, you can choose whether in/out points should be respected and modify the blending mode, inverted state, and opacity. Modifying these states on the layer itself - as compared to modifying it on the *Matte Merge Layer* effect - is useful when having a matte that is applied to multiple layers so that changes don't have to be made on each *Matte Merge Layer* individually.

#### True 3D Objects as Matte Source Layers

True 3D objects in AE's *Advanced 3D* renderer cannot contain effects. That's why *Workflower* **cannot** add a *Matte Layer Settings* effect to those layers. So in case a true 3D object is a matte source layer, you can control the matte properties of this layer only by adjusting the *Calculations* effect on the *Matte Merge Layer* itself.

#### Invisible Mattes

<figure><img src="/files/WWjJxk0Xm0vZUYzN3krL" alt=""><figcaption><p>Invisble Mattes as indicated by the ‡ Icon (Icon introduced in v2.0)</p></figcaption></figure>

On the *Matte Layer Settings* effect, you also have the option to enable *Invisible Matte*. That means that the layer will be set to 0% opacity while it is still enabled. That way, the layer will behave like a regular track matte: It is not visible but you can move it with your cursor around in the composition viewer (which would not be possible with a disabled layer).

You can also very quickly show the layer itself again by clicking on *Show Matte*. This will temporarily set the opacity back to its actual value.

On *Invisible Mattes*, you **can't** set the *Opacity* on the *Matte Layer Settings* effect to *From this Layer* (since it will be at 0% opacity). You can only set it to either *Custom Opacity* or *From Matte Merge Layer Effect*.

Layers that are put into a [Matte Collection Group](/layer-functions/matting#matte-collection-groups) will be set to *Invisible Matte*. Other matte source layers won't be set to *Invisible Matte* by default, however.

### Adding new Mattes

To add new mattes to an already existing *Matte Merge Layer*, simply select the *Matte Merge Layer* first (or its matted layer), then the new matte layers, and hit *Merge Mattes* again. You can also add new mattes using [Add / Remove Layer References](/main-functions/connections#add-remove-layer-references). (Be aware, though, that, using this function, the order of selection is reversed.)

As of [version 1.1](/releases#1-1), the blending mode of new mattes added to the *Matte Merge Layer* will be set to *Stencil Alpha* by default. (In prior versions it would have been set to *Normal*.)

If you select either the matted layer or the *Matte Merge Layer* and execute [Create Matte](/layer-functions/matting#create-matte), an empty matte will be created to the *Matte Merge*.

### Updating Effect Names & Clones

If you have no layer selected and you execute *Merge Mattes*, all matting effects on the *Matte Merge Layer* will be renamed to the current name of the referenced layer. Perform this action after having changed layer names and then working on the Matte Merge Layer since it is difficult to read the layer name from the layer control on the matting effect.

When executing *Merge Mattes* with no layer selected, all unused matte clones will be deleted, too.&#x20;

### Matte Collection Groups

![A Matte Collection Group above the Matte Merge Layer](/files/-MfmXNTen4XkJCQGKBfM)

#### Creating a Matte Collection Group

If the selected matte layers are directly above the layer that they should be matted to **AND** they are disabled, a *Matte Collection Group* will be created above the *Matte Merge Layer*, into which the matte layers will be put. The *Matte Collection Group* always needs to stay directly above the *Matte Merge Layer* if new mattes should be put into it as well. If new mattes are added to the *Matte Merge Layer* and the *Matte Collection Group* is not directly above, they won't be automatically added. (However, you can of course still put them into the group yourself.)

All layers that are put into the *Matte Collection Group* will be turned into an *Invisible Matte.* Read up more about *Invisible Mattes* [here](/layer-functions/matting#invisible-mattes). (On the other hand, layers that are not put into a Matte Collection Group, won't be turned into *Invisible Mattes*.)

You can disable the creation of *Matte Collection Groups* too by going to the *Matting Settings*.

#### Properties of Matte Collection Groups

A *Matte Collection Group* differs from a normal group insofar that it inherits the label color from its containing group, as well as its parent if the containing group is a parented group.

If *Precomp Clones* are created for a *Matte Merge*, they will be put into a custom *Matte Clone Collection Group*.

*Matte Collection Groups* are symbolized by the Icon ∆, *Matte Clone Collection Groups* by ∆∆.

#### Converting Matte Collection Groups

You can convert a regular group to a *Matte Collection Group* by selecting it and hitting *Merge Mattes*. If you select a *Matte Collection Group* and hit *Merge Mattes*, it will convert it to a *Matte Clone Collection Group* - but only if it doesn't already exist - otherwise, it will just convert it back to a regular group. If you select a *Matte Clone Collection Group* and hit *Merge Mattes*, it will convert it to a regular group.

### Known *Merge Mattes* Bugs

{% hint style="warning" %}
[There are known *Merge Mattes* bugs. Click here to read up on their descriptions as well as potential workarounds.](/known-bugs#merge-mattes-bugs)
{% endhint %}

## Select Shy Matte

<div align="left"><img src="/files/-MQw7ACPGcXvG6MAc8uA" alt=""></div>

*<mark style="color:red;">**(Only applicable in AE 22 or below)**</mark>*

**(Added in** [**version 1.1**](https://workflower.constantin-maier.com/layer-functions/pages/-Ml5GvnEbRagPappfC6F#coming-soon-in-workflower-1.1)**)**

To select [Shy Mattes](#shy-mattes), select the desired group layers which have *Shy Mattes* above and execute [Select Group](/group-functions/collapse-and-select-groups#select-group).

## Unshy Layers

<div align="left"><img src="/files/XGChBG7QXVguRCQuSZur" alt=""></div>

*<mark style="color:red;">**(Only applicable in AE 22 or below)**</mark>*

**(Added in** [**version 1.1**](https://workflower.constantin-maier.com/layer-functions/pages/-Ml5GvnEbRagPappfC6F#coming-soon-in-workflower-1.1)**)**

Temporarily unshys [Matte Merge](/layer-functions/matting#merge-mattes) layers that only have [Group Matte](/layer-functions/matting#group-matte) effects applied to them, a.k.a. [Shy Mattes](#shy-mattes) (Win: Alt+F9 \[when using AE 22 and below], Mac: no default shortcut).

Useful when you, for example, want to move a layer without an existing *Shy Matte* into a group with group matte and you want to be able to easily place it at the correct position.

If you execute [Refresh Layout](/main-functions/layout#refresh-layout) afterwards, all *Shy Mattes* will be shy'd again.


# Cloning

## Clone and Precomp

<div align="left"><img src="/files/-MQw7nw2z6xNvSh8ug7z" alt=""></div>

Clones layers using linked expressions and precomps the cloned layers (Win: Ctrl+Alt+Shift+W, Mac: macControl+W).

![Precomp Clone Effect](/files/-MS7ZA5f9qGhFJteSU57)

You can make use of a *Precomp Clone* when you, for example, need to merge layers into one layer to add effects directly to the precomp, or to have the precomp layer fit to comp size to be able to reference it by another layer's effect. The advantage of using *Clone and Precomp* instead of simply precomping is that you keep all layers within your main comp. That way, you can still work with all layers in your main comp, set parents within that comp, and reference layers in effects without the confusion of working within several comps. Also, it's much easier to see the whole project structure if you mostly work in one comp.

Parented layers and layers, referenced by effects, will be cloned and precomped as well. If enabled, the active camera, as well as lights, will be cloned, too.

{% hint style="warning" %}
Make sure that all contained source layers, as well as your current comp, have unique names. Otherwise, the expressions on the clone layers cannot reference the correct source layers.
{% endhint %}

### Refreshing Layer and Comp Attributes <a href="#refreshing-layer-attributes" id="refreshing-layer-attributes"></a>

All linkable attributes are linked by expressions within the clone comp. Besides all transform and effects properties, you can disable/enable layers and effects themselves too and they will be live-disabled/enabled in the clone comp.

If you change non-linkable attributes (like adding an effect/mask, changing layer/effects/masks order, set another blending mode, etc.), you need to use [Refresh Connections](/main-functions/connections#refresh-connections) or [Quick Refresh Connections](/main-functions/connections#quick-refresh-connections-experimental) (or the even simpler and faster [Quick Refresh Clone Connections within Refresh Layout](/main-functions/layout#quick-refresh-clone-connections-of-selected-layers)) afterward to update the corresponding clone layer.

Similarly, to update comp attributes (like a new size or length), you'll need to execute *Refresh Connections* or *Quick Refresh Connections*. Please be aware that certain comp attributes unfortunately can't be updated, like *Shadow Map Resolution* of the *Classic 3D* renderer, or *Render Quality* of the *Advanced 3D* renderer. To change those, please go into the clone comp and change the properties yourself.

{% hint style="info" %}
If you encounter a bug with either *Refresh Connections* or *Quick Refresh Connections*, you might want to try the other function instead as it will often solve the issue.
{% endhint %}

{% hint style="warning" %}
Sometimes it may happen that expression errors come up directly after creating a *Precomp Clone* or when refreshing a *Precomp Clone*. Most of the time, simply executing *Refresh Connections* on the *Precomp Clone* will resolve these issues.

Check out the [Expression Errors](/known-bugs#expression-errors) section of [Known Bugs](/known-bugs#clone-and-precomp-bugs) for more information.
{% endhint %}

### Duplicating a Precomp Clone

#### Duplicate & Create Unique Precomp Clone

When you duplicate a *Precomp Clone* and hit *Refresh Connections*, a unique clone comp will be created for the duplicated clone, so that there will be two *Precomp Clones* then.

As of [version 1.1](/releases#1-1), you may also select the *Precomp Clone* **as well as** all contained layers and execute [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group). This will duplicate the *Precomp Clone* as well as all layers and create a unique new clone comp for the duplicated layers.

#### Duplicate & Create Dependent Precomp Clone

![Dependent Clones, as indicated by the ｄ Icon that were duplicated from 'BUILDING 3D || Group Clone'](/files/-MU-ta-smW_0e-ds2KOM)

If you simply want to reference the original clone comp, you need to delete the *Settings* effect as well as the *Cloned Layer* effects on the duplicated Precomp Clone to make it dependent on the original clone comp.&#x20;

As of [version 1.1](/releases#1-1), you can also just select the *Precomp Clone* layer and execute [Duplicate Layer / Clone Group](/group-functions/create-and-duplicate-groups#duplicate-group). This will duplicate the *Precomp Clone* and remove the *Settings* and *Cloned Layer* effects to make it a *Dependent Clone*.

### Duplicating a Comp containing Precomp Clones

When you want to duplicate a comp that contains Precomp Clones, it's recommended to select the comp as project panel item and execute [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group). (Function available as of [version 2.0.4](/releases#id-2-0-4).)

This will duplicate the comp, make all duplicated *Precomp Clones* independent from the original clone comps and update all *Dependent Clones* in the duplicated comp to the new clone comps.

### Using a Precomp Clone in another Comp

#### Using a Unique Precomp Clone in another Comp

If you want to create a unique *Precomp Clone* from your *Precomp Clone* in your new comp, you will face a problem:

When copying the *Precomp Clone* as well as the contained layers into your clipboard and pasting them to the new comp, After Effects will **not** have retained references in the layer dropdowns of all effects, including the clone layer dropdowns on the *Precomp Clone*, hence the *Precomp Clone* doesn't have any referenced clone layers anymore.

To get around this issue, please do this (possible as of [version 2.0.4](/releases#id-2-0-4)):

1. Select the *Precomp Clone* as well as all contained layers. (In case you want to copy a *Group Clone*, simply select the group header.)
2. Execute [Store Layers](/layer-functions/storing-layers#store-layers). (This will store the layers or group in one of *Workflower's Store Comps*.)
3. Go to your new comp and execute [Paste Stored Layers](/layer-functions/storing-layers#paste-stored-layers). (This will paste the layers/group with all effect layer dropdowns retained. Additionally, it will make the duplicated *Precomp Clone* independent from the original clone comp and update all *Dependent Clones* in the new comp to the new clone comps.)

#### Using a Dependent Clone in another Comp

When you want to use a Dependent Clone in another comp, you can simply drag the precomp item from the project panel into your new comp and execute [Refresh Layout](/main-functions/layout#refresh-layout). *Workflower* will immediately recognize the layer as a *Dependent Clone*.

You may also simply copy a *Dependent Clone* layer from your original comp into your clipboard and paste it into your new comp.

### Adding / Removing Clone Layers

![Add/Remove Layers by Duplicating/Removing the Cloned Layer Effect](/files/-MU-tFCF0px4BAb02jeP)

You can add new clone layers to the *Precomp Clone* by duplicating a *Cloned Layer* effect on the *Precomp Clone* layer, and then selecting a new layer by using the layer dropdown. You can remove a clone layer by deleting its *Cloned Layer* effect.

There's the option of using the [Add / Remove Layer References](/layer-functions/miscellaneous-layer-functions#add-remove-layer-references) function as well to add or remove clone layers which generally is a bit faster than selecting layers via the dropdown.

### Unlink Properties

![An Unlinked Precomp Clone, as indicated by the  ：Ｕ  ： Icon](/files/-MU-VmwVBJZG293QmpTQ)

By default, all clone layer properties are linked to their corresponding source layer properties. You can also, however, unlink all properties by unchecking *Link Properties via Expressions*. Expressions generally use up quite some computing power and if you work with a lot of *Precomp Clones*, this can significantly slow down your comp. That's why it might be useful to unlink properties after you're done working with your clone layers. When you get back to working on the clone, you can link properties again.

You can also use [Link / Unlink Properties](/main-functions/connections#link-unlink-properties) to link/unlink in a quicker way than (un)checking the checkbox. You can also link/unlink all properties within the whole comp or project at once using *Link / Unlink Properties*.

### Prime Clone

![Prime Clone with its contained Source Layers set to 0% Opacity](/files/-MU-l4DtggdLjV7tcdbc)

A *Prime Clone* differs from a regular *Precomp Clone* insofar that the opacity of all contained source layers will be set to 0% while their corresponding clone layers in the clone comp retain their normal opacity and the *Prime Clone* precomp layer itself is the only layer left visible in the main comp. Basically, a *Prime Clone* is like a regular precomp, yet you don't lose all layers within the main comp, and you can manipulate the precomp layer while still being able to work on the contained layers - add effects, masks, change transforms, etc. - and see the result live on the precomp layer.

#### Opacity of Prime Clone Source Layers

![Prime Clone Source Layer Opacity Slider](/files/-MTozEF8MIJCua_nY7aT)

Because the opacity of all contained layers is set to 0%, AE's opacity slider is not usable anymore. That's why *Workflower* will add an effect to the layer with a custom opacity slider. Use this one to modify the layer's opacity. Since hitting *T* won't work anymore to reveal the opacity slider in the timeline, you can also execute [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) by using a shortcut to reveal *Workflower's* opacity slider.

True 3D objects in AE's *Advanced 3D* renderer cannot contain effects. That's why *Workflower* **cannot** add a custom opacity slider effect to those layers. So in case true 3D objects are within a *Prime Clone*, you can control the individual opacity of those layers by going to the corresponding effect on the *Precomp Clone* layer and modifying the [Custom States' *Clone Opacity*](#custom-clone-layer-states).

#### Working on Prime Clone Source Layers

![Prime Clone showing its Layers, as indicated by the » Icon Marker](/files/-MU-lH9ElighgNAxBfyo)

Because the only layer visible is the *Prime Clone* precomp layer, not its source layers, you can see changes instantly when you change properties linked by expressions.

However, when you, for example, add effects or change the layer order, you always need to execute [Refresh Connections](/main-functions/connections#refresh-connections). (Most of the time, just executing [Refresh Layout](/main-functions/layout#refresh-layout) and its built-in *Quick Refresh Clone Connections* should work, too.) Refreshing can be useful when making minor changes, however, when you have to work quite a lot on the *Prime Clone* layers, you can also show the source layers themselves by either clicking on *Show Layers* on the *Precomp Clone* effect (and then executing *Refresh Layout*) or just hitting [Show Clone Layers](/layer-functions/cloning#show-clone-layers). The *Prime Clone* precomp layer will then become invisible and the opacity of all source layers will be set to their actual value.

Working with clone layers shown is computationally faster since the properties don't have to processed through expressions. When you're done working on your layers, hit *Show Clone Layers* again to hide them and show the *Prime Clone* precomp layer again.

#### Soloing Prime Clone Source Layers

You can solo *Prime Clone* source layers and they will be live-soloed in the clone comp. (This won't work on regular *Precomp Clones*.) However, be aware that the *Prime Clone* layer needs to be soloed as well for this to work. Instead of always having to solo the *Prime Clone* layer as well, you can just solo your desired source layers, hit *Refresh Layout* and if they are contained in a *Prime Clone*, the *Prime Clone* layer will be soloed automatically. If only the *Prime Clone* layer and no contained layers are soloed, all clone layers will be visible.

#### Stacking Prime Clones

![Prime Clones stacked on Top of each other](/files/-MSnJs5CT21NPcc13PlL)

*Prime Clone* source layers are symbolized by the Icon • and they indent further depending on their *Prime Clone* depth level. That way you can create *Prime Clones* of *Prime Clones* and keep merging layers into precomps, while retaining a clear visual representation of the layer/precomp structure.

#### Using a Custom Prime Clone Renderer

As of [version 2.0.1](/releases#id-2-0-1), after having created a *Prime Clone* containing *Advanced 3D* objects, you can change your main comp's renderer from *Advanced 3D* to *Classic 3D.* When you execute [Refresh Connections](/main-functions/connections#refresh-connections) on a clone that contains *Advanced 3D* objects, the clone's renderer will be always set to *Advanced 3D* regardless of the source comp's renderer.

Working in *Classic 3D* in your main comp while the clone comp is in *Advanced 3D*, enables you to work with proper 3D objects while being able to use blend modes, track mattes, etc. on non-*Advanced 3D* layers. (Otherwise, these features are disabled in the *Advanced 3D* renderer.)

### Group Clone

![A Group Clone, as indicated by the  \[ｇ\]  Icon, containing another Group Clone](/files/-MU-V612w5kiEJcjXlvJ)

You can create a *Group Clone* by selecting the group header and then executing *Clone and Precomp*. A *Group Clone* differs from a normal *Precomp Clone* insofar that, when executing [Refresh Connections](/main-functions/connections#refresh-connections), group layers will be automatically added/removed to/from the Group Clone if they have been added/removed to/from the group.

Only layers below the *Group Clone* layer will be added to the clone comp. That allows you, for example, to add a track matte or other manipulations onto the *Group Clone* without these layers being added to the clone. The only exception to this is when the *Group Clone* is a track matte to another layer. In that case, the layer below the *Group Clone* won't be added to the clone comp.

You can create *Group Clones* of groups within another *Group Clone* too. Only the *Group Clone* itself (not its contained layers) will be then added to the higher *Group Clone*.

{% hint style="info" %}
Because of its nature, you cannot add/remove layers to/from the *Group Clone* itself or use a *Custom Layer Order*.
{% endhint %}

#### Order of Group Clones, Group Mattes, and Group Linked Adjustment Layers

*Group Clones, Group Mattes,* and *Group Linked Adjustment Layers* have a specific layer order when used in conjunction. Read up [here](/group-functions/miscellaneous-group-functions#order-of-group-clones-group-mattes-and-group-linked-adjustment-layers) for more information.

### Downwards Clone

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

<figure><img src="/files/7CXskGKl68G1SYJYP9FS" alt="" width="331"><figcaption><p>A Downwards Clone, as indicated by the [w] Icon</p></figcaption></figure>

A *Downwards Clone* grabs all layers in comp downwards from the *Precomp Clone* layer.

To use a *Downwards Clone*, select the first layer (needs a single layer selected), then execute *Clone and Precomp* and check *Create Downwards Clone*.

A *Downwards Clone* is similar to a [Group Clone](#group-clone) insofar as it always updates the source layers to be included upon execting [Refresh Connections](/main-functions/connections#refresh-connections).

{% hint style="warning" %}
Because of its nature, you cannot add/remove layers to/from the *Downwards Clone* itself or use a *Custom Layer Order*.

Additionally, it's not possible to use a *Downwards Clone* with *Custom Size* or *Enabled Precomp Transforms*.
{% endhint %}

#### Stop Before Next Downwards Clone

<div align="center" data-full-width="false"><figure><img src="/files/icG90xRyBOMtYfbcFQ6T" alt="" width="329"><figcaption><p>Downwards Clone stopping before next, indicated by [ws]</p></figcaption></figure></div>

By default, a *Downwards Clone* will grab all layers downwards the comp. However, when you enable *Stop Before Next Downwards Clone* (on the *Clone and Precomp* dialog or on the settings effect), the *Downwards Clone* will only grab all layers until right before the next *Downwards Clone*.

### Custom Layer Order

![Precomp Clone Layers with a Custom Order](/files/-MSnZ6cFo2gOF5G6OQ9V)

By default, the layer order within a *Precomp Clone* is the same as it is in the main comp. However, when you, for example, want to make use of a *Precomp Clone* to create a track matte layer, you might want to change the layer order to customize your matte. On the *Precomp Clone* effect, switch the *Layer Order* to *Custom Order* and move the *Cloned Layer* effects to the position you want them to be in. Then execute *Refresh Connections* and the custom layer order will be created within the *Precomp Clone*.

### Custom Precomp Size

![Precomp Clone with a Custom Size](/files/-MSrPIanwoLOgsZBbnkV)

A *Precomp Clone* is created with comp size by default. But you can apply a custom size to it too. You can customize the width and height, as well as whether the area should be shifted on the X- and Y-axis. Select the desired values and hit *Refresh Connections*. The size will be cropped/expanded to the defined area and the position of the *Precomp Clone* layer will be corrected in order to stay at exactly the same position (even when the position is animated).

If you want to see a visual preview of how the new size of the *Precomp Clone* is going to look like before applying it, execute [Preview Custom Clone Size](/layer-functions/cloning#preview-custom-clone-size).

{% hint style="danger" %}
As of now, a custom precomp size only works if its contained layers are 2D.
{% endhint %}

### Enabling Precomp Transforms

![A Prime Group Clone with Enabled Transforms in order to have Tracking Data applied to it](/files/-MUE9QqJg0OHtu7fbiIA)

By default, transforms of a *Precomp Clone* are locked. You can, however, also enable transforms. If it's a *Prime Clone*, its contained layers in the main comp will be parented to the *Prime Clone* (if their existing parent is not to another layer in the clone), so that when you move the *Prime Clone*, all layers will move accordingly. The clone layers within the clone comp, however, will not be parented. If it's a regular *Precomp Clone*, its contained layers won't be affected. If the *Prime Clone* contains other *Precomp Clones* without enabled transforms, their transforms will be enabled.

{% hint style="danger" %}
As of now, enabled precomp transforms when you're using a *Prime Clone* only work with 2D layers. If you want to use 3D layers, its z-position must be at 0 for the precomp transforms to properly work.
{% endhint %}

### Custom Clone Layer States

![Cloned Layer Effect](/files/-MS7leGsMYl_4MTFhzgt)

You can set custom states for all clone layers individually:

* *Enabled/Disabled:* You can enable a clone layer when it's disabled within the main comp and vice versa. Enable the clone layer and disable the source layer when you, for example, want to build a track matte layer using the *Precomp Clone* and the contained layers must not appear in the comp itself.
* *Opacity:* You can set a custom opacity.
* *Trim In/Out Point like Source:* When enabled, the clone layer will get in/out points of the source layer. When disabled, it will stretch across the entire comp.
* *Blending Mode:* You can set the blending mode to several options:

  * Like Source
  * Normal
  * Stencil Alpha
  * Stencil Luma
  * Silhouette Alpha
  * Silhouette Luma

  Change the blending mode when making use of a *Precomp Clone* to create a matte layer. You can set the layers to either *Stencil* or *Silhouette* to build your custom matte.
* *Track Matte:* Changing the track matte state might be useful when layers within the main comp have a track matte and you want the clone layer without a track matte. Or vice versa: set a track matte state for a clone layer when you want to build a custom matte within the clone comp.

### 3D Precomp Clones \[Experimental] <a href="#id-3d-precomp-clones-beta" id="id-3d-precomp-clones-beta"></a>

![3D Precomp Clone with the Z-Position of its contained Layers stuck to 0.](/files/-MUED1jBA4d7n0mjCCKb)

{% hint style="danger" %}
*3D Precomp Clones* is only an experimental feature. That's why it's disabled by default. To use it, go to *Settings*, then to the *Cloning* tab, and enable *Use 3D Precomp Clones*. As of now, there are several limitations when using *3D Clones*:

* Regular *Refresh Connections* doesn't work with *3D Prime Clones*. If you execute it, *Quick Refresh Connections* will be executed instead.
* Unlinking *3D Prime Clones* won't work. When you turn it off, they will be linked again.
* [New Clone Sizes](/layer-functions/cloning#custom-precomp-size) cannot be applied to *3D Prime Clones.* You can only use comp size.
* *3D Prime Clones* are incompatible with contained *Matte Merges*. Transforms of matte layers won't match actual transforms. Use *Precomp Clones* to create track mattes with multiple matte layers instead.
* Other bugs might occur when using *3D Precomp Clones*.
  {% endhint %}

You can activate *3D Precomp Clones* by clicking AE's 3D switch and then executing *Refresh Connections*. (This only works when *Precomp Transforms* are enabled. Otherwise, the *Precomp Clone* will be set back to 2D.)&#x20;

If *Collapse Transformation* is disabled on a *Prime Clone*, all contained layers will be converted to 3D but stuck to the z-position of the *Precomp Clone* layer. That way you basically create a 2D comp within the clone comp itself that then is turned 3D in the main comp. The difference to just creating a simple precomp, however, is that you can see all your contained 2D layers in 3D space and position them, apply effects, etc. in the context of the main 3D comp.

{% hint style="warning" %}
The *Orientation* property of the contained layers will be set to \[0, 0, 0] by expression to stick them to the *Precomp Clone* layer. **Make sure to use&#x20;*****Rotation*****&#x20;instead of&#x20;*****Orientation*****&#x20;to rotate the layers.**

Also, an expression is applied to the *Anchor Point* as well to set its z-value to 0. That means, however, that cannot apply an expression yourself to the *Anchor Point*.
{% endhint %}

If *Collapse Transformation* is enabled on a *Prime Clone*, the contained layers will also be converted to 3D, however, they won't be stuck to the z-position of the *Precomp Clone* layer and can be moved around freely.

{% hint style="info" %}
The behavior of *3D Precomp Clones*, described above, only applies to *Prime Clones*. If the clone is a regular clone, the contained layers won't be affected by the clone's 3D state.
{% endhint %}

### Clone and Precomp Modes

![Clone and Precomp Mode Dropdown](/files/-MdHB440fZgpI5GAQtow)

There are two different *Clone & Precomp* modes. By default, a mix between the two modes will be executed. You can choose to only execute one of them, too. Go to *Settings / Cloning / Clone and Precomp Mode* to change the mode.

* **Faster for fewer Properties:** This mode will copy all layers to the clone comp and go into every property to link them to the source layer.
  * **Advantages:**
    * It is faster for fewer properties (\~ < 100 effects & layers).
    * The user's clipboard will stay intact.
    * It will not cause problems with AE's *Undo/Redo*.
  * **Disadvantages:**
    * It can get quite slow when dealing with a lot of layers and effects.
    * If you have another script installed that uses a callback function to display errors that happen within the application, the mode can cause various errors. Go to [Known Bugs](/known-bugs#cloning-mode-bugs) for more information.
* **Faster for more Properties:** This mode will use AE's native function *Copy with Property Links* to copy all layers to the clone comp.
  * **Advantages:**
    * It is faster for more properties (\~ > 100 effects & layers).
  * **Disadvantages:**
    * Since the mode uses AE's native function, the user's clipboard will get overwritten in order to contain the layers copied to the clone comp.
    * If you undo the cloning action and then try to redo it after that, you will not be able to recreate the original state but rather a state midway through the function's execution. See [Known Bugs](/known-bugs#clone-and-precomp-bugs) for more information.

### Using Advanced 3D Renderer's Environment Lights in Precomp Clones

As of [version 2.5](/releases#id-2-5), Workflower is compatible with sources to *Advanced 3D* renderer's *Environment Lights* in [Precomp Clones](/layer-functions/cloning#clone-and-precomp).

Since it's impossible to read the source information via scripting, you'll have to re-select the source on the *Environment Source* layer created by *Workflower* upon cloning. Afterwards, execute [Refresh Connections](/main-functions/connections#refresh-connections) to include the source in the clone.

### Known *Clone and Precomp* Bugs

{% hint style="warning" %}
[There are known *Clone and Precomp* bugs. Click here to read up on their descriptions as well as potential workarounds.](/known-bugs#clone-and-precomp-bugs)
{% endhint %}

## Clone in Comp

<div align="left"><img src="/files/-MQw823JOrUluIO9YwOI" alt=""></div>

Clones a layer in comp using a *Calculations* or *Set Matte* effect (Win: Shift+N, Mac: no default shortcut).

{% hint style="danger" %}
*Note for Mac users and when using* [*Individual Scripts Mode*](https://workflower.constantin-maier.com/layer-functions/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) *on Windows:*\
The default shortcut for this function has been removed in [version 1.1](/releases#1-1). (If you still want to use a shortcut, please set it yourself in the shortcuts panel.)
{% endhint %}

![Clone in Comp of '3D Building' used to split the Layer](/files/-MU-eogfzcN8OEaSrgHT)

### Advantages of a Clone in Comp

A *Clone in Comp* has a major advantage compared to a *Precomp Clone:*

Because the image data is not linked by expressions but by an effect, you don't have to hit *Refresh Connections* nearly as often as you would when using a *Precomp Clone*. The *Clone in Comp* updates automatically every time you add/remove effects/masks, change the order of effects/masks, or modify non-linkable effect/mask parameters. However, changes on layer switches, parents, blending modes, and layer time properties still require refreshing. For more on refreshing *Clone in Comp* connections, see [its chapter](/main-functions/connections#refresh-connections).

You can use a *Clone in Comp* for several purposes (only examples):

* **As a track matte:** A track matte layer always needs to be on top of the matted layer. Sometimes, this is what you want but other times you just want to use an existing layer from the comp that's at a totally different layer index, that you don't want to change. You could use a regular *Set Matte* effect to achieve this matte. However, for this to work, all transform properties need to be the same or both layers need *Collapse Transformation* enabled. That's not always the case, and this is what a *Clone in Comp* can be useful for: It creates an active clone of the layer to be able to place it directly above the other layer and use it as a track matte so that you don't have to worry about different transform properties or collapsed transformations.
* **To simplify working with 2.5D layers:** When working with a 2D layer that has a 3D effect on it (i.e. a 2.5D layer), that's supposed to be integrated into a 3D scene, you might have to split the 2.5D layer at some point because it has to go from behind another 3D layer to before it. You can create a *Clone in Comp* from the 2.5D layer, split source and clone (see [Clone Creation Options](/layer-functions/cloning#clone-creation-options)), and have a live copy of the source layer. Another example would be the other way around: You have a 3D layer that has to interact with a 2D layer and at some point, it has to go from behind to before or the other way around. You can also split source and clone by opacity, meaning that the source layer can still be grabbed and moved around in the composition panel, even when a clone layer is active at that time.&#x20;
* **To intensify a layer:** When creating a glow, for example, you might want to duplicate a layer, apply a blur to it and repeat this process several times to create a unique result. When changes are made on the source layer, however, they won't update on the duplicated layers. That's when a *Clone in Comp* can come in handy as a more flexible way to duplicate a layer.

### Disadvantages of a Clone in Comp

There are also some drawbacks when using a *Clone in Comp*:

You can only clone one layer, so it's not possible (like when using a *Precomp Clone*) to merge several layers on one clone layer. Besides, you can't clone shape and text layers. Also, as of now, it's not possible to use custom transforms on a *Clone in Comp*. (In the current *Workflower* build, to transform a *Clone in Comp*, you can use AE's *Transform* effect on the clone layer. This, however, only works with 2D transforms.)

### Clone Creation Options

![Clone in Comp Dialog](/files/-MSrS0WUwFRIHxZb8i6L)

#### Cloning Channels

You can choose to either clone *RGBA* or clone *Alpha Only*. Cloning *Alpha Only* using the *Set Matte* effect has three advantages compared to cloning *RGBA* using the *Calculations* effect:

1. It is faster since the *Set Matte* effect is GPU accelerated.
2. *Set Matte* supports 32 bit, while *Calculations* only supports 16 bit.
3. You can extend borders of the clone layer dynamically using the dedicated slider, while, using the *Calculations* effect, the layer needs to be precomped in order to extend the borders.

#### Precomp Source & Expand Border

In certain situations, you might want to extend the borders of a clone layer. For example, when you apply a blur or some other effect that stretches pixels beyond the layer's boundaries. On *Clones in Comp* with a *Set Matte* effect, you simply need to use the *Expand Borders* slider on the *Clone in Comp Settings* effect. On *Clones in Comp* with a *Calculations* effect, you can, when creating the clone, automatically precomp the source and expand the border by a certain percentage. That way, the layer will have empty pixels around its boundaries onto which a blur, for example, can stretch pixels. When using *Precomp Source & Expand Border*, all transform properties of the layer will be adjusted in such a way that the image itself will stay at exactly the same position, even when keyframes were applied.

#### Split Source & Clone at Current Time

When dealing with 2.5D layers, it can be useful to split the source and clone layer at a given time so that the source layer becomes invisible once the clone layer becomes visible. Check this checkbox to quickly execute this action. Examples, when this can be useful, are listed under [Advantages of a Clone in Comp](/layer-functions/cloning#advantages-of-a-clone-in-comp).

### Clone Settings

![Clone in Comp Settings Effect](/files/-MTov5-u700dZw1mtBpS)

On the source layer, an effect will be added. On it, you can customize various settings:

* How the opacity of the clones should behave: either it's a custom opacity on each clone, or a custom opacity set for all clones on the settings effect, or it's linked to the source layer opacity.
  * If you choose to use a custom opacity on each clone, you need to modify the clone's opacity on the slider of the dedicated effect on the clone layer, not AE's opacity slider. (This slider will have an expression applied to it and is therefore not usable anymore.) You can execute [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) to reveal the slider in the timeline, too.

![Clone in Comp Opacity Slider](/files/-MToymUQFFfR6gBoDIMh)

* Whether you want to link the in/out point and/or the blending mode to the source layer.
* Whether and by how much you want to expand the clone's borders (see [Precomp Source & Expand Border](/layer-functions/cloning#precomp-source-and-expand-border) chapter for more information).

Please note that true 3D objects in AE's *Advanced 3D* renderer cannot contain effects. That's why *Workflower* **cannot** add a *Clone in Comp Settings* effect to those layers. So in case a true 3D object is a *Clone in Comp* source layer, you can control the clone properties only by adjusting the clone layer itself.

## Show Clone Layers

<div align="left"><img src="/files/-MQw8F-C4QFYTchc2_-m" alt=""></div>

Shows layers, contained in a *Prime Clone*, while hiding the *Prime Clone* layer itself, or vice-versa (Win: Ctrl+Shift+Return, Mac: macControl+Return).

Needs *Prime Clone* layer or contained layers selected. As of [version 2.5](/releases#id-2-5), you can also select a group header that holds a [Group Prime Clone](/layer-functions/cloning#group-clone), as well as have no layer selected when executing the function to show/hide all *Prime Clone* layers in comp.

For more information on working with *Prime Clone* layers, see [its chapter](/layer-functions/cloning#working-on-prime-clone-source-layers).&#x20;

Using *Show Clone Layers* is a faster way to show/hide *Prime Clone* layers than clicking on the checkbox of the *Precomp Clone's* effect.

Prior to [version 2.5](/releases#id-2-5), when hiding *Prime Clone* layers, *Quick Refresh Connections* was executed by default to refresh all clone layers. This is now disabled to improve the performance when showing/hiding a lot of *Prime Clones* layers. You may re-enable this feature by going to the *Cloning Settings*.

## Show and Solo Clone Layers

<div align="left"><img src="/files/-MQw8F-C4QFYTchc2_-m" alt=""></div>

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Shows and solos layers, contained in a *Prime Clone*, while hiding the *Prime Clone* layer itself, or vice-versa (Win: Ctrl+Alt+Return, Mac: no default shortcut / Via *Main Menu*: Right-click on *Show Clone Layers*-button, then click *Show and Solo Clone Layers*).

The function is identical to [Show Clone Layers](#show-clone-layers) except it additionally solos the layers.

## Preview Custom Clone Size

<div align="left"><img src="/files/-MQw8ZbKIzCQc6I4cUfP" alt=""></div>

Previews the new boundaries of a *Precomp Clone* with custom size (not available via shortcut; Win: *Alt+Click* on the *Cloning Button*; Mac: *Option+Click* on the *Cloning Button*).

![Preview Border of the new Custom Clone Size](/files/-MU-vJLenxrDzBvMZCtE)

Use the *Custom Size* sliders on the *Precomp Clone* effect to define the new clone size and the preview - that's linked by expressions to the sliders - will live-update its border. When you're done, hit *Refresh Connections* to apply the new size. After applying, the preview will disappear. If the preview is active but you decide not to apply a custom size, just hit *Refresh Layout* to remove the preview.


# Adjustment Layers

## Create Linked Adjustment Layer

<div align="left"><img src="/files/-MQw8mzIuBqfYdiy_Dd2" alt=""></div>

Creates a layer that applies its effects with linked expressions to a defined set of layers (Win: Ctrl+Alt+., Mac: no default shortcut).

![Linked Adjustment Settings & Linked Layers Effects,
referencing Layers in Comp,
as well as the actual Effects
to be copied to the referenced Layers](/files/-MUEkrc-yxNShRynFCsH)

### Creating and working with a Linked Adjustment Layer

![Linked Adjustment Layers, as indicated by the ａ Icon](/files/-MUEmEZtcVrnG7Hyc6uS)

Just select the layers you want to apply the *Adjustment Layer* to, then execute the function. Add your desired effect/s and hit [Refresh Connections](/main-functions/connections#refresh-connections). All of the effects will then be applied to the selected layers with linked expressions.

{% hint style="danger" %}
Be aware that refreshing connections on a *Linked Adjustment Layer* will invalidate your clipboard.

(Fixed in [version 1.1](/releases#1-1) ->) ~~Also, you might encounter a specific problem when trying to undo and then redo the action. Go to~~ [~~Known Bugs~~](/known-bugs#linked-adjustment-layer-bugs) ~~for more information.~~
{% endhint %}

As of [version 1.1.1](/releases#1-1-1), upon executing *Create Linked Adjustment Laye*r, if one of your selected layers has selected effects, those effects will then automatically be cut from the layer, added to the freshly created *Linked Adjustment Layer* and directly applied to all layers. (This is because sometimes you add some effects to a layer and then notice that you want to apply those effects to other layers too, and so this behavior of *Create Linked Adjustment Layer* simplifies this process.)&#x20;

You can turn off the *Linked Adjustment Layer* or its effects and they will be live-disabled by expression. When you disable a certain *Linked Layer* effect, all effects related to the current *Linked Adjustment Layer* will be live-disabled on the specific layer.

If you change the order of effects or add/remove effects, however, you need to execute *Refresh Connections* again. This needs to be done as well when you changed non-linkable attributes on the effects.

You can modify the overall opacity of all effects too by using the opacity slider on the effect that *Workflower* applied to the *Linked Adjustment Layer*. (AE's opacity slider on the Linked Adjustment Layer won't be usable anymore.) Execute [Reveal Layer Opacity](/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity) to quickly reveal *Workflower's* opacity slider in the timeline.

As of [version 2.5](/releases#id-2-5), you also have the ability to use effect masks on an effect of a *Linked Adjustment Layer*. After adding the effect mask, simply execute [Refresh Connections](/main-functions/connections#refresh-connections) to apply them to all *Linked Layers*. Please note that this might not always work properly on 3D layers.

### Adding / Removing Layers

You can add referenced layers to a *Linked Adjustment Layer* by duplicating one of its layer dropdown effects, selecting another layer, and then executing [Refresh Connections](/main-functions/connections#refresh-connections). To remove a referenced layer, just remove its corresponding dropdown effect. Alternatively, you can also use the [Add / Remove Layer References](/layer-functions/miscellaneous-layer-functions#add-remove-layer-references) function to add/remove layers to/from a *Linked Adjustment Layer*.

### Unlink Properties

Just like with *Precomp Clones*, you can unlink properties of *Linked Adjustment Layers* as well. After you're done working on your effects, you might want to unlink properties since it is computationally faster to not have properties linked by expressions. You can unlink (and link again) by (un)checking the checkbox on the effect on the Linked Adjustment Layer, or by executing [Link / Unlink Properties](/main-functions/connections#link-unlink-properties).

### Order of Linked Adjustment Layers

If you have several *Linked Adjustment Layers*, their order within the comp is important. *Linked Adjustment Layers* that are above will be applied after the ones below.&#x20;The effects order of *Linked Adjustment Layers* will be updated every time when executing *Refresh Layout.* (This does not include, however, the order of effects within a *Linked Adjustment Layer*. Use *Refresh Connections* to update that order.)

### Other Effects on a Referenced Layer

On a layer that has *Linked Adjustment Layer* effects applied to it, you can have other effects as well. However, they can only be directly before or directly after the *Linked Adjustment Layer* effects. (If not, they will be reordered the next time you hit *Refresh Layout*.)

### Considering Layer Transforms

![Layers with the same Blurriness Value applied to them but a visually different Result](/files/-MUEq_MJe9r5h9eRLxwn)

*Linked Adjustment Layers* work by applying the effects on the *Linked Adjustment Layer* to all referenced layers with linked expressions. Effects that do not contain spatial properties (like color corrections effects) work without problems. Other effects - like a blur or a gradient - have some spatial element to them. If the referenced layers have different transforms, the blur will appear smaller or larger depending on the layers' scales and the gradient will appear at different positions depending on the layers' position and rotation.

![Layers with the Blurriness Value equalized according to their Scale Values](/files/-MUEqu_sFWmKEQ-psxnD)

To counteract this appearance, you can execute [Convert Property to Comp Size](/layer-functions/adjustment-layers#convert-property-to-comp-size) on the specific properties which will apply an expression to them to so that they appear at comp size - as if you would use a regular adjustment layer.

Another option to counteract the appearance would be to use a [Matted Adjustment Layer](/layer-functions/adjustment-layers#create-matted-adjustment-layer) instead, which will create a regular adjustment layer that's matted to the referenced layers. (However, be aware that this will work for a gradient but not for a blur since the blur would change the alpha which is not replicated on the matte itself.)

### Group Linked Adjustment Layers

![A Group Linked Adjustment Layer](/files/-MUEvMA0T2SXj-pse6HQ)

Just like *Group Clones* and *Group Mattes*, you can create *Group Linked Adjustment Layers* too. Simply select the group header and execute *Create Linked Adjustment Layer*.

As of [version 1.1](/releases#1-1), when new layers have been added to the group or layers have been released from the group, you have to execute *Refresh Layout* to add/remove the effects to/from all new/old group layers.

(In prior *Workflower* versions, or if you have *When executing 'Refresh Layout', check whether Group Linked Adjustments need to be refreshed* disabled (to be found under the *Adjustment Layer Settings*), you need to select the *Linked Adjustment Layer* and execute *Refresh Connections* in order to add/remove the effects to/from the layers.)

#### Excluding Layers from a Group Linked Adjustment Layer

In contrast to *Group Clones*, layers above the *Group Linked Adjustment Layer* will still be included in the *Linked Adjustment Layer*. If you want to exclude certain group layers, you can simply disable the specific *Linked Layer* effect on the *Linked Adjustment Layer*.

#### Matte Merge Layers within a Group Linked Adjustment Layer

By default, *Matte Merge Layers* will not be included in a *Group Linked Adjustment Layer* since it is assumed that the referenced mattes already will have the *Linked Adjustment Layer* effects applied to them. If you want to include *Matte Merge Layers*, you can go to the *Adjustment Layer Settings* and deactivate this setting.

#### Applying Effects to the Group Header

**(Added in** [**version 1.1**](/releases#1-1)**)**

![Using an Effect (and Mask) on the Group Header](/files/1x48l9jDQC4d2IpEjbyR)

The *Group Linked Adjustment Layer* will consider effects on the group header in addition to its own effects. So instead of the *Group Linked Adjustment Layer*, you can also apply effects only to the group header if you want to. The advantage of this is that you can collapse your group and continue to work on your group effects.

If you don't have a *Group Linked Adjustment Layer* yet and you execute *Refresh Connections* while the group header, containing effects, is selected, a *Group Linked Adjustment Layer* will be automatically created.

{% hint style="danger" %}
When executing [Select Group](/group-functions/collapse-and-select-groups#select-group) on a group with effects on its header, this might cause "ghost" expression errors to occur (= not actual errors, however ones that are being displayed). This is because upon executing *Select Group*, the icon \[   ] will be displayed briefly next to the group header name in order to indicate it's being selected (and therefore confuse the expressions of the *Linked Effects*). To avoid the errors, you can go to the *Icon Settings* and disable the icon when selecting a group.
{% endhint %}

{% hint style="warning" %}
Please note that you **cannot** [convert properties to comp size](#convert-property-to-comp-size) when the effect lives on the group header. Apply the effect to the *Group Linked Adjustment Layer* if you want to convert properties to comp size.
{% endhint %}

#### Order of Group Linked Adjustment Layers, Group Mattes, and Group Clones

*Group Linked Adjustment Layers,* *Group Mattes*, and *Group Clones* have a specific layer order when used in conjunction. Read up [here](/group-functions/miscellaneous-group-functions#order-of-group-clones-group-mattes-and-group-linked-adjustment-layers) for more information.

### Known *Linked Adjustment Layer* Bugs

{% hint style="warning" %}
[There are known *Linked Adjustment Layer* bugs. Click here to read up on their descriptions as well as potential workarounds.](/known-bugs#linked-adjustment-layer-bugs)
{% endhint %}

## Create Matted Adjustment Layer

<div align="left"><img src="/files/-MQw8qFjtwmAtPgZv_9C" alt=""></div>

Creates an adjustment layer that's matted to the selected layers below (no default shortcut).

![A Matted Adjustment Layer applied to the Group 'BEHIND'](/files/-MUEww_gpnpLVkLSDs-H)

### Creating and working with a Matted Adjustment Layer

Select all layers you want to apply the adjustment layer to, then execute *Create Matted Adjustment Layer*.

When multiple layers were selected, a regular adjustment layer will be created with a *Precomp Clone* that contains all selected layers as its track matte.

If you're using AE with *Selectable Track Mattes* (introduced in AE 23) and you have only one layer selected, the adjustment layer will be matted to the selected layer and no clone will be created.

If you're using AE below version 23 and you have only one layer selected, a *Clone in Comp* will be created as the track matte.

If you then apply effects to the adjustment layer, they will only be applied to the area defined by the track matte. This works well when, for example, applying color correction effects. It won't work well when, on the other hand, you're applying effects that change the alpha, like a blur.

You can add/remove layers to/from the *Matted Adjustment Layer* by adding/removing layers to/from the clone as you would be doing with any other *Precomp Clone* as well. (For more on this, [see here](/layer-functions/cloning#adding-removing-clone-layers).)

#### Group Matted Adjustment Layer

You can create a *Group Matted Adjustment Layer*, too, by selecting the group header and executing *Create Matted Adjustment Layer*. This will create a *Group Clone* that will be used as a matte for the adjustment layer. This *Group Clone*, however, is not a *Prime Clone*, like most other *Group Clones*, but just a regular *Precomp Clone*. You can refresh the *Group Clone* as you would with any other *Group Clone*.

### Advantages of a Matted Adjustment Layer

A *Matted Adjustment Layer*, compared to a *Linked Adjustment Layer*, has some advantages:

* It can be faster when otherwise properties would need to be converted to comp size
* Since it will not apply effects directly to the referenced layers but as an adjustment layer, the effects will apply themselves **after** all layers have been processed. If the effects would be on the referenced layer itself, they would be processed **before** certain attributes - like motion blur, blending mode, etc. - which is not always what you want. For example when:
  * &#x20;...you want to apply a color correction to a layer that has a specific blending mode and you want to retain the appearance of the blending mode. When, on the other hand, you would apply a color correction effect to the layer itself, the appearance of the blending mode often changes which might not be what you want.
  * ...you want to add grain onto layers that have motion blur. When, on the other hand, you would apply the grain to the layer itself, the grain would be blurred as well.

## Convert Property to Comp Size

<div align="left"><img src="/files/-MQw8u3zAAMzAZVE7N1n" alt=""></div>

Converts the property of an effect on a *Linked Adjustment Layer* to comp size (not available via shortcut; Win: *Ctrl+Click* on the *Adjustment Layers Button*; Mac: *Cmd+Click* on the *Adjustment Layers Button*).

(Fixed in [version 2.5](/releases#id-2-5) ->) ~~Unfortunately, we noticed a bug that prevents *Convert Property to Comp Size* from working on certain properties when AE's language is not in English. We already have fixed this issue and will provide the fix in the next release of *Workflower*.~~

### When and how to use Convert Property to Comp Size

![Bevel Angle equalized across Layers with different Rotation Values](/files/-MUF0VQFYHf0dCxhBqNO)

When an effect is applied to a layer, the visible amount of a property will vary depending on the layer's scale. If, for example, a blur is applied to two different layers and one layer has 50% less scale but the blurriness of the blur has the same amount, the blurriness will appear larger on the layer which has been scaled up more.

To combat this, use *Convert Property to Comp Size* to equalize the blurriness values by expression, so that the blurriness of the scaled down layer will be larger. To make use of this, simply select the desired property in the timeline (not the effects panel) and hit *Convert Property to Comp Size*. Now, the conversion expression has been applied to all layers. This works on one-dimensional properties (like the blurriness of a blur), on two-dimensional spatial properties (like the start and end position of a gradient ramp), or on angles (like the angle of a bevel).

To convert a property back to its normal value, just select the property and hit *Convert Property to Comp Size* again.

{% hint style="warning" %}
Converting a property to comp size on a 3D layer only is an approximation and cannot account for 3-dimensional rotation.
{% endhint %}

### Writing Expressions

<div align="center"><img src="/files/-MQrHD-jZbCFdgDDPHo2" alt="Write your Expression after the first Line"></div>

To write an expression on the property of the *Linked Adjustment Layer*, simply open up the existing expression and delete thisProperty in the second line. Then start writing your expression. **DO NOT** delete the first line which is necessary because it lets *Workflower* know that this property needs to be converted to comp size.


# Renaming

## Rename Layer/s

<div align="left"><img src="/files/-MQw9-s-pt4M0p3Y9cYe" alt=""></div>

Renames layers (Win+Mac: Shift+Return).

*Rename Layer/s* is a replacement for AE's renaming. Because *Workflower* uses spaces within the layer name to indent the layer, you would always have to hit *Refresh Layout* after using AE's renaming function to indent to layer. *Rename Layer/s* will automatically indent the layers after renaming. Additionally, *Workflower* uses various special characters around the layer name to display its icons. When using AE's renaming, these icons always get in the way of renaming. *Rename Layer/s*, on the other hand, strips away these characters.

If you have one layer selected and execute *Rename Layer/s*, a panel will come up and display the currently selected layer name in a textbox. You can close the panel again by either clicking on empty space on the panel itself or by hitting *Escape*.

If you have multiple layers selected, layers will be renamed on dependency. For more on this, [see below](/layer-functions/renaming#rename-on-dependency).

### Renaming Modes

*Rename Layer/s* has two renaming modes: *Split Mode* and *Full Mode*. You can switch between the modes by pressing *Alt+Return (Win)* or *Option+Return (Mac)*. (By default, *Split Mode* is shown when the panel comes up. You can change this by going to the *Naming Settings*.)

#### Split Mode

![Split Mode displaying one Name Level](/files/-MScaPY1KpoIWJB8J0jp)

If a layer name is composed of different levels - split by the divider that is defined in the *Naming Settings* - *Split Mode* will display only one of those levels. You can flip one name level backward by pressing *Alt+Left (Win)* or *Opt+Left (Mac)*, and one name level forward by pressing *Alt+Right (Win)* or *Opt+Right (Mac)*. That way, it is faster to select and rename one part of a layer name, as compared to having to select this part manually.

You can also create a new name level after the current name level by pressing *Alt+Up (Win)* or *Opt+Up (Mac),* or delete the current name level by pressing *Alt+Down (Win)* or *Opt+Down (Mac).*

{% hint style="info" %}
On Mac, adding/removing name levels might not always work as expected. We hope to fix this issue in a future update.
{% endhint %}

When the renaming panel comes up, the default name level shown is always the last level.

#### Full Mode

![Full Mode displaying the Full Name](/files/-MScaUNVZ40EK3e_SJ3h)

*Full Mode* displays the full layer name.

### Rename on Dependency

![Left: Layers selected before Renaming; Right: Layers after Renaming on Dependency](/files/-MSckUe7fp_zXu8Us7d5)

If you want to rename layers on dependency, select the base layer first, then the dependent layers, and hit *Rename Layer/s*. All dependent layers will now inherit the base layer name and attached to it - after a divider - is its original name. This is useful when you have various layers that belong together and depend on each other (like a track matte, a fractal structure to a displacement map, or an asset belonging to the base layer) but it wouldn't be justified to create a unique group for them.

#### Rename Track Mattes on Dependency

By default, all track mattes will be renamed on dependency to their matted layers according to their matte type (*Alpha, Alpha Inv., Luma, Luma Inv.*). A [Matte Merge](/layer-functions/matting#merge-mattes) track matte layer will always be named *Matte*. You can deactivate the automatic naming of track mattes in the *Naming Settings* too.

### Additional Renaming Functions

#### Re-Rename on Dependency (surrounding Layers)

![Left: Before Re-Renaming on Dependency, Right: After Re-Renaming on Dependency](/files/-MSrvRHc4SxyXPcIH2iN)

Sometimes you want to change the name of a layer that has dependent layers. In order to not having to rename all layers individually, you can use the *Re-Rename on Dependency* function instead. Select the base layer and hit *Rename Layer/s* to open up the renaming panel and type in your new name. To apply the name to the base and dependent layers, press *Ctrl+Alt+Return (Win)* or *Cmd+Option+Return (Mac)*.

This will re-rename all surrounding layers - upwards and downwards. It will not, however, rename layers once a layer without the base layer name has been reached. If you want to re-rename all layers in comp, use *Re-Rename on Dependency (all Layers)*.

#### Re-Rename on Dependency (all Layers)

This function will re-rename all layers within the comp on dependency and it will not stop re-renaming once a layer is reached that doesn't share the base name. To execute it, press *Ctrl+Return (Win)* or *Cmd+Return (Mac)*.

#### Rename all Instances of Name

If you want to change one name throughout the entire comp, use this function. It will change the name even if it is just one part of the name. If you are in *Split Mode*, it will only consider the split name level. To execute it, press *Shift+Return (Win)* or *Shift+Return (Mac)*.

### Refreshing Layout when Renaming Single Layers

Most functions of *Workflower* refresh the layout of the current comp too (see [Refresh Layout](/main-functions/layout#refresh-layout)). When renaming single layers, however, only the layout of comps with less than 50 layers will be refreshed by default. This is because renaming can get comparatively slow in bigger comps if *Refresh Layout* would have to be executed as well.

You can deactivate this behavior, too, if you don't like it, or choose to not refresh the layout even in smaller comps as well, by going to the *Layout Settings* and changing *Refresh Layout when Expanding/Collapsing/Selecting/Renaming*.

### Rename Panel Shortcuts

#### Renaming Shortcuts

| Function                                                  | Shortcut (Win)  | Shortcut (Mac)    |
| --------------------------------------------------------- | --------------- | ----------------- |
| <p>Re-Rename on Dependency</p><p>(surrounding Layers)</p> | Ctrl+Alt+Return | Cmd+Option+Return |
| <p>Re-Rename on Dependency</p><p>(all Layers in Comp)</p> | Ctrl+Return     | Cmd+Return        |
| Rename all Instances of Name                              | Shift+Return    | Shift+Return      |

#### Naming Level Shortcuts

| Function                     | Shortcut (Win) | Shortcut (Mac) |
| ---------------------------- | -------------- | -------------- |
| Switch Split <-> Full Mode   | Alt+Return     | Option+Return  |
| Flip one Name Level backward | Alt+Left       | Option+Left    |
| Flip one Name Level forward  | Alt+Right      | Option+Right   |
| Add new Name Level           | Alt+Up         | Option+Up      |
| Delete current Name Level    | Alt+Down       | Option+Down    |

### Known *Rename Layer/s Layer* Bugs

{% hint style="warning" %}
[There are known *Rename Layer/s* bugs. Click here to read up on their descriptions as well as potential workarounds.](/known-bugs#rename-layer-s-bugs)
{% endhint %}

## Rename Layers by Number

<div align="left"><img src="/files/-MQw96QDexQoTkuDChby" alt=""></div>

Renames selected layers or project panel items by number (no default shortcut; Win+Mac: *Shift-Click* on the *Renaming Button*).

![Left: Before renaming layers by number; Right: After renaming layers by number](/files/-MSs13kXG0E4S6NsukiC)

Sometimes you have a lot of assets and you want to number their names. That's what *Rename Layers by Number* is for.

### Renumber Layers

First, rename a layer to the first name, select it and after that, select all following layers in order. Then execute *Rename Layers by Number*.

If the first layer name starts with a higher iteration than 1, *Rename Layers by Number* will start from that iteration on.

### Renumber Project Panel Items

**(Added in** [**version 2.0.4**](/releases#id-2-0-4)**)**

In order to rename project panel items, make sure to have no layer in your current comp selected, then select your project panel items and execute *Rename Layers by Number*.

{% hint style="warning" %}
**Important:** This will only work when you execute the function from the menu (not via shortcut).
{% endhint %}

In contrast to renaming layers, a dialog will pop up to define the first item name. (This is because renaming the first item before executing the function might shift the item in the panel to a completely different position due to the sorting mechanism of the project panel, hence making it more difficult to select all items in order.) Then apply the new name and all items will be renamed accordingly.

### Additional Renumbering Options

**(Added in** [**version 2.0.4**](/releases#id-2-0-4)**)**

Go to *Settings > Naming > When executing Rename Layers by Number:* in order to additionally define:

* The increment by which the renumbering should take place, e.g. an increment of 10 will number layers/items like this:
  * *My Layer 10*
  * *My Layer 20*
  * *My Layer 30*
  * etc.
* A suffix that should be kept, e.g. if your first layer/item is called *'My Layer 1 New'* and you enter the suffix *' New'*, the function will number the layers/items like this:
  * *My Layer 1 New*
  * *My Layer 2 New*
  * *My Layer 3 New*
  * etc.

{% hint style="info" %}
To quickly access the additional renumbering options, on the [Main Menu](/main-functions/main-menu), right-click on the *Rename Layers by Number* button and click on *Renaming Settings...*
{% endhint %}

## Rename to...

**(Added in** [**version 2.5.1**](/releases#id-2-5-1)**)**

Renames selected layers with a given renaming operation.

<figure><img src="/files/KPOuh5u70tljDhfJy98l" alt="" width="337"><figcaption></figcaption></figure>

To access this feature, right-click on the [Rename Layer/s](#rename-layer-s) button, then select *Rename to.*

You have the ability rename with these renaming operations:

* Rename to source name (if source is available)
* Replace part of the string with another string


# Relabeling

## Relabel Layer / Group / Keyframe <a href="#relabel-layer-s" id="relabel-layer-s"></a>

<div align="left"><img src="/files/-MQw9Gh459F5etAcAj0A" alt=""></div>

Relabels layers, groups and keyframes (Win: Ctrl+Shift+Space, Mac: Option+Space).

![Relabel Panel](/files/-MStA0Y3JWT5ziI5kS2A)

### Relabeling Groups, Layers & Keyframes

Unfortunately, labeling layers using AE's label dropdown is non-visual and a bit time-consuming. When executing *Relabel Layer/s*, however, a panel comes up with all label colors that you can see visually. Click on the desired color to apply it (or, since [version 2.0](/releases#2-0), you can also use of one the label ID shortcuts (1-9, A-G) to apply a label). When a group layer, or the group header, is selected and a label color is applied, the whole group gets relabeled. When the setting *Label Layers Outside Groups to 'None'* is deactivated, you can relabel non-group layers too.

As of [version 2.0](/releases#2-0), when you have keyframes selected, *Relabel Layer/s* will relabel the keyframe label color instead of the layer. (Only available if using AE 22.6 and upwards.) When Ctrl+Alt+clicking (Win) / Cmd+Option+clicking (Mac) on a color while keyframes are selected, all keyframes with the same label group within the comp will be relabeled to the new label color.

You can close the relabel panel by either clicking on empty space on the panel itself or by hitting *Escape*.

{% hint style="warning" %}
On some machines, an error might occur when trying to open the relabel panel. Go to [Known Bugs](/known-bugs#relabel-layer-s-bugs) for more information.
{% endhint %}

### Change Label Colors

To change a label color, you can *Shift+Click* on a color. This will open AE's color picker. After choosing a color, you will return to the relabel panel. If you want to apply the color directly after choosing it, *Ctrl+Click* or *Cmd+Click* on it.

{% hint style="info" %}
Be aware that changing a label color will affect all layers associated with the respective labeI ID and not just the previously selected layers.
{% endhint %}

An English name for the new label color will be saved automatically, based on the color picked. If you want to have control over the new color name, go to *Settings / Miscellaneous* and enable *When changing a Label Color, ask for new Color Name*.

If you *Alt+Click* or *Option+Click* on a label color, AE's label preferences will be opened.

### Change Labeling Layers Outside Groups to 'None' in Active Comp

![Button on the Relabel Panel to change Outside Labeling Setting](/files/-Md1_yHNvcrOxI-C-p--)

On the relabel panel, you can quickly change the setting *Label Layers Outside Groups to 'None' in Active Comp*. This is useful when you open up another comp and want to set a specific setting for it. For comps with a lot of groups, it is recommended to label layers outside groups to 'None' whereas comps primarily with layers and not groups, you might not want to label layers outside groups to 'None' since you otherwise couldn't tell those layers apart.

### Relabel Panel Shortcuts

<table><thead><tr><th width="241">Function</th><th width="226.33333333333331">Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td>Change Label Color</td><td>Shift+Click on Color</td><td>Shift+Click on Color</td></tr><tr><td>Change and Apply Label Color</td><td>Ctrl+Click on Color</td><td>Cmd+Click on Color</td></tr><tr><td>Open AE Label Color Preferences</td><td>Alt+Click on Color</td><td>Option+Click on Color</td></tr><tr><td>Relabel entire Keyframe Label Group in Comp <em>(added in v2.0)</em></td><td>Ctrl+Alt+Click on Color</td><td>Cmd+Option+Click on Color</td></tr><tr><td>Apply Label Color by Shortcut <em>(added in v2.0)</em></td><td>0 - 9, A - G</td><td>0 - 9, A - G</td></tr></tbody></table>


# Storing Layers

## Store Layers

<div align="left"><img src="/files/-MQw9VAwll4jY9xK3qEW" alt=""></div>

Stores the selected layers as a form of an extended clipboard (Win: \[1] Ctrl+Shift+6, \[2] Ctrl+Shift+7, \[3] Ctrl+Shift+8; Mac: no default shortcut).

{% hint style="danger" %}
*Note for Mac users and when using* [*Individual Scripts Mode*](https://workflower.constantin-maier.com/layer-functions/pages/-MQrDoLiIMsw-gaM_Mnu#individual-scripts-mode-windows-+-mac) *on Windows:*\
Since it is assumed that *Store Layers* is only used very infrequently (as compared to *Paste Stored Layers*), the default shortcut for S*tore Layers 1* has been removed in [version 1.1](/releases#1-1) to make room for other functions. Please execute *Store Layers 1* via the [Main Menu](/main-functions/main-menu) instead. (Or set a shortcut for it yourself.)
{% endhint %}

![Multiple Store Comps in Store Folder](/files/-MfsAXcek27GB3wkDxvn)

Sometimes, you're using the same layer/s over and over again in a project. When you're compositing a shot, you want to paste the base footage very frequently to do all kinds of manipulations to it. Or you need to use a set of assets multiple times. That's what *Store Layers* is supposed to be useful for. Just select the desired layer/s and hit *Store Layers*. The next time, you need the layer/s again, hit [Paste Stored Layers](/layer-functions/storing-layers#paste-stored-layers), preferably by the shortcut to be as quick as possible.

### How Store Layers works

When executing *Store Layers*, the selected layers will be copied to a new comp (a *Store Comp*). Because of the way *Store Layers* works, stored layers are available on a project basis. When you're opening a new project, the layers from the old project aren't stored anymore and therefore can't be pasted. When you're coming back to the project, though, the layers can be pasted again.

(Fixed in [version 1.0.5](/releases#1-0-5)) ~~You cannot move a Store Comp out of the Store Folder in the project panel. If you do, pasting stored layers doesn't work anymore.~~

### Storing multiple Sets of Layers

There are up to three *Store Comps* available, so you can define four different sets of layers you want to store. (*Store Layers 2* and *Store Layers 3* are only available via shortcut, or by executing [Store Layer/s by ID](#storing-layer-s-by-id).) When you store new layers in an already existing *Store Comp*, the old layers will be replaced by the new ones.

### Storing Layer/s by ID

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

To store layers to other IDs than 1 without executing a keyboard shortcut, you can execute *Store Layer/s by ID*. To do so, right-click on the *Store Layers*-button and select *Store Layer/s by ID*.

### Saving Global Store Comps

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

You can save (and later [load](#loading-global-store-comps)) a *Global Store Comp*. This means that a *Store Comp* is accessible across AE projects.

<figure><img src="/files/SxkuzrbCNa2GkV2AzAcv" alt=""><figcaption><p>Save Global Store Comp Dialog</p></figcaption></figure>

To do this, on the [Main Menu](/main-functions/main-menu), right-click on the *Store Layers-*&#x62;utton and click on *Save Global Store Comp*.

This will save one of your current *Store Comps* (either 1, 2 or 3) as a *Global Store Comp* so that you can open another project and then execute [Load Global Store Comp](#loading-global-store-comps) in order to load the *Store Comp* into the new project.

You may also (as shown on the dialog) store your currently selected layer/s to any of the three *Store Comps* before saving it as a *Global Store Comp*.

Additionally, it's possible to export your *Global Store Comp* to a file. This enables you to share your *Global Store Comp* with someone else who can quickly load the file via [Load Global Store Comp](#loading-global-store-comps) with *Import Global Store Comp from File* checked.

## Paste Stored Layers

<div align="left"><img src="/files/-MQw9N3nyo2h4Zzg-TeM" alt=""></div>

Pastes the previously stored layers (Win: \[1] Ctrl+Alt+6, \[2] Ctrl+Alt+7, \[3] Ctrl+Alt+8; Mac: \[1] macControl+6).

When you execute *Paste Stored Layers*, the layers, stored using [Store Layers](/layer-functions/storing-layers#store-layers), will be copied back into the current comp, above the topmost selected layer (or, when no layer is selected, to the top of the comp).

By default, layers will be pasted to the time they were originally stored. However, as of [version 2.5](/releases#id-2-5), you can choose to paste the layers to the current time indicator. Enable this setting by going to *Settings > Miscellaneous > When Pasting Stored Layers, paste to Current Time Indicator*.

### Pasting Stored Layer/s by ID

To paste *Stored Layers* from any other ID than 1 without executing a keyboard shortcut, you can execute *Paste Stored Layer/s by ID*. To do so, right-click on the *Paste Stored Layers*-button and select *Paste Stored Layer/s by ID*.

### Loading Global Store Comps

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Loads a *Global Store Comp* that was previously saved via [Save Global Store Comp](#saving-global-store-comps).

<figure><img src="/files/bThnM31V6edZZ4FAtX6K" alt=""><figcaption><p>Load Global Store Comp Dialog</p></figcaption></figure>

To do this, on the [Main Menu](/main-functions/main-menu), right-click on the *Paste Stored Layers-*&#x62;utton and click on *Load Global Store Comp*.

This imports the saved *Global Store Comp* and sets the project's *Store Comp* 1, 2 or 3 to it.&#x20;

You may also directly paste the layers of your loaded *Global Store Comp*.

Additionally, it's possible to import your *Global Store Comp* from a file by checking *Import Global Store Comp from File*. This requires a file previously saved via [Save Global Store Comp](#saving-global-store-comps) with Export *Global Store Comp to File* checked. You may use this feature to receive a *Store Comp* from someone you're working with.


# Tagging Layers

## Tag / Untag Layer/s

<div align="left"><figure><img src="/files/jokxvvTujluuX7yUdVJg" alt=""><figcaption></figcaption></figure></div>

**(Added in** [**version 2.0**](/releases#2-0)**)**

Tags or untags layers/groups using markers with a specified label color (Win: Ctrl+Shift+3; Mac: no default shortcut).

{% hint style="info" %}
*Note for Windows* [*Single Script Mode*](/main-functions/shortcuts#single-script-mode-windows-only) *users:*\
Due to AE now occupying Ctrl+Shift+B, the default shortcut for *Tag / Untag Layer/s* has been changed from to Ctrl+Shift+3 in [version 2.5.1](/releases#id-2-5-1).
{% endhint %}

<figure><img src="/files/vEb0C6TRx70LhxmJghRE" alt=""><figcaption><p>Tag / Untag Layer/s Panel</p></figcaption></figure>

### Adding / Removing Tags

Firs&#x74;**,** select the layers you want to tag or untag. Then execute *Tag / Untag Layer/s* and click on the desired label (or press one of the label ID shortcuts (0-9, A-G)). You will now be asked what name you want to give to the *Tag Group*. Afterwards, *Workflower* will add a marker named

> *\[\[TAG: `Tag Name`]]*

to the layer/s, or remove the marker if a marker with the selected label already exists on the layer.

<figure><img src="/files/hWw4IBoxclWQQHAxoKrH" alt=""><figcaption><p>Layers and Groups tagged with various Tag Groups</p></figcaption></figure>

{% hint style="danger" %}
Do **not** change the naming structure of the tag - *\[\[TAG: `Tag Name`]]* - otherwise, *Workflower* won't be able to identify the tag.
{% endhint %}

You may also delete tag markers by right-clicking on a marker in AE's timeline and selecting AE's *Delete This Marker* or *Delete All Markers*.

Multiple tags with different label colors per layer/group are possible.

### Performing Actions

After tagging, execute [Perform on Action Tagged Layer/s](#perform-action-on-tagged-layer-s) to execute an action on *Tagged Layers*.

Execute [Activate / Deactivate Tag Group 1 / 2 / 3](#activate-deactivate-tag-group) to (de)activate *Tag Group 1, 2* or *3* if you quickly want to perform that action without the need for going through the tagging panel.

### Tagging Panel

On the panel, there's an abbreviation of the Tag *Group Name* as well as the layer count visible.&#x20;

Hover over any of the *Tag Groups* on the panel to see a tooltip with the full name as well as a list of all contained layers:

<figure><img src="/files/vpoyuVDmQzJuRKYJi3Yx" alt=""><figcaption><p>Tooltip with Tag Group Name and contained Layers</p></figcaption></figure>

You can rename existing *Tag Groups,* remove entire *Tag Groups,* or re-assign another label color to a *Tag Group* by *Shift*-clicking on a label color on the panel.

You may change the tag label color afterward by double-clicking on the marker in AE's timeline and changing the label color via AE's dropdown. However, be aware that all *Tagged Layers* of a *Tag Group* will inherit the name of the top-most *Tagged Layer*. So, if you change the marker label color of the top-most *Tagged Layer* of a *Tag Group* and you then execute *Refresh Layout*, all other *Tagged Layers* will be named like the top-most layer.

You can close the tagging panel by either clicking on empty space on the panel itself or by hitting *Escape*.

### Refreshing Timing of Tag Markers

In case you moved layers and *Tag Markers* are not at the position they used to be and might even be out of the composition scope, you can just execute [Refresh Layout](/main-functions/layout#refresh-layout) and now all *Tag Markers* will move back to the position they were originally created at.

### Tag / Untag Layer/s Shortcuts

<table><thead><tr><th width="302">Function</th><th width="214.33333333333331">Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td>Rename / Remove / Re-Assign Tag Group</td><td>Shift+Click on Color</td><td>Shift+Click on Color</td></tr><tr><td>Tag / Untag Layer/s by Shortcut</td><td>0 - 9, A - G</td><td>0 - 9, A - G</td></tr></tbody></table>

## Perform Action on Tagged Layer/s

<div align="left"><figure><img src="/files/OgSotJewceTnsjpUtQNl" alt=""><figcaption></figcaption></figure></div>

**(Added in** [**version 2.0**](/releases#2-0)**)**

Performs an action on *Tagged Layers* as specified by [Tag / Untag Layer/s](#tag-untag-layer-s) (Win: Ctrl+Shift+2; Mac: macControl+R).

<figure><img src="/files/dKkeyqoQhyOlqqZww4pg" alt=""><figcaption><p>Perform Action on Tagged Layer/s Panel</p></figcaption></figure>

Possible actions are:

1. Activating (= enable & solo if necessary) / Deactivating
2. Enabling / Disabling
3. Soloing / Unsoloing
4. Locking / Unlocking
5. Selecting / Deselecting
6. Toggling effects
7. Toggling motion blur
8. Jump to the top-most layer of a *Tag Group*

When toggling motion blur, *Workflower* will also consider motion blur effects on a layer and toggle their visibility. The following motion blur effects will be considered:

* CC Force Motion Blur
* Pixel Motion Blur
* RSMB
* RSMB Pro
* RSMB Pro Vectors

As with the [Tag / Untag Layer/s](#tag-untag-layer-s) panel, if you hover over any of the *Tag Groups* on the panel, you can see a tooltip with the full *Tag Group* name as well as a list of all contained layers:

You can close the tagging panel by either clicking on empty space on the panel itself or by hitting *Escape*.

### State Behavior

If there is any layer/group within the *Tag Group* that has a disabled state of the specified property/action (= all but one layer is locked), *Workflower* will enable the state for all layers (= lock all layers). If all properties are enabled (= all layers are locked), *Workflower* will disable them (= unlock all layers).

However, you can also force the states to be either on or off, no matter what the state was before by center-clicking on a color (= turning the states **on**), or by right-clicking on a color (= turning the states **off**).

### Perform Action on Tagged Layer/s Shortcuts

You can also use shortcuts to select one of the actions as specified in \[ ] after the action name.

Additionally, you can use one of the label ID shortcuts (0-9, A-G) to directly select one of the *Tag Groups*.

Yet another way to use shortcuts is to hold down one of the modifier keys (as laid out on the panel itself) and to click on one of the *Tag Groups* to directly execute an action on them.

#### State Shortcuts

<table><thead><tr><th width="242">Function</th><th width="243.33333333333331">Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td>Toggle States when performing Action</td><td>Left-Click on Color</td><td>Left-Click on Color</td></tr><tr><td>Enable States when performing Action</td><td>Center-Click on Color</td><td>Center-Click on Color</td></tr><tr><td>Disable States when performing Action</td><td>Right-Click on Color</td><td>Right-Click on Color</td></tr></tbody></table>

#### Action Shortcuts (to apply directly)

<table><thead><tr><th width="241">Function</th><th width="243.33333333333331">Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td>Activate / Deactivate</td><td>Ctrl+Click on Color</td><td>Cmd+Click on Color</td></tr><tr><td>Solo / Unsolo</td><td>Alt+Click on Color</td><td>Option+Click on Color</td></tr><tr><td>Select / Deselect</td><td>Ctrl+Alt+Click on Color</td><td>Cmd+Option+Click on Color</td></tr><tr><td>Jump To</td><td>Ctrl+Shift+Click on Color</td><td>Cmd+Shift+Click on Color</td></tr><tr><td>Continue to Perform Actions</td><td>Ctrl+Alt+Shift+Click on Color</td><td>Cmd+Option+Shift+Click on Color</td></tr></tbody></table>

#### Action Shortcuts (to select on Panel)

<table><thead><tr><th width="244">Function</th><th width="242.33333333333331">Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td>Activate / Deactivate</td><td>T</td><td>T</td></tr><tr><td>Enable / Disable</td><td>N</td><td>N</td></tr><tr><td>Solo / Unsolo</td><td>O</td><td>O</td></tr><tr><td>Lock / Unlock</td><td>L</td><td>L</td></tr><tr><td>Select / Deselect</td><td>S</td><td>S</td></tr><tr><td>Toggle Effects</td><td>F</td><td>F</td></tr><tr><td>Toggle Motion Blur</td><td>M</td><td>M</td></tr><tr><td>Jump To</td><td>J</td><td>J</td></tr></tbody></table>

#### Miscellaneous Tagging Shortcuts

<table><thead><tr><th width="244">Function</th><th width="241.33333333333331">Shortcut (Win)</th><th>Shortcut (Mac)</th></tr></thead><tbody><tr><td>Rename / Remove Tag Group</td><td>Shift+Click on Color</td><td>Shift+Click on Color</td></tr><tr><td>Perform Action on Tag Group by Shortcut</td><td>0 - 9, A - G</td><td>0 - 9, A - G</td></tr></tbody></table>

## Activate / Deactivate Tag Group 1 / 2 / 3

<div align="left"><figure><img src="/files/rYiUUoa7dGQ2cUwvIEek" alt=""><figcaption></figcaption></figure></div>

**(Added in** [**version 2.0**](/releases#2-0)**)**

Quickly activates and deactivates Tag *Group 1, 2,* or *3* without the need for going through the tagging panel (Win: \[1] Alt+F3, \[2] Alt+F5, \[3] Alt+F6; Mac: no default shortcut).

Possible usage: You might want to put render-intensive layers in *Tag Group 1* or *2* (like grain, chromatic aberration, color correction, etc.) and quickly activate/deactivate with this function. That way, you can easily preview/hide those effects without interrupting your workflow.

{% hint style="warning" %}
*Activate / Deactivate Tag Group 3* is not available in the main menu and can only be executed via the shortcut.
{% endhint %}


# Pre-Rendering

## Pre-Render

<div align="left"><img src="/files/q5Gz8NlpWoniZ66KUQb9" alt="" width="30"></div>

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Pre-renders the selected groups, regular layers, [Precomp Clones](/layer-functions/cloning#clone-and-precomp) & precomps. (Win: Ctrl+F2, Mac: no default shortcut).

<figure><img src="/files/RWu4J3V2UxliLHq0h4s2" alt="" width="228"><figcaption><p>Pre-Rendered Group Clone as indicated by the  Ｒ  Icon</p></figcaption></figure>

Renders in selection order. Already rendered elements will be used in containing elements - that's why you preferably want to select (= render) a *Precomp Clone* that's contained in another one before the containing clone.

In addition to selected layers, the function also renders selected precomp items in the project panel (if no layer in your current comp is selected).

When pre-rendering a group or regular layer, the function effectively renders group's/layer's *Precomp Clone*, so if they don't have an existing, corresponding clone, it will be created.

After finishing, the render will be set as an AE proxy to the project item of the *Precomp Clone* or precomp.

{% hint style="info" %}
Please note that there is a difference between an **AE Proxy** and a **WF Proxy**:

All *Workflower* pre-renders will be set as an *AE Proxy* to the pre-rendered *Precomp Clone* or precomp.

A *WF Proxy* is a lower-quality version of a pre-render that can be rendered additionally (if enabled). You can [toggle the WF Proxy on and off](#show-hide-pre-render-wf-proxy).

This means that both the regular render AND the *WF Proxy* render will be set as an *AE Proxy*.
{% endhint %}

To customize the image format, potential WF proxy, footage interpretation, output path and more, go to the [Pre-Rendering Settings](#pre-render-settings).

To create a new pre-render version, simply execute the function again. The old version will be deleted from disk (can be disabled in the *Pre-Render Settings*).

With no layer selected, the *Pre-Render* function pre-renders either entire the comp or all groups in comp. Renders the latter from bottom to top. To exclude certain groups when pre-rendering all groups, use [Mark Pre-Render State](#mark-pre-render-state) and choose to skip.

Pre-rendered [Group Clones](/layer-functions/cloning#group-clone) are identifiable by a capital Ｒ icon. Pre-rendered precomp layers, pre-rendered [Dependent Clones](/layer-functions/cloning#duplicate-and-create-dependent-precomp-clone) as well as pre-rendered group headers are identifiable by a lowercase ｒ icon:

<figure><img src="/files/sFHAgt1O2izVz49Rmj4x" alt=""><figcaption><p>Top: Pre-Rendered Group Clone as indicated by the  Ｒ  Icon; Bottom: Pre-Rendered Dependent Clone as indicated by the  ｒ  Icon</p></figcaption></figure>

### Final Rendering

{% hint style="warning" %}
For visible pre-renders to appear in final render, set AE's *Proxy Use* to *Current Settings* in your final render's *Render Settings* (or to any other setting with AE proxy usage).
{% endhint %}

### Showing / Hiding Elements

To show actual layers of pre-rendered *Precomp Clone*, execute [Show Clone Layers](/layer-functions/cloning#show-clone-layers) (Ctrl/Cmd+click on 'Cloning'-button):

<figure><img src="/files/FRClJVcpJEcg1kdbp2O5" alt="" width="228"><figcaption><p>Shown Clone Layers of Pre-Rendered Group Clone as indicated by the  ≫  Icon</p></figcaption></figure>

To show the *Precomp Clone* itself or precomp itself instead of the pre-render, execute [Show / Hide Pre-Render](#show-hide-pre-render):

<figure><img src="/files/Qo4gEfjiUDUwHYlHeeD0" alt="" width="228"><figcaption><p>Hidden Pre-Rendered Group Clone as indicated by the  -- Ｒ --  Icon</p></figcaption></figure>

To show/hide WF Proxy of pre-render, execute [Show / Hide Pre-Render WF Proxy](#show-hide-pre-render-wf-proxy):

<figure><img src="/files/2fs8GRQTuETqdT8E63HV" alt="" width="228"><figcaption><p>Shown WF Proxy of Pre-Renderd Group Clone as indicated by the  ＰＲ  Icon</p></figcaption></figure>

### Unset or Delete Pre-Render

To either unset or delete a pre-render, select the desired layers with pre-render and execute [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group).

It will give you the option to either:

* Unset the pre-render but keep the layer as well as the pre-render file on disk
* Remove the layer but keep the pre-render file on disk
* Remove the layer as well as remove the pre-render file on disk

### Pre-Rendering Trimmed Elements

By default, *Workflower* will pre-render only the portion of in- and out-points of all layers within the pre-render element combined (whether it be a layer, group, clone or precomp).

Pre-rendering trimmed elements, however, requires [FFmpeg](https://www.ffmpeg.org/) to be installed. In case, FFmpeg was not installed successfully during the initial Installation of *Workflower*, you can install it manually by going to *Settings > Pre-Rendering > Miscellaneous*. If FFmpeg is not installed, the entire duration will be rendered.

Tip for trimming a comp to be rendered: To quickly trim all layers within a comp to a certain area (without expanding trims), you can set AE's work area to it and then execute [Trim Layer to Layer](/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-1) with no layer selected.&#x20;

Please note: Concerning video files (not image sequences), elements will only be rendered trimmed when the in-point is more than 60 frames into the composition. Given a short in-point like this, rendering those empty frames using AE is the more efficient method. However, on in-points longer than this, the missing empty frames will be concatenated using FFmpeg.

### Pre-Render Settings

<figure><img src="/files/Q1w0y7TzRurzoNh3xJJz" alt="" width="563"><figcaption><p>Pre-Render Settings</p></figcaption></figure>

The *Pre-Render Settings* allow you to customize the format, output, performance and miscellaneous settings.

Please note that format and output settings are saved on a project-basis whereas performance and miscellaneous settings are saved across the entire application. To make the current format and output settings the standard for all new projects, click on *Current Settings to Default in New Projects*. Shift+click on the button to reset the default to the standard settings.

You may save and load format and output settings as *Pre-Render Profiles*.

All Pre-Render output module templates are created with a *Straight (Unmatted)* alpha. This is highly recommended too when creating your own templates. Altough *Premultiplied (Matted)* is possible to use too, only *Straight (Unmatted)* guarantees to retain information beyond the rendered alpha matte.

To quickly access the *Pre-Render Settings* from the [Main Menu](/main-functions/main-menu), right-click on the *Pre-Render* button. Additionally, you have access to other features by holding one of the modifier keys when hovering over the *Pre-Render Settings...*-button:

* Shift+Click: *Open Pre-Render Path*
* Ctrl/Cmd+Click: *Open Currently in Timeline Selected Pre-Render in File Browser...*
* Alt/Option+Click: *Find / Remove Pre-Renders in Folder Path*

<figure><img src="/files/1MHmLCqFqfvYjo0O2Ke2" alt="" width="563"><figcaption></figcaption></figure>

### Find / Remove Pre-Renders in Folder Path

<figure><img src="/files/MktFuhRKqWDNmUWvCWTF" alt="" width="370"><figcaption><p>Find / Remove Pre-Renders Dialog</p></figcaption></figure>

If you want to find unconnected pre-rendered files (in case you switched your computer for example), or you want to remove old pre-renders, you can do so by going to *Settings > Pre-Rendering > Output* and click on *Find / Remove Pre-Renders in Folder Path* (or right-click on the *Pre-Render* button, then *Alt/Option+click* on *Pre-Render Settings*...)

{% hint style="danger" %}
Please note that removing pre-render files cannot be undone!
{% endhint %}

### Known *Pre-Render* Bugs

#### Windows

When executing *Pre-Render*, sometimes *Workflower* queues the renders but then stops before starting the render with this error: *An unexpected error occurred while exporting a composition. Error Code: 3. Please restart After Effects and retry the export.*

<figure><img src="/files/rJuTYQIjwoIALRelKFWy" alt=""><figcaption></figcaption></figure>

*Workaround:* To our knowledge, this problem only occurs very infrequently. Simply restart After Effects or your computer, and try executing *Pre-Render* again. This should get rid of the error. If it doesn't, please contact customer support.

#### Mac

When executing *Pre-Render*, sometimes After Effects freezes after finishing the render, and it has to be force quit it or it crashes with this error message: *Sorry, an error occurred.*

<div data-full-width="false"><figure><img src="/files/nh0skhQIcHGH2AR3BS0n" alt="" width="375"><figcaption></figcaption></figure></div>

*Workaround:* In our testing, this problem only occurs infrequently. Simply restart After Effects or your computer, and try executing *Pre-Render* again. (Sometimes, you have to restart a second time.) This should get rid of the error. If it doesn't, please contact customer support.

#### Other known *Pre-Render* Bugs

{% hint style="warning" %}
[There are other](/known-bugs#pre-render-bugs)[ known *Pre-Ren*](/known-bugs#pre-render-bugs)[*der* bugs. Click here to read up on their descriptions as well as potential workarounds.](/known-bugs#pre-render-bugs)
{% endhint %}

## Show / Hide Pre-Render

<div align="left"><img src="/files/dEmYplITNhWT38Nvr6WC" alt="" width="30"></div>

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Shows or hides pre-renders. (Win: Ctrl+Alt+Space, Mac: no default shortcut).

<figure><img src="/files/Qo4gEfjiUDUwHYlHeeD0" alt="" width="228"><figcaption><p>Hidden Pre-Rendered Group Clone as indicated by the  -- Ｒ --  Icon</p></figcaption></figure>

Needs either pre-rendered *Precomp Clone*, group or contained layer of group with pre-rendered *Precomp Clone*, or pre-rendered precomp layer selected.

With no layer selected, shows/hides all pre-renders in comp or comp's pre-render.

{% hint style="warning" %}
If you want to show the layers of a pre-rendered group/clone instead of the *Precomp Clone* itself, please use [Show Clone Layers](/layer-functions/cloning#show-clone-layers).
{% endhint %}

## Show / Hide Pre-Render WF Proxy

<div align="left"><img src="/files/JzOEAOEobkp1kB7AKGd7" alt="" width="30"></div>

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Shows or hides WF proxies (= Workflower's proxies) of pre-renders.

<div align="center" data-full-width="false"><figure><img src="/files/2fs8GRQTuETqdT8E63HV" alt="" width="228"><figcaption><p>Shown WF Proxy of Pre-Renderd Group Clone as indicated by the  ＰＲ  Icon</p></figcaption></figure></div>

Needs *Precomp Clone* or precomp layer with pre-render WF proxy selected.

With no layer selected, shows/hides all WF proxies in either your comp or the entire project.

Before pre-rendering, it is recommended to hide all WF proxies in order to pre-render with full quality.

{% hint style="warning" %}
To avoid confusion with *After Effects'* proxies, *Workflower's* pre-render proxies are consistently called ***WF Proxies*** (as opposed to ***AE Proxies***).
{% endhint %}

### Show / Hide Footage AE Proxies

If you want to show or hide only footage AE proxies, right-click on the *Show / Hide Pre-Render WF Proxy* button and click on *Show/Hide Footage AE Proxies*.

## Push Frame to Photoshop

<div align="left"><img src="/files/OEqhdy9EpAzVuIDlmTWk" alt="" width="30"></div>

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Renders the current frame as Photoshop file, opens it in Photoshop and imports it into After Effects' timeline (only available via [Main Menu](/main-functions/main-menu): Alt/Option-click on *Pre-Render*-button).

The file is opened in the Photoshop version matching your After Effects version (otherwise the latest installed Photoshop version).

Customize the format in the *Pre-Rendering* settings. It's recommended to use *Straight (Unmatted)* alpha settings as Photoshop doesn't recognize a premultiplied alpha properly.

*Push Frame to Photoshop* always uses the *Main Render Settings* as well as the *Pre-Render* output pat&#x68;*.*

{% hint style="info" %}
*If you want to only push certain layers to Photoshop, you can solo them in your AE timeline before pushing them.*
{% endhint %}

## Mark Pre-Render State

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Marks a pre-render element with a specific render state (only available via [Main Menu](/main-functions/main-menu): Right-click on [Pre-Render](#pre-render)-button, then click on *Mark Pre-Render State*).

<figure><img src="/files/Ve6ahGgwEZXtjDG1HO6Z" alt="" width="223"><figcaption><p>Mark Pre-Render State Dialog</p></figcaption></figure>

### Pre-Render Still Only

Marks an element (group, *Precomp Clone* or precomp) to only render a still.

<figure><img src="/files/1YXvGy1yYBvTWpaMDHGv" alt=""><figcaption><p>Group 'BG' marked to Pre-Render a Still Only</p></figcaption></figure>

The function uses the [Photoshop output module](#push-frame-to-photoshop).

This function adds a marker named *\[\[\[STILL PRE-RENDER]]]* to the element. Do not modify or remove this marker as only the exact name signals the still state.

Remove the still state by executing the function again.

### Skip when Pre-Rendering All

Marks a group to be skipped when pre-rendering all groups:

<figure><img src="/files/PLD8HzLeIhuLWllqyRa2" alt=""><figcaption><p>Group 'DESPILL' marked to be skipped when Pre-Rendering</p></figcaption></figure>

Useful on groups that only contain utility layers, groups with only very few layers that don't need pre-rendering, or groups with adjustment layers (since they can't be rendered only by themselves).

This function adds a marker named *\[\[\[SKIP PRE-RENDER]]]* to the group header. Do not modify or remove this marker as only the exact name signals the skip state.

Remove the skip state by executing the function again.


# Precomposing

## Precompose

<div align="left"><figure><img src="/files/VebSvM1AX5wminHF3gaE" alt=""><figcaption></figcaption></figure></div>

**(Added in** [**version 1.1**](/releases#1-1)**)**

Precomposes layers as well as converts groups to precomps and vice versa (Win: Ctrl+F1, Mac: macControl+C).

<img src="/files/WQIsjtjAp9HDIKRCAMHH" alt="&#x27;Precompose&#x27; Dialog" width="375">

Just like AE's *Pre-compose*, you can select your desired layers and execute Workflower's *Precompose*. There are a few additional features available:

* You can convert groups to/from precomps. For more on this, [see below](#converting-a-group-to-a-precomp).
* You can un-precompose a precomp, meaning it will just move the contained layers to the main comp without putting them into a group or applying any of the precomp's transforms, effects, etc.
* You can choose between three options for your precomp size:
  1. Comp size (+ potential margin)
  2. Layer size/s (+ potential margin)
     * You can either crop the precomp to the layers' alpha or their source dimensions. The "source" of text and shape layers is their original shape without any effects.
     * There are some limitations when cropping the precomp to layer size/s. [See below for more info](#limitations_crop_layer).
  3. Custom size
* You can choose to set the start timecode of the precomp to zero.
* You can set a [custom color label setting for your precomp](/layer-functions/relabeling#change-labeling-layers-outside-groups-to-none-in-active-comp).
  * This can be useful when you use the option to color label your layers to grey in your main comp but, when precomposing, you just want to precomp a small number of layers and therefore **don't** want to color label your layers to grey in the precomp.
* As of [version 2.0](/releases#2-0), you choose to precompose each selected layer individually.
* As of [version 2.0](/releases#2-0), you can add handles to the precomp to its in and out point when having *Adjust Composition Duration to the Span of the Selected Layers* checked. When you only want to precompose a single layer, it will extend the precomposed layer's in and point too. When you have multiple layers, it will simply extend the precomp's in and out point.
* As of [version 2.0](/releases#2-0), you can choose to [rig multi-pass layers from a selected precomp](/layer-functions/miscellaneous-layer-functions#rig-multi-pass).
* As of [version 2.5](/releases#id-2-5), you have the ability to update all layer references in expressions within the entire project to new comp. Works in every precompose or unprecompose action.
* As of [version 2.5](/releases#id-2-5), there are [several comp-wide features](#additional-comp-wide-features) available when executing *Precompose* with no layer selected.
* As of [version 2.5](/releases#id-2-5), if the main comp has an AE Proxy set, the AE Proxy will be removed from the new precomp (AE typically won't remove it).

Additionally, you might prefer *Workflower's Precompose* over AE's *Pre-compose* since you would have to refresh the layout within your main comp and the precomp after precomposing and *Workflower* hence reduces these two clicks.

### Converting a Group to a Precomp

![Group converted to a Precomp, with Transforms, Opacity and Effects transferred](/files/6r0Ci2KwC99XnNVytol9)

To convert a group to a precomp, simply select the group header, execute *Precompose* and select *Convert Group to Precomp*.

The group will be converted to a group and the precomp layer will inherit these properties:

* Transform properties of the group header will be transferred to the precomp layer. (Parenting needs to be enabled for this.)
* If the group header is 3D, the precomp will be turned into 3D as well.
  * By default, *Collapse Transformation* will be enabled for the precomp so that layers will retain their original position in 3D space.
  * If your group layers are distributed along a flat plane, you can enable *Don't Collapse Transformation & Stick Layers to Group Header Z-Position*, to&#x6F;*.* That way, you avoid collapsing the transformations and all layers within the precomp will be turned into 2D.
* If [Group Opacity](/group-functions/miscellaneous-group-functions#group-opacity) is enabled, it will be applied to the precomp layer too.
* If [Layers respect Group In/Out](/group-functions/miscellaneous-group-functions#layers-respect-group-in-out-point) is enabled, the precomp layer will be trimmed accordingly.
* All effects on a [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers) or on the group header will be added to the precomp layer.
* If you have a [Group Matte](/layer-functions/matting#group-matte), it will be applied to the precomp layer:
  * If the *Group Matte* refers to the *Group Matte* layer itself, it will be added as a track matte to the precomp layer.
  * If the *Group Matte* refers to the masks on the group header, the masks themselves will be applied to the precomp layer.
  * If the *Group Matte* refers to an external layer, it will added via a [Matte Merge](/layer-functions/matting#merge-mattes) to layer to the precomp layer.
* If you have a [Group Clone](/layer-functions/cloning#group-clone), effects on it will be transferred to the precomp layer. Additionally, all layers above the *Group Clone* (like a track matte) will be copied above the precomp layer as well. If the Group Clone has transformations enabled, they will be copied to the precomp layer too.
* If contained layers have motion blur enabled, motion blur of the precomp layer will be turned on as well.
* All connections on [Precomp Clones](/layer-functions/cloning#clone-and-precomp), [Linked Adjustment Layers](/layer-functions/adjustment-layers#create-linked-adjustment-layer), [Group Mattes](/layer-functions/matting#group-matte), and [Clones in Comp](/layer-functions/cloning#clone-in-comp) will be refreshed within the precomp.

### Converting a Precomp to a Group

![Precomp converted to Group, with Transforms, Opacity and Effects transferred](/files/W48rUdDGQ9HZ8NRAk7I8)

To convert a group to a precomp, simply select the precomp, execute *Precompose* and select *Convert Precomp to Group*.

The precomp will be converted to a group and the group will inherit these properties:

* If the precomp layer has modified transform properties, the group header will enable [Parent Layers to Group](/group-functions/parent-group-layers#parent-layers-to-group) and all transform properties will be transferred to it.
* If the precomp layer has a modified opacity, [Group Opacity](/group-functions/miscellaneous-group-functions#group-opacity) will be enabled and the opacity values will be copied.
* If the precomp layer is 3D, the group header will be turned into 3D as well as all contained layers.
* If the precomp layer is trimmed, [Layers respect Group In/Out](/group-functions/miscellaneous-group-functions#layers-respect-group-in-out-point) will be enabled and the group trimmed accordingly.
* If the precomp has effects, a [Group Linked Adjustment Layer](/layer-functions/adjustment-layers#group-linked-adjustment-layers) will be created and the effects transferred to the group header. (If the effects contain properties that were [converted to comp size](/layer-functions/adjustment-layers#convert-property-to-comp-size) from a prior *Linked Adjustment Layer*, the effects will be transferred to the *Group Linked Adjustment Layer* instead of the group header.)
* If your precomp layer has a track matte, a [Group Matte](/layer-functions/matting#group-matte) will be created and linked to the track matte layer. If the precomp layer has masks, they will be transferred to the group header and the *Group Matte* linked to the group header.
  * Please be aware that *Workflower* can only either convert your precomp's masks or the track matte to the *Group Matte*. If your precomp layer has both, please either copy the masks to the track matte or use the *Set Matte* effect instead of the track matte.
* If the precomp layer has motion blur enabled, the motion blur of all contained layers will be enabled as well.
* All connections on [Precomp Clones](/layer-functions/cloning#clone-and-precomp), [Linked Adjustment Layers](/layer-functions/adjustment-layers#create-linked-adjustment-layer), [Group Mattes](/layer-functions/matting#group-matte), and [Clones in Comp](/layer-functions/cloning#clone-in-comp) will be refreshed within the group.

### Limitations when Cropping to Layer Size/s <a href="#limitations_crop_layer" id="limitations_crop_layer"></a>

![Precomp cropped to Layer Sizes (+ Margin)](/files/g3xUNQf5migdlTdlPdyO)

Please be aware that there are some limitations when using *Layer Size/s*:

* Depending on the layer size/s, it can take a while to calculate the new precomp size.
* Only the size at the current time can be considered.
* Cropping to the layers' alpha will not be completely accurate. That's why *Workflower* will add a margin of \~100 pixels so that nothing gets cropped off. The effectively visible margin on each side of the comp may vary.
* When effects (like a blur or transform) extend the layer's source bounds by more than 50-80%, *Workflower* will not be able to crop beyond that.
  * This should be a fringe case since your alpha very often is smaller than the source bounds (at least if it's not a text or shape layer) but if you see that something has been cropped off, you can always undo your action and add a manual margin when precomposing again.
* When precomposing 3D layers and using *Layer Size/s*, cropping and repositioning will not work correctly in a lot of circumstances.
* If you want to use *Layer Size/s* when converting a 3D parent group to a precomp,  you need to enable *Don't Collapse Transformation & Stick Layers to Group Header Z-Position*.
* Since the precomp's position will have to be shifted after cropping it to its contained layers, *Workflower* will do its best to keep everything at its position. However, the adjusted position might not be correct in every instance. For example, when you have expressions on your layers relating to the transforms, the layers might not be moved into the correct position. Convert the expressions to keyframes beforehand if you want to retain the correct position.

### Additional Comp-Wide Features

As of [version 2.5](/releases#id-2-5), if you have no layer selected and you execute *Precompose*, you have several comp-wide features available:

* **Precompose all layers in comp**. Advanced precompose features for this function are disabled (except for updating expressions).
* **Precompose your current comp**.
* **Unprecompose all precomps** in your current comp.

## Change Comp Items

**(Added in** [**version 2.5.1**](/releases#id-2-5-1)**)**

Batch-changes attributes on all selected comp items in the project panel (right-click on the [Precompose](/layer-functions/precomposing#precompose) button, then select *Change Comp Items*).

<figure><img src="/files/fdfrfsuZNjPuVaIKA3Q2" alt="" width="375"><figcaption></figcaption></figure>

If you want to change attributes across many comps, it's tedious to go into every comp and change the attributes. This function allows you to change attributes across many comps at once.

It allows to change:

* Width
* Height
* Frame Rate
* Start Frame
* Duration (Frames)
* Drop Frame
* Shutter Angle
* Shutter Phase
* Motion Blur Samples/Frame
* Motion Blur Adaptive Limit
* Preserve Nested Frame Rate
* Preserve Nested Resolution
* Renderer
* Resolution Factor
* Frame Blending
* Motion Blur
* Work Area Start (Frames)
* Work Area End (Frames)


# Miscellaneous Layer Functions

## Reveal Layer Opacity

Reveals the opacity of the selected layers (Win: Alt+F1, Mac: macControl+3).

![Prime Clone Layers with revealed Opacity Slider](/files/-MST31HppB5j6XHoqFwV)

On *Prime Clone* layers, *Clones in Comp, Matte Merge* source layer&#x73;*, Group Matte* layer&#x73;*,* *Linked Adjustment Layers,* layers within a group with *Group Opacity* enabled, as well as group headers with *Group Opacity* enabled, AE's opacity slider is not usable anymore and is replaced by an opacity slider on a dedicated effect on the layer.

Because of this, though, it's not possible anymore to hit *T* to reveal the layer's opacity in the timeline. (It will only reveal the unusable slider.) *Reveal Layer Opacity* will, on the other hand, reveal the correct opacity slider of these layers.

On other layers, it will reveal the regular opacity slider. (Be aware, though, that *Reveal Layer Opacity* will take a bit longer to reveal the slider.)

If you execute *Reveal Layer Opacity*, all other open properties of the layer in the timeline will disappear and only the opacity will be revealed. If you select properties before executing the function, these selected properties will stay open.

If no layer is selected, opacity sliders of all layers in comp will be revealed.

As of [version 2.0](/releases#2-0), when you execute *Reveal Layer Opacity* while having properties (instead of a whole layer) selected, all contained opacity properties will be revealed too (e.g. *Clone Stroke Opacity* properties when having the *Paint* effect selected, or *Effect Opacity* property on every effect).

{% hint style="warning" %}
This function is not available in the main menu and can only be executed via the shortcut.
{% endhint %}

### Known *Reveal Layer Opacity* Bugs

{% hint style="warning" %}
[There are known *Reveal Layer Opacity* bugs. Click here to read up on their descriptions as well as potential workarounds.](/known-bugs#reveal-layer-opacity-bugs)
{% endhint %}

## Trim Layer to Keyframes <a href="#trim-layer-to-keyframes" id="trim-layer-to-keyframes"></a>

<div align="left"><figure><img src="/files/EXnV2rhptKGae94mJJib" alt=""><figcaption></figcaption></figure></div>

**(Added in** [**version 2.0**](/releases#2-0)**)**

Trims the selected layers to their first and last keyframe, respectively (no default shortcut; Win: *Ctrl+Click* on the *Paste Stored Layers Button*; Mac: *Cmd+Click* on the *Paste Stored Layers Button*).

If you have properties on the selected, the function will only trim to the keyframes of the selected properties.

If you have a layer opacity property selected (and no other property), the function will only trim the in point if the first keyframe has a value of 0% or the out point if the last keyframe has a value of 0%.

## Trim Layer to Layer <a href="#trim-layer-to-keyframes" id="trim-layer-to-keyframes"></a>

<div align="left"><figure><img src="/files/nwgXHtZT3ClEzZonbAUH" alt=""><figcaption></figcaption></figure></div>

**(Added in** [**version 2.0**](/releases#2-0)**)**

Trims the selected layers to each other (no default shortcut; Win: *Alt+Click* on the *Paste Stored Layers Button*; Mac: *Option+Click* on the *Paste Stored Layers Button*).

When two layers are selected, it trims the second layer to the first selected layer.

When more than two layers are selected, it offers two options:

1. Trim layers to the first selected layer
2. Trim the first selected layer to the in and out points of all other layers combined

(Added in [version 2.5](/releases#id-2-5) ->) With no layer selected, it trims all layers in comp to work area duration. This function only shrinks trims but doesn't extend layers.

## Create Control <a href="#trim-layer-to-keyframes" id="trim-layer-to-keyframes"></a>

<div align="left"><figure><img src="/files/8SgkZoTtWxVVbzoSMNWH" alt=""><figcaption></figcaption></figure></div>

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Creates a control null or transform control layer to the selected layer/s (only available via Main Menu: *Alt/Option+Click* on the *Parent Layers to Group-Button*).

### Creating Layer Nulls

With layer/s selected, creates a null & parents layers to it.

### Creating Point Control Nulls

With one layer selected **AND** point control properties on it selected, the function creates a null control layer to the point control property and links the point control via expression to it. This allows you to parent the null, with transforms properly converted from comp to layer space.

### Creating Transform Control Layers

With one layer selected **AND** the layer's transform property on it selected, the function adds a transform control effect to the layer, then creates a transform control layer and links the effect via expression to it. This allows you to transform the layer, without changing the layer's actual transforms. You can even enable 3D transforms on the transform control layer.

## Push Comp to Premiere

**(Added in** [**version 2.5**](/releases#id-2-5)**)**

Pushes the active comp or the currently selected project panel comp items to Premiere Pro via Dynamic Link (only available via Main Menu: Right-click on [Push Frame to Photoshop](/layer-functions/pre-rendering#push-frame-to-photoshop)-button, then click on *Push Comp to Premiere*).

It imports the comps into the Premiere Pro project panel but does not into the timeline.

Premiere Pro version needs to match After Effects version (i.e. needs to be in the same suite).

## Rig Multi-Pass Layers from Precomp <a href="#rig-multi-pass" id="rig-multi-pass"></a>

<div align="left"><figure><img src="/files/9iMXn7MQElhIkJTQ7hTA" alt=""><figcaption></figcaption></figure></div>

**(Added in** [**version 2.0**](/releases#2-0)**)**

When executing [Precompose](/layer-functions/precomposing#precompose) while having a precomp layer selected, you can choose to rig multi-pass layers.

<figure><img src="/files/0i0YWqdAlzGL9MzsBcpa" alt=""><figcaption><p>Rigged Multi-Pass Layers</p></figcaption></figure>

The function grabs all layers within the selected precomp and creates multi-pass layers from them in your current comp. They will be set up using *Essential Properties*.

Work within the created *Work* precomp and all passes in your current comp will be affected by the changes you make within the *Work* Precomp.

If the layers in your original precomp had an *EXtractoR* effect on them, all properties (*Black Point*, *White Point*, *UnMult*) will be transferred to your current comp via *Essential Properties*.

{% hint style="warning" %}
**Attention:** At the moment, it's not possible to add new passes to the rig afterwards.
{% endhint %}

## Delete Layer / Clone <a href="#delete-layer-clone-group" id="delete-layer-clone-group"></a>

<div align="left"><img src="/files/-MQw73SWKu85xPFR_5yC" alt=""></div>

To delete a regular layer or a [Precomp Clone](/layer-functions/cloning#clone-and-precomp) (and its clone comp), select those and execute [Delete Layer / Clone / Group](/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group).

## Duplicate Layer / Clone

<div align="left"><img src="/files/-MQw7-mLy0JQ6XFKfUe0" alt=""></div>

**(Added in version 1.1)**

To duplicate regular layers (with additional functionality compared to AE's *Duplicate*) or [Precomp Clones](/layer-functions/cloning#clone-and-precomp) (to either make them dependent or to create unique clones), select a regular layer or *Precomp Clone* and execute [Duplicate Layer / Clone / Group](/group-functions/create-and-duplicate-groups#duplicate-group).


