diff --git a/.changeset/fuzzy-notification-padding.md b/.changeset/fuzzy-notification-padding.md new file mode 100644 index 0000000000..22118d9b44 --- /dev/null +++ b/.changeset/fuzzy-notification-padding.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Fix cramped padding on the Notifications "Failure notification mode" settings card. +category: fix +dev: Wrap the failure-notification card fields in `.notification-provider-body` in NotificationsSection so it matches sibling provider-card padding on desktop and mobile. diff --git a/packages/dashboard/app/__tests__/settings-sections.test.tsx b/packages/dashboard/app/__tests__/settings-sections.test.tsx index 4ab5d2b3d0..7cfe9b51ab 100644 --- a/packages/dashboard/app/__tests__/settings-sections.test.tsx +++ b/packages/dashboard/app/__tests__/settings-sections.test.tsx @@ -165,6 +165,24 @@ describe("NotificationsSection", () => { expect(updater(emptyForm)).toMatchObject({ failureNotificationMode: "all" }); }); + it("nests the failure-notification mode field inside the padded provider body", () => { + render( + , + ); + + const select = screen.getByLabelText("Failure notification mode") as HTMLSelectElement; + const providerBody = select.closest(".notification-provider-body"); + expect(providerBody).not.toBeNull(); + expect(providerBody?.closest(".notification-provider-card")).not.toBeNull(); + }); + it("shows the ntfy topic field only when ntfy is enabled", () => { const { rerender } = render( {t("settings.notifications.notifications", "Notifications")}
-
- - - {t("settings.notifications.stickyOnlySuppressesRecoveredFailuresTerminalOnlyWaits", "Sticky-only suppresses recovered failures; terminal-only waits for paused/in-review failed tasks; all restores legacy alerts.")} -
-
- - { - const parsed = Number(e.target.value); - setForm((f) => ({ - ...f, - failureNotificationDelayMs: Number.isFinite(parsed) && parsed >= 0 ? parsed : 0, - })); - }}/> - {t("settings.notifications.howLongAFailureMustPersistBeforeA", " How long a failure must persist before a push notification is sent. 0 = notify immediately. Default: 30000 (30 seconds). ")} + {/* + FNXC:SettingsLayout 2026-07-11-19:00: + The failure-notification card must reuse `.notification-provider-body` because `.notification-provider-card` has no own padding; this keeps its field gutters aligned with ntfy/webhook provider cards on desktop and mobile. + */} +
+
+ + + {t("settings.notifications.stickyOnlySuppressesRecoveredFailuresTerminalOnlyWaits", "Sticky-only suppresses recovered failures; terminal-only waits for paused/in-review failed tasks; all restores legacy alerts.")} +
+
+ + { + const parsed = Number(e.target.value); + setForm((f) => ({ + ...f, + failureNotificationDelayMs: Number.isFinite(parsed) && parsed >= 0 ? parsed : 0, + })); + }}/> + {t("settings.notifications.howLongAFailureMustPersistBeforeA", " How long a failure must persist before a push notification is sent. 0 = notify immediately. Default: 30000 (30 seconds). ")} +