2.0.17
Key updates January, February 2026
CXBOX (Demo)
Added: New Year atmosphere in the application
We have added an option to create a festive New Year atmosphere in the application. You can enable a falling snow effect in the application menu.
The effect is controlled via a configuration parameter. See more New Year atmosphere

Added: RelationGraph – NEW widget type!
We’ve introduced the RelationGraph widget to visualize relationships between nodes in a structured graph format.
Key functionality includes:
- Switch between graph and table view
- Parent–child support
- DrillDown support
- Custom color configuration for nodes and edges
- Configurable graph direction (top-bottom, left-right, etc.)
- Customizable node text, edge labels, and edge styles

Warning
- If multiple connections lead to the same node, and some of them skip intermediate nodes, the graph may not display as expected. Because of this, we do not recommend using such data structures when possible.
- The widget automatically switches to table view if cyclic relations or duplicate connections are detected in the data.
Info
A detailed article on RelationGraph will be available soon in our official documentation – stay tuned!
Added: CardList – NEW widget type!
We’ve introduced a new CardList widget designed for convenient file preview and management. All uploaded files are displayed as preview cards, allowing you to easily browse, edit, add, or delete items directly within the widget.
Key functionality includes:
- File preview in card format
- Actions’ support
- DrillDown support
- Configurable card size

Info
A detailed article on CardList will be available soon in our official documentation – stay tuned!
Added: CardCarouselList – NEW widget type!
We’ve added a new CardCarouselList widget with functionality similar to CardList, but presented in a carousel layout. Cards are arranged in a horizontal scrollable strip, while the selected item is displayed prominently above for easier viewing.
Key functionality includes:
- Carousel navigation (forward/backward scrolling)
- Actions’ support
- DrillDown support
- Configurable card size

Info
A detailed article on CardCarouselList will be available soon in our official documentation – stay tuned!
Added: Export to Excel as a regular button
Added the ability to display Export to Excel as a regular button. To do this, you only need to indicate a new PostAction.exportToExcel for a BC button.
Example


Added: AssocListPopup and PickListPopup widget - gridWidth support
We have added support for gridWidth for AssocListPopup and PickListPopup, like we did for FormPopup in v2.0.9. You can now manage the width using view.json -> widgets -> gridWidth to control the adequate content presentation in the popup.
You can now control the size using gridWidth to ensure that the content is fully displayed in the popup.

The popup size for AssocListPopup and PickListPopup was constant, the value of gridWidth was ignored.

Note! Before this release value of gridWidth was ignored, e.g. popup widget was constant. You can set gridWidth = 16 to remain old popup sizes.
Added: Alternative pagination support
We have introduced the ability to retrieve the total row count on demand via a new alternativeType parameter. By clicking a button, users can request the total number of rows. Once activated, the count remains available during filtering and page navigation and resets only after a page refresh.
Example

You can keep a performance-friendly pagination mode by default (nextAndPreviousWithHasNext/ nextAndPreviousSmart) and switch to nextAndPreviousWithCount only when record counting is needed.

To display the total row count, you can only indicate nextAndPreviousWithCount pagination type, which sends a /count request and may impact performance.
Added: Support for .ogg, .aac, and .flac
Support for .ogg, .aac, and .flac formats has been added.



Added: Export to Excel support all types fields
Support has also been added for exporting the following field types to Excel:
Fixed: CalendarYearList the buttons are displayed correctly depending on the type
For the CalendarYearList type, the buttons are displayed correctly depending on the type — record or BC


Fixed: Settings Menu Update
The settings icon (gear) has been moved to the table header and positioned on the right side, above the three-dot menu. This will save space when there are no actions, PDQ, or full-text search on the table.


The view mode toggle icon (chart / table) has been moved to the settings menu.


The Collapse columns function has been moved to the settings menu.
Fixed: Full-Width Numeric Fields
The display of fields with the following types has been improved:
The field input now spans the full width of the table column.


Fixed: GroupingHierarchy Empty State Improvement
For the GroupingHierarchy widget, scroll display has been added for cases when there is no data and no default hierarchy is defined.


Fixed: Adaptive Action Group Width
The display of the action group has been improved: the width of the window showing button labels now automatically adjusts based on the content.


Fixed: Improved Scrolling for Large Lists
The behavior of the scroll and arrows has been improved when there are many values in dictionary.


