##################
mqttwarn changelog
##################


in progress
===========


2023-04-11 0.33.0
=================

- Pushsafer: Fix to prevent submitting empty parameters to upstream API.
- Pushsafer: Modernize configuration layout for target addresses.
- Pushsafer: Add parameters for "Confirm", "Answer Options", and "Force Answer".

Thanks, @appzer.


2023-02-13 0.32.0
=================

- Modernize Docker configuration, now using Debian bullseye and Python 3.11.
- Improve nightly and on-PR Docker builds.
- Add versioning based on Git tags, using ``versioningit``. This will aid in
  telling PR- and nightly releases apart from GA releases when running
  ``mqttwarn --version``.
- Improve Apprise integration by propagating the mqttwarn data dictionary into
  the Apprise plugin template arguments. Thanks, @zoic21.


2022-11-21 0.31.0
=================

- Make the PushOver API ``retry`` and ``expire`` options configurable. Thanks, @jlrgraham.
- Add new configuration setting ``filteredmessagesloglevel``, to optionally set the log
  level for filtered messages. Thanks, @jlrgraham.
- CI and tests: Improvements and maintenance
- Documentation: Improve section about Apprise
- Documentation: Notifications to ntfy via Apprise. Thanks, @binwiederhier, @particledecay,
  and @caronc.


2022-10-05 0.30.0
=================

- Make LWT alive/dead payload configurable. Thanks, @sumnerboy12.
- Upgrade to ``future>=0.18.0,<1``. Thanks, @arieroos.
- Several adjustments to log messages
- Several improvements to the test harness, code coverage, project tooling,
  code linting and formatting, and CI
- Refactoring of some data model components
- Fix job sorting by priority after migration to Python 3
- Remove some Python 2 compatibility snippets. mqttwarn is Python 3 only.

Breaking changes
----------------
- Rework and rename service plugin ``osxnotify`` to ``desktopnotify``, it
  should work on all popular operating systems now. Thanks, @portalzine.


2022-08-22 0.29.1
=================

- Improve documentation about logging on Docker
- Improve launching with an additional set of ``--config`` arguments


2022-08-21 0.29.0
=================

- Improve error handling: Remove the ``exception_traceback()`` helper function
  again, and use ``logger.exception()`` instead.
- Improve error messages: Remove all ellipsis
- SMTP service plugin: Add software tests
- SMTP service plugin: Fix evaluation of ``htmlmsg`` parameter
- SMTP service plugin: Add support for minimal configuration w/o TLS and AUTH.
  Thanks, @symonjim.
- Update dependencies: Use Jinja2 3.x; Remove configparser, it is built into Python 3
- Add support for Python 3.11
- Pushover service plugin: Enable passing of parameters ``html``, ``url``, ``url_title``.
  Thanks, @jlrgraham.
- Add test for exercising configuration file scaffolding
- Improve README regarding configuration file scaffolding on Windows 10/PowerShell.
  Thanks, @symonjim.
- Improve support for VSCode. Thanks, @psyciknz.
- Improve ``mqttwarn`` command line entry point testing


2021-10-31 0.28.1
=================

- Fix documentation about Docker images. Thanks, @psyciknz!
- Fix enumerating ``addrs`` in pushsafer service. Thanks, @ykuzmenko!


2021-10-19 0.28.0
=================

- Allow dispatching of messages with no target address information.
  This helps for service plugins like Apprise to make the configuration
  snippet more compact. Now, service configurations can omit the ``targets``
  option altogether.
- ``apprise_single`` service: Accept omitted/empty `addrs` attribute.
- ``apprise_single`` service: Improve query parameter serialization.
- ``apprise_multi`` service: New plugin. Thanks, @psyciknz!
  The idea behind this variant is to publish messages to different Apprise
  plugins within a single configuration snippet, containing multiple recipients.


2021-10-17 0.27.0
=================

- IRCcat: Fix and improve service. Thanks, @JanKoppe.
- IRCcat: Add newline character after message. Thanks again, @JanKoppe.
- CI: Run tests on Python 3.10
- Allow parameters of the ``file`` service to be defined on a per-file basis.
  Thanks, @Gulaschcowboy!
- Add software tests for ``file`` service.
- Add feature to publish mqttwarn status information. Thanks, @psyciknz!


2021-09-29 0.26.2
=================

- Fix HTTP basic authentication for Python 3 in plugins for HTTP, XBMC and Ionic.
  Thanks, @sumnerboy12!


2021-06-19 0.26.1
=================

- Attempt to fix README on Docker Hub


2021-06-19 0.26.0
=================

- When title is not set in configuration settings, use ``mqttwarn: {topic}``
  instead of ``mqttwarn`` only. Thanks, Rob!
