Skip to content

feat(release): promote collector fixes and dashboard release links - #1032

Merged
Starosdev merged 11 commits into
masterfrom
develop
Oct 25, 2026
Merged

Starosdev merged 11 commits into
masterfrom
develop

Conversation

@Starosdev

Copy link
Copy Markdown
Owner

Product changes

Summary

Fix dashboard Run collectors hanging when a SMART schedule is configured, and skip disabled ZFS and MDADM collectors. Link stable and beta version badges to their GitHub release pages.

Promote all 10 commits currently in develop ahead of master, including dependency maintenance and collector image-tag documentation.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change
  • Documentation update
  • Refactoring (no functional changes)
  • CI/CD or infrastructure change

Related Issues

Closes #1014
Closes #916

Included PRs: #1029, #1031, #920, #998, #999, #1001, #1002, #1003, #1027, #1030.

Changes Made

  • Force SMART one-shot execution for manual, omnibus, cron, and startup runs while preserving standalone scheduling.
  • Honor optional collector enablement, including quoted-empty schedules, and retain errors from enabled collectors.
  • Add release links to dashboard version badges and update frontend, Go, and release-tooling dependencies.
  • Tighten release audit exceptions and add regression coverage; document collector settings and channel image tags.

Testing

  • Collector fixes tested locally in their source PRs: focused Go race tests, go vet, lint, CLI and shell regression coverage.
  • Added regression tests for one-shot execution, optional collector enablement, quoted-empty schedules, audit policy, and release URLs.
  • Source PR CI passed. PR fix(collectors): skip disabled optional collectors in manual runs #1031 had 19 passing checks at 5cdc73e; PR fix(collector): force one-shot execution for manual and managed runs #1029 had 29 passing checks at e7b5234.
  • Develop head 3f70cc1 has 17 successful checks, including all image builds, publication, security scans, and dependency audits.
  • PR feat(dashboard): link version badges to releases #920 reports 218 frontend tests passing, successful lint, and a production build.
  • Zeus develop acceptance on October 25, 2026: dashboard action returned HTTP 202; SMART completed in 20 seconds; 16 device records updated; disabled ZFS and MDADM logged skips. No collector errors or remaining collector processes; health checks passed.
  • Tested image digest: sha256:e132386c10c2eb627db7ea3e97a3e26ebe22244e80e8ae73d38b0af9adf0e72d.
  • Promotion-specific CI will run on this PR. No new local tests were run solely to create this promotion.

Checklist

  • Source changes follow repository style and include focused validation.
  • Promotion scope and source changes inspected.
  • Documentation updated where needed.
  • Source changes include regression coverage.
  • Promotion-specific checks have completed.
  • Final promotion review has passed.

Screenshots (if applicable)

No new visual changes are introduced by this promotion beyond the version links in #920.

Additional Notes

Review: required (release audit policy changes). Independent reviews passed for the collector fixes at their exact source PR heads. Final promotion review remains pending.

The npm bundled-advisory exceptions remain narrowly scoped and expire November 1, 2026. A passing audit gate does not mean those unused bundled copies are patched.

Master contains release history absent from develop. The documented update-branch step may be needed before merge; CI must pass again after that update.

Creating this PR does not merge, release, or deploy it. Stable release publication and production rollout remain separate approval steps. Production and beta were unchanged during Zeus develop acceptance. No cross-repository change is included.

Course: Not applicable (Scrutiny service).
Version: Determined by semantic-release during an authorized release.
Track: Stable promotion.
Branch: develop to master.

Starosdev and others added 11 commits October 21, 2026 18:41
…1003)

