Skip to content

WIP: feat: use Sätteri as the MDX processor#31367

Draft
mvvmm wants to merge 3 commits into
productionfrom
feat/satteri
Draft

WIP: feat: use Sätteri as the MDX processor#31367
mvvmm wants to merge 3 commits into
productionfrom
feat/satteri

Conversation

@mvvmm

@mvvmm mvvmm commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary

Switches the MDX processor to Sätteri — a Rust-based Markdown/MDX engine with a JavaScript plugin layer — using the new processor option added in @astrojs/mdx@6.0.0. The existing remark/rehype pipeline continues to handle .md files unchanged; only .mdx files use Sätteri.

Also fixes a type error in src/plugins/rehype/heading-slugs.ts surfaced by the updated hast types that ship with @astrojs/mdx@6.0.2.

Note: @astrojs/markdown-satteri@0.3.0 (published today) is blocked by the repo's supply-chain minimum-age policy. This PR uses 0.2.2; a follow-up bump to 0.3.0 can land once the cutoff passes.

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

This pull request requires reviews from CODEOWNERS as it changes files that match the following patterns:

Pattern Owners
*.ts @cloudflare/content-engineering, @kodster28
package.json @cloudflare/content-engineering
* @cloudflare/product-owners
/src/content/changelog/ @cloudflare/pm-changelogs, @cloudflare/product-owners
/src/content/changelog/cloudflare-one/ @kennyj42, @asamborski, @ranbel, @cloudflare/pm-changelogs, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/changelog/waf/ @cloudflare/firewall, @vs-mg, @fb1337, @cloudflare/pm-changelogs, @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners, @hsaxenaCF, @danielegm, @ay-cf
/src/content/docs/agents/ @irvinebroque, @rita3ko, @elithrar, @thomasgauvin, @threepointone, @whoiskatrin, @cloudflare/product-owners, @cloudflare/ai-agents, @cloudflare/dev-plat-leads
/src/content/docs/ai-gateway/ @abhishekkankani, @palashgo, @thebongy, @roerohan, @kathayl, @mchenco, @zeke, @superhighfives, @bfirsh, @mattrothenberg, @ethulia, @aninibread, @kflansburg, @cloudflare/product-owners
/src/content/docs/analytics/ @soheiokamoto, @angelampcosta, @rianvdm, @dcpena, @cloudflare/product-owners
/src/content/docs/analytics/analytics-engine/ @irvinebroque, @elithrar, @nevikashah, @WalshyDev, @cloudflare/product-owners
/src/content/docs/api-shield/ @patriciasantaana, @cloudflare/appsec-reviewers, @elithrar, @xmflsct, @danielegm, @cloudflare/product-owners
/src/content/docs/artifacts/ @elithrar, @dmmulroy, @mattzcarey, @dinasaur404, @whoiskatrin, @cloudflare/product-owners
/src/content/docs/automatic-platform-optimization/ @cloudflare/product-owners, @ack-cf
/src/content/docs/bots/ @jinhee-c-lee, @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners, @marinaelmore, @njustus1
/src/content/docs/browser-run/ @mchenco, @cloudflare/product-owners, @celso, @kathayl, @dcpena, @meddulla, @simonabadoiu, @jonnyparris, @ruifigueira, @Refaerds, @omarmosid
/src/content/docs/cache/ @cloudflare/product-owners, @ack-cf
/src/content/docs/cloudflare-challenges/ @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners, @marinaelmore
/src/content/docs/cloudflare-for-platforms/workers-for-platforms/ @irvinebroque, @dinasaur404, @cloudflare/deploy-config, @cloudflare/product-owners
/src/content/docs/cloudflare-one/access-controls/ @kennyj42, @asamborski, @ranbel, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/docs/cloudflare-one/ @ranbel, @Maddy-Cloudflare, @codyanthony850, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/docs/cloudflare-one/networks/connectors/cloudflare-tunnel/ @nikitacano, @ranbel, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/docs/cloudflare-one/traffic-policies/ @alexmoraru7, @Maddy-Cloudflare, @codyanthony850, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/docs/containers/ @mikenomitch, @th0m, @cloudflare/product-owners, @cloudflare/cloudchamber
/src/content/docs/d1/ @elithrar, @rita3ko, @irvinebroque, @vy-ton, @ivoryibu, @rts-rob, @joshthoward, @lambrospetrou, @oxyjun, @cloudflare/product-owners
/src/content/docs/ddos-protection/ @patriciasantaana, @cloudflare/appsec-reviewers, @elithrar, @alpdot, @cloudflare/product-owners, @anita-tenjarla, @cjdoucette, @sbohrer, @vcfxb, @danielegm
/src/content/docs/dns/dns-firewall/ @RebeccaTamachiro, @hannes-cf, @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners, @fattouche, @xofyarg, @dklbreitling, @chreo, @svenr-cf, @kerolasa, @matildeopbravo, @vavrusa, @mworsley-cloudflare, @sebastiaanyn, @vendemiat, @Woutifier
/src/content/docs/dynamic-workers/ @cloudflare/workers-docs, @GregBrimble, @irvinebroque, @mikenomitch, @korinne, @WalshyDev, @cloudflare/deploy-config, @cloudflare/product-owners, @cloudflare/wrangler, @MattieTK, @cloudflare/dev-plat-leads
/src/content/docs/fundamentals/ @dcpena, @cloudflare/product-owners
/src/content/docs/hyperdrive/ @elithrar, @rita3ko, @irvinebroque, @vy-ton, @ivoryibu, @thomasgauvin, @sejoker, @oxyjun, @knickish, @cloudflare/product-owners
/src/content/docs/key-transparency/ @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners
/src/content/docs/learning-paths/ @cloudflare/product-owners
/src/content/docs/load-balancing/ @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners, @ncrouch-cflare
/src/content/docs/log-explorer/ @angelampcosta, @dcpena, @cloudflare/product-owners
/src/content/docs/logs/ @soheiokamoto, @angelampcosta, @rianvdm, @dcpena, @cloudflare/product-owners
/src/content/docs/migration-guides/ @cloudflare/product-owners
/src/content/docs/moq/ @renandincer, @nils-ohlmeier, @cloudflare/product-owners
/src/content/docs/network-error-logging/ @dcpena, @cloudflare/product-owners
/src/content/docs/notifications/ @dcpena, @cloudflare/product-owners
/src/content/docs/queues/ @elithrar, @jonesphillip, @harshil1712, @mia303, @cloudflare/product-owners
/src/content/docs/realtime/ @cloudflare/product-owners, @cloudflare/realtime, @cloudflare/RealtimeKit, @roerohan, @ravindra-cloudflare
/src/content/docs/registrar/ @dcpena, @cloudflare/product-owners
/src/content/docs/sandbox/ @whoiskatrin, @ghostwriternr, @scuffi, @aron-cf, @thomasgauvin, @cloudflare/product-owners, @cloudflare/ai-agents
/src/content/docs/security-center/ @alexmoraru7, @cloudflare/appsec-reviewers, @elithrar, @danielegm, @cloudflare/product-owners, @davejbax, @zrkn, @hemanthk1099, @bseel-cfone
/src/content/docs/security/ @cloudflare/appsec-reviewers, @elithrar, @xmflsct, @danielegm, @cloudflare/product-owners, @davejbax, @zrkn, @hemanthk1099
/src/content/docs/spectrum/ @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners, @cansu
/src/content/docs/speed/ @cloudflare/product-owners, @ack-cf
/src/content/docs/ssl/ @baubuchon-cf, @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners
/src/content/docs/style-guide/ @dcpena, @caley-b, @cloudflare/product-owners
/src/content/docs/support/ @cloudflare/product-owners, @cloudflare/customer-support, @ngayerie, @krys-cf, @stechedo, @zeinjaber, @shanecloudflare
/src/content/docs/terraform/ @dcpena, @cloudflare/product-owners
/src/content/docs/turnstile/ @migueldemoura, @punkeel, @marinaelmore, @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners
/src/content/docs/version-management/ @dcpena, @cloudflare/product-owners
/src/content/docs/waf/ @pedrosousa, @cloudflare/firewall, @cloudflare/appsec-reviewers, @elithrar, @cloudflare/product-owners, @hsaxenaCF, @danielegm
/src/content/docs/waiting-room/ @angelampcosta, @dcpena, @cloudflare/product-owners, @hsaxenaCF, @danielegm
/src/content/docs/web-analytics/ @angelampcosta, @dcpena, @ryantownsend, @cloudflare/product-owners
/src/content/docs/workers/ci-cd/ @irvinebroque, @aninibread, @GregBrimble, @ericclemmons, @cloudflare/product-owners, @yomna-shousha, @MattieTK, @vy-ton
/src/content/docs/workers/ @cloudflare/workers-docs, @GregBrimble, @irvinebroque, @mikenomitch, @korinne, @WalshyDev, @cloudflare/deploy-config, @cloudflare/product-owners, @cloudflare/wrangler, @MattieTK, @cloudflare/dev-plat-leads, @vy-ton
/src/content/docs/workers/observability/ @irvinebroque, @mikenomitch, @nevikashah, @cloudflare/product-owners, @vy-ton
/src/content/docs/workers/wrangler/ @cloudflare/wrangler, @irvinebroque, @cloudflare/product-owners, @MattieTK, @vy-ton
/src/content/docs/workflows/ @elithrar, @rita3ko, @irvinebroque, @vy-ton, @celso, @deloreyj, @mia303, @jonesphillip, @cloudflare/product-owners
/src/content/docs/zaraz/ @dcpena, @kathayl, @jonnyparris, @simonabadoiu, @cloudflare/product-owners
/src/content/partials/ai-gateway/ @abhishekkankani, @palashgo, @thebongy, @roerohan, @kathayl, @mchenco, @zeke, @superhighfives, @bfirsh, @mattrothenberg, @ethulia, @aninibread, @kflansburg, @cloudflare/product-owners
/src/content/partials/cloudflare-one/ @ranbel, @Maddy-Cloudflare, @codyanthony850, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/partials/cloudflare-one/tunnel/ @nikitacano, @ranbel, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/partials/cloudflare-one/warp/ @ranbel, @cf-rhett, @csujedihy, @lpraneis, @jiulingz, @tojens-ietf, @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners
/src/content/partials/durable-objects/ @elithrar, @rita3ko, @irvinebroque, @vy-ton, @iglesiasbrandon, @joshthoward, @danlapid, @oxyjun, @lambrospetrou, @mikenomitch, @cloudflare/product-owners
/src/content/partials/hyperdrive/ @elithrar, @rita3ko, @irvinebroque, @vy-ton, @ivoryibu, @thomasgauvin, @sejoker, @oxyjun, @knickish, @cloudflare/product-owners
/src/content/partials/load-balancing/ @cloudflare/cf1-reviewers, @elithrar, @cloudflare/product-owners, @ncrouch-cflare
/src/content/partials/r2/ @elithrar, @rita3ko, @irvinebroque, @vy-ton, @helloimalastair, @cloudflare/product-owners

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

