external-0.15.0:
- Updated to eigen 3.3.5
- Updated to json-spirit-4.08b (patched 4.08 to fix some gcc warnings)

MIRAenvironment-0.21.0:
- added miratape to the tools listed in documentation main page
- updated documentation of bash tools
- always using "-Wno-ignored-attributes" with precompiled headers
  (to avoid massive warning spam when combined with Eigen 3.3 and gcc >= 6)
- streamlined the documentation of MIRA requirements installation, added Ubuntu 18.04/Mint 19
- added definition of macro _FILE_NAME_, similar to standard macro __FILE__
  but valid for identifiers (invalid characters are replaced by '_')

MIRABase-0.44.0:
- documentation: fixed example for class versioning in serialization
- MetaSerializer: added CompoundMeta::insertMember() to add member at arbitrary position
- BinaryJSONConverter::JSONToBinary can tolerate missing '@version' elements in JSON data
  (will insert a specified default version into the binary stream)
- fixed default values not working for a member using delegate (getter, setter, ...) in its reflection
- added some path utility functions
- STL associative containers now reflect their keys as read-only properties, so these can show up e.g. in PropertyEditor
- security component adapted to support OpenSSL 1.1.0
- compatiblity Eigen 3.3.5: made (previously implicit) conversions from scalar to Eigen::Rotation2D explicit
- limiting the linked OpenCV libs to those really needed: core, imgproc, imgcodecs
  (derived packages might need to link additional OpenCV libs themselves)
- added utility macros for generating unique and semi-unique identifiers/strings
- PathFinder::findFile(s)/findDirectory(s) works for absolute path inputs (returns the input argument if it exists)
- added Rect difference operator for 2D case (returning list of remaining rects)
- fixed JSONDeserializer getting knocked off while reading collection with pointer elements
- fixed json::write always doing formatted output, regardless of parameter 'formatted'
- method() declarations in reflection can now include documentation for method's parameters
- RPC methods store a sample JSON for each parameter (which can be used for user help in interactive RPC tools)
  (set environment variable MIRA_RPC_METHODS_REFLECT_NO_PARAMS_DOCUMENTATION to disable reflection of new method
   members, enabling undisturbed connection with a framework older than this)
- added JSONDefaultPrecision singleton, to control the precision of json::write() (without explicit precision argument)
- serialization format for std::map/multimap changed:
  - new standard format is sequence of pairs (items with First/Second members)
  - XML(De)Serializer keeps interleaved key/item sequence format for config files backward compatibility
  - JSONSerializer can optionally export maps with string keys as objects (keys = member names)
  - JSONDeserializer can optionally import maps with string keys from either pair sequences OR objects (by default, it only reads pair sequences)
- fixed transform_cast always erasing covariance when both base type and dimension of source/target differs
- fixed XML(De)Serializer's handling of sequences in compressed format

MIRAFramework-0.41.0:
- updated Tape format and version history documentation
- automatic increase of storage duration when reading older channel data can be disabled
- minor changes to compile with gcc 7.3 (Linux Mint 19)
- compatiblity Eigen 3.3.5: made (previously implicit) conversions from scalar to Eigen::Rotation2D explicit
- added examples for framework-based test setup (verifying channel data) in examples/fw/IntPublisherSubscriber/
- exceptions during ConfigurationLoader plugin loading are caught and displayed, but do not quit the framework
- arbitrary exceptions in Framework initialization are caught and framework is cleanly finished, showing the exception
- fixed TapeRecorder potentially not storing past data until the next update on a recorded channel
- added automatic channel promotion: channel types can be registered to automatically promote from untyped to typed
  (e.g. with remote connections or tape playback), based on typename (string), without requiring a typed subscriber
- Framework 'config-string' parameter enforces enclosing <root> tag
- renamed Framework option 'save_processed_config' to 'save-processed-config' for consistency
- ServiceProperty now (de)serializes completely, including the required service interface (as member),
  ServiceProperty(const std::string&) constructor is explicit
- parameters are documented for all RPC service methods
- added explicit cast of ChannelReadInterval<T>::const_iterator to ChannelReadInterval<T>::IntervalList::const_iterator to expose iterator of ChannelRead<T>
- added Framework parameter '--default-output-precision' (requiring uint argument) to control precision of JSON floating-point output
- added Authority::waitForChannel()
- removed deprecated methods MicroUnit::onStart/onStop/OnInitialization, Unit::process()

