diff --git a/.prettierrc.mjs b/.prettierrc.mjs index 5f7898a6fb3152..411021b1a3d5be 100644 --- a/.prettierrc.mjs +++ b/.prettierrc.mjs @@ -1,7 +1,7 @@ // @ts-check /** @type {import("prettier").Config} */ export default { - plugins: ["prettier-plugin-astro"], + plugins: ["prettier-plugin-astro", "prettier-plugin-tailwindcss"], useTabs: true, overrides: [ { diff --git a/package-lock.json b/package-lock.json index a0442eb2e6f62e..25bb3d09e0a7b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,6 +55,7 @@ "playwright": "^1.49.1", "prettier": "^3.4.2", "prettier-plugin-astro": "^0.14.1", + "prettier-plugin-tailwindcss": "^0.6.9", "puppeteer": "^23.11.0", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -13010,6 +13011,85 @@ "node": "^14.15.0 || >=16.0.0" } }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", + "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig-melody": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig-melody": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, "node_modules/printable-characters": { "version": "1.0.42", "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz", diff --git a/package.json b/package.json index 3dfe9d1acc3cd7..12ffdd4e735e6c 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "playwright": "^1.49.1", "prettier": "^3.4.2", "prettier-plugin-astro": "^0.14.1", + "prettier-plugin-tailwindcss": "^0.6.9", "puppeteer": "^23.11.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/src/assets/images/changelog-next/hero.svg b/src/assets/images/changelog-next/hero.svg new file mode 100644 index 00000000000000..d03758daeab2b2 --- /dev/null +++ b/src/assets/images/changelog-next/hero.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/workers/platform/ci-cd/workers-build-caching.png b/src/assets/images/workers/platform/ci-cd/workers-build-caching.png new file mode 100644 index 00000000000000..e3910ca53401a7 Binary files /dev/null and b/src/assets/images/workers/platform/ci-cd/workers-build-caching.png differ diff --git a/src/assets/images/workers/platform/ci-cd/workers-build-watch-paths.png b/src/assets/images/workers/platform/ci-cd/workers-build-watch-paths.png new file mode 100644 index 00000000000000..c733d8aeee46d4 Binary files /dev/null and b/src/assets/images/workers/platform/ci-cd/workers-build-watch-paths.png differ diff --git a/src/components/changelog-next/Header.astro b/src/components/changelog-next/Header.astro new file mode 100644 index 00000000000000..84248467b9608f --- /dev/null +++ b/src/components/changelog-next/Header.astro @@ -0,0 +1,84 @@ +--- +import { Image } from "astro:assets"; +import { z } from "astro:schema"; +import { getEntry, type CollectionEntry } from "astro:content"; + +import { StarlightIcon } from ".."; +import HeroImage from "~/assets/images/changelog-next/hero.svg"; + +type Props = z.infer; + +const props = z.object({ + entries: z.array(z.any()).optional(), +}); + +const { entries } = props.parse(Astro.props); + +async function uniqueProducts( + entries?: Array>, +) { + const products = entries?.flatMap((entry) => entry.data.products ?? []); + + const unique = [ + ...new Map(products?.map((product) => [product.id, product])).values(), + ]; + + return Promise.all( + unique.map(async (product) => { + return getEntry(product); + }), + ); +} + +const products = await uniqueProducts(entries); +--- + +
+
+
+
+ hero image +
+

Changelog

+

+ New updates and improvements at Cloudflare. + + + Subscribe to RSS + + + +

+ { + entries && ( +
+ +
+ ) + } +
+ +
+
diff --git a/src/components/changelog-next/ProductPills.astro b/src/components/changelog-next/ProductPills.astro new file mode 100644 index 00000000000000..a86347d2bde58b --- /dev/null +++ b/src/components/changelog-next/ProductPills.astro @@ -0,0 +1,27 @@ +--- +import { getEntries } from "astro:content"; +import { reference } from "astro:content"; +import { z } from "astro:schema"; + +type Props = z.infer; + +const props = z.object({ + products: z.array(reference("products")), +}); + +const { products } = Astro.props; + +const data = await getEntries(products); +--- + +
+ { + data.map((product) => ( + + + {product.data.product.title} + + + )) + } +
diff --git a/src/components/overrides/Footer.astro b/src/components/overrides/Footer.astro index 58f689cf210c81..4848f8f822cc2e 100644 --- a/src/components/overrides/Footer.astro +++ b/src/components/overrides/Footer.astro @@ -92,7 +92,7 @@ if (
    {links.map((link) => (
  • - + {link.text}
  • @@ -103,7 +103,7 @@ if (
    -
      +
      • 2024 Cloudflare, Inc.
      • @@ -111,7 +111,7 @@ if (
      • {text} @@ -126,17 +126,17 @@ if ( ) : ( <> -
        +