Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
0165280
[Email Service] Document account-wide suppressions
rpots Aug 24, 2026
1aa8b47
[Email Service] Align suppression docs with style guide
rpots Aug 24, 2026
c7f4717
[Email Service] Address suppression review findings
rpots Aug 24, 2026
9e35426
[Email Service] Clarify suppression behavior
rpots Aug 26, 2026
e9ab174
[API Shield] Remove documentation for applying learned schemas (#32635)
djhworld Aug 24, 2026
38379a8
docs(realtimekit): added faq for pre call check and added a button (#…
ravindra-cloudflare Aug 24, 2026
95c0232
docs(realtimekit): added release notes for 24 aug 2026 release of rea…
ravindra-cloudflare Aug 24, 2026
631ab41
docs(logs): add Transformers page (closed beta) (#32850)
Sahidya Aug 24, 2026
efc392f
[Cloudflare One] Document self-serve Cloudflare One Virtual Appliance…
nikitacano Aug 24, 2026
2e2563d
[Chore] Untangle magic products MDX (#32950)
kodster28 Aug 24, 2026
2fe1bb8
feat: incremental builds support (#32676)
mvvmm Aug 24, 2026
a903e38
[DLP] Add Test scan documentation and changelog (#32855)
Jose-Maria-Martins Aug 24, 2026
1662c3d
Docs/remove swg audit ssh (#32842)
Michael9127 Aug 24, 2026
e84e48b
fix: return markdown 404 for agent clients (#32929)
mvvmm Aug 24, 2026
dc4ec67
[Workers] Add release note for DO Dynamic Worker concurrency limit (#…
harrishancock Aug 24, 2026
a7f1bc7
[Fundamentals] Add SCIM PUT changelog (#32925)
AdamBouhmad Aug 24, 2026
ef59524
docs: add contributors page (#32934)
mvvmm Aug 24, 2026
cc14cc0
chore: remove elithrar from CODEOWNERS (#32965)
elithrar Aug 24, 2026
1bfcdb6
fix: clarify contributor count (#32968)
mvvmm Aug 24, 2026
c58fea0
[Web Analytics/RUM] Revise Core Web Vitals browser support (#32969)
ryantownsend Aug 24, 2026
401d495
fix: stop advertising api markdown docs in api-catalog (#32930)
mvvmm Aug 24, 2026
08dee0d
fix: improve JSON-LD org structured data (#32932)
mvvmm Aug 24, 2026
4041d73
fix: improve homepage heading semantics (#32933)
mvvmm Aug 24, 2026
6501906
feat: publish /.well-known/ai-catalog.json (#32931)
mvvmm Aug 24, 2026
8cef774
[Docs Site] Bump the non-major group across 1 directory with 26 updat…
dependabot[bot] Aug 24, 2026
d5b4102
[Workers] Recommend vinext for Next.js (#31887)
irvinebroque Aug 25, 2026
0b6b0ef
Workers Cache purge uses free tier limits (#32942)
vicb Aug 25, 2026
ceee454
chore: add flagship code owners (#32988)
roerohan Aug 25, 2026
a38a816
[Access] Document MCP 2026-07-28 portal support (#32958)
kennyj42 Aug 25, 2026
8acb7d0
Tunnel: Address terms and routing review feedback (#32886)
hugo-vicente11 Aug 25, 2026
0054baa
[Email Service] Document RFC 2156 priority and expiry headers (#32956)
ttoino Aug 25, 2026
8d26b67
[Email Service] Document Outlook threading headers (#32955)
ttoino Aug 25, 2026
0b4469c
[Fundamentals] Document audit log actor context values (#32967)
cf-ypark Aug 25, 2026
57ac13a
fix(llms.txt): normalize paths and preserve fragments when appending …
wallidsaydi-creator Aug 25, 2026
f929db6
[WAN] Correct DHCP network boot options (#33005)
JackAlexRose Aug 25, 2026
1beb84b
[RealtimeKit] Update feature availability labels (#32924)
korinne Aug 25, 2026
969e7dc
[Analytics] Fix broken GraphiQL images, add reference-style image rul…
mvvmm Aug 25, 2026
5c9c4b5
DS-16910: [Analytics] Document account-based GraphQL API rate limitin…
hc2116 Aug 25, 2026
52b543a
[Chore] Remove conditional partial logic (#32998)
kodster28 Aug 25, 2026
f57eb43
[Radar] Add RPKI ASPA path validation changelog (#32974)
digizeph Aug 25, 2026
8be70d0
[RealtimeKit] Add release notes navigation page (#32997)
swapnilmadavi Aug 25, 2026
31440f2
chore: disable workers.dev URL in wrangler.jsonc (#33008)
mvvmm Aug 25, 2026
39a559c
Mark field cf.api_gateway.request_violates_schema as deprecated (#32960)
djhworld Aug 25, 2026
a4672aa
[Turnstile] Update troubleshooter link (#32993)
anafoppa Aug 25, 2026
c9b7ef2
[Bot Mgmt / Precursor / Turnstile] I missed a bunch of spots where I …
marinaelmore Aug 25, 2026
b6bf546
[AI Gateway] Add Datadog as a supported OTEL backend (#32049)
Kyle-Verhoog Aug 25, 2026
4137ca9
[Chore] Add contextual metadata to upload r2 action (#33014)
kodster28 Aug 25, 2026
9e0dcd7
fix: use shallow checkout in production publish workflow (#33015)
mvvmm Aug 25, 2026
2ddcc01
Revert "fix: use shallow checkout in production publish workflow" (#3…
mvvmm Aug 25, 2026
f71d912
[Access] Document service token controls (#32954)
kennyj42 Aug 25, 2026
372c5ab
update models (#33011)
ethulia Aug 25, 2026
f40e7b7
[Hyperdrive] Document creating PlanetScale databases with Wrangler (#…
mtlemilio Aug 25, 2026
d27b26b
[Flagship] Document app-scoped API tokens (#32851)
roerohan Aug 26, 2026
b95b65d
[RealtimeKit] Add network allowlist page (#33007)
swapnilmadavi Aug 26, 2026
05ae9ae
WAF Release 25th August (#33009)
fb1337 Aug 26, 2026
5c2c29f
docs(waf): note that beta tag may persist beyond the 7-day review per…
zeinjaber Aug 26, 2026
d604895
docs(bots): note that JSD API invocations show as Unknown in Bot Anal…
zeinjaber Aug 26, 2026
aca6b74
Clarify AI-based PII detection terminology (#33013)
mrusso19 Aug 26, 2026
9e272a7
WAF Release 26th August - Emergency (#33038)
fb1337 Aug 26, 2026
1acee39
[Radar] Add Researcher improvements changelog (#33030)
andre-j3sus Aug 26, 2026
f6fa79b
AI Search: document larger metadata values (#32916)
G4brym Aug 26, 2026
379581e
AI Search: add six Workers AI text generation models (#32986)
G4brym Aug 26, 2026
40b6685
Add @cjolowicz as CODEOWNER for log-explorer docs and changelog (#33036)
cjolowicz Aug 26, 2026
cede178
[DO] Document disabling alarm retries after abort (#32884)
apeacock1991 Aug 26, 2026
7d8c738
docs(bots): clarify JA4 Signals Intelligence fields cannot be used in…
zeinjaber Aug 26, 2026
a0b7a35
docs(bots): document bot score 1 assigned when User-Agent header is m…
zeinjaber Aug 26, 2026
8223c67
docs(bots): add ephemeral_id availability and entitlement to Bot Mana…
zeinjaber Aug 26, 2026
4e1ec29
[Logs] Add Microsoft Sentinel connector deprecation notice (#33031)
Sahidya Aug 26, 2026
7d779b5
[RealtimeKit] Add Recording SDK release notes (#33000)
swapnilmadavi Aug 26, 2026
941787b
[Workers AI] Update DeepSeek V4 models and unpin catalog models (#32973)
mchenco Aug 26, 2026
1b843fa
Fixes python examples links and shortens ASGI code. (#32947)
dom96 Aug 26, 2026
f9b434e
CODEOWNERS: add WIT PM/EM reviewers to bots-related paths (#32971)
cf-jian Aug 26, 2026
45860ea
[Security Insights] Document free account scan pauses (#32755)
davejbax Aug 26, 2026
7eac54d
docs(api-shield): surface discovery requirements inline including Wor…
zeinjaber Aug 26, 2026
24a4a94
[Workers AI] Add GLM 5.3 Flash model (#33041)
mchenco Aug 26, 2026
59cae93
[Cloudflare One] Clarify SCIM policy evaluation (#33049)
kennyj42 Aug 26, 2026
e49e3bc
[Workers AI] Use Gemma 4 in starter guide (#33053)
superhighfives Aug 27, 2026
0405be1
[Workers AI] Document GLM-5.2 reasoning effort (#33022)
KastanDay Aug 27, 2026
7a3da25
[Log Explorer] Add dataset deletion changelog (#33033)
Sahidya Aug 27, 2026
0b6ba40
[Log Explorer] Document dataset deletion (#33034)
Sahidya Aug 27, 2026
8e2e07e
chore: consume API schema from middlecache (#33065)
mvvmm Aug 27, 2026
c71692b
[AI Gateway] Clarify caching opt-in behavior (#33027)
superhighfives Aug 27, 2026
248cc1a
docs: update Debian support timeline (#33018)
cf-joshnabbott Aug 27, 2026
d417035
[AI Gateway] Clarify Guardrails streaming evaluation behavior (#32964)
superhighfives Aug 27, 2026
d18c6d0
docs: clarify Organization API authentication (#33054)
nickzylstra Aug 27, 2026
718b471
[Audit Logs] Document CMB support (#33060)
Sahidya Aug 27, 2026
a01c402
[Logs] Update Logpush dataset field definitions (2026-08-20) (#32882)
soheiokamoto Aug 27, 2026
aa26405
chore: add Scott Buscemi as product codeowner (#33023)
scottbuscemi Aug 27, 2026
dac2761
[Access] Document service token secret format (#33045)
kennyj42 Aug 27, 2026
d9895b1
[Cloudflare One] Update service token secret example (#33070)
georgemblack Aug 27, 2026
ee2e6e8
Reframe Realtime SFU around application outcomes (#33071)
rcccf Aug 27, 2026
4bc0740
Document Dynamic Workers concurrency limits (#32951)
ketanhwr Aug 27, 2026
a86c261
CODEOWNERS: add mbullock1986 for IP geolocation docs (#33069)
stechedo Aug 27, 2026
229f7a4
[Network] Document IP geolocation accuracy limits and correct correct…
stechedo Aug 27, 2026
844e126
[D1] Add changelog entry for free tier daily query limit enforcement …
ivoryibu Aug 27, 2026
4e56c6e
[DNS] Clarify that assigned nameservers cannot be changed (#33037)
ngayerie Aug 28, 2026
27e0818
[API Shield] Document symmetric JWT validation (#33010)
janrueth Aug 28, 2026
2f5c84e
ai-search: add GLM-5.3-Flash support (#33079)
G4brym Aug 28, 2026
e0041a4
[SSL] Add Cloudflare Email Security to PQC products page (#33048)
spark516 Aug 28, 2026
8098ad1
[Audit Logs] Document account analytics (#33082)
Sahidya Aug 28, 2026
af290ca
[Workers] Add release note for v8 version 15.3 update (#33078)
mar-cf Aug 28, 2026
2136176
fix: serve original images in local dev (#33080)
mvvmm Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .agents/references/style-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,7 @@ Guidelines:
- Avoid including the sidebar navigation (it changes frequently).
- Always provide descriptive alt text.
- Use Markdown image syntax for content images. Do not use raw `<img>` tags for screenshots or diagrams.
- Use inline image syntax only (`![alt](~/assets/images/{product}/file.png)`). Do not use reference-style image links (`![alt][1]` with a `[1]: ~/assets/images/...` definition): Astro's asset pipeline does not resolve the `~/` alias in reference-style definitions, so the image renders as a broken relative URL.
- Store images in `src/assets/images/{product}/` and reference them with `~/assets/images/{product}/...`. This enables Astro's asset pipeline (optimization, responsive variants, cache-busting). Only use `public/` for assets that need a stable static URL (e.g. OG images, badges, files referenced from non-Astro contexts). Do not use `public/images/` for docs screenshots or diagrams.

```mdx
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ description: Rules for image syntax and asset paths in MDX content.

- If a Markdown image uses empty alt text `![](...)` for a non-decorative content image → **suggestion**: add descriptive alt text per the style guide.

- If an added line uses a reference-style image link (`![Alt text][n]` that points to a `[n]: ~/assets/images/...` definition line) → **warning**: convert to inline image syntax `![Alt text](~/assets/images/{product}/file.png)`. Astro's asset pipeline resolves the `~/assets/images/` alias only for inline image syntax; reference-style definitions render as broken page-relative URLs. Exception: reference-style image links inside fenced code blocks or application code examples.

## Examples

Correct:
Expand All @@ -28,3 +30,8 @@ Incorrect:
```mdx
![Precursor mode selector](/images/precursor/precursor-rules.png)
```

```mdx
![Precursor mode selector][1]
[1]: ~/assets/images/precursor/precursor-rules.png
```
13 changes: 13 additions & 0 deletions .flue/evals/mocks/github-repo-tools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,19 @@ const FIXTURES: Record<string, Record<string, string>> = {
].join("\n"),
},

// Style-guide eval: reference-style image link (unresolved ~/ alias).
"eval-style-ref-img": {
"src/content/docs/cloudflare-challenges/precursor.mdx": [
"---",
"title: Precursor",
"---",
"",
"![Precursor mode selector][1]",
"",
"[1]: ~/assets/images/cloudflare-challenges/precursor-rules.png",
].join("\n"),
},

// Review-validator eval: file with an unhandled promise rejection.
"eval-val-unhandled-promise": {
"src/handler.ts": [
Expand Down
84 changes: 84 additions & 0 deletions .flue/evals/style-guide.eval.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ const RAW_IMG_SHA = "eval-style-raw-img";
const IMAGES_PATH_SHA = "eval-style-images-path";
const CORRECT_IMG_SHA = "eval-style-correct-img";
const FENCED_IMG_SHA = "eval-style-fenced-img";
const REF_IMG_SHA = "eval-style-ref-img";

describeEval("style-guide reviewer", { harness }, (it) => {
it("flags a full URL for an internal link", async ({ run }) => {
Expand Down Expand Up @@ -260,6 +261,89 @@ describeEval("style-guide reviewer", { harness }, (it) => {
);
});

it("flags a reference-style image link with an unresolved ~/ alias", async ({
run,
}) => {
const result = await run({
pullRequest: PR,
headSha: REF_IMG_SHA,
filename: "src/content/docs/cloudflare-challenges/precursor.mdx",
addedLines: [
{
line: 8,
content: "![Precursor mode selector][1]",
},
{
line: 10,
content:
"[1]: ~/assets/images/cloudflare-challenges/precursor-rules.png",
},
],
});

const findings = (result.output as { findings?: Finding[] })?.findings;
expect(findings).toBeDefined();

const refFinding = (findings ?? []).filter(
(f) =>
f.rule?.toLowerCase().includes("image") ||
f.rule?.toLowerCase().includes("reference") ||
f.rule?.toLowerCase().includes("inline") ||
f.evidence?.includes("[1]"),
);
expect(refFinding.length).toBeGreaterThan(0);
expect(refFinding[0].severity).toBe("warning");

expect(toolCalls(result).map((c) => c.name)).toContain(
"submit_style_guide",
);
});

it("does not flag a reference-style image link inside a fenced code block", async ({
run,
}) => {
const result = await run({
pullRequest: PR,
headSha: HEAD_SHA,
filename: "src/content/docs/workers/example.mdx",
addedLines: [
{
line: 7,
content: "```mdx",
},
{
line: 8,
content: "![Example][1]",
},
{
line: 9,
content: "[1]: ~/assets/images/example/example.png",
},
{
line: 10,
content: "```",
},
],
});

const findings = (result.output as { findings?: Finding[] })?.findings;
expect(findings).toBeDefined();

const imgFindings = (findings ?? []).filter(
(f) =>
f.severity === "warning" &&
(f.rule?.toLowerCase().includes("img") ||
f.rule?.toLowerCase().includes("image") ||
f.rule?.toLowerCase().includes("reference") ||
f.evidence?.includes("[1]")),
);
expect(imgFindings).toHaveLength(0);

expect(toolCalls(result).map((c) => c.name)).toContain(
"submit_style_guide",
);
});

it("passes on correct Markdown image syntax with ~/assets/images/", async ({
run,
}) => {
Expand Down
Loading
Loading