Skip to content

Reorganize nav menu and add collapsible sidebar#7488

Merged
jack-gale-ethyca merged 8 commits intomainfrom
systems_nav
Mar 4, 2026
Merged

Reorganize nav menu and add collapsible sidebar#7488
jack-gale-ethyca merged 8 commits intomainfrom
systems_nav

Conversation

@jack-gale-ethyca
Copy link
Contributor

@jack-gale-ethyca jack-gale-ethyca commented Feb 25, 2026

Ticket ENG-2588

Description Of Changes

  • Break Settings into three sections: Core configuration, Compliance, and Settings
  • Add collapsible nav with smooth expand/collapse transition and logo crossfade
  • Style flyout menus with minos background, corinth text, and proper padding
  • Add selected parent icon highlight and hover states in collapsed mode
  • Fix content width to expand properly when nav collapses (FixedLayout, system pages)
  • Fix content bounce on expand via flex-based layout in _app.tsx
  • Make dev Plus nav override reliable using NODE_ENV instead of NEXT_PUBLIC_APP_ENV

Steps to Confirm

  1. View the left nav menu and ensure settings pages are regrouped and in the proper buckets
  2. Select these views to make sure the navigation is working (Hover states, selected states, page loading)
  3. Select the fides logo to collapse the menu, ensure you can hover and navigate to all pages.
  4. Ensure the main page contents span to the full width of screen when the menu is collapsed
  5. Check the data map report and make sure the table renders to the width of the page and you can scroll horizontally.
  6. Ensure this works for fides and fides-plus users

Pre-Merge Checklist

  • Issue requirements met
  • All CI pipelines succeeded
  • CHANGELOG.md updated
    • Add a db-migration This indicates that a change includes a database migration label to the entry if your change includes a DB migration
    • Add a high-risk This issue suggests changes that have a high-probability of breaking existing code label to the entry if your change includes a high-risk change (i.e. potential for performance impact or unexpected regression) that should be flagged
    • Updates unreleased work already in Changelog, no new entry necessary
  • UX feedback:
    • All UX related changes have been reviewed by a designer
    • No UX review needed
  • Followup issues:
    • Followup issues created
    • No followup issues
  • Database migrations:
    • Ensure that your downrev is up to date with the latest revision on main
    • Ensure that your downgrade() migration is correct and works
      • If a downgrade migration is not possible for this change, please call this out in the PR description!
    • No migrations
  • Documentation:
    • Documentation complete, PR opened in fidesdocs
    • Documentation issue created in fidesdocs
    • If there are any new client scopes created as part of the pull request, remember to update public-facing documentation that references our scope registry
    • No documentation updates required

Summary by CodeRabbit

  • New Features

    • Collapsible navigation sidebar with smooth transitions and logo crossfade effect
    • Reorganized settings menu into Core configuration, Compliance, and Settings groups
    • Enhanced flyout menu styling with improved visual design
  • Improvements

    • Fixed content width to properly expand when navigation collapses
    • Updated navigation icons throughout the interface

- Break Settings into three sections: Core configuration, Compliance, and Settings
- Add collapsible nav with smooth expand/collapse transition and logo crossfade
- Style flyout menus with minos background, corinth text, and proper padding
- Add selected parent icon highlight and hover states in collapsed mode
- Fix content width to expand properly when nav collapses (FixedLayout, system pages)
- Fix content bounce on expand via flex-based layout in _app.tsx
- Make dev Plus nav override reliable using NODE_ENV instead of NEXT_PUBLIC_APP_ENV

Co-authored-by: Cursor <[email protected]>
@jack-gale-ethyca jack-gale-ethyca requested a review from a team as a code owner February 25, 2026 19:52
@jack-gale-ethyca jack-gale-ethyca requested review from jpople and removed request for a team February 25, 2026 19:52
@vercel
Copy link
Contributor

vercel bot commented Feb 25, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fides-plus-nightly Ready Ready Preview, Comment Mar 4, 2026 7:15pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
fides-privacy-center Ignored Ignored Mar 4, 2026 7:15pm

Request Review

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 25, 2026

Greptile Summary

This PR reorganizes the navigation menu structure and adds a collapsible sidebar feature with smooth animations and visual improvements.

