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