6.10.8

Release date: June 26th, 2017

Download

Fixes

  • We fixed the case of a conditionally visible container encapsulating both a conditionally visible widget and a widget that was not conditionally visible. (Ticket 53178)
  • We fixed the scenario in which a conditionally visible widget was placed inside a conditionally visible container and it was not properly initialized. (Tickets 52885, 52987, 52994, 52976)
  • When executing a database query results in a connection failure, the system will no longer leak a connection that causes (in the worst case scenario) all the connections to be in-use. (Ticket 48767)
  • Using the reverse() method in an XPath constraint now works properly, even for self-references. (Tickets 47140, 52175)
  • We fixed the scenario in which streams were not closed correctly and copying failed unexpectedly while downloading a file. (Ticket 53079)
  • We fixed a bug in offline synchronization where synchronizing a large number of objects caused an iOS app to crash. (Ticket 51442)

Improvements

  • Starting the Mendix Runtime on a database upgraded to a newer version of the Runtime is prohibited in order to ensure correct Mendix Runtime behavior. If you downgrade the Mendix Runtime, make sure you restore a database backup as well.
  • We added support for projects created in Modeler versions 5.21.7 and 5.21.8.

6.10.7

Release date: May 16th, 2017

Download

Fixes

  • In web service calls, the custom header Authorization is no longer filtered out. (Tickets 51929, 51947)
  • When you have a data grid or template grid that is conditionally visible, it is properly displayed according to the condition you have defined. However, when the condition changed so that the widget was to be removed from the display, the grid was still there. We fixed this for you. (Tickets 48945, 49098, 49584)
  • When a widget is conditionally visible, the condition is reevaluated when the context object of the containing data view changes. This happens when, for example, you are navigating to a new page or the data view is a listening data view and the selection of the widget that it is listening to changes. However, when a conditionally visible widget was shown, it acted like it got a new context object twice and, for example, it executed database queries twice. That seemed like a waste of time and resources, so we fixed it. (Ticket 50714)

Known issues

  • When you have a conditionally visible container that contains a conditionally visible widget, the widget is not always initialized properly.

6.10.6

Release date: May 5th, 2017

Download

Improvements

  • We changed the default transaction isolation level for microflows on MySQL and MariaDB to Read Committed. For this level, row-based logging is required in your database. For details on how to configure this, see MySQL in the Mendix Reference Guide. (Ticket 51330)

Fixes

  • When an Action button was configured to call a microflow so that the button was disabled during the action and the confirmation was also configured in the microflow settings, the Action button stayed disabled when canceling via the confirmation dialog box. Some users still want to be able to click the button after canceling it once, so we fixed this. (Ticket 47262)
  • We fixed the fetching resource for offline mobile apps. (Ticket 51263)
  • We fixed the wrong search results for a date search field of a data grid inside a listening data view. (Ticket 49465)
  • Recommitting a previously failed commit (in a microflow and in the client) works again and no longer gives an error (such as, “Object of type ‘MyFirstModule.MyEntity’ with guid ‘1234’ cannot be updated, as it does not exist anymore”). (Ticket 47277)
  • When setting the first day of the week setting to the default (based on the locale), the results are now in the correct week numbers (based on the locale). (Ticket 44259)

6.10.5

Release date: March 10th, 2017

Download

Developer productivity

When selecting text in an expression editor in the Desktop Modeler using the mouse, it was sometimes difficult to get the required selection, because the editor automatically selected whole words. We changed this to make the selection always expand by a single character when you drag the mouse.

Other fixes

  • currentUser is now always available in the microflow scope while executing a microflow. (Ticket 44116)
  • Using empty as a default for parseDecimal([..]) no longer returns always null and no longer throws an IllegalArgumentException. (Ticket 44292)
  • Removing items from a list using a list containing duplicates no longer throws IndexOutOfBoundException. (Ticket 44966)
  • We fixed the downloading of remote files when static resources from a disk option is enabled for hybrid apps. (Ticket 45769)
  • We properly cleaned and disabled old offline navigation profiles to prevent the loss of references to pages and unexpected consistency errors in the case of page deletions. This fixes the known issue from the 6.10.4 release.
  • We fixed the NullPointerException that occurred when calling addRefreshObjectFeedback from custom Java Actions. (Ticket 48835)
  • We fixed the local name being incorrectly determined in the case of inheritance. (Ticket 49990)

