7.0 Changelog

This page lists all the changes introduced in 7.0 releases. See also the release notes and the migration guide.

7.0.6 (2024-04-05)

Fix

  • Fix pass related record on click action in chart

  • Add missing hilite support in form view field

  • Fix sorting in grid view

  • Fix format decimal value in chart tooltip

  • Fix view switch to form in calendar/cards view

    Details

    When we switch to form through view toolbar from calendar/cards view then it should open first available record in form. If no records are available then it should skip navigation to form view.

  • Fix pass search fields in action context in chart

  • Add missing hilite support in cards view

  • Fix prompt support in grid view button

  • Fix view switch from grid to form in view toolbar

    Details

    When we switch to form through view toolbar from grid view Then if any row is selected then it should open in form else open the first available record in grid. If no records are available then it should skip navigation to form view.

7.0.5 (2024-03-29)

Feature

  • Add support to drop node to root in tree view

    Details

    When tree view nodes are on same model, this allow to move nodes to root, using draggable area in bottom of the view.

Fix

  • Fix action view params for panel-dashlet

  • Fix issues in tree view

    Details

    This fix several issues in tree view :

    • reset tree data on refresh

    • several errors when moving nodes

    • save not triggered after d&d nodes

  • Fix button-group widget display

  • Fix search grid on selector popup pagination

  • Fix data views search after switch from calendar view

  • Add missing icon support in panel

  • Fix show truncated title as help in form button widget

  • Fix validate required attr on collection fields

  • Reduce collaboration avatar height

    Details

    Reduce collaboration avatar height so that it does not increase toolbar height once shown. Also fix grouped avatars icon width.

  • Fix showing title or help on buttons mouseover in grid/tree view

  • Fix groupBy support in collection grid field

  • Fix reset data offset on grid header search

  • Fix tag-select search issue

  • Fix info-button content with dotted fields

  • Fix kanban to form pagination

    Details

    When click on card to open form from kanban column then it should allow to do pagination(prev/next) for that column set of records in form view.

  • Fix decimal form widget currency formatting

    Details

    Formatting with x-currency was working on grid, but missing on decimal form widget.

  • Fix prevent propagation of click on tooltip content

  • Fix show action condition errors in form view

  • Fix button link

  • Fix redundant search request on grid view pagination

  • Fix call onChange action date input change

7.0.4 (2024-03-08)

Feature

  • Add support to format multi-select widget

  • In field help popover, display value for selection/enum fields.

Fix

  • Fix grid open details view by default

  • Fix widgetAttrs issue with custom field

  • Fix resetting relational fields domain

    Details

    Resetting domain on relational fields by returning null domain on onSelect event is not takes into account and existing domain is still used.

  • Reset grid offset on DMS search

  • Always call onSelect on o2m when showing selector

  • Fix create support in selector popup in relational field

  • Fix invalid text widget style

  • Fix grid group when groupBy having leading/trailing spaces

  • Fix updating fields focus

    Details

    Changing fields focus attrs hasn’t any effect if refocus same field again. This also fix unfocusable M2O fields.

  • Fix m2o with nav-select widget display issue

    Details

    When showIf/hideIf is specified with nav-select widget on m2o field Then it was displaying m2o selection along with nav-select. It should only display nav-select widget.

  • Fix ref-text should not allow create/view record

  • Fix eval-ref-select to use suggest box behavior

  • Fix how grid retrieve the field record value

    Details

    This also fix wrong values displayed in grid for custom fields.

  • Fix mark form dirty on editor change

  • Disabled http block overlay when login popup is displayed.

  • Fix multi selection widgets values mapping

    Details

    Make sure to map values from the previous concatenation that was using Comma-separated + space.

  • Don’t add default json fields (attrs.*) if already present in grid view

  • Fix unformatted calendar event titles

  • Fix default values of json fields

  • Fix single tab issue

    Details

    When single tab is enabled, any tab is already opened then it should first close the current tab and open new tab as single tab only.

  • Fix RadioSelect/CheckboxSelect widget ui display

    Details

    Don’t display radio/checkbox select items onto one line but wrap them depending on available space (break into multiple lines).

  • Fix RadioSelect/CheckboxSelect widget in editable grid

    Details

    In grid, RadioSelect/CheckboxSelect widget can’t be used for obvious display reason. When they are used, use default selection widget for RadioSelect and MultiSelect widget for CheckboxSelect.

  • Improve multi-select widget in grid view

Security

  • Upgrade PostgreSQL JDBC driver from 42.7.1 to 42.7.2

    Details

    SQL injection is possible when using the non-default connection property preferQueryMode=simple in combination with application code that has a vulnerable SQL that negates a parameter value.

    As we are using the default query mode, we aren’t impacted. But administrators can still change the JDBC URL themself to use the impacted query mode.

7.0.3 (2024-02-14)

Fix

  • Fix formatter support in collection template viewer

  • Fix missing dotted fields in o2m grid if no parent fields

    Details

    Issue happened when there is a dotted field without its parent, eg. "product.code" field, but no "product" field.

  • Fix set multiple action attrs on same field

  • Display message if file(s) can’t be downloaded

  • Fix pagination settings not taken into account

    Details

    api.pagination.max-per-page was taken into account on page text only. api.pagination.default-per-page was not taken into account.

  • Fix adding m2m item should mark form as dirty

  • Check for errors on save action if not dirty

  • Fix commit editable grid on ok in popup form

  • Fix o2m grid flashing on items reset

  • Fix custom field support in editable grid

  • Return 404 http code when downloading files that don’t exist

  • Fix special operators support in advance search

  • Fix confirm lost change when reloading browser tab

  • Avoid grid re-rendering on auto-sizing

  • Fix action attr value for reference fields

  • Fix legacy template support for reference field

  • Fix save request payload containing unwanted values

7.0.2 (2024-02-06)

Feature

  • Improve dashlets/collections data loading

    Details

    If a dashlet or a collection field isn’t visible (either hidden or in a non active panel-tab), data should’t be fetched. Data should then fetched (if required) as soon as the widget is visible.

  • Improve dotted field rendering

    Details

    To avoid flashing issue on dotted field change, dotted field value is rendered and updated through state and state update will be defer during action execution.

Fix

  • Fix set records in collection editor

  • Fix context for kanban view card template

    Details

    Kanban card record should have preference over the action view context. Also improve context by removing unnecessary values like renderer etc.

  • Fix error when formatting m2o field value with missing context

  • Fix id field value erased when setting values from actions

    Details

    When setting values from actions (both action-attrs or action-record), cause the id field value to be erased. In most cases, this shouldn’t be an issue but on new record (without id), and having id in context cause the id in context do be erased.

  • Fix relational fields editor

    Details

    Relational fields displayed in editor wasn’t saved with main record due to missing version fields when value set through action. Moreover, after the value as saved, the new version value wasn’t sync, so subsequent update triggerred concurrent update errors.

  • Trigger o2m search for records that have id and no version

  • Fix update from value to no value on grid row

    Details

    Issue happened in two cases on o2m grid.

    First one is when changing from a m2o record that has a translation to another one that has no translation. Translation from previous record was wrongly kept.

    Second one is when changing from a m2o record that has a dotted value to another one that has no dotted value. Dotted value from previous record was wrongly kept.

  • Fix o2m losing grid order after action setting grid rows

    Details

    Action was receiving o2m items in fetched order, not grid order.

  • Fix checking dirty when closing o2m popup

    Details

    Instead of comparing with previous row values to determine if the record is dirty, we now pass dirty state from popup record and editable row record.

  • Fix custom field change should mark form dirty

  • Improve readonlyIf fields in editable grid

    Details

    This avoids fields blinking when entering in editable grid because they switch quickly from edit to read only mode.

  • Fix collection editor icons visibility depending on perms

  • Fix grid crash error (object is not extensible)

    Details

    When a grid has both a relational field (ie product.category) and na associated dotted field (ie product.category.code), enter in editable mode cause the grid widget to crash (object is not extensible error).

  • Fix *-to-one editor icons visibility depending on perms

  • Fix support for dotted collection field

7.0.1 (2024-01-26)

Feature

  • Improve o2m fetch request for edit popup

    Details

    As soon as a row record is updated from popup view, reopening the popup for the same row will not trigger another fetch request, as the record is already fetched. This reduce number of requests.

Fix

  • Fix committing row on non-dirty O2M editable grid

    Details

    If a O2M field with an editable grid is a non-dirty field, row changes were lost after committing. Need to compare record equality instead of the _dirty flag (not relevant in that case).

  • Fix grid dotted field update

    Details

    On existing row, after edit, dotted fields were reverted to previous value. Nested values were updated, but grid relies on dotted fields.

  • Fix grid hilite not using action view context

  • Fix resetting o2m value when creating new record

    Details

    Issue happened when opening an existing record in form view then clicking on create new record. O2M values from previous record were kept.

  • Fix reorder on non dirty o2m widget

    Details

    Issue happens when o2m values are set through actions and those values are not persisted (either computed or id is set to null) and on initial re-ordering, grid gets empty.

7.0.0 (2024-01-24)

Feature

  • Support for Gantt dashlet

  • Add support to use TagSelect widget in grid

    Details

    This allow to use TagSelect widget in grid. It will display records as badge. Full list will be displayed on mouse over when records can’t be displayed in the grid cell. target-name is at this time not supported.

  • Add support to filter mail messages

    Details

    On the message stream widget, users can choose the messages types to display.

    Moreover, on the view definition, the filter attribute can be used to specify messages type to show by default : all (default), comment, notification.

  • Add x-dirty attribute to view fields

    Details

    If the view field is marked as x-dirty="false", the field value change will not mark current record dirty.

    The old dirty checking behavior of the $ prefixed fields is now deprecated and will be removed during next major release.

  • Migrate to new front-end build on top of React

    Details

    Drop current Angular front-end in favor of new front-end build on top of React.

  • Add support for {user.dir} variable in config file

    Details

    The {user.dir} refers to the current working directory. It is useful during development where you have many different instances to test with.

    For example:

    data.upload.dir = {user.dir}/data/axelor

    will store upload files under data/axelor found under current working directory.

  • Add support of canDelete and canNew attribute to calendar views

  • Improve $fmt script helper

    Details

    The $fmt helper accepts an optional props param to pass custom field props (currency, scale, second, …​) : $fmt("myField", { scale: 6 })

  • Add changelog plugin

    Details

    Provide a Gradle plugin to simplify changelog management.

    Each entry of the CHANGELOG.md file is generated from files in the changelogs/unreleased/ folder.

    To use the plugin, in your build.gradle :

    apply plugin: com.axelor.gradle.support.ChangelogSupport
    
    changelog {
      version = "${project.version}"
      output.set(file("CHANGELOG.md"))
      inputPath.set(file("changelogs/unreleased"))
      types.set(["Feature", "Change", "Deprecate", "Remove", "Fix", "Security"])
      header.set("${version.get()} (${new Date().format("yyyy-MM-dd")})")
    }

    To generate the CHANGELOG.md with unreleased entries, run following Gradle task: ./gradlew generateChangelog

  • Support view-param popup reload on dashlets

    Details
    <view-param name="popup" value="true"/>

    Open dashlet edit in popup (instead of new tab). (This is currently for grid dashlet only. Other dashlet types always open popup.) After closing, dashlet has up-to-date data for the record that was opened and edited. (Search request may be performed by some dashlet types to achieve that result, but it’s room for later improvement.)

    <view-param name="popup" value="reload"/>

    Reload current tab after closing popup from dashlet. If the tab is dirty before opening the popup, save confirmation dialog is shown before proceeding.

  • Add auth.provider-default configuration

    Details

    Normally, form client is the default client used for authentication. When an authentication provider is defined as exclusive, form client is not loaded at all.

    Now, with auth.provider-default configuration, you can specify another non-exclusive client as default.

    Example:

    auth.provider-default = google # google auth provider is used by default

    You can specify another client via the client_name query parameter in login URL.

    Example:

    // Default client is used
    http://localhost:8080/open-platform-demo/
    
    // Specify another client
    http://localhost:8080/open-platform-demo/?client_name=form
  • Export and view MetaFields

    Details

    Add x-can-export attributes on O2M metaFields on MetaModel form view

  • Allow canMove sequencing on any field specified by orderBy

    Details

    With canMove, the field used for sequencing does not have to be a field named sequence anymore, but can be any field specified by orderBy.

    Sequencing is done on field specified by orderBy, and it must be only one integer field. If not specified, not sequencing is done.

    On top-level grid, canMove requires orderBy.

  • Add index to MetaTranslation on message field

  • Support action-menu elements specific to a search view

    Details

    action-menu elements can now be defined inside a search view to specify that they are specific to that view, and not available to all search views.

  • Add application.icon and context.appIcon settings

    Details

    These settings allow to define an application icon used for website favicon and small logo. They can be used similarly to the application.logo and context.appLogo settings. The icon must be a multiple of 48px square for favicon compatibility with most browsers.

  • Add Rating widget

    Details

    Rating widget can be used on Integer,Long and Decimal field. It provides ability to collect measurable opinions/experiences/feedbacks/…​

    Example :

    <field name="note" type="Integer" widget="Rating"/>
    <field name="note" type="Integer" widget="Rating" x-rating-icon="heart"/>

