diff --git a/messages/en.context.json b/messages/en.context.json
index 7a4dcf8cba..f171e99d57 100644
--- a/messages/en.context.json
+++ b/messages/en.context.json
@@ -426,8 +426,10 @@
"app-onboarding-explore-dashboard-confirm-title": "Used in Capgo web console areas: components. Role: section or dialog title. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-onboarding-exploring-subtitle": "Used in Capgo web console areas: components/dashboard. Role: UI sentence. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-onboarding-exploring-title": "Used in Capgo web console areas: components/dashboard. Role: section or dialog title. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
+ "app-onboarding-icon-choose-file": "Used in pre-organization app onboarding. Role: button that opens the native image file picker.",
"app-onboarding-icon-help": "Used in Capgo web console areas: components/dashboard. Role: helper or description text. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-onboarding-icon-label": "Used in Capgo web console areas: components/dashboard. Role: UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
+ "app-onboarding-icon-no-file-selected": "Used in pre-organization app onboarding. Role: status shown before an app icon file is selected.",
"app-onboarding-icon-preview-alt": "Used in Capgo web console areas: components/dashboard. Role: UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-onboarding-install-badge": "Used in Capgo web console areas: components/dashboard. Role: UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-onboarding-install-ready-title": "Used in app onboarding flow. Role: section or dialog title about \"app onboarding install ready title\". Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
@@ -477,6 +479,14 @@
"app-onboarding-toast-no-organization": "Used in Capgo web console areas: components/dashboard. Role: toast or status message. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-onboarding-toast-resume-not-found": "Used in Capgo web console areas: components/dashboard. Role: toast or status message. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-onboarding-toast-store-metadata-error": "Used in Capgo web console areas: components/dashboard. Role: toast or status message. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
+ "app-onboarding-v2-ai-help-status": "Used in the pre-organization app onboarding AI help prompt. Role: status clarifying that store publication is optional.",
+ "app-onboarding-v2-appid-dialog-description": "Used in pre-organization app onboarding. Role: dialog text explaining that Capgo's App ID may differ from native project IDs.",
+ "app-onboarding-v2-appid-dialog-title": "Used in pre-organization app onboarding. Role: title for the App ID explanation dialog.",
+ "app-onboarding-v2-appid-help": "Used in the pre-organization app onboarding flow. Role: helper text explaining which native project identifier to enter.",
+ "app-onboarding-v2-details-helper": "Used in the pre-organization app onboarding flow. Role: helper text clarifying that store publication is not required.",
+ "app-onboarding-v2-details-title": "Used in the pre-organization app onboarding flow. Role: section title for entering app details.",
+ "app-onboarding-v2-store-import-help": "Used in the pre-organization app onboarding flow. Role: helper text for the optional store import.",
+ "app-onboarding-v2-store-import-toggle": "Used in the pre-organization app onboarding flow. Role: button that reveals the optional store import controls.",
"app-perm": "Used in Capgo web console areas: components/tables. Role: UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-to-channel": "Used in Capgo web console areas: pages/admin/dashboard. Role: UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"app-transferred": "Used in Capgo web console areas: components/dashboard. Role: UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
@@ -1495,6 +1505,7 @@
"key-upload": "Used in Capgo web console. Role: short UI label about \"key upload\". Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"key-write": "Used in Capgo web console. Role: short UI label about \"key write\". Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"language": "Used in Capgo web console areas: pages/settings/account. Role: short UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
+ "learn-more": "Used in pre-organization app onboarding. Role: button opening additional App ID guidance.",
"last": "Used in Capgo web console. Role: short UI label about \"last\". Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"last-1-hour": "Used in Capgo web console areas: services. Role: UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
"last-12-hours": "Used in Capgo web console areas: services. Role: UI label. Translate for UI; keep Capgo product names, code, and placeholders unchanged.",
diff --git a/messages/en.json b/messages/en.json
index 38a44399a5..af0704a5fe 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -408,8 +408,10 @@
"app-onboarding-existing-yes-helper": "Import details from the store listing or enter the package ID manually.",
"app-onboarding-exploring-subtitle": "Demo data is temporary — your real app is waiting.",
"app-onboarding-exploring-title": "Exploring the Capgo dashboard",
+ "app-onboarding-icon-choose-file": "Choose file",
"app-onboarding-icon-help": "The icon is optional. If you import from a store listing, Capgo will try to reuse the store icon automatically.",
"app-onboarding-icon-label": "App icon",
+ "app-onboarding-icon-no-file-selected": "No file selected",
"app-onboarding-icon-preview-alt": "App icon preview",
"app-onboarding-install-badge": "CLI onboarding",
"app-onboarding-explore-dashboard": "Explore Capgo dashboard",
@@ -462,6 +464,14 @@
"app-onboarding-toast-no-organization": "No organization selected.",
"app-onboarding-toast-resume-not-found": "Unable to find the onboarding app.",
"app-onboarding-toast-store-metadata-error": "Unable to fetch metadata from that store link.",
+ "app-onboarding-v2-ai-help-status": "Existing mobile project; store publication is optional",
+ "app-onboarding-v2-appid-dialog-description": "Capgo uses this App ID to identify the app in the dashboard and CLI. It is often the same as your native project ID, but it does not have to be. Changing it here does not change your iOS Bundle Identifier, Android Application ID, Capacitor appId, or store listing.",
+ "app-onboarding-v2-appid-dialog-title": "How does the Capgo App ID work?",
+ "app-onboarding-v2-appid-help": "Choose the ID Capgo should use for this app. It may differ from your native project IDs.",
+ "app-onboarding-v2-details-helper": "Enter the details from your project. Your app does not need to be published on the App Store or Google Play.",
+ "app-onboarding-v2-details-title": "Add your app details",
+ "app-onboarding-v2-store-import-help": "Paste a store link to prefill the app name, App ID, and icon when available.",
+ "app-onboarding-v2-store-import-toggle": "Import details from the App Store or Google Play",
"app-not-found": "App not found",
"app-not-found-description": "This app could not be found. It might have been deleted or you might not have access to it.",
"app-perm": "App permission",
@@ -1422,6 +1432,7 @@
"key-upload": "Upload",
"key-write": "Write",
"language": "Language",
+ "learn-more": "Learn more",
"last": "Last",
"last-12-months": "Last 12 Months",
"last-30-minutes": "Last 30 minutes",
diff --git a/playwright/e2e/register.spec.ts b/playwright/e2e/register.spec.ts
index 68d3ec6d30..92a8da3510 100644
--- a/playwright/e2e/register.spec.ts
+++ b/playwright/e2e/register.spec.ts
@@ -38,13 +38,17 @@ test.describe('Registration', () => {
await page.click('[data-test="onboarding-intent-ota"]')
await page.click('[data-test="app-onboarding-continue-intent"]')
- await page.click('[data-test="app-onboarding-existing-no"]')
+ await expect(page.locator('[data-test="app-onboarding-existing-yes"]')).toHaveCount(0)
+ await expect(page.locator('[data-test="app-onboarding-existing-no"]')).toHaveCount(0)
+ await expect(page.locator('[data-test="app-onboarding-name"]')).toBeVisible()
+ await expect(page.locator('#app-onboarding-app-id')).toBeVisible()
await page.fill('[data-test="app-onboarding-name"]', appName)
await page.click('[data-test="app-onboarding-continue"]')
await expectProtectedRouteRedirect(page, '/apps', /\/onboarding\/app/, '[data-test="onboarding-logout"]')
await expect(page.locator('[data-test="onboarding-org-name"]')).toHaveValue(appName)
+ await page.locator('[data-test="onboarding-estimated-users-option"]').first().click()
await page.getByRole('button', { name: 'Back', exact: true }).click()
await page.fill('[data-test="app-onboarding-name"]', editedAppName)
await page.click('[data-test="app-onboarding-continue"]')
diff --git a/src/components/dashboard/AppOnboardingFlow.vue b/src/components/dashboard/AppOnboardingFlow.vue
index e62fd83b4a..d9cc26aec0 100644
--- a/src/components/dashboard/AppOnboardingFlow.vue
+++ b/src/components/dashboard/AppOnboardingFlow.vue
@@ -1,6 +1,8 @@
-
+