I am pleased to announce the release of 2024.2.36 of the plugin. This update was mostly about bug fixes. But does include some new features.

General Improvements

Overall most of the changes were to make it easier to develop this plugin further in the future. Such as by automating building and releasing versions on Github when something new is pushed to the master branch. This also included refactoring some code to reduce some confusion I was having with my organization. Among other things.

Upgrades to Release Pipeline

For the automation of the release pipeline, I ended up automating a couple of other tasks as well. Such as the automatic generation and setting of version numbers within builds. Which is currently achieved using ldflags at build time.

Along with that I also gave myself the ability to have two different release types. One that is triggered manually (prereleases) and another that is triggered automatically (full releases). The logic to this being that I want all full releases to be automatically built when I must to master. Whereas with pre-releases that I might release in the development of a full release, I wouldn’t want to be constantly generated. So they are triggered manually.

I also ended up building a bash script that looks at the current git repository and spits out a version number. Allowing me to “never” think about how I’m numbering things again.

Change Logs Can Be Nice

As part of the automation of releases, I also ended up setting up a method of writing and maintaining a change log. Currently, there are three files CHANGELOG.md, MAJOR_CHANGELOG.md, and MINOR_CHANGELOG.md. With CHANGELOG.md being all changes throughout the history of the project. The other two files are then being used in the release process to populate the release message body. MAJOR_CHANGELOG.md for the full releases and MINOR_CHANGELOG.md for the pre-releases. Simple enough.

Adding these files (and their semi-static location) also allowed for me to add a Change Log message within the plugin’s info page within Gotify. With it currently listing only the most recent changes.

Refactoring

As for refactoring. I did not name all my packages in the most sane way when I started. And with my plan to expand the project further. Well, that wouldn’t be wise to leave as is. So before it gets too big I decided to try to come up with some more sane and descriptive package names.

We’ll see how well I can maintain it.

Security Through Obscurity

As for functionality. The only thing that I wouldn’t call a full-fledged feature is the fact that Discord Webhook Links (and in the future other secrets) are now hidden by default unless you hover/click them.

And it is now that I would like to note. Much of the functionality of this plugin is based on my use. And that includes the fact that keys are currently transmitted back to the browser for the transmitters. In the future, I may make it so that isn’t the case. But for now. I do not have an explicit reason to develop said feature due to my current setup.

New Features

Most of these features are simple. And for good reason. The goal was to do this in a month. (Mostly because my projects need a limited timeline otherwise they tend to expand.) So they are as follows.

  • Transmitters now record how many times they have been used.
  • Log messages for the plugin are now accessible in the UI.     - Log messages in UI are cleared on reboot but are still sent to Standard Out as well.
  • New Relay Transmitters     - Discord Advance         - Makes use of Discord’s Embeds that can be in Webhook messages.         - Embeds are not currently fully utilized at this point.         - The current implementation is more or less the same as the old Discord Transmitter.     - Pushbullet         - Very similar formatting to the original Discord Transmitter. Just through Pushbullet.

Bug Fixes (Every project needs it’s exterminator)

And as with many projects. A few bugs are likely to find their way in. And I am not impervious to bugs. So I had a few to fix. Unfortunately, I didn’t discover them until running the plugin myself for a couple of days. They are listed below.

  • Fixed the issues that caused the Transmitters to be spammed with empty messages.     - Typically happened when the server Gotify was running on had a hiccup elsewhere.     - Prevention measures put in place to prevent them in the future.
  • Corrected method of reconnecting after a connection is unexpectedly terminated.     - This could also cause the issue above if it were to happen in a specific case.     - Currently, if a connection is lost. It will now wait 1 second before trying to reestablish itself.

And That’s That

And in all honesty that’s it. Most of this was a rehashing of what you can find in the project’s changes logs here. But I’ve set myself a goal of a post a month. So here it is. At least it has some value.

Have a good one. And see y’all next month where I hope to talk about 3D printing. Hopefully, everything pans out.