audiobookshelf/client/pages/config
Mikkel Mikkelsen 9391a940f5 Add ntfy.sh as notification provider alongside Apprise
Support sending notifications via ntfy.sh or self-hosted ntfy servers
as an alternative to Apprise. Each notification can be configured to
use either provider via a dropdown in the create/edit modal.

Server changes:
- Add ntfyUrl and ntfyToken fields to NotificationSettings
- Add ntfyTopic field to Notification model with getNtfyPayload()
- Route notifications to Apprise or ntfy based on ntfyTopic presence
- Add null guard for appriseApiUrl before sending
- Add undefined guards in update() to prevent partial PATCH from
  resetting unrelated fields

Client changes:
- Add ntfy.sh settings section on the notifications config page
- Add provider dropdown (Apprise/ntfy) in notification edit modal
- Extract shared saveSettings() helper to deduplicate form submissions
- Use i18n for all user-visible strings
2026-04-15 11:02:02 +02:00
..
api-keys Log when token expiry is set via env var, api-keys create/update returns with user association 2025-07-06 13:10:14 -05:00
item-metadata-utils Update Confirm component to support allowHtml prompt option 2026-03-18 16:51:51 -05:00
users Update session DeviceInfo with sanitize on clientDeviceInfo 2026-03-11 17:03:07 -05:00
authentication.vue Add restart server message on authentication page when oidc is enabled #4064 2025-05-13 17:01:00 -05:00
backups.vue Tailwind V4 migration initial commit 2025-03-16 16:41:37 +02:00
email.vue Tailwind V4 migration initial commit 2025-03-16 16:41:37 +02:00
index.vue Update Confirm component to support allowHtml prompt option 2026-03-18 16:51:51 -05:00
libraries.vue Tailwind V4 migration initial commit 2025-03-16 16:41:37 +02:00
log.vue Tailwind V4 migration initial commit 2025-03-16 16:41:37 +02:00
notifications.vue Add ntfy.sh as notification provider alongside Apprise 2026-04-15 11:02:02 +02:00
rss-feeds.vue Use getServerSetting to ensure serverSettings is set before accessing 2025-07-06 17:39:03 -05:00
sessions.vue Update session DeviceInfo with sanitize on clientDeviceInfo 2026-03-11 17:03:07 -05:00
stats.vue Consistent icons in stats page 2025-03-26 13:00:10 +01:00