Move project GitLab Duo settings out of pages
What does this MR do and why?
This MR started as a pure move of the shared Duo readiness rows out of pages/projects/shared/permissions/. This lets the upcoming group readiness section reuse them instead of duplicating code.
During review, the maintainer asked why duo_readiness_card.vue stayed in pages/, and noted that pages/ should hold only initialization code, not components. This keeps CODEOWNERS and module boundaries clear. So this MR now moves the whole project GitLab Duo settings app out of pages/. This matches how the group and admin GitLab Duo settings already work.
- Root component and init:
ai/settings/pages/gitlab_duo_settings.vueandai/settings/init_gitlab_duo_settings.js - Child components (file exclusions, dependency-bump profile modal):
ai/settings/components/ - Readiness pieces (shared rows, project card, agent configuration row):
ai/settings/readiness/ - Auto-remediation queries (owned by Software Composition Analysis, only used here):
ai/settings/graphql/queries/andai/settings/graphql/mutations/ - Duo help paths and setting IDs move to
~/ai/constants.js; the sharedproject_setting_row.vuemoves to~/projects/settings/components/
References
- Closes #630146 (closed)
- Epic &23651
- Project card epic &22591 (closed)
- Frontend guide: page-specific JavaScript
Screenshots or screen recordings
This MR does not change behaviour, template, copy, or style. The readiness card renders the same as before.
| Before | After |
|---|---|
![]() |
![]() |
How to set up and validate locally
- Enable the flag for your user:
Feature.enable(:duo_agent_readiness_settings, User.find_by_username('root')) - Open a project.
- Go to Settings > General.
- Expand the GitLab Duo section.
- Confirm the section renders and saves the same as on master.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

