uplift: add Vue train-selector widget for uplift target selection (bug 2044143) #1255 (lando@main)

Warnings
  • Checking...
Blockers
  • Checking...
Branches bug-2044143-uplift-widget -> bug-2047613-vue-bootstrap
Repo lando@main (git) (git://github.com/cgsheeh/lando.git)
Author cgsheeh
State open
Commit Title uplift: add Vue train-selector widget for uplift target selection (bug 2044143)
Commit Body Add a train-selector widget that progressively enhances the Django-rendered "Uplift repositories" checkboxes in the uplift request modal. The native checkboxes remain the source of truth for the form submission, so the backend is unchanged -- the widget only reads and toggles them, and falls back to the plain checkboxes if it cannot load. When the "Request Uplift" button is first clicked, the widget fetches release-train guidance from the whattrainisitnow.com API (see bug 2045812) and validates the response with a Zod schema. That response describes the current state of the release cycle (which version is on each train, whether betas remain, whether the release candidate has shipped); the held response drives every recommendation, landing description, and warning the widget produces. The page CSP's `connect-src` is widened to the API origin, which a `csp_origin` helper derives from the configured URL. The widget presents two tabs: - "Select Firefox Version": choosing a target version resolves -- based on the current cycle state -- to the correct uplift train(s) (beta, release, or both), ticks the matching repositories, and shows a single line describing where the patch will land. - "Select Uplift Train": manual repository selection with per-train landing hints that reflect the cycle state, including a warning when beta is selected after betas have closed. The tabs are keyboard- and screen-reader-accessible. Builds on the Vue/TypeScript frontend bootstrap (bug 2047613).

Landings

Not yet Landed
There has been no attempt to land revisions in this stack.