Synfig 1.5.4 Release Notes

Highlights

  • Feature Enhancements: Several new capabilities have been introduced, such as an angle converter that supports integers, hotkeys for locking/unlocking past and future keyframes, a new ‘Alpha Intersection’ blending mode, and enhanced palette clipboard functionality. Additionally, initial support for SVG Text elements and Lottie Text Layers has been added.

  • Stability and Quality Improvements: Numerous bug fixes address critical issues including rendering artifacts in outlines, undefined behavior during undo/redo operations after value conversion, crashes related to malformed PNG imports or null devices, and various UI/UX inconsistencies. Specific fixes include improved SVG importer behavior, corrected bline tool interactions, and resolution of font rendering issues.

  • Performance and Code Refinements: Significant refactoring efforts have been undertaken, including the porting of several layers (Bevel, Noise gradient, HalfTone2 & 3) to the more efficient Cobra rendering engine. Other improvements include optimizing code for image sequence import, enhancing parameter passing by reference, and general code style cleanups.

What’s Changed

  • fix: drag-n-drop import when filename contains non-latin chars by @rodolforg in https://github.com/synfig/synfig/pull/3412

  • refactor: update macOS icons to higher resolutions by @pgilfernandez in https://github.com/synfig/synfig/pull/3224

  • refactor: add move constructor to handle/loose_handle/rhandle by @rodolforg in https://github.com/synfig/synfig/pull/3417

  • fix: change convert.exe syntax to avoid clash in Windows by @rodolforg in https://github.com/synfig/synfig/pull/3416

  • fix: convert.exe directory and missing extension by @rodolforg in https://github.com/synfig/synfig/pull/3421

  • fix: Lottie export failure with Japanese locale setting in Windows by @ice0 in https://github.com/synfig/synfig/pull/3419

  • refactor: avoid macro in header file of ValueNode_Composite by @rodolforg in https://github.com/synfig/synfig/pull/3429

  • fix: clang build (and bump macOS version) by @ice0 in https://github.com/synfig/synfig/pull/3438

  • fix: Upgraded MLT version from ‘7.2.0’ to ‘7.28.0’ under MSYS2 environment by @shreyaspranav in https://github.com/synfig/synfig/pull/3437

  • fix: uninitialized var and mixed declaration/definition of class by @rodolforg in https://github.com/synfig/synfig/pull/3435

  • fix: color/gradient dialog edits the parameter that opened itself by @rodolforg in https://github.com/synfig/synfig/pull/3373

  • feat: add “copy all” for Paste Options dialog by @rodolforg in https://github.com/synfig/synfig/pull/3422

  • chore: fix various typos by @luzpaz in https://github.com/synfig/synfig/pull/3443

  • refactor: rename setup and help-about actions - preparing to macOS by @rodolforg in https://github.com/synfig/synfig/pull/3195

  • fix: proper reset of bonesetup size in WorkArea by @rodolforg in https://github.com/synfig/synfig/pull/3380

  • refactor: Filesystem::remove_recursive() uses Path by @rodolforg in https://github.com/synfig/synfig/pull/3364

  • feat(SVG): naive support to Text element by @rodolforg in https://github.com/synfig/synfig/pull/3320

  • fix: handle (Radial)Composite valuenodes via Widget_Curves by @rodolforg in https://github.com/synfig/synfig/pull/3428

  • refactor: simpler gradient render task declarations by @rodolforg in https://github.com/synfig/synfig/pull/3301

  • refactor: add move constructor and move assignment operator to ValueDesc by @rodolforg in https://github.com/synfig/synfig/pull/3150

  • ci: Resolve error when build dir cannot be removed after previous (failed) run by @morevnaproject in https://github.com/synfig/synfig/pull/3450

  • ci: Add workflow to automatically generate release notes for GitHub releases by @akayiz in https://github.com/synfig/synfig/pull/3392

  • ci: Add automatically showing contributors how their pull requests affect the release notes by @akayiz in https://github.com/synfig/synfig/pull/3393

  • fix(ci): show-pr-change-note not working with prs from forks by @akayiz in https://github.com/synfig/synfig/pull/3453

  • refactor: minor cleanup on Plant layer by @rodolforg in https://github.com/synfig/synfig/pull/3452

  • fix: regression: couldn’t edit color or gradient of multiple layers by @rodolforg in https://github.com/synfig/synfig/pull/3470

  • chore: update .gitignore to exclude build files by @veermetri05 in https://github.com/synfig/synfig/pull/3466

  • fix: julia Set used to ignore Bailout parameter by @rodolforg in https://github.com/synfig/synfig/pull/3465

  • fix: make FileSystem::write_block() return the number of bytes actually written by @rodolforg in https://github.com/synfig/synfig/pull/3478

  • fix: resolve issue with toolbar space remaining visible after hiding by @rodolforg in https://github.com/synfig/synfig/pull/3459

  • fix: prevent potential null pointer dereference in ValueDescDisconnect action by @rodolforg in https://github.com/synfig/synfig/pull/3458

  • refactor: cleanup Layer::get_sub_renddesc*() methods by @rodolforg in https://github.com/synfig/synfig/pull/3455

  • fix(mod_ffmpeg): resolve missing audio export and incorrect error message display by @rodolforg in https://github.com/synfig/synfig/pull/3483

  • build(MSYS2): add missing libraries to archive by @ice0 in https://github.com/synfig/synfig/pull/3491

  • refactor: minor changes on Freetype layer by @rodolforg in https://github.com/synfig/synfig/pull/3489

  • refactor: remove unused CanvasInterface::auto_export() method by @rodolforg in https://github.com/synfig/synfig/pull/3492

  • fix: crash when trying to link to polygon instead of spline by @rodolforg in https://github.com/synfig/synfig/pull/3482

  • fix: crash with positive sound delay for MLT >= 7.20 by @rodolforg in https://github.com/synfig/synfig/pull/3495

  • fix: possible double free due to multithreading with Contour by @rodolforg in https://github.com/synfig/synfig/pull/3496

  • fix: importing image sequence failed when there was no duplicates by @rodolforg in https://github.com/synfig/synfig/pull/3499

  • refactor(Action): avoid direct use of etl::handle by @rodolforg in https://github.com/synfig/synfig/pull/3497

  • fix: prevent crash due to null pointer dereference in Action::LayerEncapsulateSwitch by @rodolforg in https://github.com/synfig/synfig/pull/3501

  • ci(Github Actions): bump Ubuntu version by @ice0 in https://github.com/synfig/synfig/pull/3505

  • fix: some Coverity Scan reports by @rodolforg in https://github.com/synfig/synfig/pull/3507

  • fix(lottie): Prevent SameFileError when exporting assets already in the images directory by @Stargazer10101 in https://github.com/synfig/synfig/pull/3506

  • refactor: reduce visibility of internal variable members of Layer_Bitmap by @rodolforg in https://github.com/synfig/synfig/pull/3504

  • build(ETL): cleanup dismissed ETL dependencies by @rodolforg in https://github.com/synfig/synfig/pull/3523

  • fix: History panel didn’t show sub-actions anymore by @rodolforg in https://github.com/synfig/synfig/pull/3522

  • feat(dialog): add Enter key support to accept user choice by @Abdelhadi-Wael in https://github.com/synfig/synfig/pull/3520

  • refactor: make code for importing image sequence more readable by @rodolforg in https://github.com/synfig/synfig/pull/3503

  • fix(lottie): add missing import for Advanced Outline by @WhatDidIDoWrong in https://github.com/synfig/synfig/pull/3508

  • refactor: port more layers to Cobra renderer: HalfTone2 & 3 by @rodolforg in https://github.com/synfig/synfig/pull/3300

  • fix(ui): refresh Parameters panel after undo/redo by @Abdelhadi-Wael in https://github.com/synfig/synfig/pull/3525

  • fix: FileSystem::remove_recursive() removes the directory itself too by @rodolforg in https://github.com/synfig/synfig/pull/3529

  • fix: couldn’t create converter to spline tangent or spline width (regression) by @Stargazer10101 in https://github.com/synfig/synfig/pull/3534

  • fix(audio): add length check for MLT track loading by @Abdelhadi-Wael in https://github.com/synfig/synfig/pull/3512

  • fix(ui): rectify wayland window icon by @Integral-Tech in https://github.com/synfig/synfig/pull/3561

  • fix: modifying waypoints for a group layer no longer modifies sibling layers by @mosasauridae in https://github.com/synfig/synfig/pull/3312

  • fix: fix shift in gradient layers by @rodolforg in https://github.com/synfig/synfig/pull/3567

  • fix: bump HalfTone2 and HalfTone3 layer versions after porting to Cobra by @rodolforg in https://github.com/synfig/synfig/pull/3566

  • fix: Fix bug displaying “Unable to resolve ” on project load by @shreyaspranav in https://github.com/synfig/synfig/pull/3540

  • refactor: port XORPattern layer to Cobra renderer by @rodolforg in https://github.com/synfig/synfig/pull/3485

  • feat: added support for setting playback interval through movable buttons by @mohamedAdhamc in https://github.com/synfig/synfig/pull/2765

  • fix(GUI): add missing icon for type transformation by @Svarov-RZM in https://github.com/synfig/synfig/pull/3578

  • chore: bump year to 2025 by @BobSynfig in https://github.com/synfig/synfig/pull/3581

  • feat: “Angle” converter for real -> angle conversions by @Stargazer10101 in https://github.com/synfig/synfig/pull/3560

  • refactor: remove commented-out code in HalfTone3 layer by @rodolforg in https://github.com/synfig/synfig/pull/3565

  • chore: fix internal error message for TaskFilterPixelSW by @rodolforg in https://github.com/synfig/synfig/pull/3569

  • fix: prevent crash due to null devices in DeviceManager from libgtkmm by @rodolforg in https://github.com/synfig/synfig/pull/3576

  • refactor: rename pre_run() parameters of TaskPaintPixelSW and TaskFilterPixelSW and fix code style by @rodolforg in https://github.com/synfig/synfig/pull/3568

  • fix: missing template argument : compiler in FreeBSD complained by @rodolforg in https://github.com/synfig/synfig/pull/3559

  • feat(lottie): add support for Text Layer by @saurabh-ramola in https://github.com/synfig/synfig/pull/1469

  • fix: avoid buffer overflow in Widget_SoundWave by @rodolforg in https://github.com/synfig/synfig/pull/3564

  • refactor: make debug variable const in ValueNode_Bone by @rodolforg in https://github.com/synfig/synfig/pull/3586

  • fix(lottie): allow to export SolidColor layer from old sif files by @rodolforg in https://github.com/synfig/synfig/pull/3583

  • refactor: remove the optional “group” property of layer parameters by @rodolforg in https://github.com/synfig/synfig/pull/3587

  • fix: new ValueNode_Angle couldn’t be loaded because of tag name clash by @rodolforg in https://github.com/synfig/synfig/pull/3589

  • fix(advanced outline layer): the outline on the last vertex of spline by @rodolforg in https://github.com/synfig/synfig/pull/3596

  • fix(GUI): add missing icons for various bone types by @Svarov-RZM in https://github.com/synfig/synfig/pull/3599

  • fix(bline tool): couldn’t create the spline right after user drags the first vertex by @rodolforg in https://github.com/synfig/synfig/pull/3595

  • fix(text tool): some fonts render corrupted text by @mosasauridae in https://github.com/synfig/synfig/pull/3611

  • fix: border computation for raster image with Transformation task by @rodolforg in https://github.com/synfig/synfig/pull/3603

  • feat: add new Map Range valuenode by @rodolforg in https://github.com/synfig/synfig/pull/3597

  • fix(advanced outline): fix rendering of width point in non-homogeneous position by @rodolforg in https://github.com/synfig/synfig/pull/3555

  • fix(bline tool): ignores double-clicking if without any created point by @rodolforg in https://github.com/synfig/synfig/pull/3594

  • fix: SVG importer kept two vertices on closing (Z) a SVG path by @rodolforg in https://github.com/synfig/synfig/pull/3558

  • chore: bump synfig versions for issue template & appveyor files by @rodolforg in https://github.com/synfig/synfig/pull/3625

  • fix(SVG importer): tangents were merged if curve exists after straight line by @rodolforg in https://github.com/synfig/synfig/pull/3624

  • refactor: port layer to Cobra renderer: Noise gradient by @rodolforg in https://github.com/synfig/synfig/pull/3306

  • perf(Shade layer): do not insert blur task if none specified by @Svarov-RZM in https://github.com/synfig/synfig/pull/3635

  • feat: palette clipboard functionality by @Kemosalamy in https://github.com/synfig/synfig/pull/2597

  • feat(blend method): new blending mode: Alpha Intersection by @rodolforg in https://github.com/synfig/synfig/pull/2304

  • refactor: prefer passing by reference instead of copy by @rodolforg in https://github.com/synfig/synfig/pull/3637

  • fix: prevent negative bline/brush width in rectangle state and constrain the range by @mohamedAdhamc in https://github.com/synfig/synfig/pull/3640

  • fix(mod_png): prevent crash when importing malformed png files by @Abdelhadi-Wael in https://github.com/synfig/synfig/pull/3643

  • refactor: port layer to Cobra renderer: Curve Gradient by @rodolforg in https://github.com/synfig/synfig/pull/3307

  • refactor: port Bevel layer to Cobra engine by @rodolforg in https://github.com/synfig/synfig/pull/3457

  • fix(advanced_outline): incorrect width rendering on open outlines by @Abdelhadi-Wael in https://github.com/synfig/synfig/pull/3646

  • feat: added a way to easily access the rendered file by @rodolforg in https://github.com/synfig/synfig/pull/3642

  • ci(Github Actions): bump macOS version (13 Ventura -> 14 Sonoma) by @rodolforg in https://github.com/synfig/synfig/pull/3651

  • ci(Github Actions): bump macOS version (14 Sonoma -> 26 Tahoe) by @ice0 in https://github.com/synfig/synfig/pull/3652

  • fix: undefined behavior when user convert a value, change it, undo tw… by @rodolforg in https://github.com/synfig/synfig/pull/3570

  • feat: add hotkeys for locking/unlocking past & future keyframes (Fixes #3638) by @omda777 in https://github.com/synfig/synfig/pull/3648

  • feat: angle converter can now be used for integers by @rodolforg in https://github.com/synfig/synfig/pull/3650

  • fix(rendering): remove artifacts in rendering outlines by increasing sampling resolution by @Abdelhadi-Wael in https://github.com/synfig/synfig/pull/3649

  • chore: Bump year to 2026 by @BobSynfig in https://github.com/synfig/synfig/pull/3669

  • chore: Update CLI help (seconds to synfig time) by @BobSynfig in https://github.com/synfig/synfig/pull/3670

  • chore: Release version 1.5.4 by @Zloi-KoteikA in https://github.com/synfig/synfig/pull/3672