26/2/2023 ola-0.10.9
 Features:
 * Python 3 compatibility across the board (including the RDM Responder Tests)!
   #1506
 * Support for the JMS USB2DMX PRO V2.1 device via the FTDI plugin #1728

 API:
 * Python: Add a fetch current DMX example.

 RDM Tests:
 * Python 3 compatibility of the RDM Tests #1599
 * Fix a longstanding bug in the GetMaxPacketSize RDM test around timeouts

 Bugs:
 * Fix some tests not working on Big Endian machines because our RPC is encoded
   with native format and those tests used sample data from a Little Endian
   machine
 * Renamed EndpointNoticationEvent(sic) to EndpointNotificationEvent in the
   E1.33 EndpointManager code
 * Check if librt exists and add it to the build if required
 * Ensure we can build on later Protobuf and C++ and silence deprecation
   messages where required
 * Fix the NetBSD build
 * Clarify the usage of some of the various Enttec Open DMX USB plugins
 * Relax the timing on the ClientWrapperTest so it doesn't fail occasionally
   #1714
 * Correct the documentation of some existing limits in the E1.31 plugin
 * Fix some undefined behaviour in TimeoutManager::ExecuteTimeouts #1726
 * Fix UARTs on Debian Bullseye #1749
 * Fix Python version detection for versions > 3.9 #1755, #1780
 * Update Angular and Angular-Route versions used by the new web UI and add
   workaround to be compatible #1782 Debian #1016447
 * Significantly reduce the delay when using StreamingClient with EPoll and
   multiple universes #1793

 Internal:
 * Add more debugging so we can tell why setting the baud rate failed
 * Replace "currentThread" with "current_thread" in Python since the former has
   been deprecated
 * Fix lots more internal typos and grammar
 * Add unit tests for more of the Python RDM Test classes
 * Sort the Python imports with isort

22/11/2020 ola-0.10.8
 Features:
 * Support DragonFly BSD
 * Add another Debian test
 * Add the E1.33 NACK Reasons
 * Add the E1.37-7 NACK Reasons
 * Use clock_gettime's CLOCK_MONOTONIC if available
 * Collect the PDL size in the model collector

 API:
 * Deprecated Clock::CurrentTime and added Clock::CurrentMonotonicTime and 
   Clock::CurrentRealTime. Occurrences of Clock::CurrentTime have been
   replaced with either variant as applicable.

 RDM Tests:
 * Fix a bug in the RDM tests to ensure they can cope with 255 personalities
   #1508
 * Only add valid network interface IDs to the test list so future tests don't
   fail
 * Add a label to the GetOutOfRangePersonalityDescription test

 Bugs:
 * Fix a few more minor documentation spelling errors found by codespell
 * Point to the main site rather than the wiki for RDM test help
 * Fix the build on FreeBSD 10.0, 10.4 and 11
 * Make PID store loading more robust
 * Clarify some of the man page options for olad
 * Fix some dead links in documentation
 * Properly close socket on destruction of Python OlaClient
 * Fix various Python 3 compatibility issues
 * Try and fetch index and type via sockaddr_dl struct for better *BSD support
 * Backport some Debian changes
 * Use C++11 if required by random #1477
 * Correct uartdmx plugin documentation for the example UART #1320
 * Ensure we don't return unsuitable network indices via RDM #1478
 * Ensure a non-existent UID exits with a non-zero exit code
 * Fix a bug in how we simulate RDM responses and collisions
 * Fix an RDM discovery bug for how we handle phantom UIDs
 * Ensure _close_callback is assigned before we might need to run it in the
   Python API
 * Fix a bug with the Python ola_rdm_get and PROXIED_DEVICES display
 * Renamed RESONSE_INVALID_DESTINATION(sic) to RESPONSE_INVALID_DESTINATION in
   the ArduinoWidget code
 * Fix compatibility with GCC 9 #1553 Debian #925793
 * Ensure the GPIO plugin correctly writes to the last configured pin
 * Fix compatibility with ncurses 6
 * Fix compatibility with Protobuf 3.7 and newer (tested with up to 3.12.2)
   #1550, #1634
 * Rename CircularDepdendancyException(sic) to CircularDependencyException in
   the Python RDM Test code, also the relevant comments
 * Fix a minor longstanding logging bug with Avahi subtype registration errors
 * Fix Enttec USB Pro Mk2 firmware >=4.15 RDM Discovery #1631
 * Fix compatibility with libmicrohttpd v0.9.71 and newer #1650
 * Fix some Doxygen escaping
 * Rename AppendMultipler(sic) to AppendMultiplier in the RDM messaging code
 * Fix a few edge cases in ola_trigger around whitespace in the config files
 * Fix compatibility with clang 7 and newer (tested with up to 11) #1564

 Internal:
 * Replace "readdir_r" with "readdir" since the former has been deprecated
 * Add a unit test for the functions that used readdir_r before
 * Add a new 'make flake8' target #1619
 * Add a new 'make cpplint' target
 * Add a new 'make lint' target which runs the flake8 and cpplint runs