Bumps [marked](https://github.com/markedjs/marked) from 18.1.0 to
18.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/markedjs/marked/releases">marked's
releases</a>.</em></p>
<blockquote>
<h2>v18.1.1</h2>
<h2><a
href="https://github.com/markedjs/marked/compare/v18.1.0...v18.1.1">18.1.1</a>
(2026-10-12)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>cli:</strong> honor an explicitly empty string input (<a
href="https://redirect.github.com/markedjs/marked/issues/4113">#4113</a>)
(<a
href="https://github.com/markedjs/marked/commit/ec3a4e511aa0d60b3e9ab8aa0c769407cdaf08d9">ec3a4e5</a>)</li>
<li>end blockquote before a lazy line after a heading, hr or html block
(<a
href="https://redirect.github.com/markedjs/marked/issues/4115">#4115</a>)
(<a
href="https://github.com/markedjs/marked/commit/9e64a6a3fe6b826d113fc337c21ebe345455a842">9e64a6a</a>)</li>
<li>keep a backslash in a code span from hiding emphasis (<a
href="https://redirect.github.com/markedjs/marked/issues/4117">#4117</a>)
(<a
href="https://github.com/markedjs/marked/commit/6a57018fc906333d358981682fd693e4bb85940f">6a57018</a>)</li>
<li>keep a decoded character reference from forming a new one (<a
href="https://redirect.github.com/markedjs/marked/issues/4111">#4111</a>)
(<a
href="https://github.com/markedjs/marked/commit/6bbac0cdb72cc3038baefe768c03f788e46126a5">6bbac0c</a>),
closes <a
href="https://redirect.github.com/markedjs/marked/issues/38">#38</a> <a
href="https://redirect.github.com/markedjs/marked/issues/112">#112</a></li>
<li>let indented and type 3-5 html blocks interrupt a paragraph (<a
href="https://redirect.github.com/markedjs/marked/issues/4124">#4124</a>)
(<a
href="https://github.com/markedjs/marked/commit/eaa1fffb30fa334cc11ab93f1e5aaa1d2b916e7c">eaa1fff</a>)</li>
<li>make walkTokens linear by appending values in place (<a
href="https://redirect.github.com/markedjs/marked/issues/4121">#4121</a>)
(<a
href="https://github.com/markedjs/marked/commit/627d9ae4e5ea403580782a8f6e21fbc8bf56f4c1">627d9ae</a>),
closes <a
href="https://redirect.github.com/markedjs/marked/issues/4120">#4120</a></li>
<li>match pre, script, style and textarea as whole tag names (<a
href="https://redirect.github.com/markedjs/marked/issues/4114">#4114</a>)
(<a
href="https://github.com/markedjs/marked/commit/0db74cb0194f3acb5a53b14a73c2cd087c3c9981">0db74cb</a>)</li>
<li>preserve enclosing link state after parsing images (<a
href="https://redirect.github.com/markedjs/marked/issues/4123">#4123</a>)
(<a
href="https://github.com/markedjs/marked/commit/cc07bb9cb62bfd41a724d0a426f194188d7b35c1">cc07bb9</a>)</li>
<li>respect tab stops in list continuation indentation (<a
href="https://redirect.github.com/markedjs/marked/issues/4119">#4119</a>)
(<a
href="https://github.com/markedjs/marked/commit/4bd252811fb24ca6b7e22f60c39b89efc2b265d2">4bd2528</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li>avoid repeated raw string copies in nested lists (<a
href="https://redirect.github.com/markedjs/marked/issues/4082">#4082</a>)
(<a
href="https://github.com/markedjs/marked/commit/7e8754d60b3c37be30aa17106ada623d1f0cf9db">7e8754d</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/markedjs/marked/commit/cdbdc0122ab83b2b97560944bf009a22cfb78b05"><code>cdbdc01</code></a>
chore(release): 18.1.1 [skip ci]</li>
<li><a
href="https://github.com/markedjs/marked/commit/2134976c497fef671d47fc3e2a0d58ea44ac9a53"><code>2134976</code></a>
docs: add AGENTS.md (<a
href="https://redirect.github.com/markedjs/marked/issues/4125">#4125</a>)</li>
<li><a
href="https://github.com/markedjs/marked/commit/699a969fe30855bce777364e9692df2279e8a65b"><code>699a969</code></a>
chore(deps-dev): bump handlebars from 4.7.9 to 4.7.10 (<a
href="https://redirect.github.com/markedjs/marked/issues/4133">#4133</a>)</li>
<li><a
href="https://github.com/markedjs/marked/commit/6a57018fc906333d358981682fd693e4bb85940f"><code>6a57018</code></a>
fix: keep a backslash in a code span from hiding emphasis (<a
href="https://redirect.github.com/markedjs/marked/issues/4117">#4117</a>)</li>
<li><a
href="https://github.com/markedjs/marked/commit/eaa1fffb30fa334cc11ab93f1e5aaa1d2b916e7c"><code>eaa1fff</code></a>
fix: let indented and type 3-5 html blocks interrupt a paragraph (<a
href="https://redirect.github.com/markedjs/marked/issues/4124">#4124</a>)</li>
<li><a
href="https://github.com/markedjs/marked/commit/7e8754d60b3c37be30aa17106ada623d1f0cf9db"><code>7e8754d</code></a>
perf: avoid repeated raw string copies in nested lists (<a
href="https://redirect.github.com/markedjs/marked/issues/4082">#4082</a>)</li>
<li><a
href="https://github.com/markedjs/marked/commit/cc07bb9cb62bfd41a724d0a426f194188d7b35c1"><code>cc07bb9</code></a>
fix: preserve enclosing link state after parsing images (<a
href="https://redirect.github.com/markedjs/marked/issues/4123">#4123</a>)</li>
<li><a
href="https://github.com/markedjs/marked/commit/627d9ae4e5ea403580782a8f6e21fbc8bf56f4c1"><code>627d9ae</code></a>
fix: make walkTokens linear by appending values in place (<a
href="https://redirect.github.com/markedjs/marked/issues/4121">#4121</a>)</li>
<li><a
href="https://github.com/markedjs/marked/commit/4bd252811fb24ca6b7e22f60c39b89efc2b265d2"><code>4bd2528</code></a>
fix: respect tab stops in list continuation indentation (<a
href="https://redirect.github.com/markedjs/marked/issues/4119">#4119</a>)</li>
<li><a
href="https://github.com/markedjs/marked/commit/9e64a6a3fe6b826d113fc337c21ebe345455a842"><code>9e64a6a</code></a>
fix: end blockquote before a lazy line after a heading, hr or html block
(<a
href="https://redirect.github.com/markedjs/marked/issues/4115">#4115</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/markedjs/marked/compare/v18.1.0...v18.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=marked&package-manager=npm_and_yarn&previous-version=18.1.0&new-version=18.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
….22.0 (#998)

Bumps
[github.com/nicholas-fedor/shoutrrr](https://github.com/nicholas-fedor/shoutrrr)
from 0.21.2 to 0.22.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nicholas-fedor/shoutrrr/releases">github.com/nicholas-fedor/shoutrrr's
releases</a>.</em></p>
<blockquote>
<h2>v0.22.0</h2>
<h2>Upgrade Notes</h2>
<ul>
<li>Router results from <code>Send</code>, <code>SendContext</code>,
<code>SendItems</code>, and <code>SendItemsContext</code> now line up
with the configured URLs, and each failure is a
<code>*types.TargetError</code> whose <code>Index</code> field gives the
URL's position.</li>
<li>Errors and logs no longer contain service URLs or credentials.
Errors keep the scheme and host, and the underlying cause text is
unchanged.</li>
<li><code>shoutrrr.Send</code> now runs through a one-shot router, so
each service's send budget applies (10 seconds by default) and the
service is closed afterwards.</li>
<li>Undeclared <code>title</code>, <code>message</code>, and
<code>level</code> params are now accepted instead of failing the send,
and params no longer change a service's stored config between
sends.</li>
<li>Matrix logs in on the first send instead of during initialization,
so creating a sender to validate a URL no longer contacts the
server.</li>
<li>MQTT keeps its connection open between sends, disconnects after 60
seconds idle, and disconnects when the sender is closed. Call
<code>Close</code> on long-lived senders when you are done with
them.</li>
<li>Default HTTP clients now honor the <code>HTTP_PROXY</code>,
<code>HTTPS_PROXY</code>, and <code>NO_PROXY</code> environment
variables, and the generic service's default client has a 10 second
timeout.</li>
<li>The CLI reads every flag from a <code>SHOUTRRR_&lt;FLAG&gt;</code>
environment variable. Positional arguments no longer override flags, and
extra arguments are an error.</li>
<li><code>CreateSender</code>, <code>NewSender</code>,
<code>router.New</code>, the <code>SendWithContext</code> methods,
bark's <code>SendItems</code>, and <code>jsonclient.NewClient</code> are
deprecated. Run <code>go fix ./...</code> to migrate callers.</li>
</ul>
<h2>Features</h2>
<ul>
<li>feat: add context-aware sends and closing to the router and root API
by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1464">nicholas-fedor/shoutrrr#1464</a></li>
<li>feat: add context-aware sends to json client services by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1469">nicholas-fedor/shoutrrr#1469</a></li>
<li>feat: add context-aware sends to the push services by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1510">nicholas-fedor/shoutrrr#1510</a></li>
<li>feat: add context-aware sends to the chat webhook services by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1512">nicholas-fedor/shoutrrr#1512</a></li>
<li>feat: add context-aware sends to the remaining services by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1516">nicholas-fedor/shoutrrr#1516</a></li>
<li>chore: let go fix migrate the remaining deprecated constructors by
<a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1527">nicholas-fedor/shoutrrr#1527</a></li>
</ul>
<h2>Fixes</h2>
<ul>
<li>fix(router): stop custom url panic and url leaks by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1422">nicholas-fedor/shoutrrr#1422</a></li>
<li>fix(router): return send errors in url order by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1424">nicholas-fedor/shoutrrr#1424</a></li>
<li>fix(util): keep lines intact when batching messages by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1426">nicholas-fedor/shoutrrr#1426</a></li>
<li>fix(discord): count the title toward each batch's embed limit by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1428">nicholas-fedor/shoutrrr#1428</a></li>
<li>fix(format): accept reserved params that a service does not declare
by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1430">nicholas-fedor/shoutrrr#1430</a></li>
<li>fix: redact service urls from errors by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1432">nicholas-fedor/shoutrrr#1432</a></li>
<li>fix(services): redact credentials from service errors and logs by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1441">nicholas-fedor/shoutrrr#1441</a></li>
<li>fix(services): keep http client injection safe and authenticated by
<a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1443">nicholas-fedor/shoutrrr#1443</a></li>
<li>fix(telegram): report failed requests instead of success by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1445">nicholas-fedor/shoutrrr#1445</a></li>
<li>fix(matrix): log in on first send instead of during initialize by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1447">nicholas-fedor/shoutrrr#1447</a></li>
<li>fix(mqtt): keep connections open between sends and close them when
idle by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1451">nicholas-fedor/shoutrrr#1451</a></li>
<li>fix(services): apply send params to a per-send config copy by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1455">nicholas-fedor/shoutrrr#1455</a></li>
<li>fix(services): match the capability interfaces the router dispatches
on by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1459">nicholas-fedor/shoutrrr#1459</a></li>
<li>fix: honor proxy environment variables in default http clients by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1479">nicholas-fedor/shoutrrr#1479</a></li>
<li>fix(cli): read every flag from the environment and stop prompts at
end of input by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1481">nicholas-fedor/shoutrrr#1481</a></li>
<li>fix(cli): close services after sending so MQTT disconnects cleanly
by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1508">nicholas-fedor/shoutrrr#1508</a></li>
<li>fix: restore the default client when a nil *http.Client is set by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1518">nicholas-fedor/shoutrrr#1518</a></li>
<li>fix(join): send the icon without requiring a title by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1525">nicholas-fedor/shoutrrr#1525</a></li>
</ul>
<h2>Dependency Updates</h2>
<ul>
<li>chore(deps): update go toolchain directive to v1.27.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1453">nicholas-fedor/shoutrrr#1453</a></li>
<li>fix(deps): update module github.com/onsi/ginkgo/v2 to v2.33.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1505">nicholas-fedor/shoutrrr#1505</a></li>
<li>fix(deps): update module github.com/mattn/go-colorable to v0.1.16 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1414">nicholas-fedor/shoutrrr#1414</a></li>
<li>chore(deps): update module github.com/stretchr/objx to v0.7.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1547">nicholas-fedor/shoutrrr#1547</a></li>
<li>chore(deps): update module golang.org/x/crypto to v0.58.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1499">nicholas-fedor/shoutrrr#1499</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nicholas-fedor/shoutrrr/blob/main/CHANGELOG.md">github.com/nicholas-fedor/shoutrrr's
changelog</a>.</em></p>
<blockquote>
<h2>[0.22.0] - 2026-10-13</h2>
<h3>Added</h3>
<ul>
<li>Add context-aware sends to the remaining services by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1516">#1516</a></li>
<li>Add context-aware sends to the chat webhook services by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1512">#1512</a></li>
<li>Add context-aware sends to the push services by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1510">#1510</a></li>
<li>Add context-aware sends to json client services by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1469">#1469</a></li>
<li>Add context-aware sends and closing to the router and root API by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1464">#1464</a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Send the icon without requiring a title by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1525">#1525</a></li>
<li>Restore the default client when a nil *http.Client is set by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1518">#1518</a></li>
<li>Close services after sending so MQTT disconnects cleanly by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1508">#1508</a></li>
<li>Read every flag from the environment and stop prompts at end of
input by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1481">#1481</a></li>
<li>Honor proxy environment variables in default http clients by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1479">#1479</a></li>
<li>Match the capability interfaces the router dispatches on by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1459">#1459</a></li>
<li>Apply send params to a per-send config copy by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1455">#1455</a></li>
<li>Keep connections open between sends and close them when idle by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1451">#1451</a></li>
<li>Log in on first send instead of during initialize by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1447">#1447</a></li>
<li>Report failed requests instead of success by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1445">#1445</a></li>
<li>Keep http client injection safe and authenticated by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1443">#1443</a></li>
<li>Redact credentials from service errors and logs by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1441">#1441</a></li>
<li>Redact service urls from errors by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1432">#1432</a></li>
<li>Accept reserved params that a service does not declare by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1430">#1430</a></li>
<li>Count the title toward each batch's embed limit by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1428">#1428</a></li>
<li>Keep lines intact when batching messages by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1426">#1426</a></li>
<li>Return send errors in url order by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1424">#1424</a></li>
<li>Stop custom url panic and url leaks by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1422">#1422</a></li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix drift in the readme, docker, service, and package docs by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1520">#1520</a></li>
<li>Document SendContext for per-send params by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1487">#1487</a></li>
</ul>
<h3>Tests</h3>
<ul>
<li>Stop unit tests from sending dns queries by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1466">#1466</a></li>
<li>Type generator input before starting generate by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1457">#1457</a></li>
<li>Add cross-service contract suite by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1418">#1418</a></li>
<li>Fix data races and run tests with the race detector by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1416">#1416</a></li>
</ul>
<h3>Continuous Integration</h3>
<ul>
<li>Skip commit lint on changelog-only pull requests by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1514">#1514</a></li>
<li>Add timeouts, PR concurrency, and module and release config checks
by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1501">#1501</a></li>
<li>Keep the write token out of the docs build by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1489">#1489</a></li>
<li>Fix bot merges and group entries by commit type by <a
href="https://github.com/nicholas-fedor"><code>@​nicholas-fedor</code></a>
in <a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/pull/1468">#1468</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/017cbd3c39dd31bfe60171e17545cf8007fc9575"><code>017cbd3</code></a>
docs(changelog): update changelog (<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1548">#1548</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/99a1929f3160d0224f6de0a71fb2946740334032"><code>99a1929</code></a>
chore(deps): update module github.com/stretchr/objx to v0.7.0 (<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1547">#1547</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/1bad90546aeba481d65058054d1b9261e1ab69ff"><code>1bad905</code></a>
chore(deps): update goreleaser/goreleaser-action action to v7.3.0 (<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1546">#1546</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/088541d0d1cb272d7db142a7c9487fa0462f89a1"><code>088541d</code></a>
docs(changelog): update changelog (<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1543">#1543</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/8e798b4079102afe667ef25fabfad89cfc609d58"><code>8e798b4</code></a>
chore(deps): update dependency verspec to v0.2.0 (<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1545">#1545</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/ae7c3e2773901f32a1bc41a062feaddbfeb8571f"><code>ae7c3e2</code></a>
chore(deps): update nicholas-fedor/govulncheck-action action to v1.1.1
(<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1544">#1544</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/00986b0e2c82fd81b4e00e963b83001e3647cc42"><code>00986b0</code></a>
docs(changelog): update changelog (<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1542">#1542</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/f0f79fb585422a65064c2e95b3767d71ba20625b"><code>f0f79fb</code></a>
chore(deps): update github.com/google/pprof digest to 2af12c3 (<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1541">#1541</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/18598fcc7110b69746b3928bf066bc6465fcab54"><code>18598fc</code></a>
chore(deps): update binwiederhier/ntfy:latest docker digest to 8563a39
(<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1540">#1540</a>)</li>
<li><a
href="https://github.com/nicholas-fedor/shoutrrr/commit/e8be763aa5611f68d1aa1a864a567b82dad5679f"><code>e8be763</code></a>
docs(changelog): update changelog (<a
href="https://redirect.github.com/nicholas-fedor/shoutrrr/issues/1539">#1539</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/nicholas-fedor/shoutrrr/compare/v0.21.2...v0.22.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/nicholas-fedor/shoutrrr&package-manager=go_modules&previous-version=0.21.2&new-version=0.22.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…es (#999)

Bumps the angular group in /webapp/frontend with 19 updates:

| Package | From | To |
| --- | --- | --- |
|
[@angular-eslint/schematics](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics)
| `22.5.0` | `22.6.0` |
|
[@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations)
| `22.2.2` | `22.2.3` |
| [@angular/cdk](https://github.com/angular/components) | `22.2.2` |
`22.2.3` |
|
[@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common)
| `22.2.2` | `22.2.3` |
|
[@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler)
| `22.2.2` | `22.2.3` |
|
[@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core)
| `22.2.2` | `22.2.3` |
|
[@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms)
| `22.2.2` | `22.2.3` |
| [@angular/material](https://github.com/angular/components) | `22.2.2`
| `22.2.3` |
|
[@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser)
| `22.2.2` | `22.2.3` |
|
[@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic)
| `22.2.2` | `22.2.3` |
|
[@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router)
| `22.2.2` | `22.2.3` |
|
[@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder)
| `22.5.0` | `22.6.0` |
|
[@angular-eslint/eslint-plugin](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin)
| `22.5.0` | `22.6.0` |
|
[@angular-eslint/eslint-plugin-template](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/eslint-plugin-template)
| `22.5.0` | `22.6.0` |
|
[@angular-eslint/template-parser](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/template-parser)
| `22.5.0` | `22.6.0` |
| [@angular/build](https://github.com/angular/angular-cli) | `22.2.2` |
`22.2.3` |
| [@angular/cli](https://github.com/angular/angular-cli) | `22.2.2` |
`22.2.3` |
|
[@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli)
| `22.2.2` | `22.2.3` |
|
[@angular/language-service](https://github.com/angular/angular/tree/HEAD/packages/language-service)
| `22.2.2` | `22.2.3` |

Updates `@angular-eslint/schematics` from 22.5.0 to 22.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular-eslint/angular-eslint/releases">@​angular-eslint/schematics's
releases</a>.</em></p>
<blockquote>
<h2>v22.6.0</h2>
<h2>22.6.0 (2026-10-11)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [prefer-standalone] add
allowExplicitStandalone option (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3237">#3237</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li>update dependency <code>@​angular/compiler</code> to v22.1.5 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3205">#3205</a>)</li>
<li>update dependency <code>@​angular/compiler</code> to v22.1.6 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3217">#3217</a>)</li>
<li>update dependency eslint to v10.10.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3209">#3209</a>)</li>
<li>update typescript-eslint packages to v8.70.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3212">#3212</a>)</li>
<li>update dependency <code>@​angular/compiler</code> to v22.1.7 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3230">#3230</a>)</li>
<li>update dependency eslint to v10.11.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3233">#3233</a>)</li>
<li>update typescript-eslint packages to v8.70.1 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3244">#3244</a>)</li>
<li>update dependency <code>@​angular/compiler</code> to v22.2.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3247">#3247</a>)</li>
<li>update typescript-eslint packages to v8.71.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3258">#3258</a>)</li>
<li>update dependency <code>@​angular/compiler</code> to v22.2.1 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3264">#3264</a>)</li>
<li>update dependency eslint to v10.12.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3274">#3274</a>)</li>
<li><strong>eslint-plugin:</strong> [reactive-context-must-read-signal]
ignore inherited primitive names (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3201">#3201</a>)</li>
<li><strong>eslint-plugin:</strong> ensure <code>prefix</code> rule
option schema is fully typed (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3246">#3246</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-signal-model] rewrite the
emit calls of the removed output (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3200">#3200</a>)</li>
<li><strong>eslint-plugin-template:</strong> [conditional-complexity]
check control flow (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3260">#3260</a>)</li>
<li><strong>template-parser:</strong> traverse <a
href="https://github.com/defer"><code>@​defer</code></a> hydrate
triggers (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3231">#3231</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Andrew Kazakov <a
href="https://github.com/andreww2012"><code>@​andreww2012</code></a></li>
<li>Daniel Pinto <a
href="https://github.com/Cayan"><code>@​Cayan</code></a></li>
<li>Guillaume DROUARD</li>
<li>Michael Doyle <a
href="https://github.com/MichaelDoyle"><code>@​MichaelDoyle</code></a></li>
<li>Максим Иванов</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular-eslint/angular-eslint/blob/main/packages/schematics/CHANGELOG.md">@​angular-eslint/schematics's
changelog</a>.</em></p>
<blockquote>
<h2>22.6.0 (2026-10-11)</h2>
<p>This was a version bump only for schematics to align it with other
projects, there were no code changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/angular-eslint/angular-eslint/commit/7722ad2ab4da81568f19a7a29a3951fa443bf22c"><code>7722ad2</code></a>
chore(release): publish 22.6.0</li>
<li><a
href="https://github.com/angular-eslint/angular-eslint/commit/6c37ac78baed857b9b3a554121860be612e7488a"><code>6c37ac7</code></a>
chore: update nx monorepo to v23.2.0 (<a
href="https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/schematics/issues/3202">#3202</a>)</li>
<li>See full diff in <a
href="https://github.com/angular-eslint/angular-eslint/commits/v22.6.0/packages/schematics">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/animations` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases">@​angular/animations's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><img
src="https://img.shields.io/badge/fafec77b5d-fix-green" alt="fix -
fafec77b5d" /></a></td>
<td>harden param encoding against prototype pollution</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><img
src="https://img.shields.io/badge/54f3de517c-fix-green" alt="fix -
54f3de517c" /></a></td>
<td>check <code>@boundary</code> blocks in the control flow content
projection diagnostic</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><img
src="https://img.shields.io/badge/5e50658fd2-fix-green" alt="fix -
5e50658fd2" /></a></td>
<td>compare the operand in ReadTemporaryExpr.isEquivalent</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><img
src="https://img.shields.io/badge/b6f9cc5d70-fix-green" alt="fix -
b6f9cc5d70" /></a></td>
<td>do not scope comments placed inside of a selector</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><img
src="https://img.shields.io/badge/35a02f8097-fix-green" alt="fix -
35a02f8097" /></a></td>
<td>harden JIT against prototype pollution</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><img
src="https://img.shields.io/badge/08075e8aa0-fix-green" alt="fix -
08075e8aa0" /></a></td>
<td>support dots in class binding names</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><img
src="https://img.shields.io/badge/c7a72c2bf2-fix-green" alt="fix -
c7a72c2bf2" /></a></td>
<td>support popover property bindings</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fa21d083fe92e67a2a070059b850b9a32a08cef9"><img
src="https://img.shields.io/badge/fa21d083fe-fix-green" alt="fix -
fa21d083fe" /></a></td>
<td>inline tcb when depending on local directive</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b5208f9fc3a77a9631c2f38c30c38c777a642839"><img
src="https://img.shields.io/badge/b5208f9fc3-fix-green" alt="fix -
b5208f9fc3" /></a></td>
<td>avoid deleting idle bucket created during another bucket's
drain</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/90af679c3b585515651b138667b8eaf3df652968"><img
src="https://img.shields.io/badge/90af679c3b-fix-green" alt="fix -
90af679c3b" /></a></td>
<td>do not swallow compilation errors in
computeStandaloneComponentScope</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/eca5fa466508ef68014cbebb0cafd63947f9eda7"><img
src="https://img.shields.io/badge/eca5fa4665-fix-green" alt="fix -
eca5fa4665" /></a></td>
<td>don't crash initEventReplay when two apps share an APP_ID</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/e59a2303dfb4f3242552d382bbeebf6a38446856"><img
src="https://img.shields.io/badge/e59a2303df-fix-green" alt="fix -
e59a2303df" /></a></td>
<td>error when destroying embedded view with animations</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/a23941fe7547634c9f1160541b3a2265e284f624"><img
src="https://img.shields.io/badge/a23941fe75-fix-green" alt="fix -
a23941fe75" /></a></td>
<td>keep activeConsumer and currentInjector constant using Store
helper</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/913ae7421f609c6ad375219045e9ab3f3b0eba73"><img
src="https://img.shields.io/badge/913ae7421f-fix-green" alt="fix -
913ae7421f" /></a></td>
<td>skip nested tick from onMicrotaskEmpty while a tick is running</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><img
src="https://img.shields.io/badge/cc515b8b23-perf-orange" alt="perf -
cc515b8b23" /></a></td>
<td>use addEventListener to avoid unconditional CD scheduling on
blur</td>
</tr>
</tbody>
</table>
<h3>migrations</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/d04f214d04678f0dbb0b769a53d1f15ece09c4a2"><img
src="https://img.shields.io/badge/d04f214d04-fix-green" alt="fix -
d04f214d04" /></a></td>
<td>normalize .d.ts paths in output migration field IDs</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/f9a4f751f0ad0f3f22d49430475d6d57fa29fd3f"><img
src="https://img.shields.io/badge/f9a4f751f0-fix-green" alt="fix -
f9a4f751f0" /></a></td>
<td>check abort signal state on subscribe</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/angular/angular/commits/v22.2.3/packages/animations">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/cdk` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/components/releases">@​angular/cdk's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>material</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/e0c2d4df72a673d6bcab027aa4db78f2f7ec9af1"><img
src="https://img.shields.io/badge/e0c2d4df7-fix-green" alt="fix -
e0c2d4df7" /></a></td>
<td><strong>chips:</strong> implement touch-target pattern/styles on
chip component (<a
href="https://redirect.github.com/angular/components/issues/33614">#33614</a>)</td>
</tr>
</tbody>
</table>
<h3>cdk</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/a307978dc42c034ed8a13a13fce93f6884c69487"><img
src="https://img.shields.io/badge/a307978dc-fix-green" alt="fix -
a307978dc" /></a></td>
<td><strong>a11y:</strong> treat inert elements as non-focusable (<a
href="https://redirect.github.com/angular/components/issues/33846">#33846</a>)</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular/components/blob/main/CHANGELOG.md">@​angular/cdk's
changelog</a>.</em></p>
<blockquote>
<h1>22.2.3 &quot;rhenium-rotor&quot; (2026-10-14)</h1>
<h3>cdk</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/a307978dc42c034ed8a13a13fce93f6884c69487">a307978dc</a></td>
<td>fix</td>
<td><strong>a11y:</strong> treat inert elements as non-focusable (<a
href="https://redirect.github.com/angular/components/pull/33846">#33846</a>)</td>
</tr>
</tbody>
</table>
<h3>material</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/e0c2d4df72a673d6bcab027aa4db78f2f7ec9af1">e0c2d4df7</a></td>
<td>fix</td>
<td><strong>chips:</strong> implement touch-target pattern/styles on
chip component (<a
href="https://redirect.github.com/angular/components/pull/33614">#33614</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>22.3.0-next.1 &quot;calcium-crown&quot; (2026-10-07)</h1>
<h3>cdk</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/cc3829f624b523d05397cf2d66c5e3d054070d0c">cc3829f62</a></td>
<td>fix</td>
<td><strong>drag-drop:</strong> remove old prefixes for fullscreen
elements</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/components/commit/84a2366bb1b0912dcdb6f767c9507a5ee1cc916f">84a2366bb</a></td>
<td>fix</td>
<td><strong>drag-drop:</strong> use consistent touch coordinates for
bounded dragging (<a
href="https://redirect.github.com/angular/components/pull/33928">#33928</a>)</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/components/commit/f6c2a193ec4ad454beeafc74469103fecfc96a12">f6c2a193e</a></td>
<td>fix</td>
<td><strong>overlay:</strong> remove old prefixes for fullscreen
elements</td>
</tr>
</tbody>
</table>
<h3>material</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/cffa9cfea89ec1f1ec32295a5d1670172db4b653">cffa9cfea</a></td>
<td>fix</td>
<td><strong>icon:</strong> do not copy event attributes (<a
href="https://redirect.github.com/angular/components/pull/33929">#33929</a>)</td>
</tr>
</tbody>
</table>
<h3>google-maps</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/52a1ef36c68c763656aeb070bfa9b7fa24905894">52a1ef36c</a></td>
<td>fix</td>
<td>use console.error instead of hard error (<a
href="https://redirect.github.com/angular/components/pull/33917">#33917</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/angular/components/commit/7c47fa5aa85eebeb10d0d28c6c60cc3bf92fd5e4"><code>7c47fa5</code></a>
release: cut the v22.2.3 release</li>
<li><a
href="https://github.com/angular/components/commit/a307978dc42c034ed8a13a13fce93f6884c69487"><code>a307978</code></a>
fix(cdk/a11y): treat inert elements as non-focusable (<a
href="https://redirect.github.com/angular/components/issues/33846">#33846</a>)</li>
<li><a
href="https://github.com/angular/components/commit/01b48b1c9a6785ade74f1d5009afc8ef1f1829f6"><code>01b48b1</code></a>
build: ban new usages of fakeAsync (<a
href="https://redirect.github.com/angular/components/issues/33946">#33946</a>)</li>
<li><a
href="https://github.com/angular/components/commit/e0c2d4df72a673d6bcab027aa4db78f2f7ec9af1"><code>e0c2d4d</code></a>
fix(material/chips): implement touch-target pattern/styles on chip
component ...</li>
<li>See full diff in <a
href="https://github.com/angular/components/compare/v22.2.2...v22.2.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/common` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases">@​angular/common's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><img
src="https://img.shields.io/badge/fafec77b5d-fix-green" alt="fix -
fafec77b5d" /></a></td>
<td>harden param encoding against prototype pollution</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><img
src="https://img.shields.io/badge/54f3de517c-fix-green" alt="fix -
54f3de517c" /></a></td>
<td>check <code>@boundary</code> blocks in the control flow content
projection diagnostic</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><img
src="https://img.shields.io/badge/5e50658fd2-fix-green" alt="fix -
5e50658fd2" /></a></td>
<td>compare the operand in ReadTemporaryExpr.isEquivalent</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><img
src="https://img.shields.io/badge/b6f9cc5d70-fix-green" alt="fix -
b6f9cc5d70" /></a></td>
<td>do not scope comments placed inside of a selector</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><img
src="https://img.shields.io/badge/35a02f8097-fix-green" alt="fix -
35a02f8097" /></a></td>
<td>harden JIT against prototype pollution</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><img
src="https://img.shields.io/badge/08075e8aa0-fix-green" alt="fix -
08075e8aa0" /></a></td>
<td>support dots in class binding names</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><img
src="https://img.shields.io/badge/c7a72c2bf2-fix-green" alt="fix -
c7a72c2bf2" /></a></td>
<td>support popover property bindings</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fa21d083fe92e67a2a070059b850b9a32a08cef9"><img
src="https://img.shields.io/badge/fa21d083fe-fix-green" alt="fix -
fa21d083fe" /></a></td>
<td>inline tcb when depending on local directive</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b5208f9fc3a77a9631c2f38c30c38c777a642839"><img
src="https://img.shields.io/badge/b5208f9fc3-fix-green" alt="fix -
b5208f9fc3" /></a></td>
<td>avoid deleting idle bucket created during another bucket's
drain</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/90af679c3b585515651b138667b8eaf3df652968"><img
src="https://img.shields.io/badge/90af679c3b-fix-green" alt="fix -
90af679c3b" /></a></td>
<td>do not swallow compilation errors in
computeStandaloneComponentScope</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/eca5fa466508ef68014cbebb0cafd63947f9eda7"><img
src="https://img.shields.io/badge/eca5fa4665-fix-green" alt="fix -
eca5fa4665" /></a></td>
<td>don't crash initEventReplay when two apps share an APP_ID</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/e59a2303dfb4f3242552d382bbeebf6a38446856"><img
src="https://img.shields.io/badge/e59a2303df-fix-green" alt="fix -
e59a2303df" /></a></td>
<td>error when destroying embedded view with animations</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/a23941fe7547634c9f1160541b3a2265e284f624"><img
src="https://img.shields.io/badge/a23941fe75-fix-green" alt="fix -
a23941fe75" /></a></td>
<td>keep activeConsumer and currentInjector constant using Store
helper</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/913ae7421f609c6ad375219045e9ab3f3b0eba73"><img
src="https://img.shields.io/badge/913ae7421f-fix-green" alt="fix -
913ae7421f" /></a></td>
<td>skip nested tick from onMicrotaskEmpty while a tick is running</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><img
src="https://img.shields.io/badge/cc515b8b23-perf-orange" alt="perf -
cc515b8b23" /></a></td>
<td>use addEventListener to avoid unconditional CD scheduling on
blur</td>
</tr>
</tbody>
</table>
<h3>migrations</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/d04f214d04678f0dbb0b769a53d1f15ece09c4a2"><img
src="https://img.shields.io/badge/d04f214d04-fix-green" alt="fix -
d04f214d04" /></a></td>
<td>normalize .d.ts paths in output migration field IDs</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/f9a4f751f0ad0f3f22d49430475d6d57fa29fd3f"><img
src="https://img.shields.io/badge/f9a4f751f0-fix-green" alt="fix -
f9a4f751f0" /></a></td>
<td>check abort signal state on subscribe</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/angular/angular/commit/dcb29a9fb03e3b4cd10226571f1bc5043614520a"><code>dcb29a9</code></a>
docs: fix <a href="https://github.com/param"><code>@​param</code></a>
names that don't match their parameters</li>
<li><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><code>fafec77</code></a>
fix(common): harden param encoding against prototype pollution</li>
<li>See full diff in <a
href="https://github.com/angular/angular/commits/v22.2.3/packages/common">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/compiler` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases">@​angular/compiler's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><img
src="https://img.shields.io/badge/fafec77b5d-fix-green" alt="fix -
fafec77b5d" /></a></td>
<td>harden param encoding against prototype pollution</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><img
src="https://img.shields.io/badge/54f3de517c-fix-green" alt="fix -
54f3de517c" /></a></td>
<td>check <code>@boundary</code> blocks in the control flow content
projection diagnostic</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><img
src="https://img.shields.io/badge/5e50658fd2-fix-green" alt="fix -
5e50658fd2" /></a></td>
<td>compare the operand in ReadTemporaryExpr.isEquivalent</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><img
src="https://img.shields.io/badge/b6f9cc5d70-fix-green" alt="fix -
b6f9cc5d70" /></a></td>
<td>do not scope comments placed inside of a selector</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><img
src="https://img.shields.io/badge/35a02f8097-fix-green" alt="fix -
35a02f8097" /></a></td>
<td>harden JIT against prototype pollution</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><img
src="https://img.shields.io/badge/08075e8aa0-fix-green" alt="fix -
08075e8aa0" /></a></td>
<td>support dots in class binding names</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><img
src="https://img.shields.io/badge/c7a72c2bf2-fix-green" alt="fix -
c7a72c2bf2" /></a></td>
<td>support popover property bindings</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fa21d083fe92e67a2a070059b850b9a32a08cef9"><img
src="https://img.shields.io/badge/fa21d083fe-fix-green" alt="fix -
fa21d083fe" /></a></td>
<td>inline tcb when depending on local directive</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b5208f9fc3a77a9631c2f38c30c38c777a642839"><img
src="https://img.shields.io/badge/b5208f9fc3-fix-green" alt="fix -
b5208f9fc3" /></a></td>
<td>avoid deleting idle bucket created during another bucket's
drain</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/90af679c3b585515651b138667b8eaf3df652968"><img
src="https://img.shields.io/badge/90af679c3b-fix-green" alt="fix -
90af679c3b" /></a></td>
<td>do not swallow compilation errors in
computeStandaloneComponentScope</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/eca5fa466508ef68014cbebb0cafd63947f9eda7"><img
src="https://img.shields.io/badge/eca5fa4665-fix-green" alt="fix -
eca5fa4665" /></a></td>
<td>don't crash initEventReplay when two apps share an APP_ID</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/e59a2303dfb4f3242552d382bbeebf6a38446856"><img
src="https://img.shields.io/badge/e59a2303df-fix-green" alt="fix -
e59a2303df" /></a></td>
<td>error when destroying embedded view with animations</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/a23941fe7547634c9f1160541b3a2265e284f624"><img
src="https://img.shields.io/badge/a23941fe75-fix-green" alt="fix -
a23941fe75" /></a></td>
<td>keep activeConsumer and currentInjector constant using Store
helper</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/913ae7421f609c6ad375219045e9ab3f3b0eba73"><img
src="https://img.shields.io/badge/913ae7421f-fix-green" alt="fix -
913ae7421f" /></a></td>
<td>skip nested tick from onMicrotaskEmpty while a tick is running</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><img
src="https://img.shields.io/badge/cc515b8b23-perf-orange" alt="perf -
cc515b8b23" /></a></td>
<td>use addEventListener to avoid unconditional CD scheduling on
blur</td>
</tr>
</tbody>
</table>
<h3>migrations</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/d04f214d04678f0dbb0b769a53d1f15ece09c4a2"><img
src="https://img.shields.io/badge/d04f214d04-fix-green" alt="fix -
d04f214d04" /></a></td>
<td>normalize .d.ts paths in output migration field IDs</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/f9a4f751f0ad0f3f22d49430475d6d57fa29fd3f"><img
src="https://img.shields.io/badge/f9a4f751f0-fix-green" alt="fix -
f9a4f751f0" /></a></td>
<td>check abort signal state on subscribe</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><code>54f3de5</code></a>
fix(compiler): check <code>@boundary</code> blocks in the control flow
content projectio...</li>
<li><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><code>5e50658</code></a>
fix(compiler): compare the operand in
ReadTemporaryExpr.isEquivalent</li>
<li><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><code>35a02f8</code></a>
fix(compiler): harden JIT against prototype pollution</li>
<li><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><code>b6f9cc5</code></a>
fix(compiler): do not scope comments placed inside of a selector</li>
<li><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><code>08075e8</code></a>
fix(compiler): support dots in class binding names</li>
<li><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><code>c7a72c2</code></a>
fix(compiler): support popover property bindings</li>
<li>See full diff in <a
href="https://github.com/angular/angular/commits/v22.2.3/packages/compiler">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/core` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases">@​angular/core's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><img
src="https://img.shields.io/badge/fafec77b5d-fix-green" alt="fix -
fafec77b5d" /></a></td>
<td>harden param encoding against prototype pollution</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><img
src="https://img.shields.io/badge/54f3de517c-fix-green" alt="fix -
54f3de517c" /></a></td>
<td>check <code>@boundary</code> blocks in the control flow content
projection diagnostic</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><img
src="https://img.shields.io/badge/5e50658fd2-fix-green" alt="fix -
5e50658fd2" /></a></td>
<td>compare the operand in ReadTemporaryExpr.isEquivalent</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><img
src="https://img.shields.io/badge/b6f9cc5d70-fix-green" alt="fix -
b6f9cc5d70" /></a></td>
<td>do not scope comments placed inside of a selector</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><img
src="https://img.shields.io/badge/35a02f8097-fix-green" alt="fix -
35a02f8097" /></a></td>
<td>harden JIT against prototype pollution</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><img
src="https://img.shields.io/badge/08075e8aa0-fix-green" alt="fix -
08075e8aa0" /></a></td>
<td>support dots in class binding names</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><img
src="https://img.shields.io/badge/c7a72c2bf2-fix-green" alt="fix -
c7a72c2bf2" /></a></td>
<td>support popover property bindings</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fa21d083fe92e67a2a070059b850b9a32a08cef9"><img
src="https://img.shields.io/badge/fa21d083fe-fix-green" alt="fix -
fa21d083fe" /></a></td>
<td>inline tcb when depending on local directive</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b5208f9fc3a77a9631c2f38c30c38c777a642839"><img
src="https://img.shields.io/badge/b5208f9fc3-fix-green" alt="fix -
b5208f9fc3" /></a></td>
<td>avoid deleting idle bucket created during another bucket's
drain</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/90af679c3b585515651b138667b8eaf3df652968"><img
src="https://img.shields.io/badge/90af679c3b-fix-green" alt="fix -
90af679c3b" /></a></td>
<td>do not swallow compilation errors in
computeStandaloneComponentScope</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/eca5fa466508ef68014cbebb0cafd63947f9eda7"><img
src="https://img.shields.io/badge/eca5fa4665-fix-green" alt="fix -
eca5fa4665" /></a></td>
<td>don't crash initEventReplay when two apps share an APP_ID</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/e59a2303dfb4f3242552d382bbeebf6a38446856"><img
src="https://img.shields.io/badge/e59a2303df-fix-green" alt="fix -
e59a2303df" /></a></td>
<td>error when destroying embedded view with animations</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/a23941fe7547634c9f1160541b3a2265e284f624"><img
src="https://img.shields.io/badge/a23941fe75-fix-green" alt="fix -
a23941fe75" /></a></td>
<td>keep activeConsumer and currentInjector constant using Store
helper</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/913ae7421f609c6ad375219045e9ab3f3b0eba73"><img
src="https://img.shields.io/badge/913ae7421f-fix-green" alt="fix -
913ae7421f" /></a></td>
<td>skip nested tick from onMicrotaskEmpty while a tick is running</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><img
src="https://img.shields.io/badge/cc515b8b23-perf-orange" alt="perf -
cc515b8b23" /></a></td>
<td>use addEventListener to avoid unconditional CD scheduling on
blur</td>
</tr>
</tbody>
</table>
<h3>migrations</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/d04f214d04678f0dbb0b769a53d1f15ece09c4a2"><img
src="https://img.shields.io/badge/d04f214d04-fix-green" alt="fix -
d04f214d04" /></a></td>
<td>normalize .d.ts paths in output migration field IDs</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/f9a4f751f0ad0f3f22d49430475d6d57fa29fd3f"><img
src="https://img.shields.io/badge/f9a4f751f0-fix-green" alt="fix -
f9a4f751f0" /></a></td>
<td>check abort signal state on subscribe</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/angular/angular/commit/90af679c3b585515651b138667b8eaf3df652968"><code>90af679</code></a>
fix(core): do not swallow compilation errors in
computeStandaloneComponentScope</li>
<li><a
href="https://github.com/angular/angular/commit/eca5fa466508ef68014cbebb0cafd63947f9eda7"><code>eca5fa4</code></a>
fix(core): don't crash initEventReplay when two apps share an
APP_ID</li>
<li><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><code>cc515b8</code></a>
perf(forms): use addEventListener to avoid unconditional CD scheduling
on blur</li>
<li><a
href="https://github.com/angular/angular/commit/dcb29a9fb03e3b4cd10226571f1bc5043614520a"><code>dcb29a9</code></a>
docs: fix <a href="https://github.com/param"><code>@​param</code></a>
names that don't match their parameters</li>
<li><a
href="https://github.com/angular/angular/commit/d04f214d04678f0dbb0b769a53d1f15ece09c4a2"><code>d04f214</code></a>
fix(migrations): normalize .d.ts paths in output migration field
IDs</li>
<li><a
href="https://github.com/angular/angular/commit/51ce6e53807da3887a5765d38facdcc2b6183248"><code>51ce6e5</code></a>
docs: use consistent headers in best-practices.md</li>
<li><a
href="https://github.com/angular/angular/commit/e59a2303dfb4f3242552d382bbeebf6a38446856"><code>e59a230</code></a>
fix(core): error when destroying embedded view with animations</li>
<li><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><code>08075e8</code></a>
fix(compiler): support dots in class binding names</li>
<li><a
href="https://github.com/angular/angular/commit/913ae7421f609c6ad375219045e9ab3f3b0eba73"><code>913ae74</code></a>
fix(core): skip nested tick from onMicrotaskEmpty while a tick is
running</li>
<li><a
href="https://github.com/angular/angular/commit/b5208f9fc3a77a9631c2f38c30c38c777a642839"><code>b5208f9</code></a>
fix(core): avoid deleting idle bucket created during another bucket's
drain</li>
<li>Additional commits viewable in <a
href="https://github.com/angular/angular/commits/v22.2.3/packages/core">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/forms` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases">@​angular/forms's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><img
src="https://img.shields.io/badge/fafec77b5d-fix-green" alt="fix -
fafec77b5d" /></a></td>
<td>harden param encoding against prototype pollution</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><img
src="https://img.shields.io/badge/54f3de517c-fix-green" alt="fix -
54f3de517c" /></a></td>
<td>check <code>@boundary</code> blocks in the control flow content
projection diagnostic</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><img
src="https://img.shields.io/badge/5e50658fd2-fix-green" alt="fix -
5e50658fd2" /></a></td>
<td>compare the operand in ReadTemporaryExpr.isEquivalent</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><img
src="https://img.shields.io/badge/b6f9cc5d70-fix-green" alt="fix -
b6f9cc5d70" /></a></td>
<td>do not scope comments placed inside of a selector</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><img
src="https://img.shields.io/badge/35a02f8097-fix-green" alt="fix -
35a02f8097" /></a></td>
<td>harden JIT against prototype pollution</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><img
src="https://img.shields.io/badge/08075e8aa0-fix-green" alt="fix -
08075e8aa0" /></a></td>
<td>support dots in class binding names</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><img
src="https://img.shields.io/badge/c7a72c2bf2-fix-green" alt="fix -
c7a72c2bf2" /></a></td>
<td>support popover property bindings</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fa21d083fe92e67a2a070059b850b9a32a08cef9"><img
src="https://img.shields.io/badge/fa21d083fe-fix-green" alt="fix -
fa21d083fe" /></a></td>
<td>inline tcb when depending on local directive</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b5208f9fc3a77a9631c2f38c30c38c777a642839"><img
src="https://img.shields.io/badge/b5208f9fc3-fix-green" alt="fix -
b5208f9fc3" /></a></td>
<td>avoid deleting idle bucket created during another bucket's
drain</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/90af679c3b585515651b138667b8eaf3df652968"><img
src="https://img.shields.io/badge/90af679c3b-fix-green" alt="fix -
90af679c3b" /></a></td>
<td>do not swallow compilation errors in
computeStandaloneComponentScope</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/eca5fa466508ef68014cbebb0cafd63947f9eda7"><img
src="https://img.shields.io/badge/eca5fa4665-fix-green" alt="fix -
eca5fa4665" /></a></td>
<td>don't crash initEventReplay when two apps share an APP_ID</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/e59a2303dfb4f3242552d382bbeebf6a38446856"><img
src="https://img.shields.io/badge/e59a2303df-fix-green" alt="fix -
e59a2303df" /></a></td>
<td>error when destroying embedded view with animations</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/a23941fe7547634c9f1160541b3a2265e284f624"><img
src="https://img.shields.io/badge/a23941fe75-fix-green" alt="fix -
a23941fe75" /></a></td>
<td>keep activeConsumer and currentInjector constant using Store
helper</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/913ae7421f609c6ad375219045e9ab3f3b0eba73"><img
src="https://img.shields.io/badge/913ae7421f-fix-green" alt="fix -
913ae7421f" /></a></td>
<td>skip nested tick from onMicrotaskEmpty while a tick is running</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><img
src="https://img.shields.io/badge/cc515b8b23-perf-orange" alt="perf -
cc515b8b23" /></a></td>
<td>use addEventListener to avoid unconditional CD scheduling on
blur</td>
</tr>
</tbody>
</table>
<h3>migrations</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/d04f214d04678f0dbb0b769a53d1f15ece09c4a2"><img
src="https://img.shields.io/badge/d04f214d04-fix-green" alt="fix -
d04f214d04" /></a></td>
<td>normalize .d.ts paths in output migration field IDs</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/f9a4f751f0ad0f3f22d49430475d6d57fa29fd3f"><img
src="https://img.shields.io/badge/f9a4f751f0-fix-green" alt="fix -
f9a4f751f0" /></a></td>
<td>check abort signal state on subscribe</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><code>cc515b8</code></a>
perf(forms): use addEventListener to avoid unconditional CD scheduling
on blur</li>
<li><a
href="https://github.com/angular/angular/commit/dcb29a9fb03e3b4cd10226571f1bc5043614520a"><code>dcb29a9</code></a>
docs: fix <a href="https://github.com/param"><code>@​param</code></a>
names that don't match their parameters</li>
<li><a
href="https://github.com/angular/angular/commit/276248ff3d93caa3d170edda90a0b9ee706ad7ad"><code>276248f</code></a>
docs(forms): document that minDate and maxDate expect UTC dates</li>
<li><a
href="https://github.com/angular/angular/commit/26279ed4f1cbacf947c743bebac80398eeef5989"><code>26279ed</code></a>
test(forms): cover the deprecated disabled signatures</li>
<li><a
href="https://github.com/angular/angular/commit/206f541d59446c088c455a56ae129f999d0b1610"><code>206f541</code></a>
docs(forms): use the <code>when</code> option in disabled examples</li>
<li>See full diff in <a
href="https://github.com/angular/angular/commits/v22.2.3/packages/forms">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/material` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/components/releases">@​angular/material's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>material</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/e0c2d4df72a673d6bcab027aa4db78f2f7ec9af1"><img
src="https://img.shields.io/badge/e0c2d4df7-fix-green" alt="fix -
e0c2d4df7" /></a></td>
<td><strong>chips:</strong> implement touch-target pattern/styles on
chip component (<a
href="https://redirect.github.com/angular/components/issues/33614">#33614</a>)</td>
</tr>
</tbody>
</table>
<h3>cdk</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/a307978dc42c034ed8a13a13fce93f6884c69487"><img
src="https://img.shields.io/badge/a307978dc-fix-green" alt="fix -
a307978dc" /></a></td>
<td><strong>a11y:</strong> treat inert elements as non-focusable (<a
href="https://redirect.github.com/angular/components/issues/33846">#33846</a>)</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular/components/blob/main/CHANGELOG.md">@​angular/material's
changelog</a>.</em></p>
<blockquote>
<h1>22.2.3 &quot;rhenium-rotor&quot; (2026-10-14)</h1>
<h3>cdk</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/a307978dc42c034ed8a13a13fce93f6884c69487">a307978dc</a></td>
<td>fix</td>
<td><strong>a11y:</strong> treat inert elements as non-focusable (<a
href="https://redirect.github.com/angular/components/pull/33846">#33846</a>)</td>
</tr>
</tbody>
</table>
<h3>material</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/e0c2d4df72a673d6bcab027aa4db78f2f7ec9af1">e0c2d4df7</a></td>
<td>fix</td>
<td><strong>chips:</strong> implement touch-target pattern/styles on
chip component (<a
href="https://redirect.github.com/angular/components/pull/33614">#33614</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
<h1>22.3.0-next.1 &quot;calcium-crown&quot; (2026-10-07)</h1>
<h3>cdk</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/cc3829f624b523d05397cf2d66c5e3d054070d0c">cc3829f62</a></td>
<td>fix</td>
<td><strong>drag-drop:</strong> remove old prefixes for fullscreen
elements</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/components/commit/84a2366bb1b0912dcdb6f767c9507a5ee1cc916f">84a2366bb</a></td>
<td>fix</td>
<td><strong>drag-drop:</strong> use consistent touch coordinates for
bounded dragging (<a
href="https://redirect.github.com/angular/components/pull/33928">#33928</a>)</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/components/commit/f6c2a193ec4ad454beeafc74469103fecfc96a12">f6c2a193e</a></td>
<td>fix</td>
<td><strong>overlay:</strong> remove old prefixes for fullscreen
elements</td>
</tr>
</tbody>
</table>
<h3>material</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/cffa9cfea89ec1f1ec32295a5d1670172db4b653">cffa9cfea</a></td>
<td>fix</td>
<td><strong>icon:</strong> do not copy event attributes (<a
href="https://redirect.github.com/angular/components/pull/33929">#33929</a>)</td>
</tr>
</tbody>
</table>
<h3>google-maps</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/components/commit/52a1ef36c68c763656aeb070bfa9b7fa24905894">52a1ef36c</a></td>
<td>fix</td>
<td>use console.error instead of hard error (<a
href="https://redirect.github.com/angular/components/pull/33917">#33917</a>)</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
<p><!-- raw HTML omitted --><!-- raw HTML omitted --></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/angular/components/commit/7c47fa5aa85eebeb10d0d28c6c60cc3bf92fd5e4"><code>7c47fa5</code></a>
release: cut the v22.2.3 release</li>
<li><a
href="https://github.com/angular/components/commit/a307978dc42c034ed8a13a13fce93f6884c69487"><code>a307978</code></a>
fix(cdk/a11y): treat inert elements as non-focusable (<a
href="https://redirect.github.com/angular/components/issues/33846">#33846</a>)</li>
<li><a
href="https://github.com/angular/components/commit/01b48b1c9a6785ade74f1d5009afc8ef1f1829f6"><code>01b48b1</code></a>
build: ban new usages of fakeAsync (<a
href="https://redirect.github.com/angular/components/issues/33946">#33946</a>)</li>
<li><a
href="https://github.com/angular/components/commit/e0c2d4df72a673d6bcab027aa4db78f2f7ec9af1"><code>e0c2d4d</code></a>
fix(material/chips): implement touch-target pattern/styles on chip
component ...</li>
<li>See full diff in <a
href="https://github.com/angular/components/compare/v22.2.2...v22.2.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/platform-browser` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases">@​angular/platform-browser's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><img
src="https://img.shields.io/badge/fafec77b5d-fix-green" alt="fix -
fafec77b5d" /></a></td>
<td>harden param encoding against prototype pollution</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><img
src="https://img.shields.io/badge/54f3de517c-fix-green" alt="fix -
54f3de517c" /></a></td>
<td>check <code>@boundary</code> blocks in the control flow content
projection diagnostic</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><img
src="https://img.shields.io/badge/5e50658fd2-fix-green" alt="fix -
5e50658fd2" /></a></td>
<td>compare the operand in ReadTemporaryExpr.isEquivalent</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><img
src="https://img.shields.io/badge/b6f9cc5d70-fix-green" alt="fix -
b6f9cc5d70" /></a></td>
<td>do not scope comments placed inside of a selector</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><img
src="https://img.shields.io/badge/35a02f8097-fix-green" alt="fix -
35a02f8097" /></a></td>
<td>harden JIT against prototype pollution</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><img
src="https://img.shields.io/badge/08075e8aa0-fix-green" alt="fix -
08075e8aa0" /></a></td>
<td>support dots in class binding names</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><img
src="https://img.shields.io/badge/c7a72c2bf2-fix-green" alt="fix -
c7a72c2bf2" /></a></td>
<td>support popover property bindings</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fa21d083fe92e67a2a070059b850b9a32a08cef9"><img
src="https://img.shields.io/badge/fa21d083fe-fix-green" alt="fix -
fa21d083fe" /></a></td>
<td>inline tcb when depending on local directive</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b5208f9fc3a77a9631c2f38c30c38c777a642839"><img
src="https://img.shields.io/badge/b5208f9fc3-fix-green" alt="fix -
b5208f9fc3" /></a></td>
<td>avoid deleting idle bucket created during another bucket's
drain</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/90af679c3b585515651b138667b8eaf3df652968"><img
src="https://img.shields.io/badge/90af679c3b-fix-green" alt="fix -
90af679c3b" /></a></td>
<td>do not swallow compilation errors in
computeStandaloneComponentScope</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/eca5fa466508ef68014cbebb0cafd63947f9eda7"><img
src="https://img.shields.io/badge/eca5fa4665-fix-green" alt="fix -
eca5fa4665" /></a></td>
<td>don't crash initEventReplay when two apps share an APP_ID</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/e59a2303dfb4f3242552d382bbeebf6a38446856"><img
src="https://img.shields.io/badge/e59a2303df-fix-green" alt="fix -
e59a2303df" /></a></td>
<td>error when destroying embedded view with animations</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/a23941fe7547634c9f1160541b3a2265e284f624"><img
src="https://img.shields.io/badge/a23941fe75-fix-green" alt="fix -
a23941fe75" /></a></td>
<td>keep activeConsumer and currentInjector constant using Store
helper</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/913ae7421f609c6ad375219045e9ab3f3b0eba73"><img
src="https://img.shields.io/badge/913ae7421f-fix-green" alt="fix -
913ae7421f" /></a></td>
<td>skip nested tick from onMicrotaskEmpty while a tick is running</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><img
src="https://img.shields.io/badge/cc515b8b23-perf-orange" alt="perf -
cc515b8b23" /></a></td>
<td>use addEventListener to avoid unconditional CD scheduling on
blur</td>
</tr>
</tbody>
</table>
<h3>migrations</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/d04f214d04678f0dbb0b769a53d1f15ece09c4a2"><img
src="https://img.shields.io/badge/d04f214d04-fix-green" alt="fix -
d04f214d04" /></a></td>
<td>normalize .d.ts paths in output migration field IDs</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/f9a4f751f0ad0f3f22d49430475d6d57fa29fd3f"><img
src="https://img.shields.io/badge/f9a4f751f0-fix-green" alt="fix -
f9a4f751f0" /></a></td>
<td>check abort signal state on subscribe</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/angular/angular/commits/v22.2.3/packages/platform-browser">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/platform-browser-dynamic` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases">@​angular/platform-browser-dynamic's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><img
src="https://img.shields.io/badge/fafec77b5d-fix-green" alt="fix -
fafec77b5d" /></a></td>
<td>harden param encoding against prototype pollution</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><img
src="https://img.shields.io/badge/54f3de517c-fix-green" alt="fix -
54f3de517c" /></a></td>
<td>check <code>@boundary</code> blocks in the control flow content
projection diagnostic</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><img
src="https://img.shields.io/badge/5e50658fd2-fix-green" alt="fix -
5e50658fd2" /></a></td>
<td>compare the operand in ReadTemporaryExpr.isEquivalent</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><img
src="https://img.shields.io/badge/b6f9cc5d70-fix-green" alt="fix -
b6f9cc5d70" /></a></td>
<td>do not scope comments placed inside of a selector</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><img
src="https://img.shields.io/badge/35a02f8097-fix-green" alt="fix -
35a02f8097" /></a></td>
<td>harden JIT against prototype pollution</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><img
src="https://img.shields.io/badge/08075e8aa0-fix-green" alt="fix -
08075e8aa0" /></a></td>
<td>support dots in class binding names</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><img
src="https://img.shields.io/badge/c7a72c2bf2-fix-green" alt="fix -
c7a72c2bf2" /></a></td>
<td>support popover property bindings</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fa21d083fe92e67a2a070059b850b9a32a08cef9"><img
src="https://img.shields.io/badge/fa21d083fe-fix-green" alt="fix -
fa21d083fe" /></a></td>
<td>inline tcb when depending on local directive</td>
</tr>
</tbody>
</table>
<h3>core</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b5208f9fc3a77a9631c2f38c30c38c777a642839"><img
src="https://img.shields.io/badge/b5208f9fc3-fix-green" alt="fix -
b5208f9fc3" /></a></td>
<td>avoid deleting idle bucket created during another bucket's
drain</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/90af679c3b585515651b138667b8eaf3df652968"><img
src="https://img.shields.io/badge/90af679c3b-fix-green" alt="fix -
90af679c3b" /></a></td>
<td>do not swallow compilation errors in
computeStandaloneComponentScope</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/eca5fa466508ef68014cbebb0cafd63947f9eda7"><img
src="https://img.shields.io/badge/eca5fa4665-fix-green" alt="fix -
eca5fa4665" /></a></td>
<td>don't crash initEventReplay when two apps share an APP_ID</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/e59a2303dfb4f3242552d382bbeebf6a38446856"><img
src="https://img.shields.io/badge/e59a2303df-fix-green" alt="fix -
e59a2303df" /></a></td>
<td>error when destroying embedded view with animations</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/a23941fe7547634c9f1160541b3a2265e284f624"><img
src="https://img.shields.io/badge/a23941fe75-fix-green" alt="fix -
a23941fe75" /></a></td>
<td>keep activeConsumer and currentInjector constant using Store
helper</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/913ae7421f609c6ad375219045e9ab3f3b0eba73"><img
src="https://img.shields.io/badge/913ae7421f-fix-green" alt="fix -
913ae7421f" /></a></td>
<td>skip nested tick from onMicrotaskEmpty while a tick is running</td>
</tr>
</tbody>
</table>
<h3>forms</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/cc515b8b2331df643e7ff80915efc402bc97d3bb"><img
src="https://img.shields.io/badge/cc515b8b23-perf-orange" alt="perf -
cc515b8b23" /></a></td>
<td>use addEventListener to avoid unconditional CD scheduling on
blur</td>
</tr>
</tbody>
</table>
<h3>migrations</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/d04f214d04678f0dbb0b769a53d1f15ece09c4a2"><img
src="https://img.shields.io/badge/d04f214d04-fix-green" alt="fix -
d04f214d04" /></a></td>
<td>normalize .d.ts paths in output migration field IDs</td>
</tr>
</tbody>
</table>
<h3>router</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/f9a4f751f0ad0f3f22d49430475d6d57fa29fd3f"><img
src="https://img.shields.io/badge/f9a4f751f0-fix-green" alt="fix -
f9a4f751f0" /></a></td>
<td>check abort signal state on subscribe</td>
</tr>
</tbody>
</table>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/angular/angular/commits/v22.2.3/packages/platform-browser-dynamic">compare
view</a></li>
</ul>
</details>
<br />

Updates `@angular/router` from 22.2.2 to 22.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular/angular/releases">@​angular/router's
releases</a>.</em></p>
<blockquote>
<h2>22.2.3</h2>
<h3>common</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/fafec77b5d4e6dfc89aad72db9c132d3dfe46ba6"><img
src="https://img.shields.io/badge/fafec77b5d-fix-green" alt="fix -
fafec77b5d" /></a></td>
<td>harden param encoding against prototype pollution</td>
</tr>
</tbody>
</table>
<h3>compiler</h3>
<table>
<thead>
<tr>
<th>Commit</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a
href="https://github.com/angular/angular/commit/54f3de517c2e4cda264eca5f2d143a1f6967c7a9"><img
src="https://img.shields.io/badge/54f3de517c-fix-green" alt="fix -
54f3de517c" /></a></td>
<td>check <code>@boundary</code> blocks in the control flow content
projection diagnostic</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/5e50658fd23983dd27ef89a67cea26910af6fd79"><img
src="https://img.shields.io/badge/5e50658fd2-fix-green" alt="fix -
5e50658fd2" /></a></td>
<td>compare the operand in ReadTemporaryExpr.isEquivalent</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/b6f9cc5d7013f8f136b38cccfe486264200f04f5"><img
src="https://img.shields.io/badge/b6f9cc5d70-fix-green" alt="fix -
b6f9cc5d70" /></a></td>
<td>do not scope comments placed inside of a selector</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/35a02f8097724f4b6e83e1c9c008da8f1fc7f127"><img
src="https://img.shields.io/badge/35a02f8097-fix-green" alt="fix -
35a02f8097" /></a></td>
<td>harden JIT against prototype pollution</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/08075e8aa03800bc1b8ae793fb3d52761cdd28b6"><img
src="https://img.shields.io/badge/08075e8aa0-fix-green" alt="fix -
08075e8aa0" /></a></td>
<td>support dots in class binding names</td>
</tr>
<tr>
<td><a
href="https://github.com/angular/angular/commit/c7a72c2bf2213d881496e70933fc61bdaaa00621"><img
src="https://img.shields.io/badge/c7a72c2bf2-fix-green" alt="fix -
c7a72c2bf2" /></a></td>
<td>support popover property bindings</td>
</tr>
</tbody>
</table>
<h3>compiler-cli</h3>
<table>
<thead>
<tr>
<th>Commit</th>
…
…1029)

## Summary

With `COLLECTOR_CRON_SCHEDULE` configured, the dashboard's Run
collectors action launches the SMART collector as a scheduler and kills
it after five minutes. Manual and managed SMART invocations now pass
`--cron-schedule=` so they collect once and exit, even when YAML
contains a schedule.

## Type of Change

- [x] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
- [ ] Refactoring (no functional changes)
- [ ] CI/CD or infrastructure change

## Related Issues / Linked Issues

Closes #1014

## Changes Made

- Share one-shot arguments between the backend manual trigger and the
standalone omnibus runner. Only SMART receives the schedule flag; other
collectors retain their existing arguments.
- Apply the explicit override to Docker SMART cron and startup
invocations, including the collector-omnibus startup helper.
- Document manual execution and correct CLI help. Preserve normal
standalone scheduling, API settings, and the backend timeout.
- Repair the dependency audit exposed by this PR: update active Undici
copies to 6.29.1/7.30.1, npm to 11.21.1, and frontend
body-parser/fast-uri patches. The branch includes current develop, whose
Angular CLI 22.2.3 update supplies patched Zod. Replace obsolete
bundled-npm advisory exceptions with the three remaining IDs, retaining
the existing November 1 expiry and bundle-only path restrictions. Add
six policy regression tests to CI.

## Testing / Test plan

- [x] I have tested this locally
- [x] I have added/updated tests that prove my fix/feature works
- [x] All existing tests pass

Passed:
- `go test -race ./collector/cmd/collector-metrics
./collector/pkg/omnibus ./webapp/backend/pkg/web/handler`
- `TMPDIR=/private/tmp go test ./collector/...`
- `go vet ./collector/cmd/collector-metrics ./collector/pkg/omnibus
./webapp/backend/pkg/web/handler`
- `bash docker/tests/collector-startup-gate_test.sh` and `bash
docker/tests/entrypoint-startup-log_test.sh` using Bash 5 locally
- `go mod vendor`, followed by golangci-lint v2.14.0 with `--timeout=5m
--new-from-rev=origin/develop`: 0 issues
- `git diff --cached --check`

Regression tests exercise the actual CLI with environment/YAML schedules
and startup delays, and verify child arguments and retained API settings
through executable fixtures. The full collector suite initially
encountered two unchanged macOS `/var` versus `/private/var` path
assertions; it passed with canonical `TMPDIR=/private/tmp`. The original
collector head passed repository CI apart from the dependency audit. All
29 GitHub checks passed on previous head
`02afd6865b3d3fa9e0f4a459e8dcf816147529ac`, including both npm audit
stages, frontend/backend tests, lint, builds, and security scans.

Dependency repair validation on Node 24.15.0: clean root/frontend
installs, both audit gates, six audit-policy tests, imports of every
configured release plugin, frontend production build, and frontend lint
pass. Frontend audit reports zero vulnerabilities. Root audit retains
two vulnerable packages only inside the unused bundled npm; the gate
permits their three documented advisories until the unchanged November 1
expiry. Build output retains existing template, stylesheet-budget,
CommonJS, and browser-support warnings.

The follow-up at `e7b5234bde80936284c5be07fff188ba86e76885` rejects
empty audit paths for bundled advisory exceptions. Empty-path cases
failed for all three advisory IDs before the fix; all six policy tests
and the live root audit gate pass after the fix. All 29 GitHub checks
passed for this head.

## Checklist

- [x] My code follows the project's code style
- [x] I have performed a self-review of my code
- [x] I have commented my code where necessary (particularly complex
areas)
- [x] I have updated the documentation if needed
- [x] My changes generate no new warnings
- [x] No console.log, debug statements, or commented-out code

## Screenshots (if applicable)

Not applicable. No visual changes.

## Additional Notes

Review: required (user-requested independent review and dependency-audit
policy change). The review at 02afd68 returned FIX_FIRST for empty
audit paths satisfying the bundled-path check. Independent read-only
follow-up review of e7b5234 returned SHIP: the finding is fixed and no
new findings were identified. All 29 checks passed. Merge remains
pending operator authorization.

Target: `develop`. No cross-repository dependency. Updated binaries and
images require deployment before this changes running instances. No
deployment or real-disk acceptance test has been performed. This change
does not import the beta branch's separate collector concurrency
changes.
…nd (#1002)

Bumps [ng-apexcharts](https://github.com/apexcharts/ng-apexcharts) from
3.1.0 to 3.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/apexcharts/ng-apexcharts/releases">ng-apexcharts's
releases</a>.</em></p>
<blockquote>
<h2>v3.2.0</h2>
<h3>Features</h3>
<ul>
<li>the <code>apexcharts</code> peer dependency is now <code>^6.0.0 ||
^7.0.0 || ^8.0.0</code>, so installing ApexCharts 8 next to this package
does not produce a peer conflict once 8 is released</li>
<li><code>ng add ng-apexcharts</code> installs <code>^6.7.0 || ^7.0.0 ||
^8.0.0</code>. npm resolves it to the newest published version that
satisfies, so a fresh project lands on 7.x today and on 8.x once
ApexCharts 8 is released, with no further ng-apexcharts release
needed</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>the published package declares its licence. Its
<code>package.json</code> had no <code>license</code> field, so npm and
licence scanners showed this commercial package as unlicensed. It now
reads <code>SEE LICENSE IN LICENSE.md</code>, and the package ships that
file</li>
<li>the licence text is corrected: the Community threshold counts
revenue, budget, funding or equivalent resources, whichever is highest,
and the file is renamed <code>LICENSE.md</code> so GitHub renders
it</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/apexcharts/ng-apexcharts/blob/master/CHANGELOG.md">ng-apexcharts's
changelog</a>.</em></p>
<blockquote>
<h1><a
href="https://github.com/apexcharts/ng-apexcharts/compare/v3.1.0...v3.2.0">3.2.0</a>
(2026-10-09)</h1>
<h3>Features</h3>
<ul>
<li>the <code>apexcharts</code> peer dependency is now <code>^6.0.0 ||
^7.0.0 || ^8.0.0</code>, so installing ApexCharts 8 next to this package
does not produce a peer conflict once 8 is released</li>
<li><code>ng add ng-apexcharts</code> installs <code>^6.7.0 || ^7.0.0 ||
^8.0.0</code>. npm resolves it to the newest published version that
satisfies, so a fresh project lands on 7.x today and on 8.x once
ApexCharts 8 is released, with no further ng-apexcharts release
needed</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>the published package declares its licence. Its
<code>package.json</code> had no <code>license</code> field, so npm and
licence scanners showed this commercial package as unlicensed. It now
reads <code>SEE LICENSE IN LICENSE.md</code>, and the package ships that
file</li>
<li>the licence text is corrected: the Community threshold counts
revenue, budget, funding or equivalent resources, whichever is highest,
and the file is renamed <code>LICENSE.md</code> so GitHub renders
it</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/97d2b588b3694fc2f644adc088a36370493963f7"><code>97d2b58</code></a>
release: 3.2.0</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/c36ef1f4965853891078bae80ec29aaffc05bcbb"><code>c36ef1f</code></a>
feat: admit apexcharts 8 in the peer range</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/f8034a047ed011be1a7525b1a41c2376a1505135"><code>f8034a0</code></a>
fix(npm): ship LICENSE.md, the file the manifest points at</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/b1a0fe8b11798d58c41d3f0ee9012f0ced08d16b"><code>b1a0fe8</code></a>
fix(licence): thank Community users without calling the product free and
open</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/b1cbb4c3ba7af0c4f347b2a3eaee0760aa18b4f4"><code>b1cbb4c</code></a>
build(deps): bump Angular to 22.2.1 and patch vulnerable transitive deps
(<a
href="https://redirect.github.com/apexcharts/ng-apexcharts/issues/529">#529</a>)</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/d60f9a06530836c44b2067d4d891bc8adb686a37"><code>d60f9a0</code></a>
fix(licence): rename LICENSE to LICENSE.md so GitHub renders it</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/e723c51df66bb97d161d8c36845ead66ede812f6"><code>e723c51</code></a>
fix(npm): the published package declared no licence at all</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/e43636df123005e026f40cf758c920e9f922f914"><code>e43636d</code></a>
fix(licence): the $2M threshold is not a revenue test</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/99105aa7260c44ec84ab6fc195042b8ed4de5d83"><code>99105aa</code></a>
fix(licence): branch the licence on which plan the product needs</li>
<li><a
href="https://github.com/apexcharts/ng-apexcharts/commit/84e92be622e9848ffce2c0e322ccec2422f9b261"><code>84e92be</code></a>
fix(licence): drop the backslash escapes before the dollar amounts</li>
<li>Additional commits viewable in <a
href="https://github.com/apexcharts/ng-apexcharts/compare/v3.1.0...v3.2.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Starosdev <eder@staros.dev>
…1001)

Bumps [apexcharts](https://github.com/apexcharts/apexcharts.js) from
7.6.0 to 8.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/apexcharts/apexcharts.js/releases">apexcharts's
releases</a>.</em></p>
<blockquote>
<h2>💎 Version 8.4.1</h2>
<p>Charts now work inside a shadow root: menus, undo, ink and storyboard
keep working, CSS variable colours set on the host resolve against the
chart, and exports bake them in. Every chart's styles are injected into
its own root and removed when the last chart there is destroyed.</p>
<h2>🐛 Fixes</h2>
<ul>
<li>Bind the hold-to-measure key after the first render.</li>
<li>Keep menus, undo, ink and storyboard working inside a shadow
root.</li>
<li>Resolve CSS variable colours against the chart, and bake them into
exports.</li>
<li>Close the export menu on outside presses, resolve treemap scale
vars.</li>
</ul>
<p>Upgrading is <code>npm install apexcharts@8.4.1</code>.</p>
<p>Full changelog, with the detail behind each change: <a
href="https://github.com/apexcharts/apexcharts.js/compare/v8.4.0...v8.4.1">https://github.com/apexcharts/apexcharts.js/compare/v8.4.0...v8.4.1</a></p>
<h2>💎 Version 8.4.0</h2>
<p>A security fix: a series name, category or goal name containing HTML
could run script in the legend or tooltip, also in server-rendered HTML.
Data you pass in now shows as text there; HTML a formatter returns still
renders. Upgrade if those labels come from user data.</p>
<p>Also less work per render for bars, timelines and treemaps,
tooltip.custom on sunburst, icicle and treemap branches, and these
changes you may notice:</p>
<table>
<thead>
<tr>
<th>Change</th>
<th>What to check</th>
</tr>
</thead>
<tbody>
<tr>
<td>Names and labels show HTML as text</td>
<td>markup in names</td>
</tr>
<tr>
<td>tooltip.custom runs on treemap branches</td>
<td>custom reading points</td>
</tr>
<tr>
<td>Trellis honours chart.zoom.enabled false</td>
<td>grids that set it</td>
</tr>
<tr>
<td>Sunburst, icicle honour dataLabels.enabled</td>
<td>dataLabels.enabled</td>
</tr>
<tr>
<td>Sunburst crumb uses drilldown.breadcrumb</td>
<td>breadcrumb options</td>
</tr>
</tbody>
</table>
<h2>🐛 Fixes</h2>
<ul>
<li>Project stream-scroll pathFrom from the joined path (<a
href="https://redirect.github.com/apexcharts/apexcharts.js/issues/5316">#5316</a>).
Thanks <a
href="https://github.com/SahinurDEV"><code>@​SahinurDEV</code></a>.</li>
<li>Do not expand zero stacked columns by series stroke width (<a
href="https://redirect.github.com/apexcharts/apexcharts.js/issues/5046">#5046</a>).
Thanks <a
href="https://github.com/SahinurDEV"><code>@​SahinurDEV</code></a>.</li>
<li>Draw series added to a shared logarithmic axis. Thanks <a
href="https://github.com/Arthur031221"><code>@​Arthur031221</code></a>.</li>
<li>Read dates past year 9999 as utc, not local time.</li>
<li>Fire legendHover once per item, not on every mouse move.</li>
<li>Keep reordered series on a shared logarithmic axis (<a
href="https://redirect.github.com/apexcharts/apexcharts.js/issues/5353">#5353</a>).</li>
<li>Ease an axis border from its own extent.</li>
<li>Draw server renders the way the browser draws them.</li>
<li>Return to a level as it is now, its overrides undone.</li>
<li>Honour enabled toggles and settle async levels safely.</li>
<li>Hand back the raw series when an alias type is switched off.</li>
<li>Grid tooltip reads numeric x and horizontal bars right.</li>
<li>Push one panel data patch from render and updateSeries.</li>
<li>Keep legend, zoom and tool state in step across rebuilds.</li>
<li>Respect zoom.enabled false; edge labels read effective y.</li>
<li>Sort dates, leave combo series alone.</li>
<li>Restored zoom focus keeps its ancestors.</li>
<li>Gradient legend spans explicit colour stops.</li>
<li>Keep line forecasts and gradient area strokes on SVG.</li>
<li>Paint primitive styling and custom series identity.</li>
<li>Divide 100% stacked parts by their own stack's total.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/0cda9fbcda66de67a584d06324b66ef5ae7469aa"><code>0cda9fb</code></a>
release: 8.4.1</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/ecbbfb2ec5cb943704f90874f48ba397ca864e01"><code>ecbbfb2</code></a>
chore: bump version to 8.4.1</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/3753022c39c4ea9ff363bed3328458ce1c77f93d"><code>3753022</code></a>
chore(build): raise the default budget for the export menu and treemap
fixes</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/9a2f64273973531dea3f20a0d7bae24b8fe062a8"><code>9a2f642</code></a>
fix: close the export menu on outside presses, resolve treemap scale
vars</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/e650bc10c2b18f7c49b30e642f32bd610aee5763"><code>e650bc1</code></a>
chore(build): raise the default and full budgets for the shadow DOM
fixes</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/c8860a0b1348ad235ec4cb61bba8242f642efb23"><code>c8860a0</code></a>
fix: resolve CSS variable colours against the chart, and bake them into
exports</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/d2f99dec9907d8c42c8933dba63280846660c607"><code>d2f99de</code></a>
fix: keep menus, undo, ink and storyboard working inside a shadow
root</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/0520bddcde160def5bed36d4a065b6371a9deabe"><code>0520bdd</code></a>
fix(measure): bind the hold-to-measure key after the first render</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/a52936ef27dfa041af222a8f6533dd17c7623e11"><code>a52936e</code></a>
build(deps): bump apex-commons to 0.8.3 for the shadow DOM helpers</li>
<li><a
href="https://github.com/apexcharts/apexcharts.js/commit/3017de3d0e1695045ea672e4c4eb3ef86055f2fd"><code>3017de3</code></a>
release: 8.4.0</li>
<li>Additional commits viewable in <a
href="https://github.com/apexcharts/apexcharts.js/compare/v7.6.0...v8.4.1">compare
view</a></li>
</ul>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Starosdev <eder@staros.dev>
…8 updates (#1030)

Bumps the dev-dependencies group with 8 updates in the /webapp/frontend
directory:

| Package | From | To |
| --- | --- | --- |
|
[@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash)
| `4.17.26` | `4.17.27` |
|
[@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)
| `8.71.1` | `8.72.0` |
|
[@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)
| `8.71.1` | `8.72.0` |
|
[angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint)
| `22.5.0` | `22.6.0` |
|
[eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier)
| `5.5.6` | `5.5.7` |
| [ngx-markdown](https://github.com/jfcere/ngx-markdown) | `22.1.0` |
`22.1.1` |
| [prettier](https://github.com/prettier/prettier) | `3.9.9` | `3.9.10`
|
|
[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)
| `8.71.1` | `8.72.0` |


Updates `@types/lodash` from 4.17.26 to 4.17.27
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/eslint-plugin` from 8.71.1 to 8.72.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/eslint-plugin's
releases</a>.</em></p>
<blockquote>
<h2>v8.72.0</h2>
<h2>8.72.0 (2026-10-19)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> lazy load rules (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13010">#13010</a>)</li>
<li><strong>eslint-plugin:</strong> [await-thenable] add
<code>allowMixedPromiseArrays</code> option (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12992">#12992</a>)</li>
<li><strong>typescript-estree:</strong> error on abstract keyword that
precedes export (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13019">#13019</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>ast-spec:</strong> add <code>JSXFragment</code> to
<code>JSXAttribute['value']</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13051">#13051</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-readonly-parameter-types]
check where allowed type aliases are declared (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13016">#13016</a>)</li>
<li><strong>eslint-plugin:</strong> [no-deprecated] report deprecated
properties in object literals (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12704">#12704</a>)</li>
<li><strong>eslint-plugin:</strong> use isTypeLiteralType instead of
type.isLiteral() to include bigint literals on TS &lt; 5.0 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13053">#13053</a>)</li>
<li><strong>eslint-plugin:</strong> [require-array-sort-compare] check
tuples (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13058">#13058</a>)</li>
<li><strong>eslint-plugin:</strong> [require-array-sort-compare] ignore
extra this type argument on TS &lt; 5.1 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13055">#13055</a>)</li>
<li><strong>type-utils:</strong> discriminateAnyType crashes when
calling getAwaitedType on awaited type in TS &lt; 5.0 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13054">#13054</a>)</li>
<li><strong>typescript-estree:</strong> include leading and trailing
comments &amp; whitespace in Program range (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12991">#12991</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Junichiro Kasuya <a
href="https://github.com/jksy"><code>@​jksy</code></a></li>
<li>Mitch Fultz <a
href="https://github.com/fitchmultz"><code>@​fitchmultz</code></a></li>
<li>Shaan GS <a
href="https://github.com/ShaanGS"><code>@​ShaanGS</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.71.2</h2>
<h2>8.71.2 (2026-10-12)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-unused-vars] avoid
false-positives when not using our parser (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12989">#12989</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
count instantiated mapped type templates (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12974">#12974</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unused-vars] ignore type-only
refs for after-used (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12977">#12977</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
parenthesize constraint in optional tuple elements (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12995">#12995</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-optional-chain] safe fix
when the chain ends with a strict null comparison (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12805">#12805</a>)</li>
<li><strong>type-utils:</strong> match linked packages and packages with
missing version in <code>TypeOrValueSpecifier</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12948">#12948</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Abraham Guo</li>
<li>Brad Zacher <a
href="https://github.com/bradzacher"><code>@​bradzacher</code></a></li>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Josh Goldberg</li>
<li>Vinccool96</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md">@​typescript-eslint/eslint-plugin's
changelog</a>.</em></p>
<blockquote>
<h2>8.72.0 (2026-10-19)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [await-thenable] add
<code>allowMixedPromiseArrays</code> option (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12992">#12992</a>)</li>
<li><strong>eslint-plugin:</strong> lazy load rules (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13010">#13010</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>type-utils:</strong> discriminateAnyType crashes when
calling getAwaitedType on awaited type in TS &lt; 5.0 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13054">#13054</a>)</li>
<li><strong>eslint-plugin:</strong> [require-array-sort-compare] ignore
extra this type argument on TS &lt; 5.1 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13055">#13055</a>)</li>
<li><strong>eslint-plugin:</strong> [require-array-sort-compare] check
tuples (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13058">#13058</a>)</li>
<li><strong>eslint-plugin:</strong> use isTypeLiteralType instead of
type.isLiteral() to include bigint literals on TS &lt; 5.0 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13053">#13053</a>)</li>
<li><strong>eslint-plugin:</strong> [no-deprecated] report deprecated
properties in object literals (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12704">#12704</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-readonly-parameter-types]
check where allowed type aliases are declared (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13016">#13016</a>)</li>
<li><strong>typescript-estree:</strong> include leading and trailing
comments &amp; whitespace in Program range (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12991">#12991</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Junichiro Kasuya <a
href="https://github.com/jksy"><code>@​jksy</code></a></li>
<li>Mitch Fultz <a
href="https://github.com/fitchmultz"><code>@​fitchmultz</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.71.2 (2026-10-12)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [prefer-optional-chain] safe fix
when the chain ends with a strict null comparison (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12805">#12805</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
parenthesize constraint in optional tuple elements (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12995">#12995</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unused-vars] ignore type-only
refs for after-used (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12977">#12977</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
count instantiated mapped type templates (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12974">#12974</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unused-vars] avoid
false-positives when not using our parser (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12989">#12989</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Abraham Guo</li>
<li>Brad Zacher <a
href="https://github.com/bradzacher"><code>@​bradzacher</code></a></li>
<li>Josh Goldberg</li>
<li>Vinccool96</li>
<li>Younsang Na <a
href="https://github.com/nayounsang"><code>@​nayounsang</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.2">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/a4c2603d3e4fd43b33bc25b82457716e9f7cef71"><code>a4c2603</code></a>
chore(release): publish 8.72.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/c6eb98c17cbeee540d3c48d1406098430b2f0660"><code>c6eb98c</code></a>
feat(eslint-plugin): [await-thenable] add
<code>allowMixedPromiseArrays</code> option (#...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/b382b74579e5514c247ed54d0dfc428f3a173f3a"><code>b382b74</code></a>
fix(type-utils): discriminateAnyType crashes when calling getAwaitedType
on a...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/79edd896790b031457fc0ca6f81c732b29921c9d"><code>79edd89</code></a>
fix(eslint-plugin): [require-array-sort-compare] ignore extra this type
argum...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/e7d57dd6ea0945ae71ba9f68d04270caecda1735"><code>e7d57dd</code></a>
fix(eslint-plugin): [require-array-sort-compare] check tuples (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/13058">#13058</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/2d107aef73ec9a36a6b4da501ab3fb97dca1d4c0"><code>2d107ae</code></a>
fix(eslint-plugin): use isTypeLiteralType instead of type.isLiteral() to
incl...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/e4695b39dbf2427afe14531095c6221c340ee3f1"><code>e4695b3</code></a>
feat(eslint-plugin): lazy load rules (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/13010">#13010</a>)</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/a1a912bffce02a96f8661806d92202f867f9c6ce"><code>a1a912b</code></a>
fix(eslint-plugin): [no-deprecated] report deprecated properties in
object li...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/1edc975742ca23390a4daf3a1d0193feafe92818"><code>1edc975</code></a>
fix(eslint-plugin): [prefer-readonly-parameter-types] check where
allowed typ...</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/61cb7009708e90add897ca53c58666a19e615606"><code>61cb700</code></a>
chore: fix all
<code>eslint-plugin-internal/no-multiple-lines-of-errors</code> (<a
href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12893">#12893</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.72.0/packages/eslint-plugin">compare
view</a></li>
</ul>
</details>
<br />

Updates `@typescript-eslint/parser` from 8.71.1 to 8.72.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">@​typescript-eslint/parser's
releases</a>.</em></p>
<blockquote>
<h2>v8.72.0</h2>
<h2>8.72.0 (2026-10-19)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> lazy load rules (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13010">#13010</a>)</li>
<li><strong>eslint-plugin:</strong> [await-thenable] add
<code>allowMixedPromiseArrays</code> option (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12992">#12992</a>)</li>
<li><strong>typescript-estree:</strong> error on abstract keyword that
precedes export (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13019">#13019</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>ast-spec:</strong> add <code>JSXFragment</code> to
<code>JSXAttribute['value']</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13051">#13051</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-readonly-parameter-types]
check where allowed type aliases are declared (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13016">#13016</a>)</li>
<li><strong>eslint-plugin:</strong> [no-deprecated] report deprecated
properties in object literals (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12704">#12704</a>)</li>
<li><strong>eslint-plugin:</strong> use isTypeLiteralType instead of
type.isLiteral() to include bigint literals on TS &lt; 5.0 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13053">#13053</a>)</li>
<li><strong>eslint-plugin:</strong> [require-array-sort-compare] check
tuples (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13058">#13058</a>)</li>
<li><strong>eslint-plugin:</strong> [require-array-sort-compare] ignore
extra this type argument on TS &lt; 5.1 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13055">#13055</a>)</li>
<li><strong>type-utils:</strong> discriminateAnyType crashes when
calling getAwaitedType on awaited type in TS &lt; 5.0 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13054">#13054</a>)</li>
<li><strong>typescript-estree:</strong> include leading and trailing
comments &amp; whitespace in Program range (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12991">#12991</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Junichiro Kasuya <a
href="https://github.com/jksy"><code>@​jksy</code></a></li>
<li>Mitch Fultz <a
href="https://github.com/fitchmultz"><code>@​fitchmultz</code></a></li>
<li>Shaan GS <a
href="https://github.com/ShaanGS"><code>@​ShaanGS</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.71.2</h2>
<h2>8.71.2 (2026-10-12)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-unused-vars] avoid
false-positives when not using our parser (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12989">#12989</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
count instantiated mapped type templates (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12974">#12974</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unused-vars] ignore type-only
refs for after-used (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12977">#12977</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
parenthesize constraint in optional tuple elements (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12995">#12995</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-optional-chain] safe fix
when the chain ends with a strict null comparison (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12805">#12805</a>)</li>
<li><strong>type-utils:</strong> match linked packages and packages with
missing version in <code>TypeOrValueSpecifier</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12948">#12948</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Abraham Guo</li>
<li>Brad Zacher <a
href="https://github.com/bradzacher"><code>@​bradzacher</code></a></li>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Josh Goldberg</li>
<li>Vinccool96</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md">@​typescript-eslint/parser's
changelog</a>.</em></p>
<blockquote>
<h2>8.72.0 (2026-10-19)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.71.2 (2026-10-12)</h2>
<p>This was a version bump only for parser to align it with other
projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.2">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/a4c2603d3e4fd43b33bc25b82457716e9f7cef71"><code>a4c2603</code></a>
chore(release): publish 8.72.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/7488d681f6e0e96c2aaa1eee9c3d1b9b1ef077cb"><code>7488d68</code></a>
chore(release): publish 8.71.2</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.72.0/packages/parser">compare
view</a></li>
</ul>
</details>
<br />

Updates `angular-eslint` from 22.5.0 to 22.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/angular-eslint/angular-eslint/releases">angular-eslint's
releases</a>.</em></p>
<blockquote>
<h2>v22.6.0</h2>
<h2>22.6.0 (2026-10-11)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> [prefer-standalone] add
allowExplicitStandalone option (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3237">#3237</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li>update dependency <code>@​angular/compiler</code> to v22.1.5 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3205">#3205</a>)</li>
<li>update dependency <code>@​angular/compiler</code> to v22.1.6 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3217">#3217</a>)</li>
<li>update dependency eslint to v10.10.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3209">#3209</a>)</li>
<li>update typescript-eslint packages to v8.70.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3212">#3212</a>)</li>
<li>update dependency <code>@​angular/compiler</code> to v22.1.7 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3230">#3230</a>)</li>
<li>update dependency eslint to v10.11.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3233">#3233</a>)</li>
<li>update typescript-eslint packages to v8.70.1 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3244">#3244</a>)</li>
<li>update dependency <code>@​angular/compiler</code> to v22.2.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3247">#3247</a>)</li>
<li>update typescript-eslint packages to v8.71.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3258">#3258</a>)</li>
<li>update dependency <code>@​angular/compiler</code> to v22.2.1 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3264">#3264</a>)</li>
<li>update dependency eslint to v10.12.0 (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3274">#3274</a>)</li>
<li><strong>eslint-plugin:</strong> [reactive-context-must-read-signal]
ignore inherited primitive names (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3201">#3201</a>)</li>
<li><strong>eslint-plugin:</strong> ensure <code>prefix</code> rule
option schema is fully typed (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3246">#3246</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-signal-model] rewrite the
emit calls of the removed output (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3200">#3200</a>)</li>
<li><strong>eslint-plugin-template:</strong> [conditional-complexity]
check control flow (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3260">#3260</a>)</li>
<li><strong>template-parser:</strong> traverse <a
href="https://github.com/defer"><code>@​defer</code></a> hydrate
triggers (<a
href="https://redirect.github.com/angular-eslint/angular-eslint/pull/3231">#3231</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Andrew Kazakov <a
href="https://github.com/andreww2012"><code>@​andreww2012</code></a></li>
<li>Daniel Pinto <a
href="https://github.com/Cayan"><code>@​Cayan</code></a></li>
<li>Guillaume DROUARD</li>
<li>Michael Doyle <a
href="https://github.com/MichaelDoyle"><code>@​MichaelDoyle</code></a></li>
<li>Максим Иванов</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/CHANGELOG.md">angular-eslint's
changelog</a>.</em></p>
<blockquote>
<h2>22.6.0 (2026-10-11)</h2>
<p>This was a version bump only for angular-eslint to align it with
other projects, there were no code changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/angular-eslint/angular-eslint/commit/7722ad2ab4da81568f19a7a29a3951fa443bf22c"><code>7722ad2</code></a>
chore(release): publish 22.6.0</li>
<li>See full diff in <a
href="https://github.com/angular-eslint/angular-eslint/commits/v22.6.0/packages/angular-eslint">compare
view</a></li>
</ul>
</details>
<br />

Updates `eslint-plugin-prettier` from 5.5.6 to 5.5.7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/eslint-plugin-prettier/releases">eslint-plugin-prettier's
releases</a>.</em></p>
<blockquote>
<h2>v5.5.7</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/pull/796">#796</a>
<a
href="https://github.com/prettier/eslint-plugin-prettier/commit/7e53ecd882fe6f0f74150cb0a539776b64182b3e"><code>7e53ecd</code></a>
Thanks <a
href="https://github.com/OskarEichler"><code>@​OskarEichler</code></a>!
- Fix fallback diagnostic locations for all supported line endings.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/pull/805">#805</a>
<a
href="https://github.com/prettier/eslint-plugin-prettier/commit/1b7c43322ce0eb3ee7495d91481613d39d97af52"><code>1b7c433</code></a>
Thanks <a href="https://github.com/JounQin"><code>@​JounQin</code></a>!
- Report a clear error when the sync worker fails to load, so a missing
<code>prettier</code> dependency now fails fast with <code>Cannot find
package 'prettier'</code> instead of hanging ESLint indefinitely.</p>
</li>
</ul>
<h3>New Contributors</h3>
<ul>
<li><a
href="https://github.com/truongbo17"><code>@​truongbo17</code></a> made
their first contribution in <a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/pull/798">prettier/eslint-plugin-prettier#798</a></li>
<li><a
href="https://github.com/OskarEichler"><code>@​OskarEichler</code></a>
made their first contribution in <a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/pull/796">prettier/eslint-plugin-prettier#796</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.6...v5.5.7">https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.6...v5.5.7</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md">eslint-plugin-prettier's
changelog</a>.</em></p>
<blockquote>
<h2>5.5.7</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/pull/796">#796</a>
<a
href="https://github.com/prettier/eslint-plugin-prettier/commit/7e53ecd882fe6f0f74150cb0a539776b64182b3e"><code>7e53ecd</code></a>
Thanks <a
href="https://github.com/OskarEichler"><code>@​OskarEichler</code></a>!
- Fix fallback diagnostic locations for all supported line endings.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/pull/805">#805</a>
<a
href="https://github.com/prettier/eslint-plugin-prettier/commit/1b7c43322ce0eb3ee7495d91481613d39d97af52"><code>1b7c433</code></a>
Thanks <a href="https://github.com/JounQin"><code>@​JounQin</code></a>!
- Report a clear error when the sync worker fails to load, so a missing
<code>prettier</code> dependency now fails fast with <code>Cannot find
package 'prettier'</code> instead of hanging ESLint indefinitely.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/e6dd27a4e4015748b2e87c646be2c1a530789343"><code>e6dd27a</code></a>
chore: keep packageManager when cleaning package.json for release (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/808">#808</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/7544956b642d4e653c235d178432e4d60a312b6b"><code>7544956</code></a>
chore: release eslint-plugin-prettier (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/799">#799</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/e3e52386bd8ab1604d4d41ecd961de5e6749eed8"><code>e3e5238</code></a>
ci: enable npm publish provenance for changesets v3 (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/807">#807</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/7c923c41069c939d6c6c8b7cfcad8f6a266f5276"><code>7c923c4</code></a>
build(deps): Bump http-cache-semantics from 4.2.0 to 4.3.0 (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/806">#806</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/1b7c43322ce0eb3ee7495d91481613d39d97af52"><code>1b7c433</code></a>
fix: bump synckit to surface worker failures instead of hanging (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/805">#805</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/a6b3feb3ce5d0bf785ddf4a83d24cf6a5c4bb902"><code>a6b3feb</code></a>
docs: explain line endings and <code>endOfLine</code> behavior (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/804">#804</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/2f6ba1dca350a40857884103a7bf0e74b64901f7"><code>2f6ba1d</code></a>
ci: exercise the getLocFromIndex ponyfill on ESLint 9 (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/803">#803</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/cf1d2c5cffb7520d28fe680603cc4906ada0816f"><code>cf1d2c5</code></a>
chore(deps): update (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/802">#802</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/9f14a554f9737b1b985e2b26501d3bb2defac920"><code>9f14a55</code></a>
chore(deps): update all dependencies (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/788">#788</a>)</li>
<li><a
href="https://github.com/prettier/eslint-plugin-prettier/commit/7e53ecd882fe6f0f74150cb0a539776b64182b3e"><code>7e53ecd</code></a>
fix: map fallback source locations to actual line starts (<a
href="https://redirect.github.com/prettier/eslint-plugin-prettier/issues/796">#796</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.6...v5.5.7">compare
view</a></li>
</ul>
</details>
<br />

Updates `ngx-markdown` from 22.1.0 to 22.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jfcere/ngx-markdown/releases">ngx-markdown's
releases</a>.</em></p>
<blockquote>
<h2>v22.1.1</h2>
<h2>Security fixes</h2>
<ul>
<li>build(deps): bump fast-uri from 3.1.6 to 3.1.8 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/jfcere/ngx-markdown/pull/695">jfcere/ngx-markdown#695</a></li>
<li>build(deps): bump ip-address from 10.7.0 to 10.7.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/jfcere/ngx-markdown/pull/696">jfcere/ngx-markdown#696</a></li>
<li>build(deps-dev): bump brace-expansion from 1.1.18 to 1.1.21 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/jfcere/ngx-markdown/pull/697">jfcere/ngx-markdown#697</a></li>
<li>build(deps): bump dompurify from 3.4.14 to 3.4.16 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/jfcere/ngx-markdown/pull/698">jfcere/ngx-markdown#698</a></li>
<li>build(deps): bump hono from 4.13.5 to 4.13.13 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/jfcere/ngx-markdown/pull/700">jfcere/ngx-markdown#700</a></li>
<li>build(deps): bump proxy-addr from 2.0.7 to 2.0.8 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/jfcere/ngx-markdown/pull/704">jfcere/ngx-markdown#704</a></li>
<li>build(deps): bump source-map-js from 1.2.1 to 1.2.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/jfcere/ngx-markdown/pull/706">jfcere/ngx-markdown#706</a></li>
<li>build(deps): support KaTeX 0.18 in the library by <a
href="https://github.com/jfcere"><code>@​jfcere</code></a> in <a
href="https://redirect.github.com/jfcere/ngx-markdown/pull/708">jfcere/ngx-markdown#708</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jfcere/ngx-markdown/compare/v22.1.0...v22.1.1">https://github.com/jfcere/ngx-markdown/compare/v22.1.0...v22.1.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/fa3fedee0f44dc7284702e96bfd2d8a31ee11c90"><code>fa3fede</code></a>
22.1.1</li>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/07045853ea4cb9655eb1a9aee2b7bcafa60528a6"><code>0704585</code></a>
build(deps): support KaTeX 0.18 in the library (<a
href="https://redirect.github.com/jfcere/ngx-markdown/issues/708">#708</a>)</li>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/8557332b7410d0539c3d5ebee1f8c7ade58e89c9"><code>8557332</code></a>
build(deps): bump source-map-js from 1.2.1 to 1.2.2 (<a
href="https://redirect.github.com/jfcere/ngx-markdown/issues/706">#706</a>)</li>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/52e196ea557a9f4c91ad4df55856782741507f29"><code>52e196e</code></a>
build(deps): bump proxy-addr from 2.0.7 to 2.0.8 (<a
href="https://redirect.github.com/jfcere/ngx-markdown/issues/704">#704</a>)</li>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/3f44676ffd0b497900b47f889d58e76f39684091"><code>3f44676</code></a>
build(deps): bump hono from 4.13.5 to 4.13.13 (<a
href="https://redirect.github.com/jfcere/ngx-markdown/issues/700">#700</a>)</li>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/fe53b1fc9b3c6cbc959c6736043134c3245d4b7c"><code>fe53b1f</code></a>
build(deps): bump dompurify from 3.4.14 to 3.4.16 (<a
href="https://redirect.github.com/jfcere/ngx-markdown/issues/698">#698</a>)</li>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/638380492954c1f8cf20785aa696dd230b58c107"><code>6383804</code></a>
build(deps-dev): bump brace-expansion from 1.1.18 to 1.1.21 (<a
href="https://redirect.github.com/jfcere/ngx-markdown/issues/697">#697</a>)</li>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/d0708657315031a95e98a8416ee2dc5fb05272be"><code>d070865</code></a>
build(deps): bump ip-address from 10.7.0 to 10.7.2 (<a
href="https://redirect.github.com/jfcere/ngx-markdown/issues/696">#696</a>)</li>
<li><a
href="https://github.com/jfcere/ngx-markdown/commit/60e268a2099a858c5354f1fea768b87db0563fec"><code>60e268a</code></a>
build(deps): bump fast-uri from 3.1.6 to 3.1.8 (<a
href="https://redirect.github.com/jfcere/ngx-markdown/issues/695">#695</a>)</li>
<li>See full diff in <a
href="https://github.com/jfcere/ngx-markdown/compare/v22.1.0...v22.1.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `prettier` from 3.9.9 to 3.9.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>3.9.10</h2>
<ul>
<li>Markdown: Update <code>micromark-extension-gfm-table</code> to fix
the table parse issue on performance (<a
href="https://redirect.github.com/prettier/prettier/pull/20266">#20266</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</li>
</ul>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/3.9.10/CHANGELOG.md#3910">Changelog</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>3.9.10</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.9.9...3.9.10">diff</a></p>
<h4>Markdown: Update <code>micromark-extension-gfm-table</code> to fix
the table parse issue on performance (<a
href="https://redirect.github.com/prettier/prettier/pull/20266">#20266</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<p>See <a
href="https://github.com/micromark/micromark-extension-gfm-table/commit/4f43ead37b786bc531d924530d4ab4c714886267">https://github.com/micromark/micromark-extension-gfm-table/commit/4f43ead37b786bc531d924530d4ab4c714886267</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/prettier/prettier/commit/1172b82c295c4f889fd787dc6c78c3e194ebf353"><code>1172b82</code></a>
Release 3.9.10</li>
<li><a
href="https://github.com/prettier/prettier/commit/d0142273aff2c76f8a69785d42ee2cedc4b0aaa3"><code>d014227</code></a>
Update <code>micromark-extension-gfm-table</code> to fix the table parse
issue on perfor...</li>
<li><a
href="https://github.com/prettier/prettier/commit/953b9084329dcd06ed1072a04b333f1e6e9371e8"><code>953b908</code></a>
Bump Prettier dependency to 3.9.9</li>
<li><a
href="https://github.com/prettier/prettier/commit/ad8a6bf4fa23c42fd114683fec43b28a11bd24af"><code>ad8a6bf</code></a>
Clean changelog_unreleased</li>
<li>See full diff in <a
href="https://github.com/prettier/prettier/compare/3.9.9...3.9.10">compare
view</a></li>
</ul>
</details>
<br />

Updates `typescript-eslint` from 8.71.1 to 8.72.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">typescript-eslint's
releases</a>.</em></p>
<blockquote>
<h2>v8.72.0</h2>
<h2>8.72.0 (2026-10-19)</h2>
<h3>🚀 Features</h3>
<ul>
<li><strong>eslint-plugin:</strong> lazy load rules (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13010">#13010</a>)</li>
<li><strong>eslint-plugin:</strong> [await-thenable] add
<code>allowMixedPromiseArrays</code> option (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12992">#12992</a>)</li>
<li><strong>typescript-estree:</strong> error on abstract keyword that
precedes export (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13019">#13019</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>ast-spec:</strong> add <code>JSXFragment</code> to
<code>JSXAttribute['value']</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13051">#13051</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-readonly-parameter-types]
check where allowed type aliases are declared (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13016">#13016</a>)</li>
<li><strong>eslint-plugin:</strong> [no-deprecated] report deprecated
properties in object literals (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12704">#12704</a>)</li>
<li><strong>eslint-plugin:</strong> use isTypeLiteralType instead of
type.isLiteral() to include bigint literals on TS &lt; 5.0 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13053">#13053</a>)</li>
<li><strong>eslint-plugin:</strong> [require-array-sort-compare] check
tuples (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13058">#13058</a>)</li>
<li><strong>eslint-plugin:</strong> [require-array-sort-compare] ignore
extra this type argument on TS &lt; 5.1 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13055">#13055</a>)</li>
<li><strong>type-utils:</strong> discriminateAnyType crashes when
calling getAwaitedType on awaited type in TS &lt; 5.0 (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/13054">#13054</a>)</li>
<li><strong>typescript-estree:</strong> include leading and trailing
comments &amp; whitespace in Program range (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12991">#12991</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Junichiro Kasuya <a
href="https://github.com/jksy"><code>@​jksy</code></a></li>
<li>Mitch Fultz <a
href="https://github.com/fitchmultz"><code>@​fitchmultz</code></a></li>
<li>Shaan GS <a
href="https://github.com/ShaanGS"><code>@​ShaanGS</code></a></li>
</ul>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>v8.71.2</h2>
<h2>8.71.2 (2026-10-12)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-unused-vars] avoid
false-positives when not using our parser (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12989">#12989</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
count instantiated mapped type templates (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12974">#12974</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unused-vars] ignore type-only
refs for after-used (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12977">#12977</a>)</li>
<li><strong>eslint-plugin:</strong> [no-unnecessary-type-parameters]
parenthesize constraint in optional tuple elements (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12995">#12995</a>)</li>
<li><strong>eslint-plugin:</strong> [prefer-optional-chain] safe fix
when the chain ends with a strict null comparison (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12805">#12805</a>)</li>
<li><strong>type-utils:</strong> match linked packages and packages with
missing version in <code>TypeOrValueSpecifier</code> (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12948">#12948</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Abraham Guo</li>
<li>Brad Zacher <a
href="https://github.com/bradzacher"><code>@​bradzacher</code></a></li>
<li>Evyatar Daud <a
href="https://github.com/StyleShit"><code>@​StyleShit</code></a></li>
<li>Josh Goldberg</li>
<li>Vinccool96</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md">typescript-eslint's
changelog</a>.</em></p>
<blockquote>
<h2>8.72.0 (2026-10-19)</h2>
<p>This was a version bump only for typescript-eslint to align it with
other projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.72.0">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
<h2>8.71.2 (2026-10-12)</h2>
<p>This was a version bump only for typescript-eslint to align it with
other projects, there were no code changes.</p>
<p>See <a
href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.71.2">GitHub
Releases</a> for more information.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/a4c2603d3e4fd43b33bc25b82457716e9f7cef71"><code>a4c2603</code></a>
chore(release): publish 8.72.0</li>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/7488d681f6e0e96c2aaa1eee9c3d1b9b1ef077cb"><code>7488d68</code></a>
chore(release): publish 8.71.2</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.72.0/packages/typescript-eslint">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Starosdev <eder@staros.dev>
## Summary

Links stable and beta server and collector version badges to their
matching GitHub release pages. Development and git-describe versions
remain plain badges.

## Type of Change

- [x] New feature (non-breaking change that adds functionality)

## Related Issues

Fixes #916

## Changes Made

- Added release URL handling for stable and beta release versions.
- Opened version links in a new tab with `rel="noopener"`.
- Added coverage for release and development version formats.

## Testing

- `npm run lint` — passed with 0 errors; 3 warnings remain in unrelated
existing files.
- `npm test -- --watch=false --browsers=ChromeHeadless` — 218 passed.
- `npm run build:prod` — passed; warnings were in unrelated existing
areas.
- `git diff --check` — passed.

## Checklist

- [x] My code follows the project's code style
- [x] I have performed a self-review of my code
- [x] I have added/updated tests that prove my change works
- [x] All existing tests pass

Co-authored-by: Starosdev <eder@staros.dev>
)

## Summary

The dashboard's Run collectors action starts ZFS and MDADM whenever
their binaries are installed, even when those optional collectors are
not enabled. On a host without ZFS access, this produces a misleading
pool-list failure. Manual runs now use the all-in-one image's existing
enablement conditions and log disabled collectors as skipped.

## Type of Change

- [x] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
- [ ] Refactoring (no functional changes)
- [ ] CI/CD or infrastructure change

## Related Issues / Linked Issues

Related to #1014 and #1029. This fixes the separate optional-collector
behavior discovered during live acceptance of #1029. No separate
tracking issue exists.

## Changes Made

- Reuse collector metadata to check ZFS and MDADM schedule/startup
settings before launching binaries. Preserve SMART's default execution
and one-shot arguments.
- Match startup boolean normalization, including quoted environment-file
values. A configured schedule still enables manual runs when startup is
false.
- Keep enabled-collector errors visible and document optional collector
settings.

## Testing / Test plan

- [x] I have tested this locally
- [x] I have added/updated tests that prove my fix/feature works
- [x] All existing tests pass (focused suites and all 19 current CI
checks passed)

Passed:
- `go test -race ./webapp/backend/pkg/web/handler
./collector/pkg/omnibus`
- `go vet ./webapp/backend/pkg/web/handler ./collector/pkg/omnibus`
- `go mod vendor` and golangci-lint v2.14.0 with `--timeout=5m
--new-from-rev=HEAD`: 0 issues before commit
- `git diff --check` and pre-commit checks

Fifteen executable-fixture scenarios cover disabled collectors, separate
ZFS/MDADM enablement, normalized startup values, schedules with startup
disabled, and enabled failures. They retain coverage of SMART one-shot
arguments and API settings. The two disabled-collector cases failed
against the original implementation before the fix.

The follow-up adds double-quoted, single-quoted, padded, and
whitespace-only empty schedule cases, plus quoted real schedules and
startup enablement with an empty schedule. Four cases failed before the
repair. Race tests, vet, golangci-lint v2.14.0, and pre-commit checks
passed after it. All 19 CI checks passed at
`5cdc73e57414bd0de758987b220043f1ccca81e6`, with none pending.

## Checklist

- [x] My code follows the project's code style
- [x] I have performed a self-review of my code
- [x] I have commented my code where necessary (particularly complex
areas)
- [x] I have updated the documentation if needed
- [x] My changes generate no new warnings
- [x] No console.log, debug statements, or commented-out code

## Screenshots (if applicable)

Not applicable. No visual changes.

## Additional Notes

Review: required (user-requested independent review). Review at 59d5f73
returned FIX_FIRST for quoted-empty schedules. Commit 5cdc73e trims
surrounding schedule quotes and whitespace; fresh read-only review is
pending at that head.

Target: develop. No dependency changes or cross-repository dependencies.
Updated binaries/images require deployment before running instances gain
this behavior. This follow-up has not been deployed or tested live. No
merge or deployment is authorized.
@Starosdev
Starosdev merged commit cda82eb into master Oct 25, 2026
47 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants