9.8

Last update: Edit

9.8.2

Release date: December 13th, 2021

Download

Fixes

  • We fixed an issue where changes made to microflows were not reflected when the application was re-run without stopping. (Tickets 136471, 136657, 136874)

Known Issues

  • When you update a consumed OData service with a new version from Mendix Data Hub but close the document without saving, the blue arrow icon will no longer be shown to notify you about the available update for that service.
    • Workaround: Closing your app and opening it again fixes this issue.
  • In the Properties pane, you cannot copy, paste, or delete using keyboard shortcuts.
    • Workaround: Perform the same operation using your mouse and the context menu.

9.8.1

Release date: December 7th, 2021

Download

Improvements

  • We improved the generated metadata of published OData services. When all navigation properties are updatable, the capability NonUpdatableNavigationProperties is now omitted instead of specifying it as an empty collection.

Fixes

  • We fixed two issues in the generated metadata of published OData services. Due to these changes, previous Studio Pro versions are not able to read metadata produced by this Studio Pro version. The runtime is unaffected. When updating the contract of a consumed OData service, upgrading to this version of Studio Pro or above (or the MTS version 9.6.4) is recommended. These are the two fixes:
    • UpdateMethod is now specified as an Enum value (and not as an Int).
    • SupportedFormats is now a collection of String (and not a simple String).
  • We fixed an issue with reading the metadata of a consumed OData service where (navigation)properties marked as non-updatable in the metadata appeared to be updatable.

Known Issues

  • Any changes to a microflow require your application to be restarted for the changes to be reflected.
  • When you update a consumed OData service with a new version from Mendix Data Hub but close the document without saving, the blue arrow icon will no longer be shown to notify you about the available update for that service.
    • Workaround: Closing your app and opening it again fixes this issue.
  • In the Properties pane, you cannot copy, paste, or delete using keyboard shortcuts.
    • Workaround: Perform the same operation using your mouse and the context menu.

9.8.0

Release date: November 30th, 2021

Download

New Features

  • We added functionality for creating a Git branch from a previously tagged version or from a specific revision of the main line or another branch.

Improvements

  • On SQL Server, we no longer require a username and password if the DatabaseJdbcUrl has been set.
  • We increased the node memory limit when bundling custom widgets from 512MB to 1GB. This should prevent running out of memory when bundling large apps with lots of custom widgets. (Ticket 88774)
  • A microflow with a Show home page activity now sends used objects in memory when called. (Ticket 127576)
  • We no longer invalidate sessions when the deletion of existing sessions fails after an app model change. (Ticket 127632)
  • We added the option to enable checking security for pages only accessible by page URL. This is enabled by default for new apps and will also become the default in the next major Mendix version. (Ticket 129205)
  • Native mobile apps now encrypt the authentication token and session cookie on Android to further enhance security. New native mobile apps apply this encryption automatically. For existing apps, the native mobile app needs to be updated and built based on Native Template 6.2.9 or higher. (Ticket 129891)
  • We improved the accessibility of the navigation list widget. (Ticket 132663)
  • The Configuration button on the MxAssist Performance Bot pane is now disabled while checking errors.
  • MxAssist Performance Bot has a new best practice for detecting when excessive levels of inheritance may impact performance.
  • We added the fallback tile icon view in the Toolbox for those tools that do not have a proper tile image.
  • When you right-click a non-persistable entity in the domain model, the option to publish it as an OData resource is now disabled. This avoids a consistency error, as non-persistable entities cannot be published in OData services.
  • The Create object and Change object activities in nanoflows now fail if they set the value of an attribute or association that is read-only for the current user.
  • It is now possible to select your WorkflowContext entity without an association already existing. When done, the necessary association is created for you.
  • We removed the redundant OK button from the History dialog box, leaving only the Close button.
  • When you consume an external entity, the name in the domain model editor is now consistent with the dataset name in the Data Hub Catalog.
  • When a dataset or data source is validated in the Data Hub Catalog, it is now also shown in the Data Hub pane in Studio Pro.
  • We changed how the names of external entities are displayed in the Data Hub pane so that they are now consistent with the dataset names in the Data Hub Catalog.
  • The native check box widget now has a render mode option, allowing you to choose whether to present the widget as either a check box or a switch.
  • Ordering by associated attribute now also works in DB2 and SAP HANA and thereby in all supported databases.
  • It is now possible to change associations via published OData services.
  • When deleting a branch from the Branch Line Manager, a progress window is now shown.
  • We upgraded the SVG library to version 3.3.0.

Microflow Calls in Offline-First Apps

We have improved the internals of how non-persistable objects are passed as microflow parameters in offline-first apps. This means better performance, increased stability, and more flexibility.

A microflow call is now a single request instead of multiple network calls, which improves performance and stability when calling microflows. Depending on the amount of objects sent, this can be a meaningful boost to performance.

And one more thing. Do you recall the error message, “Non-persistable objects created in a microflow can’t be passed to another microflow”? Well, you can forget it! We are happy to announce that you can now pass non-persistable objects to microflows, even if they were created inside another microflow.

Default Values in Offline-First Apps

With this release, we added support for default values in offline-first apps. This means that when an object is created, it uses the default values as defined in your domain model, just like web apps do. This new process is aligned with online and web apps and makes creating new objects easier.

Changes for Accessing Authtoken with Native Mobile

Even though the token mechanism is an internal mechanism, certain solutions like SSO and Authentication modules required the token to be set manually. The code which accomplishes this is not compatible with the encryption improvements in Studio Pro 9.8. Therefore you must update the code so that affected solutions and modules can work properly. If your app’s authentication is broken after upgrading to Studio Pro 9.8, please make sure your modules are up to date.

