Skip to main content

1.4 Release Notes

Release date: 17th Oct 2022

File Version Bump

Scenes created in Cavalry 1.3.1 or older will be converted when opening them in Cavalry 1.4. The file will be copied to a new scene which will need saving – you'll notice the legacy scene will be named <yourSceneName> [Converted].cv on opening. Any scenes saved in 1.4 onwards will not be compatible with previous versions of Cavalry.

CPU Renderer

Due to performance issues with Filters and Shaders we have removed the CPU backend in Cavalry 1.4.

New Features


  • PRO Extrude - Add 2d extrusions to Shapes.
  • Connect Shape - New Auto-Bézier mode for drawing smooth curves between points.
  • Text along a Path - Position Text along a path. This differs from the Pathfinder in that it is not a deformer.
  • Scale to Fit Text Box - A new feature on the Text Shape. This scales the font size to keep large amounts of text inside the text box.
  • New Freeze Calculations attribute for Shapes. This can be found under the Advanced tab and can be used to 'pause' calculations in order to optimise Compositions.



Gradients - The Gradient Shader has been rewritten and now has several new features:

  • New Stop Interpolations - Blend Color Stops in a wider variety of ways.
  • New Jitter attribute - Add noise between Color Stops.
  • New Wrap UVs option - Wrap the gradient when there is not a Color Stop at position 0 or 1.
  • New Shape Gradient - A polygonal gradient created along a radius (centre out).

The Gradient Shader and Scrape Filter now include new Layer tools for interacting with attributes in the Viewport.


Scene Window

The Time Editor has been completely rewritten. Notable improvements include:

  • It's much faster to interact with.
  • You can now Option/Alt + click + drag Keyframes to duplicate them.
  • It's now possible to snap Keyframes/Visibility Clip Ends to other Keyframes/Visibility Clip Ends/Time Markers.
  • There is now an indication for Animation Curves that are set to loop.
  • Pinch to zoom on Trackpads.
  • New Time Markers.
  • New Beat Markers.
  • Custom Magic Easing Expressions - Set a custom expression for Magic Easing via the context menu in the Time Editor or Graph Editor.
  • When a Layer is positioned 'off screen' in the Time Editor new < or > indicators will appear to the left or right of the row. Clicking them will pan the view to reframe that Layer.
  • Known missing features (from 1.3.1):
    • Dragging sections of the keybar.
    • Contextual menu options for setting Visibility Clip start/ ends.
    • The transform tool no longer includes the ripple edit feature.

Render Manager

  • New Upload options added the new Advanced tab.
  • New Metadata - export metadata alongside any outputs.

Assets Window

  • PRO Image Smart Folder - Import an entire directory of Image Assets (stills, movies and image sequences) and then reference them by a 'key' removing the need to import and reference them all individually.
  • Audio Smart Folder [beta] - Import an entire directory of Audio Assets (.wav, .aiff) and then reference them by a 'key' removing the need to import and reference them all individually.


PRO You can now save encrypted scripts using the Save Encrypted... button in the JavaScript Editor. Once encrypted, the source will be obfuscated, but the scripts can still be read by the Scripts menu. Use this technique to distribute closed source scripts. The JavaScript editor has also been improved to auto-indent when creating newlines, and to autocomplete brackets.

New APIs

  • movePoint API for moving selected Editable Points by a relative amount.
  • setPointPosition API for moving selected Editable Points to a given position.
  • hasStroke, hasFill and getCurrentGeneratorType APIs.
  • preCompose, createCompReference and getCompFromReference APIs.
  • setFixedHeight(int) and setFixedWidth(int) added to all UI widgets
  • setBackgroundColor(string), setFontSize(int) and setTextColor(string) added to ui.Label()
  • addSeparator(string) added to ui.VLayout()
  • ui.ColorPicker() which offers an eye dropper button that can be used to pick colours from the screen.
  • ui.ColorWheel() which offers a basic colour wheel UI for use in Scripts.
  • ui.Slider()
  • getArrayCount(layerId:string, attrId:string) added to the api module to return the number of children in an array Attribute.
  • resetAttribute(layerId:string, attrId:string) and resetLayerAttributes(layerId:string) have been added to the api module.
  • getAppAssetsPath() method in the api module for returning the location of the App resources. This is useful for accessing things like Cavalry's icons for use in your scripts.
  • createTimeMarker(time:int) removeTimeMarker(markerId) getTimeMarkers() added to the api module.
  • onValueChanged() callback function added to the NumericField
  • api.runDetachedProcess(...) which will run a process in a separate thread (like an upload or ffmpeg compression).
  • api.makeFolder(...) which will create a folder on the file system.
  • setState() function for the ImageButton UI.
  • api.getPlatform() API. This will return either macOS or Windows.

