Name the panel in the settings disclosure button
What does this MR do and why?
The settings disclosure now sits in the sidebar footer next to Help, outside the panel it configures. A bare "Settings" there doesn't say what it configures, so this MR names the panel.
How it works
Sidebars::Menu gains a disclosure_title, defaulting to title, which each settings menu overrides. It is serialized only when it differs from title, so menus that don't need a qualified label don't pay for an extra field in the payload.
The frontend uses it for the disclosure button's visible label, its aria-label, and the collapsed-sidebar tooltip, falling back to title:
disclosureTitle() {
return this.item.disclosure_title || this.item.title;
},Which labels are visible in this MR
This MR adds the override for four menus, but only two panels currently render a disclosure. On master, settingsAsDisclosure only applies to the panels in PANELS_WITH_HIDEABLE_UNPINNED_ITEMS — group and project. The other two labels are defined here but dormant: they become visible when the later MRs opt their panel into the disclosure.
| Panel | Disclosure button | Visible from |
|---|---|---|
| Project | Project settings | this MR |
| Group | Group settings | this MR |
| Admin area | Admin settings | !265260 (next) |
| Organization admin | Organization settings | !265261 (merged) |
| User settings | User settings | !265262, which adds its own override |
The overrides for Admin and Organization admin land here, with the mechanism they belong to, rather than being scattered across the MRs that switch each panel on.
What is deliberately not renamed
title is unchanged, so the qualified label is scoped to the disclosure button and nothing else:
- the in-place sidebar section when the flag is off
- the command palette
- pinned items
data-qa-section-name, so QA selectors keep matching "Settings"
Project settings already existed as a translated string and is reused. gettext:regenerate adds three: Admin|Admin settings, Group settings, Organization settings.
The plain organization panel is excluded throughout the stack — it keeps its in-place settings section and renders no disclosure, so its label would never be used.
Stack (2 of 6): footer placement → this MR → Admin area → organization admin → user settings → settings pins.
References
Screenshots or screen recordings
Project
| Before | After |
|---|---|
![]() |
![]() |
![]() |
![]() |
Group
| Before | After |
|---|---|
![]() |
![]() |
![]() |
![]() |
How to set up and validate locally
-
Enable the feature flag in the Rails console:
Feature.enable(:hide_unpinned_sidebar_items) -
Visit a project. Confirm the button in the sidebar footer reads Project settings.
-
Visit a group. Confirm it reads Group settings.
-
Collapse the sidebar to icon-only. Confirm the tooltip shows the same qualified label.
-
Visit a settings page and confirm the button shows as selected.
-
Disable the flag and confirm the in-place Settings section is unchanged — the qualified label must not appear anywhere with the flag off.
Not testable in this MR: the Admin area and Organization admin sidebars render no settings disclosure yet, so they still show an in-place Settings section. Their labels are checked in !265260 and !265261 (merged).
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.