- Add launch configuration for VSCode. Thanks, David!
- Use STDERR as default log target
- Stop including the "tests" folder into the sdist package
- Add "mqttwarn-contrib" package to the list of "extra" dependencies
- Improve launching service plugins interactively from the command line
  Now, there are two options "--config" and "--options" to be able to
  obtain all relevant bits of information from the command line.


2021-06-18 0.25.0
=================

- Rename repository default branch to "main"
- Fix "http" service plugin
- Improve machinery to launch a notification service plugin standalone.
  Now, it works without any ``mqttwarn.ini`` configuration file at all.
- Begin adding tests for services
- Drop official support for Python 2


2021-06-12 0.24.0
=================

- [prowl] Update service plugin to use "pyprowl" instead of "prowlpy"
- [core] Make "functions" setting in configuration file optional
- [ci] Build and publish Docker multi-platform images


2021-06-08 0.23.1
=================

- [ci] Run software tests and Docker image building on GitHub Actions (GHA)
- [ci] Publish Docker images to GitHub Container Registry (GHCR)


2021-06-03 0.23.0
=================

- [http] Rename ``http.py`` module to ``http_urllib.py`` to reduce conflicts with stdlib.
  For backward compatibility reasons, it is still available by the same name, so no
  configurations will break. Thanks, Morten!


2021-06-03 0.22.0
=================

- [build] Fix unwanted cache hits when automatically building Docker images. Thanks, Gergő!
- [core] Respect relative path names within configuration file. This applies
  to both the function file as well as module files.


2021-06-03 0.21.0
=================
- [xmpp] Add slixmpp plugin and documentation. Thanks, Remi!
- [mysql] Fix unicode vs byte issue for Python 3. Thanks, Filip!
- [http] Fix to send whole message. Thanks, Gergő!
- [slack] Replace ``slacker`` with ``slack-sdk``. Thanks, mcdamo!
- [mysql] Fix specified port bug. Thanks, Hyman!
- [launch] Add new service ``launch``. Flexible arguments for command,
  responds with MQTT publish. Thanks, Jörg!
- [core] Remove "os.chdir" as it is apparently not needed anymore. Thanks, Dan!
- [ci] Run tests on Python 3.9, remove testing on Python 3.5
- [core] Load service plugins from both modules and files.


2020-10-20 0.20.0
=================
- [telegram] Fix encoding of data for python3. Thanks, Ben!


2020-10-11 0.19.0
=================
- [xbmc] Fix encoding of data for python3. Thanks, Ben!
- [hipchat, ionic, pushsafer] Fix charset encoding. Thanks, JP!
- [telegram] Add compatibility for both Python 2 and Python 3. Thanks, @clach04!
- Add new service for Chromecast TTS. Thanks, @clach04!
- Add example for Amazon Alexa Say/Announce. Thanks, @clach04!
- Improve documentation. Thanks, @clach04!
- Fix Apprise service by explicitly using legacy/synchronous mode.
- Add Python 3.9 support


2020-08-31 0.18.0
=================
- Use ``allow_dirty = False`` within ``.bumpversion.cfg``
- Use Python3 to create virtualenv
- Bump version numbers for release tools packages
- Add external plugin module loading. Thanks, @psyciknz!
- Replaced iothub service with azure-iot, just using MQTT. Thanks, Morten!


2020-08-31 0.17.0
=================
- srv.mqttc is None when calling into a custom function. Thanks, Ben.
- sundry changes for FreeBSD package. Thanks, Dan.
- Fix ``ZabbixSender.py``. Thanks, Ben!
- service tweaks: nsca, zabbix


2020-06-06 0.16.2
=================
- Optionally choose scheme for connection to InfluxDB. Thanks, Dennis!


2020-06-06 0.16.1
=================
- Fix charset encoding within pipe module. Thanks, Morten!
- Fix removal of "as_user" option within Slack plugin. Thanks, Morten!


2020-05-30 0.16.0
=================
- Fix for the mqttwarn.service service unit. Thanks, Fulvio!
- Fix encoding of data for Python3 within Pushsafer plugin. Thanks, Thomas!
- Non-JSON payload should not generate warning. Thanks, Morten!
- Fix missing namespace within Serial plugin. Thanks, Morten!
- Fix Dockerfile to use mqttwarn pip module. Thanks, Koen!
- Add Docker Compose file and update Dockerfile to use /etc/mqttwarn. Thanks, Koen!
- Change Dockerfile base image to python:3.8.2-slim-buster. Thanks, Koen!
- Improve code formatting within custom functions of "warntoggle" example. Thanks, Dan!
- Fix charset encoding within Serial plugin. Thanks, Morten!


