2024.09
Release Notes
2024.09
Enhancements
Introduced a first class Menu/MenuItem support in the developer, you can now create those as toplevel items that can then be used in various components, like popupmenu or sidnav/navbar (this will be an ongoing improvement for also the comming releases)
The table editors "extended view" is improved by showing a bit more (readonly) columns: sequence,format,autoenter,validation and conversion. So you can see in one go in the table editor all the settings that are set for a column.
In the developer we now have new Documentation view that will show the documentation of the selection in the developer and that has an context action to quickly jump to that same documention url in the browser.
ES6 better restParamer support(function restArgs(...myArgs))
Improved PWA support for new solutions (default enabled and the manifest that the browser reads in is tweaked to the current standards)
Popup form has some improvements for chaining them, but also a form popup can now show a child form popup without that parent to be closed (it can now nest, closing the parent will close them all)
RestWS plugin: HTTP.DELETE can now return its own status or some content.
Possible Breaking Enhancement (for the next release this is default)
For 2024.9 the property mentioned below: servoy.foundset.deleteWithAutosaveOff=true is default to true, so the new behavior is for this release not the default But for 2024.12 this will be default false, so that all record related stuff (insert,updates and deletes) do have all the same autosave behavior:
When autosafe is now off (databaseManager.setAutoSave(false)) also deletes that are done in the solution are not right away deleted in the databse (as we did before). Now deleted records are also part of the autosave, just like new and changed records. This means that the user itself doesn't see those delete records anymore but other users still do seem them until databaseMananager.saveData() is called. If your solution depends on the old behavior that deletes are always done right away (when autosave is off) you can turn this new behavior of with a servoy property: servoy.foundset.deleteWithAutosaveOff=true
so please set this property to false for your developer so you can start testing with this.
Breaking plugin/bean development change
Because of the removeal of Smart and Webclient (wicket) related code and jars. Plugins that where build against smart of webclient stuff (to support both differently) don't run anymore they can end up in: java.lang.ClassNotFoundException: com.servoy.j2db.server.headlessclient.IWebClientPluginAccess
Those plugins needs to change to remove all those depedecies on those classes/interfaces and be rebuild, for jasper_reports we created a new release that is build for Servoy 2024.09:
For more information about plugin development (what is needed, what jars you should include in your classpath now because j2db.jars are gone) look here
Beans are not used at all anymore, they where only for Smart and Webclient specifically. So all that code interfaces is also fully removed from Servoy.
Lib upgrades
Eclipse updated to 4.32 and other 3rd part libs to the latest releases.
Angular is upgraded to 18.2.1 (this is a major update so very likely most packages also need an update, nggrid is mandatory)
Java updated to 21.0.4 from 21.0.3
Nodejs upgrade to 20.15.1 from 20.12.2
API changes
Streamlined some api between record/foundset/databasemanager, related to save/revert (record.save, foundset.save and revertChanges)
A lot of deprication in the solution model api for legacy components/functions.
datasources.get() has now also an overload where you can give a record or foundset so we extract the datasource from that one to return ta JSDatasource for the give record/foundset
Added application.assert(boolean condition, string message) that you can use to test for stuff (like incoming arguments), If the condition is false a client when deployed will just report the message to the error log. But in a debug client this will be seen as a breakpoint hit and the debugger will break.
clientutils.getBounds(elements.myelement,'.subclass') for getting the runtime bounds of an element or even something inside the element with the class selector
clientutils.requestFullScreen() to set the current window as full screen
dialogs.showInputDialog has now an extra parameter to set the type of the textbox that is shown (so you can ask for just numbers as an example)
JSColumn.getRawTitle() to get the raw string (can be a i18n messager key), instead of return the resolved message key what getTitle() does.
Case List
Below is a comprehensive list of cases associated with each release (candidate)
2024.9.0-RC2
2024.9.0-RC1
Last updated