Backend: untouched (sends 0x0a newlines) Frontend: on project_form.changed, unbind AgentIO's native inputed, rebind with custom XHR that sends url-encoded body and parses 0x0a-separated NDJSON