Major changes:

  • Reorganized settings menu items into three distinct sections: Core configuration (taxonomy, integrations, notifications, custom fields, properties, domains), Compliance (locations, regulations), and Settings (privacy requests, users, organization, email templates, consent)
  • Added collapsible navigation sidebar with smooth expand/collapse transitions (0.35s ease), logo crossfade between expanded (107px) and collapsed (24px icon) states, and localStorage persistence
  • Styled flyout menus with minos background (#2b2e35), corinth text (#fafafa), selected state highlighting, and hover states
  • Fixed content width expansion by using flex-based layout in _app.tsx with flex={1}, minWidth={0}, and overflow="hidden" to prevent content bounce
  • Made dev Plus nav override more reliable by using NODE_ENV === "development" instead of NEXT_PUBLIC_APP_ENV for the devShowPlusNav check
  • Updated all Cypress tests to account for new nav structure and prevent collapsed state during testing

Issues found:

  • The PR exceeds the file count limit (18 files changed vs. 15 file limit)
  • Hardcoded color values in SCSS that should be extracted as named variables

The implementation is well-structured with proper state management, smooth transitions, and comprehensive test updates.

Confidence Score: 4/5

  • This PR is safe to merge with only minor style improvements needed
  • The implementation is solid with proper state management, smooth transitions, comprehensive test coverage, and no logical errors. The score is 4 (not 5) due to two issues: (1) the PR exceeds the 15-file limit with 18 files changed, and (2) hardcoded color values in SCSS that should be extracted as named variables per coding standards. These are minor concerns that don't affect functionality.
  • NavMenu.module.scss needs color values extracted into named variables. Otherwise, no files require special attention.

Important Files Changed

Filename Overview
clients/admin-ui/src/features/common/nav/NavMenu.module.scss Adds styles for collapsible nav with flyout menus; contains hardcoded color values that should be extracted
clients/admin-ui/src/features/common/nav/MainSideNav.tsx Implements collapsible sidebar with logo crossfade and localStorage persistence; uses window access for localStorage
clients/admin-ui/src/features/common/nav/nav-config.tsx Reorganizes settings into three sections (Core configuration, Compliance, Settings); uses window.Cypress directly
clients/admin-ui/src/features/common/features/features.slice.ts Uses NODE_ENV instead of NEXT_PUBLIC_APP_ENV for dev Plus nav override, making it more reliable
clients/admin-ui/src/pages/_app.tsx Fixes content bounce on expand via flex-based layout with flex=1, minWidth=0, overflow=hidden

Last reviewed commit: 7e39f64

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

18 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

@jack-gale-ethyca
Copy link
Contributor Author

jack-gale-ethyca commented Feb 25, 2026

I fixed the hardcoded colors so that should be OK. I also ran this through our FE dev rules so that should be looking good now.

@jack-gale-ethyca
Copy link
Contributor Author

@jpople @nrxsmith This is now ready for review, I passed this through our dev rules and cleaned up a few things. The PR size check is failing but that's just due to the number of files changed. I can't complete this fully without touching a number of files.

Copy link
Contributor

@jpople jpople left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks okay, few minor tweaks and I think we shouldn't ship the devShowPlusNav option.

UX-wise, I don't think the icons are sufficiently clear to actually be usable for navigation when collapsed-- might help to at least add the section headings into the flyout menus too.

Image

I wonder also if there's a way we can more clearly communicate that clicking the logo is what toggles the collapsed state, I'm not sure I would ever come to that conclusion on my own.

Last thing, if possible it'd be nice to have more visual continuity with the logo during the expand-collapse animation; notice how the square logo transitions in and out despite remaining in the same place overall.

Screen.Recording.2026-02-27.at.14.38.20.mov

Added section headers to the collapsed state flyout menus
@jack-gale-ethyca
Copy link
Contributor Author

@jpople I resolved your comments, thanks for adding those. I also added headers to our our collapsed state flyouts so you can see what group these child views belong to. I chose to not resolve the discoverability comment. I can't come up with a clean way to communicate how to use this beyond what I have today. Other solutions include adding an expanded and collapsed icon but it just adds complexity to the interaction and transition. I'm good with the current design, we can riff on it after playing with it for a bit.

@nrxsmith
Copy link
Contributor

nrxsmith commented Mar 3, 2026

@jack-gale-ethyca once Jeremy is good, that works for me. Just give me a heads up before you merge, I'll make some test updates.

@jpople jpople disabled auto-merge March 4, 2026 17:18
Copy link
Contributor

@jpople jpople left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One small update to the docs and then looks like we're good!

`NEXT_PUBLIC_DEV_SHOW_PLUS_NAV=true`

The nav will show the full menu; Plus-only pages may 404 or error if the backend is not Fides Plus. When this flag is set, the nav also shows every item regardless of your user's scopes, so you can see the full menu even with a limited role.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should make sure we remove this from the docs as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just removed this, this is stale.

@coderabbitai
Copy link

coderabbitai bot commented Mar 4, 2026

📝 Walkthrough

Walkthrough

The changes implement a comprehensive navigation restructuring that reorganizes the admin sidebar into distinct groups (Core configuration, Compliance, Settings), introduces collapsible sidebar functionality with localStorage persistence, updates styling for flyout menus and transitions, refactors TypeScript type definitions to interfaces, and adjusts layout components to accommodate responsive sidebar behavior.

Changes

Cohort / File(s) Summary
Navigation Configuration & Type Definitions
clients/admin-ui/src/features/common/nav/nav-config.tsx, clients/admin-ui/src/features/common/nav/nav-config.test.ts
Reorganized navigation groups: renamed "Settings" to "Core configuration," introduced "Compliance" group, repositioned navigation routes; refactored type aliases to interfaces (NavConfigRoute, NavConfigGroup, NavGroupChild, NavGroup, ActiveNav); updated test assertions to reflect new navigation structure and group organization.
Collapsible Navigation Component
clients/admin-ui/src/features/common/nav/MainSideNav.tsx
Added collapsible sidebar state management with localStorage persistence; extended component props with collapsed and onCollapseToggle; introduced toggle button with accessibility labels; added responsive width constants and logo switching between collapsed/expanded states; updated NavMenu integration with inlineCollapsed support.
Navigation Styling
clients/admin-ui/src/features/common/nav/NavMenu.module.scss
Introduced comprehensive SCSS for collapsed navigation states, flyout menu styling, smooth transitions, and state-based visual overrides; added styles for collapse toggle, help button, logo wrapper, bottom bar, and ant-menu customizations for inline-collapsed variants.
Layout Components
clients/admin-ui/src/features/common/FixedLayout.tsx, clients/admin-ui/src/pages/_app.tsx, clients/admin-ui/src/pages/systems/configure/[id]/index.tsx, clients/admin-ui/src/pages/systems/index.tsx
Modified FixedLayout width calculation from calc(100vw - 240px) to 100% when not fullWidth; adjusted main app flex container with flex={1}, minWidth={0}, and overflow="hidden"; removed explicit mainProps width overrides from page layouts to use responsive defaults.
E2E Test Updates
clients/admin-ui/cypress/e2e/domains.cy.ts, clients/admin-ui/cypress/e2e/taxonomies.cy.ts, clients/admin-ui/cypress/e2e/nav-bar.cy.ts
Updated navigation selectors to reflect new group structure: changed "Settings-nav-group" to "Core configuration-nav-group"; increased visible submenu counts to account for new groups; added assertions for Core configuration and Compliance nav groups; moved Taxonomy link from Settings to Core configuration.
Changelog
changelog/7488.yaml
Added release notes documenting UI/nav overhaul: reorganized Settings into Core configuration, Compliance, and Settings groups; new Carbon icons; collapsible sidebar with smooth transitions and logo crossfade; flyout menu styling; fixed content width expansion on nav collapse.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Poem

🐰 Hops through menus with a collapsible spring,
Core configuration, Compliance, Settings sing!
The sidebar folds with localStorage grace,
While flyout menus find their perfect place.
A redesigned nav, responsive and bright,
Makes admin journeys a delight! 🎉

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely summarizes the main changes: navigation menu reorganization and the addition of a collapsible sidebar feature.
Description check ✅ Passed The description is comprehensive, following the template structure with all required sections completed: ticket reference, detailed change description, confirmation steps, and a thorough pre-merge checklist.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch systems_nav

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@clients/admin-ui/src/features/common/nav/MainSideNav.tsx`:
- Around line 244-251: The nav's collapsed preference is read after mount
causing a visible flicker; change the collapsed state initialization to read
localStorage synchronously (e.g., useState(() => { try { return
localStorage.getItem(COLLAPSED_LOCAL_STORAGE_KEY) === "true"; } catch { return
false; } })) so the initial render uses the persisted value, and update the
render logic around the width fallback (the code around where
collapsed/setCollapsed are used and the hardcoded expanded-width path at lines
~277-283) to base the initial width on the collapsed state instead of forcing an
expanded width during loading; ensure you keep the COLLAPSED_LOCAL_STORAGE_KEY,
collapsed and setCollapsed symbols and add a safe try/catch for environments
where localStorage is unavailable.

In `@clients/admin-ui/src/features/common/nav/nav-config.tsx`:
- Around line 233-237: The nav item for "Domains" sets requiresFidesCloud: false
but the nav filtering logic only checks for true, so non-cloud routes still
appear in Fides Cloud; update the route gating logic that filters nav items (the
function that builds/filters navConfig) to explicitly handle requiresFidesCloud
=== false by returning false when running in Fides Cloud (e.g., add a check
like: if (item.requiresFidesCloud === false && isFidesCloud) exclude the item),
ensuring the "Domains" entry is hidden when isFidesCloud is true while
preserving existing behavior for requiresFidesCloud === true and undefined.

In `@clients/admin-ui/src/features/common/nav/NavMenu.module.scss`:
- Around line 165-170: The CSS inside the :global(.ant-menu) block has a
redundant shorthand "background" that overrides "background-color"
(declaration-block-no-shorthand-property-overrides) and is missing a required
blank line before the "padding-block" declaration; remove the "background:
var(--fidesui-minos) !important;" declaration so only "background-color:
var(--fidesui-minos) !important;" remains, and insert a blank line above the
"padding-block: 8px !important;" line to satisfy the style rule.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b968b951-e8ee-4e20-bd16-0c1d55aa1281

📥 Commits

Reviewing files that changed from the base of the PR and between b42bb60 and c707500.

⛔ Files ignored due to path filters (3)
  • clients/admin-ui/public/logo-collapsed.svg is excluded by !**/*.svg
  • clients/admin-ui/public/logo-expanded.svg is excluded by !**/*.svg
  • clients/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (12)
  • changelog/7488.yaml
  • clients/admin-ui/cypress/e2e/domains.cy.ts
  • clients/admin-ui/cypress/e2e/nav-bar.cy.ts
  • clients/admin-ui/cypress/e2e/taxonomies.cy.ts
  • clients/admin-ui/src/features/common/FixedLayout.tsx
  • clients/admin-ui/src/features/common/nav/MainSideNav.tsx
  • clients/admin-ui/src/features/common/nav/NavMenu.module.scss
  • clients/admin-ui/src/features/common/nav/nav-config.test.ts
  • clients/admin-ui/src/features/common/nav/nav-config.tsx
  • clients/admin-ui/src/pages/_app.tsx
  • clients/admin-ui/src/pages/systems/configure/[id]/index.tsx
  • clients/admin-ui/src/pages/systems/index.tsx

Comment on lines +244 to +251
const [collapsed, setCollapsed] = React.useState(false);

React.useEffect(() => {
const stored = localStorage.getItem(COLLAPSED_LOCAL_STORAGE_KEY);
if (stored === "true") {
setCollapsed(true);
}
}, []);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Collapsed preference is applied late, causing initial width flicker.

Line 244 starts collapsed as false, then Line 247 applies persisted state after mount. Users who saved collapsed mode will see a brief expanded nav. Line 279-280 also hardcodes expanded width during loading.

Proposed fix
-  const [collapsed, setCollapsed] = React.useState(false);
-
-  React.useEffect(() => {
-    const stored = localStorage.getItem(COLLAPSED_LOCAL_STORAGE_KEY);
-    if (stored === "true") {
-      setCollapsed(true);
-    }
-  }, []);
+  const [collapsed, setCollapsed] = React.useState<boolean>(() => {
+    if (typeof window === "undefined") {
+      return false;
+    }
+    return localStorage.getItem(COLLAPSED_LOCAL_STORAGE_KEY) === "true";
+  });
...
-  if (plusQuery.isLoading) {
+  const loadingNavWidth = collapsed ? COLLAPSED_WIDTH : NAV_WIDTH;
+  if (plusQuery.isLoading) {
     return (
       <div
         style={{
-          minWidth: NAV_WIDTH,
-          maxWidth: NAV_WIDTH,
+          minWidth: loadingNavWidth,
+          maxWidth: loadingNavWidth,
           backgroundColor: NAV_BACKGROUND_COLOR,
           height: "100%",
         }}
       />
     );
   }

Also applies to: 277-283

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/admin-ui/src/features/common/nav/MainSideNav.tsx` around lines 244 -
251, The nav's collapsed preference is read after mount causing a visible
flicker; change the collapsed state initialization to read localStorage
synchronously (e.g., useState(() => { try { return
localStorage.getItem(COLLAPSED_LOCAL_STORAGE_KEY) === "true"; } catch { return
false; } })) so the initial render uses the persisted value, and update the
render logic around the width fallback (the code around where
collapsed/setCollapsed are used and the hardcoded expanded-width path at lines
~277-283) to base the initial width on the collapsed state instead of forcing an
expanded width during loading; ensure you keep the COLLAPSED_LOCAL_STORAGE_KEY,
collapsed and setCollapsed symbols and add a safe try/catch for environments
where localStorage is unavailable.

Comment on lines +233 to 237
title: "Domains",
path: routes.DOMAIN_MANAGEMENT_ROUTE,
requiresPlus: true,
requiresFidesCloud: false,
scopes: [
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

requiresFidesCloud: false is currently ineffective for Domains.

Line 236 declares a non-cloud-only route, but the filter logic only handles the true case (Line 488). This can show Domains in Fides Cloud unexpectedly.

Proposed fix in route gating logic
-  // If the target route would require fides cloud in a non-fides-cloud environment,
-  // exclude it from the group.
-  if (route.requiresFidesCloud && !hasFidesCloud) {
+  // If the route explicitly targets cloud or non-cloud, enforce exact environment match.
+  if (
+    typeof route.requiresFidesCloud === "boolean" &&
+    route.requiresFidesCloud !== hasFidesCloud
+  ) {
     return undefined;
   }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
title: "Domains",
path: routes.DOMAIN_MANAGEMENT_ROUTE,
requiresPlus: true,
requiresFidesCloud: false,
scopes: [
// If the route explicitly targets cloud or non-cloud, enforce exact environment match.
if (
typeof route.requiresFidesCloud === "boolean" &&
route.requiresFidesCloud !== hasFidesCloud
) {
return undefined;
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/admin-ui/src/features/common/nav/nav-config.tsx` around lines 233 -
237, The nav item for "Domains" sets requiresFidesCloud: false but the nav
filtering logic only checks for true, so non-cloud routes still appear in Fides
Cloud; update the route gating logic that filters nav items (the function that
builds/filters navConfig) to explicitly handle requiresFidesCloud === false by
returning false when running in Fides Cloud (e.g., add a check like: if
(item.requiresFidesCloud === false && isFidesCloud) exclude the item), ensuring
the "Domains" entry is hidden when isFidesCloud is true while preserving
existing behavior for requiresFidesCloud === true and undefined.

Comment on lines +165 to +170
:global(.ant-menu) {
background-color: var(--fidesui-minos) !important;
background: var(--fidesui-minos) !important;
--ant-menu-item-margin-inline: 0 !important;
--ant-menu-item-margin-block: 8px !important;
padding-block: 8px !important;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove redundant shorthand background declaration to fix lint failure.

At Line 167, background overrides the background-color set just above (Line 166), which triggers declaration-block-no-shorthand-property-overrides. Also add the required blank line before Line 170 to satisfy the configured style rule.

Proposed fix
   :global(.ant-menu) {
     background-color: var(--fidesui-minos) !important;
-    background: var(--fidesui-minos) !important;
     --ant-menu-item-margin-inline: 0 !important;
     --ant-menu-item-margin-block: 8px !important;
+
     padding-block: 8px !important;
   }
🧰 Tools
🪛 Stylelint (17.3.0)

[error] 167-167: Unexpected shorthand "background" after "background-color" (declaration-block-no-shorthand-property-overrides)

(declaration-block-no-shorthand-property-overrides)


[error] 170-170: Expected empty line before declaration (declaration-empty-line-before)

(declaration-empty-line-before)


[error] 165-165: Unexpected unknown pseudo-class selector ":global" (selector-pseudo-class-no-unknown)

(selector-pseudo-class-no-unknown)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/admin-ui/src/features/common/nav/NavMenu.module.scss` around lines
165 - 170, The CSS inside the :global(.ant-menu) block has a redundant shorthand
"background" that overrides "background-color"
(declaration-block-no-shorthand-property-overrides) and is missing a required
blank line before the "padding-block" declaration; remove the "background:
var(--fidesui-minos) !important;" declaration so only "background-color:
var(--fidesui-minos) !important;" remains, and insert a blank line above the
"padding-block: 8px !important;" line to satisfy the style rule.

@jack-gale-ethyca jack-gale-ethyca added this pull request to the merge queue Mar 4, 2026
Merged via the queue into main with commit bb5b67f Mar 4, 2026
46 of 47 checks passed
@jack-gale-ethyca jack-gale-ethyca deleted the systems_nav branch March 4, 2026 19:37
mfbrown pushed a commit that referenced this pull request Mar 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants