Artifact Registry organization settings area: Rails mount, navigation, and Vue shell (monolith/S01 Steps 5, 5a)
Context
Stand up the Settings organization area for Artifact Registry: a single settings page (Rails mount plus a Settings-menu item) and its Vue sectioned-settings shell. Builds on the shared EE seam (#599226 (closed)).
This issue covers Steps 5 and 5a of the monolith/S01 plan.
Scope
Step 5 - Settings area Rails mount and navigation
- Settings route
.../-/settings/artifact_registry->Organizations::Settings::ArtifactRegistryController#show, gated via the shared concern, declaringfeature_category :artifact_registry, rendering the settings mount view. - App-data helper returning the settings mount config as JSON.
- Add the missing
prepend_mod_withseam to the FOSS organizationsSettingsMenu, plus an EE override that inserts the flag/permission-gated "Artifacts" settings item viainsert_item_after.
Step 5a - Settings area Vue sectioned-settings shell
- Fresh AR-owned settings bootstrap plus the parent sectioned-settings shell: a vertical stack of independently collapsible sections, search-driven expand/collapse, a shared alert surface, and an empty state, composing the framework-shared
SettingsBlockandSearchSettings, with acreateDefaultClientApollo provider. Registers no section content.
Acceptance
- Flag on + access -> 200 settings mount; flag off / no access -> 404.
- Flag on + permitted -> the Settings "Artifacts" item renders (guarding the prepend seam); flag off -> the item is hidden.
- The shell renders registered sections stacked, toggles an individual section's state, expands/collapses on settings search, and renders without error when no sections are registered.
Dependencies
- Requires the shared EE seam (#599226 (closed)).
References
- Epic: gitlab-org#22450 (closed)
- Plan (Steps 5, 5a): https://gitlab.com/gitlab-org/ops/artifact-registry/-/blob/main/docs/plans/monolith/2026-06-24-vue-app-shell.md
- Spec (monolith/S01): https://gitlab.com/gitlab-org/ops/artifact-registry/-/blob/main/docs/specs/monolith/S01-vue-app-shell-and-composition-surfaces.md