Search Docs
Loading...
Skip to content

Version v1.78.0 Changelog July 17, 2026

Breaking Changes

Non Breaking Changes

  • Editor: Engine error dialogs across Web, iOS, Android, Flutter, and React Native now show customer-facing, localizable copy keyed off the structured engine error code, falling back to the engine’s English message when no copy is authored — so a dialog never shows a blank or a raw code. You can override this copy per error code and resolve it yourself in custom error handlers. See the Custom Error Messages guide for authoring copy and the Error Catalog for the full list of structured error codes.
  • Editor/iOS: EngineSettings(baseURL:) now accepts an optional URL and falls back to the default CE.SDK CDN when nil, so you can pass an optional base URL directly without branching.
  • Editor/Web: The color picker for line shapes now supports gradients.
  • Engine: Movement constraints now keep text on the page by its visible letters, not just its text box, so letters that stick out past the box no longer spill off the page when moving or resizing. On by default; toggle it with the features/movementConstraintsRespectTextOverhang setting.
  • Editor/Web: Added a Path control for text blocks to place text on a curve (Circle, Arch, Wave) with adjustable position, direction and offset, plus Edit Path for a custom baseline. Gated by the new ly.img.text.path feature (with per-control sub-features).
  • Plugins/Web: The AI generation “Generate” button now stays disabled until every required input is provided. Previously, filling a single required input (e.g. the prompt) enabled it even when another required input (e.g. an image) was still missing, which could trigger a failed generation request.
  • Engine/Android: Fixed a crash during export teardown when an engine event stream was collected after Engine.stop().
  • Engine: Fixed a crash (RuntimeError: unreachable) in block.saveToArchive when a text block referenced a font whose bytes were not yet resident (e.g. an unresolved remote font).
  • Engine: Fixed the editor freezing when importing large caption/subtitle (SRT/VTT) files or styling large caption tracks. Style changes now spread across a caption track in linear time instead of quadratic.
  • Engine: Fixed corner-handle resizing of blocks whose width or height is sized as a percent of their parent (for example captions on the video canvas).
  • Engine: Fixed content-aware resize emitting a degenerate “double-flip” transform (both scale axes negative combined with a multiple-of-2π rotation) for page-filling images. Such images now get a clean, axis-aligned transform, so cropping them after resizing no longer moves the crop frame off the canvas.
  • Editor/Flutter: Fixed an issue where effects applied to paused videos were not immediately visible when using TextureView.
  • Editor/iOS: The asset library now refreshes automatically when a source’s contents change via engine.asset.assetSourceContentsChanged(sourceID:). Any open library showing that source re-queries and updates in place, matching the web editor.
  • Editor/iOS: Fixed the sheet title bar and close button overlapping the content of compact effect sheets (Filter, Effect, Blur, Animation) when the iOS 26 Liquid Glass design is enabled.
  • Editor/Web: Keep the text being edited visible above the on-screen keyboard on mobile web. The canvas reserves the keyboard area and pans the camera to the text cursor.
  • Engine/Node: @cesdk/node now bundles the engine-level font-fallback files (fonts/) and emoji font (emoji/NotoColorEmoji.ttf) in the npm package, so default font fallback and emoji rendering work out of the box without reaching the IMG.LY CDN. The @cesdk/node self-hosting asset bundle (imgly-assets.zip) now also includes the fonts/ and emoji/ directories; previously they were missing, which broke the documented self-hosting path.
  • Engine/Web: Fixed video export freezing on Safari when the project contained an uploaded video. Safari treats OPFS read handles as exclusive per file, so the export worker could not read an upload the editor was already reading. OPFS is now disabled on Safari and uploads fall back to in-memory blob URLs.
  • Engine: Fixed movement constraint capping block resizing too early. The cap now follows the block’s axis-aligned bounding box in page space, so resizing — including rotated blocks — can grow to the size the constraint actually permits.
  • Engine: Fixed a crash when loading a scene or block archive whose fetched data is not a valid zip.
  • Editor/Web: Fixed the shape options dropdown in the inspector bar not being keyboard accessible. Opening it now moves focus into the panel, keeps focus contained while navigating its controls, restores focus to the trigger on close, and dismisses on Escape.
  • Editor/Web: Fixed snapping guides ignoring movement constraints when moving or resizing.
  • Engine: Fixed setEditMode('Text') so that setTextCursorRange and other text-cursor APIs work synchronously immediately after, without an intermediate engine update.
  • Engine/Web: Fixed an issue where the on-screen keyboard would not open on iOS when entering text edit mode programmatically inside a user gesture.
  • Engine: A text block placed on a path now returns to automatic sizing when the path is removed, instead of staying at the fixed size adopted for the curve.
  • Engine: A text block placed on a path now keeps a stable set of editable points when re-entering path editing, instead of re-subdividing the path each time.
  • Engine: Fixed a video fill whose source failed to load (for example because of a CORS or network error) being re-fetched on every render frame with no limit. A failed video load now keeps its error state like image fills do; use forceLoadResources/forceLoadAVResource to explicitly retry it.
  • Editor/Web: The typeface library now fetches font previews lazily as rows scroll into view and renders typeface names immediately in a fallback font, keeping the font picker responsive on slow networks and low-end devices. The live per-font preview is preserved and arrives progressively.
  • Engine: Fixed text on curved paths to respect paragraph-level horizontal alignment.
  • Editor: Fixed caret placement for empty aligned text on curved paths.
  • Editor: Fixed caret hit testing, pointer selection, and selection highlights for text on curved paths that wrap across the start or end of an open path.
  • Editor: Fixed overlapping selection highlights on curved text from rendering darker where selection geometry intersects.
  • Engine/Web: @cesdk/engine again publishes its default asset sources (ly.img.*) to the CDN, fixing asset resolution failures during initialization for custom-UI integrations that rely on the default baseURL.
  • Engine/Web: @cesdk/engine and @cesdk/cesdk-js now bundle the font-fallback and emoji files in their npm packages, so text and emoji render without reaching the IMG.LY CDN.
  • Engine/Node: @cesdk/node’s imgly-assets.zip now includes the full asset content library (ly.img.*), so self-hosting the default asset sources works. Previously it shipped only the engine core, fonts, and emoji.
  • Engine: Fixed text on a curve ignoring the automatic horizontal text alignment. Right-to-left text with Auto alignment now aligns to the end of the path, matching regular text frames.
  • Engine: Fixed underline and strikethrough lines on text on a curve bridging the gap between the end and the beginning of the text when a path offset wraps the text around the path.
  • Engine: Fixed the text cursor of right-aligned text on a curve sometimes jumping to the start of the path when placed at the end of the text.
  • Editor/Web: Fixed the text “Styles” button staying active in Preview for placeholders that do not allow character changes. It is now hidden when the text/character scope is disallowed, matching the other style controls.
  • Editor/Web: Fixed the show/hide toggle in a line’s color panel. It now hides and shows the line, for solid colors and gradients alike, instead of doing nothing or dismissing the gradient.
  • Engine: Fixed a hidden line becoming visible again after the scene was saved and reloaded.
  • Engine: Fixed a hidden line with a gradient rendering a stray triangle instead of nothing.
  • Editor/Android: Fixed the resize sheet unexpectedly closing when selecting a page size preset.
  • Engine: Fixed onActiveChanged not being triggered when loading the same scene or applying the same template twice in a row.
  • Engine/Web: Fixed a crash when saving a scene to an archive that references a font which was never loaded (for example an unused typeface variant). Such resources are now left as external references instead of being bundled.