13/7/2018 ola-0.10.7
 Features:
 * Allow multiple KiNet ports to be patched to the same universe #1414
 * Allow multiple FTDI ports to be patched to the same universe
 * Support libftdi1 as well as libftdi0 in FTDI DMX #1012 Debian #810374
 * Support FTDI DMX via libftdi1 on Windows

 RDM Tests:
 * Fix a bug in the RDM tests when a responder supports sensor PIDs #1388
 * Fix a bug in imports for rdm_responder_test.py

 Bugs:
 * Fix the build on Windows
 * Entire codebase now passes codespell testing
 * Fix a Python 3 bug in the API
 * Fix a few longstanding bugs in the Python ola_rdm_discover
 * Correct the OSC config option name for output format in the documentation
 * Use top_builddir in more places in the build
 * Use libusb_set_option where available
 * Fix the udev rules
 * Downstream Debian fixes
 * Fix an incorrect response if we have the sensor PIDs but no sensors
 * Stop trying to build opendmx kernel plugin on Windows
 * Prefer Avahi over Bonjour for our DiscoveryAgent, in case the Bonjour
   version is actually just Avahi's compatibility layer
 * Clean up the libolaserver pkg-config file

 Internal:
 * Various minor log formatting tidying up

07/01/2018 ola-0.10.6
 Bugs:
 * Renamed fempto(sic) to femto in the RDM code (C++ and Python)
 * Renamed terra(sic) to tera in the RDM code (C++ and Python)
 * Fixes for RDM test server forward compatibility with later JQuery versions
 * Fix a man page typo
 * Fix a longstanding copy-paste typo in the Python client's RegisterUniverse
   function
 * Increment the Transaction Number for each Art-Net RDM packet #189
 * Fix lots of minor documentation spelling errors found by spellintian and
   codespell
 * Renamed protocol convertor(sic) to protocol converter in the RDM code (C++
   and Python)

17/07/2017 ola-0.10.5
 Features:
 * Make some error logs more verbose

 Bugs:
 * C++11 compatibility fix (for cppunit 1.14.0) #1244
 * Always print frames in ola_rdm_get/set, even if we get an error
 * Ensure man files ship in the correct packages #1276
 * Check protobuf is old enough, until we fix #1192

21/05/2017 ola-0.10.4
 Features:
 * Add more help regarding the ArtNet use_limited_broadcast option

 Bugs:
 * Ensure Pathport node actually uses configured IP #1166
 * Improve some debugging around flag parsing #1198
 * Disable warnings for readdir_r deprecation until we can rewrite our code to
   stop using it. Related to #1055
 * Stop replacing -I with -isystem and correctly work around the resultant
   errors #1125
 * Exit, rather than continuing, if ola_throughput failed to send DMX
 * Implement OLA_FALLTHROUGH macro for adding fallthrough attributes to 
   switchcases in gcc versions higher than 7 #1193 Debian #853583
 * Fix Protobuf 2.6 not building on the latest OS X
 * Update some URLs in the Windows build documentation
 * Skip interface count checks on Windows, as it may fail them if it's not on a
   network due to a lack of loopback interface
 * Fix LibUSB code on Windows, especially when the Hotplug functionality exists
   but isn't available
 * Support wireless interfaces on Windows since Vista
 * Add a cast to fix an error when running execlp
 * Ensure configure checks for tcmalloc's presence before adding it to the libs
   when asked for #1201
 * Add some more detail to the Logic RDM sniffer and Enttec RDM USB Pro sniffer
   documentation

06/12/2016 ola-0.10.3
 Features:
 * Add a message explaining why the auto start test may fail

 Bugs:
 * Work around a clang warning in our protobuf generator code
 * Force gnu++98 mode if compiler supports 98 and 11 modes so we keep
   std::auto_ptr #1028 Debian #831103
 * JsonPatchParser.h tries to include a project header file; move the
   OptionalItem header to includes to resolve #1086
 * Reset the client socket once we've closed it, so it can be re-used
 * Silence a warning in the code so it builds with Protobuf 3 #1110 Debian
   #835433
 * Work around <ernno.h> include failure on MIPS Debian #836383
 * Update GPIO and SPI pin limits for CHIP as its pin numbers are higher #1095
 * Clarify some details in ola_set_dmx and ola_streaming_client help #1109
   Debian #830972
 * Fix a logging error regarding USB product name detection

 Internal:
 * Add more debugging of opening and acquiring locks

21/5/2016 ola-0.10.2
 Features:
 * Add support for Enttec USB Pro Mk 2 B
 * Make DNS-SD functionality optional at build time
 * Name multi-port Enttec Pro Mk 2 ports to match the labelling on the device

 RDM Tests:
 * Correct expected NAck type in GetSettingDescriptionsMixin, as spotted by ETC
 * Fix the mute all devices test for controllers that don't support discovery

 Bugs:
 * Allow one slot devices to correctly be set to any start address, including
   512
 * Check Python numpy exists during configure if required
 * Allow the PID location to be set in the rdmpro_sniffer
 * Actually decode PID param data when requested when using the
   logic_rdm_sniffer
 * Correct the operation of the --full-rdm option in the logic_rdm_sniffer,
   this inverts how it used to behave
 * Fix a segfault with the client if auto start is off or olad fails to start

