+
+ {/* ── Enable + Interval (top priority) ── */}
+
+
+
+
+
{t("heartbeat.enabled")}
+
{t("heartbeat.enabledHint")}
+
+
+
+
+ setIntervalMin(Math.max(5, Number(e.target.value) || 5))}
+ className="w-16 text-center text-base md:text-sm"
+ />
+ min
+
+
+
+ {/* ── Delivery — WHERE it sends ── */}
+
+
+
+
+ {t("heartbeat.sectionDelivery")}
+
+
+
+
+
+ {/* ── Schedule — WHEN it runs ── */}
+
+
+
+
+ {t("heartbeat.sectionSchedule")}
+
+
+
+
{t("heartbeat.scheduleHint")}
+
+
+ {/* ── Checklist — WHAT the agent does ── */}
+
+
+
+
+ {t("heartbeat.checklist")}
+
+
+
{t("heartbeat.checklistHint")}
+ {checklistLoading ? (
+
+
+ {t("heartbeat.checklistLoading")}
+
+ ) : (
+
+
+ {/* ── Advanced (collapsible) ── */}
+
+
+ {showAdvanced && (
+
+
+
+
+
setAckMaxChars(Number(e.target.value))}
+ className="text-base md:text-sm"
+ />
+
{t("heartbeat.ackMaxCharsHint")}
+
+
+
+
setMaxRetries(Number(e.target.value))}
+ className="text-base md:text-sm"
+ />
+
{t("heartbeat.maxRetriesHint")}
+
+
+
+
+
{t("heartbeat.isolatedSession")}
+
{t("heartbeat.isolatedSessionHint")}
+
+
+
+
+
+
{t("heartbeat.lightContext")}
+
{t("heartbeat.lightContextHint")}
+
+
+
+
+ )}
+
+
+ {/* Bottom padding for scroll */}
+
+
+
+ {/* Footer — fixed at bottom */}
+