MIRAgui-0.39.0:
- TapePlayerWidget: negative offsets in current/last playing time are treated as 0 for display purposes
- TapeRecorderWidget: Fixed sometimes blocking file dialogs which occured on CentOS 7.5 with Qt 5.9
- EditorPartWindows (Visualizations, PythonEditor....) can be set to be always on top in editor window stack
- Visualization3DView on mouse events determines the device pixel ratio and provides it with the call to the active tool
- fixed wheelEvents zooming in 2DView/3DView also propagating to scroll the parent editor area with QT > 5.5(?)
- VisualizationView: Fixed sometimes blocking file dialogs which occured on CentOS 7.5 with Qt 5.9
- fixed some views opening file selection dialogs on keyboard shortcuts despite not providing any functionality
- TextTrace view: added CSV export (accessible via context menu or Ctrl-P)
- TextTrace view: can optionally display items in timestamp order instead of add order (order of channel callbacks)
- compatiblity Eigen 3.3.5: made (previously implicit) conversions from scalar to Eigen::Rotation2D explicit
- fixed PolygonObject::setColor() to set the polygon outline color (same as before version 0.38.0)
- implemented option to use camera perspective in camera view
- VisualizationTool base class got additional mouse event handlers taking the device pixel ratio (support for high-DPI scaling). Tools which need to
  consider the device pixel ratio (e.g. required for relating event coordinates to content of a QGLWidget) must implement these methods.
- Interact tool and tools based on SceneQueryTool (Measure, Localize, Goal, ...) respect device pixel ratio (therefore work with high-DPI scaling)
- fixed a bug that hinders proper hiding of X and Z axis on the change of axis visibility
- ImgWidget: in AutoScale mode, displayed image is re-scaled whenever the widget size changes
- removed use of deprecated (and irrelevant) QStyleOptionViewItemV3
- fixed QSplashScreen continuously calling close() (which was disturbing all tooltips with QT >= 5.6)
- QtUtils::getSaveFileName can optionally enforce that only certain file extensions are selected
- PropertyEditor 'Open' dialog for path (folder/directory) properties now behaves as for file properties
  (see 0.38.0) and uses mira FileOpenDialog wrapper

CameraParameters-0.10.0:
- added cylindric panorama image visualization
- getDistortion() returns k3..k6 too (and moved to base class DistortionModel)
- add versioning for DistortionParameters::reflect, k3...k6 only reflected with version >= 2
- fix frustum visibility when leaving 'Camera View'
- added orientation of cylinder in camera coordinates to PanoramaCameraIntrinsic which formerly has been a property of the OmniToPanoramaUnit
- added camera view projection matrix update on intrinsic change
- added type registrations for new auto channel promote feature

CommonCodecs-0.9.4:
- fixed encoding error message of PNG codec

CommonVisualization-0.19.1:
- improved display of TransformationTree node poses in TextView
- improved FramePublisher
- added several parameters like text and axis properties to control the visualization of the transform tree
- PathVisualization can control range of points (first/last index) to be visible

GraphVisualization-0.11.1:
- Fixed sometimes blocking file dialog which occured on CentOS 7.5 with Qt 5.9

Localization-0.13.0:
- parameters are documented for all RPC service methods

Navigation-0.28.0:
- SubTask calls itemName() in reflect() to show subtask (class) names in property editor
- added type registrations for new auto channel promote feature
- parameters are documented for all RPC service methods

PlotVisualization-0.21.2:
- SubTask calls itemName() in reflect() to show subtask (class) names in property editor
- added type registrations for new auto channel promote feature
- parameters are documented for all RPC service methods

RigidModel-0.19.0:
- added method CollisionTest::decayShape
- Marker module: added AxesMarker
- added type registrations for new auto channel promote feature
- parameters are documented for all RPC service methods

RobotDataTypes-0.23.0:
- prevent selection of invalid colormaps in various visualizations requiring continuous colormaps
- added type registrations for new auto channel promote feature
- DriveWidget monitors Motorstop status and highlights an active Motorstop in its GUI
- parameters are documented for all RPC service methods

miracenter-0.22.0:
- TapePlayerView removes non-existant files from its list of opened tapes
- Added option to authority view to show channel namespaces relative to associated authority
- Fixed sometimes blocking file dialogs which occured on CentOS 7.5 with Qt 5.9
- RPC View and RPC Console show service method's parameter names and descriptions (if declared)
- RPC Console shows a sample call for each method including parameter notation
- AuthorityView includes RPC parameter documentation in generated unit documentations

mirainspect-0.11.1:
- "rpc info" shows service method's parameter names and descriptions (if declared)
  and a sample call for each method including parameter notation

mirapackage-0.22.0:
- QtFtp: now building out of source tree to avoid error with Qt 5.9 on CentOS-7.5
- Quazip: adapted patch to work with Qt 5.9 on CentOS-7.5
- updated to svn 1.9, replacing all deprecated API functions by current versions

miratape-0.15.0:
- fixed the 'copy --retype' option having no effect at all, and made it support multiple type changes in one call
- added 'copy --rename' option to enable renaming of channels
- added 'copy --addversion' option to retroactively add a '@version' member to all occurences of a
  certain class in the serialized data (if meta-serialized and reversible binaryToJSON/JSONToBinary)
- 'writeJSON' will not exit on missing metadata, just output an error and continue
- added 'play --play_also' option that allows simultaneous playplack of multiple tapefiles (as in MIRACenter)

mirawizard-0.10.0:
- missing parent directory cmake files are created
- improved/updated templates
- added Python Unit to creatable components (running it will require the MIRA Python toolbox!)

-------------------------------------------------------------------------

CameraGeometry-0.14.0:
- pinhole rectification uses all distortion parameters up to k6
- changed internal coordinate systems of Omnicamera and PanoramaCamera model to match the CameraFrame

GMapping-0.11.0:
- Using git instead of svn for downloading GMapping

MapBuilder-0.22.3:
- made compile with gcc 7.3
- Removed absolute path from raw mapping data files (.mdata.xml)

Mapping-0.21.2:
- Interaction tool works with OccupancyGrid visualization with arbitrary frame id
- PointCloud visualization: 'Size' property for drawStyle 'Points' is properly decoupled between visualizations

PCL-0.12.0:
- fixed some compilation issues
- restructured to improve integration with PCL
- visualization: 'Size' property for drawStyle 'Points' is properly decoupled between visualizations
- added RPC method parameter documentation

Python-0.27.0:0
- split MiraPy.C into multiple files to reduce memory usage during compiling
- fixed environment variable name PYTHONPATH in documentation
- added wrappers for more containers: maps of primitive types, maps of vectors of primitive types
  (+ forcing sequential build for these, requires to create separate libraries)
- Python to JSON conversion supports unicode strings (assuming utf-8 encoding only, so far)
- MIRA types wrapped using MIRA_PYTHONCONNECTOR*_TYPE_FOOTER can be converted from/to JSON via .convertJSONtoObject(...) and convertObjectToJSON()
- RPC calls handle the conversion of MIRA-wrapped types to JSON for their parameters transparently in the background
- JSON to Python conversion for json::Array now creates Python native list (instead of mirapy.jsonArray)
- the get() method of RPC futures now (optionally) supports converting the return value to an object given the type
- fixed issue with ChannelReadInterval containing None's instead of ChannelRead objects when using subscribeInterval
- added PyUnit destructor to safely delete unit object without segfaulting
- added UnitWrapper::doesChannelExist(), waitForChannel(), getNamespace(), get(Global)Name/ID()
- now adding lib/libName.so as symbolic link to python/Name.so during build and install (allows use with ldconfig)
- ReflectorWrapper extends RPC parameter documentation capability to Python-implemented services

StateMachine-0.16.0:
- StateMachineListener: added method onEvent
- StateMachine: added RPC method sendEventByName for easier handling
- StateMachine: added more output of python exception details
- StateMachine: added missing parsing of executable content in parallel and final states
- StateMachine: added locking python GIL when notifying python listeners
- StateMachine: added notifying listeners on event
- StateMachine: minor bugfixing
- StateMachinePy: added exposing of TransitionTarget, Transition, StateMachineListener
- StateMachineTest: added method onEvent

application/FlowControl-0.11.0:
- added method onEvent
- added output of listener callbacks on channels
- added multi instance ping pong test

audio/WavePlayer-0.12.0:
- changed multipath split characters from '\t' and ' ' to ',' and ';'
- added optional list of directories which will be searched for random playing of files

communication/JSONRPCServer-0.14.0:
- Override Unit::process(const Timer&) instead of deprecated Unit::process()

communication/Nexus-0.14.0:
- Override Unit::process(const Timer&) instead of deprecated Unit::process()

image/ImageRectification-0.10.0:
- adapted to split CameraParameters/CameraGeometry
- ImageRectificationUnit's default output image size is input image size
- OmniToPanoramaUnit: moved orientation of cylinder in camera coordinates to PanoramaCameraIntrinsic

localization/PersistentLocalization-0.10.6:
- Override Unit::process(const Timer&) instead of deprecated Unit::process()

localization/Poseidon-0.18.2:
- added user defined file permissions for persistence files
- added RPC method parameters documentation

mapping/CostMapper-0.16.0:
- Distance-based cost generation is available as a generic mixin 'DistanceMapper' to be used by CostMapper implementations.
- Added RPC method parameters documentation.

mapping/MCFLoader-0.13.1:
- added RPC method parameters documentation

mapping/OccupancyGridLoader-0.11.0:
- removed legacy methods
- added RPC method parameters documentation

mapping/OccupancyGridMapper-0.13.0:
- OccupancyGridMapperWithShape can use a specific footprint as decay area
  (e.g. only forget obstacles in front of robot)
- Override Unit::process(const Timer&) instead of deprecated Unit::process()

mapping/OccupancyGridMappingModule-0.13.1:
- added RPC method parameters documentation

mapping/OccupancyGridMerger-0.10.1:
- changed the annotation of the added 'MergedMap' alias to include reference to source code

mapping/OccupancyGridSaver-0.10.0:
- override MicroUnit::initialize() instead of deprecated onInitialization()

navigation/Pilot-0.39.0:
- SpeedObjective now checks every sample from the given trajectory for a velocity task, not just the last
- made compile with gcc 7.3
- removed EstarPlanner.package file to avoid confusion (EstarPlanner is an element of package Pilot)
- PathObjective: Added new channel 'PathChangedSignal', which signals significant changes in the path
- PathObjective: Exceptions from CostMapper::getDirtyRegions() are catched, triggering a complete planner update
- RewindRecoveryTask is exposed in RewindRecovery.h
- added RPC method parameter documentation

sensors/AsusXtion-0.12.0:
- Override Unit::process(const Timer&) instead of deprecated Unit::process()

sensors/CameraCalibration-0.13.0:
- calibration tool allows choice to use 0-6 radial distortion parameters (k1-k6)
- calibration pattern size setting is saved and restored with workspace
- calibration tool can visualize the point coverage (positions of all calibration points in image)
- enabled use of circle grid calibration pattern with OpenCV3

sensors/PinholeIntrinsicPublisher-0.11.0:
- added rpc methods, therefore renamed methods

sensors/UEye-0.12.0:
- Override Unit::process(const Timer&) instead of deprecated Unit::process()
- Added configuration variable ueyeCameraID to UEyeUnit.xml

tutorials/WaypointVisitor-0.13.0:
- WaypointEditor:
 - added option for automatically changing the rotation of a waypoint in the direction of the next one
 - load MCF file from menu
 - consistent Waypoints sizes on insert
 - keep current waypoint selection during camera movement
 - added 2 buttons for rotating the view (counter)-clockwise
- WaypointVisitor:
 - override Unit::process(const Timer&) instead of deprecated Unit::process()
 - interrupt() updates status as 'Stopped' on WaypointVisitorEvent channel
 - fixed usage of property 'Order' in example configuration file
 - added property WrongDirectionCost
 - added 'Velocity' and 'StraightPath' properties to waypoints: optionally command a VelocityWaypointTask
   instead of a Position+OrientationTask, extended addPoint/teachPoint methods accordingly
 - added RPC method parameters documentation

LocalizationDataTypes-0.21.0:
- Added label to RTLS anchors
- Renamed RTLS anchors to beacons
- mira::localization::MarkerMap is an std::multimap now,
  so we can store multiple marker instances with same id
- made compile with gcc 7.3

actors/FlirPTU-0.12.0:
- Override Unit::process(const Timer&) instead of deprecated Unit::process()

application/CommonScripts-0.11.1:
- added optional KeepDistanceTask
- fixed minOnTime

can/CANDriver-0.13.2:
- Fixed crash in initialization, which occured when no CAN device was connected.

localization/BarcodeLocalization-0.10.0:
- Renamed old version to BarcodeLocalizationLegacyUnit
- Added new version of BarcodeLocalizationUnit with more features
- Override Unit::process(const Timer&) instead of deprecated Unit::process()

mapping/ObstacleMapper-0.10.0:
- Override Unit::process(const Timer&) instead of deprecated Unit::process()

navigation/PilotNogoAreas-0.14.0:
- changed lib name for NogoMapper to reflect that costmappers
  are running in CostMapper unit, not Pilot anymore

navigation/PilotSmoothTransition-0.9.0:
- initial version

robot/SCITOSSimulator-0.14.1:
- Added simulation of battery percentage
- made compile with gcc 7.3

sensors/RangeFinder-0.15.0:
- Added support for LeishenLidar
- Override Unit::process(const Timer&) instead of deprecated Unit::process()
- Added support for UDP based range finders
- Added support for LeuzeRSL400

sensors/RangeFinderSimulator-0.10.1:
- resolved a "comparison between signed and unsigned" issue

Additional information