29/2/2016 ola-0.10.1
 Features:
 * Add support for Osram Lightify products via a Philips Hue bridge
 * Add Stellascapes Lightwidgets Number1 PIDs
 * Add a warning to the Web UIs if Javascript is disabled.

 Bugs:
 * Check if a device exists before trying to acquire a UUCP lock file for it #1006
 * Fix the build on FreeBSD
 * Fix the build when using the musl C library
 * Python RpcChannel incorrectly decodes message header on big-endian machines
 * Fix a configure warning on OpenBSD
 * Allow you to set DMX address of a one slot device to 512 #1042. The JSON API now returns min and max inclusive
 * Switch to pkg-config for cppunit detection #1043

3/1/2016 ola-0.10.0
 Features:
 * Add better logging for open()
 * Added more man pages.
 * Added a DMX keypad to the new web UI
 * OLA Trigger config to control Philips Hue Lux lights
 * Added hotplug support for usbdmx devices
 * Add support for JaRule widgets.
 * Add UUCP locking support #888
 * Fix issues encountered when packaging for openSUSE and fedora #904
 * Add support for the Nodle U1 widget
 * Add validation of OSC output format types
 * Add an example Stdin handler to the documentation
 * Increase the port limit for E1.31 up to 512 from 128

 RDM Tests:
 * Add some more E1.37-2 tests
 * Fix event handling in the RDM test server #948
 * Mute all devices before running the DUB tests
 * Add timing stats to the RDM responder tests

 Bugs:
 * Remove a number of obsolete Autotools macros, we now require Automake 1.11.2
   #931
 * Work around the case where an Enttec USB Pro widget doesn't respond #341
 * Fix a crash if a client disconnects during RDM discovery #950
 * Stop e131_transmit_test from segfaulting #966
 * Fix the build on Windows
 * Split libolaserver into two parts to stop dpkg-shlibdeps warnings

 Internal:
 * All the Python code now passes flake8 checking
 * The new web UI now passes jscs checking
 * Switched to using the new command line flags module in ola_rdm_discover
 * Move the ACN code to libs/acn

30/9/2015 ola-0.9.8
 Features:
 * Add support for the DMXter4A
 * Tidy the output of the Python ola_rdm_get for supported_parameters

 RDM Tests:
 * Fix a bug related to split levels not being supported in the dimmer PIDs
 * Allow NR_UNSUPPORTED_COMMAND_CLASS for SET DMX_ADDRESS when the address is
   not required
 * Switch from a warning to an advisory if it's a manufacturer specific use in
   GetSensorDefinition
 * Fix some other minor RDM test bugs

 Bugs:
 * Fix some Xcode build errors
 * Fix the build on Windows
 * Fix a bug in Artnet universe mapping #856
 * NACK requests for IPv4 default route PID with data
 * NACK with format error requests for DNS PIDs with data
 * Fix a bug regarding stack traces error messages with Python RDM gets #884
 * Support 0.9.43 of microhttpd

13/7/2015 ola-0.9.7
 Bugs:
 * RDM NACK codes displayed with incorrect byte ordering in the C++ client #812
 * Fix endian issues on s390x and PPC architectures.
 * Fix ShowNet endian issues.
 * Add some missing files to the tarball.
 * Restore binary compatibility with 0.9.5 #826

30/6/2015 ola-0.9.6
 Features:
 * Default to using epoll() rather than select() if it exists,
 * Default to the async libusb implementation in the usbdmx plugin.
 * Added support for the APA102 family of SPI pixels.
 * Allow plugins to be enabled/disabled from the new web UI & CLI tools #682.
 * Add an option to display the frame and timing data in the RDM CLI tools
   where available.
 * Add additional C++ client documentation and examples.
 * Support an overrides.proto file to load system specific PID data #732.
 * Respect UUCP lock files before opening devices #716.
 * Initial partial E1.37-2 support in the web UI.

 API:
 * Python: Fix a bug where callbacks weren't run if the operation failed.
 * Python: improve Python 3 compatibility.
 * Add patched ports in Universe protobuf message.
 * Python: Add a patch/unpatch example.
 * Python Add GetCandidatePorts and an example.

 RDM Tests:
 * Initial E1.37-2 tests.
 * Fix a bug in the SetDeviceHours test for devices that NAck set DEVICE_HOURS
   with a NR_WRITE_PROTECT.

 Bugs:
 * Fix port with unset universe appearing as bound to universe 0 in the Python
   client.
 * Ensure universe names and LTP priorities are always written to the config
   file #661.
 * Stop tests from failing when no non-loopback interfaces are present #763
   Debian #769670.
 * Fix various configure script behaviour issues #773.
 * Fix build issues with GCC-5 #765 Debian #778038.
 * Restore LIBS when we can't find the Saleae library during configure.
 * Fix the async libusb Eurolite Pro implementation.

 Internal:
 * Rename the method Source to ConfigLocation for Preference classes and
   associated changes.
 * Major cleanup of RDM code.
 * Switch to using pthread_equal rather than operator==.
 * Switch to using Dot for Doxygen diagrams where present.

1/3/2015 ola-0.9.5
 Features:
 * Work on a new Web-UI which is built with AngularJS
 * Added E1.37-2 support to the SPI plugin RDM responder
 * USB DMX plug now works on Windows (Scanlime Fadecandy tested working)
 * Update the deb package's udev rules

 Bugs:
 * Fix finding ola_protoc_plugin when cross-compiling.
 * Fix ncurses flags issues between configure and the Makefile.
 * Fix some more build issues on Windows XP
 * Fix our E1.37-2 implementation to match the E1.37-2 standard.
 * Fix the old website's RDM patcher identify function

