Commit Graph

5269 Commits

Author SHA1 Message Date
Jamil
7cc68196dd test: Fix flaky time condition unit test due to overflow (#6250)
Fixes the flaky time condition unit test by always using midnight as the
end time range so that the `flow.expires_at` is never calculated across
a day boundary into the future.

Supersedes #6244
2024-08-10 18:30:31 +00:00
Andrew Dryga
00b93f6b82 feat(portal): Wildcard dns with backwards compatibility (#6214)
If a new resource is created that will use format not supported by
previous client versions we temporarily show a warning:
<img width="683" alt="Screenshot 2024-08-07 at 2 28 57 PM"
src="https://github.com/user-attachments/assets/bbfdfc96-0c4b-4226-93c5-bc2b5fdb9d30">

It will also be excluded from `resources` list for older clients (below
1.2).

---------

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
2024-08-10 18:25:24 +00:00
Thomas Eizinger
93d678aaea feat(relay): set OTEL metadata for metrics and traces (#6249)
I recently discovered that the metrics reporting to Google Cloud Metrics
for the relays is actually working. Unfortunately, they are all bucketed
together because we don't set the metadata correctly.

This PR aims to fix that be setting some useful default metadata for
traces and metrics and additionally, discoveres instance ID and name
from GCE metadata.

Related: #2033.
2024-08-10 16:32:01 +00:00
Thomas Eizinger
bed625a312 chore(rust): make logging more ergonomic (#6237)
Setting up a logger is something that pretty much every entrypoint needs
to do, be it a test, a shared library embedded in another app or a
standalone application. Thus, it makes sense to introduce a dedicated
crate that allows us to bundle all the things together, how we want to
do logging.

This allows us to introduce convenience functions like
`firezone_logging::test` which allow you to construct a logger for a
test as a one-liner.

Crucially though, introducing `firezone-logging` gives us a place to
store a default log directive that silences very noisy crates. When
looking into a problem, it is common to start by simply setting the
log-filter to `debug`. Without further action, this floods the output
with logs from crates like `netlink_proto` on Linux. It is very unlikely
that those are the logs that you want to see. Without a preset filter,
the only alternative here is to explicitly turn off the log filter for
`netlink_proto` by typing something like
`RUST_LOG=netlink_proto=off,debug`. Especially when debugging issues
with customers, this is annoying.

Log filters can be overridden, i.e. a 2nd filter that matches the exact
same scope overrides a previous one. Thus, with this design it is still
possible to activate certain logs at runtime, even if they have silenced
by default.

I'd expect `firezone-logging` to attract more functionality in the
future. For example, we want to support re-loading of log-filters on
other platforms. Additionally, where logs get stored could also be
defined in this crate.

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-10 05:17:03 +00:00
Gabi
db655dd171 feat(apple): permit resources to be disabled (#6215)
Work for #6074 equivalent to #6166 for MacOS

MacOs view:

<img width="547" alt="image"
src="https://github.com/user-attachments/assets/f465183e-247b-49b5-a916-3ecc5f0a02f4">


iOS(ipad) view:


![image](https://github.com/user-attachments/assets/e64da75a-c69f-4e6a-aeeb-739958c3b046)

Other than implementing the resource disabling, this PR also refactor
the IPC between the network extension and the app so that it's some form
of structured IPC instead of relying on it being deserializable to
string to match the message.

One big difference with Android is that we don't introduce the concept
of a `ResourceView` for swift, the main reason for this is that on iOS
the resources are bound to the view instead of just being a parameter
for creating the view. So if we modify the `disabled` property it'd
update the UI unnecessarily, also it'd update the `Store` value for the
resource and then we need to copy that over again to the view. Making it
easier to go out of sync.
2024-08-10 04:20:14 +00:00
Reactor Scram
a52f459da6 test(gui-client): add unit test for the elevation check (#6238)
This will always be elevated in CI, so just check that it doesn't crash.

This came up during debugging while I was offline, and I just want to
make CI check for regressions, since there's a lot of `unsafe` code in
the Windows impl
2024-08-10 04:18:05 +00:00
Thomas Eizinger
a87728b791 chore: remove connlib-shared dependency from bin-shared (#6229)
The `firezone-bin-shared` crate is meant to house non-tunnel related
things. That allows it to compile in parallel to everything else. It
currently only depends on `connlib-shared` to access the `DEFAULT_MTU`
constant. We can remove that by requiring the MTU as a ctor parameter of
`TunDeviceManager`.

A longer write-up of the intended dependency structure is in #4470.
2024-08-10 03:58:10 +00:00
Brian Manifold
0df2d34126 fix(portal): Update Resource definition in OpenAPI spec (#6234)
Update Resource definition in OpenAPI spec to include "connections" i.e.
which gateway groups/sites a new Resource would be connected to.

<img width="775" alt="Screenshot 2024-08-09 at 2 57 04 AM"
src="https://github.com/user-attachments/assets/502979b1-e928-4e36-91c0-ed7b62f7c4a8">
2024-08-09 22:45:20 +00:00
Thomas Eizinger
78bb2ac73d chore: add changelog entries for #6181 (#6236)
Add either new changelog entries for next version or modify existing
changelog entries to point out #6181.
2024-08-09 22:26:03 +00:00
Reactor Scram
68d934ee59 refactor(headless-client): remove unnecessary layering (#6211)
Refs #5754

The IPC service is still layered, but moving it around is more difficult
than moving the headless Client.
2024-08-09 14:10:21 +00:00
Thomas Eizinger
47a447c65a chore: prepare hotfix release for Tauri & headless clients (#6235) 2024-08-09 08:28:25 +00:00
Thomas Eizinger
4ae64f0257 fix(connlib): index forwarded DNS queries by ID + socket (#6233)
When forwarding DNS queries, we need to remember the original source
socket in order to send the response back. Previously, this mapping was
indexed by the DNS query ID. As it turns out, at least Windows doesn't
have a global DNS query ID counter and may reuse them across different
DNS servers. If that happens and two of these queries overlap, then we
match the wrong responses together.

In the best case, this produces bad DNS results on the client. In the
worst case, those queries were for DNS servers with different IP
versions in which case we triggered a panic in connlib further down the
stack where we created the IP packet for the response.

To fix this, we first and foremost remove the explicit `panic!` from the
`make::` functions in `ip-packet`. Originally, these functions were only
used in tests but we started to use them in production code too and
unfortunately forgot about this panic. By introducing a `Result`, all
call-sites are made aware that this can fail.

Second, we fix the actual indexing into the data structure for forwarded
DNS queries to also include the DNS server's socket. This ensures we
don't treat the DNS query IDs as globally unique.

Third, we replace the panicking path in
`try_handle_forwarded_dns_response` with a log statement, meaning if the
above assumption turns out wrong for some reason, we still don't panic
and simply don't handle the packet.
2024-08-09 07:01:57 +00:00
Jamil
67ae8ff380 ci: publish Gateway 1.1.4 (#6228)
Publishes the `ENABLE_MASQUERADE` removal.
2024-08-09 03:45:26 +00:00
Thomas Eizinger
bc1ab58c93 test(connlib): assign at least one gateway to each site (#6201)
I believe this is the cause of some flakiness in the proptests.
Sometimes, we would end up with a site that did not have any gateways
assigned.

Example of a failing test:
https://github.com/firezone/firezone/actions/runs/10280367072/job/28447560561?pr=6200.
2024-08-09 02:16:04 +00:00
Thomas Eizinger
da296038b9 fix(connlib): emit candidates in reverse-priority order (#6200)
I noticed we sometimes have a flaky integration test with an ICE timeout
in its logs. For example:
https://github.com/firezone/firezone/actions/runs/10278933741/job/28443578376

Analyzing this one more closely turned out to be caused by a race
condition between client and gateway, when they exchange their ICE
candidates.

We send ICE candidates in batches but because they are serialized to
strings early, their ordering actually depends on the so-called
"foundation" of the ICE candidates. that one is simply a hash of several
components. As a result, the ordering of these candidates can vary
between test runs.

We should try ICE candidates in order of their reverse-priority (i.e.
best first). By introducing a helper-collection, we can enforce this
ordering before sending ICE candidates across.
2024-08-09 01:29:38 +00:00
Jamil
a6ba9868dd ci: Revert bumps to 1.2 (#6227)
We need these at 1.1 until ready to release.
2024-08-08 18:34:39 -07:00
Thomas Eizinger
d315b14b2f fix(linux): disable LLMNR on TUN interface (#6219)
LLMNR is a deprecated [0] protocol and we shouldn't advertise it on our
TUN interface. With LLMNR, name resolutions for hosts (i.e. single-label
domains) that are not found via search domains on other interfaces (like
a WiFI or Ethernet adapter) end up failing with "refused" instead of the
appropriate NXDOMAIN.

For example, my WiFi card has the `fritz.box` search domain assigned via
DHCP. This allows me to lookup hosts on my local network. Searching for
a host `foo` that doesn't exist currently fails with "refused":

```
❯ host foo
Host foo not found: 5(REFUSED)
```

By disabling LLMNR, we get the expected "nxdomain":

```
❯ host foo
Host foo not found: 3(NXDOMAIN)
```

To make configuring things via `resolvectl` more ergonomic, I extracted
out a helper function.

Related: #6218.

[0]:
https://techcommunity.microsoft.com/t5/networking-blog/aligning-on-mdns-ramping-down-netbios-name-resolution-and-llmnr/ba-p/3290816
2024-08-08 20:40:36 +00:00
Jamil
096ddfe7c5 ci: bump gui/headless to 1.1.10 (#6221)
To publish the mpsc channel fix.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-08 16:20:20 +00:00
Reactor Scram
d44c50d609 docs(changelog): fix Gateway release being incorrect (#6222) 2024-08-08 15:59:58 +00:00
Gabi
cf87474098 feat(android): add UI for enable and disable (#6168)
The UI-side of #6166


This is how it looks if we enable disalable for CIDR resources

It still needs some UI tuning probably but we could merge this as is
since no client will see it


![image](https://github.com/user-attachments/assets/71354b02-1280-4703-bd54-e1d6d1f3e2e5)
2024-08-07 22:47:49 +00:00
Jamil
bf7e41d6c9 chore(ux): Fix minor API beta page UX issues and add reply-to address (#6207)
Fixes help text, opens link in new page, quick polish on flash styling,
and adds `reply-to` so I can handle the email chain directly in HubSpot.

<img width="1233" alt="Screenshot 2024-08-07 at 10 44 36 AM"
src="https://github.com/user-attachments/assets/eb261ab3-9c3f-4aec-b530-fb14bbaf7c3d">
2024-08-07 20:36:36 +00:00
Jamil
406426c59f fix(ci): Fix underscores / dashes typo from #6208 (#6212)
Fix underscores / dashes typo from #6208
2024-08-07 12:58:15 -07:00
Brian Manifold
e78737c4c8 fix(portal): Refactor API URL config for Web app (#6202)
Why:

* The Swagger UI is currently served from the API application. This
means that the Web application does not have access to the external URL
in the API configuration during/after compilation. Without the API
external URL, we cannot generate a proper link in the portal to the
Swagger UI. This commit refactors how the API external URL is set from
the environment variables and allows the Web app to have access to the
value of the API URL.

Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-07 19:30:18 +00:00
Jamil
0c6cd4a804 fix(ci): Add http test server image specifiers to CI (#6208)
- Adds `http_test_server_image` to inputs so that it gets set properly
for CI (`debug`) and CD (`perf`)
- Updates `dev` -> `debug` in docker-compose.yml to fix pulls
- Fixes issue with seeds and relevant docs from #6205
2024-08-07 12:15:00 -07:00
Andrew Dryga
5545604ffc fix(portal): Do not allow emails with just TLD in place (#6205)
`foo@bar` was a valid domain, while it's technically possible that
somebody owns a TLD with MX records Stripe will not accept that, so we
have to adopt this validation and make sure sign ups don't results in
HTTP 500s.
2024-08-07 10:43:28 -06:00
Andrew Dryga
795c12c9be chore(portal): Enable REST API in production (#6204) 2024-08-07 10:28:36 -06:00
Andrew Dryga
ba71d651d9 chore(infra): Silence alerts from OTEL Finch integration (#6188) 2024-08-07 10:26:51 -06:00
Andrew Dryga
13c23d3b78 fix(portal): Do not fail when email identity is not found (#6187)
We were generating fake tokens when identity was not found but those had
empty ids so the code crashed. Now we fake the entire token and make
sure it's length is stable.
2024-08-07 10:25:08 -06:00
Jamil
4f71f21679 docs: Clean up contributing guide by removing redundant sections (#6203)
Some of these seemed to be added without taking into account the broader
context of the guide.
2024-08-07 07:59:46 -07:00
Thomas Eizinger
128d0eb407 feat(connlib): transparently forward non-resources DNS queries (#6181)
Currently, `connlib` depends on `hickory-resolver` to perform DNS
queries for non-resources. This is unnecessary. Instead of buffering the
original UDP DNS query, consulting hickory to resolve the name and
mapping the response back, we can simply take the UDP payload and send
it via our protected socket directly to the original upstream DNS
server.

This ensures `connlib` is as transparent as possible for DNS queries for
non-resources. Additionally, it removes a lot of error handling and
other cruft that we currently have to perform because we are using
hickory. For example, hickory will automatically retry a DNS query after
a certain timeout. However, the OS / client talking to `connlib` will
also retry after a certain timeout because it is making DNS queries over
an unreliable transport (UDP). It is thus unnecessary for us to do that
internally.

To correctly test this change, our test-suite needed some refactoring.
Specifically, DNS servers are now modelled as dedicated `Host`s that can
receive (UDP) traffic.

Lastly, we can remove our dependency on `hickory-proto` and
`hickory-resolver` everywhere and only use `domain` for parsing DNS
messages.

Resolves: #6141.
Related: #6033.
Related: #4800. (Impossible to happen with this design)
2024-08-07 08:54:49 +00:00
Thomas Eizinger
376900ca4e refactor(connlib): simplify sampling of initial state (#6194)
Instead of having one giant, composed strategy, we introduce a dedicated
`stub_portal` strategy. That one samples what is defined in the portal
in production: sites, gateways and resources.

Based on a sampled portal, we can then sample gateways, a client and DNS
records for our resources.
2024-08-07 06:07:39 +00:00
Thomas Eizinger
423d70854b chore(connlib): fix clippy warnings (#6190) 2024-08-07 05:46:11 +00:00
Thomas Eizinger
a282208f0b chore(connlib): minimize debug print of DnsServer (#6191)
The `DnsServer` struct is quite nested. All it really contains
(currently) is a `SocketAddr`. To make logs containing this structure
easier to use, only print the inner address on debug.
2024-08-07 05:46:04 +00:00
Thomas Eizinger
662a73115a ci: use Google's DockerHub mirror (#6195)
DockerHub has pretty low rate limits [0] for pulling images: Only 100
pulls / 6h. This can stall our CI which pulls several (base) images.

To not hurt our velocity, use Google's public mirror [1].

[0]: https://www.docker.com/increase-rate-limits/.
[1]:
https://cloud.google.com/artifact-registry/docs/pull-cached-dockerhub-images
2024-08-07 05:20:47 +00:00
Thomas Eizinger
dda6adecf2 chore(connlib): log when we are updating DNS servers (#6192) 2024-08-07 04:27:35 +00:00
Thomas Eizinger
a81f5128e5 refactor(connlib): don't manually build DNS responses (#6193)
Resolves: #5540.
2024-08-07 04:27:27 +00:00
Thomas Eizinger
622fa63535 fix(ci): always install curl (#6189)
CI on `main` runs against the `release` images which had `curl` removed
in #6169.
2024-08-07 04:15:30 +00:00
Thomas Eizinger
94527f9fa1 fix(gateway): always masquerade for docker-deployed gateways (#6169)
Without masquerading, packets sent by the gateway through the TUN
interface use the wrong source address (the TUN device's address)
instead of the gateway's actual network interface.

We set this env variable in all our uses of the gateway, thus we might
as well remove it and always perform unconditionally.

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-07 03:00:50 +00:00
Reactor Scram
0cb96d5e37 chore(gui-client/windows): throw an error if the GUI runs as admin (#6176)
Closes #5878

It won't work properly as admin (deep links will all fail), and this
improves UX by making it obvious that admin powers are no longer needed
for the GUI.

```[tasklist]
- [x] Write up `SAFETY` comments
```
2024-08-07 01:22:59 +00:00
Reactor Scram
5b75e8714a feat(client/tauri): allow users to favorite specific Resources and hide the rest (#5923)
Refs #5123

Looking at a Resource when nothing is favorited
<img width="504" alt="image"
src="https://github.com/user-attachments/assets/4c3bc1da-4645-40c1-84a4-3e3425a0fea3">

Looking at a favorited Resource
<img width="515" alt="image"
src="https://github.com/user-attachments/assets/22140f81-5453-41fd-9071-9c999b3151b1">

Looking at a non-favorited Resource
<img width="497" alt="image"
src="https://github.com/user-attachments/assets/84deddb1-8a05-4b78-9dfa-a8a60ca86831">


```[tasklist]
- [x] Double-check that the Resources are sorted alphabetically (or whatever) and leave a comment where they're sorted
- [x] String changes
- [x] Move "Add" and "Remove" down to a different section
- [x] Fix empty favorites menu
- [ ] Wait for other Clients to sync
- [ ] Merge
```

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-06 22:36:52 +00:00
Reactor Scram
861ca1861d feat(client/kotlin): add Favorite Resources menu (#6107)
It's missing a couple pieces, see the tasklist


![image](https://github.com/user-attachments/assets/370e13fc-c0cd-4444-9539-0c7d90f3ba05)

Refs #5123

```[tasklist]
- [x] Add `Add to Favorites` and `Remove from Favorites` buttons
- [x] Update Changelog
- [x] Load and save Favorites from `SharedPreferences`
- [x] Wire up `onClick` events
- [x] Hide and show Resources in the menu based on whether they're favorited
- [x] Hide tabs if nothing is favorited
- [x] Tab icons
- [ ] Make the "Reset Settings" button also reset Favorites
- [ ] Change the "Add to Favorites" and "Remove from Favorites" to a checkbox or star or something cool
```
2024-08-06 22:17:09 +00:00
Shantanu Gadgil
22c7414cd1 environmentfile optional to suppress warning in logs (#6151)
environmentfile optional to suppress warning in logs

---------

Signed-off-by: Shantanu Gadgil <shantanugadgil@users.noreply.github.com>
2024-08-06 12:55:51 -07:00
Reactor Scram
5eb2bba47b feat(headless-client): use systemd-resolved DNS control by default (#6163)
Closes #5063, supersedes #5850 

Other refactors and changes made as part of this:

- Adds the ability to disable DNS control on Windows
- Removes the spooky-action-at-a-distance `from_env` functions that used
to be buried in `tunnel`
- `FIREZONE_DNS_CONTROL` is now a regular `clap` argument again

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
2024-08-06 18:16:51 +00:00
Reactor Scram
30622da24f fix(client): increase mpsc channel size (#6184)
Mitigates #5880.

This should fix the issue for all practical purposes, but we don't need
a channel there, so it does not close the ticket. A more permanent fix
would involve factoring out the callbacks or cheating and using a Mutex
inside the callbacks to do a swap-and-notify thing.

This affects both the Headless Client and the GUI Client's IPC service,
on both Linux and Windows.
2024-08-06 17:18:37 +00:00
Brian Manifold
6ed5fa3c33 fix(portal): Temporarily revert verified routes for API UI (#6185)
This temporarily reverts commit
d1703d2849.

The long term fix will be to have the API URL be set by environment
variables, but in the interest of time it will be hardcoded for now.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2024-08-06 10:00:48 -07:00
Thomas Eizinger
42c343c518 fix(website): add dedicated network to docker-compose example (#6170)
In my testing, Docker-defined resources are not reachable unless you
explicitly declare a network and add both services to it. Additionally,
`systemd-resolved` refuses to resolve single-label domain names, meaning
a "two-label" domain needs to be used to access this as a DNS resource.

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
2024-08-06 11:28:45 +00:00
Patti
64a9efd3b8 fix(website): Fixed mobile footer responsiveness (#6165)
Signed-off-by: Patti <139997703+Patticatti@users.noreply.github.com>
Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
2024-08-06 06:53:26 +00:00
dependabot[bot]
d47351adc0 build(deps): Bump tailwindcss from 3.4.4 to 3.4.7 in /website (#6126)
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from
3.4.4 to 3.4.7.
<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>v3.4.7</h2>
<h3>Fixed</h3>
<ul>
<li>Fix class detection in Slim templates with attached attributes and
ID (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/14019">#14019</a>)</li>
<li>Ensure attribute values in <code>data-*</code> and
<code>aria-*</code> modifiers are always quoted in the generated CSS (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/14037">#14037</a>)</li>
</ul>
<h2>v3.4.6</h2>
<h3>Fixed</h3>
<ul>
<li>Fix detection of some utilities in Slim/Pug templates (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/14006">#14006</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Loosen <code>:is()</code> wrapping rules when using an important
selector (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13900">#13900</a>)</li>
</ul>
<h2>v3.4.5</h2>
<h3>Fixed</h3>
<ul>
<li>Disable automatic <code>var()</code> injection for anchor properties
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13826">#13826</a>)</li>
<li>Use no value instead of <code>blur(0px)</code> for
<code>backdrop-blur-none</code> and <code>blur-none</code> utilities (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13830">#13830</a>)</li>
<li>Add <code>.mts</code> and <code>.cts</code> config file detection
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13940">#13940</a>)</li>
<li>Don't generate utilities like <code>px-1</code> unnecessarily when
using utilities like <code>px-1.5</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13959">#13959</a>)</li>
<li>Always generate <code>-webkit-backdrop-filter</code> for
<code>backdrop-*</code> utilities (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13997">#13997</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/blob/v3.4.7/CHANGELOG.md">tailwindcss's
changelog</a>.</em></p>
<blockquote>
<h2>[3.4.7] - 2024-07-25</h2>
<h3>Fixed</h3>
<ul>
<li>Fix class detection in Slim templates with attached attributes and
ID (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/14019">#14019</a>)</li>
<li>Ensure attribute values in <code>data-*</code> and
<code>aria-*</code> modifiers are always quoted in the generated CSS (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/14037">#14037</a>)</li>
</ul>
<h2>[3.4.6] - 2024-07-16</h2>
<h3>Fixed</h3>
<ul>
<li>Fix detection of some utilities in Slim/Pug templates (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/14006">#14006</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Loosen <code>:is()</code> wrapping rules when using an important
selector (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13900">#13900</a>)</li>
</ul>
<h2>[3.4.5] - 2024-07-15</h2>
<h3>Fixed</h3>
<ul>
<li>Disable automatic <code>var()</code> injection for anchor properties
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13826">#13826</a>)</li>
<li>Use no value instead of <code>blur(0px)</code> for
<code>backdrop-blur-none</code> and <code>blur-none</code> utilities (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13830">#13830</a>)</li>
<li>Add <code>.mts</code> and <code>.cts</code> config file detection
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13940">#13940</a>)</li>
<li>Don't generate utilities like <code>px-1</code> unnecessarily when
using utilities like <code>px-1.5</code> (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13959">#13959</a>)</li>
<li>Always generate <code>-webkit-backdrop-filter</code> for
<code>backdrop-*</code> utilities (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/13997">#13997</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9824cb64a0"><code>9824cb6</code></a>
Update version in package.json</li>
<li><a
href="aa6c10f67f"><code>aa6c10f</code></a>
Add missing heading to changelog</li>
<li><a
href="245058c7fd"><code>245058c</code></a>
Update changelog for v3.4.7</li>
<li><a
href="605d8cd5eb"><code>605d8cd</code></a>
Update CHANGELOG.md</li>
<li><a
href="680c55c11c"><code>680c55c</code></a>
Normalize attribute selector for <code>data-*</code> and
<code>aria-*</code> modifiers (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/issues/14037">#14037</a>)</li>
<li><a
href="866860e6a6"><code>866860e</code></a>
Print eventual lightning CSS parsing errors when the CSS matcher fail
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/issues/14034">#14034</a>)</li>
<li><a
href="bdc87ae1d7"><code>bdc87ae</code></a>
Fix class detection in Slim templates with attached attributes and IDs
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/issues/14019">#14019</a>)</li>
<li><a
href="d622977b2a"><code>d622977</code></a>
Update changelog</li>
<li><a
href="0573c0769a"><code>0573c07</code></a>
Loosen :is() wrapping rules in applyImportantSelector for more readable
outpu...</li>
<li><a
href="9c29e47c5f"><code>9c29e47</code></a>
3.4.6</li>
<li>Additional commits viewable in <a
href="https://github.com/tailwindlabs/tailwindcss/compare/v3.4.4...v3.4.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tailwindcss&package-manager=npm_and_yarn&previous-version=3.4.4&new-version=3.4.7)](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>
2024-08-06 06:47:37 +00:00
dependabot[bot]
ab0263e85a build(deps): Bump puppeteer from 22.13.1 to 22.15.0 in /scripts/tests/browser (#6132)
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 22.13.1
to 22.15.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/puppeteer/puppeteer/releases">puppeteer's
releases</a>.</em></p>
<blockquote>
<h2>puppeteer-core: v22.15.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v22.14.0...puppeteer-core-v22.15.0">22.15.0</a>
(2024-07-31)</h2>
<h3>Features</h3>
<ul>
<li>support AbortSignal in waitForNavigation (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12852">#12852</a>)
(<a
href="9a35f7ba18">9a35f7b</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>handle the string predicate in waitForFrame (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12849">#12849</a>)
(<a
href="9ec5f25ea6">9ec5f25</a>)</li>
<li>roll to Chrome 127.0.6533.88 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12858">#12858</a>)
(<a
href="4b0e8890ef">4b0e889</a>)</li>
<li><strong>webdriver:</strong> implement request timings (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12831">#12831</a>)
(<a
href="409d244aed">409d244</a>)</li>
</ul>
<h2>puppeteer: v22.15.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v22.14.0...puppeteer-v22.15.0">22.15.0</a>
(2024-07-31)</h2>
<h3>Miscellaneous Chores</h3>
<ul>
<li><strong>puppeteer:</strong> Synchronize puppeteer versions</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies
<ul>
<li>puppeteer-core bumped from 22.14.0 to 22.15.0</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2>puppeteer-core: v22.14.0</h2>
<h2><a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v22.13.1...puppeteer-core-v22.14.0">22.14.0</a>
(2024-07-25)</h2>
<h3>Features</h3>
<ul>
<li>roll to Chrome 127.0.6533.72 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12821">#12821</a>)
(<a
href="8e6fd74de1">8e6fd74</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>webdriver:</strong> allow accessing raw CDP connection when
using WebDriver BiDi (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12771">#12771</a>)
(<a
href="059caccad7">059cacc</a>)</li>
<li><strong>webdriver:</strong> dispose resources to abort active
listeners (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12817">#12817</a>)
(<a
href="c452c5f7e5">c452c5f</a>)</li>
<li><strong>webdriver:</strong> in page.goto consider only the first
emitted navigation event (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12777">#12777</a>)
(<a
href="cd740b2eef">cd740b2</a>)</li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>The following workspace dependencies were updated
<ul>
<li>dependencies</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8478b43ad0"><code>8478b43</code></a>
chore: release main (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12832">#12832</a>)</li>
<li><a
href="4b0e8890ef"><code>4b0e889</code></a>
fix: roll to Chrome 127.0.6533.88 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12858">#12858</a>)</li>
<li><a
href="9a35f7ba18"><code>9a35f7b</code></a>
feat: support AbortSignal in waitForNavigation (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12852">#12852</a>)</li>
<li><a
href="67f15e6df6"><code>67f15e6</code></a>
chore: sync firefox no-remote arg removal Bug 1906260 (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12848">#12848</a>)</li>
<li><a
href="9ec5f25ea6"><code>9ec5f25</code></a>
fix: handle the string predicate in waitForFrame (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12849">#12849</a>)</li>
<li><a
href="cd0eca9abf"><code>cd0eca9</code></a>
ci: use standard definition (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12847">#12847</a>)</li>
<li><a
href="400e81c17d"><code>400e81c</code></a>
chore: remove TODOs (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12845">#12845</a>)</li>
<li><a
href="f7847a1f3a"><code>f7847a1</code></a>
ci: run canary only on weekdays (<a
href="https://redirect.github.com/puppeteer/puppeteer/issues/12844">#12844</a>)</li>
<li><a
href="ea733d75dc"><code>ea733d7</code></a>
chore(deps-dev): Bump <code>@​swc/core</code> from 1.7.0 to 1.7.3 in
/website in the all gr...</li>
<li><a
href="3174e8431d"><code>3174e84</code></a>
chore(deps-dev): Bump the dev-dependencies group across 1 directory with
10 u...</li>
<li>Additional commits viewable in <a
href="https://github.com/puppeteer/puppeteer/compare/puppeteer-v22.13.1...puppeteer-v22.15.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=puppeteer&package-manager=npm_and_yarn&previous-version=22.13.1&new-version=22.15.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>
2024-08-06 06:46:06 +00:00
dependabot[bot]
6a15d714ec build(deps-dev): Bump @types/node from 20.14.12 to 22.0.2 in /scripts/tests/browser (#6131)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 20.14.12 to 22.0.2.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


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

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

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

---

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

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot 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>
2024-08-06 06:45:34 +00:00