Revert "Remove references to old onboarding service" and restore the components and strings it needs - #6130
Closed
michelinewu wants to merge 1 commit into
Closed
Revert "Remove references to old onboarding service" and restore the components and strings it needs#6130michelinewu wants to merge 1 commit into
michelinewu wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR reverts the migration that routed remaining “login/onboarding” entry points through OnboardingV2Service, restoring the legacy OnboardingService flow (including the full-page Onboarding route, its React page components, and the i18n keys those components resolve) to fix the broken side-nav login path.
Changes:
- Repoint login/import entry points back to
OnboardingServiceand re-register the service inapp/app-services.ts. - Restore the legacy onboarding page implementation under
app/components-react/pages/onboarding/and re-export theOnboardingpage. - Restore/add required English i18n keys for the restored onboarding/import/login UI.
Reviewed changes
Copilot reviewed 42 out of 42 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| app/app-services.ts | Re-exports and registers OnboardingService in the central service registry. |
| app/services/app/app.ts | Injects OnboardingService into AppService (restoring prior wiring). |
| app/services/user/index.ts | Routes showLogin() and onboarding close/finish behavior back through OnboardingService. |
| app/services/onboarding/onboarding-v2.ts | Removes v2-only helpers added to support migrated call sites (now reverted). |
| app/components-react/highlighter/Export/StorageUpload.tsx | Uses OnboardingService.start({ isLogin: true }) for SLID login prompt. |
| app/components-react/modals/onboarding/Themes.tsx | Fetches theme data via OnboardingService instead of v2 helper. |
| app/components-react/shared/DualOutputToggle.tsx | Subscribes to legacy onboarding completion and re-triggers dual output enablement. |
| app/components-react/windows/go-live/platforms/TwitchTagsInput.tsx | Uses legacy onboarding login flow for reauth. |
| app/components-react/windows/settings/General.tsx | Restores legacy onboarding entry points for hardware/import/optimizer actions. |
| app/components-react/windows/settings/Support.tsx | Restores legacy OBS import start flow and displays import-complete state. |
| app/components/widgets/Poll.tsx | Routes poll reauth/login through OnboardingService. |
| app/components-react/pages/index.ts | Restores Onboarding page export so route resolution works again. |
| app/components-react/pages/onboarding/Common.m.less | Restored shared styling used by legacy onboarding steps. |
| app/components-react/pages/onboarding/Connect.m.less | Restored styling for the legacy onboarding connect/login step. |
| app/components-react/pages/onboarding/Connect.tsx | Restored legacy connect/login step and supporting auth module. |
| app/components-react/pages/onboarding/ExtraPlatformConnect.tsx | Restored RTMP custom platform connect step within onboarding. |
| app/components-react/pages/onboarding/FreshOrImport.m.less | Restored styling for “fresh vs import” step. |
| app/components-react/pages/onboarding/FreshOrImport.tsx | Restored “1-click import / start fresh” decision step. |
| app/components-react/pages/onboarding/HardwareSetup.m.less | Restored styling for webcam/mic setup step. |
| app/components-react/pages/onboarding/HardwareSetup.tsx | Restored hardware setup step (devices + preview/volmeter). |
| app/components-react/pages/onboarding/MacPermissions.tsx | Restored macOS permissions step. |
| app/components-react/pages/onboarding/ObsImport.m.less | Restored styling for OBS/Twitch Studio import step. |
| app/components-react/pages/onboarding/ObsImport.tsx | Restored importer step and related UI strings used by i18n keys. |
| app/components-react/pages/onboarding/ObsSvg.tsx | Restored OBS logo SVG used by import UI. |
| app/components-react/pages/onboarding/Onboarding.m.less | Restored top-level legacy onboarding page styling. |
| app/components-react/pages/onboarding/Onboarding.tsx | Restored legacy onboarding page controller/module (step flow + footer/actions). |
| app/components-react/pages/onboarding/OnboardingContext.ts | Restored skip-handler context used by onboarding steps. |
| app/components-react/pages/onboarding/Optimize.tsx | Restored optimizer step UI and subscription to autoconfig progress. |
| app/components-react/pages/onboarding/PrimaryPlatformSelect.tsx | Restored primary platform selection step for partial SL auth cases. |
| app/components-react/pages/onboarding/Prime.m.less | Restored Ultra/Prime step styling. |
| app/components-react/pages/onboarding/Prime.tsx | Restored Ultra/Prime upsell step in onboarding flow. |
| app/components-react/pages/onboarding/Signup.m.less | Restored signup step styling. |
| app/components-react/pages/onboarding/Signup.tsx | Restored signup step for Streamlabs ID within onboarding connect step. |
| app/components-react/pages/onboarding/StreamingOrRecording.m.less | Restored styling for streaming vs recording mode choice step. |
| app/components-react/pages/onboarding/StreamingOrRecording.tsx | Restored streaming vs recording mode selection step. |
| app/components-react/pages/onboarding/ThemeSelector.m.less | Restored styling for theme selection step. |
| app/components-react/pages/onboarding/ThemeSelector.tsx | Restored theme selection step (fetch themes + install overlay). |
| app/components-react/pages/onboarding/steps.ts | Restored barrel export for onboarding step components. |
| app/i18n/en-US/onboarding.json | Restores/adds onboarding keys needed by restored legacy pages. |
| app/i18n/en-US/twitch.json | Restores Twitch Studio import title key used at runtime. |
| app/i18n/en-US/streaming.json | Restores Twitch 2FA error message key used by login flow. |
| .vscode/settings.json | Updates workspace editor settings (includes color customizations). |
Suppressed comments (1)
app/components-react/pages/onboarding/Connect.tsx:251
- This module-level call also uses
UsageStatisticsService.recordAnalyticsEvent(...)from UI code, which triggers a synchronous service call. Switch toactions.recordAnalyticsEvent(matchingapp/components-react/modals/onboarding/Onboarding.tsx).
async authPlatform(platform: TPlatform | 'streamlabs', onSuccess: () => void, merge = false) {
this.UsageStatisticsService.recordAnalyticsEvent('PlatformLogin', platform);
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+29
to
+38
| function getFilteredMetadata() { | ||
| if (!showDetail) { | ||
| return themesMetadata; | ||
| } | ||
|
|
||
| return sortBy( | ||
| themesMetadata.filter(theme => theme.data.id !== showDetail), | ||
| ['data', 'id'], | ||
| ).slice(0, MAX_SIDEBAR_THEMES); | ||
| } |
Comment on lines
+40
to
+42
| const detailTheme = useMemo(() => { | ||
| return themesMetadata.find(theme => theme.data.id === showDetail); | ||
| }, [showDetail]); |
Comment on lines
+53
to
+58
| ctx.onSkip = onSkip; | ||
|
|
||
| function onSelectExtraPlatform(val: TExtraPlatform | undefined) { | ||
| UsageStatisticsService.recordAnalyticsEvent('PlatformLogin', val); | ||
| setExtraPlatform(val); | ||
| } |
Comment on lines
+68
to
+71
| transition-property: transform background-color border; | ||
| transition-duration: 0.5s; | ||
| transform: 0.6; | ||
|
|
Comment on lines
+1
to
+7
| .signup-subtitle { | ||
| max-width: 500px; | ||
| font-size: 22px; | ||
| text-align: center; | ||
| line-break: 150%; | ||
| margin-bottom: 32px; | ||
| } |
Comment on lines
+4
to
+23
| "i18n-ally.keystyle": "nested", | ||
| "workbench.colorCustomizations": { | ||
| "terminal.border": "#ffffff", | ||
| "panel.border": "#ffffff", | ||
| "panelTitle.activeBorder": "#ffc600", | ||
| "terminal.tab.activeBorder": "#ffc600", | ||
| "terminalCursor.foreground": "#ffc600", | ||
| "terminal.selectionBackground": "#ffc60055", | ||
| "activityBar.background": "#053241", | ||
| "titleBar.activeBackground": "#07465B", | ||
| "titleBar.activeForeground": "#F3FBFE", | ||
| "titleBar.inactiveBackground": "#053241", | ||
| "titleBar.inactiveForeground": "#F3FBFE", | ||
| "statusBar.background": "#053241", | ||
| "statusBar.foreground": "#F3FBFE", | ||
| "statusBar.debuggingBackground": "#053241", | ||
| "statusBar.debuggingForeground": "#F3FBFE", | ||
| "statusBar.noFolderBackground": "#053241", | ||
| "statusBar.noFolderForeground": "#F3FBFE" | ||
| } |
Comment on lines
+55
to
+77
| progress.event === 'starting_step' || | ||
| progress.event === 'progress' || | ||
| progress.event === 'stopping_step' | ||
| ) { | ||
| if (stepInfo && stepInfo.description === progress.description) { | ||
| stepInfo.percentage = progress.percentage; | ||
| } else { | ||
| setStepInfo({ | ||
| description: progress.description, | ||
| summary: summaryForStep(progress)!, | ||
| percentage: progress.percentage, | ||
| }); | ||
| } | ||
| } else if (progress.event === 'done') { | ||
| setProcessing(false); | ||
| sub.unsubscribe(); | ||
| next(); | ||
| } else { | ||
| console.error("AutoConfigService error:", progress.description); | ||
| setProcessing(false); | ||
| sub.unsubscribe(); | ||
| setOptimizingState('error'); | ||
| } |
BundleMonFiles updated (1)
Unchanged files (3)
Total files change +153.3KB +0.99% Final result: ✅ View report in BundleMon website ➡️ |
michelinewu
added a commit
that referenced
this pull request
Aug 27, 2026
…e the components and strings it needs (#6133)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Revert "Remove References to Old Onboarding Service" and Restore the Components and Strings It Needs
Issues
#6109 (
0cd4552a8) repointed every remainingOnboardingServicecall site atOnboardingV2Serviceand droppedOnboardingServicefromapp-services.ts. The side nav login is broken as a result.NavTools.tsx:116callsUserService.actions.showLogin(). #6109 rewroteUserService.showLogin()to callonboardingV2Service.actions.showLogin()instead ofonboardingService.start({ isLogin: true }), and the v2 path does not bring up a usable login for that entry point.Reverting #6109 on its own does not build, because the code it reverts to depends on two earlier removals:
OnboardingService.start()ends innavigationService.navigate('Onboarding').Main.tsx:260resolves the page withappPages[page] || appPages.Studio, and Remove deprecated components #6078 (511366ee7) deleted all 26 files underapp/components-react/pages/onboarding/and removedexport { default as Onboarding }fromapp/components-react/pages/index.ts. SoappPages.Onboardingisundefinedand the lookup silently falls back toStudio— whileMain.tsxseparately hidesSideNavandStudioFooterwheneverpage === 'Onboarding'. That combination is the visible symptom: the nav disappears and the editor is rendered underneath it, with no login anywhere.eb947b167) removed them as stale, which was correct at the time — the components using them were deleted a day later in Remove deprecated components #6078.Fixes
Revert #6109.
git revert 0cd4552a8applies cleanly across all 11 files.app/services/onboarding.tswas never deleted, soservices/onboardingresolves again as soon as the imports come back. This also removes theonboardingCompletedsubject,showSingletonStep(), andfetchThemeData()that #6109 grafted ontoonboarding-v2.tspurely to serve the migrated call sites; nothing else references them, verified by grep acrossapp/andtest/.Restore the 26 deleted files under
app/components-react/pages/onboarding/from511366ee7^, and re-add theOnboardingexport toapp/components-react/pages/index.ts. Taking them from #6078's parent rather than an older commit matters: that tree is already past #6075, soConnect.tsxcarries the joined Twitch 2FA literal #6075 introduced, and no #6075 code change is undone here.Restore five i18n keys #6075 removed, verbatim, into the files they came from:
Check out 50+ amazing apps from independent developers, …onboarding.jsonOnly have one screen? Perfect! Enable our in-game overlay …onboarding.jsonImporting Your Existing Settings From OBSonboarding.jsonImporting Your Existing Settings From Twitch Studiotwitch.jsonTwitch requires two factor authentication to be enabled on your account …streaming.jsonThe first two are
$t('a ' + 'b' + 'c')concatenations inObsImport.tsx; the runtime key is the joined string, which is exactly the form #6075 deleted. The next two are the two resolutions of the template key`Importing Your Existing Settings From ${isObs ? 'OBS' : 'Twitch Studio'}`atObsImport.tsx:33.Add four keys that never existed.
1-Click Import,While we import your settings and scenes, check out these great features unique to Streamlabs,Something went wrong while importing. Please try again or skip to the next step.(allonboarding.json) andLog Out?(onboarding.json). These are pre-existing gaps, not #6075 regressions — the strings inObsImport.tsxandFreshOrImport.tsxhad already been genericised away from their… from OBS Studiowording before #6075, so the keys #6075 deleted were the older OBS-specific variants and the current wording was never in a dictionary. Confirmed absent ateb947b167^. Adding them costs nothing and stops the restored flow rendering four untranslatable strings in 25 locales.Dictionary edits are append-only single lines at each file's tail, per the house convention that these files are never reserialized.
Files changed: 42 files.
app/app-services.ts,app/services/app/app.ts,app/services/user/index.ts,app/services/onboarding/onboarding-v2.ts,app/components-react/highlighter/Export/StorageUpload.tsx,app/components-react/modals/onboarding/Themes.tsx,app/components-react/shared/DualOutputToggle.tsx,app/components-react/windows/go-live/platforms/TwitchTagsInput.tsx,app/components-react/windows/settings/General.tsx,app/components-react/windows/settings/Support.tsx,app/components/widgets/Poll.tsx,app/components-react/pages/index.ts, 26 restored files underapp/components-react/pages/onboarding/, andapp/i18n/en-US/{onboarding,twitch,streaming}.json.Performance Implications
None meaningful. This restores the code that shipped through
0cd4552a8^, so runtime cost returns to that baseline: one more service registered inAppServices, andOnboardingService.init()runssetExistingCollections()once at startup, which readssceneCollectionsService.loadableCollections— already in memory, no I/O.Bundle size grows by the 26 restored files (~3,000 lines including LESS). They are reachable only from the
Onboardingroute, but the pages barrel is a static import inMain.tsx, so they land in the main chunk as they did before #6078.Two
$t()calls inObsImport.tsxstop missing their dictionary entry, which removes a dev-modeconsole.errorper render of the import step (app/app.ts:267); silent in production either way.Verification
tsc --noEmit -p tsconfig.json— exit 0, no errors. Run from a throwaway worktree insidedesktop/so it could resolve the existingnode_modules.i18n-audit— the remaining findings are the two documented scanner limitations, both checked by hand. The concatenated$t()calls are reported as missing on their first fragment and as stale on the joined key; they are the same two strings, and the joined form is what runs. The${isObs ? …}template is reported as two stale keys for the same reason. The 10STRINGS MISSING $t()entries are platform brand names and product names in the restored files, unchanged from what Remove deprecated components #6078 deleted.node_modulesand nobundles/. The side nav login needs a manual check afteryarn install && yarn compile.testingFakeAuthcallsonboardingService.finish()again after the revert, and Use new onboarding for tests. #6004 (cb1d357f8) — which moved tests onto v2 onboarding — predates Remove references to old onboarding service #6109, so this restores the exact service pairing the suite was green against at0cd4552a8^.Notes
This is a straight revert, not a fix for whatever #6109 was trying to achieve. The old
OnboardingServiceandOnboardingV2Serviceboth exist again and both run, which is the state master was in before #6109 — v2 owns the modal flow viaMain.tsx, the old service owns the full-pageOnboardingroute. Re-landing the migration needs the v2 login to actually work from the side nav entry point first.app/components-react/pages/grow/(Cards.tsx,Grow.tsx,Grow.m.less) and theGrowbarrel export were also deleted by #6078 and are not restored here — nothing in the reverted code references them, and'Grow'hitting theappPages.Studiofallback is a separate pre-existing issue on master.General.tsxcomes back withrunAutoOptimizer()callingOnboardingService.actions.start({ isOptimize: true })rather than the commented-out body #6109 left behind. TheOptimizestep is still disabled inONBOARDING_STEPS, soviews.singletonStepreturnsundefinedfor it and the route renders nothing — a dead button, but the same dead button that shipped before #6109.Source Commits
0cd4552a8336197fcada4f0211aba0dc0b79463e— Remove references to old onboarding service (Remove references to old onboarding service #6109)511366ee79f8e39ab4b0cdf8b3fd96e672fa9540^— Remove deprecated components (Remove deprecated components #6078)eb947b1678170eaf81d8cbefd528d32bb0d5a389^— Remove stale translations and add missing ones (Remove stale translations and add missing ones #6075)Asana Link
N/A — reported directly: side nav login broken on master after #6109.