29/1/2015 ola-0.9.4
 Features:
 * Added support for hotplugging USB devices using the usbdmx plugin, #374.
 * Added support for setting the thread scheduling options, #399.
 * Added support for the Open Pixel Control protocol, #502.
 * Added support for the Scanlime Fadecandy device, #503.
 * Added a GPIO Plugin, closes #299.
 * Added support for the Open DMX clone from KWMATIK.

 API:
 * Plugin libraries that were previously installed under $PREFIX/lib/olad/ are
   now in $PREFIX/lib/

 RDM Tests:
 * Fix a bug with the GetPresetInfo test around display multipliers.

 Bugs:
 * Add a workaround to make the Windows HTTP server more responsive.
 * Fixed defects detected by Coverity Scan.

 Internal:
 * Remove the SLP code since it's no longer required for E1.33.

16/11/2014 ola-0.9.3
 Features:
 * Send the E1.31 Stream Terminated message on shutdown and/or port unpatching.
 * Add support for the draft E1.31 discovery protocol.
 * Switch the dummy responder which implements the E1.37-2 PIDs to their final
   values.
 * Add the ability to whitelist rather than blacklist plugins during configure
   (via --disable-all-plugins) and switch the Windows build to this method.
 * Convert ola_trigger to our flags module; change it's default universe value
   to be 0 to align with other programs.
 * Make the ola_trigger config syntax more flexible, including dots in program
   names and quoted program names #507
 * Add an instance name to OLA server and use it within E1.31 and the DNS-SD
   code to make multiple instances of OLA easier to track. #473

 Bugs:
 * Fix some build issues on OS X 10.5.8 #493
 * Fix some build issues on Windows XP
 * Use the correct ifdefs within plugin loading so we only load stuff if we
   asked for it
 * Fix the inability to Ctrl+C in ola_recorder

 API:
 * Update ola::network::IPV4Address and ola::network::IPV4SocketAddress so they
   sort the same regardless of endianness and in a logical way for humans.

 Internal:
 * Update the configure version method to ensure the version files are updated
   automatically when it changes.
 * Add a generic RpcServer class and switch OlaServer to use it.
 * SelectServer now runs any remaining pending callbacks during shutdown.

20/8/2014 ola-0.9.2
 Features:
 * Added --use-epoll which uses epoll() rather than select().
 * Added --use-kqueue which uses kqueue() rather than select().
 * Add some more additional slot definitions.
 * Allow the FTDI thread to switch from BAD to GOOD timing granularity.
 * Change the flags so the negated ones are --no-, this mostly affects --nohttp
   and --nohttp-quit in olad
 * Partial Windows support using MinGW. Build instructions are in
   README.mingw32.
   Working:
   * Building simple client applications
   * olad, with the web UI
   * Plugins: Dummy, ArtNet, ShowNet, ESP Net, SandNet, Pathport, OSC, KiNet
   * Python bindings
   Not working yet:
   * all other plugins, especially device-based ones (USB, serial, SPI)
   * Java bindings
 * Use the PID (process ID) and current time to init the random seed - #227
 * Standardise some flags, using --device consistently. This affects
   ola_artnet, ola_e131 and ola_usbpro
 * Remove -l long name short option from ola_artnet as it clashes with the
   global -l log level option. Remove the -e subnet short option too.
 * Allow the SPI RDM responder's device label to be set and store it in the
   preferences file.
 * Added new E1.33 example programs that follow the latest draft document.

 Bugs:
 * Don't build ola_protoc if --with-ola-protoc= is provided.
 * Fix the inter-test delay in the RDM tests to work with values less than 1s.

 Internal:
 * Changed to a non-recursive build. Reduced build times by 5-25%.
 * Convert more of our programs to our flags module
 * Standardise the bool flag behaviour to require an argument like
   string and int do, add a default bool for the old use case.
 * Standardise ArtnetConfigMessages to ArtNetConfigMessages and ripple related changes through.

21/6/2014 ola-0.9.1
 Features:
 * Pretty print IPV4 addresses within the Python RDM code.
 * Add some additional slot definitions and status messages.
 * Add a timestamp to model data filenames so they're unique.
 * Allow OSC ports to be looped.
 * Add the ability to reload plugins via RPC.
 * Added a plugin which uses the onboard UART.
 * Added a Python fade controller demo.

 API:
 * Change GetIdentifyMode to GetIdentifyDevice in the RDM API to clarify it's
   the IDENTIFY_DEVICE PID not the newer IDENTIFY_MODE one.

 RDM Tests:
 * Added the inter-test delay option to the Web UI.
 * Show transaction numbers in the responder tests to aid debugging
 * Don't warn about unknown slot definitions if they are manufacturer ones
 * Added a number of missing Get...WithData tests.

 Bugs:
 * Fix sensor numbering from 0 on web UI so it matches CLI
 * Fix the minimum and maximum level supported RDM tests
 * Stop the Python client throwing an AttributeError if the universe doesn't
   exist.
 * Ensure the RDM Model Collector works if the fixture doesn't have personality
   descriptions.
 * Only try and fetch supported params for manufacturer PIDs in the model
   collector.
 * Fix an issue with strings in hash maps on OS X 10.5
 * Ensure Rpc_pb2.py is always built.
 * Fix the recent code changes to work with FreeBSD, NetBSD and OpenBSD
 * Stop ola_trigger segfaulting at startup - #409

 Internal:
 * Convert stringstream to ostringstream where possible
 * Tidy up copyright messages so we're Debian compliant.
 * Correct FSF address within licenses
 * Removed #ifdefs from the installed headers.
 * Clean up the ShowNet code.
 * Added a JSON & JSON Schame parser.
 * Documented the RPC format.
 * First changes required to run on Windows.

