From 1b7c0bd592ec3d8881670da6a0dbd0d57ca9c5dc Mon Sep 17 00:00:00 2001 From: Glary-Bot Date: Fri, 21 Aug 2026 02:01:30 +0000 Subject: [PATCH 1/6] fix(cloud): say sign in, not sign up, on the login SSO fallback link --- src/locales/en/main.json | 3 ++- .../cloud/onboarding/CloudLoginView.test.ts | 14 ++++++++++++++ .../cloud/onboarding/CloudSignupView.test.ts | 14 ++++++++++++++ src/platform/cloud/onboarding/CloudSignupView.vue | 2 +- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/locales/en/main.json b/src/locales/en/main.json index a45bed8cc4d..14b122da7de 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -2529,7 +2529,7 @@ "freeTierBadge": "Eligible for Free Tier", "freeTierDescription": "Sign up with Google to get {credits} free credits every month. No card needed.", "freeTierDescriptionGeneric": "Sign up with Google to get free credits every month. No card needed.", - "backToSocialLogin": "Sign up with Google or Github instead", + "backToSocialLogin": "Sign in with Google or Github instead", "backToGithubLogin": "Sign up with Github instead" }, "signup": { @@ -2543,6 +2543,7 @@ "signIn": "Sign in", "signUpWithGoogle": "Sign up with Google", "signUpWithGithub": "Sign up with Github", + "backToSocialSignUp": "Sign up with Google or Github instead", "regionRestrictionChina": "In accordance with local regulatory requirements, our services are temporarily unavailable to users located in China.", "personalDataConsentLabel": "I agree to the processing of my personal data.", "emailNotEligibleForFreeTier": "Email sign-up is not eligible for Free Tier." diff --git a/src/platform/cloud/onboarding/CloudLoginView.test.ts b/src/platform/cloud/onboarding/CloudLoginView.test.ts index 5e20f022296..de008c8d7fd 100644 --- a/src/platform/cloud/onboarding/CloudLoginView.test.ts +++ b/src/platform/cloud/onboarding/CloudLoginView.test.ts @@ -3,6 +3,7 @@ import { afterEach, describe, expect, it, vi } from 'vitest' import { createI18n } from 'vue-i18n' import { createMemoryHistory, createRouter } from 'vue-router' +import enMessages from '@/locales/en/main.json' with { type: 'json' } import CloudLoginView from '@/platform/cloud/onboarding/CloudLoginView.vue' vi.mock('@/composables/auth/useAuthActions', () => ({ @@ -110,6 +111,19 @@ describe('CloudLoginView', () => { ).not.toBeInTheDocument() }) + it('returns to the social buttons with sign-in wording, not sign-up', async () => { + const user = (await import('@testing-library/user-event')).default.setup() + await renderLoginView('/cloud/login', enMessages) + + await user.click(screen.getByRole('button', { name: 'Use email instead' })) + + expect( + screen.getByRole('button', { + name: 'Sign in with Google or Github instead' + }) + ).toBeInTheDocument() + }) + it.for([true, false])( 'renders the insecure-context warning only over plain HTTP (secure: %s)', async (secure: boolean) => { diff --git a/src/platform/cloud/onboarding/CloudSignupView.test.ts b/src/platform/cloud/onboarding/CloudSignupView.test.ts index 2a9a032fc9b..8504e0cadab 100644 --- a/src/platform/cloud/onboarding/CloudSignupView.test.ts +++ b/src/platform/cloud/onboarding/CloudSignupView.test.ts @@ -60,6 +60,7 @@ const MESSAGES = { signIn: 'Sign in', signUpWithGoogle: 'Sign up with Google', signUpWithGithub: 'Sign up with GitHub', + backToSocialSignUp: 'Sign up with Google or GitHub instead', regionRestrictionChina: 'Email sign-up is unavailable in your region.' } } @@ -223,6 +224,19 @@ describe('CloudSignupView', () => { expect(screen.queryByTestId('signup-form')).not.toBeInTheDocument() }) + it('returns to the social buttons with sign-up wording', async () => { + const user = (await import('@testing-library/user-event')).default.setup() + await renderSignupView() + + await user.click(screen.getByRole('button', { name: 'Use email instead' })) + + expect( + screen.getByRole('button', { + name: 'Sign up with Google or GitHub instead' + }) + ).toBeInTheDocument() + }) + it.for([ ['pending', null], ['inside China', true], diff --git a/src/platform/cloud/onboarding/CloudSignupView.vue b/src/platform/cloud/onboarding/CloudSignupView.vue index 6e1881744b1..f023c78057c 100644 --- a/src/platform/cloud/onboarding/CloudSignupView.vue +++ b/src/platform/cloud/onboarding/CloudSignupView.vue @@ -78,7 +78,7 @@ :class="CLOUD_AUTH_LINK_BUTTON_CLASS" @click="switchToSocialLogin" > - {{ t('auth.login.backToSocialLogin') }} + {{ t('auth.signup.backToSocialSignUp') }} From e40e3c651feaef45e16cb7ef486fa61c0792ed27 Mon Sep 17 00:00:00 2001 From: Glary-Bot Date: Fri, 21 Aug 2026 02:32:17 +0000 Subject: [PATCH 2/6] test(cloud): pin the sign-up SSO fallback copy to the English catalogue --- .../cloud/onboarding/CloudSignupView.test.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/platform/cloud/onboarding/CloudSignupView.test.ts b/src/platform/cloud/onboarding/CloudSignupView.test.ts index 8504e0cadab..07bb3bdc828 100644 --- a/src/platform/cloud/onboarding/CloudSignupView.test.ts +++ b/src/platform/cloud/onboarding/CloudSignupView.test.ts @@ -3,6 +3,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' import { createI18n } from 'vue-i18n' import { createMemoryHistory, createRouter } from 'vue-router' +import enMessages from '@/locales/en/main.json' with { type: 'json' } import CloudSignupView from '@/platform/cloud/onboarding/CloudSignupView.vue' vi.mock('@/composables/auth/useAuthActions', () => ({ @@ -60,13 +61,20 @@ const MESSAGES = { signIn: 'Sign in', signUpWithGoogle: 'Sign up with Google', signUpWithGithub: 'Sign up with GitHub', - backToSocialSignUp: 'Sign up with Google or GitHub instead', regionRestrictionChina: 'Email sign-up is unavailable in your region.' } } } -async function renderSignupView(url = '/cloud/signup') { +async function renderSignupView( + url = '/cloud/signup', + messages: { + auth?: { + login?: Partial + signup?: Partial + } + } = MESSAGES +) { const router = createRouter({ history: createMemoryHistory(), routes: [ @@ -88,7 +96,7 @@ async function renderSignupView(url = '/cloud/signup') { global: { plugins: [ router, - createI18n({ legacy: false, locale: 'en', messages: { en: MESSAGES } }) + createI18n({ legacy: false, locale: 'en', messages: { en: messages } }) ], stubs: { SignUpForm: { template: '
' } } } @@ -226,13 +234,13 @@ describe('CloudSignupView', () => { it('returns to the social buttons with sign-up wording', async () => { const user = (await import('@testing-library/user-event')).default.setup() - await renderSignupView() + await renderSignupView('/cloud/signup', enMessages) await user.click(screen.getByRole('button', { name: 'Use email instead' })) expect( screen.getByRole('button', { - name: 'Sign up with Google or GitHub instead' + name: 'Sign up with Google or Github instead' }) ).toBeInTheDocument() }) From 6e6d9eada9a40c106b3de148a5309eaf150e6569 Mon Sep 17 00:00:00 2001 From: Glary-Bot Date: Fri, 21 Aug 2026 02:50:38 +0000 Subject: [PATCH 3/6] test(cloud): require a full message catalogue in renderSignupView --- src/platform/cloud/onboarding/CloudSignupView.test.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/platform/cloud/onboarding/CloudSignupView.test.ts b/src/platform/cloud/onboarding/CloudSignupView.test.ts index 07bb3bdc828..4fb26335afa 100644 --- a/src/platform/cloud/onboarding/CloudSignupView.test.ts +++ b/src/platform/cloud/onboarding/CloudSignupView.test.ts @@ -68,12 +68,7 @@ const MESSAGES = { async function renderSignupView( url = '/cloud/signup', - messages: { - auth?: { - login?: Partial - signup?: Partial - } - } = MESSAGES + messages: typeof MESSAGES = MESSAGES ) { const router = createRouter({ history: createMemoryHistory(), From bc511ecc3ffc094ce3c95c44c0eea1629e995ef0 Mon Sep 17 00:00:00 2001 From: Glary-Bot Date: Fri, 21 Aug 2026 03:18:56 +0000 Subject: [PATCH 4/6] fix(i18n): spell the GitHub trademark with a capital H --- src/locales/en/main.json | 12 ++++++------ src/platform/cloud/onboarding/CloudLoginView.test.ts | 2 +- .../cloud/onboarding/CloudSignupView.test.ts | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/locales/en/main.json b/src/locales/en/main.json index 14b122da7de..133e721e60c 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -1070,7 +1070,7 @@ "helpCenter": { "feedback": "Give Feedback", "docs": "Docs", - "github": "Github", + "github": "GitHub", "help": "Help & Support", "systemStatus": "System Status", "managerExtension": "Manager Extension", @@ -2514,7 +2514,7 @@ "loginButton": "Sign in", "orContinueWith": "Or continue with", "loginWithGoogle": "Log in with Google", - "loginWithGithub": "Log in with Github", + "loginWithGithub": "Log in with GitHub", "googleSsoInAppBrowserNotice": "If you opened this from an in-app browser (e.g. Instagram, LinkedIn), Google sign-in may not work. Use GitHub or email, or open this page in your device's default browser.", "termsText": "By clicking \"Next\" or \"Sign Up\", you agree to our", "termsLink": "Terms of Use", @@ -2529,8 +2529,8 @@ "freeTierBadge": "Eligible for Free Tier", "freeTierDescription": "Sign up with Google to get {credits} free credits every month. No card needed.", "freeTierDescriptionGeneric": "Sign up with Google to get free credits every month. No card needed.", - "backToSocialLogin": "Sign in with Google or Github instead", - "backToGithubLogin": "Sign up with Github instead" + "backToSocialLogin": "Sign in with Google or GitHub instead", + "backToGithubLogin": "Sign up with GitHub instead" }, "signup": { "title": "Create an account", @@ -2542,8 +2542,8 @@ "signUpButton": "Sign up", "signIn": "Sign in", "signUpWithGoogle": "Sign up with Google", - "signUpWithGithub": "Sign up with Github", - "backToSocialSignUp": "Sign up with Google or Github instead", + "signUpWithGithub": "Sign up with GitHub", + "backToSocialSignUp": "Sign up with Google or GitHub instead", "regionRestrictionChina": "In accordance with local regulatory requirements, our services are temporarily unavailable to users located in China.", "personalDataConsentLabel": "I agree to the processing of my personal data.", "emailNotEligibleForFreeTier": "Email sign-up is not eligible for Free Tier." diff --git a/src/platform/cloud/onboarding/CloudLoginView.test.ts b/src/platform/cloud/onboarding/CloudLoginView.test.ts index de008c8d7fd..0e58eec6757 100644 --- a/src/platform/cloud/onboarding/CloudLoginView.test.ts +++ b/src/platform/cloud/onboarding/CloudLoginView.test.ts @@ -119,7 +119,7 @@ describe('CloudLoginView', () => { expect( screen.getByRole('button', { - name: 'Sign in with Google or Github instead' + name: 'Sign in with Google or GitHub instead' }) ).toBeInTheDocument() }) diff --git a/src/platform/cloud/onboarding/CloudSignupView.test.ts b/src/platform/cloud/onboarding/CloudSignupView.test.ts index 4fb26335afa..95958fbe79e 100644 --- a/src/platform/cloud/onboarding/CloudSignupView.test.ts +++ b/src/platform/cloud/onboarding/CloudSignupView.test.ts @@ -235,7 +235,7 @@ describe('CloudSignupView', () => { expect( screen.getByRole('button', { - name: 'Sign up with Google or Github instead' + name: 'Sign up with Google or GitHub instead' }) ).toBeInTheDocument() }) From 8c841ec858a03a30de40c14655e22811ba03c12e Mon Sep 17 00:00:00 2001 From: Glary-Bot Date: Fri, 21 Aug 2026 03:32:27 +0000 Subject: [PATCH 5/6] fix: spell the GitHub color palette name with a capital H --- src/assets/palettes/github.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/palettes/github.json b/src/assets/palettes/github.json index 133e4155d5d..1dccb07f1fb 100644 --- a/src/assets/palettes/github.json +++ b/src/assets/palettes/github.json @@ -1,6 +1,6 @@ { "id": "github", - "name": "Github", + "name": "GitHub", "colors": { "node_slot": { "BOOLEAN": "", From b1a73b2c62177c87ddbb0d964838f8594b60ee3f Mon Sep 17 00:00:00 2001 From: Glary-Bot Date: Fri, 21 Aug 2026 09:39:11 +0000 Subject: [PATCH 6/6] test(e2e): disambiguate the cloud login submit button locator The login SSO fallback link now reads "Sign in with Google or GitHub instead", so the substring match in getByRole('button', { name: 'Sign in' }) also resolves to it alongside the submit button. --- browser_tests/tests/authAccountSwitch.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser_tests/tests/authAccountSwitch.spec.ts b/browser_tests/tests/authAccountSwitch.spec.ts index c81476f3450..5ab6d9f32c3 100644 --- a/browser_tests/tests/authAccountSwitch.spec.ts +++ b/browser_tests/tests/authAccountSwitch.spec.ts @@ -326,7 +326,7 @@ test.describe('Cloud account switch', { tag: '@cloud' }, () => { await page.getByRole('button', { name: 'Use email instead' }).click() await page.getByLabel('Email').fill(ACCOUNT_B.email) await page.getByLabel('Password').fill('password') - await page.getByRole('button', { name: 'Sign in' }).click() + await page.getByRole('button', { name: 'Sign in', exact: true }).click() await expect( page.getByRole('button', { name: 'Current user' })