From f7ca0a44a5d198d600521afa44341736c9bee0c8 Mon Sep 17 00:00:00 2001 From: Dex Date: Fri, 25 Sep 2026 00:04:17 +0200 Subject: [PATCH 01/26] chore: fix typos in code comments (#18860) Fixes four typos in code comments (no behavioral change): - `packages/svelte/src/index-client.js`: `noone` -> `no one` - `packages/svelte/src/internal/client/dom/css.js`: `Therfore` -> `Therefore` - `packages/svelte/src/internal/client/runtime.js`: `loosing` -> `losing` - `packages/svelte/src/internal/server/index.js`: `aswell` -> `as well` Checklist: title prefixed with `chore:`; comment-only change so no changeset and no behavior affected. Co-authored-by: Dextheking1 --- packages/svelte/src/index-client.js | 2 +- packages/svelte/src/internal/client/dom/css.js | 2 +- packages/svelte/src/internal/client/runtime.js | 2 +- packages/svelte/src/internal/server/index.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/index-client.js b/packages/svelte/src/index-client.js index 0eb1b80315..3da59eb7f7 100644 --- a/packages/svelte/src/index-client.js +++ b/packages/svelte/src/index-client.js @@ -17,7 +17,7 @@ if (DEV) { if (!(rune in globalThis)) { // TODO if people start adjusting the "this can contain runes" config through v-p-s more, adjust this message /** @type {any} */ - let value; // let's hope noone modifies this global, but belts and braces + let value; // let's hope no one modifies this global, but belts and braces Object.defineProperty(globalThis, rune, { configurable: true, // eslint-disable-next-line getter-return diff --git a/packages/svelte/src/internal/client/dom/css.js b/packages/svelte/src/internal/client/dom/css.js index 23f4eff4f7..78a32901fe 100644 --- a/packages/svelte/src/internal/client/dom/css.js +++ b/packages/svelte/src/internal/client/dom/css.js @@ -12,7 +12,7 @@ export function append_styles(anchor, css) { // Use an effect to ensure `anchor` is in the DOM, otherwise getRootNode() will yield wrong results effect(() => { // Bit of a hack: branches.js/each.js use offscreen fragments with temporary text nodes that will - // never be connected to the real dom. Therfore walk up to the branch that has created the component + // never be connected to the real dom. Therefore walk up to the branch that has created the component // whose styles we want to append, and check its node instead. It will be connected by the time we get here. anchor = active_effect?.parent?.nodes?.start ?? anchor; var root = anchor.getRootNode(); diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 6212605008..76802974b7 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -410,7 +410,7 @@ function remove_reaction(signal, dependency) { // In a fork it's possible that a derived is executed and gets reactions, then commits, but is // never re-executed. This is possible when the derived is only executed once in the context // of a new branch which happens before fork.commit() runs. In this case, the derived still has - // UNINITIALIZED as its value, and then when it's loosing its reactions we need to ensure it stays + // UNINITIALIZED as its value, and then when it's losing its reactions we need to ensure it stays // DIRTY so it is reexecuted once someone wants its value again. if (derived.v !== UNINITIALIZED) { update_derived_status(derived); diff --git a/packages/svelte/src/internal/server/index.js b/packages/svelte/src/internal/server/index.js index 20bef78306..6a63bd9fd6 100644 --- a/packages/svelte/src/internal/server/index.js +++ b/packages/svelte/src/internal/server/index.js @@ -168,7 +168,7 @@ export function attributes(attrs, css_hash, classes, styles, flags = 0) { // value/checked takes precedence over defaultValue/defaultChecked name = name === 'defaultvalue' ? 'value' : 'checked'; if (name in attrs) continue; - // We're checking prior entries aswell because "name in attrs" is not enough as the attributes may have different casing + // We're checking prior entries as well because "name in attrs" is not enough as the attributes may have different casing for (let j = 0; j < names.length; j++) { if (names[j].toLowerCase() === name) continue outer; } From 75aa6ba38d58c83ff012bed77c39edb814e43bc6 Mon Sep 17 00:00:00 2001 From: G Date: Fri, 25 Sep 2026 04:44:00 +0200 Subject: [PATCH 02/26] fix: don't warn about redundant `link` role on `` without `href` (#18872) Since #11737, `` without an `href` no longer triggers `a11y_no_redundant_roles`, but `` without an `href` still does. Per [ARIA in HTML](https://www.w3.org/TR/html-aria/#el-area-no-href), an `` without `href` has the implicit role `generic` and `link` is one of its allowed roles, so the role isn't redundant. This applies the existing `` exception to `` and adds test cases for `` with and without `href`. Closes #9261. The `` example in that issue was already fixed by #11737, but the issue was left open. ### Before submitting the PR, please make sure you do the following - [x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs - [x] Prefix your PR title with `feat:`, `fix:`, `chore:`, or `docs:`. - [x] This message body should clearly illustrate what problems it solves. - [x] Ideally, include a test that fails without this PR but passes with it. - [x] If this PR changes code within `packages/svelte/src`, add a changeset (`npx changeset`). ### Tests and linting - [x] Run the tests with `pnpm test` and lint the project with `pnpm lint` --- .changeset/quiet-areas-link.md | 5 +++++ .../phases/2-analyze/visitors/shared/a11y/index.js | 4 ++-- .../samples/a11y-no-redundant-roles/input.svelte | 5 +++++ .../samples/a11y-no-redundant-roles/warnings.json | 12 ++++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 .changeset/quiet-areas-link.md diff --git a/.changeset/quiet-areas-link.md b/.changeset/quiet-areas-link.md new file mode 100644 index 0000000000..af4e31f3cb --- /dev/null +++ b/.changeset/quiet-areas-link.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: don't warn about a redundant `link` role on `` elements without an `href` diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js index f06a41d088..c38b03bf69 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js @@ -173,8 +173,8 @@ export function check_element(node, context) { current_role === get_implicit_role(node.name, attribute_map) && //