Commit Graph

2515 Commits

Author SHA1 Message Date
Thomas Eizinger
01e3fea0ac fix(gui-client): don't panic on existing session (#9779)
Customer hit what seems to be a rare race condition where we try to
connect whilst we already have a session. I don't know which state it is
in so I am replacing it with a WARN log to learn more about this in
Sentry in case it gets hit again.
2025-07-04 07:44:53 +00:00
Thomas Eizinger
4be8e5458a chore(telemetry): don't fmt fields from the log crate (#9774)
Those are internal to `tracing` and don't need to be formatted into the
message we send to Sentry.
2025-07-04 00:03:18 +00:00
Thomas Eizinger
e0c607dd57 chore(gui-client): remove unnecessary identify call (#9775)
It is unnecessary to call this in the GUI client because the tunnel
service will already do this _and_ supply the `account_slug` with it as
well.
2025-07-03 23:17:28 +00:00
Thomas Eizinger
17a1d36eae fix(gui-client): set IO error type for missing non-tunnel routes (#9777)
On Windows - in order to prevent routing loops - we resolve the best
"non-tunnel" route to a particular host for each IP address. The
resulting source IP is then used as source for packets leaving our
interface. In case the system doesn't have IPv6 connectivity or are
simply no routes available, we fail this "source IP resolver" with an IO
error.

Presently, this uses the "other" IO error type which causes this to be
logged on a WARN level in the event-loop. The IO error types
`HostUnreachable` and `NetworkUnreachable` are expected during normal
operation of Firezone and are therefore only logged on DEBUG.

By changing this IO error type, we fix the WARN log spam on Windows for
machines without IPv6 connectivity.
2025-07-03 21:45:06 +00:00
Thomas Eizinger
94660cbb2c chore(gui-smoke-test): wait for tunnel service to boot (#9766)
The tunnel service creates the Firezone ID upon start-up. With recent
changes to the GUI client, we now require reading the ID file when
starting the GUI client.

This exposes a race condition in our smoke-tests where we start them
both at roughly the same time.

To fix this, we sleep for 500ms after starting the tunnel process.
2025-07-02 05:16:15 +00:00
dependabot[bot]
0c274d3e36 build(deps): bump the tauri group in /rust/gui-client with 2 updates (#9740)
Bumps the tauri group in /rust/gui-client with 2 updates:
[@tauri-apps/api](https://github.com/tauri-apps/tauri) and
[@tauri-apps/cli](https://github.com/tauri-apps/tauri).

Updates `@tauri-apps/api` from 2.5.0 to 2.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tauri-apps/tauri/releases"><code>@​tauri-apps/api</code>'s
releases</a>.</em></p>
<blockquote>
<h2><code>@​tauri-apps/api</code> v2.6.0</h2>
<!-- raw HTML omitted -->
<pre><code>No known vulnerabilities found
</code></pre>
<!-- raw HTML omitted -->
<h2>[2.6.0]</h2>
<h3>New Features</h3>
<ul>
<li><a
href="50ebddaa2d"><code>50ebddaa2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13319">#13319</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../kingsword09"><code>@​kingsword09</code></a>)
Expose the <code>setAutoResize</code> API for webviews in
<code>@tauri-apps/api</code>.</li>
<li><a
href="267368fd4f"><code>267368fd4</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13276">#13276</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../amrbashir"><code>@​amrbashir</code></a>)
Add <code>Monitor.workArea</code> field.</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><a
href="23b9da75b9"><code>23b9da75b</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13324">#13324</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../kingsword09"><code>@​kingsword09</code></a>)
Fixed path joining behavior where <code>path.join('', 'a')</code>
incorrectly returns &quot;/a&quot; instead of &quot;a&quot;.</li>
<li><a
href="b985eaf0a2"><code>b985eaf0a</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13306">#13306</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../lucasfernog"><code>@​lucasfernog</code></a>)
Immediately unregister event listener when the unlisten function is
called.</li>
</ul>
<h3>What's Changed</h3>
<ul>
<li><a
href="b5c549d189"><code>b5c549d18</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13325">#13325</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../Legend-Master"><code>@​Legend-Master</code></a>)
<code>transformCallback</code> now registers the callbacks inside
<code>window.__TAURI_INTERNALS__.callbacks</code> instead of directly on
<code>window['_{id}']</code></li>
</ul>
<!-- raw HTML omitted -->
<pre><code>&gt; @tauri-apps/api@2.6.0 npm-publish
/home/runner/work/tauri/tauri/packages/api
&gt; pnpm build &amp;&amp; cd ./dist &amp;&amp; pnpm publish --access
public --loglevel silly --no-git-checks
<p>&gt; <code>@​tauri-apps/api</code><a
href="https://github.com/2"><code>@​2</code></a>.6.0 build
/home/runner/work/tauri/tauri/packages/api
&gt; rollup -c --configPlugin typescript</p>
<p>
./src/app.ts, ./src/core.ts, ./src/dpi.ts, ./src/event.ts,
./src/image.ts, ./src/index.ts, ./src/menu.ts, ./src/mocks.ts,
./src/path.ts, ./src/tray.ts, ./src/webview.ts, ./src/webviewWindow.ts,
./src/window.ts → ./dist, ./dist...
created ./dist, ./dist in 1.7s

src/index.ts →
../../crates/tauri/scripts/bundle.global.js...
created ../../crates/tauri/scripts/bundle.global.js in
1.8s
npm verbose cli /opt/hostedtoolcache/node/20.19.2/x64/bin/node
/opt/hostedtoolcache/node/20.19.2/x64/bin/npm
npm info using npm@10.8.2
npm info using node@v20.19.2
npm silly config
load:file:/opt/hostedtoolcache/node/20.19.2/x64/lib/node_modules/npm/npmrc
npm silly config load:file:/tmp/2b52e4eba4f2f6fee26c87fa0c50d004/.npmrc
npm silly config load:file:/home/runner/work/_temp/.npmrc
npm silly config
load:file:/opt/hostedtoolcache/node/20.19.2/x64/etc/npmrc
&lt;/tr&gt;&lt;/table&gt;
</code></pre></p>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="594822aa55"><code>594822a</code></a>
Apply Version Updates From Current Changes (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13282">#13282</a>)</li>
<li><a
href="e4aa35e083"><code>e4aa35e</code></a>
fix(cli): init tests</li>
<li><a
href="9c16eefa31"><code>9c16eef</code></a>
Update kuchikiki, html5ever, tao, wry, webview2-com (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13629">#13629</a>)</li>
<li><a
href="3242e1c946"><code>3242e1c</code></a>
feat(cli): allow passing Cargo commands to mobile dev/build commands (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13659">#13659</a>)</li>
<li><a
href="4a880ca697"><code>4a880ca</code></a>
feat(cli): synchronize productName changes with iOS Xcode project (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13658">#13658</a>)</li>
<li><a
href="d1ce9af628"><code>d1ce9af</code></a>
feat(cli): add <code>--config</code> arg to the mobile init cmds, closes
<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13284">#13284</a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13660">#13660</a>)</li>
<li><a
href="ec6065fa4a"><code>ec6065f</code></a>
fix(cli): use original identifier to fix mobile options reading (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13625">#13625</a>)</li>
<li><a
href="18b5299952"><code>18b5299</code></a>
docs: where does resource dir resolve to (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13640">#13640</a>)</li>
<li><a
href="eb3f0248c2"><code>eb3f024</code></a>
fix: write default permission words if not empty (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13646">#13646</a>)</li>
<li><a
href="c03cc586e3"><code>c03cc58</code></a>
chore: check generated file on package lock change (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13641">#13641</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/tauri/compare/@tauri-apps/api-v2.5.0...@tauri-apps/api-v2.6.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `@tauri-apps/cli` from 2.5.0 to 2.6.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tauri-apps/tauri/releases"><code>@​tauri-apps/cli</code>'s
releases</a>.</em></p>
<blockquote>
<h2><code>@​tauri-apps/cli</code> v2.6.2</h2>
<h2>[2.6.2]</h2>
<h3>Bug Fixes</h3>
<ul>
<li><a
href="cbd9629729"><code>cbd962972</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13730">#13730</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../lucasfernog"><code>@​lucasfernog</code></a>)
Load <code>--config</code> arguments when running the Xcode and Android
Studio build scripts.</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>Upgraded to <code>tauri-cli@2.6.2</code></li>
</ul>
<h2><code>@​tauri-apps/cli</code> v2.6.1</h2>
<h2>[2.6.1]</h2>
<h3>Dependencies</h3>
<ul>
<li>Upgraded to <code>tauri-cli@2.6.1</code></li>
</ul>
<h2><code>@​tauri-apps/cli</code> v2.6.0</h2>
<h2>[2.6.0]</h2>
<h3>New Features</h3>
<ul>
<li><a
href="414619c36e"><code>414619c36</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13536">#13536</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../Tunglies"><code>@​Tunglies</code></a>)
Added support for the <code>bundleName</code> property in the macOS
bundler configuration. This allows specifying the
<code>CFBundleName</code> value for generated macOS bundles.</li>
<li><a
href="3242e1c946"><code>3242e1c94</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13659">#13659</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../lucasfernog"><code>@​lucasfernog</code></a>)
Allow passing Cargo arguments to mobile dev and build commands.</li>
<li><a
href="d1ce9af628"><code>d1ce9af62</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13660">#13660</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../lucasfernog"><code>@​lucasfernog</code></a>)
Allow passing <code>--config</code> arguments to the <code>ios
init</code> and <code>android init</code> commands to tweak the
configuration used to initialize the mobile projects.</li>
<li><a
href="7322f05792"><code>7322f0579</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13502">#13502</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../amrbashir"><code>@​amrbashir</code></a>)
Allow using <code>CheckIfAppIsRunning</code> macro inside NSIS hooks,
for example <code>!insertmacro CheckIfAppIsRunning
&quot;another-executable.exe&quot; &quot;Another
Executable&quot;</code>.</li>
<li><a
href="4a880ca697"><code>4a880ca69</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13658">#13658</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../lucasfernog"><code>@​lucasfernog</code></a>)
Synchronize Tauri config productName changes with the iOS Xcode
project.</li>
<li><a
href="8ee14a8648"><code>8ee14a864</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13618">#13618</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../Sky-walkerX"><code>@​Sky-walkerX</code></a>)
Warn the user that the app id shouldn't end in <code>.app</code> because
it conflicts with the application bundle extension on macOS</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><a
href="35aa7e1218"><code>35aa7e121</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13294">#13294</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../kingsword09"><code>@​kingsword09</code></a>)
fix: allow the target directory to be inside frontendDir as long as it
is not the Rust target directory inside frontendDir.</li>
<li><a
href="ec6065fa4a"><code>ec6065fa4</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13625">#13625</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../lucasfernog"><code>@​lucasfernog</code></a>)
Fixes Android and iOS dev/build commands not working when the app
identifier is being modified by the <code>--config</code> option.</li>
<li><a
href="5a5291d66c"><code>5a5291d66</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13483">#13483</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../lucasfernog"><code>@​lucasfernog</code></a>)
Fix simulator build detection on Xcode.</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>Upgraded to <code>tauri-cli@2.6.0</code></li>
<li><a
href="9c16eefa31"><code>9c16eefa3</code></a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/pull/13629">#13629</a>
by <a
href="https://www.github.com/tauri-apps/tauri/../../sftse"><code>@​sftse</code></a>)
Update html5ever to 0.29 and kuchikiki to version
0.8.8-speedreader.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0277596341"><code>0277596</code></a>
apply version updates (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13731">#13731</a>)</li>
<li><a
href="cbd9629729"><code>cbd9629</code></a>
fix(cli): load --config values on xcode and android-studio scripts (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13730">#13730</a>)</li>
<li><a
href="0079d08ba9"><code>0079d08</code></a>
chore(worker): Enable observability</li>
<li><a
href="effd106adf"><code>effd106</code></a>
fix(worker): Fix route syntax</li>
<li><a
href="4053ad1b58"><code>4053ad1</code></a>
apply version updates (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13724">#13724</a>)</li>
<li><a
href="f010ca5e91"><code>f010ca5</code></a>
fix(core): compile error without common-controls-v6 (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13719">#13719</a>)</li>
<li><a
href="6b2b9d6cbf"><code>6b2b9d6</code></a>
chore: clippy 1.88 (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13720">#13720</a>)</li>
<li><a
href="b6de1c89c2"><code>b6de1c8</code></a>
chore(deps): update rust crate md5 to 0.8 (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13712">#13712</a>)</li>
<li><a
href="a3ae2cebbf"><code>a3ae2ce</code></a>
chore(deps): update rust crate rand to 0.9 (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13700">#13700</a>)</li>
<li><a
href="a3f11b4f3b"><code>a3f11b4</code></a>
apply version updates (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13693">#13693</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/tauri/compare/@tauri-apps/cli-v2.5.0...@tauri-apps/cli-v2.6.2">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>
2025-07-01 17:18:01 +00:00
dependabot[bot]
78a2c4dcef build(deps): bump the sentry group in /rust/gui-client with 2 updates (#9744)
Bumps the sentry group in /rust/gui-client with 2 updates:
[@sentry/core](https://github.com/getsentry/sentry-javascript) and
[@sentry/react](https://github.com/getsentry/sentry-javascript).

Updates `@sentry/core` from 9.27.0 to 9.33.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/sentry-javascript/releases"><code>@​sentry/core</code>'s
releases</a>.</em></p>
<blockquote>
<h2>9.33.0</h2>
<h3>Important Changes</h3>
<ul>
<li><strong>feat: Add opt-in <code>vercelAiIntegration</code> to
cloudflare &amp; vercel-edge (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16732">#16732</a>)</strong></li>
</ul>
<p>The <code>vercelAiIntegration</code> is now available as opt-in for
the Cloudflare and the Next.js SDK for Vercel Edge.
To use it, add the integration in <code>Sentry.init</code></p>
<pre lang="js"><code>Sentry.init({
  tracesSampleRate: 1.0,
  integrations: [Sentry.vercelAIIntegration()],
});
</code></pre>
<p>And enable telemetry for Vercel AI calls</p>
<pre lang="js"><code>const result = await generateText({
  model: openai('gpt-4o'),
  experimental_telemetry: {
    isEnabled: true,
  },
});
</code></pre>
<ul>
<li><strong>feat(node): Add postgresjs instrumentation (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16665">#16665</a>)</strong></li>
</ul>
<p>The Node.js SDK now includes instrumentation for <a
href="https://www.npmjs.com/package/postgres">Postgres.js</a>.</p>
<ul>
<li><strong>feat(node): Use diagnostics channel for Fastify v5 error
handling (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16715">#16715</a>)</strong></li>
</ul>
<p>If you're on Fastify v5, you no longer need to call
<code>setupFastifyErrorHandler</code>. It is done automatically by the
node SDK. Older versions still rely on calling
<code>setupFastifyErrorHandler</code>.</p>
<h3>Other Changes</h3>
<ul>
<li>feat(cloudflare): Allow interop with OpenTelemetry emitted spans (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16714">#16714</a>)</li>
<li>feat(cloudflare): Flush after <code>waitUntil</code> (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16681">#16681</a>)</li>
<li>fix(nextjs): Remove <code>ai</code> from default server external
packages (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16736">#16736</a>)</li>
</ul>
<p>Work in this release was contributed by <a
href="https://github.com/0xbad0c0d3"><code>@​0xbad0c0d3</code></a>.
Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>@​sentry/browser</code></td>
<td>23.42 KB</td>
</tr>
<tr>
<td><code>@​sentry/browser</code> - with treeshaking flags</td>
<td>23.2 KB</td>
</tr>
<tr>
<td><code>@​sentry/browser</code> (incl. Tracing)</td>
<td>37.93 KB</td>
</tr>
<tr>
<td><code>@​sentry/browser</code> (incl. Tracing, Replay)</td>
<td>75.18 KB</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md"><code>@​sentry/core</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>9.33.0</h2>
<h3>Important Changes</h3>
<ul>
<li><strong>feat: Add opt-in <code>vercelAiIntegration</code> to
cloudflare &amp; vercel-edge (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16732">#16732</a>)</strong></li>
</ul>
<p>The <code>vercelAiIntegration</code> is now available as opt-in for
the Cloudflare and the Next.js SDK for Vercel Edge.
To use it, add the integration in <code>Sentry.init</code></p>
<pre lang="js"><code>Sentry.init({
  tracesSampleRate: 1.0,
  integrations: [Sentry.vercelAIIntegration()],
});
</code></pre>
<p>And enable telemetry for Vercel AI calls</p>
<pre lang="js"><code>const result = await generateText({
  model: openai('gpt-4o'),
  experimental_telemetry: {
    isEnabled: true,
  },
});
</code></pre>
<ul>
<li><strong>feat(node): Add postgresjs instrumentation (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16665">#16665</a>)</strong></li>
</ul>
<p>The Node.js SDK now includes instrumentation for <a
href="https://www.npmjs.com/package/postgres">Postgres.js</a>.</p>
<ul>
<li><strong>feat(node): Use diagnostics channel for Fastify v5 error
handling (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16715">#16715</a>)</strong></li>
</ul>
<p>If you're on Fastify v5, you no longer need to call
<code>setupFastifyErrorHandler</code>. It is done automatically by the
node SDK. Older versions still rely on calling
<code>setupFastifyErrorHandler</code>.</p>
<h3>Other Changes</h3>
<ul>
<li>feat(cloudflare): Allow interop with OpenTelemetry emitted spans (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16714">#16714</a>)</li>
<li>feat(cloudflare): Flush after <code>waitUntil</code> (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16681">#16681</a>)</li>
<li>fix(nextjs): Remove <code>ai</code> from default server external
packages (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16736">#16736</a>)</li>
</ul>
<p>Work in this release was contributed by <a
href="https://github.com/0xbad0c0d3"><code>@​0xbad0c0d3</code></a>.
Thank you for your contribution!</p>
<h2>9.32.0</h2>
<h3>Important Changes</h3>
<ul>
<li>feat(browser): Add CLS sources to span attributes (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16710">#16710</a>)</li>
</ul>
<p>Enhances CLS (Cumulative Layout Shift) spans by adding attributes
detailing the elements that caused layout shifts.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="70e425f9bf"><code>70e425f</code></a>
release: 9.33.0</li>
<li><a
href="c07f2a21f3"><code>c07f2a2</code></a>
Merge pull request <a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16750">#16750</a>
from getsentry/prepare-release/9.33.0</li>
<li><a
href="e8eb291938"><code>e8eb291</code></a>
meta(changelog): Update changelog for 9.33.0</li>
<li><a
href="e7891f749f"><code>e7891f7</code></a>
chore: Add external contributor to CHANGELOG.md (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16747">#16747</a>)</li>
<li><a
href="c20a3c4b20"><code>c20a3c4</code></a>
feat(cloudflare): Flush after <code>waitUntil</code> (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16681">#16681</a>)</li>
<li><a
href="510ba3eba9"><code>510ba3e</code></a>
feat(node): Add postgresjs instrumentation (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16665">#16665</a>)</li>
<li><a
href="f916be14ac"><code>f916be1</code></a>
feat(node): Use diagnostics channel for Fastify v5 error handling (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16715">#16715</a>)</li>
<li><a
href="40f04bc671"><code>40f04bc</code></a>
feat: Add opt-in <code>vercelAiIntegration</code> to cloudflare &amp;
vercel-edge (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16732">#16732</a>)</li>
<li><a
href="ae30471893"><code>ae30471</code></a>
test(nuxt): Add fake module and composable to E2E test (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16731">#16731</a>)</li>
<li><a
href="43403dc2dc"><code>43403dc</code></a>
fix(nextjs): Remove <code>ai</code> from default server external
packages (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16736">#16736</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/getsentry/sentry-javascript/compare/9.27.0...9.33.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `@sentry/react` from 9.27.0 to 9.33.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/sentry-javascript/releases"><code>@​sentry/react</code>'s
releases</a>.</em></p>
<blockquote>
<h2>9.33.0</h2>
<h3>Important Changes</h3>
<ul>
<li><strong>feat: Add opt-in <code>vercelAiIntegration</code> to
cloudflare &amp; vercel-edge (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16732">#16732</a>)</strong></li>
</ul>
<p>The <code>vercelAiIntegration</code> is now available as opt-in for
the Cloudflare and the Next.js SDK for Vercel Edge.
To use it, add the integration in <code>Sentry.init</code></p>
<pre lang="js"><code>Sentry.init({
  tracesSampleRate: 1.0,
  integrations: [Sentry.vercelAIIntegration()],
});
</code></pre>
<p>And enable telemetry for Vercel AI calls</p>
<pre lang="js"><code>const result = await generateText({
  model: openai('gpt-4o'),
  experimental_telemetry: {
    isEnabled: true,
  },
});
</code></pre>
<ul>
<li><strong>feat(node): Add postgresjs instrumentation (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16665">#16665</a>)</strong></li>
</ul>
<p>The Node.js SDK now includes instrumentation for <a
href="https://www.npmjs.com/package/postgres">Postgres.js</a>.</p>
<ul>
<li><strong>feat(node): Use diagnostics channel for Fastify v5 error
handling (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16715">#16715</a>)</strong></li>
</ul>
<p>If you're on Fastify v5, you no longer need to call
<code>setupFastifyErrorHandler</code>. It is done automatically by the
node SDK. Older versions still rely on calling
<code>setupFastifyErrorHandler</code>.</p>
<h3>Other Changes</h3>
<ul>
<li>feat(cloudflare): Allow interop with OpenTelemetry emitted spans (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16714">#16714</a>)</li>
<li>feat(cloudflare): Flush after <code>waitUntil</code> (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16681">#16681</a>)</li>
<li>fix(nextjs): Remove <code>ai</code> from default server external
packages (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16736">#16736</a>)</li>
</ul>
<p>Work in this release was contributed by <a
href="https://github.com/0xbad0c0d3"><code>@​0xbad0c0d3</code></a>.
Thank you for your contribution!</p>
<h2>Bundle size 📦</h2>
<table>
<thead>
<tr>
<th>Path</th>
<th>Size</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>@​sentry/browser</code></td>
<td>23.42 KB</td>
</tr>
<tr>
<td><code>@​sentry/browser</code> - with treeshaking flags</td>
<td>23.2 KB</td>
</tr>
<tr>
<td><code>@​sentry/browser</code> (incl. Tracing)</td>
<td>37.93 KB</td>
</tr>
<tr>
<td><code>@​sentry/browser</code> (incl. Tracing, Replay)</td>
<td>75.18 KB</td>
</tr>
</tbody>
</table>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md"><code>@​sentry/react</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>9.33.0</h2>
<h3>Important Changes</h3>
<ul>
<li><strong>feat: Add opt-in <code>vercelAiIntegration</code> to
cloudflare &amp; vercel-edge (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16732">#16732</a>)</strong></li>
</ul>
<p>The <code>vercelAiIntegration</code> is now available as opt-in for
the Cloudflare and the Next.js SDK for Vercel Edge.
To use it, add the integration in <code>Sentry.init</code></p>
<pre lang="js"><code>Sentry.init({
  tracesSampleRate: 1.0,
  integrations: [Sentry.vercelAIIntegration()],
});
</code></pre>
<p>And enable telemetry for Vercel AI calls</p>
<pre lang="js"><code>const result = await generateText({
  model: openai('gpt-4o'),
  experimental_telemetry: {
    isEnabled: true,
  },
});
</code></pre>
<ul>
<li><strong>feat(node): Add postgresjs instrumentation (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16665">#16665</a>)</strong></li>
</ul>
<p>The Node.js SDK now includes instrumentation for <a
href="https://www.npmjs.com/package/postgres">Postgres.js</a>.</p>
<ul>
<li><strong>feat(node): Use diagnostics channel for Fastify v5 error
handling (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16715">#16715</a>)</strong></li>
</ul>
<p>If you're on Fastify v5, you no longer need to call
<code>setupFastifyErrorHandler</code>. It is done automatically by the
node SDK. Older versions still rely on calling
<code>setupFastifyErrorHandler</code>.</p>
<h3>Other Changes</h3>
<ul>
<li>feat(cloudflare): Allow interop with OpenTelemetry emitted spans (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16714">#16714</a>)</li>
<li>feat(cloudflare): Flush after <code>waitUntil</code> (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16681">#16681</a>)</li>
<li>fix(nextjs): Remove <code>ai</code> from default server external
packages (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16736">#16736</a>)</li>
</ul>
<p>Work in this release was contributed by <a
href="https://github.com/0xbad0c0d3"><code>@​0xbad0c0d3</code></a>.
Thank you for your contribution!</p>
<h2>9.32.0</h2>
<h3>Important Changes</h3>
<ul>
<li>feat(browser): Add CLS sources to span attributes (<a
href="https://redirect.github.com/getsentry/sentry-javascript/pull/16710">#16710</a>)</li>
</ul>
<p>Enhances CLS (Cumulative Layout Shift) spans by adding attributes
detailing the elements that caused layout shifts.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="70e425f9bf"><code>70e425f</code></a>
release: 9.33.0</li>
<li><a
href="c07f2a21f3"><code>c07f2a2</code></a>
Merge pull request <a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16750">#16750</a>
from getsentry/prepare-release/9.33.0</li>
<li><a
href="e8eb291938"><code>e8eb291</code></a>
meta(changelog): Update changelog for 9.33.0</li>
<li><a
href="e7891f749f"><code>e7891f7</code></a>
chore: Add external contributor to CHANGELOG.md (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16747">#16747</a>)</li>
<li><a
href="c20a3c4b20"><code>c20a3c4</code></a>
feat(cloudflare): Flush after <code>waitUntil</code> (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16681">#16681</a>)</li>
<li><a
href="510ba3eba9"><code>510ba3e</code></a>
feat(node): Add postgresjs instrumentation (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16665">#16665</a>)</li>
<li><a
href="f916be14ac"><code>f916be1</code></a>
feat(node): Use diagnostics channel for Fastify v5 error handling (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16715">#16715</a>)</li>
<li><a
href="40f04bc671"><code>40f04bc</code></a>
feat: Add opt-in <code>vercelAiIntegration</code> to cloudflare &amp;
vercel-edge (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16732">#16732</a>)</li>
<li><a
href="ae30471893"><code>ae30471</code></a>
test(nuxt): Add fake module and composable to E2E test (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16731">#16731</a>)</li>
<li><a
href="43403dc2dc"><code>43403dc</code></a>
fix(nextjs): Remove <code>ai</code> from default server external
packages (<a
href="https://redirect.github.com/getsentry/sentry-javascript/issues/16736">#16736</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/getsentry/sentry-javascript/compare/9.27.0...9.33.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>
2025-07-01 17:15:07 +00:00
dependabot[bot]
8ffde2288a build(deps): bump the tailwind group in /rust/gui-client with 3 updates (#9752)
Bumps the tailwind group in /rust/gui-client with 3 updates:
[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli),
[@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite)
and
[tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss).

Updates `@tailwindcss/cli` from 4.1.8 to 4.1.11
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/releases"><code>@​tailwindcss/cli</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v4.1.11</h2>
<h3>Fixed</h3>
<ul>
<li>Add heuristic to skip candidate migrations inside
<code>emit(…)</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18330">#18330</a>)</li>
<li>Extract candidates with variants in Clojure/ClojureScript keywords
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18338">#18338</a>)</li>
<li>Document <code>--watch=always</code> in the CLI's usage (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18337">#18337</a>)</li>
<li>Add support for Vite 7 to <code>@tailwindcss/vite</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18384">#18384</a>)</li>
</ul>
<h2>v4.1.10</h2>
<h3>Fixed</h3>
<ul>
<li>Fix incorrectly generated CSS when using percentages in arbitrary
values with calc (e.g. <code>w-[calc(100%-var(--offset))]</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18289">#18289</a>)</li>
</ul>
<h2>v4.1.9</h2>
<h3>Fixed</h3>
<ul>
<li>Correctly parse custom properties with strings containing semicolons
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18251">#18251</a>)</li>
<li>Upgrade: Migrate arbitrary modifiers without percentage signs to
bare values (e.g. <code>/[0.16]</code> → <code>/16</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate CSS variable shorthands where fallback value
contains function call (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate negative arbitrary values to negative bare values
(e.g. <code>mb-[-32rem]</code> → <code>-mb-128</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18212">#18212</a>)</li>
<li>Upgrade: Do not migrate <code>blur</code> in
<code>wire:model.blur</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18216">#18216</a>)</li>
<li>Don't add spaces around CSS dashed idents when formatting math
expressions (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18220">#18220</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md"><code>@​tailwindcss/cli</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>[4.1.11] - 2025-06-26</h2>
<h3>Fixed</h3>
<ul>
<li>Add heuristic to skip candidate migrations inside
<code>emit(…)</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18330">#18330</a>)</li>
<li>Extract candidates with variants in Clojure/ClojureScript keywords
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18338">#18338</a>)</li>
<li>Document <code>--watch=always</code> in the CLI's usage (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18337">#18337</a>)</li>
<li>Add support for Vite 7 to <code>@tailwindcss/vite</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18384">#18384</a>)</li>
</ul>
<h2>[4.1.10] - 2025-06-11</h2>
<h3>Fixed</h3>
<ul>
<li>Fix incorrectly generated CSS when using percentages in arbitrary
values with calc (e.g. <code>w-[calc(100%-var(--offset))]</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18289">#18289</a>)</li>
</ul>
<h2>[4.1.9] - 2025-06-11</h2>
<h3>Fixed</h3>
<ul>
<li>Correctly parse custom properties with strings containing semicolons
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18251">#18251</a>)</li>
<li>Upgrade: Migrate arbitrary modifiers without percentage signs to
bare values (e.g. <code>/[0.16]</code> → <code>/16</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate CSS variable shorthands where fallback value
contains function call (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate negative arbitrary values to negative bare values
(e.g. <code>mb-[-32rem]</code> → <code>-mb-128</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18212">#18212</a>)</li>
<li>Upgrade: Do not migrate <code>blur</code> in
<code>wire:model.blur</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18216">#18216</a>)</li>
<li>Don't add spaces around CSS dashed idents when formatting math
expressions (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18220">#18220</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b24457a9f4"><code>b24457a</code></a>
Prepare 4.1.11 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli/issues/18397">#18397</a>)</li>
<li><a
href="c5a997cbdb"><code>c5a997c</code></a>
Document <code>--watch=always</code> in the CLI (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli/issues/18337">#18337</a>)</li>
<li><a
href="d06bbb80da"><code>d06bbb8</code></a>
Prepare v4.1.10 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli/issues/18290">#18290</a>)</li>
<li><a
href="b88371a309"><code>b88371a</code></a>
Prepare v4.1.9 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli/issues/18285">#18285</a>)</li>
<li>See full diff in <a
href="https://github.com/tailwindlabs/tailwindcss/commits/v4.1.11/packages/@tailwindcss-cli">compare
view</a></li>
</ul>
</details>
<br />

Updates `@tailwindcss/vite` from 4.1.8 to 4.1.11
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/releases"><code>@​tailwindcss/vite</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v4.1.11</h2>
<h3>Fixed</h3>
<ul>
<li>Add heuristic to skip candidate migrations inside
<code>emit(…)</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18330">#18330</a>)</li>
<li>Extract candidates with variants in Clojure/ClojureScript keywords
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18338">#18338</a>)</li>
<li>Document <code>--watch=always</code> in the CLI's usage (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18337">#18337</a>)</li>
<li>Add support for Vite 7 to <code>@tailwindcss/vite</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18384">#18384</a>)</li>
</ul>
<h2>v4.1.10</h2>
<h3>Fixed</h3>
<ul>
<li>Fix incorrectly generated CSS when using percentages in arbitrary
values with calc (e.g. <code>w-[calc(100%-var(--offset))]</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18289">#18289</a>)</li>
</ul>
<h2>v4.1.9</h2>
<h3>Fixed</h3>
<ul>
<li>Correctly parse custom properties with strings containing semicolons
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18251">#18251</a>)</li>
<li>Upgrade: Migrate arbitrary modifiers without percentage signs to
bare values (e.g. <code>/[0.16]</code> → <code>/16</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate CSS variable shorthands where fallback value
contains function call (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate negative arbitrary values to negative bare values
(e.g. <code>mb-[-32rem]</code> → <code>-mb-128</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18212">#18212</a>)</li>
<li>Upgrade: Do not migrate <code>blur</code> in
<code>wire:model.blur</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18216">#18216</a>)</li>
<li>Don't add spaces around CSS dashed idents when formatting math
expressions (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18220">#18220</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md"><code>@​tailwindcss/vite</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>[4.1.11] - 2025-06-26</h2>
<h3>Fixed</h3>
<ul>
<li>Add heuristic to skip candidate migrations inside
<code>emit(…)</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18330">#18330</a>)</li>
<li>Extract candidates with variants in Clojure/ClojureScript keywords
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18338">#18338</a>)</li>
<li>Document <code>--watch=always</code> in the CLI's usage (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18337">#18337</a>)</li>
<li>Add support for Vite 7 to <code>@tailwindcss/vite</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18384">#18384</a>)</li>
</ul>
<h2>[4.1.10] - 2025-06-11</h2>
<h3>Fixed</h3>
<ul>
<li>Fix incorrectly generated CSS when using percentages in arbitrary
values with calc (e.g. <code>w-[calc(100%-var(--offset))]</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18289">#18289</a>)</li>
</ul>
<h2>[4.1.9] - 2025-06-11</h2>
<h3>Fixed</h3>
<ul>
<li>Correctly parse custom properties with strings containing semicolons
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18251">#18251</a>)</li>
<li>Upgrade: Migrate arbitrary modifiers without percentage signs to
bare values (e.g. <code>/[0.16]</code> → <code>/16</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate CSS variable shorthands where fallback value
contains function call (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate negative arbitrary values to negative bare values
(e.g. <code>mb-[-32rem]</code> → <code>-mb-128</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18212">#18212</a>)</li>
<li>Upgrade: Do not migrate <code>blur</code> in
<code>wire:model.blur</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18216">#18216</a>)</li>
<li>Don't add spaces around CSS dashed idents when formatting math
expressions (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18220">#18220</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b24457a9f4"><code>b24457a</code></a>
Prepare 4.1.11 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite/issues/18397">#18397</a>)</li>
<li><a
href="aa859314d9"><code>aa85931</code></a>
feat: add Vite 7 support to the <code>@​tailwindcss/vite</code> plugin
(<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite/issues/18384">#18384</a>)</li>
<li><a
href="d06bbb80da"><code>d06bbb8</code></a>
Prepare v4.1.10 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite/issues/18290">#18290</a>)</li>
<li><a
href="b88371a309"><code>b88371a</code></a>
Prepare v4.1.9 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite/issues/18285">#18285</a>)</li>
<li>See full diff in <a
href="https://github.com/tailwindlabs/tailwindcss/commits/v4.1.11/packages/@tailwindcss-vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `tailwindcss` from 4.1.8 to 4.1.11
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/releases">tailwindcss's
releases</a>.</em></p>
<blockquote>
<h2>v4.1.11</h2>
<h3>Fixed</h3>
<ul>
<li>Add heuristic to skip candidate migrations inside
<code>emit(…)</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18330">#18330</a>)</li>
<li>Extract candidates with variants in Clojure/ClojureScript keywords
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18338">#18338</a>)</li>
<li>Document <code>--watch=always</code> in the CLI's usage (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18337">#18337</a>)</li>
<li>Add support for Vite 7 to <code>@tailwindcss/vite</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18384">#18384</a>)</li>
</ul>
<h2>v4.1.10</h2>
<h3>Fixed</h3>
<ul>
<li>Fix incorrectly generated CSS when using percentages in arbitrary
values with calc (e.g. <code>w-[calc(100%-var(--offset))]</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18289">#18289</a>)</li>
</ul>
<h2>v4.1.9</h2>
<h3>Fixed</h3>
<ul>
<li>Correctly parse custom properties with strings containing semicolons
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18251">#18251</a>)</li>
<li>Upgrade: Migrate arbitrary modifiers without percentage signs to
bare values (e.g. <code>/[0.16]</code> → <code>/16</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate CSS variable shorthands where fallback value
contains function call (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate negative arbitrary values to negative bare values
(e.g. <code>mb-[-32rem]</code> → <code>-mb-128</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18212">#18212</a>)</li>
<li>Upgrade: Do not migrate <code>blur</code> in
<code>wire:model.blur</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18216">#18216</a>)</li>
<li>Don't add spaces around CSS dashed idents when formatting math
expressions (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18220">#18220</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md">tailwindcss's
changelog</a>.</em></p>
<blockquote>
<h2>[4.1.11] - 2025-06-26</h2>
<h3>Fixed</h3>
<ul>
<li>Add heuristic to skip candidate migrations inside
<code>emit(…)</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18330">#18330</a>)</li>
<li>Extract candidates with variants in Clojure/ClojureScript keywords
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18338">#18338</a>)</li>
<li>Document <code>--watch=always</code> in the CLI's usage (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18337">#18337</a>)</li>
<li>Add support for Vite 7 to <code>@tailwindcss/vite</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18384">#18384</a>)</li>
</ul>
<h2>[4.1.10] - 2025-06-11</h2>
<h3>Fixed</h3>
<ul>
<li>Fix incorrectly generated CSS when using percentages in arbitrary
values with calc (e.g. <code>w-[calc(100%-var(--offset))]</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18289">#18289</a>)</li>
</ul>
<h2>[4.1.9] - 2025-06-11</h2>
<h3>Fixed</h3>
<ul>
<li>Correctly parse custom properties with strings containing semicolons
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18251">#18251</a>)</li>
<li>Upgrade: Migrate arbitrary modifiers without percentage signs to
bare values (e.g. <code>/[0.16]</code> → <code>/16</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate CSS variable shorthands where fallback value
contains function call (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18184">#18184</a>)</li>
<li>Upgrade: Migrate negative arbitrary values to negative bare values
(e.g. <code>mb-[-32rem]</code> → <code>-mb-128</code>) (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18212">#18212</a>)</li>
<li>Upgrade: Do not migrate <code>blur</code> in
<code>wire:model.blur</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18216">#18216</a>)</li>
<li>Don't add spaces around CSS dashed idents when formatting math
expressions (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18220">#18220</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b24457a9f4"><code>b24457a</code></a>
Prepare 4.1.11 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18397">#18397</a>)</li>
<li><a
href="aa859314d9"><code>aa85931</code></a>
feat: add Vite 7 support to the <code>@​tailwindcss/vite</code> plugin
(<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18384">#18384</a>)</li>
<li><a
href="f0e2f5bb7a"><code>f0e2f5b</code></a>
Fix: Correct typo in comment (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18361">#18361</a>)</li>
<li><a
href="d06bbb80da"><code>d06bbb8</code></a>
Prepare v4.1.10 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18290">#18290</a>)</li>
<li><a
href="ddb0beff66"><code>ddb0bef</code></a>
Fix missing space around <code>-</code> when using <code>%</code>
regression (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18289">#18289</a>)</li>
<li><a
href="b88371a309"><code>b88371a</code></a>
Prepare v4.1.9 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18285">#18285</a>)</li>
<li><a
href="aa817fb6de"><code>aa817fb</code></a>
fix: don't break CSS keywords when formatting math expressions (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18220">#18220</a>)</li>
<li><a
href="bea843c90a"><code>bea843c</code></a>
CSS Parser: Handle string with semi-colon in custom properties. (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18251">#18251</a>)</li>
<li><a
href="8bfbac5d20"><code>8bfbac5</code></a>
docs: fix typo in container.ts comment (&quot;a the&quot; -&gt;
&quot;the&quot;) (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/18223">#18223</a>)</li>
<li>See full diff in <a
href="https://github.com/tailwindlabs/tailwindcss/commits/v4.1.11/packages/tailwindcss">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>
2025-07-01 15:06:21 +00:00
dependabot[bot]
9ae8e03de8 build(deps): bump the react group in /rust/gui-client with 2 updates (#9760)
Bumps the react group in /rust/gui-client with 2 updates:
[@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react)
and
[react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router).

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

Updates `react-router` from 7.6.2 to 7.6.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/remix-run/react-router/releases">react-router's
releases</a>.</em></p>
<blockquote>
<h2>v7.6.3</h2>
<p>See the changelog for release notes: <a
href="https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v763">https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v763</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/remix-run/react-router/blob/main/packages/react-router/CHANGELOG.md">react-router's
changelog</a>.</em></p>
<blockquote>
<h2>7.6.3</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p>Do not serialize types for <code>useRouteLoaderData&lt;typeof
clientLoader&gt;</code> (<a
href="https://redirect.github.com/remix-run/react-router/pull/13752">#13752</a>)</p>
<p>For types to distinguish a <code>clientLoader</code> from a
<code>serverLoader</code>, you MUST annotate <code>clientLoader</code>
args:</p>
<pre lang="ts"><code>// 👇 annotation required to skip serializing types
export function clientLoader({}: Route.ClientLoaderArgs) {
  return { fn: () =&gt; &quot;earth&quot; };
}
<p>function SomeComponent() {<br />
const data = useRouteLoaderData&lt;typeof
clientLoader&gt;(&quot;routes/this-route&quot;);<br />
const planet = data?.fn() ?? &quot;world&quot;;<br />
return &lt;h1&gt;Hello, {planet}!&lt;/h1&gt;;<br />
}<br />
</code></pre></p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0dea762528"><code>0dea762</code></a>
chore: Update version for release (<a
href="https://github.com/remix-run/react-router/tree/HEAD/packages/react-router/issues/13897">#13897</a>)</li>
<li><a
href="183cc68431"><code>183cc68</code></a>
chore: Update version for release (pre) (<a
href="https://github.com/remix-run/react-router/tree/HEAD/packages/react-router/issues/13878">#13878</a>)</li>
<li><a
href="c5396bd94a"><code>c5396bd</code></a>
Merge branch 'main' into release-next</li>
<li><a
href="e7b61c01b1"><code>e7b61c0</code></a>
Fix Typos in Documentation and Test Comments (<a
href="https://github.com/remix-run/react-router/tree/HEAD/packages/react-router/issues/13810">#13810</a>)</li>
<li><a
href="f499d260fb"><code>f499d26</code></a>
chore(react-router): remove unused code (<a
href="https://github.com/remix-run/react-router/tree/HEAD/packages/react-router/issues/13761">#13761</a>)</li>
<li><a
href="0a6acb1342"><code>0a6acb1</code></a>
Do not serialize types for <code>useRouteLoaderData\&lt;typeof
clientLoader&gt;()</code> (<a
href="https://github.com/remix-run/react-router/tree/HEAD/packages/react-router/issues/13752">#13752</a>)</li>
<li><a
href="db9cdf9e59"><code>db9cdf9</code></a>
chore: remove unused files (<a
href="https://github.com/remix-run/react-router/tree/HEAD/packages/react-router/issues/13740">#13740</a>)</li>
<li>See full diff in <a
href="https://github.com/remix-run/react-router/commits/react-router@7.6.3/packages/react-router">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>
2025-07-01 15:05:37 +00:00
Thomas Eizinger
3961f6e299 chore(rust): ignore parent_span_id (#9738)
This field is included in the tracing logs but doesn't need to be
included in our message formatting as it is just noise for us.
2025-07-01 14:12:06 +00:00
Thomas Eizinger
899f5ea5e8 fix(gui-client): ensure GUI client can access firezone-id.json (#9764)
I believe some of the recent changes around how we load the
`firezone-id.json` from the GUI client surfaced that we in fact don't
always have access to it. Previously, this was silenced because we would
only optionally add it as context to the Sentry client.

Now, we need it to initialise telemetry so we know whether or not to
send logs to Sentry.

In order to be able to access the file, we need to change the config's
directory and the file to be owned by the `firezone-client` group.
2025-07-01 14:11:29 +00:00
Thomas Eizinger
9bff0bc8d3 fix(gui-client): don't drop bootstrap logger early (#9763)
The GUI client binary performs quite a few checks prior to setting up
logging. In order to log at least something, we have a bootstrap logger
config that logs to stdout based on the `RUST_LOG` env var.

However, in the context of an error, the logger guard was dropped to
early and therefore we couldn't actually see the error.

To fix this, we pass a mutable `Option` in to `try_main` instead. This
allows the function to drop the bootstrap logger once the real one is
set up but also keep logging using the bootstrap logger in case of an
error.
2025-07-01 14:10:54 +00:00
Thomas Eizinger
f3ae275baa fix(gui-client): stop telemetry in tunnel service on disconnect (#9765)
In order to re-initialise telemetry on a new session, we need to make
sure it is de-initialised on every session disconnect.
2025-07-01 14:09:25 +00:00
Jamil
a4cf3ead0f ci: publish gateway 1.4.12 (#9736) 2025-07-01 14:04:21 +00:00
Thomas Eizinger
b01984addb fix(phoenix-channel): replace all non-ASCII chars in user agent (#9725)
HTTP headers only reliably support ASCII characters. We include
information like the user's kernel build name in there and therefore
need to strip non-ASCII characters from that to avoid encoding errors.

Fixes: #9706
2025-06-30 15:20:55 +00:00
Thomas Eizinger
178a9da24d chore(rust): bump tokio-tungstenite (#9711) 2025-06-30 14:18:36 +00:00
dependabot[bot]
4eb05e821c build(deps): bump the tauri group in /rust with 6 updates (#9720)
Bumps the tauri group in /rust with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [tauri-plugin-dialog](https://github.com/tauri-apps/plugins-workspace)
| `2.2.2` | `2.3.0` |
|
[tauri-plugin-notification](https://github.com/tauri-apps/plugins-workspace)
| `2.2.2` | `2.3.0` |
| [tauri-plugin-opener](https://github.com/tauri-apps/plugins-workspace)
| `2.2.7` | `2.4.0` |
| [tauri-plugin-shell](https://github.com/tauri-apps/plugins-workspace)
| `2.2.1` | `2.3.0` |
| [tauri-runtime](https://github.com/tauri-apps/tauri) | `2.6.0` |
`2.7.0` |
| [tauri-utils](https://github.com/tauri-apps/tauri) | `2.4.0` | `2.5.0`
|

Updates `tauri-plugin-dialog` from 2.2.2 to 2.3.0
<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>opener-js v2.3.0</h2>
<h2>[2.3.0]</h2>
<ul>
<li><a
href="ce9888a2d4"><code>ce9888a2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/2762">#2762</a>)
Similar to the <code>fs</code> plugin the <code>opener</code> plugin now
supports a <code>requireLiteralLeadingDot</code> configuration in
<code>tauri.conf.json</code>.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>npm warn publish npm auto-corrected some errors in your
package.json when publishing. Please run &quot;npm pkg fix&quot; to
address these errors.
npm warn publish errors corrected:
npm warn publish &quot;repository&quot; was changed from a string to an
object
npm warn publish &quot;repository.url&quot; was normalized to
&quot;git+https://github.com/tauri-apps/plugins-workspace.git&quot;
npm notice
npm notice 📦  @tauri-apps/plugin-opener@2.3.0
npm notice Tarball Contents
npm notice 888B LICENSE.spdx
npm notice 4.3kB README.md
npm notice 2.8kB dist-js/index.cjs
npm notice 1.8kB dist-js/index.d.ts
npm notice 2.7kB 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.3.0
npm notice filename: tauri-apps-plugin-opener-2.3.0.tgz
npm notice package size: 3.4 kB
npm notice unpacked size: 13.2 kB
npm notice shasum: ea883f48daffd22873bbc40cc81b266df6f6a6cd
npm notice integrity: sha512-yAbauwp8BCHIh[...]otjYnnbUVmYrw==
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=240371238
+ @tauri-apps/plugin-opener@2.3.0
</code></pre>
<!-- raw HTML omitted -->
<h2>opener v2.3.0</h2>
<h2>[2.3.0]</h2>
<ul>
<li><a
href="ce9888a2d4"><code>ce9888a2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/2762">#2762</a>)
Similar to the <code>fs</code> plugin the <code>opener</code> plugin now
supports a <code>requireLiteralLeadingDot</code> configuration in
<code>tauri.conf.json</code>.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="adc23d6c4f"><code>adc23d6</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2808">#2808</a>)</li>
<li><a
href="fc573b35a7"><code>fc573b3</code></a>
chore(deps): update rust crate tokio-tungstenite to 0.27 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2768">#2768</a>)</li>
<li><a
href="901ddfb73d"><code>901ddfb</code></a>
ci: enable create-pull-request sign commits (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2809">#2809</a>)</li>
<li><a
href="f209b2f23c"><code>f209b2f</code></a>
chore(deps): update tauri monorepo to v2.6.0 (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2804">#2804</a>)</li>
<li><a
href="19ed1bd3cc"><code>19ed1bd</code></a>
chore(deps): update dependency prettier to v3.6.1 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2806">#2806</a>)</li>
<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>Additional commits viewable in <a
href="https://github.com/tauri-apps/plugins-workspace/compare/os-v2.2.2...os-v2.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `tauri-plugin-notification` from 2.2.2 to 2.3.0
<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>opener-js v2.3.0</h2>
<h2>[2.3.0]</h2>
<ul>
<li><a
href="ce9888a2d4"><code>ce9888a2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/2762">#2762</a>)
Similar to the <code>fs</code> plugin the <code>opener</code> plugin now
supports a <code>requireLiteralLeadingDot</code> configuration in
<code>tauri.conf.json</code>.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>npm warn publish npm auto-corrected some errors in your
package.json when publishing. Please run &quot;npm pkg fix&quot; to
address these errors.
npm warn publish errors corrected:
npm warn publish &quot;repository&quot; was changed from a string to an
object
npm warn publish &quot;repository.url&quot; was normalized to
&quot;git+https://github.com/tauri-apps/plugins-workspace.git&quot;
npm notice
npm notice 📦  @tauri-apps/plugin-opener@2.3.0
npm notice Tarball Contents
npm notice 888B LICENSE.spdx
npm notice 4.3kB README.md
npm notice 2.8kB dist-js/index.cjs
npm notice 1.8kB dist-js/index.d.ts
npm notice 2.7kB 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.3.0
npm notice filename: tauri-apps-plugin-opener-2.3.0.tgz
npm notice package size: 3.4 kB
npm notice unpacked size: 13.2 kB
npm notice shasum: ea883f48daffd22873bbc40cc81b266df6f6a6cd
npm notice integrity: sha512-yAbauwp8BCHIh[...]otjYnnbUVmYrw==
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=240371238
+ @tauri-apps/plugin-opener@2.3.0
</code></pre>
<!-- raw HTML omitted -->
<h2>opener v2.3.0</h2>
<h2>[2.3.0]</h2>
<ul>
<li><a
href="ce9888a2d4"><code>ce9888a2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/2762">#2762</a>)
Similar to the <code>fs</code> plugin the <code>opener</code> plugin now
supports a <code>requireLiteralLeadingDot</code> configuration in
<code>tauri.conf.json</code>.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="adc23d6c4f"><code>adc23d6</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2808">#2808</a>)</li>
<li><a
href="fc573b35a7"><code>fc573b3</code></a>
chore(deps): update rust crate tokio-tungstenite to 0.27 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2768">#2768</a>)</li>
<li><a
href="901ddfb73d"><code>901ddfb</code></a>
ci: enable create-pull-request sign commits (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2809">#2809</a>)</li>
<li><a
href="f209b2f23c"><code>f209b2f</code></a>
chore(deps): update tauri monorepo to v2.6.0 (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2804">#2804</a>)</li>
<li><a
href="19ed1bd3cc"><code>19ed1bd</code></a>
chore(deps): update dependency prettier to v3.6.1 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2806">#2806</a>)</li>
<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>Additional commits viewable in <a
href="https://github.com/tauri-apps/plugins-workspace/compare/os-v2.2.2...os-v2.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `tauri-plugin-opener` from 2.2.7 to 2.4.0
<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>cli-js v2.4.0</h2>
<h2>[2.4.0]</h2>
<ul>
<li><a
href="f209b2f23c"><code>f209b2f2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/2804">#2804</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../renovate"><code>@​renovate</code></a>)
Updated tauri to 2.6</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>npm warn publish npm auto-corrected some errors in your
package.json when publishing. Please run &quot;npm pkg fix&quot; to
address these errors.
npm warn publish errors corrected:
npm warn publish &quot;repository&quot; was changed from a string to an
object
npm warn publish &quot;repository.url&quot; was normalized to
&quot;git+https://github.com/tauri-apps/plugins-workspace.git&quot;
npm notice
npm notice 📦  @tauri-apps/plugin-cli@2.4.0
npm notice Tarball Contents
npm notice 888B LICENSE.spdx
npm notice 3.4kB README.md
npm notice 1.1kB dist-js/index.cjs
npm notice 1.3kB dist-js/index.d.ts
npm notice 1.0kB dist-js/index.js
npm notice 653B package.json
npm notice Tarball Details
npm notice name: @tauri-apps/plugin-cli
npm notice version: 2.4.0
npm notice filename: tauri-apps-plugin-cli-2.4.0.tgz
npm notice package size: 2.9 kB
npm notice unpacked size: 8.4 kB
npm notice shasum: 8d6eacb113a377bb690a36676c63c7b426212f46
npm notice integrity: sha512-3AUUaaqj3Pkac[...]WBNAL4I4iIZRg==
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=249977649
+ @tauri-apps/plugin-cli@2.4.0
</code></pre>
<!-- raw HTML omitted -->
<h2>cli v2.4.0</h2>
<h2>[2.4.0]</h2>
<ul>
<li><a
href="f209b2f23c"><code>f209b2f2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/2804">#2804</a>
by <a
href="https://github.com/tauri-apps/plugins-workspace/../../renovate"><code>@​renovate</code></a>)
Updated tauri to 2.6</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>Updating crates.io index
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="adc23d6c4f"><code>adc23d6</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2808">#2808</a>)</li>
<li><a
href="fc573b35a7"><code>fc573b3</code></a>
chore(deps): update rust crate tokio-tungstenite to 0.27 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2768">#2768</a>)</li>
<li><a
href="901ddfb73d"><code>901ddfb</code></a>
ci: enable create-pull-request sign commits (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2809">#2809</a>)</li>
<li><a
href="f209b2f23c"><code>f209b2f</code></a>
chore(deps): update tauri monorepo to v2.6.0 (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2804">#2804</a>)</li>
<li><a
href="19ed1bd3cc"><code>19ed1bd</code></a>
chore(deps): update dependency prettier to v3.6.1 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2806">#2806</a>)</li>
<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>Additional commits viewable in <a
href="https://github.com/tauri-apps/plugins-workspace/compare/opener-v2.2.7...fs-v2.4.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `tauri-plugin-shell` from 2.2.1 to 2.3.0
<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>opener-js v2.3.0</h2>
<h2>[2.3.0]</h2>
<ul>
<li><a
href="ce9888a2d4"><code>ce9888a2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/2762">#2762</a>)
Similar to the <code>fs</code> plugin the <code>opener</code> plugin now
supports a <code>requireLiteralLeadingDot</code> configuration in
<code>tauri.conf.json</code>.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>npm warn publish npm auto-corrected some errors in your
package.json when publishing. Please run &quot;npm pkg fix&quot; to
address these errors.
npm warn publish errors corrected:
npm warn publish &quot;repository&quot; was changed from a string to an
object
npm warn publish &quot;repository.url&quot; was normalized to
&quot;git+https://github.com/tauri-apps/plugins-workspace.git&quot;
npm notice
npm notice 📦  @tauri-apps/plugin-opener@2.3.0
npm notice Tarball Contents
npm notice 888B LICENSE.spdx
npm notice 4.3kB README.md
npm notice 2.8kB dist-js/index.cjs
npm notice 1.8kB dist-js/index.d.ts
npm notice 2.7kB 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.3.0
npm notice filename: tauri-apps-plugin-opener-2.3.0.tgz
npm notice package size: 3.4 kB
npm notice unpacked size: 13.2 kB
npm notice shasum: ea883f48daffd22873bbc40cc81b266df6f6a6cd
npm notice integrity: sha512-yAbauwp8BCHIh[...]otjYnnbUVmYrw==
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=240371238
+ @tauri-apps/plugin-opener@2.3.0
</code></pre>
<!-- raw HTML omitted -->
<h2>opener v2.3.0</h2>
<h2>[2.3.0]</h2>
<ul>
<li><a
href="ce9888a2d4"><code>ce9888a2</code></a>
(<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/pull/2762">#2762</a>)
Similar to the <code>fs</code> plugin the <code>opener</code> plugin now
supports a <code>requireLiteralLeadingDot</code> configuration in
<code>tauri.conf.json</code>.</li>
</ul>
<!-- raw HTML omitted -->
<pre><code>&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="adc23d6c4f"><code>adc23d6</code></a>
publish new versions (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2808">#2808</a>)</li>
<li><a
href="fc573b35a7"><code>fc573b3</code></a>
chore(deps): update rust crate tokio-tungstenite to 0.27 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2768">#2768</a>)</li>
<li><a
href="901ddfb73d"><code>901ddfb</code></a>
ci: enable create-pull-request sign commits (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2809">#2809</a>)</li>
<li><a
href="f209b2f23c"><code>f209b2f</code></a>
chore(deps): update tauri monorepo to v2.6.0 (v2) (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2804">#2804</a>)</li>
<li><a
href="19ed1bd3cc"><code>19ed1bd</code></a>
chore(deps): update dependency prettier to v3.6.1 (<a
href="https://redirect.github.com/tauri-apps/plugins-workspace/issues/2806">#2806</a>)</li>
<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>Additional commits viewable in <a
href="https://github.com/tauri-apps/plugins-workspace/compare/os-v2.2.1...os-v2.3.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `tauri-runtime` from 2.6.0 to 2.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tauri-apps/tauri/releases">tauri-runtime's
releases</a>.</em></p>
<blockquote>
<h2>tauri-runtime v2.7.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 1020 packages to latest compatible versions
      Adding apple-codesign v0.27.0 (available: v0.29.0)
      Adding axum v0.7.9 (available: v0.8.4)
      Adding cargo_metadata v0.19.2 (available: v0.20.0)
      Adding colored v2.2.0 (available: v3.0.0)
      Adding ctor v0.2.9 (available: v0.4.2)
      Adding elf v0.7.4 (available: v0.8.0)
      Adding getrandom v0.2.16 (available: v0.3.3)
      Adding html5ever v0.29.1 (available: v0.32.0)
      Adding itertools v0.13.0 (available: v0.14.0)
      Adding json-patch v3.0.1 (available: v4.0.0)
      Adding jsonrpsee v0.24.9 (available: v0.25.1)
      Adding jsonrpsee-client-transport v0.24.9 (available: v0.25.1)
      Adding jsonrpsee-core v0.24.9 (available: v0.25.1)
      Adding jsonrpsee-ws-client v0.24.9 (available: v0.25.1)
      Adding minisign v0.7.3 (available: v0.7.9)
      Adding muda v0.16.1 (available: v0.17.0)
      Adding object v0.36.7 (available: v0.37.1)
      Adding oxc_allocator v0.36.0 (available: v0.74.0)
      Adding oxc_ast v0.36.0 (available: v0.74.0)
      Adding oxc_parser v0.36.0 (available: v0.74.0)
      Adding oxc_span v0.36.0 (available: v0.74.0)
      Adding phf v0.11.3 (available: v0.12.1)
      Adding proc-macro-crate v2.0.0 (available: v2.0.2)
      Adding rand v0.8.5 (available: v0.9.1)
      Adding rpm v0.16.0 (available: v0.17.0)
      Adding schemars v0.8.22 (available: v1.0.1)
      Adding serialize-to-javascript v0.1.1 (available: v0.1.2)
      Adding serialize-to-javascript-impl v0.1.1 (available: v0.1.2)
      Adding tiny_http v0.11.0 (available: v0.12.0)
      Adding which v7.0.3 (available: v8.0.0)
      Adding worker v0.5.0 (available: v0.6.0)
      Adding worker-macros v0.5.0 (available: v0.6.0)
      Adding x509-certificate v0.23.1 (available: v0.24.0)
Fetching advisory database from
`https://github.com/RustSec/advisory-db.git`
Loaded 787 security advisories (from /home/runner/.cargo/advisory-db)
    Updating crates.io index
    Scanning Cargo.lock for vulnerabilities (1045 crate dependencies)
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="594822aa55"><code>594822a</code></a>
Apply Version Updates From Current Changes (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13282">#13282</a>)</li>
<li><a
href="e4aa35e083"><code>e4aa35e</code></a>
fix(cli): init tests</li>
<li><a
href="9c16eefa31"><code>9c16eef</code></a>
Update kuchikiki, html5ever, tao, wry, webview2-com (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13629">#13629</a>)</li>
<li><a
href="3242e1c946"><code>3242e1c</code></a>
feat(cli): allow passing Cargo commands to mobile dev/build commands (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13659">#13659</a>)</li>
<li><a
href="4a880ca697"><code>4a880ca</code></a>
feat(cli): synchronize productName changes with iOS Xcode project (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13658">#13658</a>)</li>
<li><a
href="d1ce9af628"><code>d1ce9af</code></a>
feat(cli): add <code>--config</code> arg to the mobile init cmds, closes
<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13284">#13284</a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13660">#13660</a>)</li>
<li><a
href="ec6065fa4a"><code>ec6065f</code></a>
fix(cli): use original identifier to fix mobile options reading (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13625">#13625</a>)</li>
<li><a
href="18b5299952"><code>18b5299</code></a>
docs: where does resource dir resolve to (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13640">#13640</a>)</li>
<li><a
href="eb3f0248c2"><code>eb3f024</code></a>
fix: write default permission words if not empty (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13646">#13646</a>)</li>
<li><a
href="c03cc586e3"><code>c03cc58</code></a>
chore: check generated file on package lock change (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13641">#13641</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/tauri/compare/tauri-runtime-v2.6.0...tauri-runtime-v2.7.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `tauri-utils` from 2.4.0 to 2.5.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.5.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 1020 packages to latest compatible versions
      Adding apple-codesign v0.27.0 (available: v0.29.0)
      Adding axum v0.7.9 (available: v0.8.4)
      Adding cargo_metadata v0.19.2 (available: v0.20.0)
      Adding colored v2.2.0 (available: v3.0.0)
      Adding ctor v0.2.9 (available: v0.4.2)
      Adding elf v0.7.4 (available: v0.8.0)
      Adding getrandom v0.2.16 (available: v0.3.3)
      Adding html5ever v0.29.1 (available: v0.32.0)
      Adding itertools v0.13.0 (available: v0.14.0)
      Adding json-patch v3.0.1 (available: v4.0.0)
      Adding jsonrpsee v0.24.9 (available: v0.25.1)
      Adding jsonrpsee-client-transport v0.24.9 (available: v0.25.1)
      Adding jsonrpsee-core v0.24.9 (available: v0.25.1)
      Adding jsonrpsee-ws-client v0.24.9 (available: v0.25.1)
      Adding minisign v0.7.3 (available: v0.7.9)
      Adding muda v0.16.1 (available: v0.17.0)
      Adding object v0.36.7 (available: v0.37.1)
      Adding oxc_allocator v0.36.0 (available: v0.74.0)
      Adding oxc_ast v0.36.0 (available: v0.74.0)
      Adding oxc_parser v0.36.0 (available: v0.74.0)
      Adding oxc_span v0.36.0 (available: v0.74.0)
      Adding phf v0.11.3 (available: v0.12.1)
      Adding proc-macro-crate v2.0.0 (available: v2.0.2)
      Adding rand v0.8.5 (available: v0.9.1)
      Adding rpm v0.16.0 (available: v0.17.0)
      Adding schemars v0.8.22 (available: v1.0.1)
      Adding serialize-to-javascript v0.1.1 (available: v0.1.2)
      Adding serialize-to-javascript-impl v0.1.1 (available: v0.1.2)
      Adding tiny_http v0.11.0 (available: v0.12.0)
      Adding which v7.0.3 (available: v8.0.0)
      Adding worker v0.5.0 (available: v0.6.0)
      Adding worker-macros v0.5.0 (available: v0.6.0)
      Adding x509-certificate v0.23.1 (available: v0.24.0)
Fetching advisory database from
`https://github.com/RustSec/advisory-db.git`
Loaded 787 security advisories (from /home/runner/.cargo/advisory-db)
    Updating crates.io index
    Scanning Cargo.lock for vulnerabilities (1045 crate dependencies)
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="594822aa55"><code>594822a</code></a>
Apply Version Updates From Current Changes (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13282">#13282</a>)</li>
<li><a
href="e4aa35e083"><code>e4aa35e</code></a>
fix(cli): init tests</li>
<li><a
href="9c16eefa31"><code>9c16eef</code></a>
Update kuchikiki, html5ever, tao, wry, webview2-com (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13629">#13629</a>)</li>
<li><a
href="3242e1c946"><code>3242e1c</code></a>
feat(cli): allow passing Cargo commands to mobile dev/build commands (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13659">#13659</a>)</li>
<li><a
href="4a880ca697"><code>4a880ca</code></a>
feat(cli): synchronize productName changes with iOS Xcode project (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13658">#13658</a>)</li>
<li><a
href="d1ce9af628"><code>d1ce9af</code></a>
feat(cli): add <code>--config</code> arg to the mobile init cmds, closes
<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13284">#13284</a>
(<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13660">#13660</a>)</li>
<li><a
href="ec6065fa4a"><code>ec6065f</code></a>
fix(cli): use original identifier to fix mobile options reading (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13625">#13625</a>)</li>
<li><a
href="18b5299952"><code>18b5299</code></a>
docs: where does resource dir resolve to (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13640">#13640</a>)</li>
<li><a
href="eb3f0248c2"><code>eb3f024</code></a>
fix: write default permission words if not empty (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13646">#13646</a>)</li>
<li><a
href="c03cc586e3"><code>c03cc58</code></a>
chore: check generated file on package lock change (<a
href="https://redirect.github.com/tauri-apps/tauri/issues/13641">#13641</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tauri-apps/tauri/compare/tauri-utils-v2.4.0...tauri-utils-v2.5.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>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2025-06-30 13:25:20 +00:00
dependabot[bot]
5865c5c8c2 build(deps): bump rustls from 0.23.27 to 0.23.28 in /rust (#9723)
Bumps [rustls](https://github.com/rustls/rustls) from 0.23.27 to
0.23.28.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="12fe0c123f"><code>12fe0c1</code></a>
Prepare 0.23.28</li>
<li><a
href="46ba039ba0"><code>46ba039</code></a>
Expose <code>named_groups</code> extension in
<code>ClientHello</code></li>
<li><a
href="b9a530a746"><code>b9a530a</code></a>
ci-bench: low-noise benchmarks with rustls-fuzzing-provider</li>
<li><a
href="9b452d26a4"><code>9b452d2</code></a>
fuzzing-provider: support no-op ticketer</li>
<li><a
href="136e857c77"><code>136e857</code></a>
fuzzing-provider: make ciphersuites public</li>
<li><a
href="96d66569c9"><code>96d6656</code></a>
Only include renegotiation SCSV for TLS1.2 attempts</li>
<li><a
href="568b2c6500"><code>568b2c6</code></a>
Use <code>ProtocolName</code> for ALPN protocol pervasively</li>
<li><a
href="229dfe250d"><code>229dfe2</code></a>
Allow future customisation of alert sent for
<code>InvalidMessage</code></li>
<li><a
href="d8828602c5"><code>d882860</code></a>
Return more specific type from <code>outer_hello_ext()</code></li>
<li><a
href="34cdce3d8c"><code>34cdce3</code></a>
Return more specific type from <code>grease_ext()</code></li>
<li>Additional commits viewable in <a
href="https://github.com/rustls/rustls/compare/v/0.23.27...v/0.23.28">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rustls&package-manager=cargo&previous-version=0.23.27&new-version=0.23.28)](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>
2025-06-30 13:22:07 +00:00
Thomas Eizinger
0a14d72646 fix(phoenix-channel): don't pipeline messages (#9716)
In #9656, we already tried to fix the pipelining of messages to the
portal. Unfortunately, a bug was introduced in a last-minute refactoring
where we would _only_ send messages while we were joining a room. Due a
2nd bug where we weren't actually processing the room join replies
correctly, this didn't matter so the PR was effectively a no-op and
didn't change any behaviour.

Further investigation of the code surfaced additional problems. For one,
we were not re-queuing the message into the correct buffer. Two, we were
only flushing after sending a message.

To fix both of these, we move the flushing out of the message sending
branch completely and duplicate some of the code for sending messages in
order to correctly handle join requests before other messages.

Finally, join requests have an _empty_ payload and are therefore
processed in a different branch. By moving the checking for the replies
of join requests, we can correctly update the state and continue sending
messages once the join is successful.

Resolves: #9647
2025-06-30 13:18:34 +00:00
dependabot[bot]
1dbae91b97 build(deps): bump libc from 0.2.173 to 0.2.174 in /rust (#9722)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.173 to 0.2.174.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/releases">libc's
releases</a>.</em></p>
<blockquote>
<h2>0.2.174</h2>
<h3>Added</h3>
<ul>
<li>Linux: Make <code>pidfd_info</code> fields pub (<a
href="https://redirect.github.com/rust-lang/libc/pull/4487">#4487</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Gnu x32: Add missing <code>timespec.tv_nsec</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4497">#4497</a>)</li>
<li>NuttX: Use <code>nlink_t</code> type for <code>st_nlink</code> in
<code>struct stat</code> definition (<a
href="https://redirect.github.com/rust-lang/libc/pull/4483">#4483</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Allow new <code>unpredictable_function_pointer_comparisons</code>
lints (<a
href="https://redirect.github.com/rust-lang/libc/pull/4489">#4489</a>)</li>
<li>OpenBSD: Fix some clippy warnings to use <code>pointer::cast</code>.
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4490">#4490</a>)</li>
<li>Remove unessecary semicolons from definitions of
<code>CMSG_NXTHDR</code>. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4492">#4492</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/blob/0.2.174/CHANGELOG.md">libc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/libc/compare/0.2.173...0.2.174">0.2.174</a>
- 2025-06-17</h2>
<h3>Added</h3>
<ul>
<li>Linux: Make <code>pidfd_info</code> fields pub (<a
href="https://redirect.github.com/rust-lang/libc/pull/4487">#4487</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Gnu x32: Add missing <code>timespec.tv_nsec</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4497">#4497</a>)</li>
<li>NuttX: Use <code>nlink_t</code> type for <code>st_nlink</code> in
<code>struct stat</code> definition (<a
href="https://redirect.github.com/rust-lang/libc/pull/4483">#4483</a>)</li>
</ul>
<h3>Other</h3>
<ul>
<li>Allow new <code>unpredictable_function_pointer_comparisons</code>
lints (<a
href="https://redirect.github.com/rust-lang/libc/pull/4489">#4489</a>)</li>
<li>OpenBSD: Fix some clippy warnings to use <code>pointer::cast</code>.
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4490">#4490</a>)</li>
<li>Remove unessecary semicolons from definitions of
<code>CMSG_NXTHDR</code>. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4492">#4492</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ea6f07f982"><code>ea6f07f</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/4500">#4500</a>
from tgross35/release</li>
<li><a
href="ce31fdaf1c"><code>ce31fda</code></a>
chore: release libc 0.2.174</li>
<li><a
href="296b5801e9"><code>296b580</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/4499">#4499</a>
from tgross35/backport-hungarian-wax</li>
<li><a
href="264a5399ab"><code>264a539</code></a>
Add missing timespec.tv_nsec for gnux32</li>
<li><a
href="7d92568ed6"><code>7d92568</code></a>
fix: use nlink_t type for st_nlink in struct stat definition for
NuttX</li>
<li><a
href="790180ba16"><code>790180b</code></a>
Remove unessecary semicolons from definitions of
<code>CMSG_NXTHDR</code>.</li>
<li><a
href="1e99d50bc9"><code>1e99d50</code></a>
make pidfd_info fields pub</li>
<li><a
href="c08c5073ef"><code>c08c507</code></a>
openbsd: Fix some clippy warnings to use
<code>pointer::cast</code>.</li>
<li><a
href="513405844c"><code>5134058</code></a>
Allow new <code>unpredictable_function_pointer_comparisons</code>
lints</li>
<li>See full diff in <a
href="https://github.com/rust-lang/libc/compare/0.2.173...0.2.174">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=libc&package-manager=cargo&previous-version=0.2.173&new-version=0.2.174)](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>
2025-06-30 13:15:31 +00:00
Thomas Eizinger
710885247e chore(rust): fix lockfile (#9724)
It appears that the recent dependabot PRs didn't update the lockfile correctly.
2025-06-30 22:39:45 +10:00
dependabot[bot]
1093a399b9 build(deps): bump arboard from 3.5.0 to 3.6.0 in /rust (#9721)
Bumps [arboard](https://github.com/1Password/arboard) from 3.5.0 to
3.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/1Password/arboard/releases">arboard's
releases</a>.</em></p>
<blockquote>
<h2>v3.6.0</h2>
<h3>Added</h3>
<ul>
<li>Add support for excluding data from clipboard history on Linux.</li>
<li><code>arboard</code>, in debug builds, now attempts to call out
clipboard lifetime mishandling.
<ul>
<li>This is a debugging feature, and as such has no absolute or promised
behavior.</li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The background thread in the X11 backend no longer exits on every
selection request failure.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Handled cases where using an unsupported Primary clipboard on
Wayland would return the wrong error.</li>
<li>Clearing the clipboard on Linux now behaves correctly when
interacting with other apps on the system.</li>
<li>Pasting text with an explicit locale ID on Windows now works as
intended.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/MrSmoer"><code>@​MrSmoer</code></a> made
their first contribution in <a
href="https://redirect.github.com/1Password/arboard/pull/155">1Password/arboard#155</a></li>
<li><a
href="https://github.com/crumblingstatue"><code>@​crumblingstatue</code></a>
made their first contribution in <a
href="https://redirect.github.com/1Password/arboard/pull/186">1Password/arboard#186</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/1Password/arboard/compare/v3.5.0...v3.6.0">https://github.com/1Password/arboard/compare/v3.5.0...v3.6.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/1Password/arboard/blob/master/CHANGELOG.md">arboard's
changelog</a>.</em></p>
<blockquote>
<h2>3.6.0 on 2025-06-27</h2>
<h3>Added</h3>
<ul>
<li>Add support for excluding data from clipboard history on Linux.</li>
<li><code>arboard</code>, in debug builds, now attempts to call out
clipboard lifetime mishandling.
<ul>
<li>This is a debugging feature, and as such has no absolute or promised
behavior.</li>
</ul>
</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The background thread in the X11 backend no longer exits on every
selection request failure.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Handled cases where using an unsupported Primary clipboard on
Wayland would return the wrong error.</li>
<li>Clearing the clipboard on Linux now behaves correctly when
interacting with other apps on the system.</li>
<li>Pasting text with an explicit locale ID on Windows now works as
intended.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4f9bff86dc"><code>4f9bff8</code></a>
Release 3.6.0</li>
<li><a
href="380d2a691b"><code>380d2a6</code></a>
Remove deprecated authors Cargo manifest field</li>
<li><a
href="68ea2074ac"><code>68ea207</code></a>
Resolve new Clippy lints</li>
<li><a
href="8f6bab7d48"><code>8f6bab7</code></a>
Add README section about Linux clipboard ownership</li>
<li><a
href="b704da3cea"><code>b704da3</code></a>
Add debug helper for too-early Linux clipboard dropping</li>
<li><a
href="1040043ca4"><code>1040043</code></a>
Reword README sections and elaborate on Linux support</li>
<li><a
href="5f80bc1ddf"><code>5f80bc1</code></a>
linux/x11: Don't stop worker thread if handling selection request fails
(<a
href="https://redirect.github.com/1Password/arboard/issues/186">#186</a>)</li>
<li><a
href="b1e6720c3e"><code>b1e6720</code></a>
Fix getting text on Windows when locale identifiers differ</li>
<li><a
href="6b0e47ac8a"><code>6b0e47a</code></a>
Reimplement Linux clipboard clearing with correct primitives</li>
<li><a
href="825026572a"><code>8250265</code></a>
Refactor Wayland error handling to better account for missing Primary
clipboard</li>
<li>Additional commits viewable in <a
href="https://github.com/1Password/arboard/compare/v3.5.0...v3.6.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=arboard&package-manager=cargo&previous-version=3.5.0&new-version=3.6.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>
2025-06-30 11:32:06 +00:00
dependabot[bot]
24bbf88688 build(deps): bump syn from 2.0.103 to 2.0.104 in /rust (#9719)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.103 to 2.0.104.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/syn/releases">syn's
releases</a>.</em></p>
<blockquote>
<h2>2.0.104</h2>
<ul>
<li>Disallow attributes on range expression (<a
href="https://redirect.github.com/dtolnay/syn/issues/1872">#1872</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2283a9852a"><code>2283a98</code></a>
Release 2.0.104</li>
<li><a
href="d745687fff"><code>d745687</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/1872">#1872</a>
from dtolnay/attrrange</li>
<li><a
href="350a4ab22d"><code>350a4ab</code></a>
Disallow attributes on range expression</li>
<li><a
href="da96f95362"><code>da96f95</code></a>
Add test of attributes on range</li>
<li><a
href="7a79818f44"><code>7a79818</code></a>
Update test suite to nightly-2025-06-19</li>
<li>See full diff in <a
href="https://github.com/dtolnay/syn/compare/2.0.103...2.0.104">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=syn&package-manager=cargo&previous-version=2.0.103&new-version=2.0.104)](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>
2025-06-30 11:31:56 +00:00
dependabot[bot]
84a1bc03e6 build(deps): bump test-strategy from 0.4.1 to 0.4.3 in /rust (#9718)
Bumps [test-strategy](https://github.com/frozenlib/test-strategy) from
0.4.1 to 0.4.3.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2816a09947"><code>2816a09</code></a>
Version 0.4.3.</li>
<li><a
href="f36275f3f8"><code>f36275f</code></a>
Clippy.</li>
<li><a
href="b45b00b214"><code>b45b00b</code></a>
Suppress <code>clippy::shadow_unrelated</code> warning in generated
code. (fix <a
href="https://redirect.github.com/frozenlib/test-strategy/issues/19">#19</a>)</li>
<li><a
href="bb9ef1bda5"><code>bb9ef1b</code></a>
Use <code>#![warn(clippy::shadow_unrelated)]</code> in tests.</li>
<li><a
href="58a9e9c5ad"><code>58a9e9c</code></a>
Version 0.4.2.</li>
<li><a
href="47172e723e"><code>47172e7</code></a>
Clippy.</li>
<li><a
href="c622d5faf4"><code>c622d5f</code></a>
Use edition 2021.</li>
<li><a
href="b397bbb466"><code>b397bbb</code></a>
Format.</li>
<li><a
href="75017c402d"><code>75017c4</code></a>
Resolve macro hygiene issue in Arbitrary. (fix <a
href="https://redirect.github.com/frozenlib/test-strategy/issues/18">#18</a>)</li>
<li><a
href="1822090c2f"><code>1822090</code></a>
Update expected compile error message.</li>
<li>Additional commits viewable in <a
href="https://github.com/frozenlib/test-strategy/compare/v0.4.1...v0.4.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=test-strategy&package-manager=cargo&previous-version=0.4.1&new-version=0.4.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 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>
2025-06-30 11:29:47 +00:00
dependabot[bot]
93c88f7624 build(deps): bump uniffi from 0.29.2 to 0.29.3 in /rust (#9717)
Bumps [uniffi](https://github.com/mozilla/uniffi-rs) from 0.29.2 to
0.29.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/mozilla/uniffi-rs/blob/main/CHANGELOG.md">uniffi's
changelog</a>.</em></p>
<blockquote>
<h2>v0.29.3 (backend crates: v0.29.3) - (<em>2025-06-06</em>)</h2>
<h3>What's new?</h3>
<ul>
<li>HashMaps in UDL now support a default value with an empty map (<a
href="https://redirect.github.com/mozilla/uniffi-rs/pull/2539">#2539</a>).</li>
</ul>
<p><a
href="https://github.com/mozilla/uniffi-rs/compare/v0.29.2...v0.29.3">All
changes in v0.29.3</a>.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8ece6a7211"><code>8ece6a7</code></a>
chore: Release</li>
<li><a
href="b12e09dc26"><code>b12e09d</code></a>
chore: Release</li>
<li><a
href="9aa167459b"><code>9aa1674</code></a>
Merge remote-tracking branch 'upstream/main' into release-v0.29.x</li>
<li><a
href="89a49b0504"><code>89a49b0</code></a>
Merge pull request <a
href="https://redirect.github.com/mozilla/uniffi-rs/issues/2559">#2559</a>
from mozilla/uniffi-309-unique-trait-interfaces</li>
<li><a
href="eb8eb00be5"><code>eb8eb00</code></a>
UNIFFI-309 Make callback interfaces unique</li>
<li><a
href="c9a59448e3"><code>c9a5944</code></a>
Internal docs for Rust/callback interface calls</li>
<li><a
href="a8ef084051"><code>a8ef084</code></a>
General pipeline updates</li>
<li><a
href="f04409aec5"><code>f04409a</code></a>
Merge pull request <a
href="https://redirect.github.com/mozilla/uniffi-rs/issues/2554">#2554</a>
from mozilla/groovecoder-patch-1</li>
<li><a
href="dc02a0c739"><code>dc02a0c</code></a>
Explicitly catch kotlin.Exception. (<a
href="https://redirect.github.com/mozilla/uniffi-rs/issues/2544">#2544</a>)</li>
<li><a
href="08aa589918"><code>08aa589</code></a>
fix typo in custom_types.md</li>
<li>Additional commits viewable in <a
href="https://github.com/mozilla/uniffi-rs/compare/v0.29.2...v0.29.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uniffi&package-manager=cargo&previous-version=0.29.2&new-version=0.29.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 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>
2025-06-30 11:26:53 +00:00
Thomas Eizinger
daf05b8c79 fix(windows): ignore network changes from irrelevant networks (#9696)
In order to detect network changes on Windows, we implement the
`INetworkEvents` callback interface. This callback notifies us every
time the connectivity of a certain network changes.

Performing a network reset in connlib on any of these changes hurts the
user experience as Firezone is booting because it takes a while for this
to settle. Firezone itself is making changes to the network so several
of these change events happen _because_ Firezone is starting.

The documentation from Microsoft on what possible values the `NameType`
attribute can have is pretty thin but I did manage to find the following
values on the Internet:

- `6`: Wired network
- `71`: Wireless network
- `243`: Broadband network

We assume that the user is connected to the Internet through one of
these so we ignore network changes on all other networks.

An alternative approach to reducing the number of false-positive change
events would be to react to a narrower list of change events. I
discarded this approach because it wasn't clear to me, which of the
event types [0] would matter to us and when Windows emits them. I think
in order to effectively react to those, we'd have to do more fine
granular tracking of which state a network is in and e.g. only trigger a
reset if we move from "Disconnected" to e.g. "Subnet connectivity".
Windows also differentiates between local, subnet and Internet
connectivity, yet in my testing, I've never observed the "Internet"
connectivity being emitted.

Hence, it is deemed more robust to just filter out networks based on
their type. Firezone itself is of type 53 and is therefore automatically
filtered out as well. The risk here is that we don't react to
connectivity changes of a network that a customer is relying on.
Unfortunately, I don't think there is a better way to find this out
other than shipping this change and waiting for reports.

[0]:
https://learn.microsoft.com/en-us/windows/win32/api/netlistmgr/ne-netlistmgr-nlm_connectivity#constants

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
2025-06-30 08:52:00 +00:00
Jamil
699739deae fix(docs): use sha256sum over sha256 (#9690)
`sha256` isn't found by default on some machines.
2025-06-27 20:08:41 +00:00
Thomas Eizinger
8cfc7ad865 chore(snownet): add more logging for connections (#9695)
In a recent release, `str0m` downgraded all INFO logs to DEBUG. Whilst
generally appreciated, it means we don't have a lot of visibility
anymore into which candidates are being exchanged and what the ICE
credentials of the connections are.

We re-add this information to our existing logs when creating and
updating connections.
2025-06-27 18:11:45 +00:00
Thomas Eizinger
84e84134f8 chore(gui-client): refresh telemetry config in service (#9688)
This will allow the client to dynamically switch between sending vs
not-sending logs to Sentry.io without the user having to sign-in or out.
2025-06-27 15:44:58 +00:00
dependabot[bot]
2715e25f2f build(deps): bump proptest from 1.6.0 to 1.7.0 in /rust (#9482)
Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.6.0 to
1.7.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/proptest-rs/proptest/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=proptest&package-manager=cargo&previous-version=1.6.0&new-version=1.7.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>
2025-06-27 05:58:19 +00:00
Thomas Eizinger
2eedc23b82 chore(snownet): embed more context in WireGuard errors (#9687) 2025-06-26 15:49:07 +00:00
Thomas Eizinger
46931e0a68 chore(connlib): display WireGuardError using fmt::Display (#9686)
We've since added an `fmt::Display` implementation for these errors in
our `boringtun` fork so we can make use of it in our error
implementation.
2025-06-26 14:47:36 +00:00
Thomas Eizinger
5f38ccaeab feat(gateway): free TCP NAT bindings on RSTs (#9682)
Whenever we see a TCP packet with the RST bit set, we clear the current
NAT binding and move it to the `expired` list.
2025-06-26 14:20:01 +00:00
Thomas Eizinger
6fc2ebe576 chore(gateway): log on startup (#9684)
As with some of our other applications, it is useful to know when they
restart and which version is running. Adding a log on INFO on startup
solves this.
2025-06-26 13:59:09 +00:00
Thomas Eizinger
eddc4b95fb docs(connlib): explain why DNS resource NAT needs L4 component (#9675) 2025-06-25 20:26:07 +00:00
Thomas Eizinger
f435510dab fix(connlib): wait for room join before sending messages (#9656)
To avoid race conditions, we wait for all room joins on the WebSocket to
be successful before sending any messages to the portal. This requires
us to split room join messages from other messages so we can still send
them separately.

Resolves: #9647
2025-06-25 17:34:53 +00:00
Thomas Eizinger
bf03e13cf0 feat(gateway): vary DNS resource NAT TTL by protocol (#9655)
Instead of a 1 minute TTL for all connections, we vary the TTL based on
the protocol being used. For TCP, that is 2 hours. For UDP and ICMP, we
use 2 minutes.

Resolves: #9645
2025-06-25 17:24:40 +00:00
Thomas Eizinger
d5be185ae4 chore(rust): remove telemetry spans and events (#9634)
Originally, we introduced these to gather some data from logs / warnings
that we considered to be too spammy. We've since merged a
burst-protection that will at most submit the same event once every 5
minutes.

The data from the telemetry spans themselves have not been used at all.
2025-06-25 17:15:57 +00:00
Thomas Eizinger
6972d4d62a test(windows): sleep before asserting on keyring (#9670)
I suspect that the new Windows runners are "too fast" and we hit a race
condition in the use of the keyring on Windows which causes failing CI
jobs. The attempt to fix this is to sleep for 1 seconds before every
assert in the test.
2025-06-25 17:05:30 +00:00
Thomas Eizinger
3b972643b1 feat(rust): stream logs to Sentry when enabled in PostHog (#9635)
Sentry has a new "Logs" feature where we can stream logs directly to
Sentry. Doing this for all Clients and Gateways would be way too much
data to collect though.

In order to aid debugging from customer installations, we add a
PostHog-managed feature flag that - if set to `true` - enables the
streaming of logs to Sentry. This feature flag is evaluated every time
the telemetry context is initialised:

- For all FFI usages of connlib, this happens every time a new session
is created.
- For the Windows/Linux Tunnel service, this also happens every time we
create a new session.
- For the Headless Client and Gateway, it happens on startup and
afterwards, every minute. The feature-flag context itself is only
checked every 5 minutes though so it might take up to 5 minutes before
this takes effect.

The default value - like all feature flags - is `false`. Therefore, if
there is any issue with the PostHog service, we will fallback to the
previous behaviour where logs are simply stored locally.

Resolves: #9600
2025-06-25 16:14:14 +00:00
Jamil
b68d037ef4 fix(deps): remove unused android-client-ffi dep (#9662)
fixes
https://github.com/firezone/firezone/actions/runs/15859533881/job/44713030395
2025-06-24 21:13:53 +00:00
Thomas Eizinger
4be73da21c fix(gateway): reply with cookie when rate limit is hit (#9657)
WireGuard implements a rate-limit mechanism when the number of handshake
initiations increases a certain limit. This is important because
handshakes involve asymmetric cryptography and are cryptographically
expensive. To prevent DoS attacks where other peers repeatedly ask for
new handshakes, the rate limiter implements a cookie mechanism where -
when under load - the remote peer needs to include a given cookie in new
handshakes. This cookie is tied to the peer's IP address to prevent it
from being reused by other peers.

Up until now, we have not been passing the sender's IP address to
`boringtun` and therefore, the only option when the rate limit was hit
was to error with `UnderLoad`.

By passing the source IP of the packet, `boringtun` can engage in the
cookie-reply mechanism and therefore avoid the `UnderLoad` error.

Resolves: #9643
2025-06-24 11:33:38 +00:00
Thomas Eizinger
91edd11a47 feat(gateway): send $identify event with account-slug (#9658)
When we receive the `account_slug` from the portal, the Gateway now
sends a `$identify` event to PostHog. This will allow us to target
Gateways with feature-flags based on the account they are connected to.
2025-06-24 11:31:56 +00:00
Thomas Eizinger
d376a122e4 feat(telemetry): send account_slug to PostHog (#9636)
In order to more easily target customers with certain feature flags, we
include the `account_slug` in the `$identify` event to PostHog. This
will allow us to create Cohorts in PostHog and enable / disable feature
flags for all installations of Firezone for a particular customer.
2025-06-24 09:00:24 +00:00
Thomas Eizinger
3c0e866e77 feat(connlib): listen on 52625 by default (#9593)
Presently, `connlib` always just lets the OS pick a random port for our
UDP socket. This works well in many cases but has the downside that IF
network admins would like to aid in the process of establishing direct
connections, they cannot open a specific port because it is always
random.

It doesn't cost us anything to try and bind to a particular port (here
52625) and fallback to a random one if something is listening there.

The port 52625 was chosen because:

- It is within the ephemeral port range and will therefore never be
registered to anything else.
- It is an palindrome and therefore easy to remember.
- When typing FIRE on a phone keypad, it you get the numbers 3473. 52625
is the port at the offset 3473 from the ephemeral port range.

In order for this port to be useful in establishing direct connections,
we generate optimistic candidates based on existing remote candidates by
combining the IP of all server-reflexive candidates with the port of all
host candidates.

This patch deliberately does not publicly announce this feature in the
docs or the changelog so we can first gather experience with it in our
own test environment.

Resolves: #9559
2025-06-24 08:41:08 +00:00
Thomas Eizinger
a91dda139f feat(connlib): only conditionally hash firezone ID (#9633)
A bit of legacy that we have inherited around our Firezone ID is that
the ID stored on the user's device is sha'd before being passed to the
portal as the "external ID". This makes it difficult to correlate IDs in
Sentry and PostHog with the data we have in the portal. For Sentry and
PostHog, we submit the raw UUID stored on the user's device.

As a first step in overcoming this, we embed an "external ID" in those
services as well IF the provided Firezone ID is a valid UUID. This will
allow us to immediately correlate those events.

As a second step, we automatically generate all new Firezone IDs for the
Windows and Linux Client as `hex(sha256(uuid))`. These won't parse as
valid UUIDs and therefore will be submitted as is to the portal.

As a third step, we update all documentation around generating Firezone
IDs to use `uuidgen | sha256` instead of just `uuidgen`. This is
effectively the equivalent of (2) but for the Headless Client and
Gateway where the Firezone ID can be configured via environment
variables.

Resolves: #9382

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2025-06-24 07:05:48 +00:00
Thomas Eizinger
686918f1d1 chore(rust): bump str0m (#9591)
The latest `main` of str0m undoes a breaking change in the constructor
of `Candidate::relayed` by flipping the parameters back. This will make
it easier to upgrade to the latest release once it is out.
2025-06-24 06:57:55 +00:00
Thomas Eizinger
1bd3d2a382 chore(gateway): remove NAT64/46 module (#9626)
This has been disabled for several releases now and is not causing any
problems in production. We can therefore safely remove it.

It is about time we do this because our tests are actually still testing
the variant without the feature flag and therefore deviate from what we
do in production. We therefore have to convert the tests as well. Doing
so uncovered a minor problem in our ICMP error parsing code: We
attempted to parse the payload of an ICMP error as a fully-valid layer 4
header (e.g. TCP header or UDP header). However, per the RFC a node only
needs to embed the first 8 bytes of the original packet in an ICMPv4
error. That is not enough to parse a valid TCP header as those are at
least 20 bytes.

I don't expect this to be a huge problem in production right now though.
We only use this code to parse ICMP errors arriving on the Gateway and I
_think_ most devices actually include more than 8 bytes. This only
surfaced because we are very strict with only embedding exactly 8 bytes
when we generate an ICMP error.

Additionally, we change our ICMP errors to be sent from the resource IP
rather than the Gateway's TUN device. Given that we perform NAT on these
IPs anyway, I think this can still be argued to be RFC conform. The
_proxy_ IP which we are trying to contact can be reached but it cannot
be routed further. Therefore the destination is unreachable, yet the
source of this error is the proxy IP itself. I think this is actually
more correct than sending the packets from the Gateway's TUN device
because the TUN device itself is not a routing hop per-se: its IP won't
ever show up in the routing path.
2025-06-24 06:48:30 +00:00
Thomas Eizinger
950afd9b2d chore(gateway): set account-slug in telemetry context (#9545)
This PR adds an optional field `account_slug` to the Gateway's init
message. If populated, we will use this field to set the account-slug in
the telemetry context. This will allow us to know, which customers a
particular Sentry issue is related to.
2025-06-23 18:52:39 +00:00
Thomas Eizinger
7a344836a2 fix(rust): use rust-lld linker for MSVC (#9641)
The latest VisualStudio version shipped a bug in the MSVC linker that
cannot handle symbols above a certain size. Switching to the Rust linker
fixes this issue.

Related: https://github.com/rust-lang/rust/issues/141626
2025-06-24 01:55:36 +10:00