Releases: webforj/webforj
Releases · webforj/webforj
Release list
Release v26.01
Immutable
release. Only release title and notes can be modified.
What's Changed
New Features And Enhancements 🎉
- fix: bind UI components to nested bean properties by @hyyan in #1346
- feat: introduce HasI18n and HasSelectionMode concern interfaces by @hyyan in #1352
- feat: add FileUpload component for inline file picking by @hyyan in #1353
- feat: add Geolocation API by @hyyan in #1364
- feat: add badge APIs for app icon and tab favicon by @hyyan in #1367
- feat: add Page Visibility API by @hyyan in #1368
- feat: Kotlin/icon defintion as string extension by @cliebhardt in #1369
- feat: add item pinning and search configuration by @hyyan in #1375
- feat: add the webforJ build plugin and Bun based frontend bundler by @hyyan in #1378
Bug Fixes 🐛
- fix: load webforJ dependent packages under Spring DevTools by @hyyan in #1376
- fix: read webforj.security config from Spring application.properties by @hyyan in #1385
- fix: wait for the app to be ready before reloading after a change by @hyyan in #1386
- fix: bundler should not always write the package.json & generated folder by @hyyan in #1387
- fix: keep the development watch and live reload current across restarts by @hyyan in #1393
Other Changes
- refactor: move Geolocation into com.webforj.geolocation package by @hyyan in #1365
- refactor: show setText content literally and add legacyHtmlInText flag by @hyyan in #1377
- build: add skip to maven-javadoc-plugin in webforj-kotlin pom by @cliebhardt in #1384
Full Changelog: 26.00...26.01
Release v26.00
Immutable
release. Only release title and notes can be modified.
Important
Java 21 required. This release drops support for Java 17. Upgrade your toolchain before migrating.
What's Changed
Breaking Changes 🛠
- feat: upgrade Spring Boot from 3.5.7 to 4.0.4 by @hyyan in #1276
- refactor!: remove deprecated APIs scheduled for removal in v26 by @hyyan in #1286
New Features And Enhancements 🎉
- feat: add webforj-rewrite module with OpenRewrite recipes for v26 by @hyyan in #1288
- feat: add autoWidth property to Dialog and option dialogs by @hyyan in #1319
- feat: add support for segment control rendering in TabbedPane by @hyyan in #1320
Bug Fixes 🐛
- fix: flatten webforj-bom to prevent leaking internal dependencies by @hyyan in #1277
- fix: router stuck after history.back() when replaceState was used before navigation by @hyyan in #1283
- fix: sync table column order immediately after moveColumn() by @hyyan in #1285
- fix: Accordion panel height doesn't change after opening by @hyyan
- fix: make option dialog base classes public for Kotlin accessibility by @hyyan in #1287
Other Changes
- Kotlin/dsl fix by @cliebhardt in #1316
- fix: set RefresherI18n object in i18n DSL by @cliebhardt in #1303
- Kotlin/terminal by @cliebhardt in #1298
Full Changelog: 25.12...26.00
Release v25.12
Immutable
release. Only release title and notes can be modified.
What's Changed
New Features And Enhancements 🎉
- feat: add minifierConfigurations support to Gradle plugin by @kevinhagel in #1209
- feat: support explicit BBj control ID assignment for components by @hyyan in #1214
- feat: add built-in translation system with locale auto-detection by @hyyan in #1223
- feat: webforj-kotlin Module by @cliebhardt in #1206
- feat: add missing getters for Kotlin synthetic property support by @hyyan in #1242
- feat: add support for grouping table columns by @hyyan in #1244
- feat: add accordion component by @hyyan in #1250
- feat: add badge component by @hyyan in #1252
- feat: add a set of built in table cell renderers by @hyyan in #1257
Bug Fixes 🐛
- fix: add webserver:// protocol support to ResourceResolver by @kevinhagel in #1210
- fix: handle missing WebforjServlet in BBj environment by @hyyan in #1222
- fix: msgbox breaks long text into 100 chars length by @hyyan in #1236
Other Changes
- feat: add ComponentSourceRegistry to track component instantiation locations by @hyyan in #1219
- refactor: deprecate unsupported Webswing bootstrap options by @hyyan in #1224
- fix: slider will query client component for value instead of relying … by @MatthewHawkins in #1217
- Dokka warning fix by @cliebhardt in #1245
- fix(kotlin): fix dsl functions by @cliebhardt in #1265
New Contributors
- @cliebhardt made their first contribution in #1206
Full Changelog: 25.11...25.12
Release v25.11
Immutable
release. Only release title and notes can be modified.
What's Changed
New Features And Enhancements 🎉
- feat: Add webforJ minify plugin for build-time asset optimization by @kevinhagel in #1129
- feat: add RouteRegistryProvider SPI for pluggable route discovery by @hyyan in #1160
- feat: include webforj as transitive dependency in spring-boot-starter by @hyyan in #1161
- feat: add webforj-jbang integration by @hyyan in #1162
- feat: add webforj-markdown-viewer component by @hyyan in #1165
- feat: add Debouncer utility class by @hyyan in #1169
- feat: add webforj-avatar component by @hyyan in #1170
- feat: add View Transitions API support for animated route navigation by @hyyan in #1178
- feat: remove existing prefix/suffix when set to
nullby @hyyan in #1189 - feat: add transition inheritance from parent routes by @hyyan in #1199
Bug Fixes 🐛
- fix: allow RadioButtonGroup to be nested within containers by @hyyan in #1164
- fix: change message parameter type from String to Object in
InputDialogandOptionDialogby @hyyan in #1188 - fix: ClassCastException when entering decimal in Quick Jump navigator's layout by @hyyan #1139
Other Changes
- refactor: adjust class modifiers for inheritance flexibility by @hyyan in #1146
- refactor: remove WebforjBBjBridge and use direct Java API by @hyyan in #1183
Full Changelog: 25.10...25.11
Release v25.10
Immutable
release. Only release title and notes can be modified.
What's Changed
New Features And Enhancements 🎉
- feat: add webswing integration by @hyyan in #1104
- feat: Add user configuration for mapping extensions to mime types for static files by @hyyan in #1116
- feat: add
actionprop and custom fields support to login component by @hyyan in #1126 - feat: add route security with Spring Security integration by @hyyan in #1112
- feat: add locale change notifications for components by @hyyan in #1132
- feat: add setKeyProvider() for custom entity key extraction by @hyyan in #1140
- feat: add support for textual date parsing in MaskedDateField by @hyyan in #1145
Bug Fixes 🐛
- fix: allow table column width to collapse to zero by @hyyan in #1098
- fix: WebStorage implementations return
nullfor non-existent keys by @hyyan in #1143
Full Changelog: 25.03...25.10
Release v25.03
What's Changed
New Features And Enhancements 🎉
- feat: add table columns sizing and moving support by @hyyan in #1065
- feat: add early lifecycle hooks for config management by @hyyan in #1071
- feat: Allow to configure webforj using spring properties file by @hyyan in #1072
- feat: add Router
Activatelifecycle event for cached component reactivation by @hyyan in #1079 - feat: add Spring custom scopes for webforJ environments and routes by @hyyan in #1076
- feat: add Spring MVC integration for root path mapping by @hyyan in #1086
- feat: provide API to access
HttpSession.Accessorand provideSessionObjectTableby @hyyan in #1088 - feat: add webforJ session scope for Spring beans by @hyyan in #1089
- feat: add browser launcher for webforJ Spring Boot apps by @hyyan in #1091
Bug Fixes 🐛
- fix: update Maven binary URL and version to 3.9.11 by @hyyan in #1051
- fix: resolve generic type inference issue in
DwcListby @hyyan in #1066 - fix: table
getSelectedKeysdoes not return the original repository keys by @hyyan in #1069 - fix:
ContextHolderdoes not free theApplicationContextwhenContextInjectoris disposed by @hyyan in #1073 - fix: handle
BrowserConsoleterminated connections gracefully by @hyyan in #1074 - fix: App instances should not be reused in spring when Routify is disabled by @hyyan in #1084
- fix:
FlexLayoutis not setting the box-sizing property by @hyyan in #1090
Full Changelog: 25.02...25.03
Release v25.02
What's Changed
New Features And Enhancements 🎉
- feat: add method to add components to the toast message slot by @hyyan in #1032
- feat: add App lifecycle listener support by @hyyan in #1033
- feat: implement runLater functionality for safe background thread access in Environment by @hyyan in #1039
- feat: add webforj-spring module with integration and boot starter by @hyyan in #928
Bug Fixes 🐛
- fix: Tree insert method ignores the specified index by @hyyan in #993
- fix: remove unnecessary BBjException catch in PageExecuteJsAsyncHandler by @hyyan in #1016
- fix: Installer fails with FileNotFoundException for Maven 3.9.8 binary URL by @hyyan in #1014
Other Changes
- refactor: implement runLater functionality with event handling instead of long polling by @hyyan in #1041
Full Changelog: 25.01...25.02
Release v25.01
What's Changed
New Features And Enhancements 🎉
- feat: Implement styling interfaces for terminal component by @hyyan in #973
- feat: Implement ClassName, Visibility, Size, and Attribute interfaces for the GoogleChart component. by @hyyan in #978
- feat: Introduce
IconDefinitioninterface and update Icon usage inInfiniteScrollandRefreshercomponents by @hyyan in #980 - feat: Add selection interfaces for multi and single item selection by index, key, or item reference by @hyyan in #981
- feat: add
treecomponent by @hyyan in #982 - feat: allow to enable/disable tree connection lines by @hyyan in #984
Bug Fixes 🐛
- fix:
AppNavItemdoes not handle absolute URLs by @hyyan in #967 - fix: correct argument deserialization in
Element.callJsFunctionto properly supportUTF-8by @hyyan in #974 - fix: encode Terminal data and key event values before sending to the server by @hyyan in #975
- fix: don’t remove namespace callbacks while webforj listeners are still attached by @hyyan in #977
Other Changes
Full Changelog: 25.00...25.01
Release v25.00
What's Changed
Breaking Changes 🛠
- refactor: Remove the marked deprecated code for version 25. by @hyyan in #929
- feat: Add table sort index functionality and enable single column sorting mode by @hyyan in #939
New Features And Enhancements 🎉
- feat: add pattern support to
NumberFieldcomponent by @hyyan in #934 - feat: Add webforj-alert component by @hyyan in #943
- feat: add
infinite-scroll&refreshercomponents by @hyyan in #944 - feat: add support for hiding the progress bar text by passing an empty string to the
setTextmethod. by @hyyan in #947 - feat: allow to dynamically style table rows and cells by @hyyan in #951
- feat: add support for customizable table borders and striped rows by @hyyan in #954
- feat: add experimental support to desktop notifications by @hyyan in #952
Bug Fixes 🐛
- fix: webforj does not separate routes when multiple WARs are deployed in the same server by @hyyan in #921
- fix: Programmatically updating table sorting doesn't work when using server-side sorting. by @hyyan in #931
- fix: When attempting to sort a column that contains null values, an error occurs by @hyyan in #940
- fix: Adding components to element slots causes layout shifts by @hyyan in #962
Other Changes
Full Changelog: 24.22...25.00
Release v24.22
What's Changed
New Features And Enhancements 🎉
- feat: Add support for icons URL handling in Assets and related components by @hyyan in #892
- feat: Allow to configure FileChooser and FileUpload Exists dialogs i18n by @hyyan in #891
- feat: add namespaces by @hyyan in #902
- feat: add NativeButton component to HTML elements by @hyyan in #903
Bug Fixes 🐛
- fix: webforj does not properly clean up the environment after a connection is lost by @hyyan in #897
- fix: remove control reset in
DwcComponentto allow exceptions caused by destroyed objects by @hyyan in #899 - fix: optimize component disposal in SlotRegistry to ensure all components are destroyed before clearing slots by @hyyan in #901
Other Changes
- resolves #883 by @kevinhagel in #884
- revert: register Element defined event listener only once to optimize performance (#860) by @hyyan in #889
- refactor: Router:getCurrent should return null when not defined by @hyyan in #898
Full Changelog: 24.21...24.22