In #9798, we added a check to map `ENOBUFS` to `WOUDLBLOCK` on MacOS.
More experimentation on that front revealed that this was actually
incorrect and the UDP sending task will hang as the OS does **not**
notify us once there are new buffers available.
This may explain some random connection hangs that some users have
recently complained about. I've already disabled the feature flag in
production, this PR therefore only removes code that is now inactive.
In order to make this as robust as possible, we implement a retry loop
with an exponential backoff, starting a 2ns. At most, we will be
retrying such a packet for 16ms. Local experiments on my Macbook have
shown that most of the time, new buffer space is available within 1ms.
The exponential backoff ensures we retry very quickly on faster machines
but still successfully send the packet on slower machines.
According to the linked mailing list, the link-speed of the attached
network has nothing to do with this which makes sense. UDP has no
congestion control so sending packets is merely a function of how fast
the CPU can process them.
Related:
https://lists.freebsd.org/pipermail/freebsd-hackers/2004-January/005369.html
---------
Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
Bumps the tauri group in /rust with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [tauri-plugin-dialog](https://github.com/tauri-apps/plugins-workspace)
| `2.4.0` | `2.4.1` |
|
[tauri-plugin-notification](https://github.com/tauri-apps/plugins-workspace)
| `2.3.1` | `2.3.2` |
| [tauri-plugin-opener](https://github.com/tauri-apps/plugins-workspace)
| `2.5.0` | `2.5.1` |
| [tauri-plugin-shell](https://github.com/tauri-apps/plugins-workspace)
| `2.3.1` | `2.3.2` |
| [tauri-utils](https://github.com/tauri-apps/tauri) | `2.7.0` | `2.8.0`
|
Updates `tauri-plugin-dialog` from 2.4.0 to 2.4.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tauri-apps/plugins-workspace/releases">tauri-plugin-dialog's
releases</a>.</em></p>
<blockquote>
<h2>barcode-scanner-js v2.4.1</h2>
<h2>[2.4.1]</h2>
<ul>
<li><a
href="654bf4891a"><code>654bf489</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3038">#3038</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../daniel-mader"><code>@daniel-mader</code></a>)
Update <code>androidx.camera</code> from <code>1.1.0</code> to
<code>1.5.1</code> to support 16 KB memory page sizes.</li>
<li><a
href="6c9b61fb65"><code>6c9b61fb</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3039">#3039</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../FabianLars"><code>@FabianLars</code></a>)
On Android, updated compileSdk to 36.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>npm warn publish npm auto-corrected some errors in your
package.json when publishing. Please run "npm pkg fix" to
address these errors.
npm warn publish errors corrected:
npm warn publish "repository" was changed from a string to an
object
npm warn publish "repository.url" was normalized to
"git+https://github.com/tauri-apps/plugins-workspace.git"
npm notice
npm notice 📦 @tauri-apps/plugin-barcode-scanner@2.4.1
npm notice Tarball Contents
npm notice 888B LICENSE.spdx
npm notice 3.3kB README.md
npm notice 2.2kB dist-js/index.cjs
npm notice 1.6kB dist-js/index.d.ts
npm notice 2.1kB dist-js/index.js
npm notice 754B package.json
npm notice Tarball Details
npm notice name: @tauri-apps/plugin-barcode-scanner
npm notice version: 2.4.1
npm notice filename: tauri-apps-plugin-barcode-scanner-2.4.1.tgz
npm notice package size: 3.4 kB
npm notice unpacked size: 10.9 kB
npm notice shasum: 1425963d0302d3947c3b6d5309671cce390cfb5e
npm notice integrity: sha512-AN5vdeLvuv93z[...]PrRCthwUgTgow==
npm notice total files: 6
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and
public access
npm notice publish Signed provenance statement with source and build
information from GitHub Actions
npm notice publish Provenance statement published to transparency log:
https://search.sigstore.dev/?logIndex=642040114
+ @tauri-apps/plugin-barcode-scanner@2.4.1
</code></pre>
<!-- raw HTML omitted -->
<h2>barcode-scanner v2.4.1</h2>
<h2>[2.4.1]</h2>
<ul>
<li><a
href="654bf4891a"><code>654bf489</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3038">#3038</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../daniel-mader"><code>@daniel-mader</code></a>)
Update <code>androidx.camera</code> from <code>1.1.0</code> to
<code>1.5.1</code> to support 16 KB memory page sizes.</li>
<li><a
href="6c9b61fb65"><code>6c9b61fb</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3039">#3039</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../FabianLars"><code>@FabianLars</code></a>)
On Android, updated compileSdk to 36.</li>
</ul>
<!-- raw HTML omitted -->
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d66aa6ff78"><code>d66aa6f</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2822">#2822</a>)</li>
<li><a
href="6f345870df"><code>6f34587</code></a>
fix(single-instance): disable dbus name replacement (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2860">#2860</a>)</li>
<li><a
href="708fa4e2b7"><code>708fa4e</code></a>
chore(deps): update dependency eslint-config-prettier to v10.1.8 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2858">#2858</a>)</li>
<li><a
href="b729203059"><code>b729203</code></a>
fix(upload): fix download() locks main thread on Android (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2838">#2838</a>)</li>
<li><a
href="2f9c71aae7"><code>2f9c71a</code></a>
chore(deps): update dependency rollup to v4.45.1 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2850">#2850</a>)</li>
<li><a
href="80d4d8e128"><code>80d4d8e</code></a>
chore(deps): update eslint monorepo to v9.31.0 (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2839">#2839</a>)</li>
<li><a
href="e7a98b0d2e"><code>e7a98b0</code></a>
chore(deps): update dependency typescript-eslint to v8.37.0 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2848">#2848</a>)</li>
<li><a
href="44a1f65912"><code>44a1f65</code></a>
fix(fs): <code>writeFile</code> create file by default (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2846">#2846</a>)</li>
<li><a
href="6210cd31df"><code>6210cd3</code></a>
chore(deps): update dependency rollup to v4.45.0 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2841">#2841</a>)</li>
<li><a
href="467f07b7de"><code>467f07b</code></a>
chore(deps): update dependency vite to v7 (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2800">#2800</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/plugins-workspace/compare/fs-v2.4.0...fs-v2.4.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `tauri-plugin-notification` from 2.3.1 to 2.3.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tauri-apps/plugins-workspace/releases">tauri-plugin-notification's
releases</a>.</em></p>
<blockquote>
<h2>persisted-scope v2.3.2</h2>
<h2>[2.3.2]</h2>
<h3>Dependencies</h3>
<ul>
<li>Upgraded to <code>fs@2.4.2</code></li>
</ul>
<!-- raw HTML omitted -->
<pre><code>Updating crates.io index
Packaging tauri-plugin-persisted-scope v2.3.2
(/home/runner/work/plugins-workspace/plugins-workspace/plugins/persisted-scope)
Updating crates.io index
Packaged 12 files, 185.1KiB (83.8KiB compressed)
Uploading tauri-plugin-persisted-scope v2.3.2
(/home/runner/work/plugins-workspace/plugins-workspace/plugins/persisted-scope)
Uploaded tauri-plugin-persisted-scope v2.3.2 to registry `crates-io`
note: waiting for tauri-plugin-persisted-scope v2.3.2 to be available at
registry `crates-io`.
You may press ctrl-c to skip waiting; the crate should be available
shortly.
Published tauri-plugin-persisted-scope v2.3.2 at registry `crates-io`
</code></pre>
<!-- raw HTML omitted -->
<h2>nfc-js v2.3.2</h2>
<h2>[2.3.2]</h2>
<ul>
<li><a
href="6c9b61fb65"><code>6c9b61fb</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3039">#3039</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../FabianLars"><code>@FabianLars</code></a>)
On Android, updated compileSdk to 36.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>npm warn publish npm auto-corrected some errors in your
package.json when publishing. Please run "npm pkg fix" to
address these errors.
npm warn publish errors corrected:
npm warn publish "repository" was changed from a string to an
object
npm warn publish "repository.url" was normalized to
"git+https://github.com/tauri-apps/plugins-workspace.git"
npm notice
npm notice 📦 @tauri-apps/plugin-nfc@2.3.2
npm notice Tarball Contents
npm notice 888B LICENSE.spdx
npm notice 3.1kB README.md
npm notice 5.0kB dist-js/index.cjs
npm notice 3.7kB dist-js/index.d.ts
npm notice 4.8kB dist-js/index.js
npm notice 678B package.json
npm notice Tarball Details
npm notice name: @tauri-apps/plugin-nfc
npm notice version: 2.3.2
npm notice filename: tauri-apps-plugin-nfc-2.3.2.tgz
</tr></table>
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e7a68fa637"><code>e7a68fa</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3068">#3068</a>)</li>
<li><a
href="b5550a3b0d"><code>b5550a3</code></a>
chore: temp delete updater changefile</li>
<li><a
href="93426f8512"><code>93426f8</code></a>
fix: fix docsrs builds</li>
<li><a
href="4ee61e055e"><code>4ee61e0</code></a>
Revert "chore: temp delete updater changefile"</li>
<li><a
href="06124af8d6"><code>06124af</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2972">#2972</a>)</li>
<li><a
href="060219e597"><code>060219e</code></a>
chore(deps): update dependency <code>@rollup/plugin-typescript</code>
to v12.3.0 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3067">#3067</a>)</li>
<li><a
href="c7e9766ff5"><code>c7e9766</code></a>
chore(deps): update tauri monorepo (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3058">#3058</a>)</li>
<li><a
href="d4a8ce962b"><code>d4a8ce9</code></a>
chore(deps): update rust crate tokio-tungstenite to 0.28 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3016">#3016</a>)</li>
<li><a
href="cdc7eec415"><code>cdc7eec</code></a>
chore(deps): update dependency <code>@rollup/plugin-typescript</code>
to v12.2.0 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3066">#3066</a>)</li>
<li><a
href="6314b004ab"><code>6314b00</code></a>
chore: temp delete updater changefile</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/plugins-workspace/compare/os-v2.3.1...os-v2.3.2">compare
view</a></li>
</ul>
</details>
<br />
Updates `tauri-plugin-opener` from 2.5.0 to 2.5.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tauri-apps/plugins-workspace/releases">tauri-plugin-opener's
releases</a>.</em></p>
<blockquote>
<h2>opener-js v2.5.1</h2>
<h2>[2.5.1]</h2>
<ul>
<li><a
href="6c9b61fb65"><code>6c9b61fb</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3039">#3039</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../FabianLars"><code>@FabianLars</code></a>)
On Android, updated compileSdk to 36.</li>
<li><a
href="67a7bf80f8"><code>67a7bf80</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3018">#3018</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../Legend-Master"><code>@Legend-Master</code></a>)
Fix opener doesn't open same origin links in the browser</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>npm warn publish npm auto-corrected some errors in your
package.json when publishing. Please run "npm pkg fix" to
address these errors.
npm warn publish errors corrected:
npm warn publish "repository" was changed from a string to an
object
npm warn publish "repository.url" was normalized to
"git+https://github.com/tauri-apps/plugins-workspace.git"
npm notice
npm notice 📦 @tauri-apps/plugin-opener@2.5.1
npm notice Tarball Contents
npm notice 888B LICENSE.spdx
npm notice 4.2kB README.md
npm notice 3.1kB dist-js/index.cjs
npm notice 2.0kB dist-js/index.d.ts
npm notice 3.1kB dist-js/index.js
npm notice 11B dist-js/init.d.ts
npm notice 729B package.json
npm notice Tarball Details
npm notice name: @tauri-apps/plugin-opener
npm notice version: 2.5.1
npm notice filename: tauri-apps-plugin-opener-2.5.1.tgz
npm notice package size: 3.5 kB
npm notice unpacked size: 14.1 kB
npm notice shasum: aedf32d399e9d0f6dcaacca4e2461550ab8d3b79
npm notice integrity: sha512-nyT6oW4ibyXJN[...]7/Q46ZKuzeeBQ==
npm notice total files: 7
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and
public access
npm notice publish Signed provenance statement with source and build
information from GitHub Actions
npm notice publish Provenance statement published to transparency log:
https://search.sigstore.dev/?logIndex=642040262
+ @tauri-apps/plugin-opener@2.5.1
</code></pre>
<!-- raw HTML omitted -->
<h2>opener v2.5.1</h2>
<h2>[2.5.1]</h2>
<ul>
<li><a
href="6c9b61fb65"><code>6c9b61fb</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3039">#3039</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../FabianLars"><code>@FabianLars</code></a>)
On Android, updated compileSdk to 36.</li>
<li><a
href="67a7bf80f8"><code>67a7bf80</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3018">#3018</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../Legend-Master"><code>@Legend-Master</code></a>)
Fix opener doesn't open same origin links in the browser</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5779099688"><code>5779099</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2780">#2780</a>)</li>
<li><a
href="2aec8ff4c4"><code>2aec8ff</code></a>
feat(opener): add <code>inAppBrowser</code> option for iOS and Android
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2803">#2803</a>)</li>
<li><a
href="9799f0dbab"><code>9799f0d</code></a>
fix(log): iOS simulator freezing due to early logging (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2802">#2802</a>)</li>
<li><a
href="8cdaacdc6e"><code>8cdaacd</code></a>
chore(examples): update API example mobile projects</li>
<li><a
href="d46778e80b"><code>d46778e</code></a>
chore(deps): update dependency typescript-eslint to v8.35.0 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2794">#2794</a>)</li>
<li><a
href="a0288648f8"><code>a028864</code></a>
chore(deps): update dependency prettier to v3.6.0 (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2789">#2789</a>)</li>
<li><a
href="f6e11282a7"><code>f6e1128</code></a>
feat(cli): Pass optional args to get matches (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2787">#2787</a>)</li>
<li><a
href="5642283dba"><code>5642283</code></a>
chore(deps): update dependency rollup to v4.44.0 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2782">#2782</a>)</li>
<li><a
href="37c2fb4120"><code>37c2fb4</code></a>
feat(cli): add support for global CLI arguments (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2772">#2772</a>)</li>
<li><a
href="27c2193d42"><code>27c2193</code></a>
chore(deps): update dependency <code>@rollup/plugin-typescript</code>
to v12.1.3 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2778">#2778</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/plugins-workspace/compare/log-v2.5.0...log-v2.5.1">compare
view</a></li>
</ul>
</details>
<br />
Updates `tauri-plugin-shell` from 2.3.1 to 2.3.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tauri-apps/plugins-workspace/releases">tauri-plugin-shell's
releases</a>.</em></p>
<blockquote>
<h2>persisted-scope v2.3.2</h2>
<h2>[2.3.2]</h2>
<h3>Dependencies</h3>
<ul>
<li>Upgraded to <code>fs@2.4.2</code></li>
</ul>
<!-- raw HTML omitted -->
<pre><code>Updating crates.io index
Packaging tauri-plugin-persisted-scope v2.3.2
(/home/runner/work/plugins-workspace/plugins-workspace/plugins/persisted-scope)
Updating crates.io index
Packaged 12 files, 185.1KiB (83.8KiB compressed)
Uploading tauri-plugin-persisted-scope v2.3.2
(/home/runner/work/plugins-workspace/plugins-workspace/plugins/persisted-scope)
Uploaded tauri-plugin-persisted-scope v2.3.2 to registry `crates-io`
note: waiting for tauri-plugin-persisted-scope v2.3.2 to be available at
registry `crates-io`.
You may press ctrl-c to skip waiting; the crate should be available
shortly.
Published tauri-plugin-persisted-scope v2.3.2 at registry `crates-io`
</code></pre>
<!-- raw HTML omitted -->
<h2>nfc-js v2.3.2</h2>
<h2>[2.3.2]</h2>
<ul>
<li><a
href="6c9b61fb65"><code>6c9b61fb</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/3039">#3039</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../FabianLars"><code>@FabianLars</code></a>)
On Android, updated compileSdk to 36.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>npm warn publish npm auto-corrected some errors in your
package.json when publishing. Please run "npm pkg fix" to
address these errors.
npm warn publish errors corrected:
npm warn publish "repository" was changed from a string to an
object
npm warn publish "repository.url" was normalized to
"git+https://github.com/tauri-apps/plugins-workspace.git"
npm notice
npm notice 📦 @tauri-apps/plugin-nfc@2.3.2
npm notice Tarball Contents
npm notice 888B LICENSE.spdx
npm notice 3.1kB README.md
npm notice 5.0kB dist-js/index.cjs
npm notice 3.7kB dist-js/index.d.ts
npm notice 4.8kB dist-js/index.js
npm notice 678B package.json
npm notice Tarball Details
npm notice name: @tauri-apps/plugin-nfc
npm notice version: 2.3.2
npm notice filename: tauri-apps-plugin-nfc-2.3.2.tgz
</tr></table>
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e7a68fa637"><code>e7a68fa</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3068">#3068</a>)</li>
<li><a
href="b5550a3b0d"><code>b5550a3</code></a>
chore: temp delete updater changefile</li>
<li><a
href="93426f8512"><code>93426f8</code></a>
fix: fix docsrs builds</li>
<li><a
href="4ee61e055e"><code>4ee61e0</code></a>
Revert "chore: temp delete updater changefile"</li>
<li><a
href="06124af8d6"><code>06124af</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2972">#2972</a>)</li>
<li><a
href="060219e597"><code>060219e</code></a>
chore(deps): update dependency <code>@rollup/plugin-typescript</code>
to v12.3.0 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3067">#3067</a>)</li>
<li><a
href="c7e9766ff5"><code>c7e9766</code></a>
chore(deps): update tauri monorepo (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3058">#3058</a>)</li>
<li><a
href="d4a8ce962b"><code>d4a8ce9</code></a>
chore(deps): update rust crate tokio-tungstenite to 0.28 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3016">#3016</a>)</li>
<li><a
href="cdc7eec415"><code>cdc7eec</code></a>
chore(deps): update dependency <code>@rollup/plugin-typescript</code>
to v12.2.0 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/3066">#3066</a>)</li>
<li><a
href="6314b004ab"><code>6314b00</code></a>
chore: temp delete updater changefile</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/plugins-workspace/compare/os-v2.3.1...os-v2.3.2">compare
view</a></li>
</ul>
</details>
<br />
Updates `tauri-utils` from 2.7.0 to 2.8.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tauri-apps/tauri/releases">tauri-utils's
releases</a>.</em></p>
<blockquote>
<h2>tauri-utils v2.8.0</h2>
<!-- raw HTML omitted -->
<pre><code>Updating git repository
`https://github.com/tauri-apps/schemars.git`
Updating crates.io index
warning: Patch `schemars_derive v0.8.21
(https://github.com/tauri-apps/schemars.git?branch=feat%2Fpreserve-description-newlines#c30f9848)`
was not used in the crate graph.
Check that the patched package version and available features are
compatible
with the dependency requirements. If the patch has a different version
from
what is locked in the Cargo.lock file, run `cargo update` to use the new
version. This may also occur with an optional dependency that is not
enabled.
Locking 1051 packages to latest compatible versions
Adding apple-codesign v0.27.0 (available: v0.29.0)
Adding cargo-mobile2 v0.21.2 (available: v0.22.1)
Adding cargo_metadata v0.19.2 (available: v0.23.0)
Adding colored v2.2.0 (available: v3.0.0)
Adding ctor v0.2.9 (available: v0.6.0)
Adding dialoguer v0.11.0 (available: v0.12.0)
Adding elf v0.7.4 (available: v0.8.0)
Adding goblin v0.9.3 (available: v0.10.3)
Adding html5ever v0.29.1 (available: v0.35.0)
Adding itertools v0.13.0 (available: v0.14.0)
Adding json-patch v3.0.1 (available: v4.1.0)
Adding jsonrpsee v0.24.9 (available: v0.26.0)
Adding jsonrpsee-client-transport v0.24.9 (available: v0.26.0)
Adding jsonrpsee-core v0.24.9 (available: v0.26.0)
Adding jsonrpsee-ws-client v0.24.9 (available: v0.26.0)
Adding matchit v0.8.4 (available: v0.8.6)
Adding minisign v0.7.3 (available: v0.7.9)
Adding object v0.36.7 (available: v0.37.3)
Adding oxc_allocator v0.36.0 (available: v0.95.0)
Adding oxc_ast v0.36.0 (available: v0.95.0)
Adding oxc_parser v0.36.0 (available: v0.95.0)
Adding oxc_span v0.36.0 (available: v0.95.0)
Adding phf v0.11.3 (available: v0.13.1)
Adding png v0.17.16 (available: v0.18.0)
Adding rpm v0.16.1 (available: v0.18.4)
Adding schemars v0.8.22 (available: v1.0.4)
Adding tiny_http v0.11.0 (available: v0.12.0)
Adding toml v0.8.2 (available: v0.8.23)
Adding toml_datetime v0.6.3 (available: v0.6.11)
Adding toml_edit v0.20.2 (available: v0.20.7)
Adding urlpattern v0.3.0 (available: v0.4.0)
Adding windows v0.61.3 (available: v0.62.2)
Adding windows-registry v0.5.3 (available: v0.6.1)
Adding windows-sys v0.60.2 (available: v0.61.2)
Adding x509-certificate v0.23.1 (available: v0.25.0)
Adding zip v4.6.1 (available: v6.0.0)
Fetching advisory database from
`https://github.com/RustSec/advisory-db.git`
</tr></table>
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cb28f4368c"><code>cb28f43</code></a>
apply version updates (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/14137">#14137</a>)</li>
<li><a
href="6aa7f2d852"><code>6aa7f2d</code></a>
chore(deps): minor bump plugin, codegen and macros crates</li>
<li><a
href="06f26bbb24"><code>06f26bb</code></a>
chore(deps): update tao to 0.34.5</li>
<li><a
href="68cb318979"><code>68cb318</code></a>
feat(core): add stop, restart, destroy and configuration changed Android
hook...</li>
<li><a
href="3397fd9bfe"><code>3397fd9</code></a>
feat(core): back button event on Android, closes <a
href="https://redirect.github.com/tauri-apps/tauri/issues/8142">#8142</a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/issues/14133">#14133</a>)</li>
<li><a
href="3b4fac2017"><code>3b4fac2</code></a>
feat(android): add auto_increment_version_code option for Android builds
(<a
href="https://redirect.github.com/tauri-apps/tauri/issues/1">#1</a>...</li>
<li><a
href="684791efa6"><code>684791e</code></a>
fix(macos): Always try to create webview, even if webkit runtime isn't
detect...</li>
<li><a
href="25e920e169"><code>25e920e</code></a>
fix(cli): wait for dev command to exit with --no-watch, closes <a
href="https://redirect.github.com/tauri-apps/tauri/issues/14284">#14284</a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/issues/14298">#14298</a>)</li>
<li><a
href="a279485856"><code>a279485</code></a>
chore(cli): update cargo-mobile2 to 0.21.1</li>
<li><a
href="7b0d4e7322"><code>7b0d4e7</code></a>
fix(core): SHA256 hash for JS scripts CSP on Windows (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/14265">#14265</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/tauri/compare/tauri-utils-v2.7.0...tauri-utils-v2.8.0">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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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 com.diffplug.spotless from 8.0.0 to 8.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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
VPNConfigurationManager now uses `@MainActor` isolation instead of
`@unchecked Sendable`. This aligns with Apple's documented behaviour
where NEVPNManager callbacks arrive on the main thread.
- Made `VPNConfigurationManager` final and `@MainActor`
- Added `@MainActor` to `LogExporter.export(to:session:)` on macOS
- Marked `legacyConfiguration()` as `nonisolated` (pure function, called
from network extension)
- Removed redundant `@MainActor` from `maybeMigrateConfiguration()`
Bumps the lifecycle group in /kotlin/android with 3 updates:
androidx.lifecycle:lifecycle-runtime-ktx,
androidx.lifecycle:lifecycle-viewmodel-ktx and
androidx.lifecycle:lifecycle-livedata-ktx.
Updates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.9.4 to 2.10.0
Updates `androidx.lifecycle:lifecycle-viewmodel-ktx` from 2.9.4 to
2.10.0
Updates `androidx.lifecycle:lifecycle-livedata-ktx` from 2.9.4 to 2.10.0
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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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 the com-android group in /kotlin/android with 1 update:
com.android.application.
Updates `com.android.application` from 8.13.0 to 8.13.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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
In a recent refactor, we appear to have broken DNS resources that are
IPv6 only. This was caused by a change in how we iterate over the proxy
IP mappings. By bailing out as soon as we "run out" of IP mappings, we
actually never get to the IPv6 mappings.
This PR fixes this behaviour and adds a regression test to ensure we
always insert an entry for all proxy IPs.
Bumps
[@vercel/edge-config](https://github.com/vercel/storage/tree/HEAD/packages/edge-config)
from 1.4.0 to 1.4.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/storage/releases"><code>@vercel/edge-config</code>'s
releases</a>.</em></p>
<blockquote>
<h2><code>@vercel/edge-config</code><a
href="https://github.com/1"><code>@1</code></a>.4.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>1dee5ab: Support Next.js v16 Cache Components even within
<code>proxy.ts</code> (fka <code>middleware.ts</code>) - see <a
href="https://redirect.github.com/vercel/storage/pull/890">#890</a></p>
<p>The <code>@vercel/edge-config</code> v1.4.1 release added support for
Next.js v16 <code>cacheComponents</code>, but did not support using
<code>@vercel/edge-config</code> in Next.js's <code>proxy.ts</code> (fka
<code>middleware.ts</code>) when the <code>cacheComponents</code> flag
was enabled in <code>next.config.ts</code>. This releases fixes this
issue so <code>@vercel/edge-config</code> can be used in any server side
context in Next.js again.</p>
</li>
</ul>
<h2><code>@vercel/edge-config</code><a
href="https://github.com/1"><code>@1</code></a>.4.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>309509c: Adjust README</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/storage/blob/main/packages/edge-config/CHANGELOG.md"><code>@vercel/edge-config</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>1.4.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>1dee5ab: Support Next.js v16 Cache Components even within
<code>proxy.ts</code> (fka <code>middleware.ts</code>) - see <a
href="https://redirect.github.com/vercel/storage/pull/890">#890</a></p>
<p>The <code>@vercel/edge-config</code> v1.4.1 release added support for
Next.js v16 <code>cacheComponents</code>, but did not support using
<code>@vercel/edge-config</code> in Next.js's <code>proxy.ts</code> (fka
<code>middleware.ts</code>) when the <code>cacheComponents</code> flag
was enabled in <code>next.config.ts</code>. This releases fixes this
issue so <code>@vercel/edge-config</code> can be used in any server side
context in Next.js again.</p>
</li>
</ul>
<h2>1.4.2</h2>
<h3>Patch Changes</h3>
<ul>
<li>309509c: Adjust README</li>
</ul>
<h2>1.4.1</h2>
<h3>Patch Changes</h3>
<ul>
<li>ab6681b: Add support for Next.js v16 cache components (see <a
href="https://redirect.github.com/vercel/storage/pull/883">#883</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c90427acf9"><code>c90427a</code></a>
Version Packages (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/892">#892</a>)</li>
<li><a
href="1dee5ab47e"><code>1dee5ab</code></a>
Allow cacheLife to error (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/890">#890</a>)</li>
<li><a
href="b5cc954c3e"><code>b5cc954</code></a>
Version Packages (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/888">#888</a>)</li>
<li><a
href="309509c0a5"><code>309509c</code></a>
rework README (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/887">#887</a>)</li>
<li><a
href="453186877b"><code>4531868</code></a>
Version Packages (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/885">#885</a>)</li>
<li><a
href="ab6681b839"><code>ab6681b</code></a>
[Edge Config] Support Next.js specific IO semantics (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/883">#883</a>)</li>
<li><a
href="632977be6c"><code>632977b</code></a>
Refactor edge-config to prepare for Next.js support (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/882">#882</a>)</li>
<li><a
href="41b46294ea"><code>41b4629</code></a>
chore(deps): upgrade deps (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/837">#837</a>)</li>
<li><a
href="31532bf6ae"><code>31532bf</code></a>
add test for consistentRead (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/834">#834</a>)</li>
<li><a
href="6d0383b3d2"><code>6d0383b</code></a>
upgrade all deps (<a
href="https://github.com/vercel/storage/tree/HEAD/packages/edge-config/issues/821">#821</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vercel/storage/commits/@vercel/edge-config@1.4.3/packages/edge-config">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
The current Rust workspace isn't as consistent as it could be. To make
navigation a bit easier, we move a few crates around. Generally, we
follow the idea that entry-points should be at the top-level. `rust/`
now looks like this (directories only):
```
.
├── cli # Firezone CLI
├── client-ffi # Entry point for Apple & Android
├── gateway # Gateway
├── gui-client # GUI client
├── headless-client # Headless client
├── libs # Library crates
├── relay # Relay
├── target # Compile artifacts
├── tests # Crates for testing
└── tools # Local tools
```
To further enforce this structure, we also drop the `firezone-` prefix
from all crates that are not top-level binary crates.
Convert static query dictionary to a computed property, eliminating the
need for nonisolated(unsafe).
Also fixes a bug where kSecAttrLabel used a hardcoded string instead of
the label property (which differs between debug and release builds).
Within the proptests, we assert that connlib correctly reports the
online status of resources. For resources where we establish TCP
connections, that is difficult to model exactly due to the number of
error cases we also run through in the tests like rejecting connections
with ICMP errors, rebooting relays etc.
Up until now, we tried to model this quite precisely by only allowing
deviations of the resource status for TCP connections that have received
ICMP errors. With the prolonged ICE timeout on the Gateway, this is
turning out to not be enough.
We therefore relax the assertion here to allow all resources that are
within sites that we made a TCP connection to deviate from their
expected online/unknown status.
The downcasting abilities of `anyhow` are pretty powerful.
Unfortunately, they can also be a bit tricky to get right. Whilst `is`
and `downcast` work fine for any errors that are within the `anyhow`
error chain, they don't check the chain of errors prior to that. In
other words, if we already have a nested `std::error::Error` with
several causes, `anyhow` cannot downcast to these causes directly.
In order to avoid this footgun, we create a thin-layer on top of the
`anyhow` crate with some downcasting functions that always try to do the
right thing.
When upserting a connection, we need to sample one of our relays to use
as a fallback. If we don't have any relays (because they all got
disconnected), we cannot create the connection.
Right now, we perform this sampling a bit too late in the function and
thus wrongly print "Creating new connection" even though we never make
it that for.
To avoid that, move the `sample_relay` call higher up to avoid making
any state modifications if we cannot proceed.
Bumps [caps](https://github.com/lucab/caps-rs) from 0.5.5 to 0.5.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/lucab/caps-rs/releases">caps's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.6</h2>
<p>Changes:</p>
<ul>
<li>Update minimum toolchain to 1.63</li>
<li>Remove <code>thiserror</code> dependency</li>
<li>Gracefully handle unsupported capabilities in clear and read
operations</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d5dcf952ad"><code>d5dcf95</code></a>
cargo: caps release 0.5.6</li>
<li><a
href="4743546164"><code>4743546</code></a>
Merge pull request <a
href="https://redirect.github.com/lucab/caps-rs/issues/97">#97</a> from
bilelmoussaoui/master</li>
<li><a
href="a541bc1e0d"><code>a541bc1</code></a>
Get rid of thiserror</li>
<li><a
href="2a64efc2f4"><code>2a64efc</code></a>
Merge pull request <a
href="https://redirect.github.com/lucab/caps-rs/issues/96">#96</a> from
Soft/clear_supported_caps_from_bounding_set</li>
<li><a
href="5a9ae19fdf"><code>5a9ae19</code></a>
Handle unsupported capabilities gracefully in clear and read
operations</li>
<li><a
href="8ae9b4f960"><code>8ae9b4f</code></a>
Merge pull request <a
href="https://redirect.github.com/lucab/caps-rs/issues/95">#95</a> from
lucab/push-sqknlowmyxmp</li>
<li><a
href="f3c7fb4827"><code>f3c7fb4</code></a>
cargo: add MSRV to manifest metadata</li>
<li><a
href="bbf8b0006d"><code>bbf8b00</code></a>
Merge pull request <a
href="https://redirect.github.com/lucab/caps-rs/issues/94">#94</a> from
lucab/push-kvotmuqtvsnp</li>
<li><a
href="2a9635c62e"><code>2a9635c</code></a>
docs: minor fixes</li>
<li><a
href="757ae11d49"><code>757ae11</code></a>
Merge pull request <a
href="https://redirect.github.com/lucab/caps-rs/issues/93">#93</a> from
lucab/push-xwkvyrnzmvtt</li>
<li>Additional commits viewable in <a
href="https://github.com/lucab/caps-rs/compare/v0.5.5...v0.5.6">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
The health-check tests for the relay use `Instant::elapsed` which
implicitly uses `Instant::now`. On a freshly booted Windows machine,
these tests might easily fail because we are subtracting 15 minutes from
`Instant::now` which might result in an underflow as Windows cannot
represent `Instant`s prior to the boot time.
Related: #10927
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.31 to
0.23.34.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4cee226dbe"><code>4cee226</code></a>
Cargo: rustls v0.23.33 -> v0.23.34</li>
<li><a
href="278391eb38"><code>278391e</code></a>
Remove use of <code>doc_auto_cfg</code></li>
<li><a
href="31ca6afe91"><code>31ca6af</code></a>
Avoid use of <code>docsrs</code> cfg</li>
<li><a
href="b4597ca1f6"><code>b4597ca</code></a>
Prepare 0.23.33</li>
<li><a
href="667a71d513"><code>667a71d</code></a>
Reset KeyUpdate counter on AppData</li>
<li><a
href="48b2fd919f"><code>48b2fd9</code></a>
Support encryption for QUIC multipath</li>
<li><a
href="6a188a70a0"><code>6a188a7</code></a>
Take semver-compatible updates</li>
<li><a
href="5abe33e71d"><code>5abe33e</code></a>
Prepare 0.23.32</li>
<li><a
href="d3c502e0f5"><code>d3c502e</code></a>
Improve compatibility of TLS1.2 with ECDSA+SHA512</li>
<li><a
href="ef7063d21f"><code>ef7063d</code></a>
take webpki 0.103.5</li>
<li>Additional commits viewable in <a
href="https://github.com/rustls/rustls/compare/v/0.23.31...v/0.23.34">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.101
to 1.0.103.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/proc-macro2/releases">proc-macro2's
releases</a>.</em></p>
<blockquote>
<h2>1.0.103</h2>
<ul>
<li>Add semver-exempt <code>Literal</code> methods
<code>str_value</code>, <code>cstr_value</code>,
<code>byte_str_value</code> (<a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/525">#525</a>)</li>
</ul>
<h2>1.0.102</h2>
<ul>
<li>Fix interaction of Display impls for TokenStream and Ident with
formatting specifiers for padding, alignment, width (<a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/523">#523</a>,
<a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/524">#524</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d1bf13ac1d"><code>d1bf13a</code></a>
Release 1.0.103</li>
<li><a
href="29e08c06e5"><code>29e08c0</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/proc-macro2/issues/525">#525</a>
from dtolnay/literalvalue</li>
<li><a
href="f9eec24c5e"><code>f9eec24</code></a>
Restore support for rustc older than 1.74</li>
<li><a
href="cc983fce21"><code>cc983fc</code></a>
Restore support for rustc older than 1.79</li>
<li><a
href="465f7813e4"><code>465f781</code></a>
Restore support for rustc older than 1.89</li>
<li><a
href="ab5231cd46"><code>ab5231c</code></a>
Add string literal value tests</li>
<li><a
href="4c039a8e03"><code>4c039a8</code></a>
Add Literal methods from proc_macro_value feature</li>
<li><a
href="885fde9b29"><code>885fde9</code></a>
Vendor rustc_literal_escaper v0.0.5</li>
<li><a
href="39b016a50c"><code>39b016a</code></a>
Release 1.0.102</li>
<li><a
href="c3870f1fc5"><code>c3870f1</code></a>
Add raw identifier Debug test</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/proc-macro2/compare/1.0.101...1.0.103">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Bumps [zbus](https://github.com/z-galaxy/zbus) from 5.11.0 to 5.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/z-galaxy/zbus/releases">zbus's
releases</a>.</em></p>
<blockquote>
<h2>🔖 zbus 5.12.0</h2>
<ul>
<li>🚚 Update name of Github space from <code>dbus2</code> to
<code>z-galaxy</code>.</li>
<li>✨ Add <code>Error::description</code> method. This gives a simple
description about the error.</li>
<li>🥅 Provide description for zbus::Error in DBusError. <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1523">#1523</a></li>
<li>🐛 Remove minimum amount of required address options. Set the minimum
amount of address options to 0, as per the spec. <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1513">#1513</a></li>
<li>➖ remove <code>rand</code> and replace with <code>uuid</code>. This
makes <code>uuid</code> mandatory for <code>zbus</code>, and changes the
<code>p2p</code> feature to enable <code>v4</code> of
<code>uuid</code>.</li>
<li>📝 book: Update version of zbus in the sample Cargo.toml.</li>
<li>🧵 Launch a multi-threaded tokio runtime for blocking. Otherwise, any
blocking calls in the application code can block our internal tasks.
This is breaking our "we won't launch threads behind your
back" promise a little but its only limited to blocking API and
therefore worth the benefit of not unexpectedly stopping to work. <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1512">#1512</a></li>
<li>🐛 Fix tracing span names showing as {}.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d4254d63cc"><code>d4254d6</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1544">#1544</a>
from zeenix/releases</li>
<li><a
href="bd399ae442"><code>bd399ae</code></a>
🔖 zb: Release 5.12.0</li>
<li><a
href="14fce7cb33"><code>14fce7c</code></a>
🔖 zv: Release 5.8.0</li>
<li><a
href="33cb56caae"><code>33cb56c</code></a>
🚚 Update name of Github space from dbus2 to z-galaxy</li>
<li><a
href="a00e93c314"><code>a00e93c</code></a>
⬆️ micro: Update clap to v4.5.49 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1540">#1540</a>)</li>
<li><a
href="7c2baf6511"><code>7c2baf6</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1538">#1538</a>
from dbus2/renovate/actions-checkout-5.x</li>
<li><a
href="5ac2239827"><code>5ac2239</code></a>
⬆️ Update actions/checkout action to v5</li>
<li><a
href="c9a00ea68a"><code>c9a00ea</code></a>
Merge pull request <a
href="https://redirect.github.com/z-galaxy/zbus/issues/1537">#1537</a>
from DarthB/codspeed</li>
<li><a
href="562f125de6"><code>562f125</code></a>
use codspeed benchmarks with criterion compat layer</li>
<li><a
href="4dc5325e2f"><code>4dc5325</code></a>
⬆️ micro: Update serde to v1.0.228 (<a
href="https://redirect.github.com/z-galaxy/zbus/issues/1534">#1534</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/z-galaxy/zbus/compare/zbus-5.11.0...zbus-5.12.0">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.47 to 4.5.50.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/releases">clap's
releases</a>.</em></p>
<blockquote>
<h2>v4.5.50</h2>
<h2>[4.5.50] - 2025-10-20</h2>
<h3>Features</h3>
<ul>
<li>Accept <code>Cow</code> where <code>String</code> and
<code>&str</code> are accepted</li>
</ul>
<h2>v4.5.48</h2>
<h2>[4.5.48] - 2025-09-19</h2>
<h3>Documentation</h3>
<ul>
<li>Add a new CLI Concepts document as another way of framing clap</li>
<li>Expand the <code>typed_derive</code> cookbook entry</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.50] - 2025-10-20</h2>
<h3>Features</h3>
<ul>
<li>Accept <code>Cow</code> where <code>String</code> and
<code>&str</code> are accepted</li>
</ul>
<h2>[4.5.49] - 2025-10-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(help)</em> Correctly wrap when ANSI escape codes are
present</li>
</ul>
<h2>[4.5.48] - 2025-09-19</h2>
<h3>Documentation</h3>
<ul>
<li>Add a new CLI Concepts document as another way of framing clap</li>
<li>Expand the <code>typed_derive</code> cookbook entry</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d8acd47298"><code>d8acd47</code></a>
chore: Release</li>
<li><a
href="7c2b8d9ad4"><code>7c2b8d9</code></a>
docs: Update changelog</li>
<li><a
href="e69a2ea55b"><code>e69a2ea</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5987">#5987</a>
from mernen/fix-bash-comp-words-loop</li>
<li><a
href="e03cc2e798"><code>e03cc2e</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5988">#5988</a>
from cordx56/fix-builder-custom-version-docs</li>
<li><a
href="5ab2579844"><code>5ab2579</code></a>
fix: Minor fix for builder docs about version</li>
<li><a
href="2f66432721"><code>2f66432</code></a>
fix(complete): Only parse arguments before current</li>
<li><a
href="4d9d2100f7"><code>4d9d210</code></a>
test(complete): Illustrate current behavior in Bash</li>
<li><a
href="6abe2f8c61"><code>6abe2f8</code></a>
chore: Release</li>
<li><a
href="d5c74542ce"><code>d5c7454</code></a>
docs: Update changelog</li>
<li><a
href="5b2e960267"><code>5b2e960</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5985">#5985</a>
from mernen/bash-cur</li>
<li>Additional commits viewable in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.47...clap_complete-v4.5.50">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Prettier is a tool with questionable defaults and performance. Not only
is it slow to format files, but it also doesn't respect nested
`.gitignore` or `.prettierignore` files. This means we need to specify
all paths that it should not touch in the top-level .`prettierignore` to
get even close to acceptable performance. Even with these optimisations,
it still takes around 8 seconds to format our workspace.
The current assertion is not robust enough as we can see from the test
failure in
https://github.com/firezone/firezone/actions/runs/19619954030/job/56178969296?pr=10931.
Another way of asserting that we have roamed is to check whether or not
we are using a non-standard source port.
The NAT binding for the old source port is still active after roaming
and therefore, the NAT has to assign a new source port to the traffic
arriving from the client.
Running only the unit-tests of select crates on some platforms is
problematic. We are unlikely to update this list of crates as we
introduce new ones. It is a better default to run the tests of all
crates on all platforms and selectively exclude the ones that can't run
because they are unsupported.
Bumps [asciinema-player](https://github.com/asciinema/asciinema-player)
from 3.10.0 to 3.12.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/asciinema/asciinema-player/releases">asciinema-player's
releases</a>.</em></p>
<blockquote>
<h2>3.12.1</h2>
<p>This version includes additional fix for seeking past the end of
recording and restarting the playback.</p>
<h2>3.12.0</h2>
<p>Notable changes:</p>
<ul>
<li>Live audio stream support for WebSocket sources (see below)</li>
<li>Improved adaptive buffer algorithm for WebSocket sources (see
below)</li>
<li>Fixed keyboard shortcuts issue (stopped working) caused by the new
mute/unmute icon</li>
<li>Fixed seeking after playback ended (<a
href="https://redirect.github.com/asciinema/asciinema-player/issues/282">#282</a>)</li>
</ul>
<h2>Live audio playback</h2>
<p>The <code>audioUrl</code> option, introduced in v3.11, can now also
be used with live (WebSocket) sources:</p>
<pre
lang="javascript"><code>AsciinemaPlayer.create("ws://example.com/ws/stream",
document.getElementById("demo"), {
audioUrl: "http://example.com/icecast/stream.ogg"
});
</code></pre>
<p>The URL should be a live audio source - either a direct HTTP audio
stream (.mp3, .aac, .ogg, etc) such as Icecast/Shoutcast endpoint, or
HLS playlist (.m3u8).</p>
<p>Note that it's not recommended to use <code>autoplay: true</code>
option together with <code>audioUrl</code> - browsers often require
explicit user activity (click, tap) to enable sound, which in the
player's case would be starting the playback by clicking on the play
button. Without user click the <code>autoplay</code> will start the
playback but the sound likely won't be there.</p>
<p>Also, for the audio playback to work a server that handles the audio
URL (e.g. Icecast) must be configured to allow CORS requests from the
page (URL) that hosts the player.</p>
<h2>New adaptive buffering</h2>
<p>The WebSocket driver uses adaptive buffer (expressed in time) to
ensure smooth, stutter free playback of live sessions with minimal
latency.</p>
<p>The previous algorithm used a moving average over a sliding window of
N recent latencies. It did ok-ish job, but given the sparse nature of
the event stream (no constant rate) it turned out to be not ideal.
Here's how it performed. Red dots are measured latencies, green line is
effective buffer time:</p>
<!-- raw HTML omitted -->
<p>The new algorithm uses time based EMA (exponential moving average),
which is much more relevant for sparse events, resulting in more stable
and overall lower buffer size when applied to a wide spectrum of
terminal activities (here applied to the same input latencies as the one
above):</p>
<!-- raw HTML omitted -->
<h2>3.11.1</h2>
<p>This release brings additional fixes for audio loading in Safari.</p>
<h2>3.11.0</h2>
<p>Notable changes:</p>
<ul>
<li>Synced audio playback (see below)</li>
<li>JS bundle size reduced by 43 KB (202 KB -> 159 KB) - it's now 78%
of the previous release (v3.10) size</li>
<li>WebSocket driver now uses jitter for exponential backoff calculation
when reconnecting</li>
<li>WebSocket driver can play live sessions encoded in <a
href="https://docs.asciinema.org/manual/server/streaming/#asciicast-v3">asciicast
v3 compatible</a> format</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1072fee2fe"><code>1072fee</code></a>
Bump version</li>
<li><a
href="db715d06ef"><code>db715d0</code></a>
Fix replay after double seek-forward at the end of the recording</li>
<li><a
href="ca8fe039d5"><code>ca8fe03</code></a>
Update links to the latest asciicast format version</li>
<li><a
href="984db33884"><code>984db33</code></a>
Bump version</li>
<li><a
href="45e02fa238"><code>45e02fa</code></a>
Fix seeking after playback ended</li>
<li><a
href="2fe3da79da"><code>2fe3da7</code></a>
Improve adaptive buffer time algorithm</li>
<li><a
href="589cd52f02"><code>589cd52</code></a>
Fix keyboard focus issue caused by the mute/unmute icon</li>
<li><a
href="d00a897e2c"><code>d00a897</code></a>
Audio support for Websocket driver</li>
<li><a
href="44d97ac4a9"><code>44d97ac</code></a>
Whitespace</li>
<li><a
href="8c22181330"><code>8c22181</code></a>
Add test for player initialization and playback start</li>
<li>Additional commits viewable in <a
href="https://github.com/asciinema/asciinema-player/compare/v3.10.0...v3.12.1">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Bumps
[actions/download-artifact](https://github.com/actions/download-artifact)
from 5.0.0 to 6.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/download-artifact/releases">actions/download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<p><strong>BREAKING CHANGE:</strong> this update supports Node
<code>v24.x</code>. This is not a breaking change per-se but we're
treating it as such.</p>
<ul>
<li>Update README for download-artifact v5 changes by <a
href="https://github.com/yacaovsnc"><code>@yacaovsnc</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/417">actions/download-artifact#417</a></li>
<li>Update README with artifact extraction details by <a
href="https://github.com/yacaovsnc"><code>@yacaovsnc</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/424">actions/download-artifact#424</a></li>
<li>Readme: spell out the first use of GHES by <a
href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/download-artifact/pull/431">actions/download-artifact#431</a></li>
<li>Bump <code>@actions/artifact</code> to <code>v4.0.0</code></li>
<li>Prepare <code>v6.0.0</code> by <a
href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/download-artifact/pull/438">actions/download-artifact#438</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/danwkennedy"><code>@danwkennedy</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/download-artifact/pull/431">actions/download-artifact#431</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/download-artifact/compare/v5...v6.0.0">https://github.com/actions/download-artifact/compare/v5...v6.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="018cc2cf5b"><code>018cc2c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/438">#438</a>
from actions/danwkennedy/prepare-6.0.0</li>
<li><a
href="815651c680"><code>815651c</code></a>
Revert "Remove <code>github.dep.yml</code>"</li>
<li><a
href="bb3a066a8b"><code>bb3a066</code></a>
Remove <code>github.dep.yml</code></li>
<li><a
href="fa1ce46bbd"><code>fa1ce46</code></a>
Prepare <code>v6.0.0</code></li>
<li><a
href="4a24838f3d"><code>4a24838</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/431">#431</a>
from danwkennedy/patch-1</li>
<li><a
href="5e3251c4ff"><code>5e3251c</code></a>
Readme: spell out the first use of GHES</li>
<li><a
href="abefc31eaf"><code>abefc31</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/424">#424</a>
from actions/yacaovsnc/update_readme</li>
<li><a
href="ac43a6070a"><code>ac43a60</code></a>
Update README with artifact extraction details</li>
<li><a
href="de96f4613b"><code>de96f46</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/417">#417</a>
from actions/yacaovsnc/update_readme</li>
<li><a
href="7993cb44e9"><code>7993cb4</code></a>
Remove migration guide for artifact download changes</li>
<li>Additional commits viewable in <a
href="634f93cb29...018cc2cf5b">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
As per the RFC, queries to DoH servers should always set their query ID
to 0. This is more cache-friendly because two queries for the same
domain end up being byte-for-byte equivalent in the HTTP request. When
transported over HTTP, the query ID is obsolete because the response can
be unambiguously mapped back to the request already.
Connlib's DoH feature zeros out the query ID in the IO layer. To
correctly test this functionality, we therefore extend the test-suite to
do the same and restore the original query ID before sending back the
response on the original transport.
This fixes a bug where all DNS queries that were forwarded to a DoH
server incorrectly had their query ID set to 0.
A new version of the `AzureSignTool` appears to require a dotnet version that is not yet installed on the GitHub runners. Ideally we would be managing this via `.tool-versions` but that needs a bit more work, see the CI failures in #10936.
In order to allow customers to make use of connlib's DoH functionality,
we need a configuration UI for it. We take inspiration from the "New
Resource" page and implement a 3-choice UI component for configuring how
Clients should resolve DNS queries:
- System
- Secure DNS
- Custom
The secure and custom DNS options show an additional form when selected
for either picking a DoH provider or the addresses of the custom DNS
servers.
Right now, the "Secure DNS" part is disabled if the
`DISABLE_DOH_PROVIDER` env variable is set. We render a "Coming soon"
tooltip on hover:
<img width="1534" height="1100" alt="image"
src="https://github.com/user-attachments/assets/a12a6ba4-806f-4d19-8aea-5c1cd981d609"
/>
This allows us to test this in staging and still ship to production if
needed prior to enabling it.
Resolves: #10792Resolves: #10786
---------
Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
Firezone's UDP connections are designed to be idempotent. If a Client
discards its "half" of the connection but the Gateway still keeps the
state around, a subsequent connection setup by the Client will reuse
connection state on the Gateway. To fully support this, `snownet`
re-sends all its local candidates to the remote peer whenever a
connection gets upserted.
The current `seed_agent_with_local_candidates` function attempts to do
this job but its design overlooked a crucial detail: Re-adding a
candidate that the `IceAgent` already knows about is considered to be
redundant. As such, the candidate is not re-signalled to the remote!
The real-world consequences for this are subtle. `str0m`'s support for
peer-reflexive candidate means that incoming STUN binding requests are
still answered, even if they come from an address that the agent doesn't
know anything about, i.e. it has never been told about that candidate.
Thus, what happens right now is that when a Client re-creates a
connection that is still present on the Gateway, it will start receiving
STUN binding requests for candidates it doesn't know about and create
peer-reflexive candidates for them.
Where this does show up is in our test-suite which has fairly strict
timing constraints. When we simulate the re-deploy of relays, we expect
connections to be migrated to a new relay immediately. To support this,
the current relay candidates are invalidated on both sides. This however
only works if the current candidate is correctly recognised by the local
ICE agent. Peer-reflexive candidates are created on-demand and typically
only serve a placeholder-like role until we learn about the real
candidate that is being used. Due to the above described behaviour of
`seed_agent_with_local_candidates`, this however may not happen at all.
As a result, attempting to invalidate a relay candidate fails because we
don't recognise the relay candidate as we only have a peer-reflexive
one.
Putting all of this together, whilst not re-sending all candidates
doesn't cause immediate issues for a connection, it may cause problems
at a later point when we are trying to invalidate a currently active
candidate to achieve a speedy failover to a new one.
It appears that several systems (at least MacOS) may send DNS queries to
the same server with the same query ID but from different source
sockets. Within connlib, we operate multiple DNS servers (one for each
upstream) and use the tuple of server address and query ID to remember
the necessary state we need to map the response back once we have the
response from the upstream server.
Given the discovery that this tuple is not necessarily unique, we now
need to also track the source socket that _we_ are using to send our
queries in order to correctly remember, which socket we need to send the
response back to. For that, we extend the layer 3 UDP and TCP clients to
return us the socket they are using for each query that we queue.
In very specific circumstances, this can still fail. In particular, when
connlib receives an SRV or TXT query for a resource, it resolves that
query in the context of the resource's site by sending it to port 53535
of the Gateway's TUN device. The Gateway listens to DNS queries on this
port and resolves them using its configured system resolvers. It however
only listens on a single address, meaning we may be forwarding queries
from several of connlib's "servers" to a single query which again may
break the uniqueness constraint if two queries with the same ID are
received at the same time because we would reuse the TCP connection to
the resolver running in the Gateway and thus send them from the same
source port.
We consider this case to be sufficiently rare and handle it by just
failing the 2nd DNS query. There may be ways of resolving it but it
requires a bigger refactoring of how we establish TCP connections to
upstream resolvers.
The current coverage checks for paths that we hit during our proptests
fail as soon as one of them is not satisfied. When iterating on the
proptests, it is useful to see in one go, which paths are currently not
hit to generate the missing regression seeds.
Hence, we refactor the script to perform all checks and fail if any of
them are not hit, outputting all missing ones.
Not all tools are needed for all parts of the codebase. In order to avoid installing all tools, we create nested `.tool-versions` files that list the specific dev-tools needed for a certain part of the product.