Breaking change:

  • getSelectedAttributes() now returns an Object containing separate layerIds and attrIds.



  • Autosave now only saves if something has changed.
  • Improvements to how path direction is handled for Lottie export.
  • The viewport context menu (right click) has a new option Copy as JavaScript. This will copy the draw instructions for a shape, which can then be used in JavaScript to recreate the shape.
  • You can now set the Composition Background color by drag/dropping a swatch onto the viewport. Dropping a swatch over a shape will still set the colour of that shape.
  • Reverse Animation, Delete Animation and Align Keyframes have all been added to the Animation menu (and so can have their hotkeys set in the Shortcut Manager).
  • Reverse Animation now works on keyframe selections.
  • New Draw on top of Parent checkbox under the Advanced tab of all Shapes. Use this to reverse the default behaviour for draw order and hierarchies. Note that when this is unchecked, the children will not inherit the parent's Opacity.

User Interface

  • New Darker UI to improve contrast.
  • The menu item to open the Preferences Window menu has moved from the Window menu to the Edit menu on Windows. It remains in the Cavalry menu for macOS.
  • New Shelf items:
  • There's now a progress bar when loading scenes with many Assets.
  • UI Optimisations - the UI should have a reduced impact on playback when Update the UI During Playback is turned on.
  • Quick Add Window search improvements. The matching algorithm has been dramatically improved.
  • Quickly clear the Image Cache from the Preferences Window with the new Minimise Cache button.
  • Importing Image Sequences to the Assets Window should now be instant.
  • New option to Disconnect All Inputs from list attributes (e.g. the Duplicator's Input Shapes attribute).


  • Improvements to the Intersection Distribution to handle bézier to bézier intersections.
  • Multi-line commenting is now supported for the JavaScript Editor.
  • Compositions can now be set to loop.
  • New Composition Length attribute - this can be used in combination with Time Markers to set up a dynamic timeline.
  • Sound Behaviour [beta]:
    • New Maximum dB attribute - outputs the peak value of the audio asset.
    • New File Length attribute - outputs the duration of the audio asset.
  • New Offset attribute for the Image Sampler.
  • 3d Matrix now has alignment options.
  • The Bounding Box Utility now supports multiple Input Shapes.
  • Asset from Smart Folder - You can now reference Assets by Specific Index or Auto-Index.


  • Importing video formats (MP4, HEVC, WebM, APNG and GIF files) is now 5x faster. There is still more work to be done here.

We have made some changes to the graph in order to better handle cycles (e.g. creating connections/ hierarchies where a child can effect its parent, which then affects its child...). We are aware of some instances where connections that were allowed in 1.3.1 (and previous) are now no longer allowed so this may break some old scenes. There is no easy way to 'unpick' this as it's hard to predict every scenario but, while it should only affect a handful of people, please let us know if you suspect this may have affected any of your scenes in order to help us improve how we handle any such scenarios.

Legacy Scenes and the Image Smart Folder

On opening a file saved in 1.3.1 or previous where an Image Smart Folder is missing (e.g. is no longer in its original location on the file system), the scene will open but the Image Smart Folder will not appear in the Assets Window. Unfortunately there is no automatic way to recover this but following the steps below will reinstate the scene:

  1. Reimport the Image Smart Folder to the Assets Window.
  2. Load the Asset From Smart Folder Utility into the Attribute Editor.
  3. Drag the Image Smart Folder from the Assets Window into the Asset From Smart Folder Utility's Smart Folder Asset attribute.

If you have trouble locating the missing folder then you can find the original file path in the scene file. Open the .cv file in a Text Editor and at the top of the file you'll see some entries like:

"data": {
"filePath": "@assets/Cans"
"nodeId": "asset#10",
"type": "file"

The filePath entry shows the folder's name and its location when the file was last saved.

In the event that an Image Smart Folder is missing in scenes saved in 1.4, they will be marked as such and can be relinked as expected.

Notable Bug Fixes

  • Unicode characters (like é, â, ö) in a Windows User name were preventing sign in from working. This is now fixed.