Skip to content

v1.19.0 Changelog

December 13, 2023

Check our migration guide for more details on the changes.

Breaking Changes

  • The editor now sets all scopes directly for the selected target block. (Previously, the scope content/replace was set for the associated fill block instead.)
  • Use of the following scopes is being deprecated in favor of new, more granular scopes:
    • content/replace - Use a combination of fill/change and text/edit instead.
    • design/arrange - Use a combination of layer/move, layer/resize, layer/flip, and layer/rotate instead.
    • design/arrange/move - Use layer/move instead.
    • design/arrange/resize - Use layer/resize instead.
    • design/arrange/flip - Use layer/flip instead.
    • design/arrange/rotate - Use layer/rotate instead.
    • design/style - Use a combination of layer/opacity, layer/blendMode, appearance/adjustments, appearance/blur, appearance/effect, appearance/filter, appearance/shadow, shape/change, stroke/change, fill/change, and text/character instead.
  • Translations have been updated:
    • Removed the following keys:
      • scope.content.replace
      • scope.design.arrange
      • scope.design.style
    • Renamed the following keys:
      • scope.design.arrange.flip is now scope.layer.flip
      • scope.design.arrange.move is now scope.layer.move
      • scope.design.arrange.resize is now scope.layer.resize
      • scope.design.arrange.rotate is now scope.layer.rotate
    • Added the following keys:
      • component.placeholder.appearance.description
      • component.placeholder.appearance
      • component.placeholder.arrange.description
      • component.placeholder.arrange
      • component.placeholder.disableAll
      • component.placeholder.enableAll
      • component.placeholder.fill.description
      • component.placeholder.fill
      • component.placeholder.general.description
      • component.placeholder.general
      • component.placeholder.shape.description
      • component.placeholder.shape
      • component.placeholder.stroke.description
      • component.placeholder.stroke
      • component.placeholder.text.description
      • component.placeholder.text
      • scope.appearance.adjustments
      • scope.appearance.blur
      • scope.appearance.effect
      • scope.appearance.filter
      • scope.appearance.shadow
      • scope.fill.change
      • scope.layer.blendMode
      • scope.layer.opacity
      • scope.shape.change
      • scope.stroke.change
      • scope.text.character
      • scope.text.edit
  • Editor: Switched to using the new Graphic block for images, videos, shapes, etc… for a more unified experience across different design elements
  • Editor: Introduced a new Content Fill Inspector that allows switching the fill of Graphic blocks between video, image, and color
  • Editor: All of the Graphic blocks (shapes, images, videos, etc…) now support filters, effects, blurs and adjustments
  • Editor: UX/UI Improvements for both the Advanced and Default UI, as well as for the canvas actions
  • Engine: Replaced image, sticker, shapes/rect, shapes/line, shapes/ellipse, shapes/polygon, shapes/star, and vector_path blocks with a new, more composable graphic design block. Old scenes are automatically migrated when they get loaded. For a full list and detailed description of how to adapt to these changes, check out our documentation
  • Engine: Added optional shapeType, fillType and kind keys to our asset definitions. Fill type ids may not be set as the value of the blockType property any more. E.g. in order to create a video asset, blockType should now be set to //ly.img.ubq/graphic and fillType should be set to //ly.img.ubq/fill/video.
  • Engine/Web: Introduced new union types:
    • DesignBlockTypesShorthand, DesignBlockTypesLonghand, DesignBlockTypes for top-level design blocks.
    • ShapeTypesShorthand, ShapeTypesLonghand, ShapeTypes for shape blocks.
    • FillTypesShorthand, FillTypesLonghand, FillTypes for fill blocks.
    • EffectTypesShorthand, EffectTypesLonghand, EffectTypes for effect blocks.
    • BlurTypesShorthand, BlurTypesLonghand, BlurTypes for blur blocks.
    • BlockTypesShorthand, BlockTypesLonghand, BlockTypes for all blocks combined.
  • Engine/Web: The create API now expects an ID of type DesignBlockTypes instead DesignBlockType.
  • Engine/Web: The createFill API now expects an ID of type FillTypes instead of string.
  • Engine/Web: The getType API now returns an ID of type BlockTypesLonghand instead of DesignBlockType.
  • Engine/Web: The findByType API now expects an ID of type BlockTypes instead of DesignBlockType.
  • Engine/Web: The createShape API now expects and ID of type ShapeTypes instead of string.
  • Engine/Web: The createEffect API now expects and ID of type EffectTypes instead of string.
  • Engine/Web: The createBlur API now expects and ID of type BlurTypes instead of string.
  • Engine/Web: The DesignBlockType enum is now removed in favor of introducing a new alternative string-literal types that are more representative of our API signature.

Non Breaking Changes

  • UBQ: Add BlockAPI.isIncludedInExport and BlockAPI.setIncludedInExport to allow blocks to be excluded from the export process without having to rely on the properties API.
  • UBQ: All Cutouts have the always on top attribute by default.
  • Engine: Added createShape, hasShape, getShape, setShape APIs for changing the shape of a design block.
  • Engine: Added the graphic design block with support for the new shape APIs.
  • Engine: Added setKind, getKind and findByKind APIs for categorizing different design blocks of the same type with custom string tags.
  • Engine: Added the fill/changeType scope to prevent unwanted fill type changes.
  • Placeholder Settings now feature more granular options.
  • Editor: Clickable area of a cutout is a stroke 6 pixels wide centered on its offset path.
  • Editor/Web: Fixed double clicks for entering crop mode and text edit mode not recognized on mobile browsers.
  • Editor: DPI input is available for pixel design unit as well
  • Engine: Add BlockAPI.isTransformLocked, BlockAPI.setTransformLocked, and the transformLocked property.
  • Engine: Fixed the image edge handles to scale the image around the center opposite handle instead of the corners.
  • Engine: Prevented crop edits via edge handles if cropping is not allowed for adopters.
  • Engine: Fixed color fill leak when duplicating Text elements resulting in massive scene file sizes.
  • Engine: When DoubleClickSelectionMode is set to Direct, hovering/clicking in the empty space within a group highlights/selects that group.
  • Editor: Fixed performance issue when playing back videos
  • Engine: Fix video support detection on Chrome for Windows.
  • Engine: Legal symbols (©, ®, ™) are no longer rendered as their emoji counterpart.
  • Editor: Pause video playback when selecting an element in the scene.
  • Engine: Lower memory usage when downscaling images to maxImageSize.
  • Engine: Fix MP4 videos that make use of edts and elst atoms.
  • Engine: Added mousewheel support The CreativeEngine canvas now supports mouse wheel events on the canvas to scroll and zoom the scene. The CreativeEngine instance gained a new method, setWheelEventTarget, which can be used to reinstall the event listener on another DOM element. This can be useful for situations where custom DOM elments are positioned on top of the canvas. Two engine settings have been added to enable/disable scrolling and zooming: mouse/enableZoom and mouse/enableScroll, both default to true.
  • Engine: Removed arbitrary strings for engine settings from the TypeScript definitions. Passing arbitrary strings to methods such as setSettingBool or setSettingString was never actually supported. The types have been adjusted to reflect that fact.
  • Editor/Engine: The Typescript types of the getSetting/setSetting methods in the EditorAPI have been made more strict:
    • Previously, Typescript allowed arbitrary strings as keys, which would have led to an error at runtime. These have been removed.
    • Support for prefixing settings keys with ubq:// will be removed in a future version. The function signatures have been updates to provide a deprecation warning.
    • A few boolean settings not meant for public use have been removed.