CI run failed: build logs

@ask-bonk ask-bonk Bot added engineering Problems or updates to developers.cloudflare.com website docs engine Requires a change to the docs engine labels Jun 10, 2026

@ask-bonk ask-bonk Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 inline comment posted.

  • HIGH src/plugins/rehype/heading-slugs.ts:32-35element.children.with(-2, text) is dead code. Array.prototype.with returns a new array without mutating the original, and the return value is discarded. Because text already references the same object at index -2, this call has no effect. Remove the .with() block instead of adding a type cast.

- Add @astrojs/markdown-satteri and satteri-expressive-code
- Wire expressiveCode() as a hastPlugin so TypeScriptExample, WranglerConfig,
  etc. continue to find the Expressive Code copy button in rendered HTML
- Fix {" "} JSX space expressions in 16 content files (oxc rejects these)
- Strip trailing whitespace from MDX files (space-only blank lines trigger
  an oxc parse error in certain frontmatter+import contexts)
- Fix type error in src/plugins/rehype/heading-slugs.ts surfaced by updated
  hast types in @astrojs/mdx@6.0.2
@mvvmm mvvmm changed the title feat: use Sätteri as the MDX processor WIP: feat: use Sätteri as the MDX processor Jun 10, 2026
@cloudflare cloudflare deleted a comment from ask-bonk Bot Jun 10, 2026
@cloudflare cloudflare deleted a comment from ask-bonk Bot Jun 10, 2026
@mvvmm

