-
1.6.2
Stablereleased this
2026-10-27 22:27:54 -07:00 | 1 commits to main since this releaseWhat's new
- Multi-arch images. Every tag now ships for
linux/amd64,linux/arm64(Raspberry Pi 3/4/5 and Zero 2 W on a 64-bit OS, other ARMv8 boards) andlinux/arm/v7(32-bit Raspberry Pi OS, other ARMv7 boards). Docker picks the right variant automatically, so the sameimage:line works everywhere.
Fixes
- Container healthcheck always failed. The
HEALTHCHECKprobedhttp://localhost:5000/health. Inside the containerlocalhostresolves to::1first, but uvicorn listens on IPv4 only, so the probe got "connection refused" and every image, amd64 included, reportedunhealthyeven when the bridge was working. It now probes127.0.0.1. Anything that waits on container health (e.g. Composedepends_on: condition: service_healthy, autoheal tools) now behaves correctly.
Notes
- On
linux/arm/v7the image installs plainuvicorninstead ofuvicorn[standard], becauseuvloopandhttptoolspublish no wheels for that platform. uvicorn falls back to asyncio and the pure-Pythonh11parser; behaviour is identical. - No configuration changes. Pull the new image and recreate the container.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Multi-arch images. Every tag now ships for
-
1.6.1
Stablereleased this
2026-10-23 20:23:58 -07:00 | 4 commits to main since this release1.6.1: tag-driven releases, weekly rebuild, apk upgrade of the base image
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
1.6.0
Stablereleased this
2026-10-15 17:04:11 -07:00 | 6 commits to main since this releaseSupport Forgejo 17 workflow run/job webhooks (workflow_run_ / workflow_job_). Legacy action_run_* events still handled but are deprecated upstream — switch webhooks to the new triggers. Closes #6.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
1.5.6
Stablereleased this
2026-07-02 10:03:16 -07:00 | 7 commits to main since this releasev1.5.6 - Security hardening
Fixes from the 5th security audit. Malformed/attacker input that used to trigger HTTP 500 now returns a proper 4xx. No auth bypass existed — all crash paths already failed closed. Drop-in upgrade, no config changes.
- Non-ASCII
Authorization/X-*-Signatureheaders → 403 (was 500) - Deeply-nested JSON → 400 (was 500)
- Non-object / type-confused JSON payloads → 400 (was 500), across all 24 formatters
- Log injection hardened: control chars in
X-*-Delivery, event-type, and Apprise response bodies are escaped before logging - 10 regression tests added; suite 140 passing
Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
10 downloads
- Non-ASCII
-
1.5.5
Stablereleased this
2026-07-01 22:45:56 -07:00 | 8 commits to main since this releasev1.5.5
Security (run-4 audit fixes)
- HTML injection via branch/ref names in titles —
push,create, anddeleteevents interpolated the git branch/ref into the notification title unescaped. Git refs permit<,>, and/, so a crafted branch name (e.g.<a/href="evil/x">click</a>) rendered as a live anchor in Telegram HTML. Now escaped. Corrects v1.5.4's incorrect "refs non-exploitable" claim. - Block-level markdown injection —
escape_markdown()only covered inline syntax. Line-leading#,---,===,+/-lists, and|tables passed through and rendered as real<h1>/<hr>/<table>, letting attacker free text impersonate system-alert banners. Now neutralized at the single choke point. - Double-backslash bypass closed —
\added to the escape class, so\*text\*can no longer reopen emphasis.
Hardening / structural
- New
tests/test_formatters/test_escaping.py: a canary bundling every syntax class from all four audit rounds, asserted inert after both the app's escaping and Apprise's real markdown→HTML pipeline — a direct unit test plus a per-formatter sweep. Guards against future escape gaps re-appearing.
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
9 downloads
- HTML injection via branch/ref names in titles —
-
1.5.4
Stablereleased this
2026-07-01 21:46:52 -07:00 | 9 commits to main since this releasev1.5.4 - Security fix: HTML injection in notifications
escape_markdown()escaped[]()*_\`` but not</>`, so raw HTML tags in attacker-controlled commit messages, issue/PR/comment/review/release bodies, or titles rendered as live masked phishing links on Telegram and HTML-format email destinations (both default to HTML rendering). Not exploitable on Discord/Slack/Mattermost/Matrix/MSTeams/Rocket.Chat.Fix:
</>now entity-encoded (</>) instead of backslash-escaped, since python-markdown doesn't honor\<as an escape.Upgrade recommended, especially if you notify via Telegram or email.
Downloads
-
Source code (ZIP)
6 downloads
-
Source code (TAR.GZ)
7 downloads
-
Source code (ZIP)
-
1.5.3
Stablereleased this
2026-07-01 17:04:37 -07:00 | 10 commits to main since this releasev1.5.3 - Security fix: close remaining markdown injection gaps
Follow-up security audit found the v1.5.2 markdown-escaping fix was incomplete — three call sites of the same injection pattern were missed. All three are fixed in this release.
Fixed
- Push commit messages could inject markdown links into
pushnotifications. Any collaborator with ordinary push access could craft a commit message likeFix typo [Click here](https://evil.example/phish)and have it render as a clickable phishing link on markdown-aware notification targets (Discord, Mattermost, Telegram, Matrix, etc.). - Notification titles were never escaped, in any of the 28 event formatters — only
bodywas. Attacker-controlled free text (release name, wiki page title, commit-status context, workflow/job name, package owner/label) could inject a masked link into the title. Confirmed exploitable against Mattermost unconditionally, and Telegram under this
app's defaultNOTIFICATION_FORMAT=markdown. link()didn't validate its URL argument. A crafted Gitea commit-statustarget_url(requires only ordinary repo write access, same tier as push) could break out of its markdown link and inject a second, fully attacker-controlled link plus fake bolded text intostatusnotifications.
Downloads
-
Source code (ZIP)
5 downloads
-
Source code (TAR.GZ)
12 downloads
- Push commit messages could inject markdown links into
-
1.5.2
Stablereleased this
2026-07-01 16:19:53 -07:00 | 11 commits to main since this releasev1.5.2 - Security fixes: markdown injection, notification size cap bypass
Fixes two issues found in an internal security audit. No config changes required — upgrade and redeploy.
Fixed
- Markdown link injection in notifications — A forge user's display name or free-text (comment/issue/PR/release/review body) containing markdown link syntax (
[text](url)) was rendered as a real clickable link in the destination notification (Slack/Discord/Telegram/etc.), allowing phishing under the guise of a trusted automated message. All forge-controlled text is now escaped (escape_markdown()inapp/formatters/base.py) before being interpolated into notification titles/bodies. - Notification size cap bypass — The app's declared 32KB notification limit (
APPRISE_MAX_LEN) was never applied totitlein any formatter, and was missing frombodyin 14 of 28 formatters, letting an oversized webhook payload produce a multi-megabyte notification. Truncation is now applied centrally informat_event(), so every event type is bounded consistently.
Notes
- No breaking changes, no new config vars, no migration needed.
Downloads
-
Source code (ZIP)
5 downloads
-
Source code (TAR.GZ)
9 downloads
- Markdown link injection in notifications — A forge user's display name or free-text (comment/issue/PR/release/review body) containing markdown link syntax (
-
1.1.3 Stable
released this
2026-03-14 16:21:37 -07:00 | 30 commits to main since this releaseMerge pull request 'v1.1.3: Review 004 fixes — config validation, dead code, test quality' (#6) from v1.1.3-fixes into main
Reviewed-on: eric/apprise-gitea-notifications#6
Downloads
-
Source code (ZIP)
6 downloads
-
Source code (TAR.GZ)
12 downloads
-
Source code (ZIP)
-
1.1.2 Stable
released this
2026-03-14 00:10:22 -07:00 | 39 commits to main since this releaseMerge pull request 'Reliability, observability, and CI improvements (v1.1.2)' (#2) from v1.1.2-fixes into main
Reviewed-on: eric/apprise-gitea-notifications#2
Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
8 downloads
-
Source code (ZIP)