Found in the review of the capture-live-form-state branch.
SnapshotDom.capturedAttributeMap and replacementText (CapturePage.kt) each rebuild formState() and attributeMap() for the same element, so every input / textarea / select / option does this work twice (and isSecretControl runs twice per textarea).
Both producers also wire two shared functions with identical (name, attributes, state) parameters.
Fix: a single shared captureFormControl(name, attributes, state) in FormControls.kt returning both the attributes and the replacement text, called once in walkElement / flowElement.
Found in the review of the
capture-live-form-statebranch.SnapshotDom.capturedAttributeMapandreplacementText(CapturePage.kt) each rebuildformState()andattributeMap()for the same element, so everyinput/textarea/select/optiondoes this work twice (andisSecretControlruns twice per textarea).Both producers also wire two shared functions with identical
(name, attributes, state)parameters.Fix: a single shared
captureFormControl(name, attributes, state)inFormControls.ktreturning both the attributes and the replacement text, called once inwalkElement/flowElement.