2020-04-14 0.15.0
=================
- Document ``tls=True`` setting. Thanks, @jpmens!
- Add ``warntoggle`` example (#408). Thanks, @robdejonge!
- Load functions file at configuration load (#410). Thanks, @fhriley!
- Try to make "zabbix" service work again


2020-03-31 0.14.2
=================
- Upgrade to apprise 0.8.5


2020-03-28 0.14.1
=================
- Upgrade xmpppy to 0.6.1, add dnspython as dependency


2020-03-18 0.14.0
=================
- Add service plugin for `Apprise <https://github.com/caronc/apprise>`_.
- Upgrade xmpppy to 0.6.0
- More verbose exception when formatting message fails


2020-03-04 0.13.9
=================
- Remove references to ``mqttwarn.py``. Cleanup documentation.
- Fix charset encoding within Postgres plugin. Thanks, @clarkspark!
- Fix function invocation through "format" setting. Thanks, @clarkspark!


2020-01-12 0.13.8
=================
- Fix charset encoding issue for service "mqttpub". Thanks, @jpmens!


2020-01-12 0.13.7
=================
- Improve exception handling when service plugin fails
- Properly handle charset encoding, both on Python 2 and Python 3


2020-01-09 0.13.6
=================
- Support Python 3.8


2019-12-27 0.13.5
=================
- Improve Python2/3 compatibility for "make-config" subcommand. Fix #393.
  Thanks, @Gulaschcowboy!


2019-12-17 0.13.2
=================
- Fix documentation


2019-12-17 0.13.1
=================
- Address compatibility issues with configparser


2019-12-17 0.13.0
=================
- Remove instapush service as it no longer exists
- Python2/3 compatibility
- Make "pushover" service use requests
- Mitigate some deprecation warnings. Bump core package dependencies.
- Improve testing and CI


2019-12-02 0.12.0
=================
- Add documentation based on Jekyll and publish on www.mqttwarn.net. Thanks, @jpmens!
- Add logo source and PNG images. Thanks, @gumm!
- Make testsuite pass successfully on Python3.
- Make README.rst ASCII-compatible, resolve #386. Thanks, @dlangille!
- Fix direct plugin invocation
- Re-add compatibility with Python2


2019-11-20 0.11.3
=================
- Fix README.rst


2019-11-20 0.11.2
=================
- Remove "Topic :: Internet :: MQTT" from the list of trove classifiers
  after PyPI upload croaked again


2019-11-20 0.11.1
=================
- Update author email within setup.py after PyPI upload croaked at us


2019-11-20 0.11.0
=================
- Add foundation for unit tests based on pytest
- Add test harness
- Integrate changes from the main branch
- Improve documentation, add a more compact ``README.rst`` and
  move the detailed documentation to ``HANDBOOK.md`` for now.
- First release on PyPI


.. _mqttwarn-0.10.1:

2018-04-17 0.10.1
=================
- Use EPL 2.0 license as recently approved by @pypa and @jpmens
- Add missing dependency to the "six" package


.. _mqttwarn-0.10.0:

2018-04-13 0.10.0
=================
- Add mechanism to run a notification service plugin interactively from the command line
- Attempt to fix #307 re. logging to the configuration .ini file. Thanks, Dan!


.. _mqttwarn-0.9.0:

2018-04-13 0.9.0
================
- Add .bumpversion.cfg and Makefile to ease release cutting
- Move "websocket" service plugin (#305) into module namespace
- Refactor two more functions into ``class RuntimeContext``
- Improve error handling: Add the ``exception_traceback()`` primitive to add
  full stacktrace information to log messages. When applied at all important
  places across the board where we do catch-all style exception handling,
  this will improve the experience when working on custom solutions with
  *mqttwarn* to a huge extent.
- Improve documentation


.. _mqttwarn-0.8.1:

2018-04-12 0.8.1
================
- Add required modules for all services to "setup.py"
- Fix setup documentation
- Add MANIFEST.in file


.. _mqttwarn-0.8.0:

2018-04-12 0.8.0
================
- Move all services into module namespace
- Fix PeriodicThread
- Add "requests" module as a core requirement to "setup.py" as it is a common module used by many services
- Add commands "mqttwarn make-config" and "mqttwarn make-samplefuncs"
  for generating a "mqttwarn.ini" or a "samplefuncs.py" file, respectively.
- Add more modules to "extras" requirements section in "setup.py"


.. _mqttwarn-0.7.0:

2018-04-12 0.7.0
================
- Import 0.6.0 code base
- Start work on making mqttwarn a first citizen of the Python ecosystem
- Move main program ``mqttwarn.py`` into module namespace as ``core.py``
- Refactor routines from ``core.py`` into other modules while gently introducing OO
- Add setup.py
- Add full license text
