diff --git a/app/client/modules/notifications/components/create-notification-form.tsx b/app/client/modules/notifications/components/create-notification-form.tsx index 01e8dc08..63697c13 100644 --- a/app/client/modules/notifications/components/create-notification-form.tsx +++ b/app/client/modules/notifications/components/create-notification-form.tsx @@ -518,6 +518,22 @@ export const CreateNotificationForm = ({ onSubmit, mode = "create", initialValue )} /> + ( + + Access token (Optional) + + + + + Access token for server authentication. Will take precedence over username/password if set. + + + + )} + /> { throw new BadRequestError("Volume is not mounted"); } - logger.info(`Starting backup for volume ${volume.name} to repository ${repository.name}`); + logger.info(`Starting backup ${schedule.name} for volume ${volume.name} to repository ${repository.name}`); serverEvents.emit("backup:started", { scheduleId, @@ -248,6 +248,7 @@ const executeBackup = async (scheduleId: number, manual = false) => { .sendBackupNotification(scheduleId, "start", { volumeName: volume.name, repositoryName: repository.name, + scheduleName: schedule.name, }) .catch((error) => { logger.error(`Failed to send backup start notification: ${toMessage(error)}`); @@ -341,9 +342,13 @@ const executeBackup = async (scheduleId: number, manual = false) => { .where(eq(backupSchedulesTable.id, scheduleId)); if (finalStatus === "warning") { - logger.warn(`Backup completed with warnings for volume ${volume.name} to repository ${repository.name}`); + logger.warn( + `Backup ${schedule.name} completed with warnings for volume ${volume.name} to repository ${repository.name}`, + ); } else { - logger.info(`Backup completed successfully for volume ${volume.name} to repository ${repository.name}`); + logger.info( + `Backup ${schedule.name} completed successfully for volume ${volume.name} to repository ${repository.name}`, + ); } serverEvents.emit("backup:completed", { @@ -357,12 +362,15 @@ const executeBackup = async (scheduleId: number, manual = false) => { .sendBackupNotification(scheduleId, finalStatus === "success" ? "success" : "warning", { volumeName: volume.name, repositoryName: repository.name, + scheduleName: schedule.name, }) .catch((error) => { logger.error(`Failed to send backup success notification: ${toMessage(error)}`); }); } catch (error) { - logger.error(`Backup failed for volume ${volume.name} to repository ${repository.name}: ${toMessage(error)}`); + logger.error( + `Backup ${schedule.name} failed for volume ${volume.name} to repository ${repository.name}: ${toMessage(error)}`, + ); await db .update(backupSchedulesTable) @@ -385,6 +393,7 @@ const executeBackup = async (scheduleId: number, manual = false) => { .sendBackupNotification(scheduleId, "failure", { volumeName: volume.name, repositoryName: repository.name, + scheduleName: schedule.name, error: toMessage(error), }) .catch((notifError) => { diff --git a/app/server/modules/notifications/builders/ntfy.ts b/app/server/modules/notifications/builders/ntfy.ts index c3477ffa..41120456 100644 --- a/app/server/modules/notifications/builders/ntfy.ts +++ b/app/server/modules/notifications/builders/ntfy.ts @@ -4,11 +4,17 @@ export function buildNtfyShoutrrrUrl(config: Extract