Skip to content

Release v1.28.1: improvements and bug fixes since v1.28.0 - #1285

Merged
luluiz merged 350 commits into
mainfrom
hotfix/v1.28.1
Aug 6, 2026
Merged

Release v1.28.1: improvements and bug fixes since v1.28.0#1285
luluiz merged 350 commits into
mainfrom
hotfix/v1.28.1

Conversation

@luluiz

@luluiz luluiz commented Aug 5, 2026

Copy link
Copy Markdown
Member

User-Facing Changes

This patch release bundles the accumulated bug fixes, performance improvements, and refinements merged into `develop` since `v1.28.0` was cut. See the full commit list in this PR's diff/commits tab for details (347 commits).

Description

`main` was still exactly at tag `v1.28.0` with no commits ahead. This PR merges the current state of `develop` into `main` via a `hotfix/*` branch so that, per this repo's release automation (`.github/workflows/release.yml`), merging it will trigger an automatic patch version bump (`1.28.0` -> `1.28.1`), tag creation, GitHub Release, npm publish, and GHCR image push.

Notable areas of change since v1.28.0 include (non-exhaustive):

  • Bug fixes: worker memory bounds for large multi-MCAP sessions, layout validation/userNodes handling, State Transitions panel fixes, RawMessagesVirtual alignment, npm audit/vulnerability fixes, H.265 decode perf, remote MCAP read coalescing, and more.
  • Chores: dependency bumps (webpack, electron, monaco-editor, tar, etc.) and audit fixes.
  • Docs: agent spec and release-process documentation updates.

Note: This branch was created from `develop` in full (not a curated cherry-pick), because the fix/perf commits are interdependent with intervening feature and refactor commits, making a partial cherry-pick operationally unsafe. As a result, this PR does include some `feat:`-prefixed commits alongside the fixes -- flagging this for reviewer awareness since it is being shipped under a patch version number rather than a minor bump.

Checklist

  • The web version was tested and it is running ok
  • The desktop version was tested and it is running ok
  • This change is covered by unit tests
  • Files constants.ts, types.ts and *.style.ts have been checked and relevant code snippets have been relocated

Opened as part of the guided release runbook (`.github/prompts/lb-release.prompt.md`). Do not merge until CI passes and a maintainer confirms the scope (full develop merge vs curated fix-only patch) is acceptable for a patch release.

Summary by CodeRabbit

  • New Features

    • Added text filtering for settings, including nested items.
    • Added configurable loading limits, concurrency, read-ahead buffering, and efficient source reuse for multi-file and remote data.
    • Added multi-platform container images for Linux systems.
  • Bug Fixes

    • Improved cleanup and recovery during interrupted or failed data loading.
    • Fixed iterator cancellation and remote file stream shutdown behavior.
    • Layout data can now omit optional user-defined nodes.
  • Documentation

    • Added workflows for feature adoption, reviews, releases, synchronization, and development.

