diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index 16c9172d055c..baa3546b0e08 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -15,11 +15,11 @@ body:
description: |
Please tell us about how you're running ESLint (Run `npx eslint --env-info`.)
value: |
- Node version:
- npm version:
- Local ESLint version:
- Global ESLint version:
- Operating System:
+ Node version:
+ npm version:
+ Local ESLint version:
+ Global ESLint version:
+ Operating System:
validations:
required: true
- type: dropdown
@@ -87,6 +87,9 @@ body:
options:
- label: I am willing to submit a pull request for this issue.
required: false
+- type: markdown
+ attributes:
+ value: Please **do not** open a pull request until this issue has been accepted by the team.
- type: textarea
id: comments
attributes:
diff --git a/.github/ISSUE_TEMPLATE/change.yml b/.github/ISSUE_TEMPLATE/change.yml
index 1a1f1c023aef..b019c11123bc 100644
--- a/.github/ISSUE_TEMPLATE/change.yml
+++ b/.github/ISSUE_TEMPLATE/change.yml
@@ -41,6 +41,9 @@ body:
options:
- label: I am willing to submit a pull request for this change.
required: false
+- type: markdown
+ attributes:
+ value: Please **do not** open a pull request until this issue has been accepted by the team.
- type: textarea
attributes:
label: Additional comments
diff --git a/.github/ISSUE_TEMPLATE/docs.yml b/.github/ISSUE_TEMPLATE/docs.yml
index ab0803984808..4790122ef11a 100644
--- a/.github/ISSUE_TEMPLATE/docs.yml
+++ b/.github/ISSUE_TEMPLATE/docs.yml
@@ -40,6 +40,9 @@ body:
options:
- label: I am willing to submit a pull request for this change.
required: false
+- type: markdown
+ attributes:
+ value: Please **do not** open a pull request until this issue has been accepted by the team.
- type: textarea
attributes:
label: Additional comments
diff --git a/.github/ISSUE_TEMPLATE/new-rule.yml b/.github/ISSUE_TEMPLATE/new-rule.yml
index 60b0c42200b1..d5431b320f18 100644
--- a/.github/ISSUE_TEMPLATE/new-rule.yml
+++ b/.github/ISSUE_TEMPLATE/new-rule.yml
@@ -47,6 +47,9 @@ body:
options:
- label: I am willing to submit a pull request to implement this rule.
required: false
+- type: markdown
+ attributes:
+ value: Please **do not** open a pull request until this issue has been accepted by the team.
- type: textarea
attributes:
label: Additional comments
diff --git a/.github/ISSUE_TEMPLATE/new-syntax.yml b/.github/ISSUE_TEMPLATE/new-syntax.yml
index 85bdd2db6795..bc20f2deea2e 100644
--- a/.github/ISSUE_TEMPLATE/new-syntax.yml
+++ b/.github/ISSUE_TEMPLATE/new-syntax.yml
@@ -54,6 +54,9 @@ body:
options:
- label: I am willing to submit a pull request for this change.
required: false
+- type: markdown
+ attributes:
+ value: Please **do not** open a pull request until this issue has been accepted by the team.
- type: textarea
attributes:
label: Additional comments
diff --git a/.github/ISSUE_TEMPLATE/rule-change.yml b/.github/ISSUE_TEMPLATE/rule-change.yml
index 503f2a5eeb90..e91d16a488fb 100644
--- a/.github/ISSUE_TEMPLATE/rule-change.yml
+++ b/.github/ISSUE_TEMPLATE/rule-change.yml
@@ -55,6 +55,9 @@ body:
options:
- label: I am willing to submit a pull request to implement this change.
required: false
+- type: markdown
+ attributes:
+ value: Please **do not** open a pull request until this issue has been accepted by the team.
- type: textarea
attributes:
label: Additional comments
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 75c2d986eb89..2ef9915870cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,54 @@
+v9.11.0 - September 20, 2024
+
+* [`ca21a64`](https://github.com/eslint/eslint/commit/ca21a64ed0f59adb9dadcef2fc8f7248879edbd3) chore: upgrade @eslint/js@9.11.0 (#18927) (Milos Djermanovic)
+* [`a10f90a`](https://github.com/eslint/eslint/commit/a10f90af35aea9ac555b1f33106fbba1027d774e) chore: package.json update for @eslint/js release (Jenkins)
+* [`5e5f39b`](https://github.com/eslint/eslint/commit/5e5f39b82535f59780ce4be56d01fd1466029c25) fix: add missing types for `no-restricted-exports` rule (#18914) (Kristóf Poduszló)
+* [`e4e5709`](https://github.com/eslint/eslint/commit/e4e570952249d1c4fde59c79a0f49a38490b72c9) docs: correct `prefer-object-has-own` type definition comment (#18924) (Nitin Kumar)
+* [`8f630eb`](https://github.com/eslint/eslint/commit/8f630eb5794ef9fe38e0b8f034287650def634bd) fix: add missing types for `no-param-reassign` options (#18906) (Kristóf Poduszló)
+* [`d715781`](https://github.com/eslint/eslint/commit/d71578124f14d6da3fa5ab5cc391bb6c9ac3ffcf) fix: add missing types for `no-extra-boolean-cast` options (#18902) (Kristóf Poduszló)
+* [`e4e02cc`](https://github.com/eslint/eslint/commit/e4e02cc6938f38ad5028bb8ad82f52460a18dea5) refactor: Extract processor logic into ProcessorService (#18818) (Nicholas C. Zakas)
+* [`ec30c73`](https://github.com/eslint/eslint/commit/ec30c7349e0bc2c37465a036e8c7ea3318ac2328) feat: add "eslint/universal" to export `Linter` (#18883) (唯然)
+* [`c591da6`](https://github.com/eslint/eslint/commit/c591da68d4a96aa28df68f4eff7641f42af82b15) feat: Add language to types (#18917) (Nicholas C. Zakas)
+* [`91cbd18`](https://github.com/eslint/eslint/commit/91cbd18c70dee2ef73de8d8e43f2c744fd173934) docs: add unicode abbreviations in no-irregular-whitespace rule (#18894) (Alix Royere)
+* [`959d360`](https://github.com/eslint/eslint/commit/959d360be597d3112b10590018cd52f1d98712d6) build: Support updates to previous major versions (#18871) (Milos Djermanovic)
+* [`6d4484d`](https://github.com/eslint/eslint/commit/6d4484d9c19e4132f3dee948174a543dbbb5d30f) chore: updates for v8.57.1 release (Jenkins)
+* [`492eb8f`](https://github.com/eslint/eslint/commit/492eb8f34ebbc5c9d1dbfcf4dd06b8dde8d1df74) feat: limit the name given to `ImportSpecifier` in `id-length` (#18861) (Tanuj Kanti)
+* [`2de5742`](https://github.com/eslint/eslint/commit/2de5742682ec45e24dca9ca7faaa45330497fca9) fix: add missing types for `no-misleading-character-class` options (#18905) (Kristóf Poduszló)
+* [`c153084`](https://github.com/eslint/eslint/commit/c153084250673b31bed46e3fe6af7a65b4ce8d6f) fix: add missing types for `no-implicit-coercion` options (#18903) (Kristóf Poduszló)
+* [`19c6856`](https://github.com/eslint/eslint/commit/19c685608d134d9120a129cc80c0ba7f8f016aa3) feat: Add `no-useless-constructor` suggestion (#18799) (Jordan Thomson)
+* [`fa11b2e`](https://github.com/eslint/eslint/commit/fa11b2ede6e5dc1f55dfe4b9b65d9760828900e8) fix: add missing types for `no-empty-function` options (#18901) (Kristóf Poduszló)
+* [`a0deed1`](https://github.com/eslint/eslint/commit/a0deed122a9676fab07b903c8d16fbf60b92eadf) fix: add missing types for `camelcase` options (#18897) (Kristóf Poduszló)
+* [`71f37c5`](https://github.com/eslint/eslint/commit/71f37c5bf04afb704232d312cc6c72c957d1c14e) refactor: use optional chaining when validating config rules (#18893) (lucasrmendonca)
+* [`2c2805f`](https://github.com/eslint/eslint/commit/2c2805f8ee0fb1f27f3e442de248f45e5a98a067) chore: Add PR note to all templates (#18892) (Nicholas C. Zakas)
+* [`7b852ce`](https://github.com/eslint/eslint/commit/7b852ce59e6ed56931c080aa46ab548fa57feffc) refactor: use `Directive` class from `@eslint/plugin-kit` (#18884) (Milos Djermanovic)
+* [`a48f8c2`](https://github.com/eslint/eslint/commit/a48f8c29b58c27d87dbf202d55a5770d678d37d6) feat: add type `FormatterFunction`, update `LoadedFormatter` (#18872) (Francesco Trotta)
+* [`d594ddd`](https://github.com/eslint/eslint/commit/d594ddd2cc9b0c251291ea12fbd14ccd2ee32ac7) chore: update dependency @eslint/core to ^0.6.0 (#18863) (renovate[bot])
+* [`59cfc0f`](https://github.com/eslint/eslint/commit/59cfc0f1b3bbb62260602579f79bd1c36ab5a00f) docs: clarify `resultsMeta` in `LoadedFormatter` type (#18881) (Milos Djermanovic)
+* [`78b2421`](https://github.com/eslint/eslint/commit/78b2421e28f29206fe120ae1b03804b1b79e6324) chore: Update change.yml (#18882) (Nicholas C. Zakas)
+* [`a416f0a`](https://github.com/eslint/eslint/commit/a416f0a270e922c86e8571e94a30fc87d72fa873) chore: enable `$ExpectType` comments in .ts files (#18869) (Francesco Trotta)
+* [`adcc50d`](https://github.com/eslint/eslint/commit/adcc50dbf1fb98c0884f841e2a627796a4490373) docs: Update README (GitHub Actions Bot)
+* [`4edac1a`](https://github.com/eslint/eslint/commit/4edac1a325a832804f76602736a86217b40f69ac) docs: Update README (GitHub Actions Bot)
+
+v8.57.1 - September 16, 2024
+
+* [`140ec45`](https://github.com/eslint/eslint/commit/140ec4569fda5a974b6964242b0b2991828a5567) chore: upgrade @eslint/js@8.57.1 (#18913) (Milos Djermanovic)
+* [`bcdfc04`](https://github.com/eslint/eslint/commit/bcdfc04a69c53dbf1fc3d38603fe0a796bf2274d) chore: package.json update for @eslint/js release (Jenkins)
+* [`3f6ce8d`](https://github.com/eslint/eslint/commit/3f6ce8d6b74aba0d645448e898f271825eeb9630) chore: pin vite-plugin-commonjs@0.10.1 (#18910) (Milos Djermanovic)
+* [`a19072f`](https://github.com/eslint/eslint/commit/a19072f9f17ea8266bc66193e5f8a4bf1368835d) fix: add logic to handle fixTypes in the lintText() method (#18900) (Francesco Trotta)
+* [`04c7188`](https://github.com/eslint/eslint/commit/04c718865b75a95ebfc4d429b8c9fad773228624) fix: Don't lint same file multiple times (#18899) (Francesco Trotta)
+* [`87ec3c4`](https://github.com/eslint/eslint/commit/87ec3c49dd23ab8892bc19aae711292d03a73483) fix: do not throw when defining a global named `__defineSetter__` (#18898) (Francesco Trotta)
+* [`60a1267`](https://github.com/eslint/eslint/commit/60a12676878c3fe0623c3b93e7565f003daac5f0) fix: Provide helpful error message for nullish configs (#18889) (Milos Djermanovic)
+* [`35d366a`](https://github.com/eslint/eslint/commit/35d366aed6e8ab0cfa8f9c9bac4656e3784c11f6) build: Support updates to previous major versions (#18870) (Milos Djermanovic)
+* [`a0dea8e`](https://github.com/eslint/eslint/commit/a0dea8ee01cc4c1b65927562afd3a46418573a02) fix: allow `name` in global ignores, fix `--no-ignore` for non-global (#18875) (Milos Djermanovic)
+* [`3836bb4`](https://github.com/eslint/eslint/commit/3836bb48d3f12058ec36c2edf2ca1b50eb1c923b) fix: do not crash on error in `fs.walk` filter (#18886) (Milos Djermanovic)
+* [`2dec349`](https://github.com/eslint/eslint/commit/2dec349199df4cba1554172ad38163cc09ad0a52) fix: skip processor code blocks that match only universal patterns (#18880) (Milos Djermanovic)
+* [`6a5add4`](https://github.com/eslint/eslint/commit/6a5add41e80941c7253b56b02815ac316e583006) docs: v8.x Add EOL banner (#18744) (Amaresh S M)
+* [`b034575`](https://github.com/eslint/eslint/commit/b034575978e3bb57e2edca0d2dc547c7a3abc928) docs: v8.x add version support page to the dropdown (#18731) (Amaresh S M)
+* [`760ef7d`](https://github.com/eslint/eslint/commit/760ef7d9dbd7b615ccbdc20f02cbc05dbabbada8) docs: v8.x add version support page in the side navbar (#18740) (Amaresh S M)
+* [`428b7ea`](https://github.com/eslint/eslint/commit/428b7ea0a9c086b7d8afa0adb629b09d7347d41d) docs: Add Powered by Algolia label to the search (#18658) (Amaresh S M)
+* [`9f07549`](https://github.com/eslint/eslint/commit/9f0754979527d05cd0abb2ea7ab1c3563fb4a361) chore: ignore `/docs/v8.x` in link checker (#18660) (Milos Djermanovic)
+* [`c68c07f`](https://github.com/eslint/eslint/commit/c68c07ff44c180952e93c6f2c860079db6291b29) docs: version selectors synchronization (#18265) (Milos Djermanovic)
+
v9.10.0 - September 6, 2024
* [`24c3ff7`](https://github.com/eslint/eslint/commit/24c3ff7d0c0bd8b98994e04f0870cbec94c5801d) chore: upgrade to @eslint/js@9.10.0 (#18866) (Francesco Trotta)
diff --git a/Makefile.js b/Makefile.js
index 571da418da26..16a8912e1404 100644
--- a/Makefile.js
+++ b/Makefile.js
@@ -50,6 +50,8 @@ const OPEN_SOURCE_LICENSES = [
/Public Domain/u, /LGPL/u, /Python/u, /BlueOak/u
];
+const MAIN_GIT_BRANCH = "main";
+
//------------------------------------------------------------------------------
// Data
//------------------------------------------------------------------------------
@@ -74,6 +76,8 @@ const NODE = "node ", // intentional extra space
TEST_FILES = "\"tests/{bin,conf,lib,tools}/**/*.js\"",
PERF_ESLINTRC = path.join(PERF_TMP_DIR, "eslint.config.js"),
PERF_MULTIFILES_TARGET_DIR = path.join(PERF_TMP_DIR, "eslint"),
+ CHANGELOG_FILE = "./CHANGELOG.md",
+ VERSIONS_FILE = "./docs/src/_data/versions.json",
/*
* glob arguments with Windows separator `\` don't work:
@@ -97,6 +101,14 @@ function execSilent(cmd) {
return exec(cmd, { silent: true }).stdout;
}
+/**
+ * Gets name of the currently checked out Git branch.
+ * @returns {string} Name of the currently checked out Git branch.
+ */
+function getCurrentGitBranch() {
+ return execSilent("git branch --show-current").trim();
+}
+
/**
* Generates a release blog post for eslint.org
* @param {Object} releaseInfo The release metadata.
@@ -313,14 +325,18 @@ function updateVersions(oldVersion, newVersion) {
/**
* Updates the changelog, bumps the version number in package.json, creates a local git commit and tag,
* and generates the site in an adjacent `website` folder.
- * @param {string} [prereleaseId] The prerelease identifier (alpha, beta, etc.). If `undefined`, this is
+ * @param {Object} options Release options.
+ * @param {string} [options.prereleaseId] The prerelease identifier (alpha, beta, etc.). If `undefined`, this is
* a regular release.
+ * @param {string} options.packageTag Tag that should be added to the package submitted to the npm registry.
* @returns {void}
*/
-function generateRelease(prereleaseId) {
+function generateRelease({ prereleaseId, packageTag }) {
+ echo(`Current Git branch: ${getCurrentGitBranch()}`);
+
const oldVersion = require("./package.json").version;
- ReleaseOps.generateRelease(prereleaseId);
+ ReleaseOps.generateRelease(prereleaseId, packageTag);
const releaseInfo = JSON.parse(cat(".eslint-release-info.json"));
echo("Generating site");
@@ -335,7 +351,9 @@ function generateRelease(prereleaseId) {
docsPackage.version = releaseInfo.version;
fs.writeFileSync(docsPackagePath, `${JSON.stringify(docsPackage, null, 4)}\n`);
- updateVersions(oldVersion, releaseInfo.version);
+ if (getCurrentGitBranch() === MAIN_GIT_BRANCH) {
+ updateVersions(oldVersion, releaseInfo.version);
+ }
echo("Updating commit with docs data");
exec("git add docs/ && git commit --amend --no-edit");
@@ -351,17 +369,32 @@ function publishRelease() {
ReleaseOps.publishRelease();
const releaseInfo = JSON.parse(cat(".eslint-release-info.json"));
- /*
- * for a pre-release, push to the "next" branch to trigger docs deploy
- * for a release, push to the "latest" branch to trigger docs deploy
- */
- if (isPreRelease(releaseInfo.version)) {
- exec("git push origin HEAD:next -f");
- } else {
- exec("git push origin HEAD:latest -f");
- }
+ const docsSiteBranch = releaseInfo.packageTag === "maintenance"
+ ? `v${semver.major(releaseInfo.version)}.x`
+ : releaseInfo.packageTag; // "latest" or "next"
+
+ echo(`Updating docs site branch: ${docsSiteBranch}`);
+ exec(`git push origin HEAD:${docsSiteBranch} -f`);
publishSite();
+
+ // Update changelog and list of versions on the main branch
+ if (getCurrentGitBranch() !== MAIN_GIT_BRANCH) {
+ echo(`Updating changelog and versions on branch: ${MAIN_GIT_BRANCH}`);
+
+ exec(`git checkout ${MAIN_GIT_BRANCH} --force`);
+
+ fs.writeFileSync(CHANGELOG_FILE, `${releaseInfo.markdownChangelog}${cat(CHANGELOG_FILE)}`);
+
+ const versions = JSON.parse(cat(VERSIONS_FILE));
+
+ versions.items.find(({ branch }) => branch === docsSiteBranch).version = releaseInfo.version;
+ fs.writeFileSync(VERSIONS_FILE, `${JSON.stringify(versions, null, 4)}\n`);
+
+ exec(`git add ${CHANGELOG_FILE} ${VERSIONS_FILE}`);
+ exec(`git commit -m "chore: updates for v${releaseInfo.version} release"`);
+ exec("git push origin HEAD");
+ }
}
/**
@@ -1022,6 +1055,6 @@ target.perf = function() {
});
};
-target.generateRelease = () => generateRelease();
-target.generatePrerelease = ([prereleaseType]) => generateRelease(prereleaseType);
+target.generateRelease = ([packageTag]) => generateRelease({ packageTag });
+target.generatePrerelease = ([prereleaseId]) => generateRelease({ prereleaseId, packageTag: "next" });
target.publishRelease = publishRelease;
diff --git a/README.md b/README.md
index 45519dece380..940114717573 100644
--- a/README.md
+++ b/README.md
@@ -297,9 +297,9 @@ The following companies, organizations, and individuals support ESLint's ongoing
Platinum Sponsors
Gold Sponsors
-
Silver Sponsors
+
Silver Sponsors
Bronze Sponsors
-
+
diff --git a/docs/package.json b/docs/package.json
index 7b13033177d6..15ee677981c2 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -1,7 +1,7 @@
{
"name": "docs-eslint",
"private": true,
- "version": "9.10.0",
+ "version": "9.11.0",
"description": "",
"main": "index.js",
"keywords": [],
diff --git a/docs/src/_data/rules.json b/docs/src/_data/rules.json
index 71011e5f710a..6af55f30ddcf 100644
--- a/docs/src/_data/rules.json
+++ b/docs/src/_data/rules.json
@@ -1135,7 +1135,7 @@
"description": "Disallow unnecessary constructors",
"recommended": false,
"fixable": false,
- "hasSuggestions": false
+ "hasSuggestions": true
},
{
"name": "no-useless-escape",
diff --git a/docs/src/_data/rules_meta.json b/docs/src/_data/rules_meta.json
index 712469b9ed76..ed3ee59c8715 100644
--- a/docs/src/_data/rules_meta.json
+++ b/docs/src/_data/rules_meta.json
@@ -2023,7 +2023,8 @@
"description": "Disallow unnecessary constructors",
"recommended": false,
"url": "https://eslint.org/docs/latest/rules/no-useless-constructor"
- }
+ },
+ "hasSuggestions": true
},
"no-useless-escape": {
"type": "suggestion",
diff --git a/docs/src/_data/versions.json b/docs/src/_data/versions.json
index 62b32936983d..80be7753fe57 100644
--- a/docs/src/_data/versions.json
+++ b/docs/src/_data/versions.json
@@ -6,12 +6,12 @@
"path": "/docs/head/"
},
{
- "version": "9.10.0",
+ "version": "9.11.0",
"branch": "latest",
"path": "/docs/latest/"
},
{
- "version": "8.57.0",
+ "version": "8.57.1",
"branch": "v8.x",
"path": "/docs/v8.x/"
}
diff --git a/docs/src/integrate/nodejs-api.md b/docs/src/integrate/nodejs-api.md
index 43e4a5f32d40..c8628a3ad248 100644
--- a/docs/src/integrate/nodejs-api.md
+++ b/docs/src/integrate/nodejs-api.md
@@ -466,8 +466,8 @@ This edit information means replacing the range of the `range` property by the `
The `LoadedFormatter` value is the object to convert the [LintResult] objects to text. The [eslint.loadFormatter()][eslint-loadformatter] method returns it. It has the following method:
-* `format` (`(results: LintResult[], resultsMeta: ResultsMeta) => string | Promise`)
- The method to convert the [LintResult] objects to text. `resultsMeta` is an object that will contain a `maxWarningsExceeded` object if `--max-warnings` was set and the number of warnings exceeded the limit. The `maxWarningsExceeded` object will contain two properties: `maxWarnings`, the value of the `--max-warnings` option, and `foundWarnings`, the number of lint warnings.
+* `format` (`(results: LintResult[], resultsMeta?: ResultsMeta) => string | Promise`)
+ The method to convert the [LintResult] objects to text. `resultsMeta` is an optional parameter that is primarily intended for use by the ESLint CLI and can contain only a `maxWarningsExceeded` property that would be passed through the [`context`](../extend/custom-formatters#the-context-argument) object when this method calls the underlying formatter function. Note that ESLint automatically generates `cwd` and `rulesMeta` properties of the `context` object, so you typically don't need to pass in the second argument when calling this method.
---
diff --git a/docs/src/maintain/manage-releases.md b/docs/src/maintain/manage-releases.md
index b8ae546c6026..b1befbcca1de 100644
--- a/docs/src/maintain/manage-releases.md
+++ b/docs/src/maintain/manage-releases.md
@@ -49,6 +49,47 @@ In rare cases, a second patch release might be necessary if the release is known
After the patch release has been published (or no patch release is necessary), close the release issue and inform the team that they can start merging in semver-minor changes again.
+### Release Parameters
+
+The following tables show examples of the option to select as `RELEASE_TYPE` when starting `eslint-js Release` (the `@eslint/js` package release) and `eslint Release` (the `eslint` package release) jobs on Jenkins to release a new version with the latest features. In both jobs, `main` should be selected as `RELEASE_BRANCH`.
+
+| **HEAD Version** | **Desired Next Version** | **`eslint-js Release` `RELEASE_TYPE`** |
+| :---: | :---: | :---: |
+| `9.25.0` | `9.25.1` | `patch` |
+| `9.25.0` | `9.26.0` | `minor` |
+| `9.25.0` | `10.0.0-alpha.0` | `alpha.0` |
+| `10.0.0-alpha.0` | `10.0.0-alpha.1` | `alpha` |
+| `10.0.0-alpha.1` | `10.0.0-beta.0` | `beta` |
+| `10.0.0-beta.0` | `10.0.0-beta.1` | `beta` |
+| `10.0.0-beta.1` | `10.0.0-rc.0` | `rc` |
+| `10.0.0-rc.0` | `10.0.0-rc.1` | `rc` |
+| `10.0.0-rc.1` | `10.0.0` | `major` |
+
+| **HEAD Version** | **Desired Next Version** | **`eslint Release` `RELEASE_TYPE`** |
+| :---: | :---: | :---: |
+| `9.25.0` | `9.25.1` or `9.26.0` |`latest` |
+| `9.25.0` | `10.0.0-alpha.0` | `alpha` |
+| `10.0.0-alpha.0` | `10.0.0-alpha.1` | `alpha` |
+| `10.0.0-alpha.1` | `10.0.0-beta.0` | `beta` |
+| `10.0.0-beta.0` | `10.0.0-beta.1` | `beta` |
+| `10.0.0-beta.1` | `10.0.0-rc.0` | `rc` |
+| `10.0.0-rc.0` | `10.0.0-rc.1` | `rc` |
+| `10.0.0-rc.1` | `10.0.0` | `latest` |
+
+When releasing a new version of the previous major line, the option to select as `RELEASE_TYPE` depends on whether the HEAD version is a prerelease or not. In both jobs, the corresponding development branch (for example, `v9.x-dev`) should be selected as `RELEASE_BRANCH`.
+
+| **HEAD Version** | **Previous Major Line Version** | **Desired Next Version** | **`eslint-js Release` `RELEASE_TYPE`** |
+| :---: | :---: | :---: | :---: |
+| `10.0.0-alpha.0` | `9.25.0` | `9.25.1` | `patch` |
+| `10.0.0-alpha.0` | `9.25.0` | `9.26.0` | `minor` |
+| `10.0.0` | `9.25.0` | `9.25.1` | `maintenance.patch` |
+| `10.0.0` | `9.25.0` | `9.26.0` | `maintenance.minor` |
+
+| **HEAD Version** | **Previous Major Line Version** | **Desired Next Version** | **`eslint Release` `RELEASE_TYPE`** |
+| :---: | :---: | :---: | :---: |
+| `10.0.0-alpha.0` | `9.25.0` | `9.25.1` or `9.26.0` | `latest` |
+| `10.0.0` | `9.25.0` | `9.25.1` or `9.26.0` | `maintenance` |
+
## Emergency Releases
An emergency release is unplanned and isn't the regularly scheduled release or the anticipated patch release.
diff --git a/docs/src/rules/no-irregular-whitespace.md b/docs/src/rules/no-irregular-whitespace.md
index d7cd83402fc0..eb0086f57ab4 100644
--- a/docs/src/rules/no-irregular-whitespace.md
+++ b/docs/src/rules/no-irregular-whitespace.md
@@ -39,27 +39,27 @@ This rule disallows the following characters except where the options allow:
\u000B - Line Tabulation (\v) -
\u000C - Form Feed (\f) -
\u00A0 - No-Break Space -
-\u0085 - Next Line
-\u1680 - Ogham Space Mark
+\u0085 - Next Line -
+\u1680 - Ogham Space Mark -
\u180E - Mongolian Vowel Separator -
\ufeff - Zero Width No-Break Space -
-\u2000 - En Quad
-\u2001 - Em Quad
+\u2000 - En Quad -
+\u2001 - Em Quad -
\u2002 - En Space -
\u2003 - Em Space -
-\u2004 - Three-Per-Em
-\u2005 - Four-Per-Em
-\u2006 - Six-Per-Em
-\u2007 - Figure Space
+\u2004 - Three-Per-Em - - <3/MSP>
+\u2005 - Four-Per-Em - - <4/MSP>
+\u2006 - Six-Per-Em - - <6/MSP>
+\u2007 - Figure Space -
\u2008 - Punctuation Space -
-\u2009 - Thin Space
-\u200A - Hair Space
+\u2009 - Thin Space -
+\u200A - Hair Space -
\u200B - Zero Width Space -
-\u2028 - Line Separator
-\u2029 - Paragraph Separator
-\u202F - Narrow No-Break Space
-\u205f - Medium Mathematical Space
-\u3000 - Ideographic Space
+\u2028 - Line Separator - -
+\u2029 - Paragraph Separator - -
+\u202F - Narrow No-Break Space -
+\u205f - Medium Mathematical Space -
+\u3000 - Ideographic Space -
```
## Options
diff --git a/docs/src/use/formatters/html-formatter-example.html b/docs/src/use/formatters/html-formatter-example.html
index 445e6ab3f2cd..1d6891ae3088 100644
--- a/docs/src/use/formatters/html-formatter-example.html
+++ b/docs/src/use/formatters/html-formatter-example.html
@@ -118,7 +118,7 @@