From 5e56aa538a1c21b487adf7f04d4de76dca50ab1b Mon Sep 17 00:00:00 2001 From: PiratesIRC Date: Sun, 2 Aug 2026 15:02:33 -0500 Subject: [PATCH 1/2] [newsflasharr] add Newsflasharr, a central notification service Newsflasharr lets other Dispatcharr plugins hand off all notification delivery to one place. A calling plugin drops a small event into a file queue and returns; Newsflasharr routes it to Discord, a generic webhook, ntfy, Apprise, email, or a banner drawn over live video, applying deduplication, storm throttling, quiet hours and per-channel retry. Externally hosted, so this adds only the manifest, a README and a logo. The archive is served from the plugin's own GitHub release. Licensed MIT. Source and documentation: https://github.com/PiratesIRC/Dispatcharr-Newsflasharr-Plugin --- plugins/newsflasharr/README.md | 59 +++++++++++++++++++++++++++++++ plugins/newsflasharr/logo.png | Bin 0 -> 42333 bytes plugins/newsflasharr/plugin.json | 12 +++++++ 3 files changed, 71 insertions(+) create mode 100644 plugins/newsflasharr/README.md create mode 100644 plugins/newsflasharr/logo.png create mode 100644 plugins/newsflasharr/plugin.json diff --git a/plugins/newsflasharr/README.md b/plugins/newsflasharr/README.md new file mode 100644 index 0000000..2c66e20 --- /dev/null +++ b/plugins/newsflasharr/README.md @@ -0,0 +1,59 @@ +# Newsflasharr + +Central notification service for Dispatcharr plugins. One plugin owns all +delivery: other plugins drop lightweight events into a file queue, and +Newsflasharr routes them to Discord, a generic webhook, ntfy, Apprise, email, +or a banner drawn over live video. Configured once, in one place, instead of +every plugin re-inventing its own webhook code. + +## What it does + +- **A calling plugin makes one call and is finished.** That call never blocks + and never raises, so a caller is unaffected even when Newsflasharr is not + running. +- **Repeats collapse instead of flooding you.** The same alert arriving over + and over becomes one message, then a summary when the window closes. An + alert that gets worse breaks the window and is sent at once, so a warning + can never swallow the critical that follows it. +- **Quiet hours, an hourly cap and per-channel retry** are configured here + rather than separately in every plugin. +- **Your provider hostnames are removed from outgoing messages**, using the + electronic programme guide sources and accounts Dispatcharr already holds. +- **It is read-only on Dispatcharr.** It writes nothing outside its own + directory, and it never creates or edits an output profile, a channel or a + stream. + +## After installing + +**Restart the Dispatcharr container.** This is not optional. The worker that +delivers events starts when the plugin is constructed, and without a restart +the plugin loads and looks healthy while nothing is delivered. + +Then enable the plugin, fill in at least one channel, click **Validate +settings**, and click **Send test notification** for each channel you +configured. Saving the settings form on its own arms nothing, because +Dispatcharr gives plugins no hook that runs after a save, and only a real send +proves a channel works. + +## Two things to know before relying on it + +- **Delivery is at-least-once per channel.** A duplicate is possible after a + crash. That is a deliberate tradeoff, not a defect. +- **Email is the one channel where a successful send can still be a lie.** A + mail server accepting a message says nothing about spam filtering. Check the + inbox and the spam folder before trusting that channel. + +## Documentation + +Full documentation lives in the plugin's own repository: + +- [User guide](https://github.com/PiratesIRC/Dispatcharr-Newsflasharr-Plugin/blob/main/docs/USER-GUIDE.md) + for setting up channels, routing rules, quiet hours, redaction, the + on-screen banner, and a troubleshooting ladder. +- [Caller API](https://github.com/PiratesIRC/Dispatcharr-Newsflasharr-Plugin/blob/main/docs/API.md) + for plugin authors who want to send notifications through it. +- [Developer guide](https://github.com/PiratesIRC/Dispatcharr-Newsflasharr-Plugin/blob/main/docs/DEVELOPER-GUIDE.md) + for working on the plugin itself. + +Licensed MIT. Source: + diff --git a/plugins/newsflasharr/logo.png b/plugins/newsflasharr/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c80f66c6a7df1d1483c83c237cd3086046db4d GIT binary patch literal 42333 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 Z|36w+k^z9B+adq}002ovPDHLkV1jrg^)>(i literal 0 HcmV?d00001 diff --git a/plugins/newsflasharr/plugin.json b/plugins/newsflasharr/plugin.json new file mode 100644 index 0000000..dbf9d42 --- /dev/null +++ b/plugins/newsflasharr/plugin.json @@ -0,0 +1,12 @@ +{ + "name": "Newsflasharr", + "version": "1.26.2141913", + "description": "Central notification service: other plugins drop events, Newsflasharr routes them to Discord, a webhook, ntfy, Apprise, email, or an on-screen banner over live TV, with deduplication, storm throttling, quiet hours and per-channel retry.", + "author": "PiratesIRC", + "license": "MIT", + "source_type": "external", + "repo_url": "https://github.com/PiratesIRC/Dispatcharr-Newsflasharr-Plugin", + "help_url": "https://github.com/PiratesIRC/Dispatcharr-Newsflasharr-Plugin/issues", + "min_dispatcharr_version": "v0.20.0", + "source_url": "https://github.com/PiratesIRC/Dispatcharr-Newsflasharr-Plugin/releases/download/{version}/Newsflasharr.zip" +} From 79681398a3e43a2dd4e90ef0d4ddd5c309b046f8 Mon Sep 17 00:00:00 2001 From: PiratesIRC Date: Sun, 2 Aug 2026 15:13:29 -0500 Subject: [PATCH 2/2] [newsflasharr] bump to 1.26.2142011 for the CodeQL fix CodeQL on the previous submission flagged py/overly-permissive-file: the plugin's action output files were written world-readable, and two of them print provider hostnames derived from the operator's own configuration. Fixed upstream by leaving those files at the 0600 they are created with. The wider mode was cosmetic and the narrower one had already been measured not to break anything. --- plugins/newsflasharr/plugin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/newsflasharr/plugin.json b/plugins/newsflasharr/plugin.json index dbf9d42..b672a75 100644 --- a/plugins/newsflasharr/plugin.json +++ b/plugins/newsflasharr/plugin.json @@ -1,6 +1,6 @@ { "name": "Newsflasharr", - "version": "1.26.2141913", + "version": "1.26.2142011", "description": "Central notification service: other plugins drop events, Newsflasharr routes them to Discord, a webhook, ntfy, Apprise, email, or an on-screen banner over live TV, with deduplication, storm throttling, quiet hours and per-channel retry.", "author": "PiratesIRC", "license": "MIT",