Edit and rename the readme for GitHub#3
Closed
maxme wants to merge 2 commits into
Closed
Conversation
Contributor
|
We're actually going to be writing a separate readme.md for GitHub. The WordPress.org readme has a lot of semantic details that GitHub doesn't need and just clutter it up. We can provide a better one for GitHub usage. |
gravityrail
pushed a commit
that referenced
this pull request
Jul 24, 2016
Dailymotion shortcode: fix failing test when ID is an empty string
angelablake
pushed a commit
that referenced
this pull request
May 28, 2026
…ment Three CI failures on the first PR #3 push, all rooted in conditional expressions tripping up static analysis tools that the dev-mode build skips: 1. **i18n-check-webpack-plugin: `msgid argument is not a string literal`** — `webpack`'s production minifier folds adjacent `cond ? __( A ) : __( B )` into `__( cond ? A : B )`. The folded form has no literal `__()` arguments for the static extractor to read, so the translation strings "Verified", "Customized", and "Default" all disappeared from the `.pot` output. Fixed by resolving each translated string into a named variable before the conditional render — the minifier can't fold across an assignment boundary. - `_inc/screens/settings/site-verification-card.tsx`: extract `verifiedLabel` / `notSetLabel` at module scope (the values don't depend on render-time state). - `_inc/screens/settings/title-structure-field.tsx`: extract `customizedLabel` / `defaultLabel` inside the component body (cheap to re-resolve per render; closer to use site). 2. **Phan: `UnusedPluginSuppression` + `PhanUndeclaredClassMethod`** — `@phan-suppress-next-line` only suppresses the immediately-following source line. My `get_settings()` call put the suppression two lines above the actual `Jetpack_SEO_Utils::get_front_page_meta_description()` call (the ternary spanned multiple lines). Phan flagged the suppression as unused and the method call as undeclared. Restructured the ternary into `if / else` so the suppression sits on the line directly before the method call, matching the pattern already used in `class-initializer.php`. Verified locally: `NODE_ENV=production pnpm run build` clean (this catches the i18n fold trap that `jetpack build packages/seo` dev mode skips); `pnpm run typecheck` clean; `composer phpunit` clean. Co-Authored-By: Filipe Varela <filipe@automattic.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
angelablake
pushed a commit
that referenced
this pull request
May 29, 2026
Restores keoshi's original placement (e644739). PR #3's earlier choice to place the status card alongside the editable input form on the Settings tab created visible redundancy on JN: the input form's count badge plus its per-service text inputs already convey which services are connected, so the adjacent read-only status card was duplicate UI. Surfaced during JN testing on PR #3. Changes: - `_inc/screens/settings/site-verification-card.tsx` → `_inc/screens/overview/site-verification-card.tsx` (`git mv`). Restored the data source to `OverviewResponse['site_verification']` and re-added the "Edit verification" footer button → `#/settings` (using the `Button href` pattern per [[feedback_jetpack_button_link_pattern]], not keoshi's `as={ NavLink }` which doesn't typecheck). - `_inc/screens/settings/index.tsx`: drop the `<SiteVerificationCard>` import + render. Settings now hosts only the editable input form. - `_inc/screens/overview/index.tsx`: render the verification card alongside the visibility card in the existing grid. - `_inc/data/overview-types.ts`: extend `OverviewResponse` with a `site_verification` boolean map (per-service connected state). Deliberately booleans, not the raw codes — Overview only needs "is this connected?"; the actual codes belong behind the Settings endpoint where the input form needs them. Smaller payload, smaller privacy surface. - `src/class-rest-controller.php` `get_overview()`: emit the new boolean map by reducing the existing `get_site_verification()` codes via `'' !== $code`. Verified locally: `NODE_ENV=production pnpm run build` clean (catches the i18n fold trap dev builds skip); `pnpm run typecheck` clean; `composer phpunit` clean. Co-Authored-By: Filipe Varela <filipe@automattic.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
angelablake
pushed a commit
that referenced
this pull request
May 29, 2026
…tings UX iteration in PR #3 based on JN testing feedback. Three threads: Overview: clarity + always-visible discovery - Drop the "SEO tools active" row from the Site visibility card (tautological — the menu only renders when the module is active). - Rephrase the search-engines row: "Discoverable by search engines" / "Hidden from search engines". - Rename buttons honestly: "Manage settings" -> "Manage visibility"; "Edit verification" -> "Manage verification". - Both buttons deep-link to the matching Settings section via `?focus=visibility` / `?focus=verification`. Overview: new SEO tools banner + always-visible menu - Remove the `is_seo_tools_module_active()` gate from `Initializer::add_menu_item()`. Menu always visible. - New `SeoToolsBanner` component above the Overview grid: on/off state + opposite-action button. - New `POST /jetpack-seo/v1/seo-tools` toggles the module. Disabling preserves all stored data. - New `useToggleSeoTools` hook invalidates `jetpack-seo-overview` on success. Pulls forward project-memory work earmarked for "after PR #5b" — JN testing surfaced the friction sooner. Settings: new Site visibility section - Group search-engine discoverability, Sitemap, and Canonical URLs under `<section id="visibility">` heading at the top. - New `search_engines_visible` field on `GET/POST /jetpack-seo/v1/settings` mirrors WP core's `blog_public`. - Wrap Verification card in `<section id="verification">` so it's also a deep-link target. Verified locally: - `pnpm run typecheck` clean. - `NODE_ENV=production pnpm run build` clean. - `composer phpunit` clean. Co-Authored-By: Filipe Varela <filipe@automattic.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
angelablake
pushed a commit
that referenced
this pull request
May 29, 2026
Second round of UX iteration on PR #3 from JN testing. - SEO tools banner is now a `ToggleControl` (was Button). Added optimistic local state so the toggle reflects the user's choice immediately rather than waiting for the overview query refetch to land — that gap was producing a double-click bug where Re-enable needed two presses. - Visibility section consolidated into one CollapsibleCard containing all three knobs (search engines, sitemap, canonical URLs) as adjacent `ToggleControl`s. Matches the Jetpack Settings convention of grouping related settings inside a single card. - Sitemap data folded into `/jetpack-seo/v1/settings` (extended with `sitemap_enabled`, `sitemap_url`, `news_sitemap_url`). The `/jetpack-seo/v1/sitemap` REST endpoints + `useSitemap` hook + standalone `SitemapCard` are removed — one round-trip serves the entire visibility section now. - Deep-link scroll fixed: switched from `useSearchParams` to `useLocation` + manual `URLSearchParams` parsing. `useSearchParams`'s instance is recreated on every render, so a same-pathname re-navigation (Overview to Settings to Overview to Settings) wasn't reliably re-triggering the scroll effect. `location.search` is a stable string and behaves as expected. Verified locally: - `pnpm run typecheck` clean. - `NODE_ENV=production pnpm run build` clean. - `composer phpunit` clean. Co-Authored-By: Filipe Varela <filipe@automattic.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
angelablake
pushed a commit
that referenced
this pull request
May 29, 2026
…efault Third round of UX iteration on PR #3. - Deep-link scroll: switched to `document.getElementById` + `requestAnimationFrame` so the scroll fires after the route transition + layout settle. The previous ref-based approach was unreliable through Tabs.Root transitions — refs read null on the first effect firing, and `useSearchParams`'s instance churn meant same-pathname re-navigations weren't re-triggering the effect. - Inactive-state UX: when the `seo-tools` module is off, dim the Overview cards (`opacity: 0.55`) and dim the Settings cards. Settings also renders a warning Notice above the cards explaining the settings aren't being applied. Banner on Overview stays full-strength as the primary CTA. Controls remain interactive so users can prep configuration that will apply on re-enable. - Settings now reads `seo_tools_active` from the `/settings` response (new field) rather than firing a second query. - Post Title Structure card now defaults to closed (was open), matching the other Settings cards' collapsed-by-default convention. Verified locally: - `pnpm run typecheck` clean. - `NODE_ENV=production pnpm run build` clean. - `composer phpunit` clean. Co-Authored-By: Filipe Varela <filipe@automattic.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
angelablake
pushed a commit
that referenced
this pull request
May 29, 2026
`Modules::activate( 'seo-tools' )` defaults `$exit = true` and `$redirect = true`. In a REST context that's wrong twice: - `$exit = true` calls `exit(0)` AFTER updating `active_modules`. The REST handler never returns its response. The JS mutation sees a malformed/empty body and TanStack invalidation marks the cache stale, but the next refetch reads the same module state from before any client-perceived change actually propagated, and the cached "Disabled" state snaps back into the banner on the next tab visit. - `$redirect = true` calls `wp_safe_redirect( admin.php?page=jetpack )` from inside the REST request lifecycle, mixing a 302 header into the response. Passing `false, false` makes activate behave as a plain "flip the option" call that returns to our handler so we can send back the actual `WP_REST_Response`. Also added a small safety net on the frontend: if the mutation errors (e.g. `Jetpack_Plan::supports()` returns false for the module on this site), the optimistic banner state reverts to the pre-toggle value instead of leaving the UI lying about a state that didn't actually take. Surfaced during PR #3 JN testing — re-enabling SEO after disabling didn't stick visually on Overview even though Settings looked correct, and the underlying cause was the activate() exit-short-circuit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 tasks
5 tasks
dhasilva
pushed a commit
that referenced
this pull request
Jun 2, 2026
CI feedback from the initial push surfaced four classes of issues:
- Typecheck failures from the partial scope:
- Remove the unused "Manage settings" button from SiteVisibilityCard
(referenced the trimmed JetpackSeoRoutes.Settings constant). The button
returns in PR #3 when the Settings tab lands as its deep-link target.
- Update useSimpleMutation onSuccess to TanStack Query v5's 4-arg form
(data, variables, onMutateResult, context) — v5 added onMutateResult
between variables and context.
- Project-structure expectations for a new package:
- Add .phan/config.php so static analysis recognises the package's PHP.
- Add changelog/.gitkeep so the changelog directory survives release.
- Changelog format:
- Reset CHANGELOG.md to the keep-a-changelog header only (no pre-release
`[0.1.0-alpha] - unreleased` block — pending entries live in changelog/).
- Change the Jetpack-plugin changelog Type from `added` to `enhancement`
(plugin/jetpack uses major|enhancement|compat|bugfix|other, not the
keep-a-changelog vocabulary the packages use).
Co-Authored-By: Filipe Varela <filipe@automattic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
dhasilva
added a commit
that referenced
this pull request
Jun 2, 2026
#49203) * Components: add BoundedLayout layout primitive Add a shared `BoundedLayout` wrapper to `@automattic/jetpack-components` with two MSD-aligned presets — `compact` (660px) and `wide` (1344px) — so products can keep visual alignment across Overview / Settings / Dashboard screens. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Jetpack SEO: introduce package foundation and Site visibility Overview Adds a new `automattic/jetpack-seo` package that mounts a React admin at `wp-admin/admin.php?page=jetpack-seo`. Menu item gates on the `seo-tools` module being active. This PR is the first of a staged series introducing the Jetpack SEO product; it ships only the package scaffold and the Overview screen's Site visibility card. Follow-up PRs add the Settings, Per-post SEO (Content), and AI tabs, along with their REST writers and respective Overview cards. New package - PHP: `Initializer` (admin menu registration + asset enqueue, gated on `seo-tools`), `REST_Controller` exposing `/jetpack-seo/v1/overview` only. - React SPA: `createHashRouter` + `RouterProvider`, `AdminPage` from `@automattic/jetpack-components`, TanStack Query for server state. - Single screen: Overview with a Site visibility card (search-engines allowed, sitemap active/inactive, SEO tools active/inactive). All other Overview cards land with the PRs that own their underlying features. Jetpack plugin wiring - `class.jetpack.php`: load the new package in `late_initialization()`. - `composer.json`: require `automattic/jetpack-seo`. Co-Authored-By: Angela Blake <angela.blake@a8c.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * SEO foundation: fix typecheck, project structure, and changelog format CI feedback from the initial push surfaced four classes of issues: - Typecheck failures from the partial scope: - Remove the unused "Manage settings" button from SiteVisibilityCard (referenced the trimmed JetpackSeoRoutes.Settings constant). The button returns in PR #3 when the Settings tab lands as its deep-link target. - Update useSimpleMutation onSuccess to TanStack Query v5's 4-arg form (data, variables, onMutateResult, context) — v5 added onMutateResult between variables and context. - Project-structure expectations for a new package: - Add .phan/config.php so static analysis recognises the package's PHP. - Add changelog/.gitkeep so the changelog directory survives release. - Changelog format: - Reset CHANGELOG.md to the keep-a-changelog header only (no pre-release `[0.1.0-alpha] - unreleased` block — pending entries live in changelog/). - Change the Jetpack-plugin changelog Type from `added` to `enhancement` (plugin/jetpack uses major|enhancement|compat|bugfix|other, not the keep-a-changelog vocabulary the packages use). Co-Authored-By: Filipe Varela <filipe@automattic.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * SEO foundation: address Phan + scope-leftover issues CI surfaced two more issues on the foundation PR: - Initializer still called `LLMS_Txt::init()`, `AI_Crawlers::init()`, and `Schema_Builder::init()` — those classes live in later PRs (#4 and #6). Remove the calls; they return when their classes land. - Initializer registered `maybe_redirect_legacy_surfaces` on `admin_init`, which would have 301-redirected `?page=jetpack&tab=seo|traffic` to the new admin page. But the legacy Traffic page is still live on trunk in this PR's window, so redirecting now strands users mid-task. Remove the hook + the method entirely; the redirect lands in PR #5b alongside the discoverability banner and the actual deletion of the legacy surfaces. - Phan can't see `Jetpack_SEO_Utils` (lives in plugins/jetpack, not this package). The runtime-safety `class_exists` checks already guard the calls; add `@phan-suppress-next-line PhanUndeclaredClassMethod` so static analysis stops flagging them. Co-Authored-By: Filipe Varela <filipe@automattic.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * SEO foundation: opt into shared admin-page-layout mixin Drops the SEO admin page's reliance on admin-ui's internal `.admin-ui-page*` classes — which are hashed in the standalone `@wordpress/admin-ui` build and only literal in some WP core bundles — in favor of the stable `.jp-admin-page__page` hook that `<AdminPage>` forwards onto admin-ui's `<Page>` and the shared `jetpack-admin-page-layout-wp-build` mixin from `@automattic/jetpack-base-styles`. This also delivers the sticky `JetpackFooter` behavior previously proposed as a one-off in `<AdminPage>`'s own SCSS — the shared mixin already pins the footer to the bottom of the viewport via the stable selector chain, which is the same path Newsletter / Protect / Backup / Search / VideoPress take. See CGastrell's review on #49201. Per-page opt-in lives in a new non-module `_inc/admin-page-layout.scss` (matching the Newsletter pattern), so the mixin's body-class scope stays out of the CSS-modules file. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * SEO foundation: ship PHPUnit + jest configs across the CI matrix The first PR push only included `phpunit.11.xml.dist`, so CI's PHP test matrix (PHP 7.4–8.5) failed at config-read because PHPUnit 8/9/12 had no config to select. Adds `phpunit.8.xml.dist`, `phpunit.9.xml.dist`, and `phpunit.12.xml.dist`, mirrored verbatim from `packages/ip`'s set. Adds a `test` script + a `tests/jest.config.js` so the JS-tests CI job doesn't error with `Missing script: test` either. Uses `--passWithNoTests` so the package can ship before it grows JS tests, and inherits the shared `jetpack-js-tools/jest/config.base.js` for when it does (asset stub for `.scss` imports, ts/jsx transform, JSDOM environment). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * SEO foundation: add .gitattributes so build/ ships with the package Without `.gitattributes`, the production-publish pipeline that vendors `automattic/jetpack-seo` into the Jetpack plugin's `jetpack_vendor/` respects `.gitignore` and drops the webpack-built `build/` directory. The PHP source files come along (they're not gitignored), so the SEO admin menu item appears and the mount `<div id="jetpack-seo-root">` renders — but the enqueued `build/index.js` URL 404s, leaving the admin page visually blank. Mirrors Newsletter's `.gitattributes` (the canonical wp-build package): - `/build/** production-include` overrides gitignore for build output - `*.tsx`/`*.ts`/`*.scss` under `_inc/` and `src/` are `production-exclude` since webpack has already compiled them into `build/`. Confirmed against the 404 on `wp-content/plugins/jetpack-dev/jetpack_vendor/automattic/jetpack-seo/build/index.js` in JetpackBeta on `sweetly-partial-gazelle.jurassic.ninja`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Jetpack SEO: migrate Overview to the shared data-sync layer Address review feedback on #49203 — replace hand-rolled data plumbing with Jetpack's established patterns. Data layer: - Register a read-only `overview` data-sync entry (namespace `jetpack_seo`) via Data_Sync_Readonly + Schema, bootstrapped onto the page with attach_to_plugin() so the app hydrates from window.jetpack_seo without a round-trip. - use-overview -> useDataSync; overview-types -> Zod OverviewSchema; providers -> DataSyncProvider. - Delete class-rest-controller.php, use-simple-query.ts and the unused use-simple-mutation.ts; drop the dead jetpackSeoRest bootstrap and the now-unused @wordpress/api-fetch and @tanstack/react-query deps. Module gating: - Move the seo-tools module check up into Initializer::init() so no routes, menu, or assets register when the module is off (matches how other Jetpack modules gate), removing the redundant per-method check. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: adopt shared components and design tokens on the Overview Address review feedback on #49203 — replace hand-rolled UI with the platform's primitives. - Collapse shell.tsx onto AdminPage (drop the header-actions slot/fill context and the background/padding CSS overrides); delete header-actions-context.tsx and _inc/style.module.scss. - Use @wordpress/ui Notice (compound), Stack, and Link in place of @wordpress/components Notice/ExternalLink and flexbox CSS. - Give StatusDot its own style module using @wordpress/theme color tokens; tokenize remaining colors and spacing. - Extract ternary __() labels to module scope so i18n extraction survives the production minifier. - Remove the unused BoundedLayout from @automattic/jetpack-components. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: rebuild the admin page on wp-build + script-data Migrate the SEO foundation page off the custom webpack/React-Router setup onto @wordpress/build (wp-build), matching the live pattern the other recently-modernized Jetpack admin pages use (modeled on the Podcast package). - Build: add the wpPlugin block + wp-build scripts, the routes/index entry (stage/route/package.json), and drop webpack.config.js, babel.config.js, react-router, and zod. - Data layer: replace the data-sync Overview wiring with the shared script-data layer. wp-build pages load as ES modules, so wp_localize_script can't bootstrap them; the server now injects state onto window.JetpackScriptData.seo via the jetpack_admin_js_script_data filter (Podcast/Newsletter pattern), read synchronously in get-overview.ts. - PHP: keep the seo-tools module gate and the Admin_Menu top-level menu; load build/build.php + register WP_Build_Polyfills and alias the screen id on current_screen so wp-build's self-hooked enqueue fires for our slug. - Styles: convert CSS-module SCSS to plain prefixed SCSS (no wp-build package uses CSS modules). - composer: drop wp-js-data-sync + schema, add wp-build-polyfills. Verified: dev + production build, tsgo typecheck, php -l, phpcs, eslint, and i18n string extraction all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: align wp-build to trunk cohort (@wordpress/build 0.14.0) Sync the branch with trunk and bump @wordpress/build 0.13.0 -> 0.14.0 to match the current wp-build cohort. The branch had fallen ~99 commits behind trunk, which had since bumped @wordpress/build; the stale 0.13.0 pin left the PR-merge lockfile referencing build variants trunk no longer defines, failing CI's frozen install. Regenerated pnpm-lock.yaml on the merged tree. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: refresh plugins/jetpack composer.lock for the SEO dep change The SEO package's composer.json changed (dropped wp-js-data-sync + schema, added wp-build-polyfills), so the consuming plugin's lock was stale and failed CI's "Lock files are up to date" check. Regenerated via tools/composer-update-monorepo.sh. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: fix Overview page padding and status-dot colors Two CSS regressions from the wp-build rebuild, caught in JN testing: - Page had no content padding: the layout SCSS included the `jetpack-admin-page-layout-wp-build` mixin, which only carries breadcrumb / anchor resets — not the content layout. Switch to the plain `jetpack-admin-page-layout` mixin (as Scan/Podcast do) and target both the top-level and Jetpack-submenu body classes. - Status dots rendered near-black: the plain `--wpds-color-fg-content-*` tokens are the darkest text shades (#2900 / #470000). Use the `-weak` variants (#007f30 / #cc1818 / amber), the vivid indicator colors the shared StatusIndicator pattern uses. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: add content padding to the Overview page The card sat flush against the header and page sides. `<AdminPage>` renders its content with `horizontalSpacing={0}` and no `hasPadding`, so only the header is padded — content padding is the consumer's responsibility (as in Scan/Podcast). The earlier frontend cleanup removed the old `.paddedContent` override without replacing it. Wrap the screen in `.jetpack-seo-page-content` padded at `--wpds-dimension-padding-2xl` (24px) to align with the header. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: remove the broken sitemap "View" link from the Overview The link pointed at home_url('/sitemap.xml'), which 404s: the "active" signal comes from a placeholder option (jetpack_seo_sitemap_enabled, which exists nowhere else in Jetpack) rather than the real `sitemaps` module, and even when the module is active Jetpack generates the sitemap via cron so the URL isn't live immediately. Drop the link to avoid shipping a dead link; correct sitemap detection + URL is tracked as a follow-up. The status row itself is unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: address #49203 review feedback (docs + cleanup) - README: rewrite to match the shipped wp-build + script-data architecture (drop HashRouter/react-query/useSimpleQuery, REST API, pnpm run build/watch). - composer.json: drop unused requires (jetpack-connection/constants/assets); keep admin-ui/status/wp-build-polyfills, which the Initializer actually uses. - admin-page-layout.scss: use the -wp-build layout mixin variant so the code matches the changelog claim; it's a no-op superset until a tab adds breadcrumbs. - Initializer: guard init() with a private static $initialized flag (Podcast pattern) so the body can't re-run when seo-tools is off; document the pre-wired sitemap_url / front_page_description Overview fields. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: regenerate jetpack composer.lock after trimming seo package deps Follow-up to 8bc377e, which dropped the unused jetpack-connection/ constants/assets requires from the jetpack-seo package. The Jetpack plugin's composer.lock still recorded the old require set for the package, so the 'Lock files are up to date' check failed. Regenerated with `composer update automattic/jetpack-seo`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: gate the package behind the rsm_jetpack_seo feature flag Gate the entire SEO surface (admin menu, wp-build bundle, script data) behind the rsm_jetpack_seo filter, default false during roll-out, mirroring how the Scan package gates itself. Consolidate the package changelog into a single entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * remove product name translations * Jetpack SEO: address review — drop wpds token fallbacks and fragile card CSS - Remove hex fallbacks on --wpds-* design tokens to match @wordpress/theme's no-token-fallback-values convention (tokens are guaranteed under ThemeProvider). - Remove the equal-height grid CSS that targeted @wordpress/ui's non-stable hashed Card internals; defer until a second Overview card exists. - Use title="SEO" instead of title={ 'SEO' }. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Jetpack SEO: use logical margin-inline-end on the status dot for RTL Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Filipe Varela <filipe@automattic.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Angela Blake <angela.blake@a8c.com> Co-authored-by: Angela Blake <angelablake@Angelas-MacBook-Pro.local> Co-authored-by: Douglas <douglas.henri@automattic.com>
6 tasks
This was referenced Jun 19, 2026
5 tasks
This was referenced Jun 24, 2026
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.
No description provided.