tag:github.com,2008:https://github.com/JPro-one/JPro/releasesRelease notes from JPro2025-12-10T15:40:56Ztag:github.com,2008:Repository/110852471/2026.1.02026-01-19T16:37:28Z2026.1.0<h3>2026.1.0 (January 19, 2026)</h3>
<h4>Security</h4>
<ul>
<li>Fixed an important security issue regarding file uploads via the WebAPI. It is recommended to update.</li>
</ul>
<h4>Improvements</h4>
<ul>
<li>Added the possibility to extend the live check that is performed when calling <code>/status/alive</code>.<br>
You can now define a custom class with a main method. This class is called during the alive check.<br>
It can be configured with the property <code>jpro.liveCheck</code> in the <code>jpro.conf</code> file.</li>
<li>Fixed OS detection in several places.<br>
In particular, default action key detection is now correct.<br>
On macOS, pressing Enter no longer triggers the default action.</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>Fixed an issue with Safari. There was an issue opening links created with <code>HTMLView</code> in Safari.</li>
</ul>FlorianKirmaiertag:github.com,2008:Repository/110852471/2025.3.32026-01-19T16:37:01Z2025.3.3<h3>2025.3.3 (December 22, 2025)</h3>
<h4>Improvements</h4>
<ul>
<li>Added Canvas PixelWriter support, accessed using <code>GraphicsContext.getPixelWriter()</code>.</li>
<li>InstanceID is now longer and guaranteed to be unguessable.</li>
<li>Added support for remote testing with QF-Test.</li>
<li>It's now possible to set the "image-rendering" attribute in the jpro-app tag.<br>
Its value is forwarded to image elements when running JPro.</li>
</ul>
<h4>Changes</h4>
<ul>
<li>The experimental 3D support flag <code>jpro.beta.enable3D</code> is now disabled by default.<br>
Enabling only when needed keeps the default javascript file size to a minimum.</li>
<li>Provide a new bundled JPro artifact that includes:
<ul>
<li>project wide CHANGELOG.md</li>
<li>project wide DOCUMENTATION.md</li>
<li>openapi specification for the jpro Server</li>
<li>a jpro-utils.qft library to help write tests against jpro using QF-test</li>
</ul>
</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>Improved handling of Modal Dialogs. Fixed an issue with multiple modal dialogs sometimes not blocking input correctly.</li>
<li>Fixed a shadow rendering issue where an unwanted shadow could appear in the top right corner.</li>
<li>Also corrected an invalid optimization for regions with transparent backgrounds that caused incorrect shadow rendering.</li>
<li>Fixed an issue where the cursor of a scene was incorrectly prioritized over the cursor of a node.</li>
<li>Fixed an issue regarding CanvasRendering. If the content wasn't cleared but rendered across multiple frames,<br>
sometimes settings like fill or stroke were not applied correctly.</li>
<li>Fixed a regression for <code>2025.3.0</code> where <code>WebAPI.getInstanceInfo().dataSentWSProperty()</code> was always <code>0</code>. It now works correctly again.</li>
</ul>FlorianKirmaiertag:github.com,2008:Repository/110852471/2025.3.22025-11-18T19:21:21Z2025.3.2<h3>2025.3.2 (November 18, 2025)</h3>
<h4>Major</h4>
<ul>
<li>Reworked the entire Documentation. It's not much more structured, and easier to read.</li>
<li>Added ability to set custom HTTP-Headers for responses using the ServerAPI.</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>Fixed issue regarding download of files with special characters in the filename.<br>
This is a regression introduced in 2025.3.0.</li>
<li>Fixed that, when using a TextField or TextArea with the setTextFormatter API, on every change the whole text was<br>
formatted. Now it only gets formatted when the user finished the input.<br>
This aligns the behavior with Desktop JavaFX. This may also fix unknown issues regarding text input.</li>
<li>Fixed mouse cursor behavior in Regions with transparent backgrounds.<br>
Regions don't influence the cursor.</li>
<li>Fixed bug in ServerAPI. The Request returned a broken value for the Request.getURI() method.</li>
<li>Fixed a rare exception when using Drag & Drop with multiple windows.</li>
<li>Fixed issue regarding Modal Dialogs, where it was possible to send KeyEvents to the underlying Stage.</li>
<li>Fixed that when a modal dialog was shown, it was possible to lose focus by clicking on the blocked area.</li>
<li>Fixed a regression where remoteAddress was not set. This regression was introduced in 2025.3.0.</li>
<li>The JPro-Loadbalancer now correctly uses the X-Forwarded-For and X-Forwarded-Host headers.</li>
<li>Fixed an issue regarding rendering Text elements with stroke.</li>
<li>Security improvement: restricted access to images that were not currently in use by the JVM.</li>
<li>Fixed the JPro-Loadbalancer sometimes not starting properly on some non-english linux versions.</li>
</ul>FlorianKirmaiertag:github.com,2008:Repository/110852471/2025.3.12025-09-21T13:50:45Z2025.3.1<h3>2025.3.1 (September 20, 2025)</h3>
<h4>Major</h4>
<ul>
<li>Added support for JavaFX 25.</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>Fixed an issue accessing resources when the JPro Loadbalancer is used.<br>
This happened when <code>WebAPI.openLocalURL(url)</code> was used.</li>
<li>Dropping a file outside a drop area no longer opens the file in the browser.<br>
This caused problems by accidentally closing the JPro application.</li>
<li>Fixed a rare race condition, regarding Drag and Drop.<br>
It didn't have any known visible effect, but could log an exception.</li>
</ul>FlorianKirmaiertag:github.com,2008:Repository/110852471/2025.3.02025-09-10T12:52:33ZJPro 2025.3.0<h4>Major</h4>
<ul>
<li>Changed the web framework used internally from Play to Helidon.<br>
This allows us to react more quickly to the latest security updates,<br>
and won't affect how you use JPro.</li>
<li>The JPro Loadbalancer is now released together with JPro.</li>
<li>Added support for Gradle9.</li>
<li>JPro now requires Java 21 or later.</li>
</ul>
<h4>Features</h4>
<ul>
<li>Every build is now automatically checked against the NVD (National Vulnerability Database) for security issues.</li>
<li>We now also release a SBOM (Software Bill of Materials) for every JPro release.<br>
It can be found in the <code>jpro-server</code> artifact as a file named <code>jpro-server_2.12-<version>-cyclonedx-bom.json</code>.</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>Small bugfix for the Maven Plugin. When JAVA_HOME is an empty String, we now fall back to the default java command.<br>
This is the same behaviour JPro has in the Gradle Plugin and the start scripts.</li>
<li>Fixed an issue regarding indexing by Google and other crawlers that don't support websocket.</li>
<li>ImageIO is now explicitly initialized in the ClassLoader of the App.<br>
Previously, it was sometimes initialized in the JPro Classloader - leading to subtle differences.</li>
<li>Fixed an issue where calling <code>WebAPI.closeInstance()</code> would sometimes result in an exception.</li>
<li>Removed the redirect of the log files in the start-background.sh script on linux and mac.<br>
This could lead to an endlessly growing log file. Now all the log files are created by the internal logger of JPro,<br>
which doesn't have such issues.</li>
<li>Fixed a rare issue when rendering non-uniform corner radii on Regions.</li>
</ul>FlorianKirmaiertag:github.com,2008:Repository/110852471/2025.2.12025-06-03T09:23:19ZJPro 2025.2.1<h4>Features</h4>
<ul>
<li>Improved how shortcut key combinations are detected.<br>
Combinations are now correctly based on the user's device rather than the server OS.<br>
This can be configured with the property <code>jpro.shortcutSource</code> in the <code>jpro.conf</code> file.</li>
<li>The <code>ServerAPI.addRequestHandler</code> API has been improved. The request now contains the headers and body.<br>
The request can now be any HTTP method (GET, POST, PUT, PATCH, DELETE).<br>
The response can now set the status code.</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>Added a fix for context menus and modality (<code>Stage.initModality</code>) where it was previously<br>
possible to open context menus in the blocked stage.</li>
<li>Fixed an exception which happened when a ComboBox was opened twice in a Popup.<br>
In this case, it was only possible, to open the ComboBox once.</li>
<li>Fixed an issue when using Canvas. In some cases the<br>
<code>Canvas.setClip()</code> method was not working as expected.</li>
<li>Removed the accidental rounded borders at the bottom on undecorated Stages.</li>
<li>Fixed an issue regarding rendering & minWidth/minHeight for <code>Window</code>.<br>
The bounds are now respected correctly.<br>
When the size of the <code>Scene</code> and <code>Window</code> do not match,<br>
the Scene size is now used as in JavaFX.</li>
<li>Fixed remaining issue regarding dropping folders as files.</li>
<li>Fixed an issue where resources were not properly released after image creation.</li>
<li>When using the Gradle commands <code>jproStart</code> and <code>jproStop</code> at the same time, stop was always called first.<br>
Now, the order is respected. This makes it easier to start and stop<br>
servers for test environments.</li>
</ul>FlorianKirmaiertag:github.com,2008:Repository/110852471/2025.2.02025-04-02T14:26:14ZJPro 2025.2.0<h4>Features</h4>
<ul>
<li>Added support for JavaFX 24.</li>
<li>In <code>Canvas</code>, clipping with arbitrary shapes is now supported.</li>
<li>Improved instance startup timeout logging. The timeout can now be configured with <code>jpro.instanceStartupTimeoutSeconds</code> in the <code>jpro.conf</code> file.</li>
<li>Added <code>WebAPI.getInstanceInfo().getRemoteAddress()</code> method to retrieve client IP addresses.</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>Fixed a regression with Text which happened in some cases when multiple <code>\n</code> or <code>\r</code> characters were used.</li>
<li>Folders can no longer be dropped as files. They can't be uploaded and are now properly filtered out.</li>
<li>Texts with gradients are now rendered correctly.</li>
<li>The initial font for Canvas is now applied correctly.</li>
<li>Fixed issue in the <code>Canvas</code> where in some rare situations, the identity matrix was used incorrectly.</li>
<li>Fixed issue with WebAPI access when using <code>jpro.linkUnownedWindowsToFirstInstance = true</code>.</li>
</ul>
<h4>Changes</h4>
<ul>
<li>Updated core dependencies that create the javascript files of JPro.</li>
</ul>besidevtag:github.com,2008:Repository/110852471/2025.1.02025-04-02T14:25:46ZJPro 2025.1.0<h4>Features</h4>
<ul>
<li>Added experimental 3D support. It can be activated in the jpro.conf with <code>jpro.beta.enable3D=true</code>.</li>
<li>Rewrote Focus Management. If multiple Stages are shown, now only one window is "visible focused".</li>
<li>Updated the JavaFX 17, 21 and 23 versions, which are used by JPro.</li>
<li>Added new methods to the WebAPI to detect the current platform: <code>WebAPI.getPlatformOld()</code> and <code>WebAPI.getPlatform()</code>.<br>
The method <code>WebAPI.getPlatformOld()</code> maps to <code>navigator.platform</code>, which is well-supported but deprecated.<br>
The method <code>WebAPI.getPlatform()</code> maps to <code>navigator.userAgent.platform</code>, which is not well-supported but is not deprecated.<br>
We provide an easier cross-platform API in the jpro-platform that also supports Desktop.</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>When <code>Stage.title</code> and <code>Stage.icon</code> are null, the title and icon of the html page are no longer overwritten.</li>
<li>Added support for BorderStrokeStyle.NONE for Region.</li>
<li>Fixed an issue with the Stage Border. When browser zoom was used, sometimes a "transparent line" was shown.</li>
<li>Fixed Issue with JAVA_HOME containing a space. This happened on Mac and Linux, when the start script from<br>
the JPro release was used.</li>
<li>When a ComboBox opened, it wasn't possible to select the next node with Tab. This is fixed now.</li>
<li>When a Node was focused, and a Tooltip appeared - than the key events were received by the popup of the Tooltip,<br>
instead of the focused Node. This is fixed now.</li>
<li>Fixed an Exception, which happened when a stage has an icons, and it's manually shown/hidden. <a href="https://github.com/JPro-one/JPro/issues/192" data-hovercard-type="issue" data-hovercard-url="/JPro-one/JPro/issues/192/hovercard">#192</a></li>
<li>Fixed and simplified text implementation, to fix very rare issues with text rendering.</li>
<li><code>JSFile.getUploadedFileFuture()</code> can now be called outside the JavaFX Thread.</li>
<li>Fixed rare render bug in ImageView. Certain property combinations involving Viewport were not rendered correctly.</li>
<li>Fixed an exception, when <code>Text.text</code> is set to null.</li>
</ul>besidevtag:github.com,2008:Repository/110852471/2024.4.12024-11-08T17:19:07ZJPro 2024.4.1<h4>Changes</h4>
<ul>
<li>Published the <code>jpro-webapi</code> artifact to the Maven Central Repository. The artifact is now available at the following<br>
coordinates:
<ul>
<li>Maven POM:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="...
<dependency>
<groupId>one.jpro</groupId>
<artifactId>jpro-webapi</artifactId>
<version>2024.4.1</version>
</dependency>
..."><pre class="notranslate"><code>...
<dependency>
<groupId>one.jpro</groupId>
<artifactId>jpro-webapi</artifactId>
<version>2024.4.1</version>
</dependency>
...
</code></pre></div>
</li>
<li>Gradle Build:
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="implementation 'one.jpro:jpro-webapi:2024.4.1'"><pre class="notranslate"><code>implementation 'one.jpro:jpro-webapi:2024.4.1'
</code></pre></div>
</li>
</ul>
For more information, refer to the <a href="https://www.jpro.one/docs/current/1.3/CREATE_A_PROJECT" rel="nofollow">JPro Documentation</a>.</li>
<li>The <code>syncStageAttributes</code> attribute is now enabled by default.</li>
</ul>besidevtag:github.com,2008:Repository/110852471/2024.4.02024-11-05T11:32:12ZJPro 2024.4.0<h4>Feature</h4>
<ul>
<li>JavaFX 23 (version 23.0.1) is now supported and set as the default version. Note that JavaFX 23 requires JDK 21 or later.</li>
<li>JavaFX 17 LTS has been updated to version 17.0.12.</li>
<li>JavaFX 21 LTS has been updated to version 21.0.4.</li>
<li>You can now start JPro with the argument <code>-Djpro.parent.pid=<PID></code>. If the specified parent process stops, the JPro<br>
server will also stop automatically.</li>
<li>When the BuildTool Process of the command <code>mvn jpro:run</code> or <code>gradle jproRun</code> is stopped forcefully, then the JPro<br>
server is now also stopped.</li>
<li>The browser tab now accurately reflects the JavaFX stage's title and favicon. The tab title is set based on the<br>
stage's <code>title</code> property, and the favicon is sourced from the first icon in the stage's <code>getIcons</code> list. To enable<br>
this feature, use the <code>syncStageAttributes</code> attribute in the <code>jpro-app</code> tag. For more details, refer to the updated<br>
documentation or <a href="https://github.com/JPro-one/JPro/issues/185" data-hovercard-type="issue" data-hovercard-url="/JPro-one/JPro/issues/185/hovercard">JPro Issue #185</a>.</li>
</ul>
<h4>Improvements</h4>
<ul>
<li>The implementation JSFile is no longer an anonymous class - making debugging easier.</li>
</ul>
<h4>Bugfixes</h4>
<ul>
<li>Fixed Stages, when the StageStyle <code>Transparent</code>, <code>Unified</code>, or <code>Utility</code> is used.</li>
<li>Fixed various issues, regarding special characters, and the start script of the JPro Release.</li>
</ul>besidev