Change

  • Upgrade Jackson from 2.13.4 to 2.15.3

  • /ws/app/info endpoint moved to /ws/public/app/info

    Details

    /ws/public/app/info either gives application login info or session info if the user is logged in. /ws/app/info is deprecated and will be dropped in a future release.

  • Upgrade Guava from 31.1 to 32.1.3

  • Upgrade Undertow from 2.2.19 to 2.2.28

  • Upgrade Woodstox from 6.3.1 to 6.5.1

  • Improve flagging mail messages

    Details

    The flag associated to the user and message is now retrieved on backend. This avoids duplicated mail flags after reflagging messages. As part of the change, the message is also required and indexes as been reviewed.

    Run following SQL script to adjust MailFlag table changes :

    ALTER TABLE mail_flags ALTER COLUMN MESSAGE SET NOT NULL;
    DROP INDEX mail_flags_message_idx;
    DROP INDEX mail_flags_user_id_idx;
    CREATE INDEX mail_flags_user_id_message_idx ON mail_flags (user_id, message);
  • Upgrade Hibernate ORM from 5.6.12 to 5.6.15

  • Upgrade Redisson from 3.17.6 to 3.19.3

  • Upgrade EhCache from 3.10.1 to 3.10.8

  • Upgrade Flyway from 9.3.1 to 9.22.3

  • Upgrade PostgreSQL JDBC from 42.5.0 to 42.7.1

  • Upgrade Apache Shiro from 1.9.1 to 1.13.0

  • Upgrade hsqldb from 2.7.0 to 2.7.2

  • Upgrade logback from 1.2.11 to 1.3.14

  • Refactor domain context of collection field search request

    Details

    Restructured _domainContext for collection field search request:

    {
        "_model",
        "_field",
        "_field_ids",
        "_parent": {
            "id",
            "_model"
        }
    }
  • Upgrade Jansi from 2.4.0 to 2.4.1

  • Upgrade ASM from 9.3 to 9.6

  • Upgrade Apache Commons CSV from 1.9.0 to 1.10.0

  • CodeEditor x-code-theme is no more supported.

    Details

    As part of the new v7 front-end built on top of React, x-code-theme is no more supported. It will be re-added in a future version.

  • Use ref-select widget for User/Group homeAction

    Details

    Remove special case for User/Group records where we added a dummy __actionSelect field. Instead, use ref-select widget on homeAction.

  • Upgrade Hibernate Validator from 6.2.4 to 6.2.5

  • Upgrade MySQL JDBC from 8.0.30 to 8.0.33

  • Upgrade Junit5 from 5.9.1 to 5.10.1

  • Use Feature to discover studio module

    Details

    Instead of checking using module name, use specific feature to discover if studio module is used. This can be enabled using Studio feature.

    Example of how to enable the Studio feature from the module:

    public class MyModule extends AxelorModule {
      @Override
      protected void configure() {
          AppSettings.get().enableFeature(AvailableAppFeatures.STUDIO)
      }
    }

    or using features.studio = true in `axelor-config.properties.

  • Upgrade Resteasy from 4.7.7 to 4.7.9

  • The view.grid.selection property is now set to checkbox by default

    Details

    Checkbox selection in grid is now enabled by default.

    Change to view.grid.selection = none to disable it globally.

  • Upgrade Gradle Spotless plugin from 6.11.0 to 6.13.0

  • Upgrade slf4j from 1.7.36 to 2.0.9

  • Upgrade Jsoup from 1.15.3 to 1.17.1

  • Upgrade EclipseLink Moxy from 2.7.11 to 2.7.14

  • Upgrade pac4j from 5.4.5 to 5.7.2

  • Upgrade Caffeine from 3.1.1 to 3.1.6

  • Upgrade XStream from 1.4.19 to 1.4.20

  • Upgrade Apache Commons IO from 2.11.0 to 2.15.1

  • collection editor without x-viewer no more used in readonly

    Details

    For collection fields, if the editor isn’t marked with x-viewer="true" and doesn’t have any viewer defined, the editor is no more used in readonly mode. The default rendering behavior will be used instead (ie grid). This is more consistent with others fields behavior.

  • Upgrade Apache Commons CLI from 1.5.0 to 1.6.0

  • Fix x-show-bars actions should not affect parent form

    Details

    x-show-bars actions used to affect parent form. Now, they affect local grid context only.

  • Upgrade Apache Tika from 2.4.1 to 2.9.1

  • Update shortcuts

    Details

    Here are the changes of the shortcuts :

    Changed :

    • delete current/selected record(s) : Ctrl+Delete instead of Ctrl+D

    • navigate to previous page/record : Alt+Page Up instead of Ctrl+J

    • navigate to next page/record : Alt+Page Down instead of Ctrl+K

    Added :

    • duplicate current record : Ctrl+D

  • Upgrade embedded Tomcat from 9.0.65 to 9.0.84

  • Upgrade Groovy from 3.0.13 to 3.0.20

  • Upgrade ByteBuddy from 1.12.17 to 1.14.11

  • Upgrade Hazelcast from 5.1.3 to 5.3.6

  • Upgrade Hibernate Search from 5.11.10 to 5.11.12

  • Upgrade Greenmail from 1.6.10 to 1.6.15

  • Upgrade Unboundid LDAP SDK from 6.0.6 to 6.0.11

  • Upgrade Infinispan from 13.0.11 to 13.0.21

  • Upgrade Ldaptive from 2.1.1 to 2.2.0

  • No longer encrypt plain passwords on startup

    Details

    Due to historical reason, any users passwords stored in plain text in the database are encrypted on startup. On databases having large number of users, it is unnecessary time consuming on startup.

    To reset a forgotten admin password, update or insert an active admin user with a temporary password 'admin123' in database using the hashed password :

    UPDATE auth_user set password = '$shiro1$SHA-512$1024$NE+wqQq/TmjZMvfI7ENh/g==$V4yPw8T64UQ6GfJfxYq2hLsVrBY8D1v+bktfOxGdt4b/9BthpWPNUy/CBk6V9iA0nHpzYzJFWO8v/tZFtES8CA==' where code = 'admin';

    Another way to generate passwords, is to use the Apache Command Line Hasher :

    $ (cd /tmp && curl -sSL -O https://repo1.maven.org/maven2/org/apache/shiro/tools/shiro-tools-hasher/1.11.0/shiro-tools-hasher-1.11.0-cli.jar)
    $ java -jar /tmp/shiro-tools-hasher-1.11.0-cli.jar --algorithm SHA-512 --iterations 500000 -p
    Password to hash:
    Password to hash (confirm):
    $shiro1$SHA-512$500000$pbUIjvJh1moFNc98vH+YbA==$Wtu3fIgNIL4ab9jWp6DyRa7vW5Zo33knW7JNV9KFJj08lal4WHBmVJSOHxJ0w+7SwlPvJ25O1QYNVb6wgmTHnA==

    Also, if you import users with passwords from any source, either password must be hashed or you can use helpers methods to encrypt it :

    • com.axelor.auth.AuthService.encrypt(java.lang.String) : Encrypt the given password text.

    • com.axelor.auth.AuthService.encrypt(com.axelor.auth.db.User) : Encrypt the password of the given user.

    • com.axelor.auth.AuthService.encrypt(java.lang.Object, java.util.Map) : Adapter method to be used with csv/xml data import in order to encrypt the password of the given user.

  • Field names used by the create on the fly

    Details

    The create on the fly feature control by the x-create attribute is used to quickly create records and/or pre-filled values base on the current search input.

    Previously, any fields named code, name and the namecolumn of the object were filled by default. This is no more the cases: only the field names provided in the x-create attribute will be.

  • Upgrade Snakeyaml from 1.32 to 1.33

Remove

  • Remove view.grid.editor-buttons setting

    Details

    The setting view.grid.editor-buttons has been removed. It was use to show confirm/cancel buttons from grid row editor.

  • Remove $context variable in frontend eval expressions

    Details

    This was never intended to be used. Stick to direct field access: myField, not $context.myField.

  • Remove DMS spreadsheet

    Details

    DMS spreadsheet is not implemented in community version of new frontend.

    Enable or disable internal features using AppSettings.enableFeature or AppSettings.disableFeature.

    Example of how to enable the DMS spreadsheet feature from the module:

    public class MyModule extends AxelorModule {
      @Override
      protected void configure() {
          AppSettings.get().enableFeature(AvailableAppFeatures.DMS_SPREADSHEET)
      }
    }

    or using features.dms-spreadsheet = true in `axelor-config.properties.

  • Remove view.confirm-yes-no setting

    Details

    The setting view.confirm-yes-no has been removed. It was used to show confirm dialog with yes/no buttons (else is Cancel/OK).

  • Drop custom style

    Details

    Custom Style (provided from special context setting context.appStyle) has been dropped. There is no replacement at this time.

  • Drop StaticResourceProvider

    Details

    StaticResourceProvider, used to register custom css or js files, has been dropped. There is no replacement at this time.

  • Remove CodeEditor x-mode support in favor of x-code-syntax

  • Drop custom theme

    Details

    Custom theme is no more supported and has been dropped. There is no replacement at this time.

  • Drop extra partial JSP templates

    Details

    Extra partial JSP templates support is no more supported and has been dropped. There is no replacement at this time.

  • Remove view.toolbar.show-titles setting

  • Remove top menus support

    Details

    In this new version of the frontend, top menus aren’t supported anymore.

    Run following SQL script to drop unnecessary columns :

    ALTER TABLE meta_menu DROP COLUMN top_menu ;
    ALTER TABLE meta_json_model DROP COLUMN menu_top;
  • Remove view.menubar.location setting

    Details

    The setting view.menubar.location has been removed. It was used to set menu style (left, top, both). There is no more support of top menus.

Fix

  • Fix bpm module discovery

  • Fix destination of data errors in CSV data import

    Details

    In a CSV data import, we can log the rows with an error in a new CSV file. They used to be logged in the XML config file.

  • Fix menus loading when menus that can’t be added to N-ary Tree

    Details

    When fetching the menus, if a menu is parent of itself or having wrong parent references, it load indefinitely. A log will be displayed in console for menus that can’t be added to N-ary Tree.

  • Fix StackOverflowError in CSV data import

    Details

    In a CSV data import, if we log the error rows in a file, a StackOverflowError was thrown when more than 2 CSV files have some errors.

  • Fix pending actions not launched after notify

  • Fix error when retrieving menu

    Details

    If an error occurs when evaluating menu conditions (ie script errors), it shouldn’t fail the all process, but don’t display the failed menus.

  • Fix tracking message value for datetime fields

    Details

    For datetime field, the tracking value stored in database should be in UTC so that it will be displayed depending on user timezone.

Security

  • Fix search permission check on parent

    Details

    In search request, need to check parent really has requested items. Otherwise, it is possible to specify unrelated parent and bypass permissions.