feat: restore provider parity with upstream apprise v1.13.0 - #96
Merged
Merged
Conversation
Ports everything v1.13.0 changed on the wire:
- Replace NotificationAPI (napi/notificationapi) with Pingram (pingram):
single Bearer API key, /send endpoint, optional recipient ids, and the
new call channel.
- Add Pinglet (pinglet/pinglets) and Trigv (trigv/trigvs) notifiers with
schema entries, provider fixtures, and golden captures.
- Port Bark AES-GCM encryption (?key=): ordered compact-JSON plaintext,
token_urlsafe-shaped IV, deterministic via APPRISE_BARK_TEST_IV on both
sides of the harness.
- Port Telegram Rich Message templates (?template= with :token
substitution posting to sendRichMessage); template mode bypasses the
framework fold/convert/split the way upstream's gen_calls does.
- Add the Microsoft Workflows Power Automate CU routing id
(?route=/?routeid=), inserted as /cu/{id} on the request path.
- Give Matrix its per-mode dynamic body limits (webhook 65000, server
60000/29000, e2ee 40000/19000) now that upstream computes body_maxlen
per instance.
- Match upstream's RFC 3986 path quoting (safe set /:@!$&'()*+=) when
json/form/xml/gotify/enigma2/apprise/parsep rebuild request paths.
- Regenerate the probed tables (arg rules, choice args, host
requirements, token formats), the affected schema entries, and the
emby/jellyfin/reddit goldens that embed the upstream version string.
Parity suite: 54 passed, 0 failed; schema coverage, golden update check,
provider parity, and golden parity all PASS.
github-actions
Bot
force-pushed
the
chore/sync-upstream-version
branch
from
August 31, 2026 12:20
b7617bc to
faacdaa
Compare
Eli Bosley (elibosley)
force-pushed
the
chore/sync-upstream-version
branch
from
August 31, 2026 15:45
faacdaa to
9e7953a
Compare
Purpose: - Align Pinglet schema input metadata with upstream Apprise. Before: - Pinglet omitted the default fullpath value and empty badges/data maps. Problem: - Schema input parity failed for pinglet and pinglets. New behavior: - Report fullpath as / and include empty badges and data maps. Implementation: - Extend the existing schema fallback tables for both Pinglet schemes.
Eli Bosley (elibosley)
force-pushed
the
chore/sync-upstream-version
branch
from
August 31, 2026 15:48
9e7953a to
5500506
Compare
Purpose: - Make Pingram golden fixtures reproducible across Python processes. Before: - Pingram payload keys were serialized in Python set iteration order. Problem: - Different PYTHONHASHSEED values made the golden update check fail intermittently. New behavior: - Pingram JSON object keys are canonicalized before the fixture is written. Implementation: - Add an opt-in manifest flag, preserve arrays and values, and regenerate the Pingram golden fixture.
Merged
Eli Bosley (elibosley)
added a commit
that referenced
this pull request
Aug 31, 2026
## Summary - Port Lauther and Signalgrid from upstream Apprise v1.13.1. - Allow periods in Pingram JWT-style API keys. - Correct the Matrix API version label and align the compatibility version and versioned request fixtures. ## Why This Exists PR #96 brought the Go port through upstream v1.13.0. This follow-up isolates the remaining code-relevant changes from upstream v1.13.1. ## Resolution The new providers are registered with the target and parity registries, validate their upstream URL forms, and reproduce the upstream request shapes. Signalgrid sends one request per channel and keeps processing later channels after an earlier failure. Lauther drops attachments when a message body is present, matching upstream behavior. The generated enforcement tables and overflow limits now include both providers. Pingram accepts JWT-style API keys containing periods, and the compatibility version is 1.13.1. ## Reviewer Considerations - New provider traffic is covered by request goldens and Python-vs-Go sequence parity. - Lauther priority parsing checks the `lowest`/`low` prefix overlap and rejects out-of-range numeric values. - The latest commit restructures the intentional nonnumeric-priority fallback for the repository lint rule without changing its behavior. - Attachment-only sends remain unsupported for the new providers, while body-plus-attachment sends preserve the upstream drop behavior. - Python-only packaging, documentation, logging, and memory-handle changes are intentionally not ported because they have no Go runtime equivalent. ## Verification - Focused Lauther, Signalgrid, and Pingram golden/request parity: passed. - Full provider golden/request parity: passed. - Schema input/detail and generated enforcement-table parity: passed. - Golden consistency check: passed. - `GOCACHE=$PWD/.gocache go test ./... -count=1`: passed. - `GOCACHE=$PWD/.gocache go vet ./...`: passed. - `git diff --check`: passed. ## Risk Risk is low. The changes are isolated to two new request paths, two small upstream metadata corrections, generated tables, and parity fixtures. Tests use the existing local capture harness, so live service acceptance remains the only untested external dependency. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added Lauther notification support, including priorities and optional notification metadata. * Added SignalGrid notifications with single- and multi-channel delivery and critical alerts. * **Improvements** * Pingram API keys now support periods, including JWT-style keys. * Corrected the Matrix API version label. * Added provider request-size and title limits. * **Compatibility** * Updated compatibility metadata and supported provider request fixtures to version 1.13.1. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Eli Bosley (elibosley)
pushed a commit
that referenced
this pull request
Sep 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This branch ports upstream Apprise v1.13.0 changes into the Go implementation and restores provider request and schema parity.
Why This Exists
Upstream v1.13.0 changed provider names, URL schemas, request formats, encryption, routing, body limits, and path quoting.
Without these changes, the Go port can reject valid URLs or send requests that differ from Python Apprise.
Resolution
The branch updates the upstream version pin and ports the v1.13.0 behavior.
It refreshes parity metadata, request cases, and golden fixtures used to compare Go with Python Apprise.
Reviewer Considerations
Behavior Changes
Implementation Summary
Verification
GOCACHE="$PWD/.gocache" go test ./...— PASSGOCACHE="$PWD/.gocache" go vet ./...— PASSPYTHONHASHSEED=42 APPRISE_CAPTURE_CACHE=0 .venv/bin/python internal/testutil/scripts/update_golden.py --check— PASSRisk
Moderate; the change spans 56 files and many provider implementations. The full Go test suite and static analysis pass, and request parity remains covered by the existing fixtures.