Faktor-IPS
Release Notes
Version 2.4.9
New features and improvements
Automatically focus first applicable element in combobox
If a character or word is entered into a combobox and there is only one matching element, then this element gets selected automatically.
- Example
-
A combobox has the values UP, DOWN, LEFT, RIGHT.
If the user enters 'u', the entry UP is selected automatically.
If the user enters 't', there are two possible matches (LEFT and RIGHT) and therefore no entry is selected automatically.
Version 2.4.8
New features and improvements
Updated dependencies
The following versions have been updated:
23.6.12.release |
|
Spring-Boot |
3.1.12 |
Version 2.4.7
New features and improvements
Updated dependencies
The following versions have been updated:
Vaadin |
24.1.16 |
Spring-Boot |
3.1.7 |
Version 2.4.6
New features and improvements
Updated dependencies
The following versions have been updated:
Vaadin |
24.1.14 |
Spring-Boot |
3.1.6 |
Faktor-IPS |
23.6.5.release |
Version 2.4.5
New features and improvements
Updated dependencies
The following versions have been updated:
Vaadin |
24.1.12 |
Spring-Boot |
3.1.4 |
Version 2.4.4
New features and improvements
Updated dependencies
The following versions have been updated:
Vaadin |
24.1.10 |
Spring-Boot |
3.1.3 |
Bugfixes
-
Fixed @BindMessages not working on Grid column fields
Version 2.4.3
New features and improvements
Updated dependencies
The following versions have been updated:
Vaadin |
24.1.6 |
Faktor-IPS |
23.6.4.release |
Version 2.4.2
New features and improvements
Updated dependencies
The following versions have been updated:
Vaadin |
24.1.3 |
Spring Boot |
3.1.2 |
Bugfixes
Compatibility with Spring Dev Tools restored
With this patch version, linkki can be used with Spring Devtools in again.
Other
-
Fixed that added child rows are not visible in hierarchical tables
Version 2.4.1
New features and improvements
Updated dependencies
The following versions have been updated:
Faktor-IPS |
23.6.2.release |
Vaadin |
24.1.2 |
Spring-Boot |
3.1.1 |
LumoConstants
no longer necessary
With linkki 2.4.0 we introduced the class LumoConstants
because the CSS constants in Vaadin’s LumoUtility
were no longer constant expressions (and thus could not be used in annotations).
Vaadin 24.1.2 reverted the change, so LumoUtility
should now be directly used again - LumoConstants
is now deprecated.
Removed generated Vaadin files
Files generated by Vaadin can now be removed from the repository without affecting the speed of the build. The advantage of this is that a Vaadin version update does not cause any further Git differences.
It is not required to list these files in .gitignore
since they are automatically deleted by the Vaadin build if they did not exist before.
Affected files, for example:
-
package.json
-
package-lock.json
-
tsconfig.json
-
typed.d.ts
-
vite.config.ts
Bugfixes
-
Fixed wrong min-width in @UISection for layouts where the label is above the component
Version 2.4.0
This release brings a new technology baseline that includes Java 17, Spring Boot 3, Jakarta EE 10, Vaadin 24 and Faktor-IPS 23.6. These upgrades not only make it possible for linkki developers to make use of the new features of these platforms, it also ensures that the linkki application relies on the latest technologies that are well supported in the near future.
- Java 17
-
Java 17 is required instead of Java 11. This primarily impacts the build environment, as well as the Java version definition in the
pom.xml
. - Artifact Names
-
Due to the upgrade to Vaadin 24, all artifacts have been renamed to use
vaadin-flow
instead ofvaadin23
. This includes following dependencies:-
linkki-core-vaadin23
, nowlinkki-core-vaadin-flow
-
linkki-core-nestedcomponent-vaadin23
, nowlinkki-core-nestedcomponent-vaadin
-
linkki-application-framework-vaadin23
, nowlinkki-application-framework-vaadlin-flow
-
linkki-ips-vaadin23
, nowlinkki-ips-vaadin-flow
-
- Vaadin 24
-
This Vaadin version primarily updates the technology baseline. In addition, several improvements are made regarding the frontend build. As an example, resources such as CSS are now reloaded on the fly, which accelerates the development process. Vaadin 24 brings several breaking changes that are documented in the Vaadin migration guide. There are several changes that has an effect on linkki users:
-
node.js should be updated to the latest LTS version 18
-
The breaking API changes only have an effect on code that uses Vaadin API directly. There are no resulting linkki API changes. To see all breaking API changes, see Vaadin release notes for Flow Components version 24.0.0 and 24.1.0.
-
Label
component was deprecated as it is often misused to display text content. This may lead to unexpected behavior in the UI. Check all usages if they should be replaced by aSpan
instead.Label
is replaced byNativeLabel
which still can be used if a<label>
element is necessary.
-
-
Fields from
LumoUtility
are no longer constant expressions, meaning they can no longer be used in annotations, e.g.@BindStyleNames({ LumoUtility.Flex.AUTO })
. linkki now provides the classLumoConstants
, that defines the same fields as constant expressions, to mitigate this problem. All existing usages of constants fromLumoUtility
in annotations should be replaced byLumoConstants
.Since vaadin 24.1.2, LumoUtility
defines constant expressions again.LumoConstants
has been deprecated in linkki 2.4.1. -
The default way frontend resources are included has changed. Consequently, CSS and JavaScript files that are included by using
@CSSImport
or@JsModule
may not be included anymore, if the class on which the files are included are only reachable by reflection or injection. If this problem occurs, an error can be found in the console when the affected page is opened in the browser. To mitigate this issue, the vaadin-maven-plugin should be configured with the configuration parameteroptimizeBundle
set to false. See Vaadin maven plugin configuration -
There are some changes in the resulting DOM structure that may impact UI tests and CSS selectors.
-
Some components are now in the light DOM instead of being in the shadow DOM, e.g.:
-
Buttons in
MenuBar
-
Elements in
DatePicker
-
Elements in
Upload
-
Elements in
MultiSelectComboBox
-
-
Some CSS properties have changed, e.g.:
-
--lumo-border-radius
is removed. Use--lumo-border-radius-m
instead. -
CSS properties to set the border radius of input fields have changed.
--vaadin-input-container-top-end-radius
is now--vaadin-input-field-top-end-radius
,--vaadin-input-container-bottom-end-raiuds
is now--vaadin-input-field-bottom-end-radius
-
For all frontend changes, see Vaadin release notes for Vaadin Web Components.
-
-
Visually, the application looks mostly the same as with Vaadin 23. Following visual changes may need styling adjustments if the previous behavior need to be restored:
-
All Headings (
h1
-h6
) do not have a default margin anymore. Components in linkki do not have to be adjusted. If headings are used in any other components, check visually if the margin still behave as expected.
Styling changes can also be found in Vaadin release notes for Vaadin Web Components.
-
-
The
snakeyaml
dependency, which is required for using YAML configuration files with Spring Boot, has been excluded by Vaadin in this version. To continue using YAML files, following dependency must manually be added:<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> </dependency>
-
When using Karibu for unit testing, the version has to be updated to 2.0.0 or greater:
<dependency> <groupId>com.github.mvysny.kaributesting</groupId> <artifactId>karibu-testing-v24</artifactId> <version>2.0.2</version> <scope>test</scope> </dependency>
-
- Faktor-IPS 23.6
-
The linkki Faktor-IPS extension uses the latest Faktor-IPS version 23.6. There are no resulting API changes in the Faktor-IPS extension.
- Spring Boot 3 and Jakarta EE 10
-
Spring-based applications need to upgrade to Spring Boot 3 or Spring framework 6. Spring Boot 2 is no longer supported by Vaadin. The Spring Boot archetype has been upgraded to Spring Boot 3 accordingly.
Due to the Java update, Spring Devtools currently do not work with linkki in some Eclipse versions. Projects that are currently using Devtools for hot reload may need to exclude it temperarily.Compatibility with Spring Devtools is restored in the patch version 2.4.2. Non-Spring application needs to be upgraded to be compatible with Jakarta EE 10. The version of the application server may need to upgraded accordingly. The Eclipse version is affected too. Versions older than 23-6 may encounter problems deploying the web project.
New features and improvements
Improvements in Testbench-Extension
The WebDriverExtension
has been extended with an additional constructor that can be used by just passing the context path. In that case, the fully qualified URL is built based on the given path together with the defined test driver properties. This prevents that the fully qualified URL always has to be handed over as a whole.
The defined test driver system properties can be accessed by DriverProperties
.
Hide exception stacktraces in production mode and customize the error dialog
For security reasons, exception stacktraces are not shown in the default error dialog anymore when the application runs in production mode.
To make this behavior and error handling in whole more configurable, following API changes has been made:
Changes |
Description |
|
This method has been deleted as the application layout is not always easily customizable. The method is moved to |
|
Deprecated. This class is not used by default anymore. |
|
Deprecated. Use |
|
Deprecated. Use |
About how to customize error handling, see documentation.
Improved detection for internationalized Strings
- Internationalized Strings from super classes and interfaces
-
In previous versions, internationalized Strings from super classes and interfaces had to be copied to the properties file of the subclass, with the key adjusted to the subclass. This made the internationalization process complicated. With this change, the internationalized Strings from super classes and interfaces are now automatically taken into account by linkki. As a result, only the String aspects that are new in the subclass need to be defined in the properties file. The new mechanism for the detection of internationalized Strings are described in the documentation.
- Simplified key pattern for keys without property name
-
In case of class level aspect such as placeholder or caption, the key used to be
PmoClassName__aspectName
as the property name is empty. An exception was made for section captions to make it possible to definePmoClassName_caption
. This disparity is now resolved in this version. All keys without property name can now be defined with the patternPmoClassName_aspectName
, which omits the second underscore for convenience. The regular patternPmoClassName__aspectName
remains functional and has a higher precedence over the key with only one underscore.
myNewCaption
MyClass__caption=myNewCaption
MyClass_caption=myOldCaption
To accommodate these changes, some internal API changes have been made:
Changes |
Description |
|
Deprecated. Use |
|
Deprecated. The class is being deprecated because it is no longer in use. |
Other
-
The class
org.linkki.util.Optionals
has been deprecated, theOptional
class from the JDK now offers corresponding functionality. The replacement methods are linked in the JavaDoc. -
Excluded the dependency
com.google.code.findbugs:jsr305
from the compile scoped dependencies of the modulelinkki-core-vaadin-flow
Bugfixes
Sanitization of HTML content
Using @UILabel
with htmlContent = true
previously did not sanitize the content. To make the behaviour of htmlContent = true
more secure by default, the HTML is now automatically sanitized, removing potentially dangerous tags and attributes. Note that the tags img
and vaadin-icon
are also whitelisted.
The same applies to org.linkki.core.vaadin.component.base.LinkkiText
when using HTML content mode (setText(…, true)
).
When user-supplied strings are included in HTML content, they have to be escaped to prevent them from being interpreted as HTML. This can be achieved by using |
Other
-
Fixed an incompatibility with ChromeDriver versions 111 and above in
linkki-vaadin-flow-testbench-extension
-
Deprecated unused method
HierarchicalRowPmo#hasChildRows
-
Fixed unnecessary horizontal scroll bar in ComboBox overlay
-
Fixed wrong timestamp format in error dialogs
-
Fixed falsely marked as invalid combobox with initial non-null but empty representation
-
Added missing CSS tweaks for
MultiSelectComboBox
(e.g. nomax-height
for error message) -
Fixed overlapping labels and input fields in small browser windows