2024.12
Release Notes
2024.12
Enhancements
Menu:
The new Menu introduces several improvements, including enhancements for components. Components can now add a dataprovider
property directly to the menu, making the menu's property writable and allowing you to retrieve values from menu items.
Additionally, when a menu is created, it is now automatically a datasource, allowing access in two ways:
menus.xxxx
datasources.menu.xxxx
This means you can retrieve a Foundset based on a menu. It also includes an automatic relation for child items, children_menu_items
, enabling you to use a component like DBTreeView(which is based on a foundset) to display the menu as a tree structure.
Permissions & Security
Menu items can now have permissions, allowing visibility or enabling based on specific user roles. Additionally, a runtime API, setSecurityFlags()
, is available to dynamically configure security settings for the current user.
Menu in the Form Designer
Menus are now available in the Designer Palette, allowing you to drag and drop them directly onto a form. When dropped, a popup will display a list of components that support menu integration.
Breaking Change
Some API changes were made to JSMenu and JSMenuItem:
The API for adding and retrieving child items is now consistent between JSMenu and JSMenuItem.
The method
getSubMenuItems()
on JSMenuItem has been renamed togetMenuItems()
, aligning with JSMenu.
OnBeforeRecordChange:
A new event listener has been added to Foundset events in the Table Editor. This event allows you to react to selection changes in the foundset and even block the selection if necessary. For example, you can prevent a user from selecting a new record if the currently selected record is in an invalid state.
ListFormComponent Enhancements:
The ListFormComponent now supports an onAction
event, which is triggered when a user clicks anywhere on a row.
Stateless Login:
OAuth Integration
The OAuth option is now available in the solution's authenticator property, enabling Single Sign-On (SSO). When selected, the user is redirected directly to the OAuth provider without displaying a login screen.
When this property is selected, a dedicated edit dialog allows you to configure the required values for predefined OAuth providers or set up a fully custom authentication flow. The Authenticator then processes the authentication result.
ServoyCloud Enhancements
OAuth support has been added for ServoyCloud.
Tenant values are now pushed automatically by calling
setTenantValue
when a client starts.
Custom Authentication Values
The authenticator now supports custom values for authorization, allowing greater flexibility in the login process.
Designer/Form Editor:
Favorites in the Palette
You can now mark components as favorites in the palette by selecting the star icon when hovering over them. Additionally, the "commonly used" section can be disabled by setting the number of displayed components to 0 in the preferences.
Properties View Enhancements
A new toggle option allows you to display only filled-in properties, making it easier to see which properties have been explicitly set (i.e., not using default values).
A "Copy Value" command has been added to the context menu of a property name, enabling quick copying of property values.
Ecma 202x:
The ECMA parser has been completely rewritten to use the Rhino parser directly — the same parser used at runtime in the client. This ensures that the development environment and runtime behavior are fully aligned, preventing discrepancies between scripting in the IDE and execution in the client.
Additionally, this new implementation significantly improves performance compared to the previous ECMA parser.
Configuring the Parser
This new parser is enabled by default in this release.
If needed, you can revert to the previous parser in the preferences.
For command-line WAR exports, you can switch back to the old parser by using the following flag:
-Dservoy.useES6=false
Content Security Policy (CSP)
The style-src
directive in the Content Security Policy (CSP) has been tightened for improved security.
Previously, it was set to:
* 'unsafe-inline'
Starting from RC1, the default value is now:
'self' 'nonce-${nonce}'
Handling Potential Breakages
This change may break components that generate inline styles.
If your components break in Servoy 2024.12, you can revert to the previous setting:
'self' 'unsafe-inline'
. This setting allows CSS files from the same host while still permitting inline styles.For stricter security, administrators can enforce the new setting (
'self' 'nonce-${nonce}'
) via the Admin Page. However, this may cause some third-party components to break unless they are updated to comply with the stricter CSP rules.
Lib upgrades
Eclipse updated to 4.33 along with other third-party libraries, which have been upgraded to their latest releases.
Angular upgraded to *18.2.12.
Java remains on 21.0.5 (previously compared to 9.1).
Node.js upgraded from 20.18.0 to 22.12.0.
Possible Breaking Enhancement (coming from the 2024.09 release)
The property servoy.foundset.deleteWithAutosaveOff=false
is now false
by default. This means that deletes will behave the same as updates and inserts, being part of the auto-save transaction.
Reverting to Legacy Behavior
If you need to restore the previous behavior, you can set the property back to true
:
servoy.foundset.deleteWithAutosaveOff=true
API changes
New Application Methods
The following methods have been added to access properties from the servoy.properties
file:
application.getServoyProperty(key)
– Retrieves the value of a specific property.application.getServoyPropertyNames()
– Returns a list of all available property keys.
File Plugin Refactor & Deprecations
The File Plugin has undergone a significant refactor, with many deprecated functions that were originally introduced for SmartClient.
The plugin still maintains the distinction between:
Local Files (
JSFile
) – Can be any file on the filesystem. These files can be served to users but are session-bound, meaning access is managed through a generated UUID-based URL.Remote Files (
JSFile.getRemoteUrl()
) – Files stored in a designated directory (either the path set inservoy.FileServerService.defaultFolder
or a generated folder underuser.home
). These files can be served without requiring a session, and the generated URL contains the filename directly.
Possible Breaking change for component development
The old size and location properties, which were previously pushed as input properties, have been removed and will no longer be available.
These properties were deprecated because they have long been replaced by the CSSPosition property (or are not used at all when working with a responsive form).
Required Changes for Components
If your component still relies on these properties, you should:
Remove them as
@Input
properties.Find an alternative approach to determine width or height, depending on the specific use case.
RC3
This release includes additional fixes for:
RC2
Node.js Upgrade
Node.js was upgraded to 22.12 (from 22.11) due to a bug in NPM affecting Linux systems.
Embedded Chromium Upgrade
The embedded Chromium version has been updated.
In RC1, Chromium generated a
.equo
directory inside the workspace, which could cause confusion for users who directly use the workspace as a Git repository.This directory has now been relocated inside the
.metadata
directory, which is typically already ignored by version control.
ECMA Parser Fixes
A new DLTK build includes multiple fixes for the new ECMA parser, improving how certain code structures are parsed.
Ongoing Case Fixes
For a complete case list, see below.
SVY-19841 is still in progress and may introduce regressions when using nested relations in multiple tab panels.
Case List
2024.12.0
2024.12.0-RC2
2024.12.0-RC1
Last updated
Was this helpful?