Bugfix
- Fixed a single form submission firing multiple XHR requests when
xhr_submitis enabled.setupListener()deleted the "listener already attached" marker immediately before_attachDirectListener()checked it, so the guard could never match and every call stacked another submit listener. Attachment is now idempotent and re-arms in place, which matters becausesetupListener()legitimately runs again after each XHR wrapper update.