This release build on the same Eclipse version as 2019.09, the next release 2020.03 will jump to Eclipse 2019-12 (4.14).
The shipped java version is updated to Java 13.0.1, its now included as a plugin (in the developer/plugins dir) instead of a feature (developer/features dir).
Because of an update problem from 2019.09 to 2019.12 we needed to add in the servoy.ini file a '-clean' as a program argument, this does result it a bit more start up time (5 to 10 seconds). This can be removed after update or with a fresh install.
Because we upgraded the sql server driver to a new version (7.0.0 → 7.4.1) it could be that in the drivers dir that old file is left over as a 0 bytes file. Please remove that 0 bytes file, if you make a WAR file from that install then it could be that the server container (like Tomcat) will fail to start.
We improved the Content Security Policy to only work for browsers that support CSP level 3, we will allow for CSS and FONT * (all urls) by default, this can be changed in the admin page that has now 5 properties for this (to fully disable it, or to adjust the various directives to make it more narrow)
Also partially already in 2019.09 is that the typing of Components is a bit different now. Not everything is a RuntimeComponent anymore, because RuntimeWebComponent (introduced in 2019.09) are not RuntimeComponents because that is the base class for all our legacy components like RuntimeButton.
Currently we have:
Component -> RuntimeComponent -> RuntimLabel/RuntimeButton/XxxxxYyyy
-> RuntimeWebComponent -> subs with <xxxx> as a type
So Component is the base type of everything and that has 2 sub types RuntimeComponent describing the whole legacy hierarchy and RuntimeWebComponent all the new Servoy Package Components.
So this: code: if (comp instanceof RuntimeComponent) will be false for WebComponents..
- Support for changing style classes on containers in responsive forms. There is now api under forms.[responsiveform].containers.[containername] like add and remove styleclasses (SVY-14219)
- utils.parseDate() has now a 3 argument method so you can use this for working better with dates in servoy for the current users timezone. See for more info: Working with dates (SVY-14426)
- NGDesktop export has more support for branding stuff by using an actual cloud building service, currently only working for Windows, OSX and Linux use still the pre build files so don't have all the options
- NGDesktop support for selecting a directory, watching a whole folder and setting default size/location and remembering the user values for restart, set/get clipboard
- OAuth plugin many improvements and nicer api for using it.
- ProfilerView, support for filtering and better reporting of sql timings so you can more quickly see the sql times for certain method calls.
- Better code completion and support for a common RuntimeComponent that handles both legacy and web components (SVY-14210)
- NGClientUtils extension has now support for catching the back button and getting the current hash of the state you go back to (SVY-14176) and directly print a pdf (SVY-13926).
Potentially breaking changes
- Servoy handles numeric columns that are smaller then 10 decimals and 0 precision now a bit different, it would map it more on directly a integer type not keeping the numeric type, we now keep the numeric type (SVY-13803)
- Switch server now really refreshes the i18n messages if the database server had the i18n table. If you don't want this, messages are shared, then make sure you use a different database for this (SVY-14114)
- datasources.inmem.myinmem.getColumnNames() (or JSTable.getColumnNames()) now filters the _sv_rowid column from the result if it had one (if the inmem didn't have pk column by itself) to be more inline with the in mem definition in the developer (SVY-14405)
- We now first try to match a locale on the country instead of language code for ngclient, That is for us mostly used for grouping and decimal char or the currency symbol sign which are mostly more country related then language. This is only a problem when a complete locale string like "nl_NL" doesn't match internally and we try to find a correct one. we did try then "nl" but we now first try "NL" (SVY-14391)
For the full list of cases look here