Sync SDK changelog
When you need to update the changelog entries in src/data/changelog.yml
with the latest changes from the Dart SDK repository,
carefully follow the steps outlined in this skill.
Validate the SDK version
Before running the sync tool,
verify the Dart SDK version you wish to sync.
It should be a stable release, not a pre-release,
and in major.minor.patch format.
If the user provides a version with just major.minor,
you can assume a patch version of 0.
For example, 3.11 implies 3.11.0.
If necessary, you can validate what versions are available to sync
by checking the SDK changelog
and checking what h2 headers (##) are present.
Sync and verify SDK changelog entries
Run the sync tool
Execute the sync-changelog CLI command
from within the website repository and
specify the SDK version you want to sync.
[!TIP]
You can preview the changes first by specifying the --dry-run flag:
dart run dash_site sync-changelog --version 3.11.0 --dry-run
Verify changes
Check src/data/changelog.yml to ensure new entries are correct.
- Review the diff:
git diff src/data/changelog.yml
- Ensure formatting is consistent and
the new entries are prepended correctly.
Filter and prune entries
Remove entries that don't represent concrete, user-facing changes to
the Dart SDK, Dart language, or its surrounding tooling.
Remove entries that are:
- Vague or nebulous:
Such as "Various performance improvements" or "Minor internal updates".
Users need to know _what improved.
- Non-functional:
Such as "Thanks to @user for...", "Fixed typo in comment".
- Redundant:
Entries that duplicate others for the same feature.
Refine tags
Review the description of each new entry.
The tool uses keywords to infer tags,
(such as "fixes" -> fixed, "adds" -> new), but
you must verify them.
Rule: If an entry has the wrong tag, or
is just changed when it should be specific,
you must correct it in src/data/changelog.yml before finishing.
Entries can and should have multiple tags if applicable,
such as having both removed and breaking.
Available tags and guidelines:
new: For new features, additions, or introductions,
such as indicated by "Added ..." or "Introduced...".
fixed: For bug fixes,
such as indicated by "Fixed ..." or "Bug fix...".
deprecated: For deprecations,
such as indicated by "Deprecated..." or "marked as legacy...".
experimental: For changes related to experimental features,
such as indicated by "Experimental..." or "Preview...".
removed: For feature, capability, or API removals,
such as indicated by "Removed..." or "Deleted...".
breaking: For breaking or backwards incompatible changes,
such as indicated by "Breaking change...".
Often used with removed or other significant modifications.
versioned: For changes that are language versioned,
such as a new language syntax which often are.
changed: For general updates or modifications,
a default tag that can be used as a fallback.
Example:
- version: 3.11.0
# ...
description: |
Added support for Unix domain sockets...
tags:
- new # Changed from 'changed' because it adds a new feature.
Ensure the presence of links
Ensure every entry has a valid URL set as its link field.
If no specific issue or PR link is available in the description,
link to the specific section in the SDK changelog.
- Format:
https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#<VERSION_ANCHOR>
- Example:
https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#3110 (for
3.11.0)
- version: 3.11.0
# ...
link: https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#3110
Fix any formatting or typo issues
Review the changelog entries for issues such as:
- Markdown or YAML syntax issues.
- Typos or grammatical errors.
subArea fields that aren't in sentence case.
For example, use "Type promotion" instead of "Type Promotion".
If a word isn't a proper noun, and it isn't the first word,
don't capitalize it.
If found, fix them before continuing on.
Request user review
Notify the user that the changelog has been updated and tags refined.
Ask them to verify the changes before committing.
Troubleshooting
- If no entries are found, verify the version exists in the
SDK changelog.
- If entries are missing or malformed, check the tool logic in
tool/dash_site/lib/src/commands/sync_changelog.dart.
1---2name: sync-changelog3description: Sync the changelog from the Dart SDK repo to update the changelog.yml entries in the site repository.4---56# Sync SDK changelog78When you need to update the changelog entries in `src/data/changelog.yml`9with the latest changes from the Dart SDK repository,10carefully follow the steps outlined in this skill.1112## Validate the SDK version1314Before running the sync tool,15verify the Dart SDK version you wish to sync.16It should be a stable release, not a pre-release,17and in `major.minor.patch` format.1819If the user provides a version with just `major.minor`,20you can assume a patch version of `0`.21For example, `3.11` implies `3.11.0`.2223If necessary, you can validate what versions are available to sync24by checking the [SDK changelog](https://raw.githubusercontent.com/dart-lang/sdk/main/CHANGELOG.md)25and checking what h2 headers (`##`) are present.2627## Sync and verify SDK changelog entries28291. **Run the sync tool**3031 Execute the `sync-changelog` CLI command32 from within the website repository and33 specify the SDK version you want to sync.3435 - **Command:**3637 ```bash38 dart run dash_site sync-changelog --version <VERSION>39 ```4041 - **Example:**4243 ```bash44 dart run dash_site sync-changelog --version 3.11.045 ```4647 > [!TIP]48 > You can preview the changes first by specifying the `--dry-run` flag:49 >50 > ```bash51 > dart run dash_site sync-changelog --version 3.11.0 --dry-run52 > ```53542. **Verify changes**5556 Check `src/data/changelog.yml` to ensure new entries are correct.5758 - Review the diff: `git diff src/data/changelog.yml`59 - Ensure formatting is consistent and60 the new entries are prepended correctly.61623. **Filter and prune entries**6364 Remove entries that don't represent concrete, user-facing changes to65 the Dart SDK, Dart language, or its surrounding tooling.6667 **Remove entries that are:**6869 - **Vague or nebulous:**70 Such as "Various performance improvements" or "Minor internal updates".71 Users need to know _what improved.72 - **Non-functional:**73 Such as "Thanks to @user for...", "Fixed typo in comment".74 - **Redundant:**75 Entries that duplicate others for the same feature.76774. **Refine tags**7879 Review the `description` of each new entry.80 The tool uses keywords to infer tags,81 (such as "fixes" -> `fixed`, "adds" -> `new`), but82 **you must verify them**.8384 **Rule:** If an entry has the wrong tag, or85 is just `changed` when it should be specific,86 **you must correct it** in `src/data/changelog.yml` before finishing.87 Entries **can and should** have multiple tags if applicable,88 such as having both `removed` and `breaking`.8990 **Available tags and guidelines:**9192 - `new`: For new features, additions, or introductions,93 such as indicated by "Added ..." or "Introduced...".94 - `fixed`: For bug fixes,95 such as indicated by "Fixed ..." or "Bug fix...".96 - `deprecated`: For deprecations,97 such as indicated by "Deprecated..." or "marked as legacy...".98 - `experimental`: For changes related to experimental features,99 such as indicated by "Experimental..." or "Preview...".100 - `removed`: For feature, capability, or API removals,101 such as indicated by "Removed..." or "Deleted...".102 - `breaking`: For breaking or backwards incompatible changes,103 such as indicated by "Breaking change...".104 Often used with `removed` or other significant modifications.105 - `versioned`: For changes that are language versioned,106 such as a new language syntax which often are.107 - `changed`: For general updates or modifications,108 a default tag that can be used as a fallback.109110 **Example:**111112 ```yaml113 - version: 3.11.0114 # ...115 description: |116 Added support for Unix domain sockets...117 tags:118 - new # Changed from 'changed' because it adds a new feature.119 ```1201215. **Ensure the presence of links**122123 Ensure every entry has a valid URL set as its `link` field.124 If no specific issue or PR link is available in the description,125 link to the specific section in the SDK changelog.126127 - **Format:**128 `https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#<VERSION_ANCHOR>`129 - **Example:**130 `https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#3110` (for131 3.11.0)132133 ```yaml134 - version: 3.11.0135 # ...136 link: https://github.com/dart-lang/sdk/blob/main/CHANGELOG.md#3110137 ```1381396. **Fix any formatting or typo issues**140141 Review the changelog entries for issues such as:142143 - Markdown or YAML syntax issues.144 - Typos or grammatical errors.145 - `subArea` fields that aren't in sentence case.146 For example, use "Type promotion" instead of "Type Promotion".147 If a word isn't a proper noun, and it isn't the first word,148 don't capitalize it.149150 If found, fix them before continuing on.1511527. **Request user review**153154 Notify the user that the changelog has been updated and tags refined.155 Ask them to verify the changes before committing.156157## Troubleshooting158159- If no entries are found, verify the version exists in the160 [SDK changelog](https://raw.githubusercontent.com/dart-lang/sdk/main/CHANGELOG.md).161- If entries are missing or malformed, check the tool logic in162 `tool/dash_site/lib/src/commands/sync_changelog.dart`.