From 71822341296b99ad6c26d228966dfa4fa8b131d8 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Tue, 11 Aug 2026 09:43:54 +0200 Subject: [PATCH 1/2] [Add] a per-site project type driving clone, status and build (#251) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The toolkit assumed every site was a wordpress-develop checkout — the repo it clones, how it decides a site is "built", and the run/build commands were all hard-wired to WordPress Core. A contributor who wants to work on the block editor (Gutenberg) had no path in, even though the shape of the work is nearly identical. Give each site a project type, chosen once at creation, and let that single choice drive the parts of the flow that differ. This PR covers clone, status and run/build; serving Gutenberg in a real WordPress and the GitHub-issue work item / pull-request flow follow in later PRs. - src/project-type.cjs: one registry describing each target (Core, Gutenberg) — clone URL/branch, PR upstream, built-check path, dev/build scripts, allowed terminal scripts, plus the serve strategy, patch layout and work-item provider the later PRs will read. getProjectType / projectTypeForSite default to Core for any unknown or missing id, so sites created before this field existed need no migration and the Core path is byte-identical. - wordpress:setup resolves the type once and uses it for both the clone and the siteMeta it writes, so the two cannot disagree; site:status returns it. - site:status answers "is it built?" from the type's marker path (Core's wp-includes dist dir vs Gutenberg's build/block-library). - git:update-trunk pulls from the site's own upstream, not always wordpress-develop — updating a Gutenberg checkout from Core's trunk would overwrite it with a different project. - The create-site wizard gains a "Contribute to" choice (default Core), and the dev-server plan and terminal allow-list come from the chosen type. The sidebar button, modal and docs are retitled from "WordPress Core site" to the type-neutral "contributor site"; the create-site and empty-state screenshots are regenerated. Co-Authored-By: Claude Opus 4.8 --- docs/guide/creating-a-site.md | 7 +- docs/guide/getting-started.md | 2 +- docs/public/screenshots/create-site-modal.png | Bin 44917 -> 58743 bytes docs/public/screenshots/empty-state.png | Bin 20169 -> 19434 bytes scripts/screenshots/shots.cjs | 2 +- src/main.js | 41 ++++-- src/project-type.cjs | 138 ++++++++++++++++++ src/renderer/dev-server-command.cjs | 37 +++-- src/renderer/index.jsx | 63 +++++--- test/dev-server-command.test.cjs | 27 ++++ test/ipc-wiring.test.cjs | 106 +++++++++++++- test/project-type.test.cjs | 119 +++++++++++++++ 12 files changed, 490 insertions(+), 52 deletions(-) create mode 100644 src/project-type.cjs create mode 100644 test/project-type.test.cjs diff --git a/docs/guide/creating-a-site.md b/docs/guide/creating-a-site.md index 8b6ab7e..c95243a 100644 --- a/docs/guide/creating-a-site.md +++ b/docs/guide/creating-a-site.md @@ -6,14 +6,15 @@ You do not need one, though, for every ticket you work on. A site holds as many When the app starts with no sites, the main area shows a short prompt to create your first one. -![The app before any site exists: an empty main area and the Create WordPress Core site button at the bottom of the sidebar](/screenshots/empty-state.png) +![The app before any site exists: an empty main area and the Create a contributor site button at the bottom of the sidebar](/screenshots/empty-state.png) ## Start the creation flow -Click **Create WordPress Core site** at the bottom of the sidebar. A dialog opens with two fields. +Click **Create a contributor site** at the bottom of the sidebar. A dialog opens. -![The Create WordPress Core site dialog, with a Site name text field and a Site location folder picker](/screenshots/create-site-modal.png) +![The Create a contributor site dialog, with a Contribute to choice, a Site name text field and a Site location folder picker](/screenshots/create-site-modal.png) +- **Contribute to** — the project this site targets: **WordPress Core** (Trac tickets) or **Gutenberg** (GitHub issues). This sets which repository is cloned and where its pull requests go, and cannot be changed later. WordPress Core is selected by default. - **Site name** — the label shown in the sidebar. It also determines the folder name: spaces and characters that are not valid in file names become hyphens, so a site named `My WordPress site` lives in a folder called `My-WordPress-site`. - **Site location** — the parent folder where the site will be created. The app adds a new directory inside it for the project; it does not clone into the folder you pick directly. diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index b7f77ac..e21c12c 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -35,7 +35,7 @@ The app is signed and notarized by Automattic, so macOS should open it without i ## Your first contribution, in ten steps -1. Click **Create WordPress Core site** and choose a destination folder for your site. +1. Click **Create a contributor site**, leave **Contribute to** on WordPress Core, and choose a destination folder for your site. 2. Wait while the app downloads `wordpress-develop`. 3. Click **Install npm dependencies**. 4. Click **Run full build**. diff --git a/docs/public/screenshots/create-site-modal.png b/docs/public/screenshots/create-site-modal.png index b0c1aa9370ce352d8c5d5549010fd4054a42ed2f..197751d276977e6ce47ab8da733763077a4c30d3 100644 GIT binary patch literal 58743 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⋘ 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 FCICOPvyA`% literal 44917 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 S#S6ZIx~ZypJ@=}`^Zx~gY%x{< diff --git a/scripts/screenshots/shots.cjs b/scripts/screenshots/shots.cjs index be97e5e..3b1c0ff 100644 --- a/scripts/screenshots/shots.cjs +++ b/scripts/screenshots/shots.cjs @@ -53,7 +53,7 @@ const shots = [ tier: 'fixture', variant: 'empty', prepare: async (page) => { - await page.getByRole('button', { name: 'Create WordPress Core site' }).click(); + await page.getByRole('button', { name: 'Create a contributor site' }).click(); await page.getByRole('dialog').getByText('Site name').waitFor(); } }, diff --git a/src/main.js b/src/main.js index 54568d6..312fc51 100644 --- a/src/main.js +++ b/src/main.js @@ -53,6 +53,7 @@ const { } = require('./ticket-branches'); const { createProgressThrottle, describeSwitchProgress } = require('./switch-progress.cjs'); const { getStore } = require('./settings-store'); +const { normalizeProjectType, getProjectType, projectTypeForSite } = require('./project-type.cjs'); // One name for the send-only progress channel (#173), shared with preload.js // through the tests rather than by import — the renderer bundle and the main @@ -93,7 +94,6 @@ if (!app.isPackaged && process.env.TOOLKIT_USER_DATA_DIR) { } } -const WORDPRESS_GIT_URL = 'https://github.com/WordPress/wordpress-develop.git'; // Provide a PATH shim so npm's spawned scripts can find a 'node' binary that maps to Electron's Node let nodeShimDir = null; @@ -1227,7 +1227,11 @@ ipcMain.handle('git:update-trunk', async (event, sitePath) => { await mergeSiteMeta(sitePath, { currentBranch: TRUNK }); } - const result = await updateToLatestTrunk({ dir: sitePath, url: WORDPRESS_GIT_URL, onLog: sendLog }); + // Pull from the site's own upstream, not always wordpress-develop + // (#251): updating a Gutenberg checkout from Core's trunk would + // overwrite it with a different project entirely. Defaults to Core. + const updateUrl = projectTypeForSite(await readSiteMeta(sitePath)).clone.url; + const result = await updateToLatestTrunk({ dir: sitePath, url: updateUrl, onLog: sendLog }); // An update resets the worktree, so any applied patch is gone with // it either way — clear the record so the "applied" banner does not // outlive the patch. (This is also where a discard's cleanup lands: @@ -1588,13 +1592,16 @@ ipcMain.handle('site:status', async (_e, sitePath) => { const nmDir = path.join(sitePath, 'node_modules'); const hasNodeModules = fs.existsSync(nmDir) && (() => { try { return fs.readdirSync(nmDir).length > 0; } catch { return false; } })(); - const distDir = path.join(sitePath, 'build', 'wp-includes', 'js', 'dist'); - const hasBuilt = fs.existsSync(distDir); - const s = await getStore(); const meta = s.get('siteMeta') || {}; const m = meta[sitePath] || {}; + // "Is this site built?" is answered differently per project (#251): Core + // has a built wp-includes dist dir, Gutenberg builds into build/. + // The marker path comes from the site's project type, defaulting to Core. + const builtDir = path.join(sitePath, ...projectTypeForSite(m).build.builtCheckRelPath); + const hasBuilt = fs.existsSync(builtDir); + // Trunk snapshot age (#94). Read from HEAD each time (one object // read) and written through to siteMeta, so the sidebar can render // staleness dots from siteMeta alone, without per-site git I/O. @@ -1626,9 +1633,9 @@ ipcMain.handle('site:status', async (_e, sitePath) => { } : null; - return { hasNodeModules, hasBuilt, skipInitWizard: Boolean(m.skipInitWizard), initialized: Boolean(m.initialized), installFailed: Boolean(m.installFailed), trunkOid, trunkDate, updateIncomplete: Boolean(work.updateIncomplete), tracTicket: m.tracTicket || null, appliedPatch }; + return { hasNodeModules, hasBuilt, skipInitWizard: Boolean(m.skipInitWizard), initialized: Boolean(m.initialized), installFailed: Boolean(m.installFailed), trunkOid, trunkDate, updateIncomplete: Boolean(work.updateIncomplete), tracTicket: m.tracTicket || null, projectType: m.projectType || 'core', appliedPatch }; } catch { - return { hasNodeModules: false, hasBuilt: false, skipInitWizard: false, initialized: false, installFailed: false, trunkOid: null, trunkDate: null, updateIncomplete: false, tracTicket: null, appliedPatch: null }; + return { hasNodeModules: false, hasBuilt: false, skipInitWizard: false, initialized: false, installFailed: false, trunkOid: null, trunkDate: null, updateIncomplete: false, tracTicket: null, projectType: 'core', appliedPatch: null }; } }); @@ -1675,6 +1682,11 @@ ipcMain.handle('wordpress:setup', async (event, destDir, options = {}) => { await fse.ensureDir(destDir); + // The contribution target for this site (#251), resolved once: it drives both + // the clone below and the metadata written after it, so they cannot disagree. + const projectType = normalizeProjectType(options.projectType); + const projectConfig = getProjectType(projectType); + const requestedName = typeof options.siteName === 'string' ? options.siteName.trim() : ''; const sanitizedName = requestedName.replace(/[\\/:*?"<>|]+/g, '-').replace(/\s+/g, '-').replace(/^-+|-+$/g, '') || 'wordpress-develop-trunk'; const uniqueName = findAvailableDirName(destDir, sanitizedName); @@ -1692,11 +1704,11 @@ ipcMain.handle('wordpress:setup', async (event, destDir, options = {}) => { await git.clone({ http, fs, - url: WORDPRESS_GIT_URL, + url: projectConfig.clone.url, dir: siteDir, - singleBranch: true, - depth: 1, - ref: 'trunk', + singleBranch: projectConfig.clone.singleBranch, + depth: projectConfig.clone.depth, + ref: projectConfig.clone.ref, onProgress: (evt) => { // evt: {phase,total,loaded,lengthComputable} - forward as terminal-like output const msg = `${evt.phase || 'clone'} ${evt.loaded || 0}/${evt.total || 0}`; @@ -1719,7 +1731,12 @@ ipcMain.handle('wordpress:setup', async (event, destDir, options = {}) => { ...existingMeta, initialized: false, createdAt: existingMeta.createdAt || new Date().toISOString(), - label: existingMeta.label || siteLabel + label: existingMeta.label || siteLabel, + // The contribution target chosen in the wizard (#251), normalized to a + // known id so an unknown value is stored as Core rather than left to + // coerce on every read. Preserved on re-setup of a folder, and the + // same id the clone above used. + projectType: existingMeta.projectType || projectType }; try { const { trunkOid, trunkDate } = await readTrunkInfo(siteDir); diff --git a/src/project-type.cjs b/src/project-type.cjs new file mode 100644 index 0000000..7d8f28c --- /dev/null +++ b/src/project-type.cjs @@ -0,0 +1,138 @@ +'use strict'; + +// The contribution targets ("project types") the toolkit can host. +// +// Until now every site was implicitly a `wordpress-develop` (WordPress Core) +// checkout, and that assumption was a scattering of constants: the clone URL, +// the "is it built?" path, the dev/build scripts, the Playground serve model, +// the work-item source (Trac), and the pull-request upstream. This module is +// the one place those per-target facts live, so a site's chosen type — not a +// constant buried in a handler — drives each of them (issue #251). +// +// It is deliberately pure data + pure functions: no `electron`, no `fs`, no +// side effects. Both the main process and the renderer bundle `require`/`import` +// it, and `node --test` loads it directly. +// +// The invariant every consumer relies on: an unknown or missing type resolves +// to Core. A site created before this field existed has no `projectType`, so it +// keeps Core behavior with no migration and no store write. + +const WORDPRESS_DEVELOP_GIT_URL = 'https://github.com/WordPress/wordpress-develop.git'; +const GUTENBERG_GIT_URL = 'https://github.com/WordPress/gutenberg.git'; + +const DEFAULT_PROJECT_TYPE = 'core'; + +const PROJECT_TYPES = { + core: { + id: 'core', + label: 'WordPress Core', + // The option label shown in the create-site wizard picker. + wizardLabel: 'WordPress Core (Trac tickets)', + // One-line description shown next to the choice in the create-site wizard. + description: 'Contribute to WordPress Core using Trac tickets.', + // The noun this target uses for a unit of work, for UI copy: a Core site + // links a "ticket", a Gutenberg site links an "issue". + workItemNoun: 'ticket', + + clone: { url: WORDPRESS_DEVELOP_GIT_URL, ref: 'trunk', singleBranch: true, depth: 1 }, + upstream: { owner: 'WordPress', repo: 'wordpress-develop', base: 'trunk' }, + + build: { + // site:status checks this path under the site to decide "is it built?". + builtCheckRelPath: ['build', 'wp-includes', 'js', 'dist'], + buildScript: 'build', + // wordpress-develop's dev watcher is Grunt, reached through npm's `--` + // passthrough (see dev-server-command.cjs for why the separator matters). + watch: { script: 'grunt', args: ['--', '_watch'], label: 'npm run grunt -- _watch' }, + allowedScripts: ['build', 'build:dev', 'dev', 'test', 'watch', 'grunt'] + }, + + // 'docroot' — the built checkout IS the WordPress install Playground serves. + serve: { strategy: 'docroot' }, + + // 'src-layout' — patch paths are rewritten into wordpress-develop's + // src/wp-includes layout (patch-plan.cjs mapToSrcLayout). + patch: { layout: 'src-layout' }, + + workItem: { provider: 'trac' }, + + pr: { + branchPrefix: 'trac-', + // The line that ties the pull request back to its work item. + bodyLine: (id, url) => `Trac ticket: ${url}`, + closesKeyword: null + } + }, + + gutenberg: { + id: 'gutenberg', + label: 'Gutenberg', + wizardLabel: 'Gutenberg (GitHub issues)', + description: 'Contribute to the block editor (Gutenberg) using GitHub issues.', + workItemNoun: 'issue', + + clone: { url: GUTENBERG_GIT_URL, ref: 'trunk', singleBranch: true, depth: 1 }, + upstream: { owner: 'WordPress', repo: 'gutenberg', base: 'trunk' }, + + build: { + // Gutenberg builds each package into build/; block-library is + // always present in a completed build, so its directory is the marker. + builtCheckRelPath: ['build', 'block-library'], + buildScript: 'build', + // `npm run dev` is already an incremental watcher — it must NOT inherit + // Core's `grunt -- _watch` passthrough dance. + watch: { script: 'dev', args: [], label: 'npm run dev' }, + allowedScripts: ['build', 'dev', 'test', 'test:unit', 'lint'] + }, + + // 'plugin-mount' — Gutenberg is a plugin, so Playground boots a stock + // WordPress and mounts the built checkout as an active plugin. + serve: { strategy: 'plugin-mount' }, + + // 'repo-relative' — Gutenberg PR diffs are already repo-relative + // (packages/…); no src-layout rewrite. + patch: { layout: 'repo-relative' }, + + workItem: { provider: 'github-issue' }, + + pr: { + branchPrefix: 'fix/issue-', + bodyLine: (id) => `Fixes #${id}`, + closesKeyword: 'Fixes' + } + } +}; + +// Resolve a stored id to its config, defaulting to Core for anything unknown or +// missing. This is the single seam every caller uses — never index +// PROJECT_TYPES directly with untrusted input. +function getProjectType(id) { + return PROJECT_TYPES[id] || PROJECT_TYPES[DEFAULT_PROJECT_TYPE]; +} + +// Convenience for the common case: resolve straight from a site's stored meta. +function projectTypeForSite(meta) { + return getProjectType(meta && meta.projectType); +} + +// True only for an id the registry actually defines — for validating input +// before persisting it (an unknown id is coerced to Core on read, but we store +// the normalized id, not the raw input). +function isProjectTypeId(id) { + return Object.prototype.hasOwnProperty.call(PROJECT_TYPES, id); +} + +// Normalize arbitrary input to a stored id: a known id passes through, anything +// else becomes the default. Used at the write boundary (wordpress:setup). +function normalizeProjectType(id) { + return isProjectTypeId(id) ? id : DEFAULT_PROJECT_TYPE; +} + +module.exports = { + PROJECT_TYPES, + DEFAULT_PROJECT_TYPE, + getProjectType, + projectTypeForSite, + isProjectTypeId, + normalizeProjectType +}; diff --git a/src/renderer/dev-server-command.cjs b/src/renderer/dev-server-command.cjs index 0f08b0d..964d079 100644 --- a/src/renderer/dev-server-command.cjs +++ b/src/renderer/dev-server-command.cjs @@ -8,7 +8,12 @@ * DOM: the renderer bundle imports it, `node --test` requires it directly * (same convention as setup-steps.cjs). * - * Why the watcher is `grunt -- _watch` and not `npm run watch`: + * The build and watch commands are not the same for every contribution target, + * so they come from the project-type registry's `build` config rather than + * being hard-coded here. `planDevServerStart` defaults to Core's config, which + * keeps every existing caller (and its tests) unchanged. + * + * Why Core's watcher is `grunt -- _watch` and not `npm run watch`: * wordpress-develop's Gruntfile renames the real watch task to `_watch` and * registers a `watch` wrapper that runs the entire production `build` task * first when invoked without arguments. On a site that has already completed @@ -16,29 +21,33 @@ * tens of minutes go on every dev-server start (30+ on a Windows VM). * Invoking `_watch` through the `grunt` passthrough script starts the same * watchers immediately. Sites without a completed build still need one, so - * they get `npm run build` — whose exit code is a real completion signal — - * before the watcher starts. + * they get `npm run ` — whose exit code is a real completion + * signal — before the watcher starts. * - * The `'--'` in the watcher args is load-bearing: script-runner.js + * The `'--'` in Core's watcher args is load-bearing: script-runner.js * deliberately does not insert a separator, and without one npm consumes * `_watch` as its own argument and runs bare `grunt` — the default task, - * i.e. a full build with no watcher. + * i.e. a full build with no watcher. Gutenberg's watcher is `npm run dev`, + * already an incremental watcher, so it takes no such separator. */ -const WATCH_SCRIPT = 'grunt'; -const WATCH_ARGS = ['--', '_watch']; -const WATCH_COMMAND_LABEL = 'npm run grunt -- _watch'; +const { getProjectType } = require('../project-type.cjs'); + +const CORE_BUILD_CONFIG = getProjectType('core').build; -function planDevServerStart(flags = {}) { +function planDevServerStart(flags = {}, buildConfig = CORE_BUILD_CONFIG) { const hasBuilt = Boolean(flags.hasBuilt); + const build = buildConfig || CORE_BUILD_CONFIG; return { - // True when `npm run build` must run (and exit 0) before the watcher - // and the server may start. + // True when the build must run (and exit 0) before the watcher and the + // server may start. needsBuild: !hasBuilt, + // The npm script that produces a completed build for this project. + buildScript: build.buildScript, watch: { - script: WATCH_SCRIPT, - args: WATCH_ARGS.slice(), - label: WATCH_COMMAND_LABEL + script: build.watch.script, + args: build.watch.args.slice(), + label: build.watch.label } }; } diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 5775079..2f97611 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -12,6 +12,7 @@ import { MenuGroup, MenuItem, Modal, + RadioControl, SnackbarList, TextControl, TextareaControl, @@ -43,8 +44,8 @@ import { highlightLog } from './log-highlight.cjs'; import { carryTestMode } from './github-account.cjs'; import { changesNoteParts, discardOutcome, noteAfterDiscard, modalDiscardDisabled, discardBlocked, DISCARD_CONFIRM_MESSAGE } from './changes-note.cjs'; import { initialConfirmations, confirmationReducer, prConfirmationMessage } from './confirmations.cjs'; +import { PROJECT_TYPES, DEFAULT_PROJECT_TYPE, getProjectType } from '../project-type.cjs'; -const TERMINAL_ALLOWED_SCRIPTS = ['build', 'build:dev', 'dev', 'test', 'watch', 'grunt']; // One face for everything that is process output: the terminal below and every // log pane above it. Shared rather than repeated because the panes had drifted // into the app's sans-serif, which does not line up a stack trace and does not @@ -109,6 +110,9 @@ const RENAME_INPUT_ID = 'rename-site-name-input'; const CREATE_SITE_NAME_INPUT_ID = 'create-site-name-input'; const CREATE_SITE_LOCATION_INPUT_ID = 'create-site-location-input'; const CREATE_SITE_LOCATION_HELP_ID = 'create-site-location-help'; +// The contribution-target choices for the create-site wizard, sourced from the +// project-type registry so the copy lives in one place. Core is first (default). +const CREATE_SITE_TYPE_OPTIONS = Object.values(PROJECT_TYPES).map((t) => ({ label: t.wizardLabel, value: t.id })); // Why the ticket's PR list could not be read, worded for the contributor. const TICKET_PATCH_STATUS_MESSAGE = { 'rate-limited': 'GitHub is rate-limiting this connection.', @@ -323,6 +327,7 @@ function App() { const [createModalOpen, setCreateModalOpen] = useState(false); const [createSiteName, setCreateSiteName] = useState(''); const [createSiteDir, setCreateSiteDir] = useState(''); + const [createSiteType, setCreateSiteType] = useState(DEFAULT_PROJECT_TYPE); const [createSiteError, setCreateSiteError] = useState(''); const [createSubmitting, setCreateSubmitting] = useState(false); const [setupLogsBySite, setSetupLogsBySite] = useState({}); @@ -489,6 +494,7 @@ function App() { if (createSubmitting) return; setCreateSiteName(''); setCreateSiteDir(''); + setCreateSiteType(DEFAULT_PROJECT_TYPE); setCreateSiteError(''); setCreateModalOpen(true); }, [createSubmitting]); @@ -546,6 +552,8 @@ function App() { setCreateModalOpen(false); setCreateSiteName(''); setCreateSiteDir(''); + const chosenType = createSiteType; + setCreateSiteType(DEFAULT_PROJECT_TYPE); try { setCreateSubmitting(true); @@ -553,7 +561,7 @@ function App() { setTerminalMsgs(''); addPendingSite(targetDir); appendSetupLog(targetDir, 'Starting site setup…\n'); - const createdPath = await window.api.setupWordPress(createSiteDir, { siteName: cleanFolder, siteLabel: nameTrimmed }); + const createdPath = await window.api.setupWordPress(createSiteDir, { siteName: cleanFolder, siteLabel: nameTrimmed, projectType: chosenType }); if (createdPath) { finalSitePath = createdPath; // Ordinarily already done, by the `cloning` status this handler's own @@ -587,7 +595,7 @@ function App() { clearPendingSites(); setCreateSubmitting(false); } - }, [addPendingSite, appendSetupLog, applySetup, clearPendingSites, createSiteDir, createSiteName, moveSetupLog, refresh]); + }, [addPendingSite, appendSetupLog, applySetup, clearPendingSites, createSiteDir, createSiteName, createSiteType, moveSetupLog, refresh]); const closeCreateModal = useCallback(() => { if (createSubmitting) return; @@ -824,10 +832,10 @@ function App() { onClick={chooseAndSetup} disabled={createSubmitting} style={{ width: '100%', justifyContent: 'center' }} - aria-label="Create WordPress Core site" + aria-label="Create a contributor site" label={createSubmitting ? 'Finish creating the current site first' : undefined} > - {!sidebarCollapsed ? 'Create WordPress Core site' : null} + {!sidebarCollapsed ? 'Create a contributor site' : null} @@ -924,7 +932,7 @@ function App() { {createModalOpen ? ( @@ -944,6 +952,14 @@ function App() { // eslint-disable-next-line jsx-a11y/no-autofocus -- intentional: this is the first field of a just-opened modal. autoFocus /> + setCreateSiteType(value)} + disabled={createSubmitting} + />

Run one of: ' + TERMINAL_ALLOWED_SCRIPTS.join(', ') + '\n'); + writeToTerminal(' npm run