You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
changelog: add CDN consumer mode to the {changelog} directive
Lets the {changelog} directive load bundles published to the public
S3/CloudFront bucket via :cdn:, with optional :version: filtering, so a
docset can render another product's changelog without the bundle files
living in-repo. Also renames the per-product manifest from
registry-index.json to registry.json, reserving "registry-index" for a
possible future bucket-wide meta-registry.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Copy file name to clipboardExpand all lines: docs/syntax/changelog.md
+39Lines changed: 39 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,6 +28,8 @@ The directive supports the following options:
28
28
|`:description-visibility: value`| Visibility of changelog **record** descriptions (YAML `description` on each entry) |`auto`|
29
29
|`:dropdowns:`| Render breaking changes, deprecations, known issues, and highlights as expandable dropdowns instead of flattened bulleted lists | false |
30
30
|`:config: path`| Path to `changelog.yml` configuration | auto-discover |
31
+
|`:cdn: product`| Source bundles for a product from the public changelog CDN instead of a local folder | (local folder) |
32
+
|`:version: target`| Render only the single bundle matching this target/version | (all versions) |
31
33
32
34
### Example with options
33
35
@@ -161,6 +163,43 @@ Explicit path to a `changelog.yml` or `changelog.yaml` configuration file, relat
161
163
162
164
Both explicit and auto-discovered paths must resolve within the repository checkout directory and must not traverse symlinks.
163
165
166
+
#### `:cdn:`[cdn]
167
+
168
+
Sources bundles for a single **product** from the public changelog CDN instead of a local folder, so a docset can render another product's release notes without vendoring bundle YAML.
169
+
170
+
```markdown
171
+
:::{changelog}
172
+
:cdn: elasticsearch
173
+
:::
174
+
```
175
+
176
+
The value names the product (must match `[a-zA-Z0-9_-]+`) and maps to `{product}/registry.json` plus the bundles it lists on the CDN. When `:cdn:` is set, the local-folder argument is ignored. All other options (`:type:`, `:link-visibility:`, `:description-visibility:`, `:dropdowns:`, `:subsections:`) and `hide-features` apply identically to CDN-sourced bundles.
177
+
178
+
The CDN base URL is build configuration, not authored per page: it defaults to the public changelog bundles distribution and can be overridden with the `DOCS_BUILDER_CHANGELOG_CDN` environment variable (an absolute `http`/`https` URL) for staging or local testing.
179
+
180
+
Fetching happens at build time. If the registry cannot be fetched the block renders empty and an error is emitted; an individual bundle that is missing from the CDN is skipped with a warning. For the full design — including the manifest format and infrastructure — see [Changelog bundle registry and CDN delivery](/development/changelog-bundle-registry.md).
181
+
182
+
#### `:version:`[version]
183
+
184
+
Renders only the **single** bundle whose target matches the given value, instead of every bundle for the source. A bundle matches when the value equals its declared `target` (for example `9.4.0`, or a date like `2026-04-09`) or its file name (with or without extension). Matching is case-insensitive.
185
+
186
+
```markdown
187
+
:::{changelog}
188
+
:version: 9.4.0
189
+
:::
190
+
```
191
+
192
+
This works for both local-folder and `:cdn:` sources. In `:cdn:` mode it is also an optimization: only the matching bundle is downloaded from the CDN rather than every file the registry lists.
193
+
194
+
```markdown
195
+
:::{changelog}
196
+
:cdn: elasticsearch
197
+
:version: 9.4.0
198
+
:::
199
+
```
200
+
201
+
If no bundle matches, the directive renders nothing and emits a warning (it does not fall back to showing all versions).
202
+
164
203
## Filtering entries with bundle rules
165
204
166
205
You can filter changelog entries at bundle time using the `rules.bundle` configuration in your `changelog.yml` file. This is evaluated during `changelog bundle` and `changelog gh-release`, before the bundle is written. Entries that don't match are excluded from the bundle entirely.
0 commit comments