Draft: Add Vue 3 rollout metadata for seat management pages

What does this MR do and why?

Moves the 24 page entrypoints owned by group::seat management to Vue 3, behind our own feature flag vue3_migrate_seat_management. The flag is off by default, so there is no change in production until we enable it.

Without this, the repo-wide final sweep (!261154 (merged)) claims these entrypoints under the shared vue3_migrate_final_sweep flag. An own flag gives us a rollback lever scoped to our pages instead of one shared with every other laggard.

Each entrypoint gets a vue3_migration.yml next to its index.js. admin/users and admin/users/edit exist in both CE and EE, so they get two identical copies, as the loader requires.

status: rollout
feature_flag: vue3_migrate_seat_management
group: group::seat management
migration_issue: https://gitlab.com/gitlab-org/gitlab/-/work_items/633485
The 24 entrypoints
Entrypoint Editions
admin/application_settings/roles_and_permissions + /new /edit /show EE
groups/settings/roles_and_permissions + /new /edit /show EE
admin/application_settings/service_accounts CE
groups/settings/service_accounts/index CE
projects/settings/service_accounts/index CE
admin/users CE + EE
admin/users/edit CE + EE
admin/users/new CE
admin/credentials CE
admin/impersonation_tokens CE
admin/keys CE
admin/role_promotion_requests EE
admin/gitlab_duo/seat_utilization EE
groups/ldap_group_links EE
groups/saml_group_links EE
groups/security/credentials CE
groups/usage_quotas/pending_members EE
users/terms/index CE

Ownership comes from the Vue 3 migration dashboard (https://vue3-migration-dashboard-0afc95.gitlab.io/), which attributes an entrypoint by its controller's feature_category. .gitlab/CODEOWNERS is not usable for this: it has no app/assets rules for Fulfillment, so every path falls through to the frontend maintainers catch-all.

Screenshots or screen recordings

No UI change while the flag is off.

How to set up and validate locally

  1. Enable the flag: Feature.enable(:vue3_migrate_seat_management).
  2. Restart vite, then open one of the pages above.
  3. In the browser console, run document.querySelectorAll('[data-gitlab-vue3-app]'). A page that mounts a Vue app returns at least one node.

Verification so far

Manual verification is still in progress. Confirmed running under Vue 3 with no console errors:

Entrypoint URL Mounted apps
pages.admin.users /admin/users AdminUsersAppRoot, AdminUsersFilterAppRoot
pages.admin.users.new /admin/users/new UserTypeSelectorRoot
pages.admin.users.edit /admin/users/<user>/edit PasswordInputRoot, UserTypeSelectorRoot, ResetButtonRoot
pages.admin.impersonation_tokens /admin/users/<user>/impersonation_tokens AdminUserActionsRoot, NewAccessTokenRoot, ExpiresAtFieldRoot, AccessTokenTableRoot
pages.groups.settings.service_accounts.index /groups/<group>/-/settings/service_accounts ServiceAccountsRoot, CustomBreadcrumbsRoot

The remaining pages are licensed EE features that need an Ultimate licence on the local instance. This MR stays in Draft until they are checked.

Automated checks, all green:

  • node -e 'require("./config/vue3migration/migration.js").loadVue3Migrations()' resolves all 24 entry names, with no CE/EE divergence.
  • spec/lib/gitlab/vue3_migration_files_spec.rb
  • spec/lib/gitlab/vue3_migration_spec.rb and spec/helpers/webpack_helper_spec.rb

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist.

References

Merge request reports

Loading
Loading