mvvmm commented Jun 10, 2026

Copy link
Copy Markdown
Contributor Author

/bonk please review

@github-actions

Copy link
Copy Markdown
Contributor

Broken Links

Found 156 broken link(s) across 77 file(s).

File Link Position Error
content/compatibility-flags/allow-custom-ports.md /workers/runtime-apis/fetch/ 14:85 invalid link
content/compatibility-flags/allow-custom-ports.md /fundamentals/reference/network-ports/#network-ports-compatible-with-cloudflares-proxy 16:88 invalid link
content/compatibility-flags/assets-navigation-prefers-asset-serving.md /workers/static-assets/ 14:18 invalid link
content/compatibility-flags/assets-navigation-prefers-asset-serving.md /workers/static-assets/routing/single-page-application/ 14:344 invalid link
content/compatibility-flags/assets-navigation-prefers-asset-serving.md /workers/static-assets/routing/static-site-generation/#custom-404-pages 14:446 invalid link
content/compatibility-flags/automatic-tracing.md /workers/observability/traces/ 12:23 invalid link
content/compatibility-flags/brotli-content-encoding.md /workers/runtime-apis/fetch/#how-the-accept-encoding-header-is-handled 14:419 invalid link
content/compatibility-flags/cache-api-request-cf-overrides-cache-rules.md /workers/runtime-apis/cache/ 14:134 invalid link
content/compatibility-flags/cache-api-request-cf-overrides-cache-rules.md /workers/configuration/compatibility-flags/#fetch-api-request-cf-overrides-cache-rules 16:42 invalid link
content/compatibility-flags/cache-no-cache.md /workers/runtime-apis/fetch/ 15:64 invalid link
content/compatibility-flags/cache-no-store.md /workers/runtime-apis/fetch/ 13:135 invalid link
content/compatibility-flags/diagnostics-channel-has-subscribers-getter.md /workers/runtime-apis/nodejs/ 18:20 invalid link
content/compatibility-flags/dont-use-the-custom-origin-trust-store-for-external-subrequests.md /ssl/origin-configuration/custom-origin-trust-store/ 14:62 invalid link
content/compatibility-flags/dynamic-dispatch-tunnel-exceptions.md /cloudflare-for-platforms/workers-for-platforms/configuration/dynamic-dispatch/ 14:47 invalid link
content/compatibility-flags/dynamic-dispatch-tunnel-exceptions.md /workers/runtime-apis/bindings/service-bindings/ 14:577 invalid link
content/compatibility-flags/dynamic-dispatch-tunnel-exceptions.md /durable-objects/ 14:650 invalid link
content/compatibility-flags/enable-ctx-exports.md /workers/runtime-apis/context/#exports 14:19 invalid link
content/compatibility-flags/enable-global-performance-classes.md /workers/runtime-apis/nodejs/ 18:103 invalid link
content/compatibility-flags/enable-nodejs-child-process-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-cluster-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-console-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-dgram-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-fs-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-domain-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-global-timers.md /workers/runtime-apis/nodejs/ 16:20 invalid link
content/compatibility-flags/enable-nodejs-http2-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-inspector-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-os-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-perf-hooks-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-punycode-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-readline-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-repl-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-sqlite-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-stream-wrap-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-trace-events-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-tty-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-v8-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-vm-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-wasi-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-nodejs-worker-threads-module.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/enable-validate-workflow-entrypoint.md /workflows/ 14:114 invalid link
content/compatibility-flags/fetch-api-request-cf-overrides-cache-rules.md /workers/runtime-apis/fetch 14:72 invalid link
content/compatibility-flags/fetch-api-request-cf-overrides-cache-rules.md /cache/how-to/cache-rules/ 14:243 invalid link
content/compatibility-flags/fetcher-no-get-put-delete.md /durable-objects/ 14:1 invalid link
content/compatibility-flags/fetcher-no-get-put-delete.md /workers/runtime-apis/bindings/service-bindings/ 14:47 invalid link
content/compatibility-flags/global-fetch-strictly-public.md /workers/runtime-apis/fetch/ 13:83 invalid link
content/compatibility-flags/new-url-parser-implementation.md /workers/configuration/compatibility-flags/#use-a-spec-compliant-url-implementation-in-redirects 30:14 invalid link
content/compatibility-flags/no-cfbotmanagement-default.md /bots/reference/bot-management-variables/ 17:148 invalid link
content/compatibility-flags/nodejs-compat-process-v2.md /workers/runtime-apis/nodejs/ 9:83 invalid link
content/compatibility-flags/nodejs-compat-process-v2.md /workers/runtime-apis/nodejs/process/ 15:132 invalid link
content/compatibility-flags/nodejs-compat-populate-process-env.md /workers/runtime-apis/nodejs/ 9:85 invalid link
content/compatibility-flags/nodejs-compat-populate-process-env.md /workers/configuration/environment-variables/ 11:35 invalid link
content/compatibility-flags/nodejs-compat-populate-process-env.md /workers/configuration/secrets/ 12:1 invalid link
content/compatibility-flags/nodejs-compat-populate-process-env.md /workers/runtime-apis/bindings/version-metadata/ 12:48 invalid link
content/compatibility-flags/nodejs-compat.md /workers/runtime-apis/nodejs/ 13:9 invalid link
content/compatibility-flags/nodejs-compat.md /workers/configuration/compatibility-flags/#enable-nodejs-http-server-modules 19:3 invalid link
content/compatibility-flags/nodejs-compat.md /workers/configuration/compatibility-flags/#enable-availability-of-nodehttp-and-nodehttps-modules 20:3 invalid link
content/compatibility-flags/nodejs-compat.md /workers/configuration/compatibility-flags/#enable-auto-populating-processenv 21:3 invalid link
content/compatibility-flags/nodejs-compat.md /workers/configuration/compatibility-flags/#disable-top-level-await-in-require 22:3 invalid link
content/compatibility-flags/nodejs-compat.md /workers/wrangler/ 24:73 invalid link
content/compatibility-flags/nodejs-compat.md /workers/wrangler/ 26:146 invalid link
content/compatibility-flags/nodejs-compat.md /workers/vite-plugin/ 26:188 invalid link
content/compatibility-flags/nodejs-zlib.md /workers/runtime-apis/nodejs/ 16:103 invalid link
content/compatibility-flags/python-workers.md /workers/languages/python/ 12:51 invalid link
content/compatibility-flags/python-workers.md /workers/languages/python/stdlib 12:131 invalid link
content/compatibility-flags/python-workers.md /workers/runtime-apis/bindings 12:197 invalid link
content/compatibility-flags/python-workers.md /workers/configuration/environment-variables 12:241 invalid link
content/compatibility-flags/python-workers.md /workers/configuration/secrets 12:315 invalid link
content/compatibility-flags/python-workers.md /workers/languages/python/ffi 12:418 invalid link
content/compatibility-flags/queue-expose-error-codes.md /queues/ 14:45 invalid link
content/compatibility-flags/queue-consumer-no-wait-waituntil.md /queues/ 13:13 invalid link
content/compatibility-flags/queue-consumer-no-wait-waituntil.md /workers/runtime-apis/context 13:100 invalid link
content/compatibility-flags/queue-consumer-no-wait-waituntil.md /queues/configuration/javascript-apis#consumer 13:308 invalid link
content/compatibility-flags/remove-nodejs-compat-eol.md /workers/runtime-apis/nodejs/ 18:103 invalid link
content/compatibility-flags/request-signal.md /workers/runtime-apis/request/ 8:98 invalid link
content/compatibility-flags/rpc-params-dup-stubs.md /workers/runtime-apis/rpc/ 16:10 invalid link
content/compatibility-flags/rpc-params-dup-stubs.md /workers/runtime-apis/rpc/lifecycle/#the-dup-method 22:321 invalid link
content/compatibility-flags/rpc.md /durable-objects/ 14:20 invalid link
content/compatibility-flags/rpc.md /workers/runtime-apis/bindings/service-bindings/ 14:66 invalid link
content/compatibility-flags/rpc.md /workers/runtime-apis/rpc/ 14:143 invalid link
content/compatibility-flags/rpc.md /workers/runtime-apis/bindings/ 16:305 invalid link
content/compatibility-flags/streams-byob-reader-detaches-buffer.md /workers/runtime-apis/streams/readablestreambyobreader/#methods 14:113 invalid link
content/compatibility-flags/streams-byob-reader-detaches-buffer.md /workers/runtime-apis/streams/readablestreambyobreader/#methods 16:82 invalid link
content/compatibility-flags/web-socket-auto-reply-to-close.md /workers/runtime-apis/websockets/ 67:36 invalid link
content/compatibility-flags/websocket-standard-binary-type.md /workers/runtime-apis/websockets/#binarytype 14:45 invalid link
content/compatibility-flags/websocket-standard-binary-type.md /workers/wrangler/configuration/ 33:172 invalid link
content/compatibility-flags/websocket-standard-binary-type.md /durable-objects/best-practices/websockets/ 35:70 invalid link
content/compatibility-flags/workflows-preserve-non-retryable-error-message.md /workflows/ 14:20 invalid link
content/compatibility-flags/workflows-preserve-non-retryable-error-message.md /workflows/build/workers-api/#nonretryableerror 14:58 invalid link
content/changelog/workers/2025-09-26-ctx-exports.md /workers/runtime-apis/context/#exports 7:5 invalid link
content/changelog/workers/2025-09-26-ctx-exports.md /workers/runtime-apis/bindings/service-bindings 7:243 invalid link
content/changelog/workers/2025-09-26-ctx-exports.md /durable-objects/reference/durable-objects-migrations/ 7:423 invalid link
content/changelog/workers/2025-09-26-ctx-exports.md /durable-objects/api/namespace/ 7:522 invalid link
content/changelog/workers/2025-09-26-ctx-exports.md /workers/configuration/compatibility-flags#enable-ctxexports 28:26 invalid link
content/changelog/workers/2025-09-26-ctx-exports.md /workers/runtime-apis/context/#exports 30:1 invalid link
workers/observability/traces/known-limitations.md /workers/reference/security-model/#step-1-disallow-timers-and-multi-threading 16:8 invalid link
workers/observability/traces/known-limitations.md /workers/observability/traces/spans-and-attributes 29:124 invalid link
workers/observability/traces/known-limitations.md /workers/observability/traces/spans-and-attributes 40:242 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10028/ 11:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10043/ 15:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10044/ 19:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10045/ 23:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10046/ 27:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10047/ 31:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10048/ 35:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10049/ 39:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10050/ 43:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10051/ 47:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10052/ 51:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10053/ 55:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10054/ 59:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10055/ 63:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10056/ 67:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10058/ 71:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10059/ 75:55 invalid link
support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/index.md /support/troubleshooting/http-status-codes/cloudflare-10xxx-errors/error-10060/ 79:55 invalid link
workers/testing/miniflare/core/modules.md /workers/reference/migrate-to-module-workers/ 6:3 invalid link
workers/testing/miniflare/core/multiple-workers.md /workers/configuration/routing/routes/#matching-behavior 77:1 invalid link
workers/testing/miniflare/core/scheduled.md /workers/runtime-apis/handlers/scheduled/ 6:3 invalid link
workers/testing/miniflare/core/queues.md /queues/ 6:3 invalid link
workers/testing/miniflare/core/standards.md /workers/runtime-apis/web-standards 6:3 invalid link
workers/testing/miniflare/core/standards.md /workers/runtime-apis/encoding 7:3 invalid link
workers/testing/miniflare/core/standards.md /workers/runtime-apis/fetch 8:3 invalid link
workers/testing/miniflare/core/standards.md /workers/runtime-apis/request 9:3 invalid link
workers/testing/miniflare/core/standards.md /workers/runtime-apis/response 10:3 invalid link
workers/testing/miniflare/core/standards.md /workers/runtime-apis/streams 11:3 invalid link
workers/testing/miniflare/core/standards.md /workers/runtime-apis/web-crypto 12:3 invalid link
workers/testing/miniflare/core/standards.md /workers/platform/limits#account-plan-limits 63:1 invalid link
workers/testing/miniflare/core/web-sockets.md /workers/runtime-apis/websockets 6:3 invalid link
workers/testing/miniflare/core/web-sockets.md /workers/examples/websockets/ 7:3 invalid link
workers/testing/miniflare/storage/cache.md /workers/runtime-apis/cache 6:3 invalid link
workers/testing/miniflare/storage/cache.md /workers/reference/how-the-cache-works/#cache-api 7:3 invalid link
workers/testing/miniflare/storage/d1.md /d1/ 6:3 invalid link
workers/testing/miniflare/storage/durable-objects.md /durable-objects/api/ 6:3 invalid link
workers/testing/miniflare/storage/durable-objects.md /durable-objects/ 7:3 invalid link
workers/testing/miniflare/storage/kv.md /kv/api/ 6:3 invalid link
workers/testing/miniflare/storage/r2.md /r2/api/workers/workers-api-reference/ 6:3 invalid link
logs/logpush/logpush-job/datasets/zone/firewall_events.md /waf/detections/leaked-credentials/ 220:25 invalid link
logs/logpush/logpush-job/datasets/zone/firewall_events.md /ruleset-engine/rulesets-api/ 256:178 invalid link
logs/logpush/logpush-job/datasets/zone/http_requests.md /bots/concepts/bot-tags/ 64:46 invalid link
logs/logpush/logpush-job/datasets/zone/http_requests.md /cache/concepts/cache-responses/ 70:414 invalid link
logs/logpush/logpush-job/datasets/zone/http_requests.md /logs/reference/clientrequestsource/ 208:102 invalid link
logs/logpush/logpush-job/datasets/zone/http_requests.md /logs/logpush/logpush-job/custom-fields/ 274:70 invalid link
logs/logpush/logpush-job/datasets/zone/http_requests.md /waf/detections/leaked-credentials/ 454:25 invalid link
logs/logpush/logpush-job/datasets/zone/http_requests.md /logs/faq/common-calculations/#how-can-i-calculate-bytes-served-by-the-origin-from-cloudflare-logs 484:192 invalid link
logs/logpush/logpush-job/datasets/zone/http_requests.md /logs/logpush/logpush-job/custom-fields/ 562:78 invalid link
logs/logpush/logpush-job/datasets/zone/http_requests.md /logs/logpush/logpush-job/custom-fields/ 568:79 invalid link
logs/logpush/logpush-job/datasets/account/device_posture_results.md /logs/logpush/logpush-job/log-output-options/#output-types 112:154 invalid link
logs/logpush/logpush-job/datasets/account/dns_firewall_logs.md /dns/dns-firewall/analytics/ 94:87 invalid link
logs/logpush/logpush-job/datasets/account/email_security_alerts.md /logs/logpush/logpush-job/log-output-options/#output-types 160:115 invalid link
logs/logpush/logpush-job/datasets/account/email_security_post_delivery_events.md /logs/logpush/logpush-job/log-output-options/#output-types 22:98 invalid link
logs/logpush/logpush-job/datasets/account/email_security_post_delivery_events.md /logs/logpush/logpush-job/log-output-options/#output-types 64:82 invalid link
logs/logpush/logpush-job/datasets/account/email_security_post_delivery_events.md /logs/logpush/logpush-job/log-output-options/#output-types 100:102 invalid link
logs/logpush/logpush-job/datasets/account/mnm_flow_logs.md /logs/logpush/logpush-job/log-output-options/#output-types 76:70 invalid link
logs/logpush/logpush-job/datasets/account/mnm_flow_logs.md /logs/logpush/logpush-job/log-output-options/#output-types 154:75 invalid link
logs/logpush/logpush-job/datasets/account/zero_trust_network_sessions.md /cloudflare-one/networks/connectivity-options/ 10:108 invalid link

