Skip to content

Remove dual output mode toggles - #6047

Open
michelinewu wants to merge 7 commits into
masterfrom
mw_rm_do_as_mode_1
Open

Remove dual output mode toggles#6047
michelinewu wants to merge 7 commits into
masterfrom
mw_rm_do_as_mode_1

Conversation

@michelinewu

@michelinewu michelinewu commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Remove Dual Output as a separate mode

Part of a series to completely remove all of the special handling for dual output mode so that it is always available to logged in users.

Summary

Dual output is no longer a separate mode. Single output scene collections are automatically converted to dual output on load. The vertical display is hidden on logout to prevent dual output from being used when logged out.

Changes

Note: to limit the number of changes in this PR, some things that should be refactored will be coming in later PRs.

Services

dual-output.ts

  • dualOutputMode getter returns true unconditionally. This getter will be entirely removed in a later PR.
  • defaultState.dualOutputMode set to true
  • collectionSwitched handler no longer checks dualOutputMode — always converts or validates
  • setDualOutputMode, setDualOutputModeIfPossible, toggleDualOutputMode marked @deprecated as no-ops. Will be removes in a later PR.
  • userLogout hides the vertical display instead of toggling off dual output mode
  • Removed sceneSwitched loading state handler (unnecessary with always-on) and the scene collection validated on collection load
  • convertSingleOutputToDualOutputCollection and validateDualOutputCollection now call save() + flushManifestFile() to persist changes to disk immediately following conversion/validation

streaming-view.ts

  • Removed dual output mode checks from streaming logic

streaming.ts

  • Simplified go-live flow — no longer conditionally sets up dual output but instead determines if the user should go live with dual output based on the assignment of streaming targets to displays

transitions.ts

  • Removed dual output mode gating from scene transitions

settings.ts

  • Removed dual output mode checks from settings

scene-collections.ts

  • Removed sceneNodeMaps clearing on load (handled by conversion/validation)

scenes.ts

  • Removed makeSceneActive dual output conditional

restream.ts

  • Added missing import

Components

Go Live window (GoLiveWindow.tsx, GoLiveSettings.tsx, DestinationSwitchers.tsx, PlatformSettings.tsx, etc.)

  • Removed dual output toggle from go-live flow
  • Simplified destination switcher layout — always shows dual output display selectors
  • Removed AdvancedSettingsSwitch.tsx (was the dual output toggle in go-live)
  • Added CustomFieldsCheckbox.tsx and SwitcherCard.tsx for cleaner layout
  • Simplified platform settings — removed conditional dual output layouts

SourceSelector.tsx

  • Removed dual output mode toggle
Before After
Screenshot 2026-07-23 095755 Screenshot 2026-07-23 101512

DisplaySelector.tsx

  • Simplified — no longer conditionally shows based on dual output mode

StudioEditor.tsx

  • Removed dual output mode gating from editor display

StartStreamingButton.tsx

  • Simplified — removed dual output mode conditional

Video.tsx (settings)

  • Removed dual output mode toggle
Before After
Screenshot 2026-07-23 101545 Screenshot 2026-07-23 101505

Tests

test/helpers/modules/scene-collections.ts (new)

  • Shared helper module with copyFile, confirmIsCollectionType, confirmDualOutputSources, confirmVerticalSceneItem, validateSceneNodeMapsAndNodes

test/regular/streaming/dual-output.ts

  • Removed scene building and conversion tests (moved to api/scene-collections tests)
  • Test focuses on display toggle behavior and go-live

test/regular/api/dual-output.ts

  • Moved confirmDualOutputSources and confirmVerticalSceneItem to shared helper
  • Updated imports to use external API types

test/regular/services/scene-collections/scene-collections.ts

  • Added validation that single output collections convert on load
  • Verifies persistence across app restarts and login

Removed dual output toggle calls from:

  • test/regular/recording.ts
  • test/regular/streaming/dual-output-end-stream.ts
  • test/regular/streaming/youtube.ts
  • test/regular/settings/hotkeys.ts
  • test/helpers/modules/dual-output.ts (removed setDualOutputMode helper)

Performance Implications

None. The conversion and validation that previously ran conditionally now always runs on collection load, but this was already the case for any user who had dual output enabled.

@bundlemon

bundlemon Bot commented Jul 23, 2026

Copy link
Copy Markdown

BundleMon

Files updated (1)
Status Path Size Limits
renderer.(hash).js
10.34MB (-16.46KB -0.16%) -
Unchanged files (3)
Status Path Size Limits
vendors~renderer.(hash).js
4.67MB -
updater.js
115.29KB -
guest-api.js
40.23KB -

Total files change -16.46KB -0.11%

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@michelinewu michelinewu added enhancement P0 highest priority to merge from Asana labels Jul 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement P0 highest priority to merge from Asana

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants