.. Copyright (C) European XFEL GmbH Schenefeld. All rights reserved. *************************** What's New in Karabo 2.12.0 *************************** This section shows the new features in Karabo 2.12.0, compared to 2.11.0. The release date of Karabo 2.12 was October 1, 2021. Summary – Release highlights ++++++++++++++++++++++++++++ - GUI: Project devices can be moved up and down with a context menu action - GUI: Topology filtering based on device status (ERROR, UNKNOWN, OK) - GUI: Due to segmentation faults on Ubuntu 20, the library Qt is downgraded to 5.9 - GUI: Added context menu action on the project device server to sort its devices alphabetically, or by either domain, type or member - GUI: Offline project devices are now loaded lazily giving a significant project loading boost - GUI: View of Karabo Clients added to the application menu (i.e. command line interfaces and DOOCS bridges). - GUI: It is now possible to format (weight, size) the device state string on the `StateColor Field` - GUI: State color field string formatting - GUI: Configurable horizontal label alignment - GUI: A tool to find the project containing a specific device from its deviceId (DOC inspired). This feature requires a projectManager of version 2.12 or higher to be deployed. - MDL: Forward slotInstanceUpdated signal to device children (relevant to monitoring devices) (backported to 2.10.X) - MDL: ImageData and NDArray generated from MDL devices can now be processed by C++ and Bound Processors (backported to 2.10.X) - C++: Moved the building system from netbeans to CMAKE - All APIs: - instanceInfo allows the "unknown" status - Experimental support of Redis as a Broker - Experimental support of MQTT as a Broker Breaking Changes ++++++++++++++++ - MDL: DeviceNodes cannot have *properties* and *commands* anymore - MDL: Tables validate now their minSize and maxSize attribute - C++: The typedef for ``uint64`` has been removed from `karabo/util/karaboDll.hh` (since incompatible with opencv library headers). Change of behaviour +++++++++++++++++++ - Since 2.12.0, slots of Bound Python devices called with fewer arguments than expected return an error reply to the caller. Before 2.12.0, the slot function was called anyway, using ``None`` for the missing arguments. - MDL: Macros started from command line are now declared as **clients** in the instanceInfo and will therefore not appear in the **SystemTopology** of the GUI Detailed Merge-Log ================== Bound/cpp core ++++++++++++++ - C++: Tune warning message !5597 - C++: Add non const ImageData::getData() !5609 - C++: Validate states and alarm values !5643 - C++: Boosting Hash::set performance by enabling move semantics !5635 - C++: Move semantics for Hash::setAttribute !5656 - C++: Avoid C++14 in header !5669 - C++: Hash with move semantics in constructor !5664 - C++: remove unused forward declaration in validator !5655 - C++: CMake project for CppLongTests. !5678 - C++: Move semantics for Hash::setAttributes !5720 - C++: Fix TimeDuration::operator double() !5726 - C++: broker message order test !5719 - C++: InstanceInfo unknown !5727 - C++: Speed-up hash deserialisation !5736 - C++: Report successful influx connection to log file !5733 - C++: Fix race in State::fromString initialisationAlso move from `map` to `unordered_map`. !5761 - C++: speed-up Schema serialisation !5737 - Improve MQTT support !5790 - C++: speed up reading Hash from xml !5742 - C++: Avoid handler copy in Strand !5794 - C++ integration tests: Increase data delay for more reliable queueDrop test !5802 - C++ code coverage report generation for cmake based builds. !5785 - C++: Increase default MQTT timeout !5808 - C++ MQTT: Timeouts logged, timeout period configurable via environment !5813 - C++: Fix templates* scripts !5846 - C++: Keep handlers of InputChannel if re-injected !5852 - Bound: Properly wrap handlers !5803 - Bound: Do not provide None if slot is called with too few argsProvide exception instead. !5483 - Bound: Support Unknown instanceInfo status !5718 - Bound: Properly wrap all input-/output channel handlers !5797 Dependencies and deployment +++++++++++++++++++++++++++ - DEPS: Fix build of dependencies 'redisclient' and 'pugixml' when there's no system level 'cmake' installation. !5637 - DEPS: karabo install skips pip dependencies !5702 - DEPS: Add AMQP dependencies !5789 - CMake: Fix for add_dep function in cmake Framework project. !5570 - CMake: Adds EXACT to version requirement for Boost library components. !5600 - CMake TOOLS: activate actions can launch custom scripts !5615 - CMake project for building the Karathon library. !5661 - CMake: Set of template files for CMake-based device projects. !5619 - CMake: Default cpp template, 'minimal', now based on cmake. !5783 - CMake: Clean up duplicate code in cmake_auto_build_all.sh and adds missing .install.sh to template. !5804 - CMake support for auto_build_all (no dependency on build/netbeans) and some fixes to CMake projects. !5711 - CPP-DEVICE: CMake Device Template fixups !5826 - BUILD: clean up un-necessary directories !5618 - BUILD: fix build details !5800 - FIX: .build-python.sh uses the right path !5788 - Fix bug for deriving install tree path of header files when the src tree path has more than one 'karabo' directory. !5805 Documentation +++++++++++++ - Document more for 2.11 !5567 - First version of the mergelog for 2.11 !5589 - Fix maxNumData parameter info in getHistory docstring. !5575 - Fix broken reference to image file in vscode.rst. !5594 - Document 2.10.5 !5512 - DOC: Document required non-concurrency of writeChannel !5593 - DOC: Gui installation after user feedback !5634 - DOC: use a different installation mode !5631 - DOC: build system refactor steps !5599 - DOCS: Add a bit more documentation to whats new !5636 - Document releases of 2.11 !5721 - DOC: Update 2.11.2 docs !5730 - DOC: Document 2.11.3 !5768 - DOC: Document MDL library functions !5828 - DOCS: fix doc generation !5781 - DOC: Document breaking MDL changes !5820 - DOC: Remove formatting and broken links !5782 - DOC: Fix "miniconda-cmake" build and "vscode" documentation. !5860 Tests +++++ - CI: fix artifact location for cmake !5821 - CI: do not install isort !5822 - CI: Output coverage report on GUI tests !5823 - CI: new path in the report section !5824 - CI: remove http proxy settings !5847 - CI: make the GUI tests fails when necessary !5596 - CI: remove support for Ubuntu 16 !5566 - Debug GUI CI !5617 - Bound integration test: fix slotGetTime usage !5640 - TEST: make the GuiServer test more robust !5644 - TESTS: Fix intermittent failures of cli_test.test_autodisconnect for JMS. !5868 Core Devices ++++++++++++ - GUI Server: Always use reason instead of failure reason !5581 - FIX: Drop early data on InfluxDb !5779 Middlelayer Core ++++++++++++++++ - MDL: Support yield from getDevice and add tests !5573 - MDL: Forward slotInstanceUpdated to device children !5582 - MDL: Macros are clients if run standalone !5558 - MDL: Change the default timeout in the DeviceNode !5611 - MDL: Shutdown IPython console on slotKillDevice !5604 - MDL: allow timeServerId on devices !5648 - MDL: Fix for 'waitUntilNew' tests !5798 - MDL: Fix wrapping in @coslot !5807 - MDL FIX: Use custom eventloop's create_task !5786 - MDL: Modify macro disconnect test !5732 - MDL: Support unknown instance Info !5571 - MDL: First device server test !5697 - MDL: add __classId attribute to Hash-like elements !5784 - MDL: conditional import of the existdb library !5793 - MDL MQTT: Silence paho client !5809 - MDL: make NDarray more robust !5810 - MDL: make image data more robust !5818 - MDL: optimize node serialization !5815 - MDL: Enable table size validation !5817 - MDL: Fix test_cross integration tests for JMS broker !5819 - MDL: Enable to change log level for device server !5830 - MDL: Remove device node properties and commands !5769 - MDL: Implement generic project manager interface !5812 - MDL: Better inline documentation for gather !5827 - MDL: Validate paths of startup configuration !5845 Graphical User Interface ++++++++++++++++++++++++ - GUI: Remove unused instance gone code !5565 - GUI: Enhance vector display in the table, remove white spaces !5578 - GUI: Configurator performance increase !5407 - GUI: Optimize project with item never has children flag !5564 - GUI: Add size policy to label widgets !5583 - GUI: Slightly refactor the move of messageboxes to the mainwindow !5595 - GUI: Fix attributes test in configurator !5598 - GUI: Don't allow pirate macro's in the topology !5557 - GUI: Lazy offline project devices !5561 - GUI: Enable to view clients in topology dialog and to shut them down !5569 - GUI: Clean a bit the topology !5601 - GUI: Minor cleanup for the system topology !5606 - GUI: Remove all nodes in the topology if not needed anymore !5605 - GUI: Account for lazy schema loading when clicking on project configurations !5608 - GUI: Performance update for project, define roles !5400 - GUI: Remove bookkeeping of model indexes for navigation models !5580 - GUI: Pop early in the topology !5629 - GUI server: turn off logs on request !5590 - GUI: subscribe to logs only if the panel is open !5592 - GUI: Support jpeg decoding in the GUI (openCV) !5628 - GUI: Enable to sort devices in the project alphabetically, by domain/type/member !5632 - GUI: Enable to move devices inside the project !5616 - GUI: Add instanceInfo icons !5633 - GUI: Move help to the right in app menu !5641 - GUI: More separate macos testing !5639 - GUI: Fix project icon !5638 - GUI: Remove unnecessary layout change !5627 - GUI: Postpone request queue after login !5645 - GUI: Version independent code between 5.9 and 5.12 !5647 - GUI: Adjust topology to latest review !5650 - GUI: Downgrade the Qt dependencies (qt, pyqtgraph) !5649 - GUI: Fix images not showing properly if ROI is selected !5657 - GUI: Maintain selection on header double click !5659 - GUI: Fix weakref handling in reconfigure reply !5665 - GUI: Protect against not found exceptions !5667 - GUI: Enable state color field to have font formatting !5663 - GUI: Protect font sizes on the field from editing faulty values !5673 - GUI: Move pyqtgraph back to 0.11.1 !5672 - GUI: Protect unregister from mediator events !5677 - GUI: Protect line edit from wrong input !5681 - GUI: Add horizontal alignment to label widgets !5579 - GUI: Graceful discard in messagebox unregister !5680 - GUI: Protect scene view delete on close event from races !5676 - GUI: Protect deferred trend graph updates !5675 - GUI: Enable to show uint16 images (bpp12) !5691 - GUI: Update alarm column on alarm update !5694 - GUI: Protect show event of scene panel !5698 - GUI: Protect levels dialog from false input !5699 - GUI: Mediator test and discard in event map !5701 - Common: Increase const coverage definition !5696 - GUI: Show server in topology if requested !5695 - GUI: Pop device node graceful in topology !5690 - GUI: Add fast path filter in SystemTopology !5709 - GUI: Add unknown exception test case to message parsing !5712 - GUI: Redirect official RTD documentation !5486 - GUI: Remove classId check on configuration retrieval !5714 - GUI: Add project item model test !5708 - GUI: Realign topology hash according to host names !5670 - GUI: Remove flake8 warnings from setup !5725 - GUI: Clean max number limit and move away from const !5731 - GUI: Add a bunch of topology tests !5735 - GUI: Provide configuration drop handler test !5729 - GUI: Refactor and cleanup dialogs !5724 - GUI: Test the base application !5738 - GUI: Remove state icon code !5740 - GUI: Provide unit test for network singleton !5739 - GUI: Validate navigation panel search entries !5722 - GUI: Test binding default !5745 - GUI: Test topology utils !5743 - GUI: Link widgets use label model but dont have alignment !5746 - GUI: Protect for XMLDefModel grouping !5723 - GUI: Protect QSettings during tests !5751 - GUI: Test the alarm panel !5744 - GUI: Test the log panel and log widget !5750 - GUI: Fix moving items in design mode when scene view is small !5577 - GUI: Handle the subscribe logs reply of the gui server !5755 - GUI: Test the popup widget !5747 - GUI: Test the tipps & tricks wizard !5756 - GUI: Use has_changes in comparison dialog for configurations !5760 - GUI: Test the login dialog !5764 - GUI: Test the format label dialog !5766 - GUI: Test the app configuration dialog !5759 - GUI: Test the about dialog !5765 - GUI: Test the configurator more !5762 - GUI: Test the client topology dialog !5773 - GUI: Test the pen dialogs !5772 - GUI: Test list edit dialog !5771 - GUI: Test the device capability dialog !5774 - GUI: Table view and model tests for base table controller !5770 - GUI: Test the configuration from name dialog !5775 - GUI: Fix configurator blank page !5767 - GUI: Test the configuration from past dialog !5776 - GUI: Test the navigation panels more through !5758 - GUI: Enable to subclass table widgets for filter models !5752 - GUI: Adds version information to about dialog of Karabo GUI. !5806 - GUI: Project configuration dialog erase attributes on sanitize !5778 - GUI: Filter for health status !5693 - GUI: Image Item carefuly cleaning !5550 - GUI: Load project with a specified device. !5825 - GUI: Provide message box test and fix the copy&select option !5829 - GUI: Fix bug for long-running searches of projects by device_id part. !5831 - GUI: Enable to configure logs via slotLoggerPriority !5832 - GUI: Fix button sync in update dialog !5833 - GUI: Add more imports to graph image api !5834 - GUI: Refactor the array function for bindings !5835 - GUI: Protect against missing archive in instanceInfo !5837 - GUI: Tooltip timestamp protection in detector graph !5839 - GUI: Change Exception catching in eval widget !5836 - GUI: Remove explicit state code configurator !5842 - GUI: Notify in logging panel project conflicts !5840 - GUI: Enable to copy & paste from application log !5841 - GUI: Protect graph view configuration from config without items !5838 - GUI: Add None checks on coercing boolean !5844 - GUI: Move the signalServerConnectionChanged !5851 - GUI: Fix direct attempt for karabo cinema !5854 - GUI: Change the logging colors, make warning more visible !5853 - GUI: Fix theatre direct connection !5858 - Display device ids matching a given id part in "find projects with device". !5849 - GUI: Enable token to be in params in the generic protocol !5859 - GUI: Test the sticker widget dialog !5843 - GUI Protocol: use requestGeneric to call ProjectManager's slotListProjectsWithDevice. !5856 - GUI: Protect against wrong state values in table !5862 - GUI: Enable quick delete in project with hotkey !5863 - GUI: Order ui files for project dialogs !5864 - GUI: Adapt sticker test for macOS !5866 - GUI: Adapt ui path in setup file !5865