6.10.4

Release date: February 14th, 2017

Download

Hybrid profiles

We’ve added two brand new profiles: hybrid tablet and hybrid phone. Each hybrid profile can optionally be marked as “offline.” This means it is now possible to create a hybrid phone app and another (web) phone app in the same project. The same applies to tablet apps.

To make your life easier, there is a button on the phone and tablet profiles to copy the profile to its respective hybrid profile.

Please note that you still need to enable “offline” in the hybrid app manually. Sorry for that.

Known issue

Deleting pages that were previously set as default or role-based home pages or that were referenced from a menu item in an offline navigation profile leads to unsolvable consistency errors. Please keep these pages in your project until the next Modeler release, even if they are not in use.

Other fixes

  • We fixed the scroll-jumping issue for text areas with the Grow automatically option set to Yes.
  • Pressing the Submit button on a mobile keyboard while searching a list view now hides the keyboard as expected. (Ticket 46410)
  • When a non-localized date was set to empty, it was saved as “1/1/1970.” As the chances were very slim you wanted that, we now save it as an empty date. (Ticket 47784)
  • We made changes to Mendix Runtime to prevent it from blacklisting Refresh in Client events. This prevents Mendix Runtime from getting into a mode in which those instructions are no longer sent to the client. In addition, we ensured that the amount of events going through the system is reduced by ignoring the Refresh in Client instruction, in case the microflows are being run using a system context (which applies to, for example, scheduled events). Also, a warning is logged when the amount of feedback instructions (of which the Refresh in Client instructions are a subset) reaches a certain threshold (5000 items), because such an amount would render the client useless. (Tickets 47984, 48211, 48264, 48564, 49054, 48802)
  • Mendix Runtime will no longer start in acceptance/production mode when an admin user has a password of “1”.
  • The user language is now updated when you set the User_Language association and refresh the application. (Ticket 45165)

6.10.3

Release date: January 9th, 2017

Download

Fixes

  • We removed the deprecation messages in the Modeler about traversing associations from persistable entities to non-persistable entities, as this situation will not result in an error in Mendix 7.
  • When you connected to the internet using a proxy server that needed a username/password, it was not possible to sign in to the Modeler without first going to the Preferences dialog box to configure the proxy settings. This prevented some users from signing in, as the Modeler only allows you to open the Preferences dialog box after the first successful sign-in. Now, the proxy settings can be configured directly from the Sign In dialog box, resolving this catch-22. (Ticket 45324)
  • After adding an Autonumber attribute on an entity that has specializations, existing objects were initialized with duplicate values for the new attribute. With this fix, the values will be unique. (Ticket 43598)
  • We fixed the incorrect XPath-to-SQL conversion that occurred in some cases of nested binary OR expressions with associations. (Tickets 38219, 47089)
  • We fixed a disturbing NullPointerException message that appeared in the browser when sorting the attributes of an associated entity that had “entity access” applied. The sorting itself has not changed. (Ticket 44233)
  • Hybrid apps no longer store any personal data on the device. (Ticket 47499)
  • Sometimes touch gestures were not handled properly for sidebar and drop-down menus in Mendix apps. We felt that was inappropriate, so we remedied that for you.

6.10.2

Release date: December 13th, 2016

Download

Fixes

  • Data grids with date search fields no longer show 1/1/1970 when going back to the page. This would result in empty grids, as there usually will not be any data with that date. (Tickets 47523, 47513, 46553)
  • We fixed the issue with the license verification failure that occurred when the migration of a project took a long time. (Ticket 46729)

6.10.1

Release date: December 5th, 2016

Download

URLs for pages with context

URLs can now be defined for every page in your application! This allows for sharing and bookmarking the URL of any page, including pages with parameters. This means that you can directly access pages with an edit form or the details of an entity. The URL property for pages with parameters should be configured to contain the {Id} placeholder, which will be replaced with the actual entity ID at runtime.

