All Versions
Latest Version
Avg Release Cycle
56 days
Latest Release

Changelog History
Page 1

  • v1.10.0-b2 Changes

    • ⚡️ [UPDATE] Updated to Gradle 7.0.2.
    • ⚡️ [UPDATE] Updated to Kotlin 1.5.21.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.5.1.
    • ⚡️ [UPDATE] Updated to VisUI 1.5.0.
    • [CHANGE] The JVM target compatibility of all modules was set to 1.8, since Java 1.6 target was deprecated ✅ and is incompatible with the latest coroutines library. Note that source compatibility level is still set to 1.7.
    • [FEATURE] (ktx-assets) Added discard lambda parameter to the pool factory method that is invoked after an object is rejected from the created Pool.
    • [FEATURE] (ktx-scene2d) Added support for ParticleEffectActor in Scene2D DSL via particleEffect factory method.
    • [FEATURE] (ktx-log) Added DEBUG, INFO and ERROR constants with default logger tags.
    • [CHANGE] (ktx-log) Default tags are no longer wrapped in square brackets. This caused a change of the logs structure.
    • [CHANGE] (ktx-log) Logger.tag variable was renamed to
    • [CHANGE] (ktx-log) Log prefix variables from Logger were removed. Message tags are now configurable directly through the constructor.
    • [CHANGE] (ktx-log) Logger name is no longer a part of the message tag. Instead, it is now prepended to the message. 🔊 This causes a change of the logs structure.
    • [FEATURE] (ktx-log) Added Logger.buildMessage method that allows to modify logged message structure. This method can be overridden when extending the Logger class, simplifying the usage of custom message formats.
  • v1.10.0-b1 Changes

    • ⚡️ [UPDATE] Updated to LibGDX 1.10.0.
    • [CHANGE] The Java source compatibility and JVM target version of the KTX modules was changed from 1.6 to 1.7.
  • v1.9.14-b2 Changes

    • ⚡️ [UPDATE] Updated to Ashley 1.7.4.
    • ⚡️ [UPDATE] Updated to Kotlin 1.4.32.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.4.3.
    • ⚡️ [UPDATE] Updated to Gradle 6.8.3.
    • ⚡️ [UPDATE] Updated to Dokka 1.4.30.
    • [MISC] Due to the newly added support for multimodule projects in Dokka, published documentation URLs will change.
    • [FEATURE] (ktx-tiled) Added isEmpty and isNotEmpty extension function for MapLayers and MapObjects collections.
    • [FEATURE] (ktx-tiled) Added forEachLayer extension function for TiledMap to iterate over an exact type of MapLayer instances of a specific map.
    • [FIX] (ktx-vis) visScrollPane and visSplitPane now define the correct types for this in theis init lambdas, ➕ adding support for Scene2D and VisUI DSL.
  • v1.9.14-b1 Changes

    • ⚡️ [UPDATE] Updated to LibGDX 1.9.14.
    • ⚡️ [UPDATE] Updated to Kotlin 1.4.30.
    • ⚡️ [UPDATE] Updated to VisUI 1.4.11.
    • [FEATURE] (ktx-app) clearScreen now accepts additional clearDepth boolean parameter that controls whether the GL_DEPTH_BUFFER_BIT is added to the mask.
    • [FEATURE] (ktx-assets-async) Added AssetStorageSnapshot class that stores a copy of AssetStorage state 👍 for debugging purposes. Supports formatted string output with prettyFormat.
    • [FEATURE] (ktx-assets-async) AssetStorage now includes takeSnapshot and takeSnapshotAsync methods that 👍 allow to copy and inspect the internal state of the storage for debugging purposes.
    • [FEATURE] (ktx-collections) Added getOrPut extension function for LibGDX map collections including ObjectMap, IdentityMap, ArrayMap and IntMap.
  • v1.9.13-b1 Changes

    • ⚡️ [UPDATE] Updated to LibGDX 1.9.13.
    • ⚡️ [UPDATE] Updated to Kotlin 1.4.21-2.
    • ⚡️ [UPDATE] Updated to VisUI 1.4.8.
    • [FEATURE] (ktx-style) Added Skin.register extension method that allows to register widget styles with the DSL.
    • [FEATURE] (ktx-vis) Added flowGroup factory method that allows to construct FlowGroup actors.
    • [CHANGE] (ktx-vis) horizontalFlowGroup and verticalFlowGroup are now deprecated. Use flowGroup instead.
  • v1.9.12-b1 Changes

    • ⚡️ [UPDATE] Updated to LibGDX 1.9.12.
    • ⚡️ [UPDATE] Updated to Kotlin 1.4.20.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.4.2.
  • v1.9.11-b2 Changes

    • ⚡️ [UPDATE] Updated to Kotlin 1.4.10.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.4.0.
    • ⚡️ [UPDATE] Updated to Gradle 6.7.
    • ⚡️ [UPDATE] Updated to Dokka 1.4.10-2.
    • [MISC] Groovy Gradle scripts and configuration files migrated to Kotlin.
    • [MISC] The generated sources documentation is vastly improved and moved to a new URL.
    • [FEATURE] (ktx-collections) Added GdxIdentityMap and GdxArrayMap aliases for LibGDX IdentityMap and ArrayMap collections.
    • [FEATURE] (ktx-collections) Added set operator extension method to ArrayMap to support square brackets assignment.
    • [FEATURE] (ktx-graphics) Added optional Camera and projection matrix parameters to ShapeRenderer.use.
    • [FEATURE] (ktx-scene2d) Added image builders for NinePatch, TextureRegion, Texture and Drawable.
  • v1.9.11-b1 Changes

    • ⚡️ [UPDATE] Updated to LibGDX 1.9.11.
    • ⚡️ [UPDATE] Updated to Kotlin Coroutines 1.3.6.
    • ⚡️ [UPDATE] Updated VisUI to 1.4.6.
    • [FEATURE] (ktx-scene2d) Added a generic container factory method that supports adding a custom actor.
  • v1.9.10-b7 Changes

    • [MISC] Added ktlint formatting. Contributors are asked to run format Gradle task before committing files.
    • [CHANGE] (ktx-actors) Deprecated Action.parallelTo and ParallelAction.parallelTo extension methods were removed. Use along instead.
    • [CHANGE] (ktx-actors) Touch event listeners attached with extension methods now extend InputListener rather than ClickListener.
    • [CHANGE] (ktx-actors) onTouchEvent parameters renamed from downListener and upListener to onDown and onUp.
    • [CHANGE] (ktx-actors) Event listeners attached with extension methods now consume the Actor as this. Listeners that used to consume actors as regular parameters now should rely on this instead.
    • [FEATURE] (ktx-actors) KtxApplicationAdapter, KtxGame and KtxScreen now explicitly implement the Disposable interface, matching the dispose method from ApplicationListener and Screen respectively. This allows to leverage existing Disposable utilities.
    • [FEATURE] (ktx-ashley) Added Engine.configureEntity extension method that allows to add components to an existing entity.
    • [FEATURE] (ktx-assets) Added DisposableRegistry and DisposableContainer for management of multiple Disposable instances.
    • [FEATURE] (ktx-graphics) Added support for Color destructuring syntax.
    • [CHANGE] (ktx-scene2d) Deprecated top-level widget factory methods and tooltip utilities were removed.
  • v1.9.10-b6 Changes

    • ⚡️ [UPDATE] Updated to Kotlin 1.3.72.
    • ⚡️ [UPDATE] Updated to Dokka 0.10.1.
    • [CHANGE] Javadocs are no longer generated with Dokka. Since KTX focuses solely on Kotlin support for LibGDX, usability from Java is not a priority. The generated Javadocs are not very helpful, especially for Kotlin development. 📚 Instead, the Javadoc jar published to Maven Central now contains exported Kotlin-compatible Dokka documentation. 🚀 Starting from this release, GitHub releases will no longer contain the Javadoc archives.
    • [FEATURE] (ktx-actors) Added Action.repeat extension method that allows to repeat an action for the given amount of times.
    • [FEATURE] (ktx-ashley) Added Engine.get operator to access a chosen EntitySystem.
    • [FEATURE] (ktx-ashley) Added Engine.getSystem extension method to access a chosen EntitySystem. Throws MissingEntitySystemException in case the system is not added.
    • [FEATURE] (ktx-ashley) Added Entity.addComponent extension method to create a Component for an existing Entity.
    • [FEATURE] (ktx-ashley) Added Entity.plusAssign (+=) operator that allows to add an Component to an Entity.
    • [FEATURE] (ktx-ashley) Added contracts support to EngineEntity.with, Engine.create, Engine.add, Engine.entity ➕ add Entity.addComponent. Now their lambda parameters are ensured to be executed exactly once: ```kotlin // Before: lateinit var value: Int engine.add { value = 42 }

    // Now: val value: Int engine.add { value = 42 }

    - **[FEATURE]** (`ktx-assets`) `Iterable.dispose` and `Array.dispose` extension methods consuming an error handler are now inlined.
    - **[FEATURE]** (`ktx-box2d`) Added contracts support to body, fixture and joint factory methods, as well as `FixtureDef.filter`
    🔧 This ensures that the configuration lambdas are executed exactly once.
    - **[CHANGE]** (`ktx-collections`) `PooledList` was removed due to concurrent iteration safety issues. Use standard library lists instead.
    - **[CHANGE]** (`ktx-collections`) `-` and `+` operators no longer mutate the collections. Instead, they create a new collection instance and add or removed the selected elements.
    To modify an existing collection, use new mutating `+=` and `-=` operators.
    - **[FEATURE]** (`ktx-freetype`) Added contracts support to `AssetManager.loadFreeTypeFont`, `freeTypeFontParameters`
    🔧 and `FreeTypeFontGenerator.generateFont`. This ensures that the font configuration lambdas are executed exactly once.
    - **[FEATURE]** (`ktx-freetype-async`) Added contracts support to `AssetStorage.loadFreeTypeFont`.
    - **[FEATURE]** (`ktx-graphics`) Added contracts support to `Camera.update`, `Batch.use`, `ShaderProgram.use`, `GLFrameBuffer.use` and `ShapeRenderer.use`.
    - **[FEATURE]** (`ktx-inject`) Added contracts support to `Context.register`.
    - **[CHANGE]** (`ktx-log`) Added contracts to logging methods. Logging methods now might need to be imported explicitly.
    - **[FEATURE]** (`ktx-preferences`) Added contracts support to `Preferences.flush`.
    - **[FEATURE]** (`ktx-math`) Added `+=`, `+`, `-=` and `-` operators supporting floats and ints to `Vector2` and `Vector3`.
    - **[CHANGE]** (`ktx-math`) `-`, `!`, `++` and `--` operators no longer mutate vectors and matrices, returning new instances instead.  
    - **[FIX]** (`ktx-math`) Operators documentation regarding mutating of vectors and matrices was updated.
    - **[FEATURE]** (`ktx-scene2d`) `scene2d` object was added. It supports the entire Scene2D DSL and allows to create root-level widgets.
    - **[FEATURE]** (`ktx-scene2d`) `Stage.actors` extension method was added. It allows to define actors with Scene2D DSL and adds all top-level actors to the `Stage`.
    - **[CHANGE]** (`ktx-scene2d`) Root-level `actor` function was deprecated.
    - **[CHANGE]** (`ktx-scene2d`) Root-level widget factory functions were deprecated. Use `scene2d.` prefix or `Stage.actors` to create these widgets.
    👀 Note that the actors can still be created via standard DSL. See the migration guide in README. This includes:
      - `stack`
      - `horizontalGroup`
      - `verticalGroup`
      - `container`
      - `splitPane`
      - `scrollPane`
      - `table`
      - `window`
      - `dialog`
      - `buttonGroup`
      - `tree`
    - **[CHANGE]** (`ktx-scene2d`) `listWidget` and `selectBox` now have a single generic type to improve usability.
    🏗 Their building blocks no longer consume `Cell` and `Node` instances.
    - **[CHANGE]** (`ktx-scene2d`) Internal `KWidget.appendActor` and `KGroup.add` methods were removed.
    - **[FEATURE]** (`ktx-scene2d`) Added contracts support to widget factory methods and `Stage.actors`.
    🔧 This ensures that widget configuration lambdas are executed exactly once.
    - **[FEATURE]** (`ktx-style`) Added contracts support to style factory methods and top-level `skin` functions.
    - **[CHANGE]** (`ktx-vis`) Overhaul of the module.
      - `ktx-vis` now includes and extends the `ktx-scene2d` module. The majority of APIs are now shared.
      - All factory methods for VisUI widgets are now inlined, which can improve the performance of GUI building.
      - Factory methods of some VisUI widgets were renamed to avoid clashes with Scene2D methods and better reflect the wrapped widget class names:
        - `label`: `visLabel`
        - `image`: `visImage`
        - `list`: `visList`, `visListOf`
        - `selectBox`: `visSelectBox`, `visSelectBoxOf`
        - `slider`: `visSlider`
        - `textArea`: `visTextArea`
        - `textField`: `visTextField`
        - `validatableTextField`: `visValidatableTextField`
        - `textButton`: `visTextButton`
        - `imageButton`: `visImageButton`
        - `imageTextButton`: `visImageTextButton`
        - `radioButton`: `visRadioButton`
        - `tree`: `visTree`
        - `table`: `visTable`
        - `scrollPane`: `visScrollPane`
        - `splitPane`: `visSplitPane`
        - `addTooltip`: `visTooltip`
        - `addTextTooltip`: `visTextTooltip`
      - Parental actors including `collapsible`, `dragPane`, `horizontalCollapsible`, `visScrollPane`, `visSplitPane` and
      `multiSplitPane` now do not require passing widgets to their factory methods. Instead, widgets are either automatically
      created or can be defined as nested children with the same DSL.
      - Inlined functions with lambda parameters, such as widget factories with their building block lambdas, now use
      Kotlin contracts to ensure that they are executed exactly once.
      - `DEFAULT_STYLE` constant is removed in favor of `defaultStyle` from `ktx-scene2d`.
      - `styleName` parameters in factory methods were renamed to `style` for consistency with `ktx-scene2d`.
      - `@VisDsl` DSL marker is replaced with `@Scene2dDsl` marker from `ktx-scene2d`.
      - The sources documentation was greatly expanded.
    - **[FEATURE]** (`ktx-vis-style`) Added contracts support to widget style factory methods.
    Known issues:
    - **[BUG]** (`ktx-box2d`) Due to a Kotlin compiler bug, methods with _vararg_ parameters do not support contracts.
    👀 This includes some `polygon`, `chain` and `loop` factory methods. See [this issue](
    They can still be used and work as expected, but the compiler does not ensure that their lambda parameters are executed exactly once.