@github-actions

Copy link
Copy Markdown
Contributor

Preview URL: https://94a94549.preview.developers.cloudflare.com
Preview Branch URL: https://feat-satteri.preview.developers.cloudflare.com

Files with changes (up to 15)

Original Link Updated Link
https://developers.cloudflare.com/realtime/realtimekit/legal/3rdparty/ https://feat-satteri.preview.developers.cloudflare.com/realtime/realtimekit/legal/3rdparty/
https://developers.cloudflare.com/changelog/post/2026-04-27-waf-release/ https://feat-satteri.preview.developers.cloudflare.com/changelog/post/2026-04-27-waf-release/
https://developers.cloudflare.com/changelog/post/2026-04-21-waf-release/ https://feat-satteri.preview.developers.cloudflare.com/changelog/post/2026-04-21-waf-release/
https://developers.cloudflare.com/registrar/registrar-api/ https://feat-satteri.preview.developers.cloudflare.com/registrar/registrar-api/
https://developers.cloudflare.com/bots/account-abuse-protection/ https://feat-satteri.preview.developers.cloudflare.com/bots/account-abuse-protection/
https://developers.cloudflare.com/changelog/post/2025-11-25-flux-2-dev-workers-ai/ https://feat-satteri.preview.developers.cloudflare.com/changelog/post/2025-11-25-flux-2-dev-workers-ai/
https://developers.cloudflare.com/learning-paths/dns-best-practices/concepts/phase-1/ https://feat-satteri.preview.developers.cloudflare.com/learning-paths/dns-best-practices/concepts/phase-1/
https://developers.cloudflare.com/logs/logpush/logpush-health/ https://feat-satteri.preview.developers.cloudflare.com/logs/logpush/logpush-health/
https://developers.cloudflare.com/changelog/post/2026-05-04-waf-release/ https://feat-satteri.preview.developers.cloudflare.com/changelog/post/2026-05-04-waf-release/
https://developers.cloudflare.com/ddos-protection/advanced-ddos-systems/overview/programmable-flow-protection/ https://feat-satteri.preview.developers.cloudflare.com/ddos-protection/advanced-ddos-systems/overview/programmable-flow-protection/
https://developers.cloudflare.com/learning-paths/dns-best-practices/concepts/phase-2/ https://feat-satteri.preview.developers.cloudflare.com/learning-paths/dns-best-practices/concepts/phase-2/
https://developers.cloudflare.com/learning-paths/dns-best-practices/concepts/phase-4/ https://feat-satteri.preview.developers.cloudflare.com/learning-paths/dns-best-practices/concepts/phase-4/
https://developers.cloudflare.com/email-service/examples/email-sending/email-attachments/ https://feat-satteri.preview.developers.cloudflare.com/email-service/examples/email-sending/email-attachments/
https://developers.cloudflare.com/log-explorer/sql-queries/ https://feat-satteri.preview.developers.cloudflare.com/log-explorer/sql-queries/
https://developers.cloudflare.com/learning-paths/dns-best-practices/concepts/phase-3/ https://feat-satteri.preview.developers.cloudflare.com/learning-paths/dns-best-practices/concepts/phase-3/