1/3/2014 ola-0.9.0
 Features:
 * Added priority support for input ports - #259
 * Added DNS-SD registration support with both Bonjour and Avahi so that the
   OLA web UI appears as _http._tcp - #270
 * Added plugin for Renard serial protocol (Renard SS24, SS8, etc) - #277
 * Refactor sensor functionality in the software RDM responders and add a load
   average sensor to them and the SPI responder.
 * Add a class to represent MAC addresses and support for MAC address RDM types
 * Added pretty printing of sensor definition messages.
 * Added a --duration option to the show recorder - #255.
 * Add a warning if the firmware in an Enttec USB Pro widget doesn't support
   RDM - #275.
 * Print a warning if no Logic device is found when using the RDM sniffer.
 * Added support for the P9813 family of SPI pixels.
 * Show dashes in the CLI DMX monitor if a universe has fewer than 512
   channels.
 * Added initial support for the MilInst 1-553 interface.
 * Added a version option to all flags based commands; removed the -v verify
   short option from ola_recorder that clashed.
 * Added a dummy responder which implements the draft E1.37-2 PIDs.
 * Standardised all the following long arguments from _ to - in programs and
   completion: --skip_queued_messages --www_dir --log_directory
   --world_writeable
 * Standardised on --pid-location in Python programs and
   completion.

 API:
 * Added the ability to specify the priority of the DMX data in the C++ API -
   #266
 * Clean up of the C++ client API. deprecated ola::OlaCallbackClient.
 * Added a Version API.
 * Renamed DMXRecieved(sic) to DMXReceived in ola::Client
 * Renamed valiator(sic) to validator, incomming(sic) to incoming, mimimun(sic)
   to minimum and overiding(sic) to overriding, all of which may or may not
   have impact to APIs.

 RDM Tests:
 * Added more RDM responder tests to cover some slot related edge cases.
 * Log an error if we try and run an RDM test that doesn't exist.
 * Added the --inter-test-delay option
 * Added checks to the RDM tests to flag if non-printable characters are
   returned in any RDM strings - #262.
 * Fixed bugs in the MuteDevice, Fail & Startup mode tests.

 Bugs:
 * Build fixes for OS X 10.9 - #265.
 * Build fixes for FreeBSD 10.0-BETA3.
 * Fix the web and CLI UIs so they work if strings from RDM devices have
   unprintable characters in them - #263.
 * Fix a bug in the KiNet plugin - #276

 Internal:
 * Cleaned up the autotools configuration, `make distcheck` now works.
 * Cleaned up public header files.
 * Added configuration for Travis continuous integration.
 * Switched to using a custom generator for the C++ RPC Code.
 * Split PID data into 3 files.
 * Added more code documentation, cleaned up some new linter warnings.
 * Added the DISALLOW_COPY_AND_ASSIGN macro.
 * Refactor load average function out into system utils.
 * Switch the SPI RDM responders to using the core personality management code.
 * Renamed SetDecription(sic) to SetDescription in ola::Flags

Documentation:
 * Changed links from google code to github.
 * Added more doxygen comments.
 * Added more man pages.
 * Updated README, CONTRIBUTING and README.developer

22/10/2013 ola-0.8.33
 * Fix the build breakage when using XCode 5 (clang 500)
 * Save the SPI pixel count during shutdown
 * Fix E1.31 merge timeouts - #256
 * Fixed 2 bugs in the RDM responder tests.
 * Fix a bug where OLA wouldn't receive on ArtNet universe 0 - #260
 * Expose the source priority in the C++ API

29/9/2013 ola-0.8.32
 * Added more RDM responder tests to cover E1.37-1
 * Print the UID, manufacturer, model description, software version and
   timestamp in the RDM test logs
 * Added pretty printing of slot info messages
 * Added support for new OSC formats
 * Added support for more than 4 ArtNet output ports
 * Added a simple ArtNet loadtest
 * Fixed a couple of bugs in the Dummy RDM responders
 * Added support for templates in the OSC target addresses.
 * Re-wrote the SPI backend with loads of new options.
 * Improved the performance of the RPC system on Linux, leading to a 1000x
   reduction in RPC latency and 4x speedup of the RDM tests.

12/8/2013 ola-0.8.31
 * Changed the max number of E1.31 ports to 128
 * Added support for the MilInst 1-463 interface.
 * Added support for the KMTRONIC usb device (ftdi clone).
 * Added more RDM responder tests for E1.37-1 PIDs
 * Display the OLA version in the RDM responder test output
 * Display the response param data length in the responder test output
 * Added new software RDM responders (Sensor, Dimmer, Moving Light, etc.)
 * Added slot info support to the software RDM responders
 * Updates to the Saleae Logic RDM sniffer
 * Fixed a crash when a USB device was unplugged - bug #248
 * Fixed sub device RDM request fan out - bug #246
 * Fixed universe garbage collection - bug #149
 * Added Bash completions of UIDs for the RDM commands
 * Change the examples and SLP programs to write errors to STDERR not STDOUT.
 * Renamed AllManufactureDevices(sic) to VendorcastAddress in UID interface
 * Add vendorcast and broadcast options to ola_rdm_discover.
 * Started commenting the codebase with doxygen
 * Added more man pages.
 * Added support for reset device to the web UI
 * Added more PIDs to the RDM model collector

16/6/2013 ola-0.8.30
 * Clean up olad signal handling to avoid race conditions.
 * Added support for the new Jese USB widgets
 * Fixed a bug in the python API which broke the RDM test server.
 * Fixed the E1.33 library install.
 * Add an OLA manufacturer specific PID to the Dummy RDM Responder.
 * Update the model collector to gather info on manufacturer specific PIDs.

29/5/2013 ola-0.8.29
 * Added KiNet output support.
 * Added support for the Karate USB devices.
 * More E1.33 enhancements
 * Added usage information to the json urls
 * Minor fixes to the RDM responder tests
 * Lint the entire C++ codebase.
 * Fixed various flaky unittests
 * Introduced a new command line flags handling
 * Print command classes in the RDM Responder tests
 * Fix a memory leak detected by the leak checker
 * Patches to build correctly on Android

20/4/2013 ola-0.8.28
 * Add support for the LPD8806 pixels using SPI.
 * Fix the build on OS X Lion 10.7 - #231
 * Fix the build with clang 4.2
 * Added a simple E1.31 load test tool
 * Added the first E1.33 (RDMNet) tools
 * Switched to using the new command line flags module in some programs.
 * Man page for dmxmonitor - #219
 * Rename ola_universe_stats to ola_uni_stats, standardising names
 * Bash Completions for all programs in ola and ola-rdm-tests
 * Various minor fixes of program help
 * Addition and standardisation of PID options between ola_rdm_get/set and
   e133_controller
 * Standardised all the following long arguments from _ to - in programs and
   completion: --long_name --plugin_id --port_id --preview_mode --list_pids
   --sub_device
 * Complete plugin and universe ids in completions and add options to
   ola_uni_info and ola_plugin_info to assist with this
 * Internal cleanup

2/3/2013 ola-0.8.27
 * Changed the arguments to dmxmonitor - #219
 * Build fixes for various platforms
 * Added a SLP implementation (not installed right now)
 * Updated E1.33 to work with the latest draft
 * Add a script to enforce code licences
 * Add the slp_sa_test program
 * Improved support for the RDM-TRI
 * Added support for using the loopback interface with the ArtNet plugin
 * Fixed some bugs in the RDM tests
 * Add configure time options to disable each plugin
 * Fixed a bug in the sniffer tool
 * Display the amount of time the RDM tests take in the web UI
 * Update to support automake 1.13
 * Show the plugin state and config file location on the web UI
 * Added support for the Enttec USB Pro Mk II.
 * Added an SPI plugin for driving LED pixels based on the WS2801 chip.

11/11/2012 ola-0.8.26
 * Added the OSC plugin
 * Fixed the bug with displaying the TRI serial number
 * Added a script to save and restore RDM settings for a rig
 * Added a script to compare RDM configuration at different times
 * Merged in hip's test refactoring changes - #215
 * Allow the number of E1.31 ports to be specified in the config file
 * Better RDM ACK_OVERFLOW support - #216
 * Fixes for the RDM Tests - #213, #214

9/10/2012 ola-0.8.25
 * Bug fixes for the RDM Responder tests
 * Add some missing files to the tarball
 * Rename the debian init scripts

3/10/2012 ola-0.8.24
 * Add support for soh.cz devices
 * Added the RDM model collector to the RDM Test Server
 * Enhance the RDM Responder Tests page
 * Clean up the Python Wrapper a bit
 * RDM Test fixes for devices with a personality with a slot count of 0
 * RDM Test fixes for some of the new E1.37-1 PIDs
 * Switched the Debian init script to use a pidfile
 * Added a Debian init script for the RDM Test Server

9/9/2012 ola-0.8.23
 * Added the ftdidmx plugin thanks to Rui Barreiros - #164
 * Debian package improvements from RenZO (init script)
 * RDM Test server is now installed if --enable-rdm-tests is used
 * Bug fixes in the RDM Test Server
 * Switched to the new logo
 * Fixed the build for gcc 4.7.1
 * Network library cleanup
 * Added the ola_universe_stats scripts

10/8/2012 ola-0.8.22
 * Added the first version of the RDM Test Server
 * Added a configure time option to disable unittests
 * Various fixes for the debian package files
 * Added a DMX Monitor to the web UI
 * Various fixes so that the FreeBSD build works
 * Moved all JSON generation code to a module
 * Defend against exhausting the connection pool in the web UI - #186
 * Fix errors with clang v3.1
 * Fixed a RDM discovery bug.

18/7/2012 ola-0.8.21
 * Fix the broken Eurolite plugin on Mac
 * Add a configure option to install the RDM tests
 * Add a configure option to downgrade warnings to non-fatal
 * Add support for the UID type to PID definitions
 * Add support for timestamps in the RDM sniffer
 * Ignore Enttec Sniffer devices within OLAD
 * Add a script to launch olad for the RDM tests
 * Add Mute/Unmute cases to the RDM tests
 * Added Discovery cases to the RDM tests

18/6/2012 ola-0.8.20
 * Fix uuid library detection - #187
 * Fix the Java build on Linux
 * Add some Robe RDM debugging
 * Print the version when olad starts
 * Fix the E1.31 tests

7/6/2012 ola-0.8.19
 * Simple Java API
 * Significant changes to the underlying I/O code
 * Add support for IPv4 RDM types
 * Configure time flag to disable the root check
 * Large Refactor of the E1.31 code to enable E1.33 later
 * Switched to using the standard command set for TRI devices - #171
 * Add support for multiple devices to the DummyPort - #178
 * Fixed a bug in the Dummy Responder - #184
 * Added --version to olad

01/03/2012 ola-0.8.18
 * Added RDM support for the Enttec USB Pro - #146
 * Added support for reading/writing RDM sniffer logs to a file
 * Fixed a bug in the Eurolite device - #165
 * Added support for multiple Open DMX USB devices (still Linux Only) - #166
 * Fixed a build error in the StageProfi widget - #169
 * Added an option to choose the NIC olad uses - #173
 * Add support for listing remote ArtNet nodes - #167

23/01/2012 ola-0.8.17
 * fix a bug in the RDM sniffer
 * change olad not to fail if it can't create the preferences directory
 * fix the ArtNetTest if stdin receives data

19/01/2012 ola-0.8.16
 * Added a configure test for the python google.protobuf module
 * Added the ola_trigger program
 * Changed the ForceDiscovery rpc to only return once discovery completes
 * Fixed ArtNet RDM discovery so DMXWorkshop works correctly - #160
 * Fixed a memory leak in the ArtNet RDM implementation
 * Add an option for using the limited broadcast address for ArtNet dmx data
 * Add an option to ignore specific USB serial devices
 * Added a program to sniff traffic using the RDM USB Pro
 * Added many more unit tests for the ArtNet plugin
 * Fixed build warnings found by newer versions of clang
 * Fix a bug in the RDM discovery code for the Robe Widget

12/12/2011 ola-0.8.15
 * Add DMX IN support for the Robe widget - #156
 * Add an option to send DMX during RDM tests - #153
 * Add basic support for sending ArtNet timecode - #150
 * Added a DMX keypad to the mobile UI, thanks to Chris Stranex
 * Fix a race condition in the WidgetDectectorThreadTest
 * Fix compile errors with new versions of clang
 * Fix compile errors with new versions of gcc - #158
 * Fix the python tests so they pass with macports
 * Update debian package configs
 * Use relative paths in the web UI so they work behind proxies - #163

2/11/2011 ola-0.8.14
 * fix a bug in the port limiter
 * minor RDM test fixes
 * change the default limit for the TRI devices to 40fps
 * add support for the ultraDMX Pro devices
 * add an option to skip factory defaults in the RDM tests

22/10/2011 ola-0.8.13
 * Attempt to reconnect to usb devices periodically - #143
 * Add support for ArtNet 3 - #144
 * Add support for the Eurolite USB Pro - thanks Harry F
 * Large cleanup of the build rules
 * Added a script to collect device model information using RDM
 * Added a basic show recorder program
 * Add TX & RDM support for the Robe Universal Interface - #148
 * Added a frame limiter for the DMX/RDM-TRI devices

3/9/2011 ola-0.8.12
 * Add the generic messaging framework and use it to handle RDM PIDs
 * Add support for manufacturer specific PIDs in the C++ RDM CLI tools - #112
 * Add proper ACK_TIMER handling the in C++ RDM CLI tools - #93
 * Added STATUS_MESSAGES support in the C++ RDM CLI tools - #111
 * Further improvements of the RDM test suite
 * Fixed link errors with the new version of gcc - #142, #145
 * Fixed sorting of Sensors in the RDM web UI - #137
 * Improvements to the threading model to support more async operations.
 * Enabled SO_REUSEPORT so that local ArtNet applications work - #141
 * Reduced the cost of logging by using lazy evaluation
 * Added more PIDs to the dummy responder
 * Refactored the core I/O classes, removed the "socket operation on
   non-socket" warning
 * Fixed a bug sorting UIDs in the python libs

28/6/2011 ola-0.8.11
 * Fix bugs on big endian systems
 * Move ola-examples into the main package
 * Add SLP support to the e133_controller

22/6/2011 ola-0.8.10
 * Added support for the VX8062 device
 * Fixed a compile bug caused by bad libprotobuf handling
 * Add some more warnings / advisories to the RDM Responder tests
 * Internal network API cleanup
 * Fixed a crashing bug in the RDM responder tests
 * Added tools for testing the E1.33 / SLP protocol
 * Fixes for OS X 10.4

24/4/2011 ola-0.8.9
 * Added support for the Arduino RDM RGB Mixer
 * Fixed a bug when a broadcast RDM request was sent to a universe with
   multiple ports bound
 * Fixed a memory leak in the RDM code
 * Added more RDM tests including broadcast & vendorcast tests
 * Added a command line flag to specify the config directory
 * Added some additional log messages to assist users with troubleshooting
 * Fixed a memory leak in the RDM UI code.