These are the known issues for this change:

  • If you try to open a URL for a page with a parameter that you do not have access to, you will be asked to log in to an account with sufficient access and will be immediately logged out of the current account.
  • If you try to open a URL for a page with a parameter that does not exist, you will get the error message “The page you requested was not found” and a custom 404 page will be ignored.
  • Data grids with date search fields show 1/1/1970 when going back to the page. This results in empty grids, as there is usually not any data with that date.
  • If the user tries to access a page without having the correct permissions, the user is logged out.

Other fixes

  • The Modeler no longer shows an empty pop-up window when an empty error message is provided in a microflow validation. (Ticket 46511)
  • We fixed the blank screen problem for specific use cases when the entity attribute name is the same as JavaScript keywords/methods like toString, hasOwnProperty, etc. (Ticket 43793)
  • Some custom widgets were loaded with a URL containing two slashes (for example, https://mendix.com/widgets//widgets.js*). Too many slashes can be a bad thing, so we have reduced it to one. (Tickets 47075, 45080)
  • We fixed the multiselect behavior when one of the possible options is an empty string. (Ticket 46254)
  • We fixed the bug that caused widgets shown or hidden via conditional visibility to show outdated data. (Ticket 47171)

6.10.0

Release date: October 31st, 2016

Download

Region toggle settings moved

The left and right layout regions have long been—for lack of a better word—toggleable. This means that you can configure them to pop in and out of view using a sidebar toggle button. While working on this feature recently, we realized the settings that governed this behavior made no sense. For example, to configure the visibility settings for a region, you had to edit the settings for the button.

We’ve taken the liberty of correcting this blemish by removing the Region, Mode, and Initially open settings from the sidebar toggle button properties. The scroll container region itself now has the new Toggle mode setting, which combines the Mode and Initially properties that were removed.

Conditionally invisible DOM node changes

We have properly removed the nodes from the document object model (DOM) when they are conditionally invisible. Previously, when a node was hidden by conditional formatting, we made the node invisible but kept it in place. This had a number of disadvantages. For example, child pseudo-class selectors like :first-child still targeted the nodes that were hidden, which broke the styling. Another disadvantage was that widgets that were hidden were still checked for validation errors. This meant that a required-but-hidden input field could prevent the page from being saved.

We fixed these issues by actually removing nodes from the document when they are not visible due to conditional formatting. This has the additional benefit that it improves performance for pages that use conditional formatting, as hidden nodes no longer pollute the DOM and slow down the browser. (Ticket 38955)

Hybrid app improvements

In order to take advantage of the new features and fixes in the hybrid app, you will need to republish your application.

No more disappearing content and flickering pages when scrolling

A hybrid app runs with a component called a webview, which is the native webview from the platform on which the hybrid app is running. On iOS, there are two webviews available: WKWebView, which is the webview also used by the Safari browser, and the older UIWebView, which is used by the hybrid apps on iOS. WKWebView is the new and improved UIWebView, as it has superior performance but it also solves some nasty browser bugs that caused white screens and flickering.

The great news is that it is now possible to use WKWebView in hybrid apps as well. You need to configure this manually in the hybrid app. First, you need to download the PhoneGap build package for your app in the publish step. Then you add the following preference above or below the existing preferences in the config.xml within this package: 

<feature name="CDVWKWebViewEngine">      <param name="ios-package" value="CDVWKWebViewEngine" /> </feature>

You also need to add the following plugin below the other plugins in the file:

 <gap:plugin name="cordova-plugin-wkwebview-engine-nextgen" source="npm" version="1.0.1" />

With these changes in config.xml, your app will run on the superior WKWebView engine. Make sure you update your custom widgets with the latest version in the Mendix App Store, publish your app, and enjoy the ride! (Tickets 39806, 43665)

Custom widget writing notes

With WKWebView, there is one feature we cannot support, and that is executing a synchronous XMLHttpRequest. If you are using these in your custom widget code, you should rewrite them to asynchronous requests. Synchronous requests are bad for the user experience, and browsers like Chrome are already deprecating them.

There is also a construct within dojo that uses synchronous requests, and that is when you use _TemplatedMixin with the (deprecated) templatePath property. Instead of the templatePath property, use the dojo/text! syntax instead to load a widget’s template. If you are still using the templatePath construct, this will result in an “Error: Invalid template” message.

Swiping to navigate to the previous page

You can now swipe to navigate back to the previous page with hybrid apps on iOS. Note that swiping to go forward in history does not work.

Autologin token

We fixed the issue in which the hybrid app on Android was closed with the device back button, the autologin token was removed, and the user had to provide credentials again when the app was restarted.

Other Fixes

  • We fixed saving objects in an offline hybrid app when there are multiple data views in a single form and not all the objects in the data views have been changed.
  • We fixed the error that occurred when canceling a form with an object that was just created in an offline hybrid app.

Validations not showing

Widgets with read-only style set to “Control” now display validation messages again. This was broken in 6.9.x. (Tickets 46018, 46242, 46412)

Reporting

We decided it was time to blow some dust off the old beloved reporting module in Mendix.

First, you no longer need to use report panes. Actually, we took the liberty of removing them all from your projects. Second, we renamed the reporting widgets to align them with other platform conventions. So, the “Basic Report” is dead, long live the “Report Grid” (as well as “Report Parameter” and “Report Date Parameter”)! Third, we simplified the configuration of reports. Now you can use the connector for all reporting widgets, and the properties have been cleaned up. Last but not least, we fixed a lot of bugs: the report chart that was not respecting parameters, the report parameter that was broken when a corresponding report was nested in the table, multiple reports on one page that were conflicting with each other, etc. (Tickets 43704, 44276, 38358)

We also enabled configuring multiple report buttons on one page, just because we can.

To add a bit of sadness to this positive list, we are announcing that the report chart widget has been deprecated and is scheduled for removal in Mendix 8. Bye-bye, good, old, last flash widget!

IBM DB2 support

IBM DB2 11.1 and IBM DashDB are now officially supported. For prerequisites and known issues, see DB2 in the Mendix Reference Guide.

PostgreSQL 9.6 support

PostgreSQL 9.6 is now officially supported. We dropped support for PostgreSQL 9.1. We upgraded the PostgreSQL JDBC driver from version 9.4-1208 to 9.4-1211.

Performance improvements

We improved the initial page load speed by significantly reducing both the number of static resources requested and the size of these files. This is especially noticeable in mobile applications.

Productivity improvements

Do you enjoy the moment when your pages are automatically reloaded in the browser after you redeploy your running app? We love this feature. In fact, we love it so much that we decided to take it one step further – now it works in the cloud with free apps! You’re welcome.

We have introduced a Description field for each Java Action parameter in the Mendix Modeler, which can be used to provide additional information about the parameter to the users of the Java Action.

If something goes wrong while instantiating a custom widget, you used to only get a short description of the exception. Now, the full stack trace is available. This will make debugging your custom widget a lot easier. (Ticket 44090)

For users who have .NET framework 4.5.2 or higher installed on their machine, we have enabled High DPI Improvements in the .NET framework. High DPI Improvements is a built-in feature to enable resizing according to the system DPI settings for several glyphs or icons of some controls. This will further improve the experience of running the Modeler on high-resolution screens.

REST call action

We have improved support for storing binary content. You can now specify the type of entity you wish to store the binary content in when storing the response of a REST call in a file document. This entity should inherit from System.FileDocument

Further, we made some improvements to the handling of JSON in the REST call action. First, we now support string escaping when handling JSON requests and responses (Ticket 44351). We also support this in the JSON structure (Ticket 44351). Second, we fixed the issue with importing from JSON when the JSON objects are ordered differently in the imported JSON and the JSON structure used in the import mapping (Ticket 44858). Third, we fixed the issue in which the passed import mapping parameter in REST call actions was always empty (Ticket 45461). Finally, we fixed the name of the JSON export and the JSON import log nodes.

Other fixes

  • We fixed the issue in which autocommitted objects were incorrectly garbage-collected when they did not have a reference to an object that was still active in the web client. This caused them to not be cleaned up on the session destroy if they were not actually committed during the session. (Ticket 44738)
  • We made sure large files are not read into the server memory upon web client file upload. This makes the behavior equal to how it was before Mendix 6.8.0 (when this change was introduced).
  • We fixed the issue in which deprecation warnings for legacy APIs were no longer displayed by the client. This means that you might notice deprecation warnings in your custom widgets that were not present before. Please treat these warnings seriously.
  • We fixed the default name of the drop-down button so you won’t get an error when creating it.
  • We fixed the issue in the Modeler in which exceptions could occur after opening a Java Action with an Object return type.
  • We fixed the issue in which sorting in descending order in a data grid was very slow. Note that sorting behavior may have changed for descending sorting. Now, if record values are the same in the sorting column, a secondary sorting is applied in the reverse order. For example, records previously sorted as [Z,1] [Z,2] [Y,1] are now sorted as [Z,2] [Z,1] [Y,1]. Note the difference between the first records, which are reversed. (Ticket 38105)
  • We fixed the issue in which %EndOfCurrentDay% expressions in XPath were not evaluated correctly. (Ticket 38125)
  • We fixed the issue in which having an entity with the same name as a built-in Java data type (for example, “String”) could cause problems in the generated proxy classes. (Ticket 44258)
  • We fixed the issue in which conditionally invisible widgets were displaying empty and null values if the user didn’t have permissions on the object or value being shown. (Ticket 45295)
  • We fixed the issue in which a user logged in from multiple browsers when “multiple sessions per user” was set to “no” and got infinite reloads in the first browser instead of the login screen. (Ticket 38241)
  • We fixed the issue in data views that prevented content from being refreshed by a wrapping widget. For example, if you had a data view inside a template grid, widgets nested in it wouldn’t be refreshed when the next page of the template grid was opened. (Ticket 44649)
  • We fixed the issue with changes in non-localized date-time fields being ignored when the difference between the old and new values is equal to the time zone offset. (Ticket 41626)
  • We fixed the problem in which changing the location or timeout setting of a consumed app service threw an error. (Ticket 43718, 43758)
  • When a user is blocked and a login attempt is tried, we now log a warning instead of an info, as it can potentially be a hacker. (Ticket 41961)
  • The form save event was not published anymore, so when a custom was listening on this event this was never triggered. We fixed this and made listening on save events backwards compatible. The save event is now deprecated and should be replaced by the submit event. (Ticket 45984)

Deprecation warnings

The following interfaces, enums, methods, and fields have been deprecated and will be removed in the next major release of Mendix:

  • Configuration.getDataStoreConfiguration()
  • Configuration.getBuiltInDatabasePath()
  • Configuration.getDatabaseName()
  • Configuration.getReadCommittedSnapshot()
  • Configuration.getMaxThreadsPerDataStoreRequest()
  • Configuration.getLogMinDurationQuery()
  • Configuration.mustReturnOnlyNecessaryDDLCommands()
  • Configuration.setReturnOnlyNecessaryDDLCommands(boolean)
  • IDataRow.getPrimaryKeyValue()
  • IDataTable.createRow()
  • IDataTableSchema.getName()
  • AggregateFunction enum
  • IMetaAssociationSchema interface
  • IRetrievalSchema.getAssociationDepth()
  • IRetrievalSchema.setAssociationDepth(int)
  • IRetrievalSchema.copyFrom(IRetrievalSchema)
  • ResultType enum
  • IGetRequest.getResultType()
  • IGetRequest.setResultType(ResultType)
  • IGetRequest.isSecurityDisabled()
  • IGetRequest.setSecurityDisabled(boolean)
  • IGetRequest.getAccessRightsToRetrieve()
  • IGetRequest.mustRetrieveAllAccessRights()
  • IGetRequest.READ_ACCESS, WRITE_ACCESS, CREATE_ACCESS, DELETE_ACCESS, FULL_ACCESS
  • All methods that have been documented as “For internal use only”