diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e412a2ab..33c07f6c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,3 +9,5 @@ updates: directory: "/" schedule: interval: "monthly" + cooldown: + default-days: 7 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6728c5c4..bc1aea80 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,7 @@ jobs: matrix-build: strategy: matrix: - java: [25] + java: [25, 26] os: ['ubuntu-latest', 'windows-latest'] # 'macos-latest' has issues with UI tests env: DEFAULT_JAVA: 25 @@ -28,7 +28,7 @@ jobs: steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: fetch-depth: 0 persist-credentials: false @@ -42,7 +42,7 @@ jobs: uses: gradle/actions/setup-gradle@v6 - name: Cache SonarQube packages - uses: actions/cache@v5 + uses: actions/cache@v6 if: ${{ env.DEFAULT_JAVA == matrix.java && env.DEFAULT_OS == matrix.os }} with: path: ~/.sonar/cache @@ -100,8 +100,10 @@ jobs: ossindex: runs-on: ubuntu-latest + permissions: + contents: read steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: persist-credentials: false - uses: actions/setup-java@v5 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f3b1c4aa..419cd5fe 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -35,7 +35,7 @@ jobs: build-mode: none # This mode only analyzes Java. Set this to 'autobuild' or 'manual' to analyze Kotlin too. steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: persist-credentials: false - uses: actions/setup-java@v5 diff --git a/.github/workflows/dependency-submission.yml b/.github/workflows/dependency-submission.yml index 6b07db41..8120046d 100644 --- a/.github/workflows/dependency-submission.yml +++ b/.github/workflows/dependency-submission.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: persist-credentials: false - name: Setup Java diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4e66e6f5..165a3eb1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,16 +24,17 @@ jobs: shell: bash steps: - name: Checkout the repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: persist-credentials: false - name: Fail if not running on main branch if: ${{ github.ref != 'refs/heads/main' }} - uses: actions/github-script@v9 - with: - script: | - core.setFailed('Not running on main branch, github.ref is ${{ github.ref }}. Please start this workflow only on main') + run: | + echo "Not running on main branch, github.ref is $GITHUB_REF. Please start this workflow only on main" + exit 1 + env: + GITHUB_REF: ${{ github.ref }} - name: Set up Java uses: actions/setup-java@v5 @@ -80,7 +81,7 @@ jobs: contents: write # Required for creating GitHub release steps: - name: Checkout the repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: persist-credentials: true - name: Set up Java @@ -94,10 +95,11 @@ jobs: - name: Fail if not running on main branch if: ${{ github.ref != 'refs/heads/main' }} - uses: actions/github-script@v9 - with: - script: | - core.setFailed('Not running on main branch, github.ref is ${{ github.ref }}. Please start this workflow only on main') + run: | + echo "Not running on main branch, github.ref is $GITHUB_REF. Please start this workflow only on main" + exit 1 + env: + GITHUB_REF: ${{ github.ref }} - name: Publish to Central Repository if: ${{ ! inputs.skip-maven-central }} diff --git a/.github/zizmor.yml b/.github/zizmor.yml new file mode 100644 index 00000000..53601032 --- /dev/null +++ b/.github/zizmor.yml @@ -0,0 +1,9 @@ +rules: + unpinned-uses: + config: + policies: + "actions/*": ref-pin + "gradle/actions/setup-gradle": ref-pin + "gradle/actions/dependency-submission": ref-pin + "github/codeql-action/*": ref-pin + "*": hash-pin diff --git a/.vscode/settings.json b/.vscode/settings.json index 21ee427e..2746ad64 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,6 +5,7 @@ "source.fixAll": "explicit" }, "java.codeGeneration.useBlocks": true, + // Too many false positives "java.compile.nullAnalysis.mode": "disabled", "java.configuration.updateBuildConfiguration": "automatic", "java.test.config": { @@ -25,4 +26,4 @@ "connectionId": "itsallcode", "projectKey": "white-rabbit" }, -} \ No newline at end of file +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 627d64f6..b498966d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [1.11.0] - unreleased +See [Release](https://github.com/itsallcode/white-rabbit/releases/tag/v1.11.0) / [Milestone](https://github.com/itsallcode/white-rabbit/milestone/13?closed=1) + +* Upgrade dependencies (PR [#309](https://github.com/itsallcode/white-rabbit/pull/309)) + * Removed jansi due to vulnerability CVE-2026-8484 + ## [1.10.0] - 2026-05-25 See [Release](https://github.com/itsallcode/white-rabbit/releases/tag/v1.10.0) / [Milestone](https://github.com/itsallcode/white-rabbit/milestone/12?closed=1) diff --git a/build.gradle b/build.gradle index 1c47eaf9..3964c973 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,14 @@ plugins { id 'eclipse' - id "org.sonarqube" version "7.3.0.8198" + id "org.sonarqube" version "7.3.1.8318" id "org.jetbrains.gradle.plugin.idea-ext" version "1.4.1" - id 'com.gradleup.shadow' version '9.4.1' apply false + id 'com.gradleup.shadow' version '9.5.1' apply false id "com.moowork.node" version "1.3.1" apply false id "com.github.ben-manes.versions" version "0.54.0" - id "org.panteleyev.jpackageplugin" version "2.0.1" apply false + id "org.panteleyev.jpackageplugin" version "2.1.0" apply false id "org.gradle.crypto.checksum" version "1.4.0" apply false id "io.github.gradle-nexus.publish-plugin" version "2.0.0" - id 'org.sonatype.gradle.plugins.scan' version '3.1.5' + id 'org.sonatype.gradle.plugins.scan' version '3.1.6' } version = "1.10.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index df6a6ad7..a9db1155 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-9.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500 diff --git a/gradlew b/gradlew index b9bb139f..249efbb0 100755 --- a/gradlew +++ b/gradlew @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: diff --git a/gradlew.bat b/gradlew.bat index aa5f10b0..8508ef68 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -19,7 +19,7 @@ @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## @@ -72,7 +72,7 @@ echo location of your Java installation. 1>&2 -@rem Execute Gradle +@rem Execute gradlew @rem endlocal doesn't take effect until after the line is parsed and variables are expanded @rem which allows us to clear the local environment before executing the java command endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel diff --git a/jfxui/build.gradle b/jfxui/build.gradle index 5bed85ba..b5c9a769 100644 --- a/jfxui/build.gradle +++ b/jfxui/build.gradle @@ -36,7 +36,6 @@ dependencies { runtimeOnly libs.log4j.core runtimeOnly libs.log4j.jul - runtimeOnly libs.jansi testImplementation libs.testfx testImplementation libs.bundles.testUtils diff --git a/jfxui/src/main/java/org/itsallcode/whiterabbit/jfxui/App.java b/jfxui/src/main/java/org/itsallcode/whiterabbit/jfxui/App.java index 65dc0a2e..db637f4d 100644 --- a/jfxui/src/main/java/org/itsallcode/whiterabbit/jfxui/App.java +++ b/jfxui/src/main/java/org/itsallcode/whiterabbit/jfxui/App.java @@ -10,7 +10,6 @@ public class App public static void main(final String[] args) { System.setProperty("javafx.preloader", SplashScreenLoader.class.getName()); - System.setProperty("log4j.skipJansi", "false"); System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager"); DesktopIntegration.getInstance().register(); diff --git a/jfxui/src/main/resources/log4j2.xml b/jfxui/src/main/resources/log4j2.xml index 6875ebda..2bc590ab 100644 --- a/jfxui/src/main/resources/log4j2.xml +++ b/jfxui/src/main/resources/log4j2.xml @@ -2,7 +2,7 @@ -