edit-a-shape-as-a-shape
Installation
SKILL.md
Give the control the shape of the value
Ten sliders show ten unrelated numbers and make the user picture the result. A plot shows the result. The control should have the shape of the value it edits — and it should sit in the settings list, because the user adjusts it while listening and every navigation step between them and the curve is a step they take twice.
The skeleton is a draft, a raw pointer loop, and one commit:
var draft by remember { mutableStateOf<List<Float>?>(null) }
val shown = draft ?: bands
// The gesture handler is installed once, so it must not close over the bands of the composition
// that installed it — that is the flat placeholder, before the stored curve has loaded.
val currentBands by rememberUpdatedState(bands)
val commit by rememberUpdatedState(onBandsChange)