Conversation
BundleMonFiles updated (2)
Unchanged files (2)
Total files change -218.49KB -1.4% Final result: ✅ View report in BundleMon website ➡️ |
There was a problem hiding this comment.
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
NavMenuServiceto persist a singlemenulist (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
ENavMenuKeymodel.
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.
| 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, |
There was a problem hiding this comment.
This should be removed, as there are no more consumers with EditorTabs removed.
| handleUserLogin() { | ||
| this.SET_NEW_USER_LOGIN(); | ||
| this.dismissablesService.dismiss(EDismissable.LoginPrompt); | ||
| } |
| const { setCurrentMenuItem, loggedOutMenuItemTargets } = useVuex(() => ({ | ||
| setCurrentMenuItem: NavMenuService.actions.setCurrentMenuItem, | ||
| loggedOutMenuItemTargets: NavMenuService.views.loggedOutMenuItemTargets, | ||
| })); | ||
|
|
| [], | ||
| ) | ||
| .sort(); | ||
| const activeMenuItems = useMemo(() => NavMenuService.activeMenuItems, []); |
| AppStore = 'app-store', | ||
| Highlighter = 'highlighter', | ||
| RecordingHistory = 'recording-history', | ||
| ThemeAudit = 'theme-audit', |
There was a problem hiding this comment.
If we aren't keeping theme audit in the menu for support, we should move it somewhere else for them
There was a problem hiding this comment.
Will move to nav tools overflow in #6137
40bbefc to
e331e54
Compare
1b8a43a to
2283726
Compare
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
e331e54 to
b4fca24
Compare
Stack:
master<-../1<-feat/wr/nav/pr/2<-../3<-../4<-../5Can 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.
menu-data.ts,menu.ts,AppsNav,EditorTabs,FeaturesNav, andNavToolschalk-arrow.pngasset and related protocol-link/navigation/dismissables wiring