3 months ago
4302e50the grid's on/off switches wrote straight to the server on every flip. they
now bind through useSaveQueueField like the rules page, so a run of toggles
collects into one batch and the unsaved-changes bar commits or discards it.
mounting the bar is also what arms the nav guard while dirty.
commit fans out one write per flipped workflow. enabling runs the strict
validator server-side and can refuse — those keys stay queued via failedKeys
so the toggle keeps the user's intent on screen while the rest clear.
the dither now animates in and out, gated on `workflow.enabled` — the SERVER's
flag, never the queued toggle. texture on a card therefore always means the
workflow is genuinely live: flipping the switch does nothing to it until the
batch saves and the list refetches. easing is a quantized ramp so the texture
materialises in bands the way an ordered dither thresholds a gradient, rather
than a generic fade. opacity-only, so it survives reducedMotion as a
crossfade, and initial={false} keeps already-live cards from animating on load.Parent3867aa1