Skip to content

Releases: rafaeltonholo/svg-to-compose

2.2.0

03 Apr 22:30
6e7e5b2

Choose a tag to compare

What's Changed

Highlights

Gradle Plugin Parallelism - The Gradle plugin now uses the Gradle Worker API for parallel SVG/XML icon processing, significantly improving build times for projects with many icons. (#181)

AGP 9 Support - The Gradle plugin is now compatible with Android Gradle Plugin 9. (#212)

New Website with Live Playground - A brand-new project website built with Kobweb, featuring a live SVG-to-Compose playground, API documentation, and installation guides. (#230, #231, #242)

CodeEmitter Architecture - Introduced a new CodeEmitter infrastructure, decoupling code generation from the core parsing logic and enabling future support for additional output formats. (#214, #215)

EditorConfig Support - Output indentation now respects your project's .editorconfig settings. (#216)

Bug Fixes

  • Gradient transforms - Fixed gradientTransform not being applied to gradient coordinates in userSpaceOnUse mode. (#228)
  • AVG centerColor - Fixed missing centerColor in Android Vector Drawable gradient color stop computation. (#277)
  • Scientific notation - Fixed parsing of uppercase E in scientific notation during path normalization. (#252)
  • Style attribute splitting - Fixed style attributes becoming empty after split. (#162)
  • Windows temp files - Fixed temporary file handling on Windows. (#199)
  • Float precision - Fixed missing .toFloat() when materializing icons. (#210)
  • CLI exclude flag - Added validation for --exclude regex pattern before use. (#251)
  • CLI build script - Fixed build-type condition using pipe instead of logical OR. (#250)
  • Gradle plugin tasks - Migrated to Gradle incremental task API and fixed validatePlugins. (#279)
  • Coroutine bytecode leak - Eliminated Kotlin coroutine bytecode causing ClassNotFoundException in the Gradle plugin. (#281)

Refactoring

  • Migrated internal transformations from FloatArray to DoubleArray for improved precision. (#207)
  • Restructured composite build and unified version catalogs. (#276)
  • Introduced Metro DI framework. (#211)

Dependency Updates

  • Kotlin 2.1.20 -> 2.3.0
  • Gradle 8.x -> 9.4.1
  • Okio 3.15.0 -> 3.16.4
  • Ksoup 0.2.2 -> 0.2.5
  • Detekt upgraded to 2.0
  • AGP updated to 8.13.x
  • Compose BOM updated to 2025.09.00
  • JetBrains Compose updated to 1.9.3
  • Various AndroidX library updates

New Contributors

Full Changelog: 2.1.2...2.2.0

2.1.3

08 Mar 20:06
daef707

Choose a tag to compare

What's Changed

Features

  • feat(gradle-plugin): implement Gradle Worker API for parallel SVG/XML icon processing by @rafaeltonholo in #181

Fixes

Chores

  • Update project dependencies

New Contributors

Full Changelog: 2.1.2...2.1.3

2.1.2

28 Jun 19:40
7a718e9

Choose a tag to compare

What's Changed

Features

Fixes

  • Fix IllegalArgumentException when the external dependency is not installed

Chores

  • Update project dependencies

Full Changelog: 2.1.1...2.1.2

2.1.1

06 Mar 00:00
c3c8cbc

Choose a tag to compare

What's Changed

Full Changelog: 2.1.0...2.1.1

2.1.0

17 Feb 15:33
bc55713

Choose a tag to compare

What's Changed

Features

Fixes

  • Use parsers transient instances instead of singleton by @rafaeltonholo in #111
  • Fix tokenizer not properly handling decimals value and improving token parsing by @rafaeltonholo in #123

Chores

  • Move rules computation to SvgRootNode by @rafaeltonholo in #107
  • Update project dependencies

Full Changelog: 2.0.1...2.1.0

2.0.1

18 Dec 00:46
17e4235

Choose a tag to compare

What's Changed

Fixes

  • Fix not considering <mask> with non-<path> elements and other improvements by @rafaeltonholo in #102

Chores

  • update dependency gradle to v8.11.1 by @renovate in #91
  • update androidx.lifecycle to v2.8.4 by @renovate in #89
  • update dependency com.github.gmazzo.buildconfig:plugin to v5.5.1 by @renovate in #90
  • update dependency org.jetbrains.compose to v1.7.1 by @renovate in #86
  • update dependency com.vanniktech:gradle-maven-publish-plugin to v0.30.0 by @renovate in #92
  • update kotlin monorepo to v2.1.0 by @renovate in #94
  • update dependency com.github.ajalt.clikt:clikt to v5 by @renovate in #71
  • update dependency androidx.compose:compose-bom to v2024.12.01 by @renovate in #98
  • update agp to v8.7.3 by @renovate in #97
  • update dependency com.fleeksoft.ksoup:ksoup to v0.2.1 by @renovate in #95
  • update dependency com.github.ajalt.clikt:clikt to v5.0.2 by @renovate in #96

Full Changelog: 2.0.0...2.0.1

2.0.0

26 Nov 22:04
8f05ecc

Choose a tag to compare

Introducing svg-to-compose Gradle Plugin

This release builds upon the svg-to-compose CLI tool code, turning it into a library, where you can use it via script as you are used to, or include it into your project, as a KMP library that parsers and generates code for you.

This release sets a big milestone in this project, evolving the project from only a KMP CLI tool to a KMP library, with a native CLI, and a Gradle Plugin.

The new svg-to-compose-gradle-plugin project was designed to simplify and enhance your workflow by automatically converting SVG/XML files into Jetpack Compose ImageVector assets. It adds seamless integration with your build process, enabling you to have a single source of truth for your vectors, which could be shared between teams like design and developers, making vector asset management easier than ever.

Additionally, we have introduced a few more options to the CLI tool such as --exclude, and --map-icon-from-to and removed the deprecated option context-receiver.

Documentation & Feedback

Check out the complete documentation here: svg-to-compose-gradle-plugin.

We value your feedback! If you encounter any issues or have suggestions for additional SVG feature support, please open an issue.

What's Changed

Breaking Changes

  • Removed deprecated flags -cp and --context-provider from the CLI tool.
  • The --kmp option, in the CLI, now is used to identify that the output targets KMP. That will change the Preview imports to use JetBrains instead.

Features

  • Introduce the svg-to-compose-gradle-plugin.
  • Added Dokka integration.
  • Introduced new CLI options for parser configuration:
    • --exclude: A regex used to exclude some icons from the parsing.
    • --map-icon-name-from-to, --from-to, or --rename: Replace the icon's name first value of this parameter with the second.
    • --silent: Runs the CLI without any output.
      See the svg-to-compose documentation for more details.

Bug fixes

  • RGB colors to Hex broken when RGB value results in a hex value started with 0.

Refactors

  • Enhanced logging capabilities with a new Logger interface.
  • Abstracting usage of okio.FileSystem with FileManager interface for better maintainability.
  • Refactored temporary file creating logic for better parsing handling.
  • Replaced com.codingfeline.buildkonfig:buildkonfig-gradle-plugin with com.github.gmazzo.buildconfig:plugin.

Chores

Full Changelog: v1.3.3...2.0.0

v1.3.3

08 Sep 22:12
4cc571f

Choose a tag to compare

What's Changed

  • Fixes for Relative Coordinates, and SVG Rect Node Improvements by @rafaeltonholo in #64
  • Dependencies upgrades

Full Changelog: v1.3.2...v1.3.3

v1.3.2

17 Aug 13:43
828066e

Choose a tag to compare

What's Changed

  • chore(deps): update dependency com.android.application to v8.4.2 by @renovate in #46
  • fix(deps): update dependency androidx.lifecycle:lifecycle-runtime-ktx to v2.8.2 by @renovate in #47
  • fix(deps): update dependency androidx.compose:compose-bom to v2024.06.00 by @renovate in #48
  • fix(deps): update dependency androidx.lifecycle:lifecycle-runtime-ktx to v2.8.4 by @renovate in #50
  • fix(deps): update dependency androidx.activity:activity-compose to v1.9.1 - autoclosed by @renovate in #52
  • fix: s2c script ignoring Apple Silicon's cpu other than M1 by @rafaeltonholo in #53
  • Fix path parsing not considering scientific notation by @rafaeltonholo in #58

Full Changelog: v1.3.1...v1.3.2

v1.3.1

10 Jun 18:50
6adf206

Choose a tag to compare

What's Changed

  • Bugfix: Add default fill color when neither fillColor or stroke are present by @rafaeltonholo in #45

Full Changelog: v1.3.0...v1.3.1