feat: add support for Pushover notification provider

- Updated the list of supported notification provider types to include 'pushover'.
- Enhanced the notifications API tests to validate Pushover integration.
- Modified the notifications form to include fields specific to Pushover, such as API Token and User Key.
- Implemented CRUD operations for Pushover providers in the settings.
- Added end-to-end tests for Pushover provider functionality, including form rendering, payload validation, and security checks.
- Updated translations to include Pushover-specific labels and placeholders.
This commit is contained in:
GitHub Actions
2026-03-16 18:16:14 +00:00
parent 9496001811
commit 65d02e754e
24 changed files with 2464 additions and 275 deletions

View File

@@ -18,6 +18,7 @@ Notifications can be triggered by various events:
| **Discord** | ✅ Yes | ✅ Webhooks | ✅ Embeds |
| **Slack** | ✅ Yes | ✅ Webhooks | ✅ Native Formatting |
| **Gotify** | ✅ Yes | ✅ HTTP API | ✅ Priority + Extras |
| **Pushover** | ✅ Yes | ✅ HTTP API | ✅ Priority + Sound |
| **Custom Webhook** | ✅ Yes | ✅ HTTP API | ✅ Template-Controlled |
| **Email** | ❌ No | ✅ SMTP | ✅ HTML Branded Templates |
@@ -214,6 +215,51 @@ Slack notifications send messages to a channel using an Incoming Webhook URL.
- Use `•` for bullet points
- Slack automatically linkifies URLs
### Pushover
Pushover delivers push notifications directly to your iOS, Android, or desktop devices.
**Setup:**
1. Create an account at [pushover.net](https://pushover.net) and install the Pushover app on your device
2. From your Pushover dashboard, copy your **User Key**
3. Create a new **Application/API Token** for Charon
4. In Charon, go to **Settings****Notifications** and click **"Add Provider"**
5. Select **Pushover** as the service type
6. Enter your **Application API Token** in the token field
7. Enter your **User Key** in the User Key field
8. Configure notification triggers and save
> **Security:** Your Application API Token is stored securely and is never exposed in API responses.
#### Basic Message
```json
{
"title": "{{.Title}}",
"message": "{{.Message}}"
}
```
#### Message with Priority
```json
{
"title": "{{.Title}}",
"message": "{{.Message}}",
"priority": 1
}
```
**Pushover priority levels:**
- `-2` - Lowest (no sound or vibration)
- `-1` - Low (quiet)
- `0` - Normal (default)
- `1` - High (bypass quiet hours)
> **Note:** Emergency priority (`2`) is not supported and will be rejected with a clear error.
## Planned Provider Expansion
Additional providers (for example Telegram) are planned for later staged