@ask-bonk ask-bonk Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CRITICAL: Link validation failure — 156 broken links across 77 files are blocking merge. The errors are mostly in files linking to standard pages (, , , etc.) that definitely exist. This suggests is not correctly resolving pages built with the Sätteri processor, or the custom processor is somehow excluding pages from the validator's graph. This needs investigation before merge.

**Fixed: Dead code in ** — Removed the no-op call as noted by a previous reviewer. The call returned a new array that was immediately discarded; the preceding already achieves the intended mutation.

MEDIUM: MDX formatting churn — ~96 MDX files have whitespace-only diffs (trailing spaces removed, JSX whitespace expressions collapsed). These appear benign, but confirm they are expected Sätteri serialization behavior.

@ask-bonk

ask-bonk Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

CRITICAL: Link validation failure — 156 broken links across 77 files are blocking merge. The errors are mostly in .md files linking to standard pages (/workers/runtime-apis/fetch/, /d1/, /queues/, etc.) that definitely exist. This suggests starlight-links-validator is not correctly resolving pages built with the Sätteri processor, or the custom processor is somehow excluding pages from the validators graph. This needs investigation before merge.

Fixed: Dead code in src/plugins/rehype/heading-slugs.ts — Removed the no-op element.children.with() call as noted by a previous reviewer. The call returned a new array that was immediately discarded; the preceding text.value = text.value.trimEnd() already achieves the intended mutation.

