diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index f8b44e2f5..de3e7e02b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -12,7 +12,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Setup JBR 21
- uses: gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d
+ uses: actions/setup-java@v5
with:
distribution: 'jetbrains'
java-version: 21
@@ -41,7 +41,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Setup JBR 21
- uses: gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d
+ uses: actions/setup-java@v5
with:
distribution: 'jetbrains'
java-version: 21
@@ -56,7 +56,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Setup JBR 21
- uses: gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d
+ uses: actions/setup-java@v5
with:
distribution: 'jetbrains'
java-version: 21
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index cb0309fe3..18d4539ac 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -12,15 +12,17 @@ jobs:
strategy:
matrix:
- ideaVersion: [ "2024.2.0.1" ]
+ ideaVersion: [ "2024.2.6", "2024.3.6", "2025.2.1" ]
steps:
- uses: actions/checkout@v2
- name: Setup JBR 21
- uses: gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d
+ uses: actions/setup-java@v5
with:
distribution: 'jetbrains'
java-version: 21
+ cache: 'gradle'
+ package-type: 'jdk+jcef'
- name: Set up Elixir
uses: erlef/setup-beam@v1
with:
@@ -48,10 +50,12 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Setup JBR 21
- uses: gmitch215/setup-java@6d2c5e1f82f180ae79f799f0ed6e3e5efb4e664d
+ uses: actions/setup-java@v5
with:
distribution: 'jetbrains'
java-version: 21
+ cache: 'gradle'
+ package-type: 'jdk+jcef'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Run Plugin Verifier
diff --git a/.gitignore b/.gitignore
index 833cd8831..a526c5610 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,3 +29,4 @@ jps-shared/build
jps-shared/out
libs/
.intellijPlatform
+/.kotlin
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0cb26a9eb..6d0432a49 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## v22.0.0 (Unreleased)
+### Enhancements
+* [#3712](https://github.com/KronicDeth/intellij-elixir/pull/3712) - [@joshuataylor](https://github.com/joshuataylor)
+ * Upgrade Kotlin to 2.2.10, as it's deprecated in IntelliJ 2025.1+, various deprecations are also fixed.
+ * Fixed adding Erlang/Elixir SDKs in 2025.1+ IDEs.
+
## v21.0.0
### Enhancements
* [#3651](https://github.com/KronicDeth/intellij-elixir/pull/3681) - [@joshuataylor](https://github.com/joshuataylor)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 1b8f55f84..54ff95e1a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -31,7 +31,7 @@
6. In "Import Project from Gradle"
1. Check "Use auto-import"
2. Check "Create separate module per source set"
- 3. Ensure Gradle JVM is **AT LEAST** Java 1.7 / 7. (Java 1.8 / 8 is recommended.)
+ 3. Ensure Gradle JVM is **AT LEAST** Java 21+.
Your import settings should look something like this:

4. Click Finish
diff --git a/build.gradle b/build.gradle
index 44b05514c..beb3db599 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,11 +1,14 @@
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
import org.jetbrains.intellij.platform.gradle.tasks.RunIdeTask
+import org.jetbrains.kotlin.gradle.dsl.JvmTarget
+import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
+import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
plugins {
- id "org.jetbrains.intellij.platform" version "2.1.0"
- id "org.jetbrains.kotlin.jvm" version "1.9.25"
- id "de.undercouch.download" version "4.1.2"
+ id "org.jetbrains.intellij.platform" version "2.7.2"
+ id "org.jetbrains.kotlin.jvm" version "2.2.10"
+ id "de.undercouch.download" version "5.6.0"
id 'com.adarshr.test-logger' version '4.0.0'
}
@@ -33,13 +36,17 @@ ext {
channel = "canary"
}
- version "$pluginVersion$versionSuffix"
+ version = "$pluginVersion$versionSuffix"
}
allprojects {
apply plugin: 'java'
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
+ java {
+ sourceCompatibility = JavaVersion.VERSION_21
+ targetCompatibility = JavaVersion.VERSION_21
+ }
tasks.withType(JavaCompile) { options.encoding = 'UTF-8' }
}
subprojects {
@@ -58,7 +65,6 @@ subprojects {
create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion"))
bundledPlugins providers.gradleProperty("platformBundledPlugins").map { it.split(',').toList() }
- plugins providers.gradleProperty("platformPlugins").map { it.split(',').toList() }
instrumentationTools()
pluginVerifier()
@@ -88,10 +94,11 @@ sourceSets {
}
}
intellijPlatform {
+ // buildSearchableOptions = false
+ // instrumentCode = false
pluginConfiguration {
def stripTag = { text, tag -> text.replace("<${tag}>", "").replace("${tag}>", "") }
- def bodyInnerHTML = { path ->
- stripTag(stripTag(file(path).text, "html"), "body")
+ def bodyInnerHTML = { path -> stripTag(stripTag(file(path).text, "html"), "body")
}
id = providers.gradleProperty("pluginGroup")
@@ -122,13 +129,17 @@ intellijPlatform {
}
pluginVerification {
ides {
- ide(IntelliJPlatformType.IntellijIdeaCommunity, "243.12818.47")
+ // https://www.jetbrains.com/idea/download/other.html
+// ide(IntelliJPlatformType.IntellijIdeaCommunity, "2024.2.6")
+// ide(IntelliJPlatformType.IntellijIdeaCommunity, "2024.3.6")
+ ide IntelliJPlatformType.IntellijIdeaCommunity, "2025.2.1"
}
}
}
apply plugin: "kotlin"
-tasks.withType(RunIdeTask) {
+// Configure all RunIdeTask instances (including the new platform-specific ones)
+tasks.withType(RunIdeTask).configureEach {
// Set JVM arguments
jvmArguments.addAll(["-Didea.debug.mode=true", "-Didea.is.internal=true", "-Dlog4j2.debug=true", "-Dlogger.org=TRACE", "-XX:+AllowEnhancedClassRedefinition"])
@@ -142,19 +153,26 @@ tasks.withType(RunIdeTask) {
if (project.hasProperty("runIdeWorkingDirectory") && !project.property("runIdeWorkingDirectory").isEmpty()) {
workingDir = file(project.property("runIdeWorkingDirectory"))
}
+
+ def compatiblePluginsList = providers.gradleProperty("runIdeCompatiblePlugins").get().with { it.isEmpty() ? [] : it.split(",") }
+ if (compatiblePluginsList.size() > 0) {
+ dependencies {
+ intellijPlatform {
+ compatiblePlugins(compatiblePluginsList)
+ }
+ }
+ }
}
kotlin {
jvmToolchain(21)
}
-//noinspection GroovyAssignabilityCheck,GrUnresolvedAccess
-tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
- //noinspection GrUnresolvedAccess
- kotlinOptions {
- apiVersion = "1.7"
- jvmTarget = "21"
- freeCompilerArgs = ["-Xjvm-default=all"]
+tasks.withType(KotlinJvmCompile).configureEach {
+ compilerOptions {
+ jvmTarget.set(JvmTarget.JVM_21)
+ freeCompilerArgs.add("-Xjvm-default=all")
+ apiVersion.set(KotlinVersion.KOTLIN_2_2)
}
}
@@ -176,50 +194,30 @@ test {
}
}
+// Get the list of platforms from gradle.properties
+def runIdePlatformsList = providers.gradleProperty("runIdePlatforms").get().split(",")
+
intellijPlatformTesting {
- // Get the list of platforms from gradle.properties
- def platformsList = providers.gradleProperty("platformsList").get().split(",")
-
- // Use providers.gradleProperty to get the 'runIdePlugins' property
- def runIdePluginsProperty = providers.gradleProperty("runIdePlugins").getOrElse("")
- def runIdePluginsList = runIdePluginsProperty.split(",")
-
- platformsList.each { platform ->
- runIde.create("run${platform}") {
- type = IntelliJPlatformType."${platform}"
- version = providers.gradleProperty("platformVersion${platform}").get()
- prepareSandboxTask {
- sandboxDirectory = project.layout.buildDirectory.dir("${platform.toLowerCase()}-sandbox")
- }
+ runIde {
+ runIdePlatformsList.each { platform ->
+ "run${platform}" {
+ type = IntelliJPlatformType."${platform}"
+ version = providers.gradleProperty("platformVersion${platform}").get()
- // if runIdePluginsList is not empty, set the plugins
- if (runIdePluginsList.size() > 0) {
- plugins {
- // Apply each plugin from the 'runIdePluginsList'
- runIdePluginsList.each { plugin ->
- plugins(plugin.trim())
- }
+ prepareSandboxTask {
+ sandboxDirectory = project.layout.buildDirectory.dir("${platform.toLowerCase()}-sandbox")
}
}
- }
- // if enableEAPIDEs is true, create an EAP instance
- if (providers.gradleProperty("enableEAPIDEs").get().toLowerCase() == "true") {
- runIde.create("run${platform}EAP") {
- type = IntelliJPlatformType."${platform}"
- version = providers.gradleProperty("platformVersion${platform}EAP").get()
- prepareSandboxTask {
- sandboxDirectory = project.layout.buildDirectory.dir("${platform.toLowerCase()}_eap-sandbox")
- }
- useInstaller = false
-
- // if runIdePluginsList is not empty, set the plugins
- if (runIdePluginsList.size() > 0) {
- plugins {
- // Apply each plugin from the 'runIdePluginsList'
- runIdePluginsList.each { plugin ->
- plugins(plugin.trim())
- }
+ // if enableEAPIDEs is true, create an EAP instance
+ if (providers.gradleProperty("enableEAPIDEs").get().toLowerCase() == "true") {
+ "run${platform}EAP" {
+ type = IntelliJPlatformType."${platform}"
+ version = providers.gradleProperty("platformVersion${platform}EAP").get()
+ useInstaller = false
+
+ prepareSandboxTask {
+ sandboxDirectory = project.layout.buildDirectory.dir("${platform.toLowerCase()}_eap-sandbox")
}
}
}
@@ -237,7 +235,7 @@ task testCompilation(type: Test, group: 'Verification', dependsOn: [classes, tes
}
repositories {
- maven { url 'https://maven-central.storage.googleapis.com' }
+ maven { url = 'https://maven-central.storage.googleapis.com' }
mavenCentral()
intellijPlatform {
defaultRepositories()
@@ -248,9 +246,7 @@ dependencies {
intellijPlatform {
create(providers.gradleProperty("platformType"), providers.gradleProperty("platformVersion"))
- bundledPlugins providers.gradleProperty("platformBundledPlugins").map { it.split(',').toList() }
- plugins providers.gradleProperty("platformPlugins").map { it.split(',').toList() }
-
+ bundledPlugins(providers.gradleProperty("platformBundledPlugins").map { it.split(',').toList() })
instrumentationTools()
pluginVerifier()
zipSigner()
@@ -285,12 +281,12 @@ idea {
}
}
-task getElixir {
+tasks.register('getElixir') {
doLast {
- def folder = new File(elixirPath)
+ def folder = new File(elixirPath as String)
if (!folder.isDirectory() || folder.list().size() == 0) {
- download {
+ download.run {
src "https://github.com/elixir-lang/elixir/archive/v${elixirVersion}.zip"
dest "${rootDir}/cache/Elixir.${elixirVersion}.zip"
overwrite false
@@ -314,7 +310,7 @@ task getElixir {
task getQuoter {
doLast {
- download {
+ download.run {
src "https://github.com/KronicDeth/intellij_elixir/archive/v${quoterVersion}.zip"
dest quoterZipPath
overwrite false
@@ -423,3 +419,11 @@ idea {
generatedSourceDirs += file('gen')
}
}
+
+// Uncomment to allow using build-scan.
+// if (hasProperty('buildScan')) {
+// buildScan {
+// termsOfServiceUrl = 'https://gradle.com/terms-of-service'
+// termsOfServiceAgree = 'yes'
+// }
+// }
diff --git a/gradle.properties b/gradle.properties
index a4282d658..6c7776bb9 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,58 +2,67 @@
pluginGroup=org.elixir_lang
pluginName=Elixir
pluginRepositoryUrl=https://github.com/KronicDeth/intellij-elixir/
-pluginVersion=21.0.0
+pluginVersion=22.0.0
vendorName=Elle Imhoff
vendorEmail=Kronic.Deth@gmail.com
# https://youtrack.jetbrains.com/articles/IDEA-A-2100661899/IntelliJ-IDEA-2024.1-241.14494.240-build-Release-Notes
pluginSinceBuild=243.21565.180
pluginUntilBuild=
+#pluginVerificationIDEAVersions="251.26927.53"
+#pluginVerificationRubyMineVersions="251.26927.47"
# Set this to open
runIdeWorkingDirectory=
# Define versions for running the IDEs, as each IDE can release at different release versions.
-platformVersionIntellijIdeaCommunity=2024.3.2.2
-platformVersionIntellijIdeaUltimate=2024.3.2.2
-platformVersionRubyMine=2024.3
-platformVersionPyCharmCommunity=2024.3
-platformVersionPyCharmProfessional=2024.3
-platformVersionWebStorm=2024.3
+platformVersionIntellijIdeaCommunity=2025.2.1
+platformVersionIntellijIdeaUltimate=2025.2.1
+platformVersionRubyMine=2025.2
+platformVersionPyCharmCommunity=2025.2.1
+platformVersionPyCharmProfessional=2025.2.1
+platformVersionWebStorm=2025.2.1
-enableEAPIDEs=true
-platformVersionIntellijIdeaCommunityEAP=251-EAP-SNAPSHOT
-platformVersionIntellijIdeaUltimateEAP=251-EAP-SNAPSHOT
-platformVersionPyCharmCommunityEAP=251-EAP-SNAPSHOT
-platformVersionPyCharmProfessionalEAP=251-EAP-SNAPSHOT
-platformVersionRubyMineEAP=251-EAP-SNAPSHOT
-platformVersionWebStormEAP=251-EAP-SNAPSHOT
+enableEAPIDEs=false
+platformVersionIntellijIdeaCommunityEAP=252-EAP-SNAPSHOT
+platformVersionIntellijIdeaUltimateEAP=252-EAP-SNAPSHOT
+platformVersionPyCharmCommunityEAP=252-EAP-SNAPSHOT
+platformVersionPyCharmProfessionalEAP=252-EAP-SNAPSHOT
+platformVersionRubyMineEAP=252-EAP-SNAPSHOT
+platformVersionWebStormEAP=252-EAP-SNAPSHOT
# Comma-separated list of platforms to include
-platformsList=IntellijIdeaCommunity,IntellijIdeaUltimate,RubyMine,PyCharmCommunity,PyCharmProfessional,WebStorm
+runIdePlatforms=IntellijIdeaCommunity,IntellijIdeaUltimate,RubyMine,PyCharmCommunity,PyCharmProfessional,WebStorm
# The versions we target, 21 is needed for IntelliJ Plugins
javaVersion=21
javaTargetVersion=21
# Defined in `.tool-versions`, check via `elixir --version`
elixirVersion=1.13.4
+quoterVersion=2.1.0
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
# Target IntelliJ Community by default
platformType=IC
-platformVersion=2024.3
-# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
-# Example: platformPlugins = com.jetbrains.php:203.4449.22, org.intellij.scala:2023.3.27@EAP
-# https://plugins.jetbrains.com/plugin/24468-classic-ui
-# https://plugins.jetbrains.com/plugin/7641-action-tracker - Act
-# https://plugins.jetbrains.com/plugin/15104-ide-perf - IDE Performande
-# https://plugins.jetbrains.com/plugin/227-psiviewer - View PSI
-platformPlugins = PsiViewer:243.7768, com.google.ide-perf:1.3.2, org.jetbrains.action-tracker:0.3.3, com.intellij.classic.ui:243.21565.122,krasa.CpuUsageIndicator:1.18.0-IJ2023
-# Example: platformBundledPlugins = com.intellij.java
+platformVersion=2025.2.1
+
+# Plugins which will run ONLY when running `runIde` tasks, not for testing/release.
+#
+# Usage:
+# When using `./gradlew runIde`, pass the Gradle Property:
+# -PrunIdeCompatiblePlugins="PsiViewer,com.google.ide-perf,org.jetbrains.action-tracker,com.intellij.classic.ui,krasa.CpuUsageIndicator,IdeaVIM"
+#
+# Recommendations:
+# https://plugins.jetbrains.com/plugin/24468-classic-ui - Classic UI (old UI)
+# https://plugins.jetbrains.com/plugin/7641-action-tracker - Action Tracker (Allows to record actions performed by user in IntelliJ IDEs)
+# https://plugins.jetbrains.com/plugin/15104-ide-perf - IDE Performance
+# https://plugins.jetbrains.com/plugin/227-psiviewer - PSI Viewer (A Program Structure Interface (PSI) tree viewer)
+# IdeaVIM
+runIdeCompatiblePlugins=
# We need com.intellij.java to compile JPS, and markdown.
-platformBundledPlugins=org.intellij.plugins.markdown,com.intellij.java
+platformBundledPlugins=org.intellij.plugins.markdown,com.intellij.java,org.intellij.intelliLang
+
# Gradle Releases -> https://github.com/gradle/gradle/releases
# 8.5 is set because newer versions have weird run time caching issues, even with caching turned off.
# See https://github.com/gradle/gradle/issues/28974
-gradleVersion=8.12.1
+gradleVersion=8.14.3
# Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib
kotlin.stdlib.default.dependency=false
publishChannels=canary
-runIdePlugins=IdeaVim:2.16.0
# These must be set, or Out of Memory (OOM) errors will occur during compiling.
org.gradle.jvmargs=-Xmx4096m
kotlin.daemon.jvmargs=-Xmx4906m
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index a4b76b953..1b33c55ba 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index e18bc253b..7705927e9 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index f3b75f3b0..23d15a936 100755
--- a/gradlew
+++ b/gradlew
@@ -114,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -205,7 +205,7 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
@@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
+ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
diff --git a/gradlew.bat b/gradlew.bat
index 9b42019c7..5eed7ee84 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -70,11 +70,11 @@ goto fail
:execute
@rem Setup the command line
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/jps-builder/build.gradle b/jps-builder/build.gradle
index 1d22d5d1d..a08226d5f 100644
--- a/jps-builder/build.gradle
+++ b/jps-builder/build.gradle
@@ -8,6 +8,11 @@ compileTestJava {
compileJava {
dependsOn(":jps-shared:composedJar")
}
+java {
+ sourceCompatibility = JavaVersion.VERSION_21
+ targetCompatibility = JavaVersion.VERSION_21
+}
+tasks.withType(JavaCompile) { options.encoding = 'UTF-8' }
// Ensuring the necessary tasks are executed before tests
test {
@@ -30,4 +35,4 @@ test {
dependencies {
implementation project(':jps-shared')
-}
\ No newline at end of file
+}
diff --git a/jps-shared/build.gradle b/jps-shared/build.gradle
index a869b0950..0854ee58f 100644
--- a/jps-shared/build.gradle
+++ b/jps-shared/build.gradle
@@ -1,2 +1,6 @@
jar.archiveFileName = "jps-shared.jar"
-testClasses.enabled = false
\ No newline at end of file
+testClasses.enabled = false
+java {
+ sourceCompatibility = JavaVersion.VERSION_21
+ targetCompatibility = JavaVersion.VERSION_21
+}
diff --git a/resources/META-INF/changelog.html b/resources/META-INF/changelog.html
index 8f2f5b206..144f8221d 100644
--- a/resources/META-INF/changelog.html
+++ b/resources/META-INF/changelog.html
@@ -1,5 +1,21 @@
Enhancements
+ +