Commit Graph

7549 Commits

Author SHA1 Message Date
Thomas Eizinger
43db1e63e2 chore(telemetry): rate limit identical events to 1 per 5min (#9551)
It is in the nature of our application that errors may occur in rapid
succession if anything in the packet processing path fails. Most of the
time, these repeated errors don't add any additional information so
reporting one of them to Sentry is more than enough.

To achieve this, we add a `before_send` callback that utilizes a
concurrent cache with an upper bound of 10000 items and a TTL of 5
minutes. In other words, if we have submitted an event to Sentry that
had the exact same message in the last 5 minutes, we will not send it.

Internally, `moka` uses a concurrent hash map and therefore, the key is
hashed and not actually stored. Hash codes are u64, meaning the memory
footprint of this cache is only ~ 64kb (not accounting for constant
overhead of the cache internals).
2025-06-17 16:48:48 +00:00
Thomas Eizinger
cc50d58d8c chore(client,gateway): log portal connection hiccups on INFO (#9557)
These don't happen very often so are safe to log on INFO. That is the
default log level and it is useful to see, why we are re-connecting to
the portal.
2025-06-17 14:01:34 +00:00
Jamil
9701cfca0f chore: publish gui 1.5.3 (#9547) 2025-06-17 10:04:04 +00:00
Thomas Eizinger
a06f270c7d chore(apple): un-format generated code (#9549)
It appears that the code generation in our `build.rs` generates the code
with different formatting and this therefore constantly shows up as
untracked changes in my editor.
2025-06-16 20:06:36 +00:00
dependabot[bot]
3ef9b4334e build(deps): bump libc from 0.2.172 to 0.2.173 in /rust (#9543)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.172 to 0.2.173.
<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.173</h2>
<h3>Added</h3>
<ul>
<li>AIX: Add an AIX triple to Cargo.toml for doc (<a
href="https://redirect.github.com/rust-lang/libc/pull/4475">#4475</a>)</li>
<li>FreeBSD: Add the <code>SO_SPLICE</code> socket option support for
FreeBSD &gt;= 14.2 (<a
href="https://redirect.github.com/rust-lang/libc/pull/4451">#4451</a>)</li>
<li>Linux GNU: Prepare for supporting <code>_TIME_BITS=64</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4433">#4433</a>)</li>
<li>Linux: Add constant PACKET_IGNORE_OUTGOING (<a
href="https://redirect.github.com/rust-lang/libc/pull/4319">#4319</a>)</li>
<li>Linux: Add constants and types for <code>nsfs</code> ioctls (<a
href="https://redirect.github.com/rust-lang/libc/pull/4436">#4436</a>)</li>
<li>Linux: Add constants for Memory-Deny-Write-Execute
<code>prctls</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4400">#4400</a>)</li>
<li>Linux: Add constants from <code>linux/cn_proc.h</code> and
<code>linux/connector.h</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4434">#4434</a>)</li>
<li>Linux: Add new flags for <code>pwritev2</code> and
<code>preadv2</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4452">#4452</a>)</li>
<li>Linux: Add pid_type enum values (<a
href="https://redirect.github.com/rust-lang/libc/pull/4403">#4403</a>)</li>
<li>Linux: Update pidfd constants and types (Linux 6.9-6.15) (<a
href="https://redirect.github.com/rust-lang/libc/pull/4402">#4402</a>)</li>
<li>Loongarch64 musl: Define the <code>MADV_SOFT_OFFLINE</code> constant
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4448">#4448</a>)</li>
<li>Musl: Add new fields since 1.2.0/1.2.2 to <code>struct
tcp_info</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
<li>Musl: Prepare for supporting v1.2.3 (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
<li>NuttX: Add <code>arc4random</code> and <code>arc4random_buf</code>
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4464">#4464</a>)</li>
<li>RISC-V Musl: Add <code>MADV_SOFT_OFFLINE</code> definition (<a
href="https://redirect.github.com/rust-lang/libc/pull/4447">#4447</a>)</li>
<li>Redox: Define SCM_RIGHTS (<a
href="https://redirect.github.com/rust-lang/libc/pull/4440">#4440</a>)</li>
<li>VxWorks: Add missing UTIME defines and TASK_RENAME_LENGTH (<a
href="https://redirect.github.com/rust-lang/libc/pull/4407">#4407</a>)</li>
<li>Windows: Add more <code>time.h</code> functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/4427">#4427</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Redox: Update <code>SA_</code> constants. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4426">#4426</a>)</li>
<li>Redox: make <code>CMSG_ALIGN</code>, <code>CMSG_LEN</code>, and
<code>CMSG_SPACE</code> const functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/4441">#4441</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>AIX: Enable libc-test and fix definitions/declarations. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4450">#4450</a>)</li>
<li>Emscripten: Fix querying emcc on windows (use emcc.bat) (<a
href="https://redirect.github.com/rust-lang/libc/pull/4248">#4248</a>)</li>
<li>Hurd: Fix build from missing <code>fpos_t</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4472">#4472</a>)</li>
<li>Loongarch64 Musl: Fix the <code>struct ipc_perm</code> bindings (<a
href="https://redirect.github.com/rust-lang/libc/pull/4384">#4384</a>)</li>
<li>Musl: Fix the <code>O_LARGEFILE</code> constant value. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/blob/0.2.173/CHANGELOG.md">libc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/libc/compare/0.2.172...0.2.173">0.2.173</a>
- 2025-06-09</h2>
<h3>Added</h3>
<ul>
<li>AIX: Add an AIX triple to Cargo.toml for doc (<a
href="https://redirect.github.com/rust-lang/libc/pull/4475">#4475</a>)</li>
<li>FreeBSD: Add the <code>SO_SPLICE</code> socket option support for
FreeBSD &gt;= 14.2 (<a
href="https://redirect.github.com/rust-lang/libc/pull/4451">#4451</a>)</li>
<li>Linux GNU: Prepare for supporting <code>_TIME_BITS=64</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4433">#4433</a>)</li>
<li>Linux: Add constant PACKET_IGNORE_OUTGOING (<a
href="https://redirect.github.com/rust-lang/libc/pull/4319">#4319</a>)</li>
<li>Linux: Add constants and types for <code>nsfs</code> ioctls (<a
href="https://redirect.github.com/rust-lang/libc/pull/4436">#4436</a>)</li>
<li>Linux: Add constants for Memory-Deny-Write-Execute
<code>prctls</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4400">#4400</a>)</li>
<li>Linux: Add constants from <code>linux/cn_proc.h</code> and
<code>linux/connector.h</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4434">#4434</a>)</li>
<li>Linux: Add new flags for <code>pwritev2</code> and
<code>preadv2</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4452">#4452</a>)</li>
<li>Linux: Add pid_type enum values (<a
href="https://redirect.github.com/rust-lang/libc/pull/4403">#4403</a>)</li>
<li>Linux: Update pidfd constants and types (Linux 6.9-6.15) (<a
href="https://redirect.github.com/rust-lang/libc/pull/4402">#4402</a>)</li>
<li>Loongarch64 musl: Define the <code>MADV_SOFT_OFFLINE</code> constant
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4448">#4448</a>)</li>
<li>Musl: Add new fields since 1.2.0/1.2.2 to <code>struct
tcp_info</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
<li>Musl: Prepare for supporting v1.2.3 (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
<li>NuttX: Add <code>arc4random</code> and <code>arc4random_buf</code>
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4464">#4464</a>)</li>
<li>RISC-V Musl: Add <code>MADV_SOFT_OFFLINE</code> definition (<a
href="https://redirect.github.com/rust-lang/libc/pull/4447">#4447</a>)</li>
<li>Redox: Define SCM_RIGHTS (<a
href="https://redirect.github.com/rust-lang/libc/pull/4440">#4440</a>)</li>
<li>VxWorks: Add missing UTIME defines and TASK_RENAME_LENGTH (<a
href="https://redirect.github.com/rust-lang/libc/pull/4407">#4407</a>)</li>
<li>Windows: Add more <code>time.h</code> functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/4427">#4427</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Redox: Update <code>SA_</code> constants. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4426">#4426</a>)</li>
<li>Redox: make <code>CMSG_ALIGN</code>, <code>CMSG_LEN</code>, and
<code>CMSG_SPACE</code> const functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/4441">#4441</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>AIX: Enable libc-test and fix definitions/declarations. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4450">#4450</a>)</li>
<li>Emscripten: Fix querying emcc on windows (use emcc.bat) (<a
href="https://redirect.github.com/rust-lang/libc/pull/4248">#4248</a>)</li>
<li>Hurd: Fix build from missing <code>fpos_t</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4472">#4472</a>)</li>
<li>Loongarch64 Musl: Fix the <code>struct ipc_perm</code> bindings (<a
href="https://redirect.github.com/rust-lang/libc/pull/4384">#4384</a>)</li>
<li>Musl: Fix the <code>O_LARGEFILE</code> constant value. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9288ec0123"><code>9288ec0</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/4486">#4486</a>
from tgross35/fix-no-publish</li>
<li><a
href="6787debbcf"><code>6787deb</code></a>
Fix publishing on the <code>libc-0.2</code> branch</li>
<li><a
href="1c5b5538c8"><code>1c5b553</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/4481">#4481</a>
from tgross35/release</li>
<li><a
href="2d0dfd33ba"><code>2d0dfd3</code></a>
chore: release libc 0.2.173</li>
<li><a
href="92347ec8c9"><code>92347ec</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/4476">#4476</a>
from tgross35/backport-scotch-bonnet</li>
<li><a
href="1a418edf7c"><code>1a418ed</code></a>
lints: Remove <code>allow(dead_code)</code></li>
<li><a
href="7be1a7a7d8"><code>7be1a7a</code></a>
lints: Remove <code>allow(redundant_semicolons)</code></li>
<li><a
href="53301c2052"><code>53301c2</code></a>
lints: Warn rather than deny by default</li>
<li><a
href="6595c614b4"><code>6595c61</code></a>
Add AIX triple to Cargo.toml for doc.</li>
<li><a
href="600d8adc21"><code>600d8ad</code></a>
Add ctest-next stub and expected dependencies</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/libc/compare/0.2.172...0.2.173">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.172&new-version=0.2.173)](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-16 19:18:00 +00:00
dependabot[bot]
5b70e2a0d1 build(deps): bump reqwest from 0.12.19 to 0.12.20 in /rust (#9540)
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.12.19 to
0.12.20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/seanmonstar/reqwest/releases">reqwest's
releases</a>.</em></p>
<blockquote>
<h2>v0.12.20</h2>
<h2>Highlights</h2>
<ul>
<li>Add <code>ClientBuilder::tcp_user_timeout(Duration)</code> option to
set <code>TCP_USER_TIMEOUT</code>.</li>
<li>Fix proxy headers only using the first matched proxy.</li>
<li>(wasm) Fix re-adding <code>Error::is_status()</code>.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(client): apply authorization header to first matching proxy only
by <a href="https://github.com/0x676e67"><code>@​0x676e67</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2714">seanmonstar/reqwest#2714</a></li>
<li>wasm: re-add Error::is_status() by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2720">seanmonstar/reqwest#2720</a></li>
<li>properly match error variants in test by <a
href="https://github.com/Ruben2424"><code>@​Ruben2424</code></a> in <a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2721">seanmonstar/reqwest#2721</a></li>
<li>refactor: reduce size of Pending request future by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2725">seanmonstar/reqwest#2725</a></li>
<li>feat: add tcp_user_timeout builder option by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2724">seanmonstar/reqwest#2724</a></li>
<li>refactor: use hyper-util Socks connectors by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2726">seanmonstar/reqwest#2726</a></li>
<li>Remove some unused dependencies by <a
href="https://github.com/DaniPopes"><code>@​DaniPopes</code></a> in <a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2716">seanmonstar/reqwest#2716</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/DaniPopes"><code>@​DaniPopes</code></a>
made their first contribution in <a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2716">seanmonstar/reqwest#2716</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/seanmonstar/reqwest/compare/v0.12.19...v0.12.20">https://github.com/seanmonstar/reqwest/compare/v0.12.19...v0.12.20</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md">reqwest's
changelog</a>.</em></p>
<blockquote>
<h2>v0.12.20</h2>
<ul>
<li>Add <code>ClientBuilder::tcp_user_timeout(Duration)</code> option to
set <code>TCP_USER_TIMEOUT</code>.</li>
<li>Fix proxy headers only using the first matched proxy.</li>
<li>(wasm) Fix re-adding <code>Error::is_status()</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="099ae80e87"><code>099ae80</code></a>
v0.12.20</li>
<li><a
href="4bccf41060"><code>4bccf41</code></a>
chore: remove some unused dependencies (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2716">#2716</a>)</li>
<li><a
href="92487709d6"><code>9248770</code></a>
refactor: use hyper-util Socks connectors (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2726">#2726</a>)</li>
<li><a
href="334837c1ff"><code>334837c</code></a>
feat: add tcp_user_timeout builder option (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2724">#2724</a>)</li>
<li><a
href="13487fb602"><code>13487fb</code></a>
refactor: reduce size of Pending request future (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2725">#2725</a>)</li>
<li><a
href="a26879dfef"><code>a26879d</code></a>
tests: properly match http3 error variants (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2721">#2721</a>)</li>
<li><a
href="65102c99ab"><code>65102c9</code></a>
wasm: re-add Error::is_status() (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2720">#2720</a>)</li>
<li><a
href="f94c5cd556"><code>f94c5cd</code></a>
fix(proxy): apply headers to first matching proxy only (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2714">#2714</a>)</li>
<li>See full diff in <a
href="https://github.com/seanmonstar/reqwest/compare/v0.12.19...v0.12.20">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=reqwest&package-manager=cargo&previous-version=0.12.19&new-version=0.12.20)](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-16 19:16:32 +00:00
dependabot[bot]
42854ef148 build(deps): bump windows from 0.61.1 to 0.61.3 in /rust in the windows group (#9541)
Bumps the windows group in /rust with 1 update:
[windows](https://github.com/microsoft/windows-rs).

Updates `windows` from 0.61.1 to 0.61.3
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/microsoft/windows-rs/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=windows&package-manager=cargo&previous-version=0.61.1&new-version=0.61.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 <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-06-16 19:16:22 +00:00
dependabot[bot]
7b2fb13067 build(deps): bump syn from 2.0.101 to 2.0.103 in /rust (#9542)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.101 to 2.0.103.
<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.103</h2>
<ul>
<li>Insert parentheses around binary operation with attribute (<a
href="https://redirect.github.com/dtolnay/syn/issues/1871">#1871</a>)</li>
</ul>
<h2>2.0.102</h2>
<ul>
<li>Fix printing of nested Expr::Index and Expr::Tuple in non-full mode
(<a
href="https://redirect.github.com/dtolnay/syn/issues/1869">#1869</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="85d427679f"><code>85d4276</code></a>
Release 2.0.103</li>
<li><a
href="6f7b0f39b3"><code>6f7b0f3</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/1871">#1871</a>
from dtolnay/binaryattr</li>
<li><a
href="89f88facd1"><code>89f88fa</code></a>
Correctly track bailouts in parenthesized binary expressions</li>
<li><a
href="0e07372e40"><code>0e07372</code></a>
Add binary operator attribute bailout test</li>
<li><a
href="ca8d876bde"><code>ca8d876</code></a>
Insert parentheses around binary operation with attribute</li>
<li><a
href="5be0f7121f"><code>5be0f71</code></a>
Add binary operator attribute tests</li>
<li><a
href="026bb3cf32"><code>026bb3c</code></a>
Discard paren attrs in unparenthesize test</li>
<li><a
href="217dd626aa"><code>217dd62</code></a>
Preserve attributes of Expr::Paren in FlattenParens</li>
<li><a
href="ef977c1059"><code>ef977c1</code></a>
Update test suite to nightly-2025-06-11</li>
<li><a
href="b1cc55995d"><code>b1cc559</code></a>
Release 2.0.102</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/syn/compare/2.0.101...2.0.103">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.101&new-version=2.0.103)](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-16 19:16:18 +00:00
dependabot[bot]
e91e4fd936 build(deps): bump nix from 0.29.0 to 0.30.1 in /rust (#9268)
Bumps [nix](https://github.com/nix-rust/nix) from 0.29.0 to 0.30.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nix-rust/nix/blob/master/CHANGELOG.md">nix's
changelog</a>.</em></p>
<blockquote>
<h2>[0.30.1] - 2025-05-04</h2>
<h3>Fixed</h3>
<ul>
<li>doc.rs build
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2634">#2634</a>)</li>
</ul>
<h2>[0.30.0] - 2025-04-29</h2>
<h3>Added</h3>
<ul>
<li>Add socket option <code>IPV6_PKTINFO</code> for BSDs/Linux/Android,
also
<code>IPV6_RECVPKTINFO</code> for DragonFlyBSD
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2113">#2113</a>)</li>
<li>Add <code>fcntl</code>'s <code>F_PREALLOCATE</code> constant for
Apple targets.
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2393">#2393</a>)</li>
<li>Improve support for extracting the TTL / Hop Limit from incoming
packets
and support for DSCP (ToS / Traffic Class).
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2425">#2425</a>)</li>
<li>Add socket option IP_TOS (nix::sys::socket::sockopt::IpTos)
IPV6_TCLASS
(nix::sys::socket::sockopt::Ipv6TClass) on Android/FreeBSD
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2464">#2464</a>)</li>
<li>Add <code>SeekData</code> and <code>SeekHole</code> to
<code>Whence</code> for hurd and apple targets
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2473">#2473</a>)</li>
<li>Add <code>From</code> trait implementation between
<code>SocketAddr</code> and <code>Sockaddr</code>,
<code>Sockaddr6</code> (<a
href="https://redirect.github.com/nix-rust/nix/pull/2474">#2474</a>)</li>
<li>Added wrappers for <code>posix_spawn</code> API
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2475">#2475</a>)</li>
<li>Add the support for Emscripten.
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2477">#2477</a>)</li>
<li>Add fcntl constant <code>F_RDADVISE</code> for Apple target
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2480">#2480</a>)</li>
<li>Add fcntl constant <code>F_RDAHEAD</code> for Apple target
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2482">#2482</a>)</li>
<li>Add <code>F_LOG2PHYS</code> and <code>F_LOG2PHYS_EXT</code> for
Apple target
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2483">#2483</a>)</li>
<li><code>MAP_SHARED_VALIDATE</code> was added for all linux targets.
&amp; <code>MAP_SYNC</code> was added
for linux with the exclusion of mips architecures, and uclibc
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2499">#2499</a>)</li>
<li>Add
<code>getregs()</code>/<code>getregset()</code>/<code>setregset()</code>
for Linux/musl/aarch64
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2502">#2502</a>)</li>
<li>Add FcntlArgs <code>F_TRANSFEREXTENTS</code> constant for Apple
targets
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2504">#2504</a>)</li>
<li>Add <code>MapFlags::MAP_STACK</code> in <code>sys::man</code> for
netbsd
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2526">#2526</a>)</li>
<li>Add support for <code>libc::LOCAL_PEERTOKEN</code> in
<code>getsockopt</code>.
(<a
href="https://redirect.github.com/nix-rust/nix/pull/2529">#2529</a>)</li>
<li>Add support for <code>syslog</code>, <code>openlog</code>,
<code>closelog</code> on all <code>unix</code>.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3cf9007216"><code>3cf9007</code></a>
chore: drop 0.30.1</li>
<li><a
href="2845ab9e4e"><code>2845ab9</code></a>
Compile sys::mman on Redox (<a
href="https://redirect.github.com/nix-rust/nix/issues/2637">#2637</a>)</li>
<li><a
href="fccb4abfc8"><code>fccb4ab</code></a>
Fix fuchsia target triple to unbreak docs.rs build (<a
href="https://redirect.github.com/nix-rust/nix/issues/2634">#2634</a>)</li>
<li><a
href="b834171547"><code>b834171</code></a>
ci: disable hurd (<a
href="https://redirect.github.com/nix-rust/nix/issues/2638">#2638</a>)</li>
<li><a
href="9c97e1df15"><code>9c97e1d</code></a>
Clippy cleanup: dangerous_implicit_autorefs and
uninlined_format_args</li>
<li><a
href="989291d5bf"><code>989291d</code></a>
chore: release 0.30.0</li>
<li><a
href="6a1c5b8d5b"><code>6a1c5b8</code></a>
Remove Copy from PollFd (<a
href="https://redirect.github.com/nix-rust/nix/issues/2631">#2631</a>)</li>
<li><a
href="eba0f41bff"><code>eba0f41</code></a>
chore: pin libc to 0.2.171 &amp; bump CI image (<a
href="https://redirect.github.com/nix-rust/nix/issues/2632">#2632</a>)</li>
<li><a
href="b561476e1d"><code>b561476</code></a>
socket::sockopt AttachReusePortCbpf for Linux addition. (<a
href="https://redirect.github.com/nix-rust/nix/issues/2621">#2621</a>)</li>
<li><a
href="684b79edb6"><code>684b79e</code></a>
Add sockopt::PeerPidfd (SO_PEERPIDFD) sockopt support to socket::sockopt
(<a
href="https://redirect.github.com/nix-rust/nix/issues/2620">#2620</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/nix-rust/nix/compare/v0.29.0...v0.30.1">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore 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>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2025-06-15 20:34:52 +00:00
Thomas Eizinger
01ad87b1c0 chore(apple): format swift code with formatter (#9535)
When working on the Swift codebase, I noticed that running the formatter
produced a massive diff. This PR re-formats the Swift code with `swift
format . --recursive --in-place` and adds a CI check to enforce it going
forward.

Resolves: #9534

---------

Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
2025-06-15 20:28:18 +00:00
Jamil
2a96102db4 refactor(gui-client): introduce custom ReactRouterSidebarItem (#9508)
This cleans up some changes left over from #9505 by using a custom
component.
2025-06-15 17:41:24 +00:00
Thomas Eizinger
3660f53150 fix(gui-client): remove bad hook dependencies (#9537)
The removed hook dependencies are invalid because the side-effect
specified in `useEffect` does in fact not depend on them. However, as a
result of these dependencies, the `useEffect` closure appears to run in
an end-less loop, constantly sending the `update_state` command to the
backend which in turn re-sends all state to the frontend, causing a
massive CPU and memory spike.

Resolves: #9519
2025-06-15 17:09:07 +00:00
Brian Manifold
25434c6898 fix(portal): update non-root layout to use main.css (#9533)
After updating the CSS config to use `main.css` in the portal the root
layout was updated, but there were a small number of one-off templates
that do not use the root layout and those pages were not updated with
the new `main.css` file. This commit updates those non-root templates.

Fixes #9532
2025-06-15 15:31:45 +00:00
Jamil
c6545fe853 refactor(portal): consolidate pubsub functions (#9529)
We issue broadcasts and subscribes in many places throughout the portal.
To help keep the cognitive overhead low, this PR consolidates all PubSub
functionality to the `Domain.PubSub` module.

This allows for:

- better maintainability
- see all of the topics we use at a glance
- consolidate repeated functionality (saved for a future PR)
- use the module hierarchy to define function names, which feels more
intuitive when reading and sets a convention

We also introduce a `Domain.Events.Hooks` behavior to ensure all hooks
comply with this simple contract, and we also introduce a convention to
standardize on topic names using the module hierarchy defined herein.

Lastly, we add convenience functions to the Presence modules to save a
bit of duplication and chance for errors.

This will make it much easier to maintain PubSub going forward.


Related: #9501
2025-06-15 04:30:57 +00:00
Jamil
62c3dd9370 fix(portal): don't add service accounts to everyone group (#9530)
In #9513 a bug was introduced that added all service accounts to the
Everyone group. This fixes that by ensuring the `insert_all` query only
cross joins where actor type is `:account_user, :account_admin_user`.

Staging data will be manually fixed after this goes in.

I briefly considered updating the delete clause of this query to "clean
things up" by removing any found service accounts but that is a bit too
defensive in my opinion - if there's no way a service account should
make it into this group, then we shouldn't have code to expect it. This
will all be going away in #8750 which should be much less brittle.
2025-06-14 15:20:32 +00:00
Jamil
cbe33cd108 refactor(portal): move policy events to WAL (#9521)
Moves all of the policy lifecycle events to be broadcasted from the WAL
consumer.

#### Test

- [x] Enable policy
- [x] Disable policy
- [x] Delete policy
- [x] Non-breaking change
- [x] Breaking change


Related: #6294

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2025-06-14 01:10:09 +00:00
Jamil
817eeff19f refactor(portal): simplify managed groups (#9513)
In many places throughout the portal codebase, we called a function
"update_dynamic_group_memberships/1" which recomputed all of the
dynamic/managed memberships for a particular account, and reapplied them
to each affected group.

Since the `has_many :memberships` relationship used `on_replace:
:delete`, this caused Ecto to delete _all_ the `Everyone` group
memberships, and reinsert them on each sync.

Since each membership change triggers a policy re-evaluation for all
policies to the affected actor
(`Policies.broadcast_access_events_for/3`), this in effect was causing a
massive amount of queries to be triggered upon each sync job as each
membership deletion and insertion triggered a lookup for all resources
available to that particular actor.

To fix this, we introduce the following changes:

- Remove `dynamic` group type. This will never be used as it will create
an immense amount of complexity for any organization trying to manage
groups this way
- Refactor `update_dynamic_group_memberships/1` to use a smarter query
that first gathers all the _needed_ changes and applies them within a
transaction using Ecto.Multi. Previously all memberships would be rolled
over unconditionally due to the `on_replace: :delete` option on the
relationship. Note that the option is still there, but we generally
don't set memberships on groups any longer unless editing the affected
group directly, where the everyone group doesn't apply.

Resolves: #8407 
Resolves: #8408
Related: #6294

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-13 18:55:37 +00:00
Jamil
5e3c240501 chore: publish gui 1.5.2 (#9516) 2025-06-12 17:16:04 +00:00
Jamil
5e146054f5 fix(ci): use fixed bash conditional (#9509)
This is preventing the relevant jobs from running, causing staging
deploys to fail.
2025-06-11 07:56:56 -07:00
Thomas Eizinger
60bdbb39cb refactor(gui-client): move change listeners to tunnel service (#8160)
At present, listening for DNS server change and network change events is
handled in the GUI client. Upon an event, a message is sent to the
tunnel service which then applies the new state to `connlib`.

We can avoid some of this boilerplate by moving these listeners to the
tunnel service as part of the handler. As a result, we get a few
improvements:

- We don't need to ignore these events if we don't have a session
because the lifetime of these listeners is tied to the IPC handler on
the service side.
- We need fewer IPC messages
- We can retry the connection directly from within the tunnel service in
case we have no Internet at the time of startup
- We can more easily model out the state machine of a connlib session in
the tunnel service
- On Linux, this means we no longer shell out to `resolvectl` from the
GUI process, unifying access to the "resolvers" from the tunnel service
- On Windows, we no longer need admin privileges on the GUI client for
optimized network-change detection. This now happens in the Tunnel
process which already runs as admin.

Resolves: #9465
2025-06-11 06:18:14 +00:00
Jamil
1295adc727 fix(gui-client): fix minor frontend issues in app window (#9505)
- removes `NavLink` in favor of using the `href` prop on `SidebarItem`.
This fixes vertical spacing between sidebar items (it was inconsistent)
and DOM structure issues caused by setting `NavLink` as a direct child
of `<SidebarItemGroup>`.
- adds `cursor-pointer` to all `<Button>`s
- adds `cursor-pointer` to the `<SidebarCollapse>`

### Before

<img width="1238" alt="Screenshot 2025-06-10 at 7 57 37 PM"
src="https://github.com/user-attachments/assets/2e5e66f2-d4c1-48b7-b81d-1803de2442fc"
/>


### After

<img width="1238" alt="Screenshot 2025-06-10 at 7 57 55 PM"
src="https://github.com/user-attachments/assets/aa676fc1-124a-4e33-859d-da8f3eaad211"
/>
2025-06-11 05:53:09 +00:00
Jamil
015d427ad2 fix(ci): don't require required-check to finish from itself (#9507)
When this workflow is called from `cd.yml`, its name is `ci /
required-check`, causing this match to fail and forever wait.
2025-06-11 03:48:48 +00:00
Jamil
e1ac9e4912 fix(rust): relax assertion on cloudflare tcp response (#9506)
In #9498, the Cloudflare response was updated to match what appears to
be a transient change on their end. It looks like this has changed
again, so to prevent this from breaking CI in the future we relax the
assertion.
2025-06-10 19:51:18 -07:00
Jamil
82ac72b9c0 chore(ci): show not completed required-checks jobs (#9503)
Seems we are still getting a hang on this workflow. Adding more output
to see which job is hanging.
2025-06-10 17:23:13 -07:00
Jamil
c31f51d138 refactor(portal): move resource events to WAL (#9406)
We move the resource events to the WAL system. Notably, we no longer
need `fetch_and_update_breakable` for resource updates, so a bit of
refactoring is included to update the call sites for those.

Additionally, we need to add a `Flow.expire_flows_for_resource_id/1`
function to expire flows from the WAL system. This is now being called
in the WAL event handler. To prevent this from blocking the WAL
consumer/broadcaster, we wrap it with a Task.async. These will be
cleaned up when the lookup table for access is implemented next.

Another thing to note is that we lose the `subject` when moving from
`Flows.expire_flows_for(%Resource{}, subject)` to
`Flows.expire_flows_for_resource_id(resource_id)` when a resource is
deleted or updated by an actor since we respond to this event in the WAL
where that data isn't available. However, we don't actually _use_ the
subject when expiring flows (other than authorize the initial resource
update), so this isn't an issue.

Related: #9501

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Brian Manifold <bmanifold@users.noreply.github.com>
2025-06-11 00:12:45 +00:00
Brian Manifold
d4c7b48754 refactor(portal): update asset config in portal (#9504)
Why:

* This commit brings our web app inline with how new Phoenix
applications manage and configure js/css/font assets. Along with that
this commit updates our Tailwind and esbuild tools.
2025-06-10 23:00:44 +00:00
Jamil
c76d884fde fix(ci): require all jobs on main branch runs (#9502)
- Adds a timeout to the required_checks workflow
- Expects all jobs to run, exiting the script early for main branch runs
- Adds `set -xe` so we catch script errors going forward

This CI run is running for over an hour, not sure which job it's waiting
on:
https://github.com/firezone/firezone/actions/runs/15565464294
2025-06-10 18:56:30 +00:00
Jamil
be446a3d75 fix(ci): fetch depth 20 for merge group CI runs (#9500)
When a CI job is running as part of a merge group, it's possible the
base ref is a few commits away if the merge queue has items in it. So we
update the fetch depth to 20.
2025-06-10 16:30:59 +00:00
dependabot[bot]
c3760e371c build(deps): bump androidx.security:security-crypto from 1.1.0-alpha07 to 1.1.0-beta01 in /kotlin/android (#9426)
Bumps androidx.security:security-crypto from 1.1.0-alpha07 to
1.1.0-beta01.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=androidx.security:security-crypto&package-manager=gradle&previous-version=1.1.0-alpha07&new-version=1.1.0-beta01)](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-10 16:13:22 +00:00
Brian Manifold
ec6107b967 chore(portal): Update Elixir README (#9496)
Why:

* The current README in the `/elixir` directory is a circular reference
that does not explain much. This commit updates the README to give the
basics of how to get started with Firezone Elixir development.
2025-06-10 14:36:37 +00:00
Thomas Eizinger
182a560091 fix(telemetry): don't log events for local and CI env (#9492)
Avoids spamming PostHog with events from our CI or other instances of
the docker-compose setup.
2025-06-10 14:34:20 +00:00
Thomas Eizinger
1fa345aa5e test(rust): adapt response from Cloudflare proxy (#9498)
It appears that Cloudflare changed the response that it is sending for
the 1.1.1.1 IP so we need to adapt our integration test for packet loops
in order to make CI pass.
2025-06-10 14:18:07 +00:00
Thomas Eizinger
a78b4a29f1 chore(android): update README instructions (#9497)
While setting up Android Studio on my Mac, I noticed that these
instructions are slightly out of date and can be improved.
2025-06-10 14:08:29 +00:00
Thomas Eizinger
dce7ffe4f0 fix(apple): drop Session in a new task (#9478)
Until we implement #3959 for the Apple client, we need to be careful
around how we de-initialise the Rust session. Callback-based designs are
difficult to get right across boundaries because they enable
re-entrances which then lead to runtime errors.

Specifically, freeing the session needs to cleanup the tokio runtime but
that is impossible if the callback is still executed from that exact
runtime. To workaround this, we need to free the session pointer from a
new task.

Moving to #3959 will solve this in a much more intuitive way because we
can ditch the callbacks and instead move to a stream of events that the
host app can consume.

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
2025-06-10 07:09:16 +00:00
Jamil
f58176a447 chore: remove docs writer (#9494)
This was added in an earlier era and will be just too cumbersome to
maintain going forward. We have OpenAPI docs which are more flexible.
2025-06-10 02:51:46 +00:00
Brian Manifold
6d425d5677 refactor(portal): add retry logic to Stripe API client (#9466)
Why:

* We've seen some Stripe API requests come back with 429 responses,
which likely could be retried and succeed. This commit adds some basic
retry logic to our Stripe API client.
2025-06-09 23:11:33 +00:00
Jamil
0e5e2296a8 chore(website): update wording for pricing plan (#9493)
This isn't strictly true - in most cases we actually do set this limit
and enforce it, which is what I think is the correct thing to do.

Related: #8668
2025-06-09 23:07:25 +00:00
Thomas Eizinger
4e99d00e77 ci: fix lychee errors (#9491)
It turns out that the link checker was failing because it is matching
those URLs via regex and that the `?` in the URL was interpreted as a
regex control character.
2025-06-09 20:12:37 +00:00
Thomas Eizinger
1747f8fdd5 ci: run Tauri builds if rust/gui-client changes (#9481)
We don't need to rebuild the Tauri clients every time we change Rust
code but we almost certainly want to rebuild them if we change any code
in the client itself so we can smoke test them.

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-09 14:40:07 +00:00
Thomas Eizinger
05c94278ea ci: ensure all jobs are successful (#9486)
When evaluating the status of all required checks, we currently only look at the very first one. This is error prone and may result in `required-check` to be marked as successful too early. Instead of iterating through the list of jobs we have scheduled, we now instead look at all jobs that are running as part of the CI run. The idea here is:

- Any job that got started need to complete (one way or another)
- If _any_ job fails, we fail the required check
- If all jobs complete without a single failure, we pass the check

This plays well with "skipped" jobs which we sometimes have as part of CI.
2025-06-09 13:49:24 +02:00
dependabot[bot]
5a04405212 build(deps): bump smallvec from 1.15.0 to 1.15.1 in /rust (#9483)
Bumps [smallvec](https://github.com/servo/rust-smallvec) from 1.15.0 to
1.15.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/servo/rust-smallvec/releases">smallvec's
releases</a>.</em></p>
<blockquote>
<h2>v1.15.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Shrink code produced by <code>smallvec![]</code>. by <a
href="https://github.com/nnethercote"><code>@​nnethercote</code></a> in
<a
href="https://redirect.github.com/servo/rust-smallvec/pull/386">servo/rust-smallvec#386</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/servo/rust-smallvec/compare/v1.15.0...v1.15.1">https://github.com/servo/rust-smallvec/compare/v1.15.0...v1.15.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d0f47a3ea9"><code>d0f47a3</code></a>
Version 1.15.1</li>
<li><a
href="d682405159"><code>d682405</code></a>
Shrink code produced by <code>smallvec![]</code>.</li>
<li>See full diff in <a
href="https://github.com/servo/rust-smallvec/compare/v1.15.0...v1.15.1">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore 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-09 10:41:33 +00:00
dependabot[bot]
c7a720957a build(deps): bump os_info from 3.11.0 to 3.12.0 in /rust (#9484)
Bumps [os_info](https://github.com/stanislav-tkach/os_info) from 3.11.0
to 3.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/stanislav-tkach/os_info/releases">os_info's
releases</a>.</em></p>
<blockquote>
<h2>os_info 3.12.0</h2>
<ul>
<li>
<p>Cygwin support has been added. (<a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/405">#405</a>)</p>
</li>
<li>
<p>macOS version detection has been updated to read the
<code>SystemVersion.plist</code> file. (<a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/406">#406</a>)</p>
</li>
<li>
<p>macOS bitness detection has been updated to avoid using the
<code>getconf</code> command. (<a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/407">#407</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/stanislav-tkach/os_info/blob/master/CHANGELOG.md">os_info's
changelog</a>.</em></p>
<blockquote>
<h2>[3.12.0] (2025-06-08)</h2>
<ul>
<li>
<p>Cygwin support has been added. (<a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/405">#405</a>)</p>
</li>
<li>
<p>macOS version detection has been updated to read the
<code>SystemVersion.plist</code>
file. (<a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/406">#406</a>)</p>
</li>
<li>
<p>macOS bitness detection has been updated to avoid using the
<code>getconf</code>
command. (<a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/407">#407</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="70a4d893aa"><code>70a4d89</code></a>
Merge pull request <a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/408">#408</a>
from stanislav-tkach/3-12</li>
<li><a
href="39c996cd1d"><code>39c996c</code></a>
Markdown</li>
<li><a
href="e8b5eab128"><code>e8b5eab</code></a>
Spellcheck</li>
<li><a
href="d224489609"><code>d224489</code></a>
Update changelog</li>
<li><a
href="3494e22877"><code>3494e22</code></a>
Release the 3.12 version</li>
<li><a
href="131b6aa56a"><code>131b6aa</code></a>
Merge pull request <a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/406">#406</a>
from davidkna/macos-version-from-file</li>
<li><a
href="c5fc908154"><code>c5fc908</code></a>
Merge pull request <a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/407">#407</a>
from davidkna/patch-1</li>
<li><a
href="eb8e02299a"><code>eb8e022</code></a>
Merge pull request <a
href="https://redirect.github.com/stanislav-tkach/os_info/issues/405">#405</a>
from Berrysoft/dev/cygwin</li>
<li><a
href="a317f52a67"><code>a317f52</code></a>
MacOS: Attempt to derive bitness from arch</li>
<li><a
href="260280e4fe"><code>260280e</code></a>
Use SystemVersion.plist for macOS ProductVersion</li>
<li>Additional commits viewable in <a
href="https://github.com/stanislav-tkach/os_info/compare/v3.11.0...v3.12.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=os_info&package-manager=cargo&previous-version=3.11.0&new-version=3.12.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-09 10:40:48 +00:00
Thomas Eizinger
ae4816d2a6 refactor(gui-client): reduce duplication for sending requests (#9476) 2025-06-09 10:37:23 +00:00
Thomas Eizinger
9210ed2a97 fix(gui-client): don't say "signed in" without a connlib session (#9477)
With the introduction of the "connect on start" configuration option, we
introduced a bug where the GUI client said "Signed in as ..." even
though we did not have a `connlib` session. The tray-menu handles this
state correctly and clicking sign out and sign in restores Firezone to a
functional state.

This disparity happened because we assumed that having a token means we
must have a session.

To fix this, we introduce a new `SessionViewModel` that combines the
state of the auth session and the `connlib` state. Only if we have both
do we infer that we are "signed in". This also requires us to introduce
an intermediary state where we are "loading". This is represented as a
spinner in the UI.

Last but not least, this also removes the automated hiding of the client
window. In a prior design, the only job of this window was to show the
"Sign in" button so it wasn't useful beyond clicking that. Now that we
show more things in this window, automatically hiding it might confuse
the user.

Here is what this new design looks like:

[Login
flow](https://github.com/user-attachments/assets/276e390b-4837-48e2-aaf1-eea007472816)

As a result of other improvements around "zero-click sign-in", the user
often doesn't even have to switch to the browser window because sign-in
happens in the background. Unfortunately, the tab still remains open but
that is outside of our control (at least on Linux).
2025-06-09 09:41:18 +00:00
Thomas Eizinger
04846c5b8a docs(website): add changelog entry (#9470) 2025-06-08 18:29:57 +00:00
Thomas Eizinger
0c7f06db03 ci: only run workflows for changed files (#9467)
This PR optimises our CI pipeline to only run workflows when certain
files change. To achieve this, we introduce a top-level `planner` job
that all other jobs primarily depend on. The `planner` job then computes
which other jobs to run and creates an output with a list of those.

Running only certain jobs is only the first half of the problem. The
second half is creating a dedicated job that we can mark as "required"
in GitHub. Without such a "required" check, the merge queue wouldn't
know, when a PR is good to be merged.

Jobs cannot have dynamic dependencies on other jobs. We therefore need
to emulate this by creating a polling loop that hits the GitHub API
every 10s and evaluates, whether all "required" jobs, i.e. the ones we
planned to run, have finished successfully.

---------

Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
2025-06-08 11:40:42 +00:00
Thomas Eizinger
490e9c1dde refactor(gui-client): tidy up app startup (#9468)
As part of investigating #9400, I refactored the startup code of the GUI
client to play around with the initialization order of the runtime and
other parts. After finding the root cause (fixed in #9469), I figured it
would still be nice to land these improvements.

This refactors the app startup:

- Only initialize what is absolutely necessary outside of `try_main`:
The runtime and the telemetry instance.
- Settings are loaded earlier
- Telemetry is initializer earlier
- Add a bootstrap logger that logs to stdout whilst we are booting
- Re-order some code inside `gui::run` to bundle the initialization of
Tauri into a single command chain

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-08 08:04:15 +00:00
Thomas Eizinger
e15dde6648 fix(gui-client): remove timeout from opening deep-link (#9475)
This timeout seems to be problematic as deep-links don't open with it at
all. This is a regression from #9445.
2025-06-07 20:00:24 +00:00
Thomas Eizinger
113f8fd0d7 chore: delete .gitmodules (#9473)
We no longer have any submodules so we can delete this file 🎉
2025-06-07 18:33:21 +00:00
Jamil
f937139e36 fix(docs): fix broken links (#9471)
Fixes #9464
2025-06-07 14:49:24 +00:00