MEDIUM: MDX formatting churn — ~96 MDX files have whitespace-only diffs (trailing spaces removed, JSX whitespace expressions collapsed). These appear benign, but confirm they are expected Sätteri serialization behavior.

Co-authored-by: mvvmm <mvvmm@users.noreply.github.com>
@ask-bonk

ask-bonk Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Posted a review on PR #31367 and fixed one issue directly.

What I fixed:

  • src/plugins/rehype/heading-slugs.ts — Removed the dead element.children.with() call (lines 32–35). As the previous reviewer noted, Array.prototype.with returns a new array without mutating the original, so that block had no effect. The preceding text.value = text.value.trimEnd() already does the necessary mutation.

What I flagged as a merge blocker:

  • 156 broken links in the Post Build link-validation step. The failures span 77 files, mostly .md files linking to standard pages (/workers/runtime-apis/fetch/, /d1/, /queues/, etc.) that definitely exist. This suggests starlight-links-validator is either not resolving pages built with the Sätteri processor or the processor is excluding them from the validator's page graph. This needs to be investigated and resolved before merge.

What I noted as acceptable:

  • The ~96 MDX files with whitespace-only diffs (trailing spaces removed, JSX whitespace like {" "} collapsed to plain spaces) appear to be benign Sätteri serialization side effects.

Review links:

github run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs engine Requires a change to the docs engine engineering Problems or updates to developers.cloudflare.com website size/m

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants