From d089b1e2fe9e94badbed456a60352af86418f711 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:22:40 +0000 Subject: [PATCH 1/4] Initial plan From 0f2808576f5d7b569e077b4dfc03593f8e968017 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:25:21 +0000 Subject: [PATCH 2/4] Add comprehensive JavaFX GraalVM native-image configuration Co-authored-by: lmangani <1423657+lmangani@users.noreply.github.com> --- pom.xml | 5 ++ .../SpriteLab/jni-config.json | 26 +++++++ .../SpriteLab/native-image.properties | 8 +- .../SpriteLab/reflect-config.json | 74 +++++++++++++++++++ 4 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/jni-config.json diff --git a/pom.xml b/pom.xml index 1942d4f..877d903 100644 --- a/pom.xml +++ b/pom.xml @@ -105,6 +105,11 @@ SpriteLab ${exec.mainClass} + + --verbose + --no-fallback + -H:+ReportExceptionStackTraces + diff --git a/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/jni-config.json b/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/jni-config.json new file mode 100644 index 0000000..25cb329 --- /dev/null +++ b/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/jni-config.json @@ -0,0 +1,26 @@ +[ + { + "name": "com.sun.glass.ui.mac.MacApplication" + }, + { + "name": "com.sun.glass.ui.mac.MacView" + }, + { + "name": "com.sun.glass.ui.gtk.GtkApplication" + }, + { + "name": "com.sun.glass.ui.gtk.GtkView" + }, + { + "name": "com.sun.prism.es2.GLContext" + }, + { + "name": "com.sun.prism.es2.GLDrawable" + }, + { + "name": "com.sun.prism.es2.GLFactory" + }, + { + "name": "com.sun.prism.es2.GLPixelFormat" + } +] diff --git a/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/native-image.properties b/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/native-image.properties index a20862a..a38f378 100644 --- a/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/native-image.properties +++ b/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/native-image.properties @@ -1,4 +1,10 @@ Args = --no-fallback \ --report-unsupported-elements-at-runtime \ -H:+ReportExceptionStackTraces \ - --initialize-at-run-time=com.sun.javafx.application.PlatformImpl,org.controlsfx + --initialize-at-build-time=org.slf4j \ + --initialize-at-run-time=com.sun.javafx.application.PlatformImpl,org.controlsfx,com.sun.glass.ui.Application,com.sun.glass.ui.gtk.GtkApplication,com.sun.glass.ui.mac.MacApplication \ + -H:IncludeResources=.*/.*\\.css \ + -H:IncludeResources=.*/.*\\.fxml \ + -H:IncludeResources=.*/.*\\.png \ + -H:IncludeResources=.*/.*\\.jpg \ + -H:IncludeResources=.*/.*\\.properties diff --git a/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/reflect-config.json b/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/reflect-config.json index 00e758c..13c75b7 100644 --- a/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/reflect-config.json +++ b/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/reflect-config.json @@ -35,5 +35,79 @@ "allPublicConstructors": true, "allDeclaredMethods": true, "allPublicMethods": true + }, + { + "name": "com.sun.javafx.tk.quantum.QuantumToolkit", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.sun.glass.ui.mac.MacApplication", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.sun.glass.ui.mac.MacPlatformFactory", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.sun.glass.ui.gtk.GtkApplication", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.sun.glass.ui.gtk.GtkPlatformFactory", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.sun.prism.es2.ES2Pipeline", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.sun.prism.sw.SWPipeline", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true + }, + { + "name": "com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer", + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "com.sun.scenario.effect.impl.sw.sse.SSEBoxBlurPeer", + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "com.sun.scenario.effect.impl.sw.sse.SSEBoxShadowPeer", + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "com.sun.scenario.effect.impl.sw.sse.SSEGaussianBlurPeer", + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "com.sun.scenario.effect.impl.sw.sse.SSEMotionBlurPeer", + "allDeclaredConstructors": true, + "allPublicConstructors": true } ] From a276a127584678d92a482ef5f010623ac0a907ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:26:24 +0000 Subject: [PATCH 3/4] Document GitHub Actions and GraalVM configuration Co-authored-by: lmangani <1423657+lmangani@users.noreply.github.com> --- Readme.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Readme.md b/Readme.md index 6db8990..c2be545 100644 --- a/Readme.md +++ b/Readme.md @@ -101,4 +101,28 @@ mvn clean package mvn -Pnative clean package ``` +### GitHub Actions & Release Process + +The repository includes automated build workflows: + +* **CI Build** (`.github/workflows/ci-build.yml`): Runs on every push/PR to test both JAR and native builds for Linux and macOS +* **Release Builds** (`.github/workflows/release-builds.yml`): Automatically creates distribution packages on GitHub releases + +**To create a new release:** +1. Create a new tag: `git tag v0.3.2` +2. Push the tag: `git push origin v0.3.2` +3. Create a GitHub release from the tag +4. The workflow will automatically build and attach: + - `SpriteLab-Linux-amd64.tar.gz` (Linux native binary + FFmpeg) + - `SpriteLab-macOS-arm64.tar.gz` (macOS ARM64 native binary + FFmpeg) + +**GraalVM Native Image Configuration:** + +JavaFX applications require special configuration for GraalVM native-image. The configuration files are located in: +- `src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/` + - `reflect-config.json` - Reflection configuration for JavaFX classes + - `jni-config.json` - JNI configuration for native JavaFX components + - `resource-config.json` - Resource includes (FXML, CSS, images) + - `native-image.properties` - Build arguments and initialization settings + Developed by **FedeiaTech**. \ No newline at end of file From 5842a2faa27642bc9c100d8e516a153329880d8d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:27:41 +0000 Subject: [PATCH 4/4] Address code review feedback - remove duplicate configurations Co-authored-by: lmangani <1423657+lmangani@users.noreply.github.com> --- Readme.md | 6 +++--- pom.xml | 2 -- .../SpriteLab/native-image.properties | 7 +------ 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/Readme.md b/Readme.md index c2be545..3d99e5b 100644 --- a/Readme.md +++ b/Readme.md @@ -120,9 +120,9 @@ The repository includes automated build workflows: JavaFX applications require special configuration for GraalVM native-image. The configuration files are located in: - `src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/` - - `reflect-config.json` - Reflection configuration for JavaFX classes + - `reflect-config.json` - Reflection configuration for JavaFX internal classes - `jni-config.json` - JNI configuration for native JavaFX components - - `resource-config.json` - Resource includes (FXML, CSS, images) - - `native-image.properties` - Build arguments and initialization settings + - `resource-config.json` - Resource includes for FXML, CSS, and images + - `native-image.properties` - Build arguments and class initialization settings Developed by **FedeiaTech**. \ No newline at end of file diff --git a/pom.xml b/pom.xml index 877d903..2fe9e11 100644 --- a/pom.xml +++ b/pom.xml @@ -107,8 +107,6 @@ ${exec.mainClass} --verbose - --no-fallback - -H:+ReportExceptionStackTraces diff --git a/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/native-image.properties b/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/native-image.properties index a38f378..9104a07 100644 --- a/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/native-image.properties +++ b/src/main/resources/META-INF/native-image/com.fedeiatech.spritelab/SpriteLab/native-image.properties @@ -2,9 +2,4 @@ Args = --no-fallback \ --report-unsupported-elements-at-runtime \ -H:+ReportExceptionStackTraces \ --initialize-at-build-time=org.slf4j \ - --initialize-at-run-time=com.sun.javafx.application.PlatformImpl,org.controlsfx,com.sun.glass.ui.Application,com.sun.glass.ui.gtk.GtkApplication,com.sun.glass.ui.mac.MacApplication \ - -H:IncludeResources=.*/.*\\.css \ - -H:IncludeResources=.*/.*\\.fxml \ - -H:IncludeResources=.*/.*\\.png \ - -H:IncludeResources=.*/.*\\.jpg \ - -H:IncludeResources=.*/.*\\.properties + --initialize-at-run-time=com.sun.javafx.application.PlatformImpl,org.controlsfx,com.sun.glass.ui.Application,com.sun.glass.ui.gtk.GtkApplication,com.sun.glass.ui.mac.MacApplication