DOCS-2849: Add PlatformMatrix component for compatibility page#2609
DOCS-2849: Add PlatformMatrix component for compatibility page#2609ctauchen wants to merge 3 commits intotigera:mainfrom
Conversation
✅ Deploy Preview for calico-docs-preview-next ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview succeeded!Built without sensitive environment variables
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
This PR refactors the Calico Enterprise “Support and compatibility” documentation to render the platform compatibility matrix via a single reusable React component, with compatibility data centralized in one source file.
Changes:
- Adds
PlatformMatrixReact component to render a cross-version platform compatibility table (CE 3.23–3.20). - Centralizes platform/version compatibility data in
src/___new___/data/platformMatrixData.js. - Updates Calico Enterprise compatibility pages (unversioned + selected versioned docs) to replace hand-maintained tables with
<PlatformMatrix />.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/new/data/platformMatrixData.js | Introduces the centralized CE platform/version compatibility dataset consumed by the component. |
| src/new/components/PlatformMatrix/index.js | Implements the table renderer and simple footnote rendering logic. |
| calico-enterprise/getting-started/compatibility.mdx | Replaces long per-platform markdown tables with <PlatformMatrix />. |
| calico-enterprise_versioned_docs/version-3.23-1/getting-started/compatibility.mdx | Same replacement for CE 3.23-1 versioned docs. |
| calico-enterprise_versioned_docs/version-3.22-2/getting-started/compatibility.mdx | Same replacement for CE 3.22-2 versioned docs. |
| calico-enterprise_versioned_docs/version-3.21-2/getting-started/compatibility.mdx | Same replacement for CE 3.21-2 versioned docs. |
| calico-enterprise_versioned_docs/version-3.20-2/getting-started/compatibility.mdx | Same replacement for CE 3.20-2 versioned docs. |
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE 4k](#mke-4k) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE 4k](#mke-4k) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE 4k](#mke-4k) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| The following list shows the platforms supported in this release. If you're working with a version older than these, consult the [documentation archive](https://docs.tigera.io/archive) or contact Support. | ||
|
|
||
| - [AKS](#aks) | ||
| - [EKS](#eks) | ||
| - [GKE](#gke) | ||
| - [kOps on AWS](#kops-on-aws) | ||
| - [Kubernetes-kubeadm](#kubernetes-kubeadm) | ||
| - [MKE](#mke) | ||
| - [OpenShift](#openshift) | ||
| - [RKE](#rke) | ||
| - [RKE2](#rke2) | ||
| - [TKG](#tkg) | ||
| - [Charmed Kubernetes](#charmed-kubernetes) | ||
|
|
||
| ### Supported $[prodname] features | ||
|
|
||
| If your platform is listed below, the features in this release will work for your platform unless an individual feature topic explicitly calls out a vendor or $[prodname] limitation. | ||
|
|
||
| Note that all Windows feature limitations are described in [Windows limitations](install-on-clusters/windows-calico/limitations.mdx), and are not called out in individual Linux topics. |
There was a problem hiding this comment.
The intro still says "The following list shows the platforms supported in this release", but the per-platform list/sections were removed and replaced with a multi-version matrix. This makes the section misleading (and the "Supported $[prodname] features" heading no longer introduces any actual platform-specific support details). Consider revising this text/heading to match the new matrix, or reintroduce a short summary of supported features by platform elsewhere on the page.
| export default function PlatformMatrix() { | ||
| const footnotes = platforms.filter((p) => p.footnote); | ||
|
|
||
| return ( | ||
| <> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Platform</th> | ||
| {CE_VERSIONS.map((v) => ( | ||
| <th key={v}>CE {v}</th> | ||
| ))} | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| {platforms.map((platform) => ( | ||
| <tr key={platform.id}> | ||
| <td> | ||
| <strong>{platform.label}</strong> | ||
| {platform.footnote && <sup>*</sup>} | ||
| </td> | ||
| {CE_VERSIONS.map((v) => ( | ||
| <td key={v}>{renderCell(platform, v)}</td> | ||
| ))} | ||
| </tr> | ||
| ))} | ||
| </tbody> | ||
| </table> | ||
| {footnotes.length > 0 && ( | ||
| <p style={{ fontSize: '0.9em' }}> | ||
| {footnotes.map((p) => ( | ||
| <span key={p.id}> | ||
| * {p.footnote} | ||
| <br /> | ||
| </span> | ||
| ))} | ||
| </p> | ||
| )} | ||
| </> | ||
| ); | ||
| } |
There was a problem hiding this comment.
This component introduces new rendering logic and is now used on multiple compatibility pages, but it doesn't have a Jest snapshot/unit test (most other src/___new___/components/* components have __test__/index.test.tsx). Adding a basic render/snapshot test (including at least one footnote row and an unsupported-version cell rendering as "—") would help prevent accidental regressions when compatibility data is updated.
| const footnotes = platforms.filter((p) => p.footnote); | ||
|
|
||
| return ( | ||
| <> | ||
| <table> | ||
| <thead> | ||
| <tr> | ||
| <th>Platform</th> | ||
| {CE_VERSIONS.map((v) => ( | ||
| <th key={v}>CE {v}</th> | ||
| ))} | ||
| </tr> | ||
| </thead> | ||
| <tbody> | ||
| {platforms.map((platform) => ( | ||
| <tr key={platform.id}> | ||
| <td> | ||
| <strong>{platform.label}</strong> | ||
| {platform.footnote && <sup>*</sup>} | ||
| </td> | ||
| {CE_VERSIONS.map((v) => ( | ||
| <td key={v}>{renderCell(platform, v)}</td> | ||
| ))} | ||
| </tr> | ||
| ))} | ||
| </tbody> | ||
| </table> | ||
| {footnotes.length > 0 && ( | ||
| <p style={{ fontSize: '0.9em' }}> | ||
| {footnotes.map((p) => ( | ||
| <span key={p.id}> | ||
| * {p.footnote} | ||
| <br /> | ||
| </span> | ||
| ))} |
There was a problem hiding this comment.
Footnote markers are always rendered as a bare "*" (both in the table and in the footnote list). If more than one platform gets a footnote, readers won't be able to tell which note applies to which row. Consider numbering footnotes (or otherwise mapping markers to specific footnotes) so multiple footnotes remain unambiguous.
123f4f2 to
045ae68
Compare
Replaces hand-maintained per-platform markdown tables with a single React component driven by a shared data file. Shows a cross-version matrix (CE 3.23 through 3.20) for all supported platforms. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace compatibility.mdx#<anchor> links across 70 install-page references
with anchor-less compatibility.mdx links. Component now renders a single
matrix instead of per-platform headings, so the old anchors no longer exist.
- Redesign platformMatrixData.js around a unified entry shape:
- alignedWith makes AKS/EKS/GKE/Charmed inherit kubeadm's k8s ranges, so
bumping kubeadm bumps all four.
- Each cell holds 0+ SupportEntry items, letting MKE on CE 3.22 stack
MKE 3.9 and MKE 3.8 in one cell.
- installPath + cni fields prepare the data file to drive
platform-specific snippets on the per-platform install pages.
- PlatformMatrix component renders the latest VISIBLE_COLUMN_COUNT (3) CE
versions, follows alignedWith, stacks multi-entry cells, and links the
row label to the install page using a docs-version-relative path.
- Bring data current with upstream main: add MKE 3.9 entries for CE 3.23
and CE 3.22 (3.22 keeps its dual MKE 3.9/3.8 row).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The llms-full.txt static asset is served by the site and crawled by the link-checker test, so its anchors must match the live page. Strip the 14 remaining `compatibility#<anchor>` URLs that survived the previous .mdx/.md/.js sweep. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
045ae68 to
d81590c
Compare

Summary
<PlatformMatrix />React componentsrc/___new___/data/platformMatrixData.js), making updates a single-file changeSupersedes #2531.
Test plan
🤖 Generated with Claude Code