Skip to content

nav-menu: simplify nav menu feature set - #6135

Open
wesrupert wants to merge 1 commit into
feat/wr/nav/pr/1from
feat/wr/nav/pr/2
Open

wesrupert wants to merge 1 commit into
feat/wr/nav/pr/1from
feat/wr/nav/pr/2

Conversation

@wesrupert

@wesrupert wesrupert commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Stack: master <- ../1 <- feat/wr/nav/pr/2 <- ../3 <- ../4 <- ../5
Can merge separate from children? No
See PR 5 for screenshots of final product.
Figma: link


Strip nav items and logic that don't carry over to the new top-nav design out of the menu data and components, ahead of rebuilding the layout.

  • Cut unused menu entries and branching logic from menu-data.ts, menu.ts, AppsNav, EditorTabs, FeaturesNav, and NavTools
  • Remove the now-dead chalk-arrow.png asset and related protocol-link/navigation/dismissables wiring
  • Trim the corresponding toggles out of Settings -> Appearance

@bundlemon

bundlemon Bot commented Aug 27, 2026

Copy link
Copy Markdown

BundleMon

Files updated (2)
Status Path Size Limits
vendors~renderer.(hash).js
4.66MB (-10.7KB -0.22%) -
renderer.(hash).js
10.27MB (-207.8KB -1.94%) -
Unchanged files (2)
Status Path Size Limits
updater.js
115.29KB -
guest-api.js
40.23KB -

Total files change -218.49KB -1.4%

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR simplifies the nav menu feature set in Streamlabs Desktop ahead of the new top-nav rebuild by removing legacy menu concepts (apps-in-nav, compact/open states, submenu logic, protocol-link menu targeting) and consolidating the remaining nav items into a smaller, metadata-driven model in NavMenuService.

Changes:

  • Refactors NavMenuService to persist a single menu list (visibility + selection) backed by generated menu definitions (genFeaturesNavMenu, genLoggedOutNavMenu).
  • Removes legacy side-nav behaviors/UI (apps nav, editor tab submenu, open/close state, chalk-arrow asset, old dismissable).
  • Updates navigation/protocol-link flows and Settings → Appearance toggles to use the simplified ENavMenuKey model.

Reviewed changes

Copilot reviewed 18 out of 19 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
app/services/usage-statistics.ts Adds slobs-nav-menu as a tracked Ultra feature key.
app/services/protocol-links.ts Removes direct NavMenuService manipulation; uses NavigationService.navigate(..., setMenuItem) instead.
app/services/platform-apps/index.ts Removes nav-menu app update wiring tied to legacy sidebar app slots.
app/services/navigation.ts Tightens setMenuItem type to ENavMenuKey and changes app navigation highlighting behavior.
app/services/nav-menu/menu.ts Rewrites nav menu service to a single persisted menu model + generated menu definitions.
app/services/nav-menu/menu-data.ts Replaces legacy menu item/submenu structures with metadata + generators for the simplified nav.
app/services/layout/index.ts Adjusts studio tab title derivation (now based on tab names rather than menuTitles).
app/services/dismissables.ts Removes NewNavMenu dismissable key (now dead).
app/components/custom-source-properties/PlatformAppProperties.vue.ts Updates menu selection on app properties “done” flow to use ENavMenuKey.AppStore.
app/components-react/windows/settings/Appearance.tsx Replaces legacy nav customization controls with visibility toggles for the simplified nav items.
app/components-react/pages/PlatformAppStore.tsx Updates imports/usages to ENavMenuKey.
app/components-react/pages/layout-editor/TopBar.tsx Removes chalk-arrow asset usage; updates menu selection behavior on back navigation.
app/components-react/pages/AILanding.tsx Removes TNavMenuKey casting and uses ENavMenuKey.AppStore for navigation highlight.
app/components-react/nav-menu/NavTools.tsx Strips legacy tool nav rendering logic (currently leaving an empty tools menu).
app/components-react/nav-menu/NavMenu.tsx Removes open/close sidebar mechanics and toggle button; renders a simplified sider.
app/components-react/nav-menu/FeaturesNav.tsx Simplifies features nav rendering to a flat list from NavMenuService.menuItems plus dashboard-link handling.
app/components-react/nav-menu/EditorTabs.tsx Removes legacy editor-tab submenu/sidebar behavior.
app/components-react/nav-menu/AppsNav.tsx Removes legacy apps-in-nav behavior (selected/enabled app lists, pop-out, context menu).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread app/services/layout/index.ts Outdated
Comment on lines 57 to 61
return Object.keys(this.state.tabs).map((tab, i) => ({
key: tab,
target: tab,
title:
i === 0 || !this.state.tabs[tab].name ? menuTitles('Editor') : this.state.tabs[tab].name,
title: (i === 0 && this.state.tabs[tab].name) || this.state.tabs.default.name,
icon: this.state.tabs[tab].icon,

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This should be removed, as there are no more consumers with EditorTabs removed.

Comment on lines +145 to 148
handleUserLogin() {
this.SET_NEW_USER_LOGIN();
this.dismissablesService.dismiss(EDismissable.LoginPrompt);
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Will update

Comment on lines +36 to +40
const { setCurrentMenuItem, loggedOutMenuItemTargets } = useVuex(() => ({
setCurrentMenuItem: NavMenuService.actions.setCurrentMenuItem,
loggedOutMenuItemTargets: NavMenuService.views.loggedOutMenuItemTargets,
}));

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Will add

[],
)
.sort();
const activeMenuItems = useMemo(() => NavMenuService.activeMenuItems, []);
Comment thread app/components-react/nav-menu/NavTools.tsx
Comment thread app/components-react/nav-menu/NavTools.tsx
AppStore = 'app-store',
Highlighter = 'highlighter',
RecordingHistory = 'recording-history',
ThemeAudit = 'theme-audit',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If we aren't keeping theme audit in the menu for support, we should move it somewhere else for them

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Will move to nav tools overflow in #6137

Strip nav items and logic that don't carry over to the new top-nav
design out of the menu data and components, ahead of rebuilding the
layout.

- Cut unused menu entries and branching logic from `menu-data.ts`,
	`menu.ts`, `AppsNav`, `EditorTabs`, `FeaturesNav`, and `NavTools`
- Remove the now-dead `chalk-arrow.png` asset and related
	protocol-link/navigation/dismissables wiring
- Trim the corresponding toggles out of Settings -> Appearance
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants