* Renamed the 'RDWaveData::introStartPos()' method to
'RDWaveData::talkStartPos()'.
* Renamed the 'RDWaveData::setIntroStartPos()' method to
'RDWaveData::setTalkStartPos()'.
* Renamed the 'RDWaveData::introEndPos()' method to
'RDWaveData::talkEndPos()'.
* Renamed the 'RDWaveData::setIntroEndPos()' method to
'RDWaveData::setTalkEndPos()'.
* Added an 'RDWaveData::validateMarkers()' method.
* Added an 'RDWaveData::validateDateTime()' method.
* Removed the 'RDWaveData::checkDateTimes()' method.
* Added 'RnRmlOwner=' and 'RnRmlGroup=' directives to rd.conf(5).
* Refactored the implementation of the 'Run Shell Command' ['RN']
RML to use runuser(1).
* Fixed a regression in rdairplay(1) that caused macro carts with
the 'Use Event Length for Now & Next Updates' attribute set to
fail to use the parent rdlogmanager(1) event/clock duration.
* Renamed the 'Use Event Length for Now & Next Updates' checkbox
in the 'Edit Cart' dialog in rdlibrary(1) to 'Use RDLogManager
Length for PAD Updates'.
* Updated the screenshot of the 'Edit Cart' dialog in the
Operations Guide.
* Refactored routines for parsing/writing standard date/time strings
(RFC822 and XML xs:dateTime formats) into 'lib/rddatetime.[cpp|h].
* Removed the 'RDWebDateTime()', 'RDGetWebDateTime()',
'RDGetWebDate()', 'RDGetWebTime()', 'RDGetWebMonth()',
'RDXmlDate()', 'RDXmlTime()', 'RDXmlDateTime()' and
'RDXmlTimeZoneSuffix()' functions from 'lib/rdweb.[cpp|h].
* Added a 'dateparse_test' test harness.
* Fixed a bug in rdairplay(1) and rdvairplayd(1) that caused
spurious service information to by generated by the PAD subsystem
when updating events in a null log.
* Fixed a bug in rdairplay(1) and rdvairplayd(1) that threw a
segfault when playing an event in a null log.
* Changed the value of RD_DEFAULT_PYPAD_OWNER to 'pypad'.
* Changed the value of RD_DEFAULT_PYPAD_GROUP to 'pypad'.
* Fixed a bug that caused creation of the 'pypad' system user
to fail.
* Changed the PyPAD namespace from 'PyPAD' to 'pypad'.
* Changed the installation location of PyPAD scripts from
'@libdir@/rivendell/PyPAD/' to '@libdir@/rivendell/pypad/'.
* Removed 'apis/rlm/'.
* Removed the 'Edit Now & Next' button from the 'Configure RDAirPlay'
dialog in rdadmin(1).
* Removed RLM support from rdairplay(1) and rdvairplayd(8).
* Removed v1.x legacy PAD update support from rdairplay(1).
* Dropped the 'NOWNEXT_PLUGINS' table from the database.
* Dropped the 'LOG_MACHINES.UDP_ADDR' field from the database.
* Dropped the 'LOG_MACHINES.UDP_PORT' field from the database.
* Dropped the 'LOG_MACHINES.UDP_STRING' field from the database.
* Dropped the 'LOG_MACHINES.LOG_RML' field from the database.
* Incremented the database version to 305.
* Added a 'lineNumber' parameter to the 'padUpdate' structure.
* Added a 'FIELD_LINE_NUMBER' data value to PyPAD.
* Defined the '%z' metadata wildcard to refer to log line number.
* Added a 'lineId' parameter to the 'padUpdate' structure.
* Added 'FIELD_LINE_ID' data value to PyPAD.
* Defined the '%x' metadata wildcard to refer to log line ID.
* Renamed the RD_RLM2_CLIENT_TCP_PORT define to RD_PAD_CLIENT_TCP_PORT.
* Renamed the RD_RLM_SOURCE_UNIX_ADDRESS define to
RD_PAD_SOURCE_UNIX_ADDRESS.
* Added a RD_PYPAD_SCRIPT_DIR define.
* Added an 'RDNotification::PypadType' value to the
'RDNotification::Type' enumeration.
* Added 'PypadOwner=' and 'PypadGroup=' directives to the
'[Identity]' section of rd.conf(5).
* Added an rdpadengined(8) service.
* Added a 'PYPAD_INSTANCES.IS_RUNNING' field to the database.
* Added a 'PYPAD_INSTANCES.EXIT_CODE' field to the database.
* Added a 'PYPAD_INSTANCES.ERROR_TEXT' field to the database.
* Incremented the database version to 304.
* Added a 'PYPAD_INSTANCES' table to the database.
* Incremented the database version to 303.
* Added a 'PyPAD Instances' button to the 'Edit Station' dialog
in rdadmin(1).
* Added a 'ListPyPAD Instances' dialog in rdadmin(1).
* Added an 'Edit PyPAD' Instance' dialog in rdadmin(1).
* Renamed 'apis/PyPAD/examples/pypad_test.py' to
'apisPyPAD/tests/pad_test.py'.
* Added a 'hostName' field to the JSON PAD 'padUpdate' object.
* Added a 'PyPAD.Update::hostName()' method.
* Added a 'shortHostName' field to the JSON PAD 'padUpdate' object.
* Added a 'PyPAD.Update::shortHostName()' method.
* Added a 'PyPAD.Update::resolveFilepath()' method.
* Added 'apis/PyPAD/tests/filepath_test.py.
* Added 'api/PyPAD/examples/pypad_filewrite.py'.