diff --git a/packages/ui/src/features/loops/components/LoopBehaviorFields.tsx b/packages/ui/src/features/loops/components/LoopBehaviorFields.tsx new file mode 100644 index 0000000000..935185a321 --- /dev/null +++ b/packages/ui/src/features/loops/components/LoopBehaviorFields.tsx @@ -0,0 +1,44 @@ +import type { LoopSchemas } from "@posthog/api-client/loops"; +import { Switch } from "@posthog/quill"; +import { Flex, Text } from "@radix-ui/themes"; +import { isAutoFixEnabled, withAutoFix } from "../loopFormTypes"; + +interface LoopBehaviorFieldsProps { + behaviors: LoopSchemas.LoopBehaviors; + onChange: (behaviors: LoopSchemas.LoopBehaviors) => void; + disabled?: boolean; +} + +export function LoopBehaviorFields({ + behaviors, + onChange, + disabled, +}: LoopBehaviorFieldsProps) { + return ( + + + + + Auto-fix pull requests + + + Watch CI and review comments on PRs this loop opens, and let Claude + push fixes. + + + + onChange(withAutoFix(behaviors, checked)) + } + /> + + + ); +} diff --git a/packages/ui/src/features/loops/components/LoopForm.tsx b/packages/ui/src/features/loops/components/LoopForm.tsx index f7e26acae0..15647e6f73 100644 --- a/packages/ui/src/features/loops/components/LoopForm.tsx +++ b/packages/ui/src/features/loops/components/LoopForm.tsx @@ -21,11 +21,13 @@ import { useLoopDraftStore } from "../loopDraftStore"; import { emptyLoopFormValues, formValuesToLoopWrite, + isAutoFixEnabled, isLoopFormValid, isTriggerDraftValid, type LoopFormValues, loopToFormValues, } from "../loopFormTypes"; +import { LoopBehaviorFields } from "./LoopBehaviorFields"; import { Field } from "./LoopFormPrimitives"; import { LoopModelFields } from "./LoopModelFields"; import { LoopNotificationsFields } from "./LoopNotificationsFields"; @@ -230,6 +232,16 @@ export function LoopForm({ loop }: LoopFormProps) { + + patch({ behaviors })} + /> + + + + { const isCurrent = index === current; const isDone = index < current && complete[index]; - // Free navigation back to any earlier step; forward only into the step - // immediately after a completed one, so you can't skip required fields. - const reachable = index <= current || complete[index - 1]; + // Steps navigate freely in both directions; skipping ahead is safe + // because Next stays gated per step and Create on the whole form. return (