Fixed: Gear Icon Display Fix
Fixed the gear icon behavior when there are no buttons on the widget — the gear icon is now displayed.


Fixed: Fixed the highlighting of required multivalue field
Fixed the highlighting of required multivalue field in the List widget when using inlineForm editing. This ensures visual consistency with other field types, which are also highlighted in List widget above the editing Form.

Fixed: Multivalue,multivalueHover и pickList Filter Display Fix
Fixed the display of filters for multivalue, multivalueHover и pickList fields: selected values are now shown correctly, regardless of whether they are present on the selected page.

Info
There is a limitation when using predefined filters of the following types: multivalue, pickList, and multivalueHover. When such filters are predefined, the filter tags display id values. When the filter is manually edited (for example, by adding values via a picklist), the tags are displayed according to the standard rules. This behavior is caused by a frontend limitation: the frontend cannot resolve display names for filter tags if the records specified in the predefined filter are located on different pages of the picklist popup and are not loaded in the current UI context.

Other Changes
CXBOX (Core Ui)
We have released a new 2.8.0 CORE UI version.
Added: Optional WebSocket Updates
Added the option to disable WebSocket calls from the frontend. The notification bell count is still displayed, but it will only update when the page is reloaded.
WebSocket Request Behavior Based on featureSettings
- webSocketNotificationEnabled: false → WebSocket requests are disabled
- webSocketNotificationEnabled: true → WebSocket requests are enabled
- If the setting is not provided → WebSocket requests are enabled by default
Fixed: Optimized functionality for ...
Removed the request triggered by clicking on ... the GET /api/v1/row-meta/id request is no longer sent.


Other Changes
CXBOX 4.0.0-M22 (Core)
We have released a new 4.0.0-M22 CORE version.
Added: Parameter New Year atmosphere
We added a new parameter for UiProperties: seasonalEffectsEnabled.
When set to true, it enables a snowfall effect in the menu area.
Added: Parameter WebSocket
We added a new parameter for UiProperties: webSocketNotificationEnabled.
When set to false the frontend guarantees no WebSocket interactions, so the backend WebSocket functionality may be safely removed.
Added: New PostAction exportToExcel
Added the ability to add button Export to Excel as a regular button.
Other Changes
See cxbox 4.0.0-M22 changelog.
CXBOX documentation
Added: Description New Year atmosphere in the application
We have provided a description on how to create a festive New Year atmosphere in the application.
Added: Description Bulk operations (Mass Operations)
We have provided a description Bulk operations
Bulk operations are a mechanism that allows the user to perform a single action on a large number of table rows at once. Instead of processing each row individually, the user can select a set of data and apply a common operation to it—such as updating, deleting, changing statuses, recalculating values, and other typical scenarios.
Added: Description forward/back/refresh buttons
Describe in the documentation the behavior of the browser's forward/back/refresh buttons.
Added: Description widget Steps
We have provided a description of Steps widget
Added: Description Screen Search in Left Menu
We have provided a description Screen Search in Left Menu
Added: Description Screen Name Wrapping in Left Menu
We have provided a description Screen Name Wrapping in Left Menu
Added: Description setHidden
We have provided a description setHidden
Added: Description new properties Time
We have provided a description new properties time
Added: Description a limitation when using predefined filters
There is a limitation when using predefined filters of the following types: multivalue, pickList, and multivalueHover.
- When such filters are predefined, the filter tags display id values.
-
When the filter is manually edited (for example, by adding values via a picklist), the tags are displayed according to the standard rules.
-
see more filters
Added: Description to the sorting behavior
Please pay attention to the sorting behavior:
- If the user has not set a sorting option, the default sorting is applied if it is defined.
- If the user has applied a sorting option, it will be preserved when navigating via drill-down or between screens.
see more sorting
Added: Recommendations for Spring Data JPA 3.5.1, queries involving Hibernate custom types
Starting with Spring Data JPA 3.5.1, queries involving Hibernate custom types (for example, dictionary-like value objects) may break when Spring Data rewrites JPQL queries into constructor-based projections.
Recommendations for solving the problem are here
Added: Recommendations for Spring Data JPA 3.5.1: Custom Hibernate Types Issue
Starting with Spring Data JPA 3.5.1, support for custom Hibernate types in queries is broken when Spring Data rewrites queries into constructor-based projections.
Recommendations for solving the problem are here