dependabot Bot and others added 30 commits March 23, 2026 09:47
Bumps
[octokit/request-action](https://github.com/octokit/request-action) from
2.4.0 to 3.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/octokit/request-action/releases">octokit/request-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.0.0</h2>
<h1><a
href="https://github.com/octokit/request-action/compare/v2.4.0...v3.0.0">3.0.0</a>
(2026-03-20)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> update dependency
<code>@​octokit/action</code> to v8, update runner to v24, switch build
from NCC to ESBuild (<a
href="https://redirect.github.com/octokit/request-action/issues/324">#324</a>)
(<a
href="https://github.com/octokit/request-action/commit/b91aabaa861c777dcdb14e2387e30eddf04619ae">b91aaba</a>)</li>
</ul>
<h3>BREAKING CHANGES</h3>
<ul>
<li><strong>deps:</strong> Update runner to Node 24</li>
</ul>
<p>Co-authored-by: uzlopak <a
href="mailto:aras.abbasi@googlemail.com">aras.abbasi@googlemail.com</a>
Co-authored-by: wolfy1339 <a
href="mailto:webmaster@wolfy1339.com">webmaster@wolfy1339.com</a>
Co-authored-by: wolfy1339 <a
href="mailto:4595477+wolfy1339@users.noreply.github.com">4595477+wolfy1339@users.noreply.github.com</a>
Co-authored-by: Audrey Romanet <a
href="mailto:7204715+aromanet42@users.noreply.github.com">7204715+aromanet42@users.noreply.github.com</a>
Co-authored-by: renovate[bot] &lt;29139614+renovate[bot]<a
href="https://github.com/users"><code>@​users</code></a>.noreply.github.com&gt;</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/octokit/request-action/commit/b91aabaa861c777dcdb14e2387e30eddf04619ae"><code>b91aaba</code></a>
fix(deps): update dependency <code>@​octokit/action</code> to v8, update
runner to v24, swi...</li>
<li><a
href="https://github.com/octokit/request-action/commit/02f5e7c637a73a3b12ed81015fa7fb5f11cc5d7d"><code>02f5e7c</code></a>
ci(action): update peter-evans/create-or-update-comment action to v5 (<a
href="https://redirect.github.com/octokit/request-action/issues/331">#331</a>)</li>
<li><a
href="https://github.com/octokit/request-action/commit/f10304139e73f3e7c273d76afd8f705374ef260a"><code>f103041</code></a>
ci(action): update github/codeql-action action to v4 (<a
href="https://redirect.github.com/octokit/request-action/issues/332">#332</a>)</li>
<li><a
href="https://github.com/octokit/request-action/commit/937f551453cc2cdaf33d45bdeddb4941be4a6368"><code>937f551</code></a>
ci(action): update actions/checkout action to v6 (<a
href="https://redirect.github.com/octokit/request-action/issues/340">#340</a>)</li>
<li><a
href="https://github.com/octokit/request-action/commit/c861151bf0e2bd95dd544b554d6c3469de8ef1ec"><code>c861151</code></a>
ci(action): update actions/setup-node action to v6 (<a
href="https://redirect.github.com/octokit/request-action/issues/333">#333</a>)</li>
<li><a
href="https://github.com/octokit/request-action/commit/05a2312de9f8207044c4c9e41fe19703986acc13"><code>05a2312</code></a>
build(deps): bump <code>@​octokit/request</code> from 9.1.1 to 9.2.2 (<a
href="https://redirect.github.com/octokit/request-action/issues/322">#322</a>)</li>
<li><a
href="https://github.com/octokit/request-action/commit/22cf731600f3560b35f286c47a5ccdd9957a8fff"><code>22cf731</code></a>
build(deps): bump <code>@​octokit/plugin-paginate-rest</code> from
11.3.0 to 11.4.2 (<a
href="https://redirect.github.com/octokit/request-action/issues/319">#319</a>)</li>
<li><a
href="https://github.com/octokit/request-action/commit/786351db496fa66730d8faa09ef279108da175a3"><code>786351d</code></a>
ci(action): update actions/publish-immutable-action action to v0.0.4 (<a
href="https://redirect.github.com/octokit/request-action/issues/314">#314</a>)</li>
<li>See full diff in <a
href="https://github.com/octokit/request-action/compare/v2.4.0...v3.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=octokit/request-action&package-manager=github_actions&previous-version=2.4.0&new-version=3.0.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>
Sync develop branch to keep it consistent related to main branch.

---------

Signed-off-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <luiz.bezerra+QCOM@ctw.bmwgroup.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: ctw-joao-luis <Joao.Luis@ctw.bmwgroup.com>
Signed-off-by: Thomas Sedlmayer <tsedlmayer@pmsfit.de>
Signed-off-by: Taeseung Sohn <paulsohnjp@gmail.com>
Signed-off-by: Gabriela Almeida <gabriela.almeida@criticaltechworks.com>
Signed-off-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <198787532+luiz-bezerra-ctw-bmwgroup-com_QCOM@users.noreply.github.com>
Signed-off-by: joao-oliveira-ctw <joao.alves.oliveira@criticaltechworks.com>
Co-authored-by: Rodrigo CTW <rodrigo.PE.rodrigues@ctw.bmwgroup.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Gabriela Almeida <gabriela.almeida@criticaltechworks.com>
Co-authored-by: Alexandre Neuwald CTW <Alexandre.Neuwald@ctw.bmwgroup.com>
Co-authored-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <luiz.bezerra+QCOM@ctw.bmwgroup.com>
Co-authored-by: ctw-joao-luis <Joao.Luis@ctw.bmwgroup.com>
Co-authored-by: Alexandre Neuwald <alexandre.neuwald@criticaltechworks.com>
Co-authored-by: Bruno Abreu <bmachadorj@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <198787532+luiz-bezerra-ctw-bmwgroup-com_QCOM@users.noreply.github.com>
Co-authored-by: Joao Luis <joao.miguel.luis@criticaltechworks.com>
Co-authored-by: Thomas Sedlmayer <tsedlmayer@pmsfit.de>
Co-authored-by: Taeseung Sohn <paulsohnjp@gmail.com>
Co-authored-by: Planck-Ho <wenloong.he@gmail.com>
Co-authored-by: lichtblick-bot <lichtblick@bmwgroup.com>
Co-authored-by: joao-oliveira-ctw <joao.alves.oliveira@criticaltechworks.com>
Co-authored-by: andremarques94 <90326088+andremarques94@users.noreply.github.com>
Co-authored-by: Taeseung Sohn <taeseung.sohn@tier4.jp>
Co-authored-by: cadkin <adkinscv@ornl.gov>
⚠️ **This PR has merge conflicts that need to be resolved manually.**

This PR syncs changes from `main` into `develop` after release
**1.24.3**.

    Please review the changes before merging.

    **Auto-generated by GitHub Actions**

---------

Signed-off-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <luiz.bezerra+QCOM@ctw.bmwgroup.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: ctw-joao-luis <Joao.Luis@ctw.bmwgroup.com>
Signed-off-by: Thomas Sedlmayer <tsedlmayer@pmsfit.de>
Signed-off-by: Taeseung Sohn <paulsohnjp@gmail.com>
Signed-off-by: Gabriela Almeida <gabriela.almeida@criticaltechworks.com>
Signed-off-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <198787532+luiz-bezerra-ctw-bmwgroup-com_QCOM@users.noreply.github.com>
Signed-off-by: joao-oliveira-ctw <joao.alves.oliveira@criticaltechworks.com>
Co-authored-by: Rodrigo CTW <rodrigo.PE.rodrigues@ctw.bmwgroup.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Gabriela Almeida <gabriela.almeida@criticaltechworks.com>
Co-authored-by: Alexandre Neuwald CTW <Alexandre.Neuwald@ctw.bmwgroup.com>
Co-authored-by: Luiz Bezerra <luiz.bezerra@ctw.bmwgroup.com>
Co-authored-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <luiz.bezerra+QCOM@ctw.bmwgroup.com>
Co-authored-by: ctw-joao-luis <Joao.Luis@ctw.bmwgroup.com>
Co-authored-by: Alexandre Neuwald <alexandre.neuwald@criticaltechworks.com>
Co-authored-by: Bruno Abreu <bmachadorj@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <198787532+luiz-bezerra-ctw-bmwgroup-com_QCOM@users.noreply.github.com>
Co-authored-by: Joao Luis <joao.miguel.luis@criticaltechworks.com>
Co-authored-by: Thomas Sedlmayer <tsedlmayer@pmsfit.de>
Co-authored-by: Taeseung Sohn <paulsohnjp@gmail.com>
Co-authored-by: Planck-Ho <wenloong.he@gmail.com>
Co-authored-by: joao-oliveira-ctw <joao.alves.oliveira@criticaltechworks.com>
Co-authored-by: andremarques94 <90326088+andremarques94@users.noreply.github.com>
Co-authored-by: Taeseung Sohn <taeseung.sohn@tier4.jp>
Co-authored-by: cadkin <adkinscv@ornl.gov>
## Description

This change allows the SonarCloud workflow to be triggered manually in
addition to being triggered on push events.

Co-authored-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <198787532+luiz-bezerra-ctw-bmwgroup-com_QCOM@users.noreply.github.com>
## User-Facing Changes

Now revert layout should works as intended all the times, and all other
layout actions should work as well when done with multiple layouts
selected

## Description

- Fixed and issue where reverting changes on layouts did not work
because during a previous refactor the logic that handles reverting
layouts was separated from the logic that navigates and sets the state
of layouts and during that refactor the actions started creating its own
state instead of the one use by the navigation logic and thus creating a
mismatch on access to layouts
- Also refactored code related to multi actions on layouts. Now
`LayoutSection` is exclusively an UI component with no logic for layouts
actions. Now everything related to actions on multiple layouts is called
on `LayoutBrowser`.
- Also created a new dispatch action to help dealing with actions on
multiple layouts
- Finally fixed another issue that only happened on the initial render,
the layout selected by default was not being added to `selectedIds`
which caused actions for multiple layouts using that selection would not
work for all layouts
- Added unit tests
- Added e2e test

**New flow of multi actions**
<img width="2299" height="1051" alt="image"
src="https://github.com/user-attachments/assets/fc6e688f-bc27-45e3-910a-32adbd1c478b"
/>


## Checklist

- [x] The web version was tested and it is running ok
- [x] The desktop version was tested and it is running ok
- [x] This change is covered by unit tests
- [x] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages)
from 4 to 5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/deploy-pages/releases">actions/deploy-pages's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<h1>Changelog</h1>
<ul>
<li>Update Node.js version to 24.x <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/404">#404</a>)</li>
<li>Add workflow file for publishing releases to immutable action
package <a
href="https://github.com/Jcambass"><code>@​Jcambass</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/374">#374</a>)</li>
<li>Bump braces from 3.0.2 to 3.0.3 in the npm_and_yarn group across 1
directory <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/360">#360</a>)</li>
<li>Make the rebuild dist workflow work nicer with Dependabot <a
href="https://github.com/yoannchaudet"><code>@​yoannchaudet</code></a>
(<a
href="https://redirect.github.com/actions/deploy-pages/issues/361">#361</a>)</li>
<li>Bump the non-breaking-changes group across 1 directory with 3
updates <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/358">#358</a>)</li>
<li>Delete repeated sentence <a
href="https://github.com/garethsb"><code>@​garethsb</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/359">#359</a>)</li>
<li>Update README.md <a
href="https://github.com/tsusdere"><code>@​tsusdere</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/348">#348</a>)</li>
<li>Bump the non-breaking-changes group with 4 updates <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/341">#341</a>)</li>
<li>Remove error message for file permissions <a
href="https://github.com/TooManyBees"><code>@​TooManyBees</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/340">#340</a>)</li>
</ul>
<hr />
<p>See details of <a
href="https://github.com/actions/deploy-pages/compare/v4.0.5...v4.0.6">all
code changes</a> since previous release.</p>
<p>:warning: For use with products other than GitHub.com, such as GitHub
Enterprise Server, please consult the <a
href="https://github.com/actions/deploy-pages/#compatibility">compatibility
table</a>.</p>
<h2>v4.0.5</h2>
<h1>Changelog</h1>
<ul>
<li>On API error, the error message will surface the API request ID <a
href="https://github.com/TooManyBees"><code>@​TooManyBees</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/324">#324</a>)</li>
<li>Bump the non-breaking-changes group with 2 updates <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/318">#318</a>)</li>
<li>Bump the non-breaking-changes group with 1 update <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/316">#316</a>)</li>
<li>Bump the non-breaking-changes group with 3 updates <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/314">#314</a>)</li>
<li>Bump release-drafter/release-drafter from 5.25.0 to 6.0.0 <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/311">#311</a>)</li>
</ul>
<hr />
<p>See details of <a
href="https://github.com/actions/deploy-pages/compare/v4.0.4...v4.0.5">all
code changes</a> since previous release.</p>
<p>:warning: For use with products other than GitHub.com, such as GitHub
Enterprise Server, please consult the <a
href="https://github.com/actions/deploy-pages/#compatibility">compatibility
table</a>.</p>
<h2>v4.0.4</h2>
<h1>Changelog</h1>
<ul>
<li>Update api-client.js <a
href="https://github.com/lmammino"><code>@​lmammino</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/295">#295</a>)</li>
<li>fix typo: compatibilty -&gt; compatibility <a
href="https://github.com/SimonSiefke"><code>@​SimonSiefke</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/298">#298</a>)</li>
<li>Bump <code>@​actions/artifact</code> from 2.0.1 to 2.1.1 <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/deploy-pages/issues/310">#310</a>)</li>
<li>Update Dependabot config to group non-breaking changes <a
href="https://github.com/JamesMGreene"><code>@​JamesMGreene</code></a>
(<a
href="https://redirect.github.com/actions/deploy-pages/issues/307">#307</a>)</li>
</ul>
<hr />
<p>See details of <a
href="https://github.com/actions/deploy-pages/compare/v4.0.3...v4.0.4">all
code changes</a> since previous release.</p>
<p>:warning: For use with products other than GitHub.com, such as GitHub
Enterprise Server, please consult the <a
href="https://github.com/actions/deploy-pages/#compatibility">compatibility
table</a>.</p>
<h2>v4.0.3</h2>
<h1>Changelog</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/deploy-pages/commit/cd2ce8fcbc39b97be8ca5fce6e763baed58fa128"><code>cd2ce8f</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/deploy-pages/issues/404">#404</a>
from salmanmkc/node24</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/bbe2a950ee52d4f5cbe74e6d9d6a8803676e91d5"><code>bbe2a95</code></a>
Update Node.js version to 24.x</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/854d7aa1b99e4509c4d1b53d69b7ba4eaf39215a"><code>854d7aa</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/deploy-pages/issues/374">#374</a>
from actions/Jcambass-patch-1</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/306bb814f29679fd12f0e4b0014bc1f3a7e7f4bc"><code>306bb81</code></a>
Add workflow file for publishing releases to immutable action
package</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/b74272834adc04f971da4b0b055c49fa8d7f90c9"><code>b742728</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/deploy-pages/issues/360">#360</a>
from actions/dependabot/npm_and_yarn/npm_and_yarn-513...</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/72732942c639e67ea3f70165fd2e012dd6d95027"><code>7273294</code></a>
Bump braces in the npm_and_yarn group across 1 directory</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/963791f01c40ef3eff219c255dbfb97a6f2c9f87"><code>963791f</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/deploy-pages/issues/361">#361</a>
from actions/dependabot-friendly</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/51bb29d9d7bfe15d731c4957ce1887b5ae8c6727"><code>51bb29d</code></a>
Make the rebuild dist workflow safer for Dependabot</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/89f3d10406f57ee86e6517a982b3fb0438bd6dc5"><code>89f3d10</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/deploy-pages/issues/358">#358</a>
from actions/dependabot/npm_and_yarn/non-breaking-cha...</li>
<li><a
href="https://github.com/actions/deploy-pages/commit/bce735589bbbfa569f1d2ac003277b590d743e4c"><code>bce7355</code></a>
Merge branch 'main' into
dependabot/npm_and_yarn/non-breaking-changes-99c12deb21</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/deploy-pages/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/deploy-pages&package-manager=github_actions&previous-version=4&new-version=5)](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>
…roup across 1 directory (#1014)

Bumps the npm_and_yarn group with 1 update in the / directory:
[picomatch](https://github.com/micromatch/picomatch).

Updates `picomatch` from 2.3.1 to 2.3.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/micromatch/picomatch/releases">picomatch's
releases</a>.</em></p>
<blockquote>
<h2>2.3.2</h2>
<p>This is a security release fixing several security relevant
issues.</p>
<h2>What's Changed</h2>
<ul>
<li>fix: exception when glob pattern contains constructor by <a
href="https://github.com/Jason3S"><code>@​Jason3S</code></a> in <a
href="https://redirect.github.com/micromatch/picomatch/pull/144">micromatch/picomatch#144</a></li>
<li>Fix for <a
href="https://github.com/micromatch/picomatch/security/advisories/GHSA-c2c7-rcm5-vvqj">CVE-2026-33671</a></li>
<li>Fix for <a
href="https://github.com/micromatch/picomatch/security/advisories/GHSA-3v7f-55p6-f55p">CVE-2026-33672</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2">https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md">picomatch's
changelog</a>.</em></p>
<blockquote>
<h1>Release history</h1>
<p><strong>All notable changes to this project will be documented in
this file.</strong></p>
<p>The format is based on <a
href="http://keepachangelog.com/en/1.0.0/">Keep a Changelog</a>
and this project adheres to <a
href="http://semver.org/spec/v2.0.0.html">Semantic Versioning</a>.</p>
<!-- raw HTML omitted -->
<ul>
<li>Changelogs are for humans, not machines.</li>
<li>There should be an entry for every single version.</li>
<li>The same types of changes should be grouped.</li>
<li>Versions and sections should be linkable.</li>
<li>The latest version comes first.</li>
<li>The release date of each versions is displayed.</li>
<li>Mention whether you follow Semantic Versioning.</li>
</ul>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
<p>Changelog entries are classified using the following labels <em>(from
<a href="http://keepachangelog.com/">keep-a-changelog</a></em>):</p>
<ul>
<li><code>Added</code> for new features.</li>
<li><code>Changed</code> for changes in existing functionality.</li>
<li><code>Deprecated</code> for soon-to-be removed features.</li>
<li><code>Removed</code> for now removed features.</li>
<li><code>Fixed</code> for any bug fixes.</li>
<li><code>Security</code> in case of vulnerabilities.</li>
</ul>
<!-- raw HTML omitted -->
<h2>4.0.0 (2024-02-07)</h2>
<h3>Fixes</h3>
<ul>
<li>Fix bad text values in parse <a
href="https://redirect.github.com/micromatch/picomatch/issues/126">#126</a>,
thanks to <a
href="https://github.com/connor4312"><code>@​connor4312</code></a></li>
</ul>
<h3>Changed</h3>
<ul>
<li>Remove process global to work outside of node <a
href="https://redirect.github.com/micromatch/picomatch/issues/129">#129</a>,
thanks to <a
href="https://github.com/styfle"><code>@​styfle</code></a></li>
<li>Add sideEffects to package.json <a
href="https://redirect.github.com/micromatch/picomatch/issues/128">#128</a>,
thanks to <a
href="https://github.com/frandiox"><code>@​frandiox</code></a></li>
<li>Removed <code>os</code>, make compatible browser environment. See <a
href="https://redirect.github.com/micromatch/picomatch/issues/124">#124</a>,
thanks to <a
href="https://github.com/gwsbhqt"><code>@​gwsbhqt</code></a></li>
</ul>
<h2>3.0.1</h2>
<h3>Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/micromatch/picomatch/commit/81cba8d4b767cab3cb29d26eb4f691eed75b73b2"><code>81cba8d</code></a>
Publish 2.3.2</li>
<li><a
href="https://github.com/micromatch/picomatch/commit/fc1f6b69006e9435caf8fb40d8aff378bc0b7bce"><code>fc1f6b6</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/micromatch/picomatch/commit/eec17aee5428a7249e9ca5adbb8a0d28fa29619b"><code>eec17ae</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/micromatch/picomatch/commit/78f8ca4362d9e66cadea97b93e292f10096452ed"><code>78f8ca4</code></a>
Merge pull request <a
href="https://redirect.github.com/micromatch/picomatch/issues/156">#156</a>
from micromatch/backport-144</li>
<li><a
href="https://github.com/micromatch/picomatch/commit/3f4f10eaa65bf3a52e8f2999674cd27e11fa3c9b"><code>3f4f10e</code></a>
Merge pull request <a
href="https://redirect.github.com/micromatch/picomatch/issues/144">#144</a>
from Jason3S/jdent-object-properties</li>
<li>See full diff in <a
href="https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=picomatch&package-manager=npm_and_yarn&previous-version=2.3.1&new-version=2.3.2)](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 <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
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/lichtblick-suite/lichtblick/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…p across 1 directory (#1015)

Bumps the npm_and_yarn group with 1 update in the / directory:
[yaml](https://github.com/eemeli/yaml).

Updates `yaml` from 1.10.2 to 1.10.3
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eemeli/yaml/commit/cfe8f0437054ff5fbfe6499894f55b3316a54959"><code>cfe8f04</code></a>
1.10.3</li>
<li><a
href="https://github.com/eemeli/yaml/commit/7abcf45dd63f0bc626890ad9a8cdeb397f92be73"><code>7abcf45</code></a>
fix: Catch stack overflow during CST composition</li>
<li><a
href="https://github.com/eemeli/yaml/commit/a0252f8b056f49875d1b79edb8709cff7d7d0dc6"><code>a0252f8</code></a>
chore: Add rules avoiding processing of tests/json-test-suite</li>
<li><a
href="https://github.com/eemeli/yaml/commit/a5e83b05f7124c31b4784b613f0c669959a5ed48"><code>a5e83b0</code></a>
style: Apply updates Prettier rules</li>
<li><a
href="https://github.com/eemeli/yaml/commit/b8ddca0a5d4794a3c60f252d3513e6ff7068fdf0"><code>b8ddca0</code></a>
chore: Refresh lockfile</li>
<li><a
href="https://github.com/eemeli/yaml/commit/395f892ec9a26b9038c8db388b675c3281ab8cd3"><code>395f892</code></a>
ci: Use a different (working) submodule checkout</li>
<li><a
href="https://github.com/eemeli/yaml/commit/6fd272052751775e48196024d4bed639cc1e0350"><code>6fd2720</code></a>
test-events: Add {} and [] indicators to flow maps &amp; sequences</li>
<li>See full diff in <a
href="https://github.com/eemeli/yaml/compare/v1.10.2...v1.10.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=yaml&package-manager=npm_and_yarn&previous-version=1.10.2&new-version=1.10.3)](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 <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
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/lichtblick-suite/lichtblick/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## User-Facing Changes

Performance improvements for snapshot data when topic subscribers and
message converters allow `latest-per-render-tick` sampling mode.

## Description

This PR introduces a new sampling strategy for deserialization in the
iterable player pipeline.

With `sampling: { mode: "latest-per-render-tick" }` on subscriptions,
the player can reduce decode work by buffering sampled topics and only
deserializing the latest message per topic per tick window, while
preserving the old pass-through deserialization behaviour if not all
active subscribers and message converters opt-in. This is especially
useful for snapshot/high-rate data where many intermediate messages are
not consumed by rendering and do not participate in cumulative, stateful
processing.

### API Changes
Message converter registration now includes an explicit sampling
compatibility signal:

- `RegisterMessageConverterArgs` adds optional
`supportsLatestPerRenderTick?: boolean`.
- Existing converters remain compatible without changes.
- If the flag is missing or false, affected topics fall back to
pass-through behavior (no latest-per-tick sampling).
- Converter authors should set this to true only if converter behavior
is correct when intermediate messages are skipped.

### Unit Tests
- Adds targeted tests for the new deserialization path and sampling
behavior.
- Covers latest-per-window behavior, pass-through fallback when no
sampling topics exist, and behavior when no window end is set.

### Further notes:
I've tested the feature with asam-osi-converter and large benchmark
protobuf mcap files (which should also be available to you). I prepared
a demo branch to test it:
https://github.com/lichtblick-suite/asam-osi-converter/tree/demo/latest-per-render-tick
So far, I've implemented the additional consent to this sampling
strategy for the 3D panel and the raw message panels. I've also added a
toggle option to the raw message panels to compare the performance
improvement with/without sampling. This should probably be removed
before merging.

## Checklist

- [X] The web version was tested and it is running ok
- [X] The desktop version was tested and it is running ok
- [X] This change is covered by unit tests
- [X] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated

@jdsika

---------

Signed-off-by: Thomas Sedlmayer <tsedlmayer@pmsfit.de>
Signed-off-by: Gabriela Almeida <gabriela.almeida@criticaltechworks.com>
Co-authored-by: Gabriela Almeida <gabriela.almeida@criticaltechworks.com>
Bumps
[actions/configure-pages](https://github.com/actions/configure-pages)
from 5 to 6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/configure-pages/releases">actions/configure-pages's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h1>Changelog</h1>
<ul>
<li>upgrade to node 24 <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/186">#186</a>)</li>
<li>Upgrade IA Publish <a
href="https://github.com/Jcambass"><code>@​Jcambass</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/165">#165</a>)</li>
<li>Add workflow file for publishing releases to immutable action
package <a
href="https://github.com/Jcambass"><code>@​Jcambass</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/163">#163</a>)</li>
<li>pin draft release version <a
href="https://github.com/YiMysty"><code>@​YiMysty</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/162">#162</a>)</li>
<li>Bump espree from 9.6.1 to 10.1.0 <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/160">#160</a>)</li>
<li>Bump eslint-config-prettier from 8.8.0 to 9.1.0 <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/143">#143</a>)</li>
<li>Be more friendly to Dependabot <a
href="https://github.com/yoannchaudet"><code>@​yoannchaudet</code></a>
(<a
href="https://redirect.github.com/actions/configure-pages/issues/158">#158</a>)</li>
<li>Bump eslint-plugin-github from 4.10.2 to 5.0.1 <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/154">#154</a>)</li>
<li>Bump braces from 3.0.2 to 3.0.3 in the npm_and_yarn group <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/156">#156</a>)</li>
<li>Bump undici from 5.28.3 to 5.28.4 <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a
href="https://redirect.github.com/actions/configure-pages/issues/145">#145</a>)</li>
</ul>
<p>See details of <a
href="https://github.com/actions/configure-pages/compare/v5.0.0...v5.0.1">all
code changes</a> since previous release.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/configure-pages/commit/45bfe0192ca1faeb007ade9deae92b16b8254a0d"><code>45bfe01</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/configure-pages/issues/186">#186</a>
from salmanmkc/node24</li>
<li><a
href="https://github.com/actions/configure-pages/commit/d8770c2b3b71963902cec525cf516368b4411a78"><code>d8770c2</code></a>
Update Node version from 20 to 24 in action.yml</li>
<li><a
href="https://github.com/actions/configure-pages/commit/cb8a1a32801e6cdb7b111ce13761226bba88f67d"><code>cb8a1a3</code></a>
upgrade to node 24</li>
<li><a
href="https://github.com/actions/configure-pages/commit/d5606572c479bee637007364c6b4800ac4fc8573"><code>d560657</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/configure-pages/issues/165">#165</a>
from actions/Jcambass-patch-1</li>
<li><a
href="https://github.com/actions/configure-pages/commit/35e0ac4e4038e070ce9da26f41143bc3cf3c7e1d"><code>35e0ac4</code></a>
Upgrade IA Publish</li>
<li><a
href="https://github.com/actions/configure-pages/commit/1dfbcbff6519463927204dc279c2e0d307824ee2"><code>1dfbcbf</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/configure-pages/issues/163">#163</a>
from actions/Jcambass-patch-1</li>
<li><a
href="https://github.com/actions/configure-pages/commit/2f4f988792f75a5edcc39df0e1661f78999e0348"><code>2f4f988</code></a>
Add workflow file for publishing releases to immutable action
package</li>
<li><a
href="https://github.com/actions/configure-pages/commit/0d7570ca8762e8c951911e8c9655d8973cc93174"><code>0d7570c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/configure-pages/issues/162">#162</a>
from actions/pin-draft-release-verssion</li>
<li><a
href="https://github.com/actions/configure-pages/commit/3ea19669a5cd11c46d23d6578d088b81fe8527e5"><code>3ea1966</code></a>
pin draft release version</li>
<li><a
href="https://github.com/actions/configure-pages/commit/aabcbc432d6b06d1fd5e8bf3cf756880c35e014d"><code>aabcbc4</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/configure-pages/issues/160">#160</a>
from actions/dependabot/npm_and_yarn/espree-10.1.0</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/configure-pages/compare/v5...v6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/configure-pages&package-manager=github_actions&previous-version=5&new-version=6)](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>
## User-Facing Changes

Fixed a bug where the "unsaved changes" indicator was incorrectly shown
after opening a layout, even when no edits had been made by the user.

## Description

<!-- link relevant GitHub issues -->
<!-- add `docs` label if this PR requires documentation updates -->
<!-- add relevant metric tracking for experimental / new features -->

## Checklist

- [ ] The web version was tested and it is running ok
- [ ] The desktop version was tested and it is running ok
- [ ] This change is covered by unit tests
- [ ] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated
#1011)

## User-Facing Changes

N/A

## Description

After a release, the SonarCloud analysis on `main` was showing an
outdated project version and stale code coverage because:

1. The `release.yml` commit uses `[skip actions]`, which skips all
workflows — including SonarCloud
2. The previous push-triggered Sonar analysis ran on the merge commit
(before the version bump), so it always reported the old version

This PR fixes the issue by:

- **Adding a step in `release.yml`** to explicitly trigger the
SonarCloud workflow on `main` via `gh workflow run` after the release is
complete — ensuring analysis runs with the correct version
- **Removing `main` from the push trigger in `sonarqube.yml`** to avoid
a redundant (and outdated) Sonar run on every merge to `main`

Related to #1009

## Checklist

- [x] The web version was tested and it is running ok
- [x] The desktop version was tested and it is running ok
- [ ] This change is covered by unit tests
- [x] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated

Co-authored-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <198787532+luiz-bezerra-ctw-bmwgroup-com_QCOM@users.noreply.github.com>
## User-Facing Changes
Use `subscribeMessageRange` for improved data handling in Plot panel.

## Description

Refactor existing plot components to support `subscribeMessageRange`,
enhancing performance and usability. Key changes include the rework of
interaction handlers and dataset builders to accommodate the new message
range functionality.

The main idea of this PR is to stop the use of BlockLoader in Plot
panel. BlockTopicCursor should be deprecated.

Created useSubscribeMessageRange hook to enable Panels that are not
using PanelExtensionAdapter to use its logic directly. Down the line I
think it would make sense to convert all the panels to
PanelExtensionAdapter.

In this video, I'm comparing both implementations of Plot (old vs new one)

https://github.com/user-attachments/assets/d5e55820-9733-4142-be24-1ca92a71df2d

## Checklist
- [x] The web version was tested and it is running ok
- [x] The desktop version was tested and it is running ok
- [x] This change is covered by unit tests
- [x] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated
## User-Facing Changes

N/A

## Description

This update introduces a `PlotCoordinatorBuilder` to streamline the
creation of series keys by topic.
It also refactors code that was mentioned in a previous PR (#1004)

## Checklist

- [x] The web version was tested and it is running ok
- [x] The desktop version was tested and it is running ok
- [x] This change is covered by unit tests
- [x] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated
## User-Facing Changes

<!-- will be used as a changelog entry -->

## Description
Correct security issue related to `serialize-javascript` -- dependency
from `copy-webpack-plugin` from web suite-web workspace
`copy-webpack-plugin` is already up to date:
https://www.npmjs.com/package/copy-webpack-plugin?activeTab=versions

Resolves  `high` Dependabot issue:
https://github.com/lichtblick-suite/lichtblick/security/dependabot/135

Removes unnecessary `@types/copy-webpack-plugin` since
`copy-webpack-plugin` provides its own type definitions:
https://www.npmjs.com/package/@types/copy-webpack-plugin


<!-- link relevant GitHub issues -->
<!-- add `docs` label if this PR requires documentation updates -->
<!-- add relevant metric tracking for experimental / new features -->

## Checklist

- [ ] The web version was tested and it is running ok
- [ ] The desktop version was tested and it is running ok
- [ ] This change is covered by unit tests NA
- [ ] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated NA
…h 1 update (#1023)

Bumps the npm_and_yarn group with 1 update in the / directory:
[@xmldom/xmldom](https://github.com/xmldom/xmldom).
Bumps the npm_and_yarn group with 1 update in the
/packages/suite-desktop directory:
[@xmldom/xmldom](https://github.com/xmldom/xmldom).

Updates `@xmldom/xmldom` from 0.8.10 to 0.8.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/xmldom/xmldom/releases"><code>@​xmldom/xmldom</code>'s
releases</a>.</em></p>
<blockquote>
<h2>0.8.12</h2>
<p><a
href="https://github.com/xmldom/xmldom/compare/0.8.11...0.8.12">Commits</a></p>
<h3>Fixed</h3>
<ul>
<li>preserve trailing whitespace in ProcessingInstruction data <a
href="https://redirect.github.com/xmldom/xmldom/pull/962"><code>[#962](https://github.com/xmldom/xmldom/issues/962)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/42"><code>[#42](https://github.com/xmldom/xmldom/issues/42)</code></a></li>
<li>Security: <code>createCDATASection</code> now throws
<code>InvalidCharacterError</code> when <code>data</code> contains
<code>&quot;]]&gt;&quot;</code>, as required by the <a
href="https://dom.spec.whatwg.org/#dom-document-createcdatasection">WHATWG
DOM spec</a>. <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
<li>Security: <code>XMLSerializer</code> now splits CDATASection nodes
whose data contains <code>&quot;]]&gt;&quot;</code> into adjacent CDATA
sections at serialization time, preventing XML injection via mutation
methods (<code>appendData</code>, <code>replaceData</code>, <code>.data
=</code>, <code>.textContent =</code>). <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
</ul>
<p>Code that passes a string containing <code>&quot;]]&gt;&quot;</code>
to <code>createCDATASection</code> and relied on the previously unsafe
behavior will now receive <code>InvalidCharacterError</code>. Use a
mutation method such as <code>appendData</code> if you intentionally
need <code>&quot;]]&gt;&quot;</code> in a CDATASection node's data.</p>
<p>Thank you,
<a
href="https://github.com/thesmartshadow"><code>@​thesmartshadow</code></a>,
<a
href="https://github.com/stevenobiajulu"><code>@​stevenobiajulu</code></a>,
for your contributions</p>
<p><a
href="https://github.com/xmldom/xmldom/discussions/357">https://github.com/xmldom/xmldom/discussions/357</a></p>
<h2>0.8.11</h2>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.8.10...0.8.11">0.8.11</a></h2>
<h3>Fixed</h3>
<ul>
<li>update <code>ownerDocument</code> when moving nodes between
documents <a
href="https://redirect.github.com/xmldom/xmldom/pull/933"><code>[#933](https://github.com/xmldom/xmldom/issues/933)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/932"><code>[#932](https://github.com/xmldom/xmldom/issues/932)</code></a></li>
</ul>
<p>Thank you, <a
href="https://github.com/shunkica"><code>@​shunkica</code></a>, for your
contributions</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md"><code>@​xmldom/xmldom</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.8.11...0.8.12">0.8.12</a></h2>
<h3>Fixed</h3>
<ul>
<li>preserve trailing whitespace in ProcessingInstruction data <a
href="https://redirect.github.com/xmldom/xmldom/pull/962"><code>[#962](https://github.com/xmldom/xmldom/issues/962)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/42"><code>[#42](https://github.com/xmldom/xmldom/issues/42)</code></a></li>
<li>Security: <code>createCDATASection</code> now throws
<code>InvalidCharacterError</code> when <code>data</code> contains
<code>&quot;]]&gt;&quot;</code>, as required by the <a
href="https://dom.spec.whatwg.org/#dom-document-createcdatasection">WHATWG
DOM spec</a>. <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
<li>Security: <code>XMLSerializer</code> now splits CDATASection nodes
whose data contains <code>&quot;]]&gt;&quot;</code> into adjacent CDATA
sections at serialization time, preventing XML injection via mutation
methods (<code>appendData</code>, <code>replaceData</code>, <code>.data
=</code>, <code>.textContent =</code>). <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
</ul>
<p>Code that passes a string containing <code>&quot;]]&gt;&quot;</code>
to <code>createCDATASection</code> and relied on the previously unsafe
behavior will now receive <code>InvalidCharacterError</code>. Use a
mutation method such as <code>appendData</code> if you intentionally
need <code>&quot;]]&gt;&quot;</code> in a CDATASection node's data.</p>
<p>Thank you,
<a
href="https://github.com/thesmartshadow"><code>@​thesmartshadow</code></a>,
<a
href="https://github.com/stevenobiajulu"><code>@​stevenobiajulu</code></a>,
for your contributions</p>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.8.10...0.8.11">0.8.11</a></h2>
<h3>Fixed</h3>
<ul>
<li>update <code>ownerDocument</code> when moving nodes between
documents <a
href="https://redirect.github.com/xmldom/xmldom/pull/933"><code>[#933](https://github.com/xmldom/xmldom/issues/933)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/932"><code>[#932](https://github.com/xmldom/xmldom/issues/932)</code></a></li>
</ul>
<p>Thank you, <a
href="https://github.com/shunkica"><code>@​shunkica</code></a>, for your
contributions</p>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.9.8...0.9.7">0.9.8</a></h2>
<h3>Fixed</h3>
<ul>
<li>fix: replace \u2029 as part of normalizeLineEndings <a
href="https://redirect.github.com/xmldom/xmldom/pull/839"><code>[#839](https://github.com/xmldom/xmldom/issues/839)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/838"><code>[#838](https://github.com/xmldom/xmldom/issues/838)</code></a></li>
<li>perf: speed up line detection <a
href="https://redirect.github.com/xmldom/xmldom/pull/847"><code>[#847](https://github.com/xmldom/xmldom/issues/847)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/838"><code>[#838](https://github.com/xmldom/xmldom/issues/838)</code></a></li>
</ul>
<h3>Chore</h3>
<ul>
<li>updated dependencies</li>
<li>drop jazzer and rxjs devDependencies <a
href="https://redirect.github.com/xmldom/xmldom/pull/845"><code>[#845](https://github.com/xmldom/xmldom/issues/845)</code></a></li>
</ul>
<p>Thank you,
<a href="https://github.com/kboshold"><code>@​kboshold</code></a>,
<a href="https://github.com/Ponynjaa"><code>@​Ponynjaa</code></a>,
for your contributions.</p>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.9.6...0.9.7">0.9.7</a></h2>
<h3>Added</h3>
<ul>
<li>Implementation of <code>hasAttributes</code> <a
href="https://redirect.github.com/xmldom/xmldom/pull/804"><code>[#804](https://github.com/xmldom/xmldom/issues/804)</code></a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>locator is now true even when other options are being used for the
DOMParser <a
href="https://redirect.github.com/xmldom/xmldom/issues/802"><code>[#802](https://github.com/xmldom/xmldom/issues/802)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/pull/803"><code>[#803](https://github.com/xmldom/xmldom/issues/803)</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/xmldom/xmldom/commit/189cb78a83e81e1515880988a399e863a8be85ac"><code>189cb78</code></a>
0.8.12</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/ed08df7572f4236d4fd88d16063c3fd8f59c7884"><code>ed08df7</code></a>
fix: XML injection via unsafe CDATA serialization (GHSA-wh4c-j3r5-mjhp)
(<a
href="https://redirect.github.com/xmldom/xmldom/issues/968">#968</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/a5b929ba008f067eeabb427c38de008e36a92796"><code>a5b929b</code></a>
chore: clean up generated test artefacts before running ci-local</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/4e37a205627a08eb64365b13c4e4cce5e86278cb"><code>4e37a20</code></a>
ci: run format:check in lint job</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/ac0ac7714f0e5a7bd7aff5c30f7733666cf03982"><code>ac0ac77</code></a>
chore: ignore generated files when checking formatting</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/968c8939438eec2eca1d003b333cd0fc4595c72d"><code>968c893</code></a>
chore: add local CI script and format:check script</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/ac40424adfa49429811095bcdaf6598255a81a39"><code>ac40424</code></a>
fix: preserve trailing whitespace in ProcessingInstruction data (<a
href="https://redirect.github.com/xmldom/xmldom/issues/962">#962</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/cece7521a3c77da7a10f3fc66521e3e077c9974c"><code>cece752</code></a>
chore: add .nvmrc pointing to node version 18</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/cbf44d90a40703237d217598fa0bcd88770bfa0b"><code>cbf44d9</code></a>
docs: improve links to changes in most recent release</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/c0f14011c7cf93af60b2541898065b7136594f6b"><code>c0f1401</code></a>
0.8.11</li>
<li>Additional commits viewable in <a
href="https://github.com/xmldom/xmldom/compare/0.8.10...0.8.12">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~karfau">karfau</a>, a new releaser for
<code>@​xmldom/xmldom</code> since your current version.</p>
</details>
<br />

Updates `@xmldom/xmldom` from 0.8.10 to 0.8.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/xmldom/xmldom/releases"><code>@​xmldom/xmldom</code>'s
releases</a>.</em></p>
<blockquote>
<h2>0.8.12</h2>
<p><a
href="https://github.com/xmldom/xmldom/compare/0.8.11...0.8.12">Commits</a></p>
<h3>Fixed</h3>
<ul>
<li>preserve trailing whitespace in ProcessingInstruction data <a
href="https://redirect.github.com/xmldom/xmldom/pull/962"><code>[#962](https://github.com/xmldom/xmldom/issues/962)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/42"><code>[#42](https://github.com/xmldom/xmldom/issues/42)</code></a></li>
<li>Security: <code>createCDATASection</code> now throws
<code>InvalidCharacterError</code> when <code>data</code> contains
<code>&quot;]]&gt;&quot;</code>, as required by the <a
href="https://dom.spec.whatwg.org/#dom-document-createcdatasection">WHATWG
DOM spec</a>. <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
<li>Security: <code>XMLSerializer</code> now splits CDATASection nodes
whose data contains <code>&quot;]]&gt;&quot;</code> into adjacent CDATA
sections at serialization time, preventing XML injection via mutation
methods (<code>appendData</code>, <code>replaceData</code>, <code>.data
=</code>, <code>.textContent =</code>). <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
</ul>
<p>Code that passes a string containing <code>&quot;]]&gt;&quot;</code>
to <code>createCDATASection</code> and relied on the previously unsafe
behavior will now receive <code>InvalidCharacterError</code>. Use a
mutation method such as <code>appendData</code> if you intentionally
need <code>&quot;]]&gt;&quot;</code> in a CDATASection node's data.</p>
<p>Thank you,
<a
href="https://github.com/thesmartshadow"><code>@​thesmartshadow</code></a>,
<a
href="https://github.com/stevenobiajulu"><code>@​stevenobiajulu</code></a>,
for your contributions</p>
<p><a
href="https://github.com/xmldom/xmldom/discussions/357">https://github.com/xmldom/xmldom/discussions/357</a></p>
<h2>0.8.11</h2>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.8.10...0.8.11">0.8.11</a></h2>
<h3>Fixed</h3>
<ul>
<li>update <code>ownerDocument</code> when moving nodes between
documents <a
href="https://redirect.github.com/xmldom/xmldom/pull/933"><code>[#933](https://github.com/xmldom/xmldom/issues/933)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/932"><code>[#932](https://github.com/xmldom/xmldom/issues/932)</code></a></li>
</ul>
<p>Thank you, <a
href="https://github.com/shunkica"><code>@​shunkica</code></a>, for your
contributions</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md"><code>@​xmldom/xmldom</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.8.11...0.8.12">0.8.12</a></h2>
<h3>Fixed</h3>
<ul>
<li>preserve trailing whitespace in ProcessingInstruction data <a
href="https://redirect.github.com/xmldom/xmldom/pull/962"><code>[#962](https://github.com/xmldom/xmldom/issues/962)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/42"><code>[#42](https://github.com/xmldom/xmldom/issues/42)</code></a></li>
<li>Security: <code>createCDATASection</code> now throws
<code>InvalidCharacterError</code> when <code>data</code> contains
<code>&quot;]]&gt;&quot;</code>, as required by the <a
href="https://dom.spec.whatwg.org/#dom-document-createcdatasection">WHATWG
DOM spec</a>. <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
<li>Security: <code>XMLSerializer</code> now splits CDATASection nodes
whose data contains <code>&quot;]]&gt;&quot;</code> into adjacent CDATA
sections at serialization time, preventing XML injection via mutation
methods (<code>appendData</code>, <code>replaceData</code>, <code>.data
=</code>, <code>.textContent =</code>). <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
</ul>
<p>Code that passes a string containing <code>&quot;]]&gt;&quot;</code>
to <code>createCDATASection</code> and relied on the previously unsafe
behavior will now receive <code>InvalidCharacterError</code>. Use a
mutation method such as <code>appendData</code> if you intentionally
need <code>&quot;]]&gt;&quot;</code> in a CDATASection node's data.</p>
<p>Thank you,
<a
href="https://github.com/thesmartshadow"><code>@​thesmartshadow</code></a>,
<a
href="https://github.com/stevenobiajulu"><code>@​stevenobiajulu</code></a>,
for your contributions</p>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.8.10...0.8.11">0.8.11</a></h2>
<h3>Fixed</h3>
<ul>
<li>update <code>ownerDocument</code> when moving nodes between
documents <a
href="https://redirect.github.com/xmldom/xmldom/pull/933"><code>[#933](https://github.com/xmldom/xmldom/issues/933)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/932"><code>[#932](https://github.com/xmldom/xmldom/issues/932)</code></a></li>
</ul>
<p>Thank you, <a
href="https://github.com/shunkica"><code>@​shunkica</code></a>, for your
contributions</p>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.9.8...0.9.7">0.9.8</a></h2>
<h3>Fixed</h3>
<ul>
<li>fix: replace \u2029 as part of normalizeLineEndings <a
href="https://redirect.github.com/xmldom/xmldom/pull/839"><code>[#839](https://github.com/xmldom/xmldom/issues/839)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/838"><code>[#838](https://github.com/xmldom/xmldom/issues/838)</code></a></li>
<li>perf: speed up line detection <a
href="https://redirect.github.com/xmldom/xmldom/pull/847"><code>[#847](https://github.com/xmldom/xmldom/issues/847)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/838"><code>[#838](https://github.com/xmldom/xmldom/issues/838)</code></a></li>
</ul>
<h3>Chore</h3>
<ul>
<li>updated dependencies</li>
<li>drop jazzer and rxjs devDependencies <a
href="https://redirect.github.com/xmldom/xmldom/pull/845"><code>[#845](https://github.com/xmldom/xmldom/issues/845)</code></a></li>
</ul>
<p>Thank you,
<a href="https://github.com/kboshold"><code>@​kboshold</code></a>,
<a href="https://github.com/Ponynjaa"><code>@​Ponynjaa</code></a>,
for your contributions.</p>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.9.6...0.9.7">0.9.7</a></h2>
<h3>Added</h3>
<ul>
<li>Implementation of <code>hasAttributes</code> <a
href="https://redirect.github.com/xmldom/xmldom/pull/804"><code>[#804](https://github.com/xmldom/xmldom/issues/804)</code></a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>locator is now true even when other options are being used for the
DOMParser <a
href="https://redirect.github.com/xmldom/xmldom/issues/802"><code>[#802](https://github.com/xmldom/xmldom/issues/802)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/pull/803"><code>[#803](https://github.com/xmldom/xmldom/issues/803)</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/xmldom/xmldom/commit/189cb78a83e81e1515880988a399e863a8be85ac"><code>189cb78</code></a>
0.8.12</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/ed08df7572f4236d4fd88d16063c3fd8f59c7884"><code>ed08df7</code></a>
fix: XML injection via unsafe CDATA serialization (GHSA-wh4c-j3r5-mjhp)
(<a
href="https://redirect.github.com/xmldom/xmldom/issues/968">#968</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/a5b929ba008f067eeabb427c38de008e36a92796"><code>a5b929b</code></a>
chore: clean up generated test artefacts before running ci-local</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/4e37a205627a08eb64365b13c4e4cce5e86278cb"><code>4e37a20</code></a>
ci: run format:check in lint job</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/ac0ac7714f0e5a7bd7aff5c30f7733666cf03982"><code>ac0ac77</code></a>
chore: ignore generated files when checking formatting</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/968c8939438eec2eca1d003b333cd0fc4595c72d"><code>968c893</code></a>
chore: add local CI script and format:check script</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/ac40424adfa49429811095bcdaf6598255a81a39"><code>ac40424</code></a>
fix: preserve trailing whitespace in ProcessingInstruction data (<a
href="https://redirect.github.com/xmldom/xmldom/issues/962">#962</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/cece7521a3c77da7a10f3fc66521e3e077c9974c"><code>cece752</code></a>
chore: add .nvmrc pointing to node version 18</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/cbf44d90a40703237d217598fa0bcd88770bfa0b"><code>cbf44d9</code></a>
docs: improve links to changes in most recent release</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/c0f14011c7cf93af60b2541898065b7136594f6b"><code>c0f1401</code></a>
0.8.11</li>
<li>Additional commits viewable in <a
href="https://github.com/xmldom/xmldom/compare/0.8.10...0.8.12">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~karfau">karfau</a>, a new releaser for
<code>@​xmldom/xmldom</code> since your current version.</p>
</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
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/lichtblick-suite/lichtblick/network/alerts).

</details>

---------

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

Bumps the webpack group with 2 updates in the / directory:
[webpack](https://github.com/webpack/webpack) and
[webpack-cli](https://github.com/webpack/webpack-cli).

Updates `webpack` from 5.105.3 to 5.105.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack/releases">webpack's
releases</a>.</em></p>
<blockquote>
<h2>v5.105.4</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Add <code>Module.getSourceBasicTypes</code> to distinguish basic
source types and clarify how modules with non-basic source types like
<code>remote</code> still produce JavaScript output. (by <a
href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/20546">#20546</a>)</p>
</li>
<li>
<p>Handle <code>createRequire</code> in expressions. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/20549">#20549</a>)</p>
</li>
<li>
<p>Fixed types for multi stats. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/20556">#20556</a>)</p>
</li>
<li>
<p>Remove empty needless js output for normal css module. (by <a
href="https://github.com/JSerFeng"><code>@​JSerFeng</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/20162">#20162</a>)</p>
</li>
<li>
<p>Update <code>enhanced-resolve</code> to support new features for
<code>tsconfig.json</code>. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/20555">#20555</a>)</p>
</li>
<li>
<p>Narrows export presence guard detection to explicit existence checks
on namespace imports only, i.e. patterns like &quot;x&quot; in ns. (by
<a href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/20561">#20561</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack/blob/main/CHANGELOG.md">webpack's
changelog</a>.</em></p>
<blockquote>
<h2>5.105.4</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Add <code>Module.getSourceBasicTypes</code> to distinguish basic
source types and clarify how modules with non-basic source types like
<code>remote</code> still produce JavaScript output. (by <a
href="https://github.com/xiaoxiaojx"><code>@​xiaoxiaojx</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/20546">#20546</a>)</p>
</li>
<li>
<p>Handle <code>createRequire</code> in expressions. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/20549">#20549</a>)</p>
</li>
<li>
<p>Fixed types for multi stats. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/20556">#20556</a>)</p>
</li>
<li>
<p>Remove empty needless js output for normal css module. (by <a
href="https://github.com/JSerFeng"><code>@​JSerFeng</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/20162">#20162</a>)</p>
</li>
<li>
<p>Update <code>enhanced-resolve</code> to support new features for
<code>tsconfig.json</code>. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack/pull/20555">#20555</a>)</p>
</li>
<li>
<p>Narrows export presence guard detection to explicit existence checks
on namespace imports only, i.e. patterns like &quot;x&quot; in ns. (by
<a href="https://github.com/hai-x"><code>@​hai-x</code></a> in <a
href="https://redirect.github.com/webpack/webpack/pull/20561">#20561</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/webpack/webpack/commit/27c13b44c861908793f160f9f7413b32543c0522"><code>27c13b4</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack/issues/20550">#20550</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/9b2f41ee98e01a9265c430d2c52fa6a9db0e177a"><code>9b2f41e</code></a>
chore: bump terser plugin (<a
href="https://redirect.github.com/webpack/webpack/issues/20569">#20569</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/eafe0605b018dd4e19a46d45fb5d72442772aff1"><code>eafe060</code></a>
fix: narrow the export presence guard detection (<a
href="https://redirect.github.com/webpack/webpack/issues/20561">#20561</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/75d605cb57b23257ee88f99ada7938273ea3a1ff"><code>75d605c</code></a>
refactor: add AppendOnlyStackedSet iteration support and tests (<a
href="https://redirect.github.com/webpack/webpack/issues/20560">#20560</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/afa607d0967f6b0259bfe9f62d99ef97db64bdac"><code>afa607d</code></a>
refactor: remove unused code (<a
href="https://redirect.github.com/webpack/webpack/issues/20562">#20562</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/40989026fa542ceffa2821e5d25ae0d87c0bd09b"><code>4098902</code></a>
test: add source files for web-webworker and
web-webworker-auto-public-path (...</li>
<li><a
href="https://github.com/webpack/webpack/commit/f97be67fdd3c59acff2c0da7dd9f04835b037e4c"><code>f97be67</code></a>
refactor: fix duplicated word in Compilation JSDoc (<a
href="https://redirect.github.com/webpack/webpack/issues/20547">#20547</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/9d76fff9f645d194c293f12dadf029173e9ed1d1"><code>9d76fff</code></a>
refactor: add Module.getSourceBasicTypes for basic JS type detection (<a
href="https://redirect.github.com/webpack/webpack/issues/20546">#20546</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/a3d7839376784b2e44987b77f7d6bcc2ed3a0bdc"><code>a3d7839</code></a>
fix: types for multi stats (<a
href="https://redirect.github.com/webpack/webpack/issues/20556">#20556</a>)</li>
<li><a
href="https://github.com/webpack/webpack/commit/b8e9b057bebccf6268d9b348bc23b056c66a067b"><code>b8e9b05</code></a>
fix: update <code>enhanced-resolve</code> to support new features for
<code>tsconfig.json</code> (#...</li>
<li>Additional commits viewable in <a
href="https://github.com/webpack/webpack/compare/v5.105.3...v5.105.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `webpack-cli` from 6.0.1 to 7.0.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack-cli/releases">webpack-cli's
releases</a>.</em></p>
<blockquote>
<h2>webpack-cli@7.0.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>Resolve configuration path for cache build dependencies. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4707">#4707</a>)</li>
</ul>
<h2>webpack-cli@7.0.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>The <code>file</code> protocol for configuration options
(<code>--config</code>/<code>--extends</code>) is supported. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4702">#4702</a>)</li>
</ul>
<h2>webpack-cli@7.0.0</h2>
<h3>Major Changes</h3>
<ul>
<li>
<p>The minimum supported version of Node.js is <code>20.9.0</code>. (by
<a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Use dynamic import to load <code>webpack.config.js</code>, fallback
to interpret only when configuration can't be load by dynamic import.
Using dynamic imports allows you to take advantage of Node.js's built-in
TypeScript support. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Removed the <code>--node-env</code> argument in favor of the
<code>--config-node-env</code> argument. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>The <code>version</code> command only output versions right now. (by
<a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Removed deprecated API, no action required unless you use
<code>import cli from &quot;webpack-cli&quot;;</code>/<code>const cli =
require(&quot;webpack-cli&quot;);</code>. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Allow configuration freezing. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Use graceful shutdown when file system cache is enabled. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Performance improved. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webpack/webpack-cli/blob/main/CHANGELOG.md">webpack-cli's
changelog</a>.</em></p>
<blockquote>
<h2>7.0.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>Resolve configuration path for cache build dependencies. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4707">#4707</a>)</li>
</ul>
<h2>7.0.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>The <code>file</code> protocol for configuration options
(<code>--config</code>/<code>--extends</code>) is supported. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4702">#4702</a>)</li>
</ul>
<h2>7.0.0</h2>
<h3>Major Changes</h3>
<ul>
<li>
<p>The minimum supported version of Node.js is <code>20.9.0</code>. (by
<a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Use dynamic import to load <code>webpack.config.js</code>, fallback
to interpret only when configuration can't be load by dynamic import.
Using dynamic imports allows you to take advantage of Node.js's built-in
TypeScript support. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Removed the <code>--node-env</code> argument in favor of the
<code>--config-node-env</code> argument. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>The <code>version</code> command only output versions right now. (by
<a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Removed deprecated API, no action required unless you use
<code>import cli from &quot;webpack-cli&quot;;</code>/<code>const cli =
require(&quot;webpack-cli&quot;);</code>. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Allow configuration freezing. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Use graceful shutdown when file system cache is enabled. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
<li>
<p>Performance improved. (by <a
href="https://github.com/alexander-akait"><code>@​alexander-akait</code></a>
in <a
href="https://redirect.github.com/webpack/webpack-cli/pull/4677">#4677</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/webpack/webpack-cli/commit/49efdc01f72effc1d934e3a793b18183679001af"><code>49efdc0</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4708">#4708</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/1fc1b9dae77cda29910f729ecbcf17d2e002c73a"><code>1fc1b9d</code></a>
fix: resolve configuration path for build dependencies (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4707">#4707</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/fd02100816c2f640b0a7ba6bb6bec00f15725ade"><code>fd02100</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4705">#4705</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/a653b02b56e1703b1a945708734d57268e8edde2"><code>a653b02</code></a>
fix: use a new <code>create-webpack-app</code> package name (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4704">#4704</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/173e4bf98f69ba98d707301ff9747527a1d11859"><code>173e4bf</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4703">#4703</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/c03365793a2b5809c820c19cd35a7adeaa77889d"><code>c033657</code></a>
ci: avoid extra step</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/fd2867935aee5264e78226a1afdb79a20513e6c8"><code>fd28679</code></a>
fix: support file protocol in configuration options (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4702">#4702</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/37e4270dc24121d05898c1b3ed29906ad087304e"><code>37e4270</code></a>
chore: normalize <code>package.json</code> (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4700">#4700</a>)</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/d5290e35286a3247344fc9bea7c046f85d4bdf4f"><code>d5290e3</code></a>
ci: fix</li>
<li><a
href="https://github.com/webpack/webpack-cli/commit/0b116f7718ad1f01baac069e903d32049000709d"><code>0b116f7</code></a>
chore(release): new release (<a
href="https://redirect.github.com/webpack/webpack-cli/issues/4679">#4679</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/webpack/webpack-cli/compare/webpack-cli@6.0.1...webpack-cli@7.0.2">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by [GitHub Actions](<a
href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a>
Actions), a new releaser for webpack-cli since your current version.</p>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the jest group with 3 updates:
[jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest),
[jest-environment-jsdom](https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom)
and
[babel-jest](https://github.com/jestjs/jest/tree/HEAD/packages/babel-jest).

Updates `jest` from 30.2.0 to 30.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/releases">jest's
releases</a>.</em></p>
<blockquote>
<h2>v30.3.0</h2>
<h3>Features</h3>
<ul>
<li><code>[jest-config]</code> Add <code>defineConfig</code> and
<code>mergeConfig</code> helpers for type-safe Jest config (<a
href="https://redirect.github.com/jestjs/jest/pull/15844">#15844</a>)</li>
<li><code>[jest-fake-timers]</code> Add <code>setTimerTickMode</code> to
configure how timers advance</li>
<li><code>[*]</code> Reduce token usage when run through LLMs (<a
href="https://github.com/jestjs/jest/commit/3f17932061c0203999451e5852664093de876709"><code>3f17932</code></a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-config]</code> Keep CLI coverage output when using
<code>--json</code> with <code>--outputFile</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15918">#15918</a>)</li>
<li><code>[jest-mock]</code> Use <code>Symbol</code> from test
environment (<a
href="https://redirect.github.com/jestjs/jest/pull/15858">#15858</a>)</li>
<li><code>[jest-reporters]</code> Fix issue where console output not
displayed for GHA reporter even with <code>silent: false</code> option
(<a
href="https://redirect.github.com/jestjs/jest/pull/15864">#15864</a>)</li>
<li><code>[jest-runtime]</code> Fix issue where user cannot utilize
dynamic import despite specifying <code>--experimental-vm-modules</code>
Node option (<a
href="https://redirect.github.com/jestjs/jest/pull/15842">#15842</a>)</li>
<li><code>[jest-test-sequencer]</code> Fix issue where failed tests due
to compilation errors not getting re-executed even with
<code>--onlyFailures</code> CLI option (<a
href="https://redirect.github.com/jestjs/jest/pull/15851">#15851</a>)</li>
<li><code>[jest-util]</code> Make sure
<code>process.features.require_module</code> is <code>false</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15867">#15867</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[*]</code> Replace remaining micromatch uses with
picomatch</li>
<li><code>[deps]</code> Update to sinon/fake-timers v15</li>
<li><code>[docs]</code> Update V30 migration guide to notify users on
<code>jest.mock()</code> work with case-sensitive path (<a
href="https://redirect.github.com/jestjs/jest/pull/15849">#15849</a>)</li>
<li>Updated Twitter icon to match the latest brand guidelines (<a
href="https://redirect.github.com/jestjs/jest/pull/15869">#15869</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/blob/main/CHANGELOG.md">jest's
changelog</a>.</em></p>
<blockquote>
<h2>30.3.0</h2>
<h3>Features</h3>
<ul>
<li><code>[jest-config]</code> Add <code>defineConfig</code> and
<code>mergeConfig</code> helpers for type-safe Jest config (<a
href="https://redirect.github.com/jestjs/jest/pull/15844">#15844</a>)</li>
<li><code>[jest-fake-timers]</code> Add <code>setTimerTickMode</code> to
configure how timers advance</li>
<li><code>[*]</code> Reduce token usage when run through LLMs (<a
href="https://github.com/jestjs/jest/commit/3f17932061c0203999451e5852664093de876709"><code>3f17932</code></a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-config]</code> Keep CLI coverage output when using
<code>--json</code> with <code>--outputFile</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15918">#15918</a>)</li>
<li><code>[jest-mock]</code> Use <code>Symbol</code> from test
environment (<a
href="https://redirect.github.com/jestjs/jest/pull/15858">#15858</a>)</li>
<li><code>[jest-reporters]</code> Fix issue where console output not
displayed for GHA reporter even with <code>silent: false</code> option
(<a
href="https://redirect.github.com/jestjs/jest/pull/15864">#15864</a>)</li>
<li><code>[jest-runtime]</code> Fix issue where user cannot utilize
dynamic import despite specifying <code>--experimental-vm-modules</code>
Node option (<a
href="https://redirect.github.com/jestjs/jest/pull/15842">#15842</a>)</li>
<li><code>[jest-test-sequencer]</code> Fix issue where failed tests due
to compilation errors not getting re-executed even with
<code>--onlyFailures</code> CLI option (<a
href="https://redirect.github.com/jestjs/jest/pull/15851">#15851</a>)</li>
<li><code>[jest-util]</code> Make sure
<code>process.features.require_module</code> is <code>false</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15867">#15867</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[*]</code> Replace remaining micromatch uses with
picomatch</li>
<li><code>[deps]</code> Update to sinon/fake-timers v15</li>
<li><code>[docs]</code> Update V30 migration guide to notify users on
<code>jest.mock()</code> work with case-sensitive path (<a
href="https://redirect.github.com/jestjs/jest/pull/15849">#15849</a>)</li>
<li>Updated Twitter icon to match the latest brand guidelines (<a
href="https://redirect.github.com/jestjs/jest/pull/15869">#15869</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jestjs/jest/commit/efb59c2e81083f8dc941f20d6d20a3af2dc8d068"><code>efb59c2</code></a>
v30.3.0</li>
<li><a
href="https://github.com/jestjs/jest/commit/96c53d30660e51bf76ed2cd1ecc2334c399ac31c"><code>96c53d3</code></a>
feat(jest-config): add <code>defineConfig</code> and
<code>mergeConfig</code> functions (<a
href="https://github.com/jestjs/jest/tree/HEAD/packages/jest/issues/15844">#15844</a>)</li>
<li>See full diff in <a
href="https://github.com/jestjs/jest/commits/v30.3.0/packages/jest">compare
view</a></li>
</ul>
</details>
<br />

Updates `jest-environment-jsdom` from 30.2.0 to 30.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/releases">jest-environment-jsdom's
releases</a>.</em></p>
<blockquote>
<h2>v30.3.0</h2>
<h3>Features</h3>
<ul>
<li><code>[jest-config]</code> Add <code>defineConfig</code> and
<code>mergeConfig</code> helpers for type-safe Jest config (<a
href="https://redirect.github.com/jestjs/jest/pull/15844">#15844</a>)</li>
<li><code>[jest-fake-timers]</code> Add <code>setTimerTickMode</code> to
configure how timers advance</li>
<li><code>[*]</code> Reduce token usage when run through LLMs (<a
href="https://github.com/jestjs/jest/commit/3f17932061c0203999451e5852664093de876709"><code>3f17932</code></a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-config]</code> Keep CLI coverage output when using
<code>--json</code> with <code>--outputFile</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15918">#15918</a>)</li>
<li><code>[jest-mock]</code> Use <code>Symbol</code> from test
environment (<a
href="https://redirect.github.com/jestjs/jest/pull/15858">#15858</a>)</li>
<li><code>[jest-reporters]</code> Fix issue where console output not
displayed for GHA reporter even with <code>silent: false</code> option
(<a
href="https://redirect.github.com/jestjs/jest/pull/15864">#15864</a>)</li>
<li><code>[jest-runtime]</code> Fix issue where user cannot utilize
dynamic import despite specifying <code>--experimental-vm-modules</code>
Node option (<a
href="https://redirect.github.com/jestjs/jest/pull/15842">#15842</a>)</li>
<li><code>[jest-test-sequencer]</code> Fix issue where failed tests due
to compilation errors not getting re-executed even with
<code>--onlyFailures</code> CLI option (<a
href="https://redirect.github.com/jestjs/jest/pull/15851">#15851</a>)</li>
<li><code>[jest-util]</code> Make sure
<code>process.features.require_module</code> is <code>false</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15867">#15867</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[*]</code> Replace remaining micromatch uses with
picomatch</li>
<li><code>[deps]</code> Update to sinon/fake-timers v15</li>
<li><code>[docs]</code> Update V30 migration guide to notify users on
<code>jest.mock()</code> work with case-sensitive path (<a
href="https://redirect.github.com/jestjs/jest/pull/15849">#15849</a>)</li>
<li>Updated Twitter icon to match the latest brand guidelines (<a
href="https://redirect.github.com/jestjs/jest/pull/15869">#15869</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/blob/main/CHANGELOG.md">jest-environment-jsdom's
changelog</a>.</em></p>
<blockquote>
<h2>30.3.0</h2>
<h3>Features</h3>
<ul>
<li><code>[jest-config]</code> Add <code>defineConfig</code> and
<code>mergeConfig</code> helpers for type-safe Jest config (<a
href="https://redirect.github.com/jestjs/jest/pull/15844">#15844</a>)</li>
<li><code>[jest-fake-timers]</code> Add <code>setTimerTickMode</code> to
configure how timers advance</li>
<li><code>[*]</code> Reduce token usage when run through LLMs (<a
href="https://github.com/jestjs/jest/commit/3f17932061c0203999451e5852664093de876709"><code>3f17932</code></a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-config]</code> Keep CLI coverage output when using
<code>--json</code> with <code>--outputFile</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15918">#15918</a>)</li>
<li><code>[jest-mock]</code> Use <code>Symbol</code> from test
environment (<a
href="https://redirect.github.com/jestjs/jest/pull/15858">#15858</a>)</li>
<li><code>[jest-reporters]</code> Fix issue where console output not
displayed for GHA reporter even with <code>silent: false</code> option
(<a
href="https://redirect.github.com/jestjs/jest/pull/15864">#15864</a>)</li>
<li><code>[jest-runtime]</code> Fix issue where user cannot utilize
dynamic import despite specifying <code>--experimental-vm-modules</code>
Node option (<a
href="https://redirect.github.com/jestjs/jest/pull/15842">#15842</a>)</li>
<li><code>[jest-test-sequencer]</code> Fix issue where failed tests due
to compilation errors not getting re-executed even with
<code>--onlyFailures</code> CLI option (<a
href="https://redirect.github.com/jestjs/jest/pull/15851">#15851</a>)</li>
<li><code>[jest-util]</code> Make sure
<code>process.features.require_module</code> is <code>false</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15867">#15867</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[*]</code> Replace remaining micromatch uses with
picomatch</li>
<li><code>[deps]</code> Update to sinon/fake-timers v15</li>
<li><code>[docs]</code> Update V30 migration guide to notify users on
<code>jest.mock()</code> work with case-sensitive path (<a
href="https://redirect.github.com/jestjs/jest/pull/15849">#15849</a>)</li>
<li>Updated Twitter icon to match the latest brand guidelines (<a
href="https://redirect.github.com/jestjs/jest/pull/15869">#15869</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jestjs/jest/commit/efb59c2e81083f8dc941f20d6d20a3af2dc8d068"><code>efb59c2</code></a>
v30.3.0</li>
<li><a
href="https://github.com/jestjs/jest/commit/b5b0220a824d29a443d2af4a56ce227f94478052"><code>b5b0220</code></a>
Remove unused dependencies from jest-environment-jsdom (<a
href="https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom/issues/15928">#15928</a>)</li>
<li>See full diff in <a
href="https://github.com/jestjs/jest/commits/v30.3.0/packages/jest-environment-jsdom">compare
view</a></li>
</ul>
</details>
<br />

Updates `babel-jest` from 30.2.0 to 30.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/releases">babel-jest's
releases</a>.</em></p>
<blockquote>
<h2>v30.3.0</h2>
<h3>Features</h3>
<ul>
<li><code>[jest-config]</code> Add <code>defineConfig</code> and
<code>mergeConfig</code> helpers for type-safe Jest config (<a
href="https://redirect.github.com/jestjs/jest/pull/15844">#15844</a>)</li>
<li><code>[jest-fake-timers]</code> Add <code>setTimerTickMode</code> to
configure how timers advance</li>
<li><code>[*]</code> Reduce token usage when run through LLMs (<a
href="https://github.com/jestjs/jest/commit/3f17932061c0203999451e5852664093de876709"><code>3f17932</code></a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-config]</code> Keep CLI coverage output when using
<code>--json</code> with <code>--outputFile</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15918">#15918</a>)</li>
<li><code>[jest-mock]</code> Use <code>Symbol</code> from test
environment (<a
href="https://redirect.github.com/jestjs/jest/pull/15858">#15858</a>)</li>
<li><code>[jest-reporters]</code> Fix issue where console output not
displayed for GHA reporter even with <code>silent: false</code> option
(<a
href="https://redirect.github.com/jestjs/jest/pull/15864">#15864</a>)</li>
<li><code>[jest-runtime]</code> Fix issue where user cannot utilize
dynamic import despite specifying <code>--experimental-vm-modules</code>
Node option (<a
href="https://redirect.github.com/jestjs/jest/pull/15842">#15842</a>)</li>
<li><code>[jest-test-sequencer]</code> Fix issue where failed tests due
to compilation errors not getting re-executed even with
<code>--onlyFailures</code> CLI option (<a
href="https://redirect.github.com/jestjs/jest/pull/15851">#15851</a>)</li>
<li><code>[jest-util]</code> Make sure
<code>process.features.require_module</code> is <code>false</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15867">#15867</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[*]</code> Replace remaining micromatch uses with
picomatch</li>
<li><code>[deps]</code> Update to sinon/fake-timers v15</li>
<li><code>[docs]</code> Update V30 migration guide to notify users on
<code>jest.mock()</code> work with case-sensitive path (<a
href="https://redirect.github.com/jestjs/jest/pull/15849">#15849</a>)</li>
<li>Updated Twitter icon to match the latest brand guidelines (<a
href="https://redirect.github.com/jestjs/jest/pull/15869">#15869</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jestjs/jest/blob/main/CHANGELOG.md">babel-jest's
changelog</a>.</em></p>
<blockquote>
<h2>30.3.0</h2>
<h3>Features</h3>
<ul>
<li><code>[jest-config]</code> Add <code>defineConfig</code> and
<code>mergeConfig</code> helpers for type-safe Jest config (<a
href="https://redirect.github.com/jestjs/jest/pull/15844">#15844</a>)</li>
<li><code>[jest-fake-timers]</code> Add <code>setTimerTickMode</code> to
configure how timers advance</li>
<li><code>[*]</code> Reduce token usage when run through LLMs (<a
href="https://github.com/jestjs/jest/commit/3f17932061c0203999451e5852664093de876709"><code>3f17932</code></a>)</li>
</ul>
<h3>Fixes</h3>
<ul>
<li><code>[jest-config]</code> Keep CLI coverage output when using
<code>--json</code> with <code>--outputFile</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15918">#15918</a>)</li>
<li><code>[jest-mock]</code> Use <code>Symbol</code> from test
environment (<a
href="https://redirect.github.com/jestjs/jest/pull/15858">#15858</a>)</li>
<li><code>[jest-reporters]</code> Fix issue where console output not
displayed for GHA reporter even with <code>silent: false</code> option
(<a
href="https://redirect.github.com/jestjs/jest/pull/15864">#15864</a>)</li>
<li><code>[jest-runtime]</code> Fix issue where user cannot utilize
dynamic import despite specifying <code>--experimental-vm-modules</code>
Node option (<a
href="https://redirect.github.com/jestjs/jest/pull/15842">#15842</a>)</li>
<li><code>[jest-test-sequencer]</code> Fix issue where failed tests due
to compilation errors not getting re-executed even with
<code>--onlyFailures</code> CLI option (<a
href="https://redirect.github.com/jestjs/jest/pull/15851">#15851</a>)</li>
<li><code>[jest-util]</code> Make sure
<code>process.features.require_module</code> is <code>false</code> (<a
href="https://redirect.github.com/jestjs/jest/pull/15867">#15867</a>)</li>
</ul>
<h3>Chore &amp; Maintenance</h3>
<ul>
<li><code>[*]</code> Replace remaining micromatch uses with
picomatch</li>
<li><code>[deps]</code> Update to sinon/fake-timers v15</li>
<li><code>[docs]</code> Update V30 migration guide to notify users on
<code>jest.mock()</code> work with case-sensitive path (<a
href="https://redirect.github.com/jestjs/jest/pull/15849">#15849</a>)</li>
<li>Updated Twitter icon to match the latest brand guidelines (<a
href="https://redirect.github.com/jestjs/jest/pull/15869">#15869</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jestjs/jest/commit/efb59c2e81083f8dc941f20d6d20a3af2dc8d068"><code>efb59c2</code></a>
v30.3.0</li>
<li><a
href="https://github.com/jestjs/jest/commit/486ae3d6d3ea4da3fccf5d39097f4cebcf132d4f"><code>486ae3d</code></a>
chore: update docusaurus (<a
href="https://github.com/jestjs/jest/tree/HEAD/packages/babel-jest/issues/15860">#15860</a>)</li>
<li>See full diff in <a
href="https://github.com/jestjs/jest/commits/v30.3.0/packages/babel-jest">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>
…babel group (#1026)

Bumps the babel group with 1 update:
[@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).

Updates `@babel/preset-env` from 7.29.0 to 7.29.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/babel/babel/releases"><code>@​babel/preset-env</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v7.29.2 (2026-03-16)</h2>
<h4>:eyeglasses: Spec Compliance</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17840">#17840</a>
[7.x backport] async x =&gt; {} must be in leading pos (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:bug: Bug Fix</h4>
<ul>
<li><code>babel-helpers</code>,
<code>babel-plugin-transform-async-generator-functions</code>,
<code>babel-preset-env</code>, <code>babel-runtime-corejs3</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17805">#17805</a>
[7.x backport] fix: Properly handle await in finally (<a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a>)</li>
</ul>
</li>
<li><code>babel-preset-env</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17789">#17789</a>
[7.x backport] preset-env include/exclude should accept bugfix plugins
(<a href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:house: Internal</h4>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17813">#17813</a>
chore: update eslint peer deps (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
<h4>Committers: 2</h4>
<ul>
<li>Huáng Jùnliàng (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
<li><a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a></li>
</ul>
<h2>v7.29.1 (2026-02-04)</h2>
<h4>:bug: Bug Fix</h4>
<ul>
<li><code>babel-standalone</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17771">#17771</a>
[7.x backport] fix: ensure <code>targets.esmodules</code> is validated
(<a href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
<li><code>babel-generator</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17776">#17776</a>
[7.x backport] Fix undefined when 64 indents (<a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 2</h4>
<ul>
<li>Huáng Jùnliàng (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
<li><a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/babel/babel/commit/37d5595fca9f188f0534458180611f2e776acd31"><code>37d5595</code></a>
v7.29.2</li>
<li><a
href="https://github.com/babel/babel/commit/1c0a08d95ae7e1c788c7e1ae3a10ee53f7c86864"><code>1c0a08d</code></a>
[7.x backport] fix: Properly handle await in finally (<a
href="https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env/issues/17805">#17805</a>)</li>
<li><a
href="https://github.com/babel/babel/commit/061bf95142132ce4200f863f891a8e3a727cd844"><code>061bf95</code></a>
[7.x backport] preset-env include/exclude should accept bugfix plugins
(<a
href="https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env/issues/17789">#17789</a>)</li>
<li>See full diff in <a
href="https://github.com/babel/babel/commits/v7.29.2/packages/babel-preset-env">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@babel/preset-env&package-manager=npm_and_yarn&previous-version=7.29.0&new-version=7.29.2)](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 <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>
Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.8.12 to
0.9.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/xmldom/xmldom/releases"><code>@​xmldom/xmldom</code>'s
releases</a>.</em></p>
<blockquote>
<h2>0.9.9</h2>
<p><a
href="https://github.com/xmldom/xmldom/compare/0.9.8...0.9.9">Commits</a></p>
<h3>Added</h3>
<ul>
<li>implement <code>ParentNode.children</code> getter <a
href="https://redirect.github.com/xmldom/xmldom/pull/960"><code>[#960](https://github.com/xmldom/xmldom/issues/960)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/410"><code>[#410](https://github.com/xmldom/xmldom/issues/410)</code></a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Security: <code>createCDATASection</code> now throws
<code>InvalidCharacterError</code> when <code>data</code> contains
<code>&quot;]]&gt;&quot;</code>, as required by the <a
href="https://dom.spec.whatwg.org/#dom-document-createcdatasection">WHATWG
DOM spec</a>. <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
<li>Security: <code>XMLSerializer</code> now splits CDATASection nodes
whose data contains <code>&quot;]]&gt;&quot;</code> into adjacent CDATA
sections at serialization time, preventing XML injection via mutation
methods (<code>appendData</code>, <code>replaceData</code>, <code>.data
=</code>, <code>.textContent =</code>). <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
<li>correctly traverse ancestor chain in <code>Node.contains</code> <a
href="https://redirect.github.com/xmldom/xmldom/pull/931"><code>[#931](https://github.com/xmldom/xmldom/issues/931)</code></a></li>
</ul>
<p>Code that passes a string containing <code>&quot;]]&gt;&quot;</code>
to <code>createCDATASection</code> and relied on the previously unsafe
behavior will now receive <code>InvalidCharacterError</code>. Use a
mutation method such as <code>appendData</code> if you intentionally
need <code>&quot;]]&gt;&quot;</code> in a CDATASection node's data.</p>
<h3>Chore</h3>
<ul>
<li>updated dependencies</li>
</ul>
<p>Thank you,
<a
href="https://github.com/stevenobiajulu"><code>@​stevenobiajulu</code></a>,
<a href="https://github.com/yoshi389111"><code>@​yoshi389111</code></a>,
<a
href="https://github.com/thesmartshadow"><code>@​thesmartshadow</code></a>,
for your contributions</p>
<p><a
href="https://github.com/xmldom/xmldom/discussions/435">https://github.com/xmldom/xmldom/discussions/435</a></p>
<h2>0.9.8</h2>
<p><a
href="https://github.com/xmldom/xmldom/compare/0.9.8...0.9.7">Commits</a></p>
<h3>Fixed</h3>
<ul>
<li>fix: replace \u2029 as part of normalizeLineEndings <a
href="https://redirect.github.com/xmldom/xmldom/pull/839"><code>[#839](https://github.com/xmldom/xmldom/issues/839)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/838"><code>[#838](https://github.com/xmldom/xmldom/issues/838)</code></a></li>
<li>perf: speed up line detection <a
href="https://redirect.github.com/xmldom/xmldom/pull/847"><code>[#847](https://github.com/xmldom/xmldom/issues/847)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/838"><code>[#838](https://github.com/xmldom/xmldom/issues/838)</code></a></li>
</ul>
<h3>Chore</h3>
<ul>
<li>updated dependencies</li>
<li>drop jazzer and rxjs devDependencies <a
href="https://redirect.github.com/xmldom/xmldom/pull/845"><code>[#845](https://github.com/xmldom/xmldom/issues/845)</code></a></li>
</ul>
<p>Thank you,
<a href="https://github.com/kboshold"><code>@​kboshold</code></a>,
<a href="https://github.com/Ponynjaa"><code>@​Ponynjaa</code></a>,
for your contributions.</p>
<p><a
href="https://github.com/xmldom/xmldom/discussions/435">https://github.com/xmldom/xmldom/discussions/435</a></p>
<h2>0.9.7</h2>
<p><a
href="https://github.com/xmldom/xmldom/compare/0.9.6...0.9.7">Commits</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md"><code>@​xmldom/xmldom</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/xmldom/xmldom/compare/0.9.8...0.9.9">0.9.9</a></h2>
<h3>Added</h3>
<ul>
<li>implement <code>ParentNode.children</code> getter <a
href="https://redirect.github.com/xmldom/xmldom/pull/960"><code>[#960](https://github.com/xmldom/xmldom/issues/960)</code></a>
/ <a
href="https://redirect.github.com/xmldom/xmldom/issues/410"><code>[#410](https://github.com/xmldom/xmldom/issues/410)</code></a></li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Security: <code>createCDATASection</code> now throws
<code>InvalidCharacterError</code> when <code>data</code> contains
<code>&quot;]]&gt;&quot;</code>, as required by the <a
href="https://dom.spec.whatwg.org/#dom-document-createcdatasection">WHATWG
DOM spec</a>. <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
<li>Security: <code>XMLSerializer</code> now splits CDATASection nodes
whose data contains <code>&quot;]]&gt;&quot;</code> into adjacent CDATA
sections at serialization time, preventing XML injection via mutation
methods (<code>appendData</code>, <code>replaceData</code>, <code>.data
=</code>, <code>.textContent =</code>). <a
href="https://github.com/xmldom/xmldom/security/advisories/GHSA-wh4c-j3r5-mjhp"><code>GHSA-wh4c-j3r5-mjhp</code></a></li>
<li>correctly traverse ancestor chain in <code>Node.contains</code> <a
href="https://redirect.github.com/xmldom/xmldom/pull/931"><code>[#931](https://github.com/xmldom/xmldom/issues/931)</code></a></li>
</ul>
<p>Code that passes a string containing <code>&quot;]]&gt;&quot;</code>
to <code>createCDATASection</code> and relied on the previously unsafe
behavior will now receive <code>InvalidCharacterError</code>. Use a
mutation method such as <code>appendData</code> if you intentionally
need <code>&quot;]]&gt;&quot;</code> in a CDATASection node's data.</p>
<h3>Chore</h3>
<ul>
<li>updated dependencies</li>
</ul>
<p>Thank you,
<a
href="https://github.com/stevenobiajulu"><code>@​stevenobiajulu</code></a>,
<a href="https://github.com/yoshi389111"><code>@​yoshi389111</code></a>,
<a
href="https://github.com/thesmartshadow"><code>@​thesmartshadow</code></a>,
for your contributions</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/xmldom/xmldom/commit/7ffb16bce1170c7314151379531147637ab772a1"><code>7ffb16b</code></a>
0.9.9</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/07aade132766def1a8a63b98ddeee814eab24445"><code>07aade1</code></a>
docs: add missing references to changelog (<a
href="https://redirect.github.com/xmldom/xmldom/issues/970">#970</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/2b852e836ab86dbbd6cbaf0537f584dd0b5ac184"><code>2b852e8</code></a>
fix: XML injection via unsafe CDATA serialization (GHSA-wh4c-j3r5-mjhp)
(<a
href="https://redirect.github.com/xmldom/xmldom/issues/969">#969</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/d9adeff0bb2fb91d7e0316ba25c20f8c0d920590"><code>d9adeff</code></a>
chore(deps-dev): bump picomatch from 2.3.1 to 2.3.2 (<a
href="https://redirect.github.com/xmldom/xmldom/issues/966">#966</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/be45d04f152075158877a9443713400e37cdd428"><code>be45d04</code></a>
chore: add local CI script and format:check (<a
href="https://redirect.github.com/xmldom/xmldom/issues/965">#965</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/2d73ddd1515f8d8bcf1e96cf8434384271bf9587"><code>2d73ddd</code></a>
chore(deps-dev): bump yauzl from 3.2.0 to 3.2.1 (<a
href="https://redirect.github.com/xmldom/xmldom/issues/963">#963</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/385c392f62ebe973c41028a48badccdc78db33d2"><code>385c392</code></a>
chore(deps): bump minimatch (<a
href="https://redirect.github.com/xmldom/xmldom/issues/961">#961</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/7750b3120628f136ca2510919433fab4bb30078b"><code>7750b31</code></a>
feat: implement ParentNode.children getter (<a
href="https://redirect.github.com/xmldom/xmldom/issues/960">#960</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/aa806cdfdf00bbfa6bcfff6cca32000689e76422"><code>aa806cd</code></a>
chore(deps-dev): bump lodash from 4.17.21 to 4.17.23 (<a
href="https://redirect.github.com/xmldom/xmldom/issues/958">#958</a>)</li>
<li><a
href="https://github.com/xmldom/xmldom/commit/7d2610c8c0142172daa6a5432e4d7946a78695c0"><code>7d2610c</code></a>
chore(deps): update npm to v11.6.3 (<a
href="https://redirect.github.com/xmldom/xmldom/issues/947">#947</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/xmldom/xmldom/compare/0.8.12...0.9.9">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>
## User-Facing Changes

<!-- will be used as a changelog entry -->

## Description
Correct security issue related to minimatch -- dependency from
`serve-handler` from web workspace
`serve-handler` is already up to date:
https://www.npmjs.com/package/serve-handler?activeTab=versions

Resolves  `high` Dependabot issue:
https://github.com/lichtblick-suite/lichtblick/security/dependabot/124

<!-- link relevant GitHub issues -->
<!-- add `docs` label if this PR requires documentation updates -->
<!-- add relevant metric tracking for experimental / new features -->

## Checklist

- [x] The web version was tested and it is running ok 
- [x] The desktop version was tested and it is running ok
- [ ] This change is covered by unit tests NA
- [ ] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated NA
….0 (#1029)

Bumps
[sonarsource/sonarqube-scan-action](https://github.com/sonarsource/sonarqube-scan-action)
from 7.0.0 to 7.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sonarsource/sonarqube-scan-action/releases">sonarsource/sonarqube-scan-action's
releases</a>.</em></p>
<blockquote>
<h2>v7.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>SQSCANGHA-128 NO-JIRA Bump actions/cache from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/SonarSource/sonarqube-scan-action/pull/219">SonarSource/sonarqube-scan-action#219</a></li>
<li>SQSCANGHA-130 Bump rollup from 4.50.1 to 4.59.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/SonarSource/sonarqube-scan-action/pull/221">SonarSource/sonarqube-scan-action#221</a></li>
<li>SQSCANGHA-131 Bump picomatch from 4.0.3 to 4.0.4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/SonarSource/sonarqube-scan-action/pull/223">SonarSource/sonarqube-scan-action#223</a></li>
<li>SQSCANGHA-132 Upgrade Node to 24 by <a
href="https://github.com/claire-villard-sonarsource"><code>@​claire-villard-sonarsource</code></a>
in <a
href="https://redirect.github.com/SonarSource/sonarqube-scan-action/pull/224">SonarSource/sonarqube-scan-action#224</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/SonarSource/sonarqube-scan-action/compare/v7...v7.1.0">https://github.com/SonarSource/sonarqube-scan-action/compare/v7...v7.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/SonarSource/sonarqube-scan-action/commit/299e4b793aaa83bf2aba7c9c14bedbb485688ec4"><code>299e4b7</code></a>
SQSCANGHA-132 Upgrade Node to 24 (<a
href="https://redirect.github.com/sonarsource/sonarqube-scan-action/issues/224">#224</a>)</li>
<li><a
href="https://github.com/SonarSource/sonarqube-scan-action/commit/3988e54db2467c7e9583a4af619c3f5647d6b8ad"><code>3988e54</code></a>
SQSCANGHA-131 Bump picomatch from 4.0.3 to 4.0.4 (<a
href="https://redirect.github.com/sonarsource/sonarqube-scan-action/issues/223">#223</a>)</li>
<li><a
href="https://github.com/SonarSource/sonarqube-scan-action/commit/9598b8a83feef37de07f549027fab50ecffe6a6e"><code>9598b8a</code></a>
SQSCANGHA-130 Bump rollup from 4.50.1 to 4.59.0 (<a
href="https://redirect.github.com/sonarsource/sonarqube-scan-action/issues/221">#221</a>)</li>
<li><a
href="https://github.com/SonarSource/sonarqube-scan-action/commit/dcc5211de53084482f1c6779dda263459f5274f6"><code>dcc5211</code></a>
SQSCANGHA-128 NO-JIRA Bump actions/cache from 4 to 5 (<a
href="https://redirect.github.com/sonarsource/sonarqube-scan-action/issues/219">#219</a>)</li>
<li><a
href="https://github.com/SonarSource/sonarqube-scan-action/commit/b9f37f9de00914b9db556335bd46019dbafed98d"><code>b9f37f9</code></a>
SQSCANGHA-129 Fix the Analysis Processing team name in CODEOWNERS (<a
href="https://redirect.github.com/sonarsource/sonarqube-scan-action/issues/220">#220</a>)</li>
<li>See full diff in <a
href="https://github.com/sonarsource/sonarqube-scan-action/compare/v7.0.0...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sonarsource/sonarqube-scan-action&package-manager=github_actions&previous-version=7.0.0&new-version=7.1.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>
…update (#1030)

Bumps the npm_and_yarn group with 1 update in the / directory:
[lodash-es](https://github.com/lodash/lodash).
Bumps the npm_and_yarn group with 1 update in the /packages/hooks
directory: [lodash-es](https://github.com/lodash/lodash).
Bumps the npm_and_yarn group with 1 update in the /packages/suite-base
directory: [lodash-es](https://github.com/lodash/lodash).

Updates `lodash-es` from 4.17.23 to 4.18.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lodash/lodash/releases">lodash-es's
releases</a>.</em></p>
<blockquote>
<h2>4.18.1</h2>
<h2>Bugs</h2>
<p>Fixes a <code>ReferenceError</code> issue in <code>lodash</code>
<code>lodash-es</code> <code>lodash-amd</code> and
<code>lodash.template</code> when using the <code>template</code> and
<code>fromPairs</code> functions from the modular builds. See <a
href="https://redirect.github.com/lodash/lodash/issues/6167#issuecomment-4165269769">lodash/lodash#6167</a></p>
<p>These defects were related to how lodash distributions are built from
the main branch using <a
href="https://github.com/lodash-archive/lodash-cli">https://github.com/lodash-archive/lodash-cli</a>.
When internal dependencies change inside lodash functions, equivalent
updates need to be made to a mapping in the lodash-cli. (hey, it was
ahead of its time once upon a time!). We know this, but we missed it in
the last release. It's the kind of thing that passes in CI, but fails bc
the build is not the same thing you tested.</p>
<p>There is no diff on main for this, but you can see the diffs for each
of the npm packages on their respective branches:</p>
<ul>
<li><code>lodash</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm">https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm</a></li>
<li><code>lodash-es</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es">https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es</a></li>
<li><code>lodash-amd</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd">https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd</a></li>
<li><code>lodash.template</code><a
href="https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages">https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages</a></li>
</ul>
<h2>4.18.0</h2>
<h2>v4.18.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.0">https://github.com/lodash/lodash/compare/4.17.23...4.18.0</a></p>
<h3>Security</h3>
<p><strong><code>_.unset</code> / <code>_.omit</code></strong>: Fixed
prototype pollution via <code>constructor</code>/<code>prototype</code>
path traversal (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh">GHSA-f23m-r3pf-42rh</a>,
<a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b">fe8d32e</a>).
Previously, array-wrapped path segments and primitive roots could bypass
the existing guards, allowing deletion of properties from built-in
prototypes. Now <code>constructor</code> and <code>prototype</code> are
blocked unconditionally as non-terminal path keys, matching
<code>baseSet</code>. Calls that previously returned <code>true</code>
and deleted the property now return <code>false</code> and leave the
target untouched.</p>
<p><strong><code>_.template</code></strong>: Fixed code injection via
<code>imports</code> keys (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-r5fr-rjxr-66jc">GHSA-r5fr-rjxr-66jc</a>,
CVE-2026-4800, <a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6">879aaa9</a>).
Fixes an incomplete patch for CVE-2021-23337. The <code>variable</code>
option was validated against <code>reForbiddenIdentifierChars</code> but
<code>importsKeys</code> was left unguarded, allowing code injection via
the same <code>Function()</code> constructor sink. <code>imports</code>
keys containing forbidden identifier characters now throw
<code>&quot;Invalid imports option passed into
_.template&quot;</code>.</p>
<h3>Docs</h3>
<ul>
<li>Add security notice for <code>_.template</code> in threat model and
API docs (<a
href="https://redirect.github.com/lodash/lodash/pull/6099">#6099</a>)</li>
<li>Document <code>lower &gt; upper</code> behavior in
<code>_.random</code> (<a
href="https://redirect.github.com/lodash/lodash/pull/6115">#6115</a>)</li>
<li>Fix quotes in <code>_.compact</code> jsdoc (<a
href="https://redirect.github.com/lodash/lodash/pull/6090">#6090</a>)</li>
</ul>
<h3><code>lodash.*</code> modular packages</h3>
<p><a
href="https://redirect.github.com/lodash/lodash/pull/6157">Diff</a></p>
<p>We have also regenerated and published a select number of the
<code>lodash.*</code> modular packages.</p>
<p>These modular packages had fallen out of sync significantly from the
minor/patch updates to lodash. Specifically, we have brought the
following packages up to parity w/ the latest lodash release because
they have had CVEs on them in the past:</p>
<ul>
<li><a
href="https://www.npmjs.com/package/lodash.orderby">lodash.orderby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.tonumber">lodash.tonumber</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trim">lodash.trim</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trimend">lodash.trimend</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.sortedindexby">lodash.sortedindexby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.zipobjectdeep">lodash.zipobjectdeep</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.unset">lodash.unset</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.omit">lodash.omit</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.template">lodash.template</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lodash/lodash/commit/cb0b9b9212521c08e3eafe7c8cb0af1b42b6649e"><code>cb0b9b9</code></a>
release(patch): bump main to 4.18.1 (<a
href="https://redirect.github.com/lodash/lodash/issues/6177">#6177</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/75535f57883b7225adb96de1cfc1cd4169cfcb51"><code>75535f5</code></a>
chore: prune stale advisory refs (<a
href="https://redirect.github.com/lodash/lodash/issues/6170">#6170</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/62e91bc6a39c98d85b9ada8c44d40593deaf82a4"><code>62e91bc</code></a>
docs: remove n_ Node.js &lt; 6 REPL note from README (<a
href="https://redirect.github.com/lodash/lodash/issues/6165">#6165</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/59be2de61f8aa9461c7856533b51d31b7d8babc4"><code>59be2de</code></a>
release(minor): bump to 4.18.0 (<a
href="https://redirect.github.com/lodash/lodash/issues/6161">#6161</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/af634573030f979194871da7c68f79420992f53d"><code>af63457</code></a>
fix: broken tests for _.template 879aaa9</li>
<li><a
href="https://github.com/lodash/lodash/commit/1073a7693e1727e0cf3641e5f71f75ddcf8de7c0"><code>1073a76</code></a>
fix: linting issues</li>
<li><a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6"><code>879aaa9</code></a>
fix: validate imports keys in _.template</li>
<li><a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b"><code>fe8d32e</code></a>
fix: block prototype pollution in baseUnset via constructor/prototype
traversal</li>
<li><a
href="https://github.com/lodash/lodash/commit/18ba0a32f42fd02117f096b032f89c984173462d"><code>18ba0a3</code></a>
refactor(fromPairs): use baseAssignValue for consistent assignment (<a
href="https://redirect.github.com/lodash/lodash/issues/6153">#6153</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/b8190803d48d60b8c80ad45d39125f32fa618cb2"><code>b819080</code></a>
ci: add dist sync validation workflow (<a
href="https://redirect.github.com/lodash/lodash/issues/6137">#6137</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `lodash-es` from 4.17.23 to 4.18.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lodash/lodash/releases">lodash-es's
releases</a>.</em></p>
<blockquote>
<h2>4.18.1</h2>
<h2>Bugs</h2>
<p>Fixes a <code>ReferenceError</code> issue in <code>lodash</code>
<code>lodash-es</code> <code>lodash-amd</code> and
<code>lodash.template</code> when using the <code>template</code> and
<code>fromPairs</code> functions from the modular builds. See <a
href="https://redirect.github.com/lodash/lodash/issues/6167#issuecomment-4165269769">lodash/lodash#6167</a></p>
<p>These defects were related to how lodash distributions are built from
the main branch using <a
href="https://github.com/lodash-archive/lodash-cli">https://github.com/lodash-archive/lodash-cli</a>.
When internal dependencies change inside lodash functions, equivalent
updates need to be made to a mapping in the lodash-cli. (hey, it was
ahead of its time once upon a time!). We know this, but we missed it in
the last release. It's the kind of thing that passes in CI, but fails bc
the build is not the same thing you tested.</p>
<p>There is no diff on main for this, but you can see the diffs for each
of the npm packages on their respective branches:</p>
<ul>
<li><code>lodash</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm">https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm</a></li>
<li><code>lodash-es</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es">https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es</a></li>
<li><code>lodash-amd</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd">https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd</a></li>
<li><code>lodash.template</code><a
href="https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages">https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages</a></li>
</ul>
<h2>4.18.0</h2>
<h2>v4.18.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.0">https://github.com/lodash/lodash/compare/4.17.23...4.18.0</a></p>
<h3>Security</h3>
<p><strong><code>_.unset</code> / <code>_.omit</code></strong>: Fixed
prototype pollution via <code>constructor</code>/<code>prototype</code>
path traversal (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh">GHSA-f23m-r3pf-42rh</a>,
<a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b">fe8d32e</a>).
Previously, array-wrapped path segments and primitive roots could bypass
the existing guards, allowing deletion of properties from built-in
prototypes. Now <code>constructor</code> and <code>prototype</code> are
blocked unconditionally as non-terminal path keys, matching
<code>baseSet</code>. Calls that previously returned <code>true</code>
and deleted the property now return <code>false</code> and leave the
target untouched.</p>
<p><strong><code>_.template</code></strong>: Fixed code injection via
<code>imports</code> keys (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-r5fr-rjxr-66jc">GHSA-r5fr-rjxr-66jc</a>,
CVE-2026-4800, <a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6">879aaa9</a>).
Fixes an incomplete patch for CVE-2021-23337. The <code>variable</code>
option was validated against <code>reForbiddenIdentifierChars</code> but
<code>importsKeys</code> was left unguarded, allowing code injection via
the same <code>Function()</code> constructor sink. <code>imports</code>
keys containing forbidden identifier characters now throw
<code>&quot;Invalid imports option passed into
_.template&quot;</code>.</p>
<h3>Docs</h3>
<ul>
<li>Add security notice for <code>_.template</code> in threat model and
API docs (<a
href="https://redirect.github.com/lodash/lodash/pull/6099">#6099</a>)</li>
<li>Document <code>lower &gt; upper</code> behavior in
<code>_.random</code> (<a
href="https://redirect.github.com/lodash/lodash/pull/6115">#6115</a>)</li>
<li>Fix quotes in <code>_.compact</code> jsdoc (<a
href="https://redirect.github.com/lodash/lodash/pull/6090">#6090</a>)</li>
</ul>
<h3><code>lodash.*</code> modular packages</h3>
<p><a
href="https://redirect.github.com/lodash/lodash/pull/6157">Diff</a></p>
<p>We have also regenerated and published a select number of the
<code>lodash.*</code> modular packages.</p>
<p>These modular packages had fallen out of sync significantly from the
minor/patch updates to lodash. Specifically, we have brought the
following packages up to parity w/ the latest lodash release because
they have had CVEs on them in the past:</p>
<ul>
<li><a
href="https://www.npmjs.com/package/lodash.orderby">lodash.orderby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.tonumber">lodash.tonumber</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trim">lodash.trim</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trimend">lodash.trimend</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.sortedindexby">lodash.sortedindexby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.zipobjectdeep">lodash.zipobjectdeep</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.unset">lodash.unset</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.omit">lodash.omit</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.template">lodash.template</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lodash/lodash/commit/cb0b9b9212521c08e3eafe7c8cb0af1b42b6649e"><code>cb0b9b9</code></a>
release(patch): bump main to 4.18.1 (<a
href="https://redirect.github.com/lodash/lodash/issues/6177">#6177</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/75535f57883b7225adb96de1cfc1cd4169cfcb51"><code>75535f5</code></a>
chore: prune stale advisory refs (<a
href="https://redirect.github.com/lodash/lodash/issues/6170">#6170</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/62e91bc6a39c98d85b9ada8c44d40593deaf82a4"><code>62e91bc</code></a>
docs: remove n_ Node.js &lt; 6 REPL note from README (<a
href="https://redirect.github.com/lodash/lodash/issues/6165">#6165</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/59be2de61f8aa9461c7856533b51d31b7d8babc4"><code>59be2de</code></a>
release(minor): bump to 4.18.0 (<a
href="https://redirect.github.com/lodash/lodash/issues/6161">#6161</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/af634573030f979194871da7c68f79420992f53d"><code>af63457</code></a>
fix: broken tests for _.template 879aaa9</li>
<li><a
href="https://github.com/lodash/lodash/commit/1073a7693e1727e0cf3641e5f71f75ddcf8de7c0"><code>1073a76</code></a>
fix: linting issues</li>
<li><a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6"><code>879aaa9</code></a>
fix: validate imports keys in _.template</li>
<li><a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b"><code>fe8d32e</code></a>
fix: block prototype pollution in baseUnset via constructor/prototype
traversal</li>
<li><a
href="https://github.com/lodash/lodash/commit/18ba0a32f42fd02117f096b032f89c984173462d"><code>18ba0a3</code></a>
refactor(fromPairs): use baseAssignValue for consistent assignment (<a
href="https://redirect.github.com/lodash/lodash/issues/6153">#6153</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/b8190803d48d60b8c80ad45d39125f32fa618cb2"><code>b819080</code></a>
ci: add dist sync validation workflow (<a
href="https://redirect.github.com/lodash/lodash/issues/6137">#6137</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `lodash-es` from 4.17.23 to 4.18.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lodash/lodash/releases">lodash-es's
releases</a>.</em></p>
<blockquote>
<h2>4.18.1</h2>
<h2>Bugs</h2>
<p>Fixes a <code>ReferenceError</code> issue in <code>lodash</code>
<code>lodash-es</code> <code>lodash-amd</code> and
<code>lodash.template</code> when using the <code>template</code> and
<code>fromPairs</code> functions from the modular builds. See <a
href="https://redirect.github.com/lodash/lodash/issues/6167#issuecomment-4165269769">lodash/lodash#6167</a></p>
<p>These defects were related to how lodash distributions are built from
the main branch using <a
href="https://github.com/lodash-archive/lodash-cli">https://github.com/lodash-archive/lodash-cli</a>.
When internal dependencies change inside lodash functions, equivalent
updates need to be made to a mapping in the lodash-cli. (hey, it was
ahead of its time once upon a time!). We know this, but we missed it in
the last release. It's the kind of thing that passes in CI, but fails bc
the build is not the same thing you tested.</p>
<p>There is no diff on main for this, but you can see the diffs for each
of the npm packages on their respective branches:</p>
<ul>
<li><code>lodash</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm">https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm</a></li>
<li><code>lodash-es</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es">https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es</a></li>
<li><code>lodash-amd</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd">https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd</a></li>
<li><code>lodash.template</code><a
href="https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages">https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages</a></li>
</ul>
<h2>4.18.0</h2>
<h2>v4.18.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.0">https://github.com/lodash/lodash/compare/4.17.23...4.18.0</a></p>
<h3>Security</h3>
<p><strong><code>_.unset</code> / <code>_.omit</code></strong>: Fixed
prototype pollution via <code>constructor</code>/<code>prototype</code>
path traversal (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh">GHSA-f23m-r3pf-42rh</a>,
<a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b">fe8d32e</a>).
Previously, array-wrapped path segments and primitive roots could bypass
the existing guards, allowing deletion of properties from built-in
prototypes. Now <code>constructor</code> and <code>prototype</code> are
blocked unconditionally as non-terminal path keys, matching
<code>baseSet</code>. Calls that previously returned <code>true</code>
and deleted the property now return <code>false</code> and leave the
target untouched.</p>
<p><strong><code>_.template</code></strong>: Fixed code injection via
<code>imports</code> keys (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-r5fr-rjxr-66jc">GHSA-r5fr-rjxr-66jc</a>,
CVE-2026-4800, <a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6">879aaa9</a>).
Fixes an incomplete patch for CVE-2021-23337. The <code>variable</code>
option was validated against <code>reForbiddenIdentifierChars</code> but
<code>importsKeys</code> was left unguarded, allowing code injection via
the same <code>Function()</code> constructor sink. <code>imports</code>
keys containing forbidden identifier characters now throw
<code>&quot;Invalid imports option passed into
_.template&quot;</code>.</p>
<h3>Docs</h3>
<ul>
<li>Add security notice for <code>_.template</code> in threat model and
API docs (<a
href="https://redirect.github.com/lodash/lodash/pull/6099">#6099</a>)</li>
<li>Document <code>lower &gt; upper</code> behavior in
<code>_.random</code> (<a
href="https://redirect.github.com/lodash/lodash/pull/6115">#6115</a>)</li>
<li>Fix quotes in <code>_.compact</code> jsdoc (<a
href="https://redirect.github.com/lodash/lodash/pull/6090">#6090</a>)</li>
</ul>
<h3><code>lodash.*</code> modular packages</h3>
<p><a
href="https://redirect.github.com/lodash/lodash/pull/6157">Diff</a></p>
<p>We have also regenerated and published a select number of the
<code>lodash.*</code> modular packages.</p>
<p>These modular packages had fallen out of sync significantly from the
minor/patch updates to lodash. Specifically, we have brought the
following packages up to parity w/ the latest lodash release because
they have had CVEs on them in the past:</p>
<ul>
<li><a
href="https://www.npmjs.com/package/lodash.orderby">lodash.orderby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.tonumber">lodash.tonumber</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trim">lodash.trim</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trimend">lodash.trimend</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.sortedindexby">lodash.sortedindexby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.zipobjectdeep">lodash.zipobjectdeep</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.unset">lodash.unset</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.omit">lodash.omit</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.template">lodash.template</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lodash/lodash/commit/cb0b9b9212521c08e3eafe7c8cb0af1b42b6649e"><code>cb0b9b9</code></a>
release(patch): bump main to 4.18.1 (<a
href="https://redirect.github.com/lodash/lodash/issues/6177">#6177</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/75535f57883b7225adb96de1cfc1cd4169cfcb51"><code>75535f5</code></a>
chore: prune stale advisory refs (<a
href="https://redirect.github.com/lodash/lodash/issues/6170">#6170</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/62e91bc6a39c98d85b9ada8c44d40593deaf82a4"><code>62e91bc</code></a>
docs: remove n_ Node.js &lt; 6 REPL note from README (<a
href="https://redirect.github.com/lodash/lodash/issues/6165">#6165</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/59be2de61f8aa9461c7856533b51d31b7d8babc4"><code>59be2de</code></a>
release(minor): bump to 4.18.0 (<a
href="https://redirect.github.com/lodash/lodash/issues/6161">#6161</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/af634573030f979194871da7c68f79420992f53d"><code>af63457</code></a>
fix: broken tests for _.template 879aaa9</li>
<li><a
href="https://github.com/lodash/lodash/commit/1073a7693e1727e0cf3641e5f71f75ddcf8de7c0"><code>1073a76</code></a>
fix: linting issues</li>
<li><a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6"><code>879aaa9</code></a>
fix: validate imports keys in _.template</li>
<li><a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b"><code>fe8d32e</code></a>
fix: block prototype pollution in baseUnset via constructor/prototype
traversal</li>
<li><a
href="https://github.com/lodash/lodash/commit/18ba0a32f42fd02117f096b032f89c984173462d"><code>18ba0a3</code></a>
refactor(fromPairs): use baseAssignValue for consistent assignment (<a
href="https://redirect.github.com/lodash/lodash/issues/6153">#6153</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/b8190803d48d60b8c80ad45d39125f32fa618cb2"><code>b819080</code></a>
ci: add dist sync validation workflow (<a
href="https://redirect.github.com/lodash/lodash/issues/6137">#6137</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.1">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
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/lichtblick-suite/lichtblick/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…roup across 1 directory (#1032)

Bumps the npm_and_yarn group with 1 update in the / directory:
[lodash](https://github.com/lodash/lodash).

Updates `lodash` from 4.17.23 to 4.18.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lodash/lodash/releases">lodash's
releases</a>.</em></p>
<blockquote>
<h2>4.18.1</h2>
<h2>Bugs</h2>
<p>Fixes a <code>ReferenceError</code> issue in <code>lodash</code>
<code>lodash-es</code> <code>lodash-amd</code> and
<code>lodash.template</code> when using the <code>template</code> and
<code>fromPairs</code> functions from the modular builds. See <a
href="https://redirect.github.com/lodash/lodash/issues/6167#issuecomment-4165269769">lodash/lodash#6167</a></p>
<p>These defects were related to how lodash distributions are built from
the main branch using <a
href="https://github.com/lodash-archive/lodash-cli">https://github.com/lodash-archive/lodash-cli</a>.
When internal dependencies change inside lodash functions, equivalent
updates need to be made to a mapping in the lodash-cli. (hey, it was
ahead of its time once upon a time!). We know this, but we missed it in
the last release. It's the kind of thing that passes in CI, but fails bc
the build is not the same thing you tested.</p>
<p>There is no diff on main for this, but you can see the diffs for each
of the npm packages on their respective branches:</p>
<ul>
<li><code>lodash</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm">https://github.com/lodash/lodash/compare/4.18.0-npm...4.18.1-npm</a></li>
<li><code>lodash-es</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es">https://github.com/lodash/lodash/compare/4.18.0-es...4.18.1-es</a></li>
<li><code>lodash-amd</code>: <a
href="https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd">https://github.com/lodash/lodash/compare/4.18.0-amd...4.18.1-amd</a></li>
<li><code>lodash.template</code><a
href="https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages">https://github.com/lodash/lodash/compare/4.18.0-npm-packages...4.18.1-npm-packages</a></li>
</ul>
<h2>4.18.0</h2>
<h2>v4.18.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.0">https://github.com/lodash/lodash/compare/4.17.23...4.18.0</a></p>
<h3>Security</h3>
<p><strong><code>_.unset</code> / <code>_.omit</code></strong>: Fixed
prototype pollution via <code>constructor</code>/<code>prototype</code>
path traversal (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh">GHSA-f23m-r3pf-42rh</a>,
<a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b">fe8d32e</a>).
Previously, array-wrapped path segments and primitive roots could bypass
the existing guards, allowing deletion of properties from built-in
prototypes. Now <code>constructor</code> and <code>prototype</code> are
blocked unconditionally as non-terminal path keys, matching
<code>baseSet</code>. Calls that previously returned <code>true</code>
and deleted the property now return <code>false</code> and leave the
target untouched.</p>
<p><strong><code>_.template</code></strong>: Fixed code injection via
<code>imports</code> keys (<a
href="https://github.com/lodash/lodash/security/advisories/GHSA-r5fr-rjxr-66jc">GHSA-r5fr-rjxr-66jc</a>,
CVE-2026-4800, <a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6">879aaa9</a>).
Fixes an incomplete patch for CVE-2021-23337. The <code>variable</code>
option was validated against <code>reForbiddenIdentifierChars</code> but
<code>importsKeys</code> was left unguarded, allowing code injection via
the same <code>Function()</code> constructor sink. <code>imports</code>
keys containing forbidden identifier characters now throw
<code>&quot;Invalid imports option passed into
_.template&quot;</code>.</p>
<h3>Docs</h3>
<ul>
<li>Add security notice for <code>_.template</code> in threat model and
API docs (<a
href="https://redirect.github.com/lodash/lodash/pull/6099">#6099</a>)</li>
<li>Document <code>lower &gt; upper</code> behavior in
<code>_.random</code> (<a
href="https://redirect.github.com/lodash/lodash/pull/6115">#6115</a>)</li>
<li>Fix quotes in <code>_.compact</code> jsdoc (<a
href="https://redirect.github.com/lodash/lodash/pull/6090">#6090</a>)</li>
</ul>
<h3><code>lodash.*</code> modular packages</h3>
<p><a
href="https://redirect.github.com/lodash/lodash/pull/6157">Diff</a></p>
<p>We have also regenerated and published a select number of the
<code>lodash.*</code> modular packages.</p>
<p>These modular packages had fallen out of sync significantly from the
minor/patch updates to lodash. Specifically, we have brought the
following packages up to parity w/ the latest lodash release because
they have had CVEs on them in the past:</p>
<ul>
<li><a
href="https://www.npmjs.com/package/lodash.orderby">lodash.orderby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.tonumber">lodash.tonumber</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trim">lodash.trim</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.trimend">lodash.trimend</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.sortedindexby">lodash.sortedindexby</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.zipobjectdeep">lodash.zipobjectdeep</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.unset">lodash.unset</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.omit">lodash.omit</a></li>
<li><a
href="https://www.npmjs.com/package/lodash.template">lodash.template</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/lodash/lodash/commit/cb0b9b9212521c08e3eafe7c8cb0af1b42b6649e"><code>cb0b9b9</code></a>
release(patch): bump main to 4.18.1 (<a
href="https://redirect.github.com/lodash/lodash/issues/6177">#6177</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/75535f57883b7225adb96de1cfc1cd4169cfcb51"><code>75535f5</code></a>
chore: prune stale advisory refs (<a
href="https://redirect.github.com/lodash/lodash/issues/6170">#6170</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/62e91bc6a39c98d85b9ada8c44d40593deaf82a4"><code>62e91bc</code></a>
docs: remove n_ Node.js &lt; 6 REPL note from README (<a
href="https://redirect.github.com/lodash/lodash/issues/6165">#6165</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/59be2de61f8aa9461c7856533b51d31b7d8babc4"><code>59be2de</code></a>
release(minor): bump to 4.18.0 (<a
href="https://redirect.github.com/lodash/lodash/issues/6161">#6161</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/af634573030f979194871da7c68f79420992f53d"><code>af63457</code></a>
fix: broken tests for _.template 879aaa9</li>
<li><a
href="https://github.com/lodash/lodash/commit/1073a7693e1727e0cf3641e5f71f75ddcf8de7c0"><code>1073a76</code></a>
fix: linting issues</li>
<li><a
href="https://github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6"><code>879aaa9</code></a>
fix: validate imports keys in _.template</li>
<li><a
href="https://github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b"><code>fe8d32e</code></a>
fix: block prototype pollution in baseUnset via constructor/prototype
traversal</li>
<li><a
href="https://github.com/lodash/lodash/commit/18ba0a32f42fd02117f096b032f89c984173462d"><code>18ba0a3</code></a>
refactor(fromPairs): use baseAssignValue for consistent assignment (<a
href="https://redirect.github.com/lodash/lodash/issues/6153">#6153</a>)</li>
<li><a
href="https://github.com/lodash/lodash/commit/b8190803d48d60b8c80ad45d39125f32fa618cb2"><code>b819080</code></a>
ci: add dist sync validation workflow (<a
href="https://redirect.github.com/lodash/lodash/issues/6137">#6137</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/lodash/lodash/compare/4.17.23...4.18.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=lodash&package-manager=npm_and_yarn&previous-version=4.17.23&new-version=4.18.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 <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
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/lichtblick-suite/lichtblick/network/alerts).

</details>

---------

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

Bumps the npm_and_yarn group with 1 update in the / directory:
[electron](https://github.com/electron/electron).
Bumps the npm_and_yarn group with 1 update in the
/packages/suite-desktop directory:
[electron](https://github.com/electron/electron).

Updates `electron` from 39.2.7 to 39.8.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/electron/electron/releases">electron's
releases</a>.</em></p>
<blockquote>
<h2>electron v39.8.3</h2>
<h1>Release Notes for v39.8.3</h1>
<h2>Fixes</h2>
<ul>
<li>Added additional ASAR support to additional <code>fs</code> copy
methods. <a
href="https://redirect.github.com/electron/electron/pull/50284">#50284</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50287">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50286">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50285">42</a>)<!--
raw HTML omitted --></li>
<li>Fixed user resizing of transparent windows on win32 platform. <a
href="https://redirect.github.com/electron/electron/pull/50300">#50300</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50301">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50298">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50299">42</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>electron v39.8.2</h2>
<h1>Release Notes for v39.8.2</h1>
<h2>Other Changes</h2>
<ul>
<li>Backported fix for b/491421267. <a
href="https://redirect.github.com/electron/electron/pull/50230">#50230</a></li>
</ul>
<h2>electron v39.8.1</h2>
<h1>Release Notes for v39.8.1</h1>
<h2>Fixes</h2>
<ul>
<li>Added validation to protocol client methods to reject protocol names
that do not conform to the RFC 3986 URI scheme grammar. <a
href="https://redirect.github.com/electron/electron/pull/50156">#50156</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50157">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50158">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50155">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue on macOS where calling
<code>autoUpdater.quitAndInstall()</code> could fail if
<code>checkForUpdates()</code> was called again after an update was
already downloaded. <a
href="https://redirect.github.com/electron/electron/pull/50215">#50215</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50216">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50217">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where Chrome Devtools menus may not appear in certain
embedded windows. <a
href="https://redirect.github.com/electron/electron/pull/50136">#50136</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50138">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50137">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where <code>additionalData</code> passed to
<code>app.requestSingleInstanceLock</code> on Windows could be truncated
or fail to deserialize in the primary instance's
<code>second-instance</code> event. <a
href="https://redirect.github.com/electron/electron/pull/50174">#50174</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50177">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50162">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50154">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where <code>screen.getCursorScreenPoint()</code>
crashed on Wayland when it was called before a
<code>BrowserWindow</code> had been created. <a
href="https://redirect.github.com/electron/electron/pull/50106">#50106</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50104">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50105">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where calling <code>setBounds</code> on a
<code>WebContentsView</code> could trigger redundant
<code>page-favicon-updated</code> events even when the favicon had not
changed. <a
href="https://redirect.github.com/electron/electron/pull/50086">#50086</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50084">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50085">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where invalid characters in custom protocol or
webRequest response header values were not rejected. <a
href="https://redirect.github.com/electron/electron/pull/50129">#50129</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50130">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50131">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50132">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where permission and device-chooser handlers received
the top-level page origin instead of the requesting subframe's origin.
<a
href="https://redirect.github.com/electron/electron/pull/50147">#50147</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50151">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50149">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50148">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where traffic light buttons would flash at position
(0,0) when restoring a window with a custom
<code>trafficLightPosition</code> from minimization on macOS. <a
href="https://redirect.github.com/electron/electron/pull/50208">#50208</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50207">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50209">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed bug where opening a message box immediately upon closing a
child window may cause the parent window to freeze on Windows. <a
href="https://redirect.github.com/electron/electron/pull/50190">#50190</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50189">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50191">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed menu bar hiding after a call to
<code>win.setFullScreen(false)</code> when not in fullscreen on Linux.
<a
href="https://redirect.github.com/electron/electron/pull/49995">#49995</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/49994">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/49996">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed shutdown crash on windows when hidden titlebar is enabled. <a
href="https://redirect.github.com/electron/electron/pull/50054">#50054</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50053">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50055">41</a>)<!--
raw HTML omitted --></li>
<li>Reverted AltGr key fix that caused menu bar to no longer show on
Windows. <a
href="https://redirect.github.com/electron/electron/pull/50109">#50109</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50110">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50111">41</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Backported fix for b/484983991. <a
href="https://redirect.github.com/electron/electron/pull/50167">#50167</a></li>
<li>Backported fix for chromium:485622239. <a
href="https://redirect.github.com/electron/electron/pull/50171">#50171</a></li>
<li>Updated Node.js to v22.22.1. <a
href="https://redirect.github.com/electron/electron/pull/50100">#50100</a></li>
</ul>
<h2>electron v39.8.0</h2>
<h1>Release Notes for v39.8.0</h1>
<h2>Features</h2>
<ul>
<li>Added support for <code>--experimental-transform-types</code>. <a
href="https://redirect.github.com/electron/electron/pull/49881">#49881</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/49883">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/49882">41</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>Fixes</h2>
<ul>
<li>Fixed an issue on macOS where Universal Links were not delivered to
<code>app.on('continue-activity')</code> on cold launch when
<code>NSUserActivity.userInfo</code> was nil. <a
href="https://redirect.github.com/electron/electron/pull/50004">#50004</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50005">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50006">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where <code>VideoFrame</code> objects returned
through <code>contextBridge</code> had an incorrect prototype. <a
href="https://redirect.github.com/electron/electron/pull/50021">#50021</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50022">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50023">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where setting <code>zoomFactor</code> in
<code>setWindowOpenHandler</code>'s
<code>overrideBrowserWindowOptions</code> had no effect on windows
opened via <code>window.open()</code>. <a
href="https://redirect.github.com/electron/electron/pull/49910">#49910</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/49909">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/49911">41</a>)<!--
raw HTML omitted --></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/electron/electron/commit/e6928c13198c854aa014c319d72eea599e2e0ee7"><code>e6928c1</code></a>
fix: user resizable transparent windows on win32 (<a
href="https://redirect.github.com/electron/electron/issues/50300">#50300</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/976a7bece504db4583a4c66f279eccd49d97c623"><code>976a7be</code></a>
fix: add ASAR support to additional copy methods (<a
href="https://redirect.github.com/electron/electron/issues/50284">#50284</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/03244a56f140c034ea80ed58557d99c7cd23fedd"><code>03244a5</code></a>
ci: update actions/cache to 5.0.3 (<a
href="https://redirect.github.com/electron/electron/issues/50237">#50237</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/8e0f534873e9fdba5b365879bbdf6b47a0a64e1d"><code>8e0f534</code></a>
chore: cherry-pick d5b0cb2acffe from v8 (<a
href="https://redirect.github.com/electron/electron/issues/50232">#50232</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/1573d6b28c879ffbec9bba22988815d2a4b797fd"><code>1573d6b</code></a>
chore: cherry-pick 7911bee5d90e from skia (<a
href="https://redirect.github.com/electron/electron/issues/50230">#50230</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/1b3e1433dd113c1c9a40e3247b45d9834ddc2415"><code>1b3e143</code></a>
ci: update actions/checkout to v6.0.2 (<a
href="https://redirect.github.com/electron/electron/issues/50223">#50223</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/e551cf8c00d5549522811f9608df308736b9c657"><code>e551cf8</code></a>
ci: add timeout to test step (<a
href="https://redirect.github.com/electron/electron/issues/50212">#50212</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/bd3abf3a2c91fcf09525ea105a9e38e50c19d00a"><code>bd3abf3</code></a>
fix: preserve staged update dir when pruning orphaned updates on macOS
(<a
href="https://redirect.github.com/electron/electron/issues/50215">#50215</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/da140aea7cb1cd83c9621c2ecb0d2b5c2db83ef3"><code>da140ae</code></a>
fix: prevent traffic light buttons flashing on deminiaturize (<a
href="https://redirect.github.com/electron/electron/issues/50208">#50208</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/8699ce4f9883acbae1e7a29a3a922b4935b5f68b"><code>8699ce4</code></a>
fix: don't call <code>TaskDialogIndirect</code> with disabled parent
windows (<a
href="https://redirect.github.com/electron/electron/issues/50190">#50190</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/electron/electron/compare/v39.2.7...v39.8.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `electron` from 39.2.7 to 39.8.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/electron/electron/releases">electron's
releases</a>.</em></p>
<blockquote>
<h2>electron v39.8.3</h2>
<h1>Release Notes for v39.8.3</h1>
<h2>Fixes</h2>
<ul>
<li>Added additional ASAR support to additional <code>fs</code> copy
methods. <a
href="https://redirect.github.com/electron/electron/pull/50284">#50284</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50287">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50286">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50285">42</a>)<!--
raw HTML omitted --></li>
<li>Fixed user resizing of transparent windows on win32 platform. <a
href="https://redirect.github.com/electron/electron/pull/50300">#50300</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50301">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50298">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50299">42</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>electron v39.8.2</h2>
<h1>Release Notes for v39.8.2</h1>
<h2>Other Changes</h2>
<ul>
<li>Backported fix for b/491421267. <a
href="https://redirect.github.com/electron/electron/pull/50230">#50230</a></li>
</ul>
<h2>electron v39.8.1</h2>
<h1>Release Notes for v39.8.1</h1>
<h2>Fixes</h2>
<ul>
<li>Added validation to protocol client methods to reject protocol names
that do not conform to the RFC 3986 URI scheme grammar. <a
href="https://redirect.github.com/electron/electron/pull/50156">#50156</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50157">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50158">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50155">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue on macOS where calling
<code>autoUpdater.quitAndInstall()</code> could fail if
<code>checkForUpdates()</code> was called again after an update was
already downloaded. <a
href="https://redirect.github.com/electron/electron/pull/50215">#50215</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50216">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50217">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where Chrome Devtools menus may not appear in certain
embedded windows. <a
href="https://redirect.github.com/electron/electron/pull/50136">#50136</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50138">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50137">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where <code>additionalData</code> passed to
<code>app.requestSingleInstanceLock</code> on Windows could be truncated
or fail to deserialize in the primary instance's
<code>second-instance</code> event. <a
href="https://redirect.github.com/electron/electron/pull/50174">#50174</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50177">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50162">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50154">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where <code>screen.getCursorScreenPoint()</code>
crashed on Wayland when it was called before a
<code>BrowserWindow</code> had been created. <a
href="https://redirect.github.com/electron/electron/pull/50106">#50106</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50104">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50105">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where calling <code>setBounds</code> on a
<code>WebContentsView</code> could trigger redundant
<code>page-favicon-updated</code> events even when the favicon had not
changed. <a
href="https://redirect.github.com/electron/electron/pull/50086">#50086</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50084">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50085">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where invalid characters in custom protocol or
webRequest response header values were not rejected. <a
href="https://redirect.github.com/electron/electron/pull/50129">#50129</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50130">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50131">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50132">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where permission and device-chooser handlers received
the top-level page origin instead of the requesting subframe's origin.
<a
href="https://redirect.github.com/electron/electron/pull/50147">#50147</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50151">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50149">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50148">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where traffic light buttons would flash at position
(0,0) when restoring a window with a custom
<code>trafficLightPosition</code> from minimization on macOS. <a
href="https://redirect.github.com/electron/electron/pull/50208">#50208</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50207">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50209">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed bug where opening a message box immediately upon closing a
child window may cause the parent window to freeze on Windows. <a
href="https://redirect.github.com/electron/electron/pull/50190">#50190</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50189">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50191">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed menu bar hiding after a call to
<code>win.setFullScreen(false)</code> when not in fullscreen on Linux.
<a
href="https://redirect.github.com/electron/electron/pull/49995">#49995</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/49994">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/49996">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed shutdown crash on windows when hidden titlebar is enabled. <a
href="https://redirect.github.com/electron/electron/pull/50054">#50054</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50053">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50055">41</a>)<!--
raw HTML omitted --></li>
<li>Reverted AltGr key fix that caused menu bar to no longer show on
Windows. <a
href="https://redirect.github.com/electron/electron/pull/50109">#50109</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50110">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50111">41</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Backported fix for b/484983991. <a
href="https://redirect.github.com/electron/electron/pull/50167">#50167</a></li>
<li>Backported fix for chromium:485622239. <a
href="https://redirect.github.com/electron/electron/pull/50171">#50171</a></li>
<li>Updated Node.js to v22.22.1. <a
href="https://redirect.github.com/electron/electron/pull/50100">#50100</a></li>
</ul>
<h2>electron v39.8.0</h2>
<h1>Release Notes for v39.8.0</h1>
<h2>Features</h2>
<ul>
<li>Added support for <code>--experimental-transform-types</code>. <a
href="https://redirect.github.com/electron/electron/pull/49881">#49881</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/49883">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/49882">41</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>Fixes</h2>
<ul>
<li>Fixed an issue on macOS where Universal Links were not delivered to
<code>app.on('continue-activity')</code> on cold launch when
<code>NSUserActivity.userInfo</code> was nil. <a
href="https://redirect.github.com/electron/electron/pull/50004">#50004</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50005">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50006">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where <code>VideoFrame</code> objects returned
through <code>contextBridge</code> had an incorrect prototype. <a
href="https://redirect.github.com/electron/electron/pull/50021">#50021</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50022">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50023">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed an issue where setting <code>zoomFactor</code> in
<code>setWindowOpenHandler</code>'s
<code>overrideBrowserWindowOptions</code> had no effect on windows
opened via <code>window.open()</code>. <a
href="https://redirect.github.com/electron/electron/pull/49910">#49910</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/49909">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/49911">41</a>)<!--
raw HTML omitted --></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/electron/electron/commit/e6928c13198c854aa014c319d72eea599e2e0ee7"><code>e6928c1</code></a>
fix: user resizable transparent windows on win32 (<a
href="https://redirect.github.com/electron/electron/issues/50300">#50300</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/976a7bece504db4583a4c66f279eccd49d97c623"><code>976a7be</code></a>
fix: add ASAR support to additional copy methods (<a
href="https://redirect.github.com/electron/electron/issues/50284">#50284</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/03244a56f140c034ea80ed58557d99c7cd23fedd"><code>03244a5</code></a>
ci: update actions/cache to 5.0.3 (<a
href="https://redirect.github.com/electron/electron/issues/50237">#50237</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/8e0f534873e9fdba5b365879bbdf6b47a0a64e1d"><code>8e0f534</code></a>
chore: cherry-pick d5b0cb2acffe from v8 (<a
href="https://redirect.github.com/electron/electron/issues/50232">#50232</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/1573d6b28c879ffbec9bba22988815d2a4b797fd"><code>1573d6b</code></a>
chore: cherry-pick 7911bee5d90e from skia (<a
href="https://redirect.github.com/electron/electron/issues/50230">#50230</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/1b3e1433dd113c1c9a40e3247b45d9834ddc2415"><code>1b3e143</code></a>
ci: update actions/checkout to v6.0.2 (<a
href="https://redirect.github.com/electron/electron/issues/50223">#50223</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/e551cf8c00d5549522811f9608df308736b9c657"><code>e551cf8</code></a>
ci: add timeout to test step (<a
href="https://redirect.github.com/electron/electron/issues/50212">#50212</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/bd3abf3a2c91fcf09525ea105a9e38e50c19d00a"><code>bd3abf3</code></a>
fix: preserve staged update dir when pruning orphaned updates on macOS
(<a
href="https://redirect.github.com/electron/electron/issues/50215">#50215</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/da140aea7cb1cd83c9621c2ecb0d2b5c2db83ef3"><code>da140ae</code></a>
fix: prevent traffic light buttons flashing on deminiaturize (<a
href="https://redirect.github.com/electron/electron/issues/50208">#50208</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/8699ce4f9883acbae1e7a29a3a922b4935b5f68b"><code>8699ce4</code></a>
fix: don't call <code>TaskDialogIndirect</code> with disabled parent
windows (<a
href="https://redirect.github.com/electron/electron/issues/50190">#50190</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/electron/electron/compare/v39.2.7...v39.8.3">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
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/lichtblick-suite/lichtblick/network/alerts).

</details>

---------

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

Bumps the npm_and_yarn group with 1 update in the / directory:
[electron](https://github.com/electron/electron).
Bumps the npm_and_yarn group with 1 update in the
/packages/suite-desktop directory:
[electron](https://github.com/electron/electron).

Updates `electron` from 39.8.3 to 39.8.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/electron/electron/releases">electron's
releases</a>.</em></p>
<blockquote>
<h2>electron v39.8.5</h2>
<h1>Release Notes for v39.8.5</h1>
<h2>Fixes</h2>
<ul>
<li>Fixed a crash in <code>clipboard.readImage()</code> when the
clipboard contains malformed image data. <a
href="https://redirect.github.com/electron/electron/pull/50493">#50493</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50491">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50492">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50494">42</a>)<!--
raw HTML omitted --></li>
<li>Fixed a crash when calling an offscreen shared texture's
<code>release()</code> after the texture object was garbage collected.
<a
href="https://redirect.github.com/electron/electron/pull/50499">#50499</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50500">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50501">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50502">42</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>electron v39.8.4</h2>
<h1>Release Notes for v39.8.4</h1>
<h2>Fixes</h2>
<ul>
<li>Fixed an issue where <code>nodeIntegrationInWorker</code> overrides
in <code>setWindowOpenHandler</code> were not honored for child windows
sharing a renderer process with their opener. <a
href="https://redirect.github.com/electron/electron/pull/50468">#50468</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50163">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50467">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50134">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed crash when handling JavaScript dialogs from windows opened
with invalid or empty URLs. <a
href="https://redirect.github.com/electron/electron/pull/50400">#50400</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50401">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50399">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50398">42</a>)<!--
raw HTML omitted --></li>
<li>Fixed improper focus tracking in BaseWindow on MacOS. <a
href="https://redirect.github.com/electron/electron/pull/50338">#50338</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50337">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50340">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50339">42</a>)<!--
raw HTML omitted --></li>
<li>Fixed window freeze when failing to enter/exit fullscreen on macOS.
<a
href="https://redirect.github.com/electron/electron/pull/50341">#50341</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50344">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50343">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50342">42</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Added support for using a proxy during yarn install. <a
href="https://redirect.github.com/electron/electron/pull/50349">#50349</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50352">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50350">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50351">42</a>)<!--
raw HTML omitted --></li>
<li>Backported fix for 485935305. <a
href="https://redirect.github.com/electron/electron/pull/50440">#50440</a></li>
<li>Backported fix for 489381399. <a
href="https://redirect.github.com/electron/electron/pull/50443">#50443</a></li>
<li>Backported fix for chromium:475877320. <a
href="https://redirect.github.com/electron/electron/pull/50436">#50436</a></li>
<li>Backported fixes for 484751092, 487117772. <a
href="https://redirect.github.com/electron/electron/pull/50461">#50461</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/electron/electron/commit/9d2f8cb4da0d35e2daf7e7f60e35313b508cb224"><code>9d2f8cb</code></a>
refactor: remove dead named-window lookup from guest-window-manager (<a
href="https://redirect.github.com/electron/electron/issues/50498">#50498</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/11730047394233e70743c52567e17f4c3b2dc9fc"><code>1173004</code></a>
fix: crash calling OSR shared texture release() after texture GC'd (<a
href="https://redirect.github.com/electron/electron/issues/50499">#50499</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/be37adefd08f882e3f1fb8403d2d9e92c3009d56"><code>be37ade</code></a>
fix: crash in clipboard.readImage() on malformed image data (<a
href="https://redirect.github.com/electron/electron/issues/50493">#50493</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/7007907df08d02da98f513dcbdb430ab51be59c7"><code>7007907</code></a>
chore: cherry-pick 3 changes from chromium (<a
href="https://redirect.github.com/electron/electron/issues/50461">#50461</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/2c8b6ee0c0a7c26871dc0b320982afd8ed29df6c"><code>2c8b6ee</code></a>
chore: cherry-pick fbfb27470bf6 from chromium (<a
href="https://redirect.github.com/electron/electron/issues/50436">#50436</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/4c64377ead6b53bc565d7793a2712e49882e5354"><code>4c64377</code></a>
chore: cherry-pick 50b057660b4d from chromium (<a
href="https://redirect.github.com/electron/electron/issues/50440">#50440</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/0ef056130cde0c19c81ccfbc2932df6911765849"><code>0ef0561</code></a>
fix: read nodeIntegrationInWorker from per-frame WebPreferences (<a
href="https://redirect.github.com/electron/electron/issues/50122">#50122</a>)
(<a
href="https://redirect.github.com/electron/electron/issues/50">#50</a>...</li>
<li><a
href="https://github.com/electron/electron/commit/64373df3ca697bc6fe6e3ab1f463ba05beaf64cf"><code>64373df</code></a>
chore: cherry-pick 074d472db745 from chromium (<a
href="https://redirect.github.com/electron/electron/issues/50443">#50443</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/13e44072be367f516cfad36f95d183765174f4bf"><code>13e4407</code></a>
fix: don't re-parse URL unnecessarily when handling dialogs (<a
href="https://redirect.github.com/electron/electron/issues/50400">#50400</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/16a038502a4ea0c79976be60bcc8f28a49f1ab99"><code>16a0385</code></a>
ci: output build cache hit rate as GHA annotation (<a
href="https://redirect.github.com/electron/electron/issues/50369">#50369</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/electron/electron/compare/v39.8.3...v39.8.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `electron` from 39.8.3 to 39.8.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/electron/electron/releases">electron's
releases</a>.</em></p>
<blockquote>
<h2>electron v39.8.5</h2>
<h1>Release Notes for v39.8.5</h1>
<h2>Fixes</h2>
<ul>
<li>Fixed a crash in <code>clipboard.readImage()</code> when the
clipboard contains malformed image data. <a
href="https://redirect.github.com/electron/electron/pull/50493">#50493</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50491">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50492">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50494">42</a>)<!--
raw HTML omitted --></li>
<li>Fixed a crash when calling an offscreen shared texture's
<code>release()</code> after the texture object was garbage collected.
<a
href="https://redirect.github.com/electron/electron/pull/50499">#50499</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50500">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50501">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50502">42</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>electron v39.8.4</h2>
<h1>Release Notes for v39.8.4</h1>
<h2>Fixes</h2>
<ul>
<li>Fixed an issue where <code>nodeIntegrationInWorker</code> overrides
in <code>setWindowOpenHandler</code> were not honored for child windows
sharing a renderer process with their opener. <a
href="https://redirect.github.com/electron/electron/pull/50468">#50468</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50163">38</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50467">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50134">41</a>)<!--
raw HTML omitted --></li>
<li>Fixed crash when handling JavaScript dialogs from windows opened
with invalid or empty URLs. <a
href="https://redirect.github.com/electron/electron/pull/50400">#50400</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50401">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50399">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50398">42</a>)<!--
raw HTML omitted --></li>
<li>Fixed improper focus tracking in BaseWindow on MacOS. <a
href="https://redirect.github.com/electron/electron/pull/50338">#50338</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50337">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50340">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50339">42</a>)<!--
raw HTML omitted --></li>
<li>Fixed window freeze when failing to enter/exit fullscreen on macOS.
<a
href="https://redirect.github.com/electron/electron/pull/50341">#50341</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50344">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50343">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50342">42</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Added support for using a proxy during yarn install. <a
href="https://redirect.github.com/electron/electron/pull/50349">#50349</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/50352">40</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50350">41</a>,
<a
href="https://redirect.github.com/electron/electron/pull/50351">42</a>)<!--
raw HTML omitted --></li>
<li>Backported fix for 485935305. <a
href="https://redirect.github.com/electron/electron/pull/50440">#50440</a></li>
<li>Backported fix for 489381399. <a
href="https://redirect.github.com/electron/electron/pull/50443">#50443</a></li>
<li>Backported fix for chromium:475877320. <a
href="https://redirect.github.com/electron/electron/pull/50436">#50436</a></li>
<li>Backported fixes for 484751092, 487117772. <a
href="https://redirect.github.com/electron/electron/pull/50461">#50461</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/electron/electron/commit/9d2f8cb4da0d35e2daf7e7f60e35313b508cb224"><code>9d2f8cb</code></a>
refactor: remove dead named-window lookup from guest-window-manager (<a
href="https://redirect.github.com/electron/electron/issues/50498">#50498</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/11730047394233e70743c52567e17f4c3b2dc9fc"><code>1173004</code></a>
fix: crash calling OSR shared texture release() after texture GC'd (<a
href="https://redirect.github.com/electron/electron/issues/50499">#50499</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/be37adefd08f882e3f1fb8403d2d9e92c3009d56"><code>be37ade</code></a>
fix: crash in clipboard.readImage() on malformed image data (<a
href="https://redirect.github.com/electron/electron/issues/50493">#50493</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/7007907df08d02da98f513dcbdb430ab51be59c7"><code>7007907</code></a>
chore: cherry-pick 3 changes from chromium (<a
href="https://redirect.github.com/electron/electron/issues/50461">#50461</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/2c8b6ee0c0a7c26871dc0b320982afd8ed29df6c"><code>2c8b6ee</code></a>
chore: cherry-pick fbfb27470bf6 from chromium (<a
href="https://redirect.github.com/electron/electron/issues/50436">#50436</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/4c64377ead6b53bc565d7793a2712e49882e5354"><code>4c64377</code></a>
chore: cherry-pick 50b057660b4d from chromium (<a
href="https://redirect.github.com/electron/electron/issues/50440">#50440</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/0ef056130cde0c19c81ccfbc2932df6911765849"><code>0ef0561</code></a>
fix: read nodeIntegrationInWorker from per-frame WebPreferences (<a
href="https://redirect.github.com/electron/electron/issues/50122">#50122</a>)
(<a
href="https://redirect.github.com/electron/electron/issues/50">#50</a>...</li>
<li><a
href="https://github.com/electron/electron/commit/64373df3ca697bc6fe6e3ab1f463ba05beaf64cf"><code>64373df</code></a>
chore: cherry-pick 074d472db745 from chromium (<a
href="https://redirect.github.com/electron/electron/issues/50443">#50443</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/13e44072be367f516cfad36f95d183765174f4bf"><code>13e4407</code></a>
fix: don't re-parse URL unnecessarily when handling dialogs (<a
href="https://redirect.github.com/electron/electron/issues/50400">#50400</a>)</li>
<li><a
href="https://github.com/electron/electron/commit/16a038502a4ea0c79976be60bcc8f28a49f1ab99"><code>16a0385</code></a>
ci: output build cache hit rate as GHA annotation (<a
href="https://redirect.github.com/electron/electron/issues/50369">#50369</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/electron/electron/compare/v39.8.3...v39.8.5">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
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/lichtblick-suite/lichtblick/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## User-Facing Changes

<!-- will be used as a changelog entry -->

## Description
changelog and readme are allowed as part of the body of ExtensionsAPI

<!-- link relevant GitHub issues -->
<!-- add `docs` label if this PR requires documentation updates -->
<!-- add relevant metric tracking for experimental / new features -->

## Checklist

- [ ] The web version was tested and it is running ok
- [ ] The desktop version was tested and it is running ok
- [ ] This change is covered by unit tests
- [ ] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated
## User-Facing Changes

Updated the `rosbag2-web` package to version 1.0.4, along with updates
to its dependencies.

## Description

This update improves compatibility and functionality by upgrading the
`rosbag2-web` package and its dependencies.
This was the last dependency needed before it was possible to update
@foxglove/schemas.

## Checklist

- [x] The web version was tested and it is running ok
- [x] The desktop version was tested and it is running ok
- [ ] This change is covered by unit tests
- [ ] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated
## User-Facing Changes

N/A

## Description

- Removed blockloader from state transitions panel
- Implemented usage of message range iterator on the panel 
- Performance wise lichtblick is now way smooth on panel transitions 

## Checklist

- [x] The web version was tested and it is running ok
- [x] The desktop version was tested and it is running ok
- [x] This change is covered by unit tests
- [x] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated
luluiz and others added 12 commits August 4, 2026 17:40
Correct factual errors introduced in the PR #1278 agent/skill spec
update, found by verifying against the actual PR #1262 source code:

- maxHydratedSources default is 4, not 12 (MultiIterableSource.ts)
- readAheadEnabled still defaults to true for multi-file URL sessions;
  what actually changes is a bounded readAheadBufferBytes
  (min(2 MiB, perSourceCache / 4)) instead of disabling read-ahead
- readerWeight.ts estimateReaderWeightBytes() takes a single argument
  (no cacheBytes param) and uses BYTES_PER_CHUNK_INDEX_BASE (128) +
  BYTES_PER_MESSAGE_INDEX_ENTRY (64) per message-index entry, not a
  flat 512 bytes per chunk index
- #persistentReadable.close() also runs unconditionally on normal
  McapIterableSource.terminate(), not only on failed init or
  unindexed fallback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Multi-File Cache Budget Distribution in remote-caching/SKILL.md was
missing the aggregate-overshoot clarification already present in
lb-remote-connection.agent.md. Verified against MultiIterableSource.ts:
perSourceCache = Math.max(minPerSource, floor(totalCache / numSources))
can push the real aggregate above totalCacheSizeInBytes when the
per-source floor wins, and a log.warn reports this case.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add agentic documentation for the Lichtblick release pipeline:
- New skill `.github/skills/release-process/SKILL.md` covering
  release.yml, post-release.yml, prerelease.yml, and release-sync.yml
  (branch-naming to version-bump mapping, stable release pipeline,
  NPM/GHCR publishing, release-sync auto-merge behavior, and the
  manual pre-release/RC flow).
- New prompt `.github/prompts/lb-release.prompt.md`, a runbook for
  cutting stable releases and RCs, referencing the new skill without
  duplicating its explanatory detail.
- Register both in the catalog: `.github/copilot-instructions.md`,
  `.github/agents/lb-orchestrator.agent.md` (release-request routing
  note), and `docs/ai-agents/README.md` (skills/prompts tables).

No workflow YAML, CONTRIBUTING.md, or the original release guide was
modified — this is additive agentic documentation only.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Clarify stable vs RC checklist/output in lb-release.prompt.md
- Document release/* and develop as literal choice values, not wildcards
- Note post-release.yml workflow_dispatch has no tag context (non-functional manually)
- Clarify Yarn remains dependency manager; npm publish is pipeline-only exception

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…yarn group across 1 directory (#1280)

Bumps the npm_and_yarn group with 1 update in the / directory:
[dompurify](https://github.com/cure53/DOMPurify).

Updates `dompurify` from 3.4.11 to 3.4.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/cure53/DOMPurify/releases">dompurify's
releases</a>.</em></p>
<blockquote>
<h2>DOMPurify 3.4.12</h2>
<ul>
<li>Fixed an issue where a hook would not get called for custom
elements, thanks <a
href="https://github.com/Rikuxx0"><code>@​Rikuxx0</code></a></li>
<li>Hardened the handling of hooks removing elements, <a
href="https://github.com/mkrause-bee360"><code>@​mkrause-bee360</code></a></li>
<li>Added support for a few new SVG attributes, thanks <a
href="https://github.com/cbn-falias"><code>@​cbn-falias</code></a> &amp;
<a
href="https://github.com/Develop-KIM"><code>@​Develop-KIM</code></a></li>
<li>Hardened the handling of declarative partial updates</li>
<li>Updated the documentation is several spots, README, wiki, etc.</li>
<li>Bumped several dependencies where possible</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/cure53/DOMPurify/commit/a9ca1e537422319a557a9a2aa61f003b23b4a197"><code>a9ca1e5</code></a>
release: 3.4.12 (<a
href="https://redirect.github.com/cure53/DOMPurify/issues/1537">#1537</a>)</li>
<li>See full diff in <a
href="https://github.com/cure53/DOMPurify/compare/3.4.11...3.4.12">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=dompurify&package-manager=npm_and_yarn&previous-version=3.4.11&new-version=3.4.12)](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 <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
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/lichtblick-suite/lichtblick/network/alerts).

</details>
…aths

Signed-off-by: Bezerra Luiz, (Luiz.Bezerra@ctw.bmwgroup.com) <luiz.bezerra@ctw.bmwgroup.com>
package.json pins yarn@4.17.0 via the packageManager field; avoid hardcoding a
version number that can drift.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
## User-Facing Changes

N/A

## Description

<!-- link relevant GitHub issues -->
<!-- add `docs` label if this PR requires documentation updates -->
<!-- add relevant metric tracking for experimental / new features -->
Fixes `yarn npm audit --all --recursive --severity high` findings:

- **`brace-expansion`**
([GHSA-mh99-v99m-4gvg](GHSA-mh99-v99m-4gvg)):
all three vulnerable copies (pulled transitively via `minimatch@3.1.5`,
`minimatch@7.4.9`, `minimatch@10.2.5`) were bumped to their patched
releases with `yarn up -R brace-expansion`. The existing caret ranges
already allowed the patched versions, so no `resolutions` override was
needed.
- **`fast-uri`**
([GHSA-7p8r-x3mc-p8w7](GHSA-7p8r-x3mc-p8w7)):
removed a stale `"fast-uri": "3.1.4"` pin from `resolutions` — that
version is the one now flagged as vulnerable. Its only consumer,
`ajv@8.20.0`, declares `fast-uri: ^3.0.1`, so removing the pin let Yarn
naturally resolve to the patched `3.1.5`.
- Also removed a dead `"brace-expansion@5.0.5": "5.0.6"` resolution
entry whose exact-version key never matched the actual `^5.0.5` request
in the tree, so it had no effect.

No `resolutions` entries were added; two obsolete ones were removed
instead. Only `package.json` (2 lines removed) and `yarn.lock` were
touched — no application code changed.

Verified with `yarn npm audit --all --recursive --severity high` → `No
audit suggestions`.

## Checklist

- [ ] The web version was tested and it is running ok
- [ ] The desktop version was tested and it is running ok
- [x] This change is covered by unit tests <!-- N/A: dependency-only
change, no application code modified -->
- [x] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated <!-- N/A: no source files
changed -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Removed two package resolution overrides from the project
configuration.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## User-Facing Changes

None (no visible behavior change). Internal performance optimization
only.

## Description

- `useStructuredItemsByPath` previously used `useCallback` and invoked
it immediately on every render, so `structureAllItemsByPath` rebuilt the
full message-path structure `Map` on each render whenever
`validTypes`/`noMultiSlices` were set. `MessagePathInput`'s autocomplete
re-renders on every keystroke, so this ran per keystroke.
- Now the computed `Map` is memoized with `useMemo`; the cheap
cached-store branch is unchanged (returned when no filter is requested).
- `validTypes` is tracked via a content-based key
(`validTypes?.join(",")`) so an unstable array reference — notably an
extension-provided `SettingsTreeFieldMessagePath.validTypes` that a
settings tree rebuilds each render (used by
`SettingsTreeEditor/FieldEditor` → `MessagePathInput`) — does not
invalidate the memo. `exhaustive-deps` is intentionally suppressed on
that dependency array with an explanatory comment (repo-idiomatic; the
rule is set to error).
- Behavior-preserving: identical Map keys/values; nothing persisted, and
none of these symbols are part of the `@lichtblick/suite` extension API.
Verified
`structureAllItemsByPath`/`useStructuredItemsByPath`/`MessagePathInput`
are not re-exported from `packages/suite/src/index.ts`, and the Map is
never serialized to layouts/config/IndexedDB.
- Note: the heavy recursion in `messagePathsForStructure` is already
module-cached, so the function body itself was left unchanged.

Tests:
- Added characterization tests locking the Map key format
(`quotedTopicName + path`), multi-topic shared-schema behavior, and
validTypes/noMultiSlices forwarding; added a memoization regression test
(equal-but-new `validTypes` array does not recompute) and a
change-detection test.
- All targeted suites pass.

## Checklist

- [ ] The web version was tested and it is running ok (not applicable:
no UI behavior change)
- [ ] The desktop version was tested and it is running ok (not
applicable: no UI behavior change)
- [x] This change is covered by unit tests
- [x] Files constants.ts, types.ts and *.style.ts have been checked and
relevant code snippets have been relocated (no changes needed)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Performance**
* Improved handling of structured message-path data to avoid unnecessary
recalculation during rerenders.
* Reuses previously computed results when filtering options remain
unchanged.
* **Bug Fixes**
* Improved reliability when applying and changing message-path type
filters, including filters with similar values and ordering.
* **Tests**
* Added coverage for path construction, shared schemas, filter
forwarding, and memoization behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---

## How to test in the application

This change is behavior-preserving: the message-path **autocomplete
results must be identical**; only the internal recomputation is
memoized. `useStructureItemsStoreManager` (mounted once in
`Workspace.tsx`) populates the shared cached store used by the
non-filtered branch.

The hook `useStructuredItemsByPath` has two branches — please exercise
both:

### Branch A — cached-store (no `validTypes`/`noMultiSlices`)
Autocomplete should list **all** message paths for the topic.
- **Raw Messages** panel → toolbar topic-path input; also enable
**Diff** mode and type in the second (diff) path input.
- **Table** panel → toolbar topic-path input.
- **Indicator** panel → settings → "Message path" field.

### Branch B — computed + memoized (this is the optimized path,
`validTypes` provided)
Autocomplete should list **only** the filtered types, and typing should
stay smooth (the structure map is no longer rebuilt on every keystroke).
- **Plot** panel → settings → a series **Y** message-path field, and the
custom **X-axis** path field (filtered to `PLOTABLE_ROS_TYPES`).
- **State Transitions** panel → settings → series message-path field
(`PLOTABLE_ROS_TYPES`).
- **Pie Chart** panel → settings → "Message path" field
(`SUPPORTED_DATA_TYPES`).
- **Gauge** panel → settings → "Message path" field (`DATA_TYPES`).

> Note: `noMultiSlices` is not passed by any production panel today;
Branch B is reached via the `validTypes` filter on the panels above
(rendered through `SettingsTreeEditor/FieldEditor` →
`MessagePathInput`).

### What to verify
1. Autocomplete opens and suggests paths as you type in each field
above.
2. Branch A shows all types; Branch B shows only the panel's allowed
types (unchanged from `main`).
3. Selecting a path plots/renders correctly
(Plot/StateTransitions/Gauge/PieChart) and Raw Messages/Table update.
4. No visual/behavioral difference vs. before; typing in a series path
on a large MCAP (many topics/fields) feels responsive.

### Automated tests
Run:
```
yarn jest packages/suite-base/src/components/MessagePathSyntax/structureAllItemsByPath.test.ts \
          packages/suite-base/src/components/MessagePathSyntax/useStructureItemsByPath.test.ts \
          packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.test.ts \
          packages/suite-base/src/panels/Plot/hooks/useStructureItemsStoreManager.test.ts
```
Covers: Map key format (`quotedTopicName + path`), shared-schema
multi-topic, `validTypes`/`noMultiSlices` forwarding, memoization
(equal-but-new array does not recompute), recompute on content change,
and the `validTypes` comma-collision regression (`["a,b","c"]` vs
`["a","b,c"]`).
## Summary
Add agentic documentation for Lichtblick releases so Copilot agents have
an accurate runbook and reference skill for the current pipeline. This
fills gaps in the user-provided release guide, which was partially
outdated and did not cover the `prerelease.yml` RC flow, Docker/GHCR
publishing, or the stronger auto-merge behavior in `release-sync.yml`.

## Changes
- `.github/skills/release-process/SKILL.md` — new skill documenting the
release pipeline workflows, branch/version mapping, publishing,
release-sync, and RC flow.
- `.github/prompts/lb-release.prompt.md` — new release runbook prompt
for cutting stable releases and RCs, referencing the skill rather than
duplicating its detail.
- `.github/copilot-instructions.md` — registers the new skill and prompt
in the main Copilot instructions catalog.
- `.github/agents/lb-orchestrator.agent.md` — adds release-request
routing guidance to the orchestrator agent catalog.
- `docs/ai-agents/README.md` — updates the public AI agents docs tables
for the new skill and prompt.

## Scope
Agentic docs only — no workflow YAML, `CONTRIBUTING.md`, or release
guide changes.

## Testing
Documentation-only change; no build/lint/test run applicable. Manually
verified the new skill/prompt frontmatter and formatting against
existing conventions such as the `mcap-format` and `electron-internals`
skills, plus the `lb-open-pr` and `lb-setup-worktree` prompts. Reviewed
the skill and prompt together to remove unnecessary duplicated
explanatory content (the prompt now references the skill instead of
restating pipeline trigger-chain and merge-commit-rule detail).


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Added a guided release runbook covering stable releases, hotfixes, and
release candidates.
* Documented versioning, branching, publishing, artifact packaging,
verification, workflow monitoring, and conflict handling.
* Clarified release candidate versioning and prerelease workflow
behavior.
* Updated AI agent documentation to include the new release prompt and
process skill.
* Clarified that release requests should use the human-invoked release
runbook.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
…1278)

## Summary

Docs-only follow-up to #1262 (multi-MCAP OOM fix). Updates the AI
agent/skill knowledge base
(`.github/agents/`, `.github/skills/`) so future agent sessions reason
about the actual current
architecture instead of the pre-#1262 model.

#1262 introduced substantial new architecture that was not yet reflected
in the specs:
- `HydratedSourcePool` — bounded LRU pool of resident heavyweight
per-file MCAP readers (hybrid
byte + count budget), shared by both the local-files and remote-urls
branches of
  `MultiIterableSource`.
- `estimateReaderWeightBytes` (`Mcap/readerWeight.ts`) — heuristic
weight estimate used as the
  pool's `weigh()` hook.
- Optional `prewarm?()` lifecycle hook added to `IIterableSource`.
- `MultiIterableSource` updates: per-source cache-budget floor
(`MIN_CACHE_PER_SOURCE_BYTES`),
lazy `readAheadEnabled` default for multi-file remote sessions,
`Semaphore`-bounded
initialization concurrency, `#prewarmEarliestSources()`, and
`Promise.allSettled`-based
  `terminate()` with guaranteed pool teardown.
- `CachedFilelike`'s unified `#closeWithError()` cleanup path.
- The capture-before-`await` + dispose-in-`finally` pattern established
in
  `WorkerSerializedIterableSource.terminate()`.

Confirmed via exhaustive grep before this change: zero prior mentions of
`HydratedSourcePool`,
`prewarm`, or `estimateReaderWeightBytes`/`readerWeight` anywhere in
`.github/agents/` or
`.github/skills/`.

## Files changed
- `.github/agents/lb-remote-connection.agent.md` — new
HydratedSourcePool section, updated
MultiIterableSource/CachedFilelike details, updated
diagrams/tables/pitfalls.
- `.github/skills/remote-caching/SKILL.md` — new HydratedSourcePool
deep-dive + readerWeight
subsection, updated Multi-File Cache Budget Distribution and
CachedFilelike error handling.
- `.github/agents/lb-player.agent.md` — `prewarm?()` interface mention,
new Key Files entries,
  new Common Pitfalls entry for the async init/terminate race pattern.
- `.github/skills/player-internals/SKILL.md` — one-line `prewarm?()`
cross-reference.

## Validation
Docs-only change; no source code, tests, or build affected. Each edit
was verified against the
current implementation (worktree for #1262, branch
`bugfix/multi-mcap-worker-oom`) before being
written, and a post-edit grep confirmed exactly the 4 intended files
changed with no unintended
scope creep (`.github/skills/caching-internals/SKILL.md` was assessed
and intentionally left
unchanged — distinct domain, no overlap).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Expanded iterator lifecycle guidance to cover optional prewarming and
termination hooks.
* Documented bounded hydrated-reader pools, weighted eviction, cache
budgets, admission rules, and multi-file caching behavior.
* Clarified initialization limits, lazy read-ahead defaults, prewarming,
and cleanup during errors or shutdown.
* Added guidance for cache pressure, reader weighting, worker teardown,
and race-safe lifecycle management.
* Updated key-file references for newly documented pooling and caching
components.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

## Update (follow-up commit)
- Added `multiFileHydrationOptions.ts` to Key Files references in both
docs
(shared hydration-override merging used by data source factories + MCAP
worker).
- Documented that `RemoteFileReadable` connections for `type: "url"`
sources are
session-persistent (`#persistentReadable`) and survive
`HydratedSourcePool` eviction —
only the `McapIndexedReader`/parsed-channel state is evicted, not the
transport/cache.
- Documented that unindexed sources (file or url fallback) bypass the
pool entirely and
are held eagerly (`#eagerInner`) for the whole session, unbounded by the
pool's budget.

Verified against the latest state of `bugfix/multi-mcap-worker-oom`
(including the
SonarCloud cognitive-complexity refactor splitting
`McapIterableSource#openInner()`).
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 9e0d31c9-d3ed-43e6-91d5-98d3afe885ab

📥 Commits

Reviewing files that changed from the base of the PR and between a07fb5e and ddd30b7.

📒 Files selected for processing (1)
  • .github/workflows/stale.yml

Walkthrough

This change adds bounded MCAP hydration and caching, lifecycle cleanup, settings filtering, safer message-path memoization, optional layout fields, workflow prompts and skills, release automation, and dependency updates.

Changes

Runtime and product behavior

Layer / File(s) Summary
Iterable hydration, caching, and cleanup
packages/suite-base/src/players/IterablePlayer/..., packages/suite-base/src/util/...
Adds weighted source pooling, bounded initialization, configurable read-ahead, uncached large reads, stream recovery, and termination cleanup.
Product behavior updates
packages/suite-base/src/components/..., packages/suite-base/src/util/layout*
Adds settings-tree text filtering, content-safe message-path memoization, and optional userNodes layout data.

Agent, release, and maintenance updates

Layer / File(s) Summary
Agent workflows and skills
.github/agents/*, .github/prompts/*, .github/skills/*, .github/copilot-instructions.md, CONTRIBUTING.md, docs/ai-agents/README.md
Adds workflow prompts, skill metadata, release and caching documentation, and updated prompt catalogs.
Release automation and dependencies
.github/workflows/*, package.json, packages/*/package.json
Adds multi-platform Docker builds, merge-commit synchronization, an action upgrade, and package version updates.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant DataSourceFactory
  participant WorkerSerializedIterableSource
  participant MultiIterableSource
  participant McapIterableSource
  participant HydratedSourcePool
  participant RemoteFileReadable

  DataSourceFactory->>WorkerSerializedIterableSource: initialize with hydration overrides
  WorkerSerializedIterableSource->>MultiIterableSource: create multi-source session
  MultiIterableSource->>HydratedSourcePool: create shared bounded pool
  MultiIterableSource->>McapIterableSource: initialize sources
  McapIterableSource->>HydratedSourcePool: acquire indexed reader
  HydratedSourcePool->>RemoteFileReadable: open or reuse cached reader
  McapIterableSource->>HydratedSourcePool: release reader
  WorkerSerializedIterableSource->>MultiIterableSource: terminate
  MultiIterableSource->>HydratedSourcePool: terminate pool
Loading

Possibly related PRs

Suggested labels: documentation, performance

Suggested reviewers: rodrigo-rodrigues-ctw

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the v1.28.1 release and summarizes the included improvements and bug fixes.
Description check ✅ Passed The description includes all required template sections and provides release scope, notable changes, automation details, and merge conditions.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hotfix/v1.28.1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@luluiz
luluiz marked this pull request as ready for review August 5, 2026 15:54
ctw-joao-luis
ctw-joao-luis previously approved these changes Aug 5, 2026
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Caution

Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted.

Error details
putComment timed out

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 16

🧹 Nitpick comments (10)
packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.ts (1)

204-204: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add a direct cache-key regression test.

The included tests do not execute messagePathsForStructure: structureAllItemsByPath.test.ts mocks it, and useStructureItemsByPath.test.ts mocks its caller.

Add a colocated Jest test that calls messagePathsForStructure with ["a,b", "c"] and ["a", "b,c"]. Use a structure that matches only one input. This verifies that the second call does not reuse the first cached result.

As per coding guidelines, use a Jest *.test.ts file and the Given-When-Then pattern.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.ts`
at line 204, Add a colocated Jest *.test.ts regression test that directly
invokes messagePathsForStructure twice with validTypes ["a,b", "c"] and ["a",
"b,c"], using a structure that matches only one input. Follow the
Given-When-Then pattern and assert the second call returns only its own matching
result, proving distinct cache keys prevent reuse of the first result.

Source: Coding guidelines

packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.test.tsx (1)

25-49: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Test text filtering through the rendered FieldEditor.

This mock captures FieldEditor action handlers and invokes them directly. It bypasses the input event and does not verify the FieldEditor to NodeEditor integration.

Use userEvent to enter text in the rendered filter field. Keep the assertions on the visible tree nodes.

As per coding guidelines, "Avoid mocking internals — prefer testing behavior over implementation."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.test.tsx`
around lines 25 - 49, Update the NodeEditor tests to exercise text filtering
through the rendered FieldEditor using userEvent rather than invoking
capturedActionHandlers directly. Remove the direct text-filter handler helper
and any internal FieldEditor mocking needed only for it, while preserving
assertions against the visible tree nodes and validating the rendered
FieldEditor-to-NodeEditor interaction.

Sources: Coding guidelines, Path instructions

packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts (1)

301-308: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Clear #eagerInner after terminating it.

terminate() clears #persistentReadable, so the readable closes exactly once. It does not clear #eagerInner. A second terminate() call therefore invokes #eagerInner.terminate() again. McapIterableSource.test.ts line 557 covers double termination only for the pooled/url case, where #eagerInner is undefined.

Clear the field so termination is idempotent for unindexed and unpooled sources too.

♻️ Proposed fix
     await this.#eagerInner?.terminate?.();
+    this.#eagerInner = undefined;
     // The pool's hydrator.close() intentionally does not close this — it is session-persistent
     // (see `#persistentReadable`) and is only closed when the whole source is torn down.
     this.#persistentReadable?.close();
     this.#persistentReadable = undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts`
around lines 301 - 308, Update McapIterableSource.terminate() to clear
`#eagerInner` immediately after awaiting its termination, ensuring subsequent
terminate() calls do not invoke it again while preserving the existing
persistent-readable cleanup.
packages/suite-base/src/util/CachedFilelike.test.ts (1)

196-228: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider dropping the debug-log assertion.

Line 223 asserts on the exact debug message "Ignoring degenerate". That couples the test to log wording. The behavioral guarantee is already covered by lines 221-222: exactly one fetch, for the real range. Removing the log assertion keeps the test green when the message is reworded.

The jest.doMock("./getNewConnection") stub is acceptable here, because an inverted range cannot be produced through the public API.

As per path instructions for **/*.test.ts: "Avoid mocking internals — prefer testing behavior over implementation."

♻️ Proposed test simplification
         expect(getNewConnection).toHaveBeenCalledTimes(2);
         expect(fetch).toHaveBeenCalledTimes(1);
         expect(fetch).toHaveBeenCalledWith(0, 4);
-        expect(debug).toHaveBeenCalledWith(expect.stringContaining("Ignoring degenerate"));
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/util/CachedFilelike.test.ts` around lines 196 - 228,
Remove the debug-log assertion from the test around MockedCachedFilelike.read,
keeping the behavioral assertions that getNewConnection is called twice and
fileReader.fetch runs once for the real range. Leave the existing
getNewConnection mock setup and cleanup unchanged.

Source: Path instructions

packages/suite-base/src/util/CachedFilelike.types.ts (1)

8-13: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider typing the data listener chunk as Uint8Array.

The generic on<T>(event: "data", listener: (chunk: T) => void) lets a caller declare any chunk type. Both implementations (BrowserHttpReader/FetchReader and the in-memory test readers) emit Uint8Array. A concrete parameter type makes the contract exact and removes the need for callers to annotate the chunk.

As per path instructions for **/*.types.ts: "Check for accurate and comprehensive type definitions."

♻️ Proposed type tightening
 export type FileStream = {
-  on<T>(event: "data", listener: (chunk: T) => void): void;
+  on(event: "data", listener: (chunk: Uint8Array) => void): void;
   on(event: "error", listener: (err: Error) => void): void;
   on(event: "end", listener: () => void): void;
   destroy: () => void;
 };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/util/CachedFilelike.types.ts` around lines 8 - 13,
Update the FileStream type’s "data" overload to accept a listener receiving
Uint8Array instead of using the unconstrained generic on<T>. Preserve the
existing error, end, and destroy signatures so the stream contract matches
BrowserHttpReader, FetchReader, and the in-memory readers.

Source: Path instructions

packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.test.ts (1)

37-40: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Replace the as any casts with a cast through unknown.

The coding guidelines forbid any in TypeScript sources. The mock only needs to satisfy the ComlinkWrap return type, so a cast through unknown to that type keeps the intent and removes any.

-      remote: jest.fn().mockResolvedValue(remote) as any,
+      remote: jest.fn().mockResolvedValue(remote) as unknown as ReturnType<
+        typeof ComlinkWrap
+      >["remote"],

As per coding guidelines, "Use TypeScript strict mode, avoid any, and prefer undefined over null."

Also applies to: 59-62, 72-75

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.test.ts`
around lines 37 - 40, Replace the as any casts in each
mockComlinkWrap.mockReturnValueOnce setup with casts through unknown to the
expected ComlinkWrap type, including the occurrences around the remote/dispose
mocks. Preserve the existing mock behavior while eliminating all explicit any
usage.

Source: Coding guidelines

packages/suite-base/src/dataSources/RemoteDataSourceFactory.test.tsx (1)

37-52: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Test the extension check through initialize() instead of casting to any.

(factory as any).checkExtensionMatch(...) uses any and couples the test to a private method. The same three cases are observable through the public initialize() entry point: a single URL, two URLs with the same extension, and two URLs with different extensions (which must throw "All sources need to be from the same type").

-  it("should throw an error if the comparator and comparing extensions are different", () => {
-    expect(() => (factory as any).checkExtensionMatch(".mcap", ".bag")).toThrow(
-      "All sources need to be from the same type",
-    );
+  it("should throw an error when the urls have different extensions", () => {
+    const mockArgs = setupArgs({
+      url: "https://example.com/test1.mcap,https://example.com/test2.bag",
+    });
+
+    expect(() => factory.initialize(mockArgs)).toThrow("All sources need to be from the same type");

As per coding guidelines, "Use TypeScript strict mode, avoid any", and as per path instructions, "Avoid mocking internals — prefer testing behavior over implementation."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/dataSources/RemoteDataSourceFactory.test.tsx` around
lines 37 - 52, Rewrite these extension-match tests to call the public
factory.initialize() entry point instead of casting the factory to any and
invoking checkExtensionMatch directly. Cover a single URL, two URLs sharing an
extension, and two URLs with different extensions; preserve the expected
returned extension and the "All sources need to be from the same type" error
assertion.

Sources: Coding guidelines, Path instructions

packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.test.ts (1)

475-541: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

The characterization test depends on an exact microtask count, so it is brittle.

The test flushes exactly five microtasks (lines 517-519) to observe that the evicted instance's close() has started but not finished. That count encodes the current internal await sequence of release() and #evictBeyondCapacity(). Any refactor of those awaits changes the required count and fails the test, even when the observable pool contract is unchanged.

Two lower-risk options:

  1. Replace the fixed loop with a deterministic signal: resolve a promise inside the close() mock (closeStarted) and await that promise instead of counting microtasks.
  2. Drop the in-flight-overlap assertions and keep only the assertions about pool bookkeeping (open call count, pool.size, pins), which is the contract you actually want to protect.
♻️ Deterministic wait instead of a microtask count
+      let signalCloseStarted: (() => void) | undefined;
+      const closeStartedPromise = new Promise<void>((resolve) => {
+        signalCloseStarted = resolve;
+      });
       const hydratorA: SourceHydrator<unknown> & { open: jest.Mock; close: jest.Mock } = {
         open: jest.fn().mockResolvedValue("A-instance"),
         close: jest.fn().mockImplementation(async () => {
           closeStarted();
+          signalCloseStarted?.();
           await new Promise<void>((resolve) => {
             resolveClose = resolve;
           });
           closeFinished();
         }),
       };
@@
-      // Flush microtasks so the abandoned eviction sweep's own close() call gets a chance to
-      // start (it awaits `entry.value` first), without allowing it to finish.
-      for (let i = 0; i < 5; i++) {
-        await Promise.resolve();
-      }
+      // Wait until the abandoned eviction sweep actually entered close(), without letting it
+      // finish.
+      await closeStartedPromise;

As per path instructions, "Avoid mocking internals — prefer testing behavior over implementation."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.test.ts`
around lines 475 - 541, Replace the fixed five-microtask loop in the
characterization test with a deterministic synchronization signal from the
hydratorA.close mock, awaiting confirmation that closeStarted has been invoked
before asserting closeFinished remains pending. Keep the observable overlap and
pool bookkeeping assertions intact, without relying on release() or
`#evictBeyondCapacity`()’s internal await sequence.

Source: Path instructions

packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.ts (1)

124-132: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

A terminate() during an in-flight acquire() leaks the hydrated value and inflates #totalWeight.

acquire() inserts the entry, then awaits entry.value. If terminate() runs during that await, it clears #entries and resets #totalWeight to 0, and it closes only the snapshot it captured. The pending open() promise resolves afterwards, so this path:

  • adds entry.weight back into #totalWeight although no entry is resident, and
  • returns a hydrated value that is no longer tracked by the pool, so hydrator.close(value) is never called.

admit() and the not-resident branch of acquire() already guard on #terminated; the post-await path does not. The impact is limited when the pool lives in a worker that is killed right after termination, but MultiIterableSource can also run the pool without a worker teardown.

Re-check the terminal flag after the await.

♻️ Proposed guard
     this.#entries.set(token, entry);
     try {
       const value = (await entry.value) as T;
+      if (this.#terminated) {
+        // terminate() already cleared the map (and reset `#totalWeight`) while open() was in
+        // flight, so this value is untracked: close it instead of retaining or counting it.
+        entry.pins -= 1;
+        if (this.#entries.get(token) === entry) {
+          this.#entries.delete(token);
+        }
+        await hydrator.close(value);
+        throw new Error("HydratedSourcePool has been terminated");
+      }
       entry.weight = Math.max(0, hydrator.weigh?.(value) ?? 1);
       this.#totalWeight += entry.weight;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.ts`
around lines 124 - 132, Update the post-await path in acquire() to re-check
`#terminated` immediately after awaiting entry.value, before assigning
entry.weight or increasing `#totalWeight`. If termination occurred, close the
resolved hydrated value via the hydrator and return without re-admitting or
exposing it; preserve the existing behavior for non-terminated acquisitions.
packages/suite-base/src/util/getNewConnection.ts (1)

125-133: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Cap read-ahead at maxRequestSize.

CachedFilelike passes maxRequestSize: this.#cacheSizeInBytes and readAheadBufferBytes: this.#readAheadBufferBytes separately, and callers can configure readAheadBufferBytes larger than cacheSizeInBytes. Clamping the extension avoids downloading bytes the LRU cache cannot hold.

♻️ Optional clamp
     return {
       ...notDownloadedRanges[0],
       end: Math.max(
         notDownloadedRanges[0].end,
-        Math.min(readRequestRange.start + readAheadBufferBytes, fileSize),
+        Math.min(
+          readRequestRange.start + Math.min(readAheadBufferBytes, maxRequestSize),
+          fileSize,
+        ),
       ),
     };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/util/getNewConnection.ts` around lines 125 - 133,
Update the read-ahead calculation in getNewConnection to cap the requested end
at maxRequestSize, while preserving the existing fileSize cap and ensuring the
range never shrinks below notDownloadedRanges[0].end. Use the existing
maxRequestSize configuration alongside readAheadBufferBytes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/agents/lb-player.agent.md:
- Line 309: Update the lifecycle guidance to retain only the durable rule for
safely handling initialize()/terminate() races and the reference to
WorkerSerializedIterableSource. Remove the session-relative wording and the
statement that WorkerIterableSource has not yet been audited; track that
follow-up separately if needed.

In @.github/prompts/lb-review-pr.prompt.md:
- Line 15: Update the prose references in the prompt to capitalize “GitHub,”
including “GitHub MCP server” at the locations associated with lines 15, 56, and
93; preserve the lowercase github/list_pull_request_review_comments tool
identifiers unchanged.

In @.github/prompts/lb-setup-worktree.prompt.md:
- Line 65: Update the fetch command in the worktree setup workflow to use the
existing upstream remote when it is available, falling back to origin otherwise;
preserve the pull-request ref and local pr-{id} target.
- Around line 101-106: Update the teardown commands in the worktree setup
instructions to remove the PR-specific worktree using the PR worktree name
format, such as pr-{id}, instead of the optional {short-name}; keep git worktree
prune unchanged.
- Line 73: Update the installation block in the worktree setup prompt to use
Corepack: enable it first, then run the dependency installation through Corepack
so the declared Yarn 4.17.0 version is honored. Keep the existing installation
flow otherwise unchanged.

In @.github/prompts/lb-upstream-sync.prompt.md:
- Around line 54-61: Add a dedicated “Rollback plan” item to the required output
format in the prompt, alongside “Risk and compatibility report,” so Phase 2
explicitly requires both the risk matrix and rollback plan.

In @.github/skills/release-process/SKILL.md:
- Around line 90-92: The release-process documentation currently describes a
non-functional manual trigger. Update the documented workflow guidance around
manual workflow_dispatch to require and use an explicit tag input for checkout
and Docker version tagging, or remove workflow_dispatch from the documented
trigger options; ensure manual runs cannot depend on
github.event.release.tag_name.
- Line 97: Align the Yarn version referenced by the release rules with the
repository-wide dependency-manager version: update the Yarn 4.17.0 reference in
the release-process guidance and any related configuration or documentation so
it consistently matches the documented Yarn 3.6.3 version, or update all
repository rules to the configured version if that is the intended standard.

In @.github/skills/remote-caching/SKILL.md:
- Around line 455-458: Update the unindexed-source handling in
McapIterableSource so McapUnindexedIterableSource instances do not remain
unbounded in `#eagerInner` for the entire session. Add a bounded fallback or
enforce a separate memory/count limit before retaining or releasing these
sources, while preserving the existing pool bypass and indexed-source behavior.

In @.github/workflows/release-sync.yml:
- Around line 72-78: Update the “Enable auto-merge (merge commit) for clean
syncs” step to propagate a nonzero status when gh pr merge "$BRANCH_NAME"
--merge --auto fails. Remove the success-swallowing fallback while preserving
the existing warning context and clean-sync condition.

In @.github/workflows/stale.yml:
- Line 17: Update the stale workflow permissions associated with actions/stale
so the job grants contents: write for deleting expired pull-request branches and
actions: write for the action’s state/cache operations, while preserving the
existing issues: write and pull-requests: write permissions.

In `@package.json`:
- Line 3: Restore the release version to 1.28.1 in package.json at lines 3-3,
packages/suite/package.json at lines 3-3, and sonar-project.properties at lines
4-4, updating the root and suite package versions plus sonar.projectVersion
consistently.

In `@packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts`:
- Around line 184-192: Update `#openUnindexedUrlFallback` to validate response.ok
immediately after fetch and throw an error that preserves the HTTP status before
inspecting or streaming response.body. Also validate the parsed Content-Length
and reject non-numeric or otherwise invalid sizes before constructing the
fallback source.

In
`@packages/suite-base/src/players/IterablePlayer/shared/utils/mergeSequentialIterators.ts`:
- Around line 65-92: Wrap the eager activation, seek-time activation,
pending-source advancement, and drain loop in one try/finally so failures from
any activateSource call are cleaned up. Keep nextSourceIndex, activateSource,
and activateNextSource declared before the try, and ensure the existing finally
closes every iterator tracked in activeIterators.

In `@packages/suite-base/src/util/CachedFilelike.ts`:
- Around line 419-445: Bound retries in the interruption handling around
`#keepReconnectingCallback` and `#updateState`: when a premature stream end makes
zero progress, track repeated zero-progress attempts for the same range and
apply a retry cap or backoff before destroying the connection. Ensure the limit
is enforced even when keepReconnectingCallback is set, while preserving normal
reconnection behavior when bytes are received or progress resumes.

In `@packages/suite-base/src/util/layout.test.ts`:
- Around line 715-730: Update the validateLayoutData assertions in the userNodes
validation tests to use double-quoted error text instead of single quotes,
matching the repository’s Biome quote rule for ts/tsx/js/jsx files. Keep the
existing expectations and test names unchanged; only adjust the string literals
in the two affected expect(...).toThrow calls.

---

Nitpick comments:
In
`@packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.ts`:
- Line 204: Add a colocated Jest *.test.ts regression test that directly invokes
messagePathsForStructure twice with validTypes ["a,b", "c"] and ["a", "b,c"],
using a structure that matches only one input. Follow the Given-When-Then
pattern and assert the second call returns only its own matching result, proving
distinct cache keys prevent reuse of the first result.

In `@packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.test.tsx`:
- Around line 25-49: Update the NodeEditor tests to exercise text filtering
through the rendered FieldEditor using userEvent rather than invoking
capturedActionHandlers directly. Remove the direct text-filter handler helper
and any internal FieldEditor mocking needed only for it, while preserving
assertions against the visible tree nodes and validating the rendered
FieldEditor-to-NodeEditor interaction.

In `@packages/suite-base/src/dataSources/RemoteDataSourceFactory.test.tsx`:
- Around line 37-52: Rewrite these extension-match tests to call the public
factory.initialize() entry point instead of casting the factory to any and
invoking checkExtensionMatch directly. Cover a single URL, two URLs sharing an
extension, and two URLs with different extensions; preserve the expected
returned extension and the "All sources need to be from the same type" error
assertion.

In `@packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts`:
- Around line 301-308: Update McapIterableSource.terminate() to clear
`#eagerInner` immediately after awaiting its termination, ensuring subsequent
terminate() calls do not invoke it again while preserving the existing
persistent-readable cleanup.

In
`@packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.test.ts`:
- Around line 475-541: Replace the fixed five-microtask loop in the
characterization test with a deterministic synchronization signal from the
hydratorA.close mock, awaiting confirmation that closeStarted has been invoked
before asserting closeFinished remains pending. Keep the observable overlap and
pool bookkeeping assertions intact, without relying on release() or
`#evictBeyondCapacity`()’s internal await sequence.

In `@packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.ts`:
- Around line 124-132: Update the post-await path in acquire() to re-check
`#terminated` immediately after awaiting entry.value, before assigning
entry.weight or increasing `#totalWeight`. If termination occurred, close the
resolved hydrated value via the hydrator and return without re-admitting or
exposing it; preserve the existing behavior for non-terminated acquisitions.

In
`@packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.test.ts`:
- Around line 37-40: Replace the as any casts in each
mockComlinkWrap.mockReturnValueOnce setup with casts through unknown to the
expected ComlinkWrap type, including the occurrences around the remote/dispose
mocks. Preserve the existing mock behavior while eliminating all explicit any
usage.

In `@packages/suite-base/src/util/CachedFilelike.test.ts`:
- Around line 196-228: Remove the debug-log assertion from the test around
MockedCachedFilelike.read, keeping the behavioral assertions that
getNewConnection is called twice and fileReader.fetch runs once for the real
range. Leave the existing getNewConnection mock setup and cleanup unchanged.

In `@packages/suite-base/src/util/CachedFilelike.types.ts`:
- Around line 8-13: Update the FileStream type’s "data" overload to accept a
listener receiving Uint8Array instead of using the unconstrained generic on<T>.
Preserve the existing error, end, and destroy signatures so the stream contract
matches BrowserHttpReader, FetchReader, and the in-memory readers.

In `@packages/suite-base/src/util/getNewConnection.ts`:
- Around line 125-133: Update the read-ahead calculation in getNewConnection to
cap the requested end at maxRequestSize, while preserving the existing fileSize
cap and ensuring the range never shrinks below notDownloadedRanges[0].end. Use
the existing maxRequestSize configuration alongside readAheadBufferBytes.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 311d350a-9680-47de-8075-85378326e077

📥 Commits

Reviewing files that changed from the base of the PR and between ffc9b20 and 5e362cd.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock, !yarn.lock
📒 Files selected for processing (101)
  • .github/agents/lb-message-pipeline.agent.md
  • .github/agents/lb-orchestrator.agent.md
  • .github/agents/lb-panel-image.agent.md
  • .github/agents/lb-panel-log.agent.md
  • .github/agents/lb-panel-map.agent.md
  • .github/agents/lb-panel-plot.agent.md
  • .github/agents/lb-panel-state-transitions.agent.md
  • .github/agents/lb-panel-user-scripts.agent.md
  • .github/agents/lb-panels-general.agent.md
  • .github/agents/lb-player.agent.md
  • .github/agents/lb-remote-connection.agent.md
  • .github/agents/lb-websocket-connection.agent.md
  • .github/copilot-instructions.md
  • .github/prompts/lb-bug-fix.prompt.md
  • .github/prompts/lb-feature-adopt.prompt.md
  • .github/prompts/lb-feature-develop.prompt.md
  • .github/prompts/lb-open-pr.prompt.md
  • .github/prompts/lb-release.prompt.md
  • .github/prompts/lb-review-pr.prompt.md
  • .github/prompts/lb-setup-worktree.prompt.md
  • .github/prompts/lb-upstream-sync.prompt.md
  • .github/skills/3d-rendering/SKILL.md
  • .github/skills/caching-internals/SKILL.md
  • .github/skills/deserialization/SKILL.md
  • .github/skills/electron-internals/SKILL.md
  • .github/skills/extensions-internals/SKILL.md
  • .github/skills/layouts-internals/SKILL.md
  • .github/skills/mcap-format/SKILL.md
  • .github/skills/message-path/SKILL.md
  • .github/skills/message-pipeline/SKILL.md
  • .github/skills/panel-extension-api/SKILL.md
  • .github/skills/panel-image/SKILL.md
  • .github/skills/panel-log/SKILL.md
  • .github/skills/panel-map/SKILL.md
  • .github/skills/panel-raw-messages/SKILL.md
  • .github/skills/panel-state-transitions/SKILL.md
  • .github/skills/panel-user-scripts/SKILL.md
  • .github/skills/performance/SKILL.md
  • .github/skills/player-internals/SKILL.md
  • .github/skills/plot-internals/SKILL.md
  • .github/skills/release-process/SKILL.md
  • .github/skills/remote-caching/SKILL.md
  • .github/skills/theme/SKILL.md
  • .github/skills/unit-testing/SKILL.md
  • .github/skills/web-workers/SKILL.md
  • .github/workflows/post-release.yml
  • .github/workflows/release-sync.yml
  • .github/workflows/stale.yml
  • CONTRIBUTING.md
  • docs/ai-agents/README.md
  • package.json
  • packages/suite-base/package.json
  • packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.ts
  • packages/suite-base/src/components/MessagePathSyntax/structureAllItemsByPath.test.ts
  • packages/suite-base/src/components/MessagePathSyntax/useStructureItemsByPath.test.ts
  • packages/suite-base/src/components/MessagePathSyntax/useStructureItemsByPath.ts
  • packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.test.tsx
  • packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.tsx
  • packages/suite-base/src/components/SettingsTreeEditor/types.ts
  • packages/suite-base/src/context/CurrentLayoutContext/actions.ts
  • packages/suite-base/src/dataSources/McapLocalDataSourceFactory.test.ts
  • packages/suite-base/src/dataSources/McapLocalDataSourceFactory.ts
  • packages/suite-base/src/dataSources/RemoteDataSourceFactory.test.tsx
  • packages/suite-base/src/dataSources/RemoteDataSourceFactory.tsx
  • packages/suite-base/src/i18n/en/settingsEditor.ts
  • packages/suite-base/src/players/IterablePlayer/IIterableSource.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.test.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.types.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSourceWorker.worker.test.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSourceWorker.worker.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/RemoteFileReadable.test.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/RemoteFileReadable.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/RemoteFileReadable.types.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/readerWeight.test.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/readerWeight.ts
  • packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.test.ts
  • packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.ts
  • packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSourceWorker.ts
  • packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.test.ts
  • packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.ts
  • packages/suite-base/src/players/IterablePlayer/shared/MultiIterableSource.test.ts
  • packages/suite-base/src/players/IterablePlayer/shared/MultiIterableSource.ts
  • packages/suite-base/src/players/IterablePlayer/shared/multiFileHydrationOptions.test.ts
  • packages/suite-base/src/players/IterablePlayer/shared/multiFileHydrationOptions.ts
  • packages/suite-base/src/players/IterablePlayer/shared/types.ts
  • packages/suite-base/src/players/IterablePlayer/shared/utils/mergeSequentialIterators.test.ts
  • packages/suite-base/src/players/IterablePlayer/shared/utils/mergeSequentialIterators.ts
  • packages/suite-base/src/util/BrowserHttpReader.ts
  • packages/suite-base/src/util/CachedFilelike.test.ts
  • packages/suite-base/src/util/CachedFilelike.ts
  • packages/suite-base/src/util/CachedFilelike.types.ts
  • packages/suite-base/src/util/getNewConnection.test.ts
  • packages/suite-base/src/util/getNewConnection.ts
  • packages/suite-base/src/util/layout.test.ts
  • packages/suite-base/src/util/layout.ts
  • packages/suite-desktop/package.json
  • packages/suite-web/package.json
  • packages/suite/package.json
  • packages/theme/package.json
  • sonar-project.properties

Comment thread .github/agents/lb-player.agent.md
Comment thread .github/skills/release-process/SKILL.md
Comment thread .github/skills/release-process/SKILL.md
Comment thread .github/skills/remote-caching/SKILL.md Outdated
Comment thread .github/workflows/release-sync.yml
Comment thread package.json Outdated
Comment thread packages/suite-base/src/util/CachedFilelike.ts
Comment thread packages/suite-base/src/util/layout.test.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 16

🧹 Nitpick comments (10)
packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.ts (1)

204-204: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add a direct cache-key regression test.

The included tests do not execute messagePathsForStructure: structureAllItemsByPath.test.ts mocks it, and useStructureItemsByPath.test.ts mocks its caller.

Add a colocated Jest test that calls messagePathsForStructure with ["a,b", "c"] and ["a", "b,c"]. Use a structure that matches only one input. This verifies that the second call does not reuse the first cached result.

As per coding guidelines, use a Jest *.test.ts file and the Given-When-Then pattern.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.ts`
at line 204, Add a colocated Jest *.test.ts regression test that directly
invokes messagePathsForStructure twice with validTypes ["a,b", "c"] and ["a",
"b,c"], using a structure that matches only one input. Follow the
Given-When-Then pattern and assert the second call returns only its own matching
result, proving distinct cache keys prevent reuse of the first result.

Source: Coding guidelines

packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.test.tsx (1)

25-49: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Test text filtering through the rendered FieldEditor.

This mock captures FieldEditor action handlers and invokes them directly. It bypasses the input event and does not verify the FieldEditor to NodeEditor integration.

Use userEvent to enter text in the rendered filter field. Keep the assertions on the visible tree nodes.

As per coding guidelines, "Avoid mocking internals — prefer testing behavior over implementation."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.test.tsx`
around lines 25 - 49, Update the NodeEditor tests to exercise text filtering
through the rendered FieldEditor using userEvent rather than invoking
capturedActionHandlers directly. Remove the direct text-filter handler helper
and any internal FieldEditor mocking needed only for it, while preserving
assertions against the visible tree nodes and validating the rendered
FieldEditor-to-NodeEditor interaction.

Sources: Coding guidelines, Path instructions

packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts (1)

301-308: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Clear #eagerInner after terminating it.

terminate() clears #persistentReadable, so the readable closes exactly once. It does not clear #eagerInner. A second terminate() call therefore invokes #eagerInner.terminate() again. McapIterableSource.test.ts line 557 covers double termination only for the pooled/url case, where #eagerInner is undefined.

Clear the field so termination is idempotent for unindexed and unpooled sources too.

♻️ Proposed fix
     await this.#eagerInner?.terminate?.();
+    this.#eagerInner = undefined;
     // The pool's hydrator.close() intentionally does not close this — it is session-persistent
     // (see `#persistentReadable`) and is only closed when the whole source is torn down.
     this.#persistentReadable?.close();
     this.#persistentReadable = undefined;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts`
around lines 301 - 308, Update McapIterableSource.terminate() to clear
`#eagerInner` immediately after awaiting its termination, ensuring subsequent
terminate() calls do not invoke it again while preserving the existing
persistent-readable cleanup.
packages/suite-base/src/util/CachedFilelike.test.ts (1)

196-228: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider dropping the debug-log assertion.

Line 223 asserts on the exact debug message "Ignoring degenerate". That couples the test to log wording. The behavioral guarantee is already covered by lines 221-222: exactly one fetch, for the real range. Removing the log assertion keeps the test green when the message is reworded.

The jest.doMock("./getNewConnection") stub is acceptable here, because an inverted range cannot be produced through the public API.

As per path instructions for **/*.test.ts: "Avoid mocking internals — prefer testing behavior over implementation."

♻️ Proposed test simplification
         expect(getNewConnection).toHaveBeenCalledTimes(2);
         expect(fetch).toHaveBeenCalledTimes(1);
         expect(fetch).toHaveBeenCalledWith(0, 4);
-        expect(debug).toHaveBeenCalledWith(expect.stringContaining("Ignoring degenerate"));
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/util/CachedFilelike.test.ts` around lines 196 - 228,
Remove the debug-log assertion from the test around MockedCachedFilelike.read,
keeping the behavioral assertions that getNewConnection is called twice and
fileReader.fetch runs once for the real range. Leave the existing
getNewConnection mock setup and cleanup unchanged.

Source: Path instructions

packages/suite-base/src/util/CachedFilelike.types.ts (1)

8-13: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider typing the data listener chunk as Uint8Array.

The generic on<T>(event: "data", listener: (chunk: T) => void) lets a caller declare any chunk type. Both implementations (BrowserHttpReader/FetchReader and the in-memory test readers) emit Uint8Array. A concrete parameter type makes the contract exact and removes the need for callers to annotate the chunk.

As per path instructions for **/*.types.ts: "Check for accurate and comprehensive type definitions."

♻️ Proposed type tightening
 export type FileStream = {
-  on<T>(event: "data", listener: (chunk: T) => void): void;
+  on(event: "data", listener: (chunk: Uint8Array) => void): void;
   on(event: "error", listener: (err: Error) => void): void;
   on(event: "end", listener: () => void): void;
   destroy: () => void;
 };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/util/CachedFilelike.types.ts` around lines 8 - 13,
Update the FileStream type’s "data" overload to accept a listener receiving
Uint8Array instead of using the unconstrained generic on<T>. Preserve the
existing error, end, and destroy signatures so the stream contract matches
BrowserHttpReader, FetchReader, and the in-memory readers.

Source: Path instructions

packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.test.ts (1)

37-40: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Replace the as any casts with a cast through unknown.

The coding guidelines forbid any in TypeScript sources. The mock only needs to satisfy the ComlinkWrap return type, so a cast through unknown to that type keeps the intent and removes any.

-      remote: jest.fn().mockResolvedValue(remote) as any,
+      remote: jest.fn().mockResolvedValue(remote) as unknown as ReturnType<
+        typeof ComlinkWrap
+      >["remote"],

As per coding guidelines, "Use TypeScript strict mode, avoid any, and prefer undefined over null."

Also applies to: 59-62, 72-75

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.test.ts`
around lines 37 - 40, Replace the as any casts in each
mockComlinkWrap.mockReturnValueOnce setup with casts through unknown to the
expected ComlinkWrap type, including the occurrences around the remote/dispose
mocks. Preserve the existing mock behavior while eliminating all explicit any
usage.

Source: Coding guidelines

packages/suite-base/src/dataSources/RemoteDataSourceFactory.test.tsx (1)

37-52: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Test the extension check through initialize() instead of casting to any.

(factory as any).checkExtensionMatch(...) uses any and couples the test to a private method. The same three cases are observable through the public initialize() entry point: a single URL, two URLs with the same extension, and two URLs with different extensions (which must throw "All sources need to be from the same type").

-  it("should throw an error if the comparator and comparing extensions are different", () => {
-    expect(() => (factory as any).checkExtensionMatch(".mcap", ".bag")).toThrow(
-      "All sources need to be from the same type",
-    );
+  it("should throw an error when the urls have different extensions", () => {
+    const mockArgs = setupArgs({
+      url: "https://example.com/test1.mcap,https://example.com/test2.bag",
+    });
+
+    expect(() => factory.initialize(mockArgs)).toThrow("All sources need to be from the same type");

As per coding guidelines, "Use TypeScript strict mode, avoid any", and as per path instructions, "Avoid mocking internals — prefer testing behavior over implementation."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/dataSources/RemoteDataSourceFactory.test.tsx` around
lines 37 - 52, Rewrite these extension-match tests to call the public
factory.initialize() entry point instead of casting the factory to any and
invoking checkExtensionMatch directly. Cover a single URL, two URLs sharing an
extension, and two URLs with different extensions; preserve the expected
returned extension and the "All sources need to be from the same type" error
assertion.

Sources: Coding guidelines, Path instructions

packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.test.ts (1)

475-541: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

The characterization test depends on an exact microtask count, so it is brittle.

The test flushes exactly five microtasks (lines 517-519) to observe that the evicted instance's close() has started but not finished. That count encodes the current internal await sequence of release() and #evictBeyondCapacity(). Any refactor of those awaits changes the required count and fails the test, even when the observable pool contract is unchanged.

Two lower-risk options:

  1. Replace the fixed loop with a deterministic signal: resolve a promise inside the close() mock (closeStarted) and await that promise instead of counting microtasks.
  2. Drop the in-flight-overlap assertions and keep only the assertions about pool bookkeeping (open call count, pool.size, pins), which is the contract you actually want to protect.
♻️ Deterministic wait instead of a microtask count
+      let signalCloseStarted: (() => void) | undefined;
+      const closeStartedPromise = new Promise<void>((resolve) => {
+        signalCloseStarted = resolve;
+      });
       const hydratorA: SourceHydrator<unknown> & { open: jest.Mock; close: jest.Mock } = {
         open: jest.fn().mockResolvedValue("A-instance"),
         close: jest.fn().mockImplementation(async () => {
           closeStarted();
+          signalCloseStarted?.();
           await new Promise<void>((resolve) => {
             resolveClose = resolve;
           });
           closeFinished();
         }),
       };
@@
-      // Flush microtasks so the abandoned eviction sweep's own close() call gets a chance to
-      // start (it awaits `entry.value` first), without allowing it to finish.
-      for (let i = 0; i < 5; i++) {
-        await Promise.resolve();
-      }
+      // Wait until the abandoned eviction sweep actually entered close(), without letting it
+      // finish.
+      await closeStartedPromise;

As per path instructions, "Avoid mocking internals — prefer testing behavior over implementation."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.test.ts`
around lines 475 - 541, Replace the fixed five-microtask loop in the
characterization test with a deterministic synchronization signal from the
hydratorA.close mock, awaiting confirmation that closeStarted has been invoked
before asserting closeFinished remains pending. Keep the observable overlap and
pool bookkeeping assertions intact, without relying on release() or
`#evictBeyondCapacity`()’s internal await sequence.

Source: Path instructions

packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.ts (1)

124-132: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

A terminate() during an in-flight acquire() leaks the hydrated value and inflates #totalWeight.

acquire() inserts the entry, then awaits entry.value. If terminate() runs during that await, it clears #entries and resets #totalWeight to 0, and it closes only the snapshot it captured. The pending open() promise resolves afterwards, so this path:

  • adds entry.weight back into #totalWeight although no entry is resident, and
  • returns a hydrated value that is no longer tracked by the pool, so hydrator.close(value) is never called.

admit() and the not-resident branch of acquire() already guard on #terminated; the post-await path does not. The impact is limited when the pool lives in a worker that is killed right after termination, but MultiIterableSource can also run the pool without a worker teardown.

Re-check the terminal flag after the await.

♻️ Proposed guard
     this.#entries.set(token, entry);
     try {
       const value = (await entry.value) as T;
+      if (this.#terminated) {
+        // terminate() already cleared the map (and reset `#totalWeight`) while open() was in
+        // flight, so this value is untracked: close it instead of retaining or counting it.
+        entry.pins -= 1;
+        if (this.#entries.get(token) === entry) {
+          this.#entries.delete(token);
+        }
+        await hydrator.close(value);
+        throw new Error("HydratedSourcePool has been terminated");
+      }
       entry.weight = Math.max(0, hydrator.weigh?.(value) ?? 1);
       this.#totalWeight += entry.weight;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.ts`
around lines 124 - 132, Update the post-await path in acquire() to re-check
`#terminated` immediately after awaiting entry.value, before assigning
entry.weight or increasing `#totalWeight`. If termination occurred, close the
resolved hydrated value via the hydrator and return without re-admitting or
exposing it; preserve the existing behavior for non-terminated acquisitions.
packages/suite-base/src/util/getNewConnection.ts (1)

125-133: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Cap read-ahead at maxRequestSize.

CachedFilelike passes maxRequestSize: this.#cacheSizeInBytes and readAheadBufferBytes: this.#readAheadBufferBytes separately, and callers can configure readAheadBufferBytes larger than cacheSizeInBytes. Clamping the extension avoids downloading bytes the LRU cache cannot hold.

♻️ Optional clamp
     return {
       ...notDownloadedRanges[0],
       end: Math.max(
         notDownloadedRanges[0].end,
-        Math.min(readRequestRange.start + readAheadBufferBytes, fileSize),
+        Math.min(
+          readRequestRange.start + Math.min(readAheadBufferBytes, maxRequestSize),
+          fileSize,
+        ),
       ),
     };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/suite-base/src/util/getNewConnection.ts` around lines 125 - 133,
Update the read-ahead calculation in getNewConnection to cap the requested end
at maxRequestSize, while preserving the existing fileSize cap and ensuring the
range never shrinks below notDownloadedRanges[0].end. Use the existing
maxRequestSize configuration alongside readAheadBufferBytes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/agents/lb-player.agent.md:
- Line 309: Update the lifecycle guidance to retain only the durable rule for
safely handling initialize()/terminate() races and the reference to
WorkerSerializedIterableSource. Remove the session-relative wording and the
statement that WorkerIterableSource has not yet been audited; track that
follow-up separately if needed.

In @.github/prompts/lb-review-pr.prompt.md:
- Line 15: Update the prose references in the prompt to capitalize “GitHub,”
including “GitHub MCP server” at the locations associated with lines 15, 56, and
93; preserve the lowercase github/list_pull_request_review_comments tool
identifiers unchanged.

In @.github/prompts/lb-setup-worktree.prompt.md:
- Line 65: Update the fetch command in the worktree setup workflow to use the
existing upstream remote when it is available, falling back to origin otherwise;
preserve the pull-request ref and local pr-{id} target.
- Around line 101-106: Update the teardown commands in the worktree setup
instructions to remove the PR-specific worktree using the PR worktree name
format, such as pr-{id}, instead of the optional {short-name}; keep git worktree
prune unchanged.
- Line 73: Update the installation block in the worktree setup prompt to use
Corepack: enable it first, then run the dependency installation through Corepack
so the declared Yarn 4.17.0 version is honored. Keep the existing installation
flow otherwise unchanged.

In @.github/prompts/lb-upstream-sync.prompt.md:
- Around line 54-61: Add a dedicated “Rollback plan” item to the required output
format in the prompt, alongside “Risk and compatibility report,” so Phase 2
explicitly requires both the risk matrix and rollback plan.

In @.github/skills/release-process/SKILL.md:
- Around line 90-92: The release-process documentation currently describes a
non-functional manual trigger. Update the documented workflow guidance around
manual workflow_dispatch to require and use an explicit tag input for checkout
and Docker version tagging, or remove workflow_dispatch from the documented
trigger options; ensure manual runs cannot depend on
github.event.release.tag_name.
- Line 97: Align the Yarn version referenced by the release rules with the
repository-wide dependency-manager version: update the Yarn 4.17.0 reference in
the release-process guidance and any related configuration or documentation so
it consistently matches the documented Yarn 3.6.3 version, or update all
repository rules to the configured version if that is the intended standard.

In @.github/skills/remote-caching/SKILL.md:
- Around line 455-458: Update the unindexed-source handling in
McapIterableSource so McapUnindexedIterableSource instances do not remain
unbounded in `#eagerInner` for the entire session. Add a bounded fallback or
enforce a separate memory/count limit before retaining or releasing these
sources, while preserving the existing pool bypass and indexed-source behavior.

In @.github/workflows/release-sync.yml:
- Around line 72-78: Update the “Enable auto-merge (merge commit) for clean
syncs” step to propagate a nonzero status when gh pr merge "$BRANCH_NAME"
--merge --auto fails. Remove the success-swallowing fallback while preserving
the existing warning context and clean-sync condition.

In @.github/workflows/stale.yml:
- Line 17: Update the stale workflow permissions associated with actions/stale
so the job grants contents: write for deleting expired pull-request branches and
actions: write for the action’s state/cache operations, while preserving the
existing issues: write and pull-requests: write permissions.

In `@package.json`:
- Line 3: Restore the release version to 1.28.1 in package.json at lines 3-3,
packages/suite/package.json at lines 3-3, and sonar-project.properties at lines
4-4, updating the root and suite package versions plus sonar.projectVersion
consistently.

In `@packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts`:
- Around line 184-192: Update `#openUnindexedUrlFallback` to validate response.ok
immediately after fetch and throw an error that preserves the HTTP status before
inspecting or streaming response.body. Also validate the parsed Content-Length
and reject non-numeric or otherwise invalid sizes before constructing the
fallback source.

In
`@packages/suite-base/src/players/IterablePlayer/shared/utils/mergeSequentialIterators.ts`:
- Around line 65-92: Wrap the eager activation, seek-time activation,
pending-source advancement, and drain loop in one try/finally so failures from
any activateSource call are cleaned up. Keep nextSourceIndex, activateSource,
and activateNextSource declared before the try, and ensure the existing finally
closes every iterator tracked in activeIterators.

In `@packages/suite-base/src/util/CachedFilelike.ts`:
- Around line 419-445: Bound retries in the interruption handling around
`#keepReconnectingCallback` and `#updateState`: when a premature stream end makes
zero progress, track repeated zero-progress attempts for the same range and
apply a retry cap or backoff before destroying the connection. Ensure the limit
is enforced even when keepReconnectingCallback is set, while preserving normal
reconnection behavior when bytes are received or progress resumes.

In `@packages/suite-base/src/util/layout.test.ts`:
- Around line 715-730: Update the validateLayoutData assertions in the userNodes
validation tests to use double-quoted error text instead of single quotes,
matching the repository’s Biome quote rule for ts/tsx/js/jsx files. Keep the
existing expectations and test names unchanged; only adjust the string literals
in the two affected expect(...).toThrow calls.

---

Nitpick comments:
In
`@packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.ts`:
- Line 204: Add a colocated Jest *.test.ts regression test that directly invokes
messagePathsForStructure twice with validTypes ["a,b", "c"] and ["a", "b,c"],
using a structure that matches only one input. Follow the Given-When-Then
pattern and assert the second call returns only its own matching result, proving
distinct cache keys prevent reuse of the first result.

In `@packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.test.tsx`:
- Around line 25-49: Update the NodeEditor tests to exercise text filtering
through the rendered FieldEditor using userEvent rather than invoking
capturedActionHandlers directly. Remove the direct text-filter handler helper
and any internal FieldEditor mocking needed only for it, while preserving
assertions against the visible tree nodes and validating the rendered
FieldEditor-to-NodeEditor interaction.

In `@packages/suite-base/src/dataSources/RemoteDataSourceFactory.test.tsx`:
- Around line 37-52: Rewrite these extension-match tests to call the public
factory.initialize() entry point instead of casting the factory to any and
invoking checkExtensionMatch directly. Cover a single URL, two URLs sharing an
extension, and two URLs with different extensions; preserve the expected
returned extension and the "All sources need to be from the same type" error
assertion.

In `@packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts`:
- Around line 301-308: Update McapIterableSource.terminate() to clear
`#eagerInner` immediately after awaiting its termination, ensuring subsequent
terminate() calls do not invoke it again while preserving the existing
persistent-readable cleanup.

In
`@packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.test.ts`:
- Around line 475-541: Replace the fixed five-microtask loop in the
characterization test with a deterministic synchronization signal from the
hydratorA.close mock, awaiting confirmation that closeStarted has been invoked
before asserting closeFinished remains pending. Keep the observable overlap and
pool bookkeeping assertions intact, without relying on release() or
`#evictBeyondCapacity`()’s internal await sequence.

In `@packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.ts`:
- Around line 124-132: Update the post-await path in acquire() to re-check
`#terminated` immediately after awaiting entry.value, before assigning
entry.weight or increasing `#totalWeight`. If termination occurred, close the
resolved hydrated value via the hydrator and return without re-admitting or
exposing it; preserve the existing behavior for non-terminated acquisitions.

In
`@packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.test.ts`:
- Around line 37-40: Replace the as any casts in each
mockComlinkWrap.mockReturnValueOnce setup with casts through unknown to the
expected ComlinkWrap type, including the occurrences around the remote/dispose
mocks. Preserve the existing mock behavior while eliminating all explicit any
usage.

In `@packages/suite-base/src/util/CachedFilelike.test.ts`:
- Around line 196-228: Remove the debug-log assertion from the test around
MockedCachedFilelike.read, keeping the behavioral assertions that
getNewConnection is called twice and fileReader.fetch runs once for the real
range. Leave the existing getNewConnection mock setup and cleanup unchanged.

In `@packages/suite-base/src/util/CachedFilelike.types.ts`:
- Around line 8-13: Update the FileStream type’s "data" overload to accept a
listener receiving Uint8Array instead of using the unconstrained generic on<T>.
Preserve the existing error, end, and destroy signatures so the stream contract
matches BrowserHttpReader, FetchReader, and the in-memory readers.

In `@packages/suite-base/src/util/getNewConnection.ts`:
- Around line 125-133: Update the read-ahead calculation in getNewConnection to
cap the requested end at maxRequestSize, while preserving the existing fileSize
cap and ensuring the range never shrinks below notDownloadedRanges[0].end. Use
the existing maxRequestSize configuration alongside readAheadBufferBytes.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 311d350a-9680-47de-8075-85378326e077

📥 Commits

Reviewing files that changed from the base of the PR and between ffc9b20 and 5e362cd.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock, !yarn.lock
📒 Files selected for processing (101)
  • .github/agents/lb-message-pipeline.agent.md
  • .github/agents/lb-orchestrator.agent.md
  • .github/agents/lb-panel-image.agent.md
  • .github/agents/lb-panel-log.agent.md
  • .github/agents/lb-panel-map.agent.md
  • .github/agents/lb-panel-plot.agent.md
  • .github/agents/lb-panel-state-transitions.agent.md
  • .github/agents/lb-panel-user-scripts.agent.md
  • .github/agents/lb-panels-general.agent.md
  • .github/agents/lb-player.agent.md
  • .github/agents/lb-remote-connection.agent.md
  • .github/agents/lb-websocket-connection.agent.md
  • .github/copilot-instructions.md
  • .github/prompts/lb-bug-fix.prompt.md
  • .github/prompts/lb-feature-adopt.prompt.md
  • .github/prompts/lb-feature-develop.prompt.md
  • .github/prompts/lb-open-pr.prompt.md
  • .github/prompts/lb-release.prompt.md
  • .github/prompts/lb-review-pr.prompt.md
  • .github/prompts/lb-setup-worktree.prompt.md
  • .github/prompts/lb-upstream-sync.prompt.md
  • .github/skills/3d-rendering/SKILL.md
  • .github/skills/caching-internals/SKILL.md
  • .github/skills/deserialization/SKILL.md
  • .github/skills/electron-internals/SKILL.md
  • .github/skills/extensions-internals/SKILL.md
  • .github/skills/layouts-internals/SKILL.md
  • .github/skills/mcap-format/SKILL.md
  • .github/skills/message-path/SKILL.md
  • .github/skills/message-pipeline/SKILL.md
  • .github/skills/panel-extension-api/SKILL.md
  • .github/skills/panel-image/SKILL.md
  • .github/skills/panel-log/SKILL.md
  • .github/skills/panel-map/SKILL.md
  • .github/skills/panel-raw-messages/SKILL.md
  • .github/skills/panel-state-transitions/SKILL.md
  • .github/skills/panel-user-scripts/SKILL.md
  • .github/skills/performance/SKILL.md
  • .github/skills/player-internals/SKILL.md
  • .github/skills/plot-internals/SKILL.md
  • .github/skills/release-process/SKILL.md
  • .github/skills/remote-caching/SKILL.md
  • .github/skills/theme/SKILL.md
  • .github/skills/unit-testing/SKILL.md
  • .github/skills/web-workers/SKILL.md
  • .github/workflows/post-release.yml
  • .github/workflows/release-sync.yml
  • .github/workflows/stale.yml
  • CONTRIBUTING.md
  • docs/ai-agents/README.md
  • package.json
  • packages/suite-base/package.json
  • packages/suite-base/src/components/MessagePathSyntax/messagePathsForDatatype.ts
  • packages/suite-base/src/components/MessagePathSyntax/structureAllItemsByPath.test.ts
  • packages/suite-base/src/components/MessagePathSyntax/useStructureItemsByPath.test.ts
  • packages/suite-base/src/components/MessagePathSyntax/useStructureItemsByPath.ts
  • packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.test.tsx
  • packages/suite-base/src/components/SettingsTreeEditor/NodeEditor.tsx
  • packages/suite-base/src/components/SettingsTreeEditor/types.ts
  • packages/suite-base/src/context/CurrentLayoutContext/actions.ts
  • packages/suite-base/src/dataSources/McapLocalDataSourceFactory.test.ts
  • packages/suite-base/src/dataSources/McapLocalDataSourceFactory.ts
  • packages/suite-base/src/dataSources/RemoteDataSourceFactory.test.tsx
  • packages/suite-base/src/dataSources/RemoteDataSourceFactory.tsx
  • packages/suite-base/src/i18n/en/settingsEditor.ts
  • packages/suite-base/src/players/IterablePlayer/IIterableSource.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.test.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSource.types.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSourceWorker.worker.test.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/McapIterableSourceWorker.worker.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/RemoteFileReadable.test.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/RemoteFileReadable.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/RemoteFileReadable.types.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/readerWeight.test.ts
  • packages/suite-base/src/players/IterablePlayer/Mcap/readerWeight.ts
  • packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.test.ts
  • packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSource.ts
  • packages/suite-base/src/players/IterablePlayer/WorkerSerializedIterableSourceWorker.ts
  • packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.test.ts
  • packages/suite-base/src/players/IterablePlayer/shared/HydratedSourcePool.ts
  • packages/suite-base/src/players/IterablePlayer/shared/MultiIterableSource.test.ts
  • packages/suite-base/src/players/IterablePlayer/shared/MultiIterableSource.ts
  • packages/suite-base/src/players/IterablePlayer/shared/multiFileHydrationOptions.test.ts
  • packages/suite-base/src/players/IterablePlayer/shared/multiFileHydrationOptions.ts
  • packages/suite-base/src/players/IterablePlayer/shared/types.ts
  • packages/suite-base/src/players/IterablePlayer/shared/utils/mergeSequentialIterators.test.ts
  • packages/suite-base/src/players/IterablePlayer/shared/utils/mergeSequentialIterators.ts
  • packages/suite-base/src/util/BrowserHttpReader.ts
  • packages/suite-base/src/util/CachedFilelike.test.ts
  • packages/suite-base/src/util/CachedFilelike.ts
  • packages/suite-base/src/util/CachedFilelike.types.ts
  • packages/suite-base/src/util/getNewConnection.test.ts
  • packages/suite-base/src/util/getNewConnection.ts
  • packages/suite-base/src/util/layout.test.ts
  • packages/suite-base/src/util/layout.ts
  • packages/suite-desktop/package.json
  • packages/suite-web/package.json
  • packages/suite/package.json
  • packages/theme/package.json
  • sonar-project.properties
🛑 Comments failed to post (5)
.github/prompts/lb-review-pr.prompt.md (1)

15-15: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Capitalize GitHub in prose.

Use GitHub MCP server on Lines 15, 56, and 93. Keep the lowercase github/list_pull_request_review_comments identifiers on Lines 95-96 unchanged because those are tool names.

Also applies to: 56-56, 93-93

🧰 Tools
🪛 LanguageTool

[uncategorized] ~15-~15: The official name of this software platform is spelled with a capital “H”.
Context: ...### Inputs - PR number or URL (use the github MCP server to fetch diff and review th...

(GITHUB)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/prompts/lb-review-pr.prompt.md at line 15, Update the prose
references in the prompt to capitalize “GitHub,” including “GitHub MCP server”
at the locations associated with lines 15, 56, and 93; preserve the lowercase
github/list_pull_request_review_comments tool identifiers unchanged.

Source: Linters/SAST tools

.github/prompts/lb-setup-worktree.prompt.md (3)

65-65: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Fetch pull-request refs from the base repository.

When upstream exists, this workflow identifies a fork contributor and uses upstream/develop as the base. In that case, origin is the contributor fork, so git fetch origin pull/{id}/head:pr-{id} cannot fetch the upstream pull-request ref. Select upstream when present, and origin otherwise.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/prompts/lb-setup-worktree.prompt.md at line 65, Update the fetch
command in the worktree setup workflow to use the existing upstream remote when
it is available, falling back to origin otherwise; preserve the pull-request ref
and local pr-{id} target.

73-73: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== candidate files =="
fd -i "package.json|yarn.lock|corepack|lb-setup-worktree" . || true

echo
echo "== prompt lines around command =="
if [ -f .github/prompts/lb-setup-worktree.prompt.md ]; then
  sed -n '60,80p' .github/prompts/lb-setup-worktree.prompt.md | cat -n
fi

echo
echo "== all yarn install / corepack usage in prompt =="
rg -n "yarn install|corepack|yarnVersion|packageManager" .github/prompts package.json yarn.lock 2>/dev/null || true

echo
echo "== package manager declarations =="
python3 - <<'PY'
import json
from pathlib import Path
p=Path('package.json')
if p.exists():
    data=json.loads(p.read_text())
    print("packageManager:", data.get("packageManager"))
    print("engines:", data.get("engines"))
PY

Repository: lichtblick-suite/lichtblick

Length of output: 3056


Use Corepack for dependency installation.

This package declares yarn@4.17.0 in package.json, and the prompt still runs yarn install directly. Replace the installation block with corepack enable followed by corepack yarn install, or change the package manager declaration if Yarn 3.6.3 is required here.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/prompts/lb-setup-worktree.prompt.md at line 73, Update the
installation block in the worktree setup prompt to use Corepack: enable it
first, then run the dependency installation through Corepack so the declared
Yarn 4.17.0 version is honored. Keep the existing installation flow otherwise
unchanged.

Source: Coding guidelines


101-106: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Use the PR worktree name during teardown.

Review mode creates ../lichtblick.worktree/pr-{id}, but this command removes ../lichtblick.worktree/{short-name}. Since short-name is optional for PR reviews, the command can fail and leave the worktree behind.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/prompts/lb-setup-worktree.prompt.md around lines 101 - 106, Update
the teardown commands in the worktree setup instructions to remove the
PR-specific worktree using the PR worktree name format, such as pr-{id}, instead
of the optional {short-name}; keep git worktree prune unchanged.
.github/prompts/lb-upstream-sync.prompt.md (1)

54-61: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Add the rollback plan to the required output.

Phase 2 requires a risk matrix and rollback plan. The output contract lists only Risk and compatibility report. An agent can omit the rollback plan and still satisfy the prompt. Add a dedicated Rollback plan output item.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/prompts/lb-upstream-sync.prompt.md around lines 54 - 61, Add a
dedicated “Rollback plan” item to the required output format in the prompt,
alongside “Risk and compatibility report,” so Phase 2 explicitly requires both
the risk matrix and rollback plan.

The main->develop ancestry-reconciliation merge (-s ours, PR #1253) did
not carry over the v1.28.0 version bump into develop, leaving
package.json, packages/suite/package.json, and sonar-project.properties
stuck at 1.27.1. Since hotfix/v1.28.1 branched from develop, it inherited
the stale version and its diff against main was regressing the version
back to 1.27.1. This restores 1.28.0 so release.yml's `yarn version patch`
step correctly computes 1.28.1 instead of 1.27.2.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@sonarqubecloud

sonarqubecloud Bot commented Aug 5, 2026

Copy link
Copy Markdown

luluiz added a commit that referenced this pull request Aug 6, 2026
## Summary
Restore develop's stale version fields to `1.28.0` in:
- `package.json`
- `packages/suite/package.json`
- `sonar-project.properties`

## Root cause
The main -> develop ancestry-reconciliation merge done with `-s ours` in
PR #1253 advanced the merge-base without bringing over the version-file
changes from main. As a result, develop's release version fields stayed
at `1.27.1` even though main had already released `v1.28.0`.

That stale state then caused hotfix/v1.28.1 (branched from develop) to
regress main's version metadata in PR #1285.

## Why this PR
This PR brings develop's version fields back in line with main
(`v1.28.0`) so future release and hotfix branches inherit the correct
base version.

## References
- PR #1253
- PR #1285
- Supersedes and replaces closed PR #1286 (renamed branch to satisfy
develop branch naming rules)
@luluiz
luluiz enabled auto-merge August 6, 2026 07:39
@luluiz
luluiz merged commit 1def7ca into main Aug 6, 2026
22 checks passed
@luluiz
luluiz deleted the hotfix/v1.28.1 branch August 6, 2026 07:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.