b1107c0a54
change_email_view ya devolvía JSON en POST (sesión requerida). ChangeEmailForm.tsx replica el form (contraseña actual con mostrar-ocultar, correo actual/nuevo/confirmar, token) y hace fetch form-urlencoded + CSRF a change-email; mensaje HTML. Sustituye el <form> + change_email_response.js por #change-email-app. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>