2024.03

Release Notes

2024.03

Enhancements

The following are key enhancments in Servoy version 2024.03

Stateless Login Form improvements

More integration with ServoyCloud, to also enabled forgotten password and other flows.

See here for more info.

ECMAScript Parser

JSFoundset, JSViewFoundset and JSDataset are now iterables so in the new parser they can be used like:

for(let record of foundset) {
    // use directly the record
}

Developer

Introduced a Servoy Darktheme that is more "darker".

New solution will not generate anymore 2 sets of less files (one for NG1 and the other for TiNG), it will now only generate the TiNG less file.

Dynamic guides in the Form Editor has a lot more improvements (still work in progress)

Core (Api) improvements

Setting a FoundsetFilter will not set by default the initalized flag of a foundset back to false, this means that it won't by itself on various calls do a loadRecors() by itself suddenly (to initialize itself) Because adding a foundset filter the developer is responsible for calling loadRecords() on that foundset after all filters are added. We added a new api: foundset.setFoundSetFilters(name, filters) which can be used to set multiply filters at once and the foundset will also load itself (query) with all those records at once we did add a servoy property "servoy.foundset.unitializeWithFilter" which is default false (so new behavior) so you can set the behavior back if you do depend on foundsets being initialized again by the system. See SVY-18707

Component development: there is now better support for calling any kind of server side function, without knowing the details how to call stuff. Where a component could have a model property with a type "function" and then with the use of the servoyService.executeInlineScripting(xx) you could call the server side. That is now not needed, because those functions are callable functions by itself now so you can do this.functionProperty(arg1, arg2). This also means that you can just give those functions straight into 3rd party components (that you wrap)

Inside Servoy this also works now for function references so elements.mycomponent.myproperty = {'test': function(){// some server side code}} And that 'myproperty' is of type "object", "map" or "json" that will just have a nested function 'test' that is callable as a normal clientside/browser function but will then call the server side. So no need anymore to only assign/reference top level functions. Both are now supported to have calls going back to the server from the browser.

ValuelistConfig object has now also an option to allowNewEntries or not]

Added JSFoundset.omitRecord(JSRecord) method.

Plugin api improvements

clientmanager broadcast api is adjusted a bit to be nicer when you just want to listen or just want to send messages.

JasperReportsPlugin has a new release, this one should be used on 2024.03 Because of this our IText.jar that we ship in our plugins is updated to what Jasper now uses: OpenPDF.jar This is a fork of the itext that we always shipped.

Testing (could be breaking)

JSUnit is now a headless client, so you can't use ui (form.elements.xxx or things like application.createWindow) anymore Its now purely a javascript unit code test UI Testing needs to be done with browser tools.

Lib upgrades

Updated embedded tomcat to 9.0.86

Lot of updates to 3rd party libs (Eclipse 4.30 (2023.12), plugins jars)

Angular is upgraded to 17.2, including all the libraries which also needs to be updated.

BREAKING

This release has a breaking change for people that are using deeplink (m=xxx) in the url of the client that you start.

That function now needs to have in the doc the annotation @deeplink, so the system knows that this function can be called as a deeplink. If a function doesn't have that annotation then it will not be called and Servoy will generate a error: "Trying to call a non deeplink (no @deeplink annotation) method: " The best way is to quickly annotate your deeplinks, but if for the short term that is not feasible you can add this property: "servoy.legacy.deeplinks=true" to the servoy properties file to get the old behavior back.

Note

As a heads up, This release will be te last release that will include SmartClient,WebClient and the NGClient (angularjs).

Case List

Below is a comprehensive list of cases associated with each release (candidate)

2024.3.0-RC3

2024.3.0-RC2

2024.3.0-RC1

ComponentsKeySummary

Last updated