Email verification "Verify code" button stuck disabled after a failed attempt (live in prod)

Impact

On sign-in email verification, after a wrong/rate-limited code the "Verify code" button stays disabled. User can't retry without a full page reload. Live in prod now (accessible_disabled_button is globally enabled).

Cause

Legacy jQuery in main.js:193 disables submit buttons on submit and only re-enables on rails-ujs ajax:complete — which never fires for axios/Vue forms. This was masked because GlButton used to keep disabled in its vdom (Vue cleared the stuck attr on re-render). With accessible_disabled_button on, GlButton renders aria-disabled instead, so nothing clears jQuery's native disabled.

Pre-existing jQuery bug; the flag just unmasked it.

Affected components

5 at-risk auth components (form uses @submit.prevent, no navigation, so ajax:complete never fires):

  • email_verification.vue — confirmed, fixed in !247432 (merged)
  • email_form.vue
  • international_phone_input.vue, verify_phone_verification_code.vue — same shape, likely broken
  • jira_connect version_select_form.vue

(~37 non-auth Vue submit buttons share the pattern; auth ones are the priority.)

Fix

Make main.js skip GlButtons (they own their own disabled state). Fixes the whole class in one place; needs careful testing since the handler's usage isn't fully known.

Per-component js-no-auto-disable is the stopgap already applied to email_verification.vue.


Ownership: authentication + foundations.

Related: FF rollout #600158 (closed), MR !247432 (merged)

Edited by 🤖 GitLab Bot 🤖