Previously it was possible to read or write the token using the AsyncStorage dependency (in a JavaScript action). Due to the new encryption for enhanced security this is no longer possible. Reading is fully disallowed, while writing is still possible using the method described below.

To enable writing, please change your code as follows.

Old code:

import AsyncStorage from "@react-native-community/async-storage";
...
await this.store.setItem(key, value)
...

New code:

import { setValue } from "mendix/utils/native/authtoken"
...
await setValue(value)
...

Any native app built with Mendix Studio Pro 9.8 that is using the setValue method provided by the new auth token utility supports both encrypted and unencrypted tokens with no extra modifications.

For modules or JavaScript actions which must be backwards compatible with versions of Mendix Studio Pro below 9.8, use the following snippet to get the correct setter based on the availability of the auth token util:

// This import most likely already exists in your code.
import AsyncStorage from "@react-native-community/async-storage"; 

function getAuthtokenSetter() {
	let setValue = async (value) => await AsyncStorage.setItem("token", value);
	try {
		setValue = (require("mendix/utils/native/authtoken"))?.setValue;
	} catch (e) {
		console.warn("Client does not support encrypted token");
	}
	return setValue;
}

Fixes

  • We fixed an issue with the data grid’s drop-down search containing no values. (Ticket 107361)
  • The Select button on reference selectors is now blocked when the selected page is being shown. This prevents end-users from accidentally opening the selected page more than once. (Ticket 108295)
  • We fixed an issue where a background application window was focused after a notification disappeared. (Ticket 125320)
  • We fixed an issue where every time the system tried to delete invalidated sessions, an error was thrown. (Ticket 126415)
  • We fixed an issue where the expand button was sometimes displayed in the Select Entity dialog box for an entity without another associated entity. (Ticket 127417)
  • We fixed an issue where automatically generated mappings incorrectly tried to add an association to a system entity or an external entity. (Ticket 128339)
  • We fixed an issue where Mendix Runtime did not start after a module containing a remote entity was replaced. (Ticket 131331)
  • We fixed an issue where invalid SVGs in the image collection crashed Studio Pro while an app was being published. (Ticket 131378)
  • We fixed an issue with switching to None for the Close Pages option in the Show page activity. (Ticket 131890)
  • A pluggable widget configured with an association, microflow, or nanoflow data source was sorted incorrectly when some attribute values were empty. This has been fixed. (Ticket 132290)
  • We fixed an error with the XPath constraints of the [$object/flag] form when $object is empty. (Ticket 132531)
  • We fixed an issue where the Auto-Load More widget did not work as expected with a list view. (Ticket 132953)
  • We fixed the reference selector behavior for click and delete interactions. It is now again possible to clear the selection by pressing Delete. (Ticket 133209)
  • We fixed an issue that occurred with the data grid inline editor while using non-persistable entities. (Ticket 133700)
  • We fixed an issue in the App Explorer where the active item selection border was not displayed when all nodes were expanded. (Ticket 134616)
  • We fixed an issue in the Call web service activity where selecting an operation from a consumed web service located in a Marketplace module was not possible. (Ticket 135402)
  • We fixed an issue in consumed OData services that occurred when running on Parallels on a Mac where a contract from the disk would show as though it came from a URL.
  • We fixed an issue that occurred when reading the metadata of a consumed OData service where (navigation) properties marked as non-updatable in the metadata appeared to be updatable.
  • We fixed an issue with a GUID key being sent as a string literal when looking for an associated object in consumed OData services.
  • We fixed an issue in the generated metadata of a published OData serivce. The capability annotation that indicated which (navigation) properties were not updatable used a string instead of (Navigation)PropertyPath.
  • We fixed a bug where fields were not read-only while editing when multiple conflicting access rules were present on an entity.
  • We fixed a bug where tooltips were not showing when a button was disabled.
  • We fixed an issue where a non-persistable object was rolled back in a microflow in an offline-first app and the value for a changed attribute reverted back to the default value of that attribute. Now, the attribute’s value reverts back to the committed value instead.
  • We fixed an issue in consistency checking where a Call REST service activity with file document result handling but no type specified for the variable resulted in an exception.
  • We fixed an issue where the Send external object activity did not send an attribute that was made empty.
  • We fixed a bug where the History form title showed incorrectly.
  • We fixed a bug where filtering the commit history by the selected unit was not working for Git-based apps.
  • We fixed an issue in the app selector where version-controlled apps that were not checked out locally were displayed as Unversioned and had a default SVN icon (even when those apps were under the Git version control system).
  • We fixed another issue in the app selector so branches are ordered with the main branch displayed first.
  • We fixed an issue where the Atlas UI Resources module could not be imported from the Marketplace.
  • A data view in read-only mode no longer does unnecessary commits.
  • We fixed an issue with resizing dialog boxes that contain expression editors. Now, these editors scale according to the size of the dialog box.
  • When using DB2, the DATEDIFF OQL function now correctly returns negative values where applicable.
  • We fixed an issue where descriptions were lost when creating a deployment package again for the same revision. You are now asked if you want to overwrite your previous description or continue creating the package with the existing one.
  • We fixed the functionality of selecting a Data Type item via keyboard shortcuts.

Known Issues

  • Any changes to a microflow require your application to be restarted for the changes to be reflected.
  • Registration of updatable OData resources in the Data Hub Catalog does not work when the Updatable (write) capability is enabled for a published OData service.
  • When you update a consumed OData service with a new version from Mendix Data Hub but close the document without saving, the blue arrow icon will no longer be shown to notify you about the available update for that service.
    • Workaround: Closing your app and opening it again fixes this issue.
  • In the Properties pane, you cannot copy, paste, or delete using keyboard shortcuts.
    • Workaround: Perform the same operation using your mouse and the context menu.