Release Notes 2026-02-12:
- Modernization:
- MIRA finally supports Qt6, Qt4 is officially dropped in turn.
- If both Qt5 and 6 are found, Qt6 is used (can be overriden in GlobalConfig.cmake).
- Use of the 3D View (based on the OGRE engine) is supported on Wayland display servers (by setting QT_QPA_PLATFORM=xcb).
- We decided to unify the individual packages GUIViews, GUIVisualization, GUIWidgets, GUIFramework and GUIRichClientPlatform into a single package GUI, in order to simplify maintenance. Packages depending on any of these former packages should just be updated to depend on the new package GUI instead. The structure of libs created by the GUI package(s) is unchanged, but dependent packages may need to explicitly link some of these libs now.
- Property reflection and the PropertyEditor are extended to support properties of boost::optional<> type, which includes displaying whether an 'optional' variable has a value/which value, as well as editing it, even resetting it to no value. A JSON 'null' will deserialize to a variable of type boost::optional<> as 'None' (no value).
- The PropertyNode is protected against concurrent property tree manipulation by locking the node's internal mutex. If the node cannot be locked within a timeout, it will throw an exception instead (and the caller will have to deal with that). To save performance, this locking is omitted for properties which are guaranteed to have no child nodes, e.g. atomic types. To support the required compile-time analysis, specializations of the IsTransparentSerializable<T> trait are expected to define an internal type 'DelegateTo'. (The actual issue seems to be mostly theoretic so far, but potentially critical cases became apparent in the context of above mentioned boost::optional support)
- The TapePlayer widget received some helpful keyboard shortcuts (see help in miracenter [F2]).