26/3/2011 ola-0.8.8
 * Added RDM discovery for the DMXter widgets
 * Added a bunch more RDM responder tests
 * Two RDM memory leaks fixed
 * Incremental RDM discovery added (where supported)
 * Minor code cleanup

19/2/2011 ola-0.8.7
 * Added a Python RDM API & example programs.
 * Integrated the python rdm code with the PID store (rdm.openlighting.org)
 * Added around 128 RDM responder test cases

9/12/2010 ola-0.8.6
 * added the graphical RDM patcher
 * improved support for picking the outgoing multicast interface
 * add RDM support for the DMXters
 * fixed a couple of memory leaks in the UI
 * internal refactoring to support testing
 * merged the Callback & Closure classes
 * added extensive testing for the DMX-TRI and DMXter widgets
 * simplified internal RDM handling

06/11/2010 ola-0.8.5
  Added a simple mobile web UI
  Fixed the web UI so it works on Opera
  Start olad automatically from the c++ clients if it's not already running
  Add more attributes to the RDM web UI
  Bug fixes for the RDM TRI
  Python API bug fixes

19/10/2010 ola-0.8.4
  Add the RDM web UI
  Work around an ArtNet RDM bug
  Handle ACK overflow in the DMX-TRI

23/9/2010 ola-0.8.3
  Add Manufacturer / Device name resolution to the web UI for RDM devices.
  Fix a couple of compile bugs.
  For each DMX-over-IP plugin, display the bound IP address in the device name.
  Change the DMX console to send a packet every second even if nothing changes.
  Fix a memory leak in the RDM controller

19/9/2010 ola-0.8.2
  Moved the DMX Console to the new UI
  Removed the old web UI, no more requirements for ctemplate
  Added ACK_OVERFLOW support for RDM over ArtNet
  Added Support for the last remaining E1.20 PIDS
  Re-factored the Ola Client code to fix the problem of de-multiplexing
    responses.
  Add the OlaCallbackClient as the recommended C++ API
  Moved the HTTP Server to using the OlaCallbackClient directly.

2/9/2010 ola-0.8.1
  New web UI
  Fixed some bugs in the device shutdown code
  Fixed some compiler warnings with gcc 4.4

7/8/2010 ola-0.8.0
  Initial RDM support for the ArtNet, Dummy & DMX-TRI devices
  New ArtNet stack to support RDM - no more dependency on libartnet
  Support for packetheads DMX dongle
  Make the FPS limit for USB Pro devices configurable

20/5/2010 ola-0.7.4
  Fixed the python API
  Fixed the client deadlock issue
  Fixed the USBDMX2 firmware loading
  Fixed ARM alignment bug in E1.31
  Fixed ambiguous errors when plugins were disabled
  Added the /reload handler the reload plugins
  Turn off SIGPIPEs
  Clean up the streaming client API
  Use the serial number to identify uDMX devices

18/4/2010 ola-0.7.2 / 0.7.3
  Added support for the Velleman 8062
  Added support for the uDMX
  Added support for the USBDMX2
  Added support for the DMXKing
  Fixed a crash if olad was started while another instance was running
  Random build fixes

27/3/2010 ola-0.7.1
  Implemented the Usb Protocol Extensions
  Added output rate throttling for the Usb Pro devices
  Added the streaming DMX client
  Fixed some uuid detection issues
  Made the server more resistant to bad clients
  ./configure script fixes

28/2/2010 ola-0.7.0
  Added E1.31 merging & sequencing support
  Improved USB Pro handling
  Added port priorities & multi source merging
  TX support for the DMX-TRI
  Support for the Arduino RGB Mixer
  DSCP for E1.31
  Support for using the OSSP uuid library
  Removal of run-time loadable plugins.

10/1/2010 ola-0.6.0
  Added Pathport support
  Added support for the final version of the E1.31 Standard
  Changed to link time plugins rather than run time (required for win32 port)
  Cleanup of the dmx4linux plugin (thanks to Bastien)
  Linted almost everything
  Many more export map variables
  Restructure of the Port class internals

21/11/2009 ola-0.5.0
  Added Sandnet Support
  Added automatic USB Pro device detection
  Fixed a HTP merging bug

18/10/2009 ola-0.4.0
  Added E1.13 Support

26/8/2009 ola-0.3.1
  Fixed the open dmx usb off by one bug
  Minor build tool fixes

8/8/2009 ola-0.3.0
  Changed the name of the project to Open Lighting Architecture
  Major rewrite
   - added export_map
   - added http server & web interface
   - added web dmx console
   - now works on mac
   - converted to using protocol buffers
   - supports embedding
   - port patches persist across restarts
   - plenty of unittests (more required)

14/10/2007 lla-0.2.3
  Plugins can now be disabled from the config files

14/9/2007 lla-0.2.2
  Fixed a bug with the DMX USB Pro
  Refinements to the StageProfi plugin

1/1/2007 lla-0.2.1
  Added support for the Stage Profi widget
  Added Pathport support

1/1/2007 lla-0.2.0
  Added Sandnet Support
  Added Open DMX USB Support
  Re-write of the client library
  Added universe merge modes
  Added persistent universe names and merge modes
  Added device config messages

27/4/2006 lla-0.1.3
  Bugfixes

17/4/2006 lla-0.1.2
  Support for multiple Enttec Pro devices
  Logging levels can be changed with -USR1 signals
