Commit Graph
21561 Commits
Author SHA1 Message Date
Scott Gress cd18ced3e9 Rename teams and queries to fleets and reports in UI (#39572) 2026-02-17 15:19:33 -06:00
Robert Fairburn 0f9c05577b Firehose resources were in us-east-1 (#39991) 2026-02-17 14:52:19 -06:00
Noah Talerman b8d9f14793 #g-mdm Product Designer: Mel Pike (#39982)
Starting next sprint (2026-02-23)
2026-02-17 15:28:59 -05:00
Robert FairburnandJorge Falcon dac2ef18f0 Ensure terraform docker compatibility with github actions (#39988)
Co-authored-by: Jorge Falcon <22119513+BCTBB@users.noreply.github.com>
2026-02-17 15:09:50 -05:00
Zay HanlonandSam Pfluger b99c5cf432 Update Customer Success Manager section since GTM link is broken (#39766)
Co-authored-by: Sam Pfluger <108141731+Sampfluger88@users.noreply.github.com>
2026-02-17 14:03:50 -06:00
Marko Lisica 5871cb2b19 Add offline unlock instructions for iOS/iPadOS hosts (#39977)
Related to:
- #39251
2026-02-17 13:28:01 -05:00
Noah Talerman 694b9d4fcf Update quick wins definition with PR handling (#39979)
Clarify process for handling quick wins in the sprint workflow.
2026-02-17 13:23:34 -05:00
Juan Fernandez 43d70e82a8 Label validation not catching invalid platform (#39964)
Resolves #39083 

Updated validation rules around the creation of labels to make sure only valid platforms can be used.
2026-02-17 14:04:07 -04:00
Eric b83aed2537 Website: Create admin page for resetting Fleet Premium trials (#39980)
Changes:
- Added /admin/reset-trial, a page where website admins can reset local
Fleet Premium trials.
- Added a link to the reset trial page to the navigation on admin pages.
2026-02-17 11:59:30 -06:00
Juan Fernandez aec1f1e304 Fixed bug with Host detail software tab page title (#39941)
Resolves #39613

Fixed an issue where the App component incorrectly reset the page title
when navigating to the Software tab on the Host detail page.
2026-02-17 13:20:24 -04:00
Robert Fairburn f9ca19dc09 Update version of geolite2 module (#39973) 2026-02-17 10:55:28 -06:00
Scott Gress e14bfd60fe Add renameto tags to prepare for deprecating team and query API params (#39847)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** For #39344

# Details

As a first step to deprecating API params like `team_id` in favor of
`fleet_id` and `query_id` in favor of `report_id`, this PR adds
`renameto` tags to all deprecated keys. There is no logic in this PR to
actually use these tags in any way. The logic and test fixes will be in
the next PR, but in the interest of keeping things manageable I'm
pushing this out first.

There were definitely params with "query" in them that we don't want to
change (mainly osquery-related), and I think I kept them all out but
it's worth double-checking here. The team -> fleet changes are pretty
safe in comparison.

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.
Deferring changelog to PR with logic changes

## Testing

- [ ] Added/updated automated tests
This should be a no-op.  All existing tests shoud pass.
- [X] QA'd all new/changed functionality manually
2026-02-17 10:00:59 -06:00
fleet-releaseandmostlikelee 1c93a5aef3 Update Fleet-maintained apps (#39958)
Automated ingestion of latest Fleet-maintained app data.

Co-authored-by: mostlikelee <16102903+mostlikelee@users.noreply.github.com>
2026-02-17 09:44:27 -06:00
Victor Lyuboslavsky 6fc7132350 Trigger vuln processing when it runs on a separate server (#39612)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #35239

Docs PR: #39770

## Remote trigger approach
When FLEET_VULNERABILITIES_DISABLE_SCHEDULE=true, the main Fleet server
registers a RemoteTriggerSchedule instead of the real vulnerability
schedule. When a user runs fleetctl trigger --name=vulnerabilities:
1. Main server: RemoteTriggerSchedule.Trigger() inserts a cron_stats
record with status=queued.
2. Worker server: The vulnerability schedule runs with
WithTriggerPollInterval(60s), which starts a poll goroutine that checks
the DB every 60s for queued records.
3. Pickup: When the poll goroutine finds a queued record, it sends the
stats ID on the trigger channel (non-blocking).
4. Execution: The trigger handler acquires the lock, claims the record
via ClaimCronStats (updating status to pending and instance to the
actual worker ID), runs all jobs, and marks it completed.

Key details:
- The trigger channel carries an int: 0 for in-process triggers, >0 for
DB-polled stats IDs. This lets runWithStats reuse the existing record
instead of inserting a new one.
- Both Schedule.Trigger() and RemoteTriggerSchedule.Trigger() treat
pending and queued as conflicts to prevent duplicate runs.
- Queued records expire after 2 hours via CleanupCronStats, same as
pending records.
- The poll goroutine only signals; it doesn't modify DB state. The
handler claims when ready.

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

* **New Features**
* Added support for remote trigger execution in vulnerability scheduling
workflows.
* Implemented periodic polling mechanism to detect and process
externally triggered vulnerability scans.

* **Bug Fixes**
* Enhanced trigger status tracking to properly handle queued scan jobs.

* **Improvements**
* Strengthened scheduling system with improved timeout and cancellation
management capabilities.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-17 09:18:03 -06:00
Tim Lee a3bafe8818 Jetbrains override query (#39800) 2026-02-17 08:00:36 -07:00
RachelElysia d808fc88f5 Fleet UI: Update setup page styling (#39846) 2026-02-17 09:35:00 -05:00
Jordan Montgomery a19ecbb93b Ignore kiloconnect PRs in oncall script (#39957)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** None

Well hello there neighbor. If I may make a gentle suggestion, I think we
should ignore Kiloconnect in the oncall script. Its contributions are
valued but I assume another friendly neighbor initiated each wonderful
PR it opens and we can be more kind to the oncall engineer by not
showing these.

In all seriousness I just assume someone else at fleet initiated any
Kiloconnect PR so we need not return them in the oncall script, but we
also shouldn't add it to the list of humans
2026-02-17 09:28:21 -05:00
Victor Lyuboslavsky 42d5f1fda6 Improve error handling on AWS DB failover (#39841)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #39228 

Manually tested by triggering a failover on loadtest.

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually


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

* **Bug Fixes**
* Health checks now detect a primary DB becoming read-only and report
failure so the service restarts and reconnects to a writable primary.
* Write failures due to DB read-only state now trigger immediate fatal
handling to prompt graceful shutdown and recovery.
* Improved detection and handling of read-only DB conditions to increase
stability during failovers.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-17 07:10:52 -06:00
Harrison Ravazzolo ffca20142b Enable firehose logging in Dogfood (#39954)
Reenable firehose log shipping in dogfood. Created new hoses and role in
SC account
2026-02-16 21:29:44 -08:00
kiloconnect[bot]andBrock Walters 8cd853f3af Add article: Why work laptops don't work on plane wifi (#39814)
## New article: Why work laptops don't work on plane wifi

This article explores why work laptops often fail to connect properly on
plane wifi, and proposes that IT teams should consider making employee
laptops work on plane wifi by default.

### Key topics covered:
- Common frustrations with work laptops on inflight wifi
- Technical causes: VPN conflicts, DNS filtering, captive portal
blocking, certificate errors
- UX challenges: employees can't diagnose or fix issues mid-flight
- Potential solutions: split-tunnel VPNs, captive portal detection,
graceful security degradation
- References a LinkedIn discussion thread on this topic

### Article details:
- **Author:** Mike McNeil (mikermcneil)
- **Category:** articles
- **Word count:** ~750 words
- **File:** `articles/why-work-laptops-dont-work-on-plane-wifi.md`

---

Built for
[mikermcneil](https://fleetdm.slack.com/archives/D0AFASLRHNU/p1770982271436629)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Brock Walters <153771548+nonpunctual@users.noreply.github.com>
2026-02-16 23:12:16 -05:00
fleet-releaseandmostlikelee fdb1c7290f Update Fleet-maintained apps (#39942)
Automated ingestion of latest Fleet-maintained app data.

Co-authored-by: mostlikelee <16102903+mostlikelee@users.noreply.github.com>
2026-02-16 20:35:34 -06:00
jacobshandling fc31741a19 Dynamically alphabetize vitals on the host details page (#39946)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #39794 

Before –> After
<img width="2015" height="479" alt="Screenshot 2026-02-16 at 1 28 11 PM"
src="https://github.com/user-attachments/assets/5f54b3d0-94d4-4881-8364-d22398289f18"
/>


- [x] Changes file added for user-visible changes in `changes/
- [x] QA'd all new/changed functionality manually
2026-02-16 15:31:20 -08:00
Mike Thomas 37bd3b1321 Update testimonials.ejs (#39908)
Updated case study cards. Related to
https://github.com/fleetdm/fleet/pull/39907/
2026-02-16 17:14:48 -06:00
Eric a9647053fe Website: Update handbook styles (#39949)
Closes: https://github.com/fleetdm/fleet/issues/38740

Changes:
- Reduced the padding between H2 and H3 headings on handbook pages
- Updated the link and chevron icons used on handbook pages to be green
2026-02-16 16:24:31 -06:00
Victor Lyuboslavsky 44c6aee5c7 Converted osquery_utils to slog (#39883)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #38889 

Plan was to convert `osquery_utils` package to slog. Picked up some
additional code that was related.

# Checklist for submitter

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
  - Already have changes

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually


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

## Summary by CodeRabbit

# Release Notes

## Refactor
* Updated internal logging infrastructure to use improved system-level
logging utilities

## Tests
* Updated test suite to align with internal logging changes

---

**Note:** This release contains internal infrastructure improvements
with no user-facing changes or new features.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-16 15:43:59 -06:00
Noah Talerman 01e49d5a69 Eng handbook: Outdated engineering-initiated story (#39918) 2026-02-16 15:32:21 -06:00
Eric baada0741f Website: Update GitHub webhook exits (#39940)
Changes:
- Added a new exit to the receive-from-github webhook that is used when
a provided `botSignature` does not match the `githubBotWebhookSecret`
config variable
2026-02-16 15:07:30 -06:00
Victor Lyuboslavsky 988f0bbcc6 Transitioned activity bounded context to slog. (#39773)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #38889 

# Checklist for submitter

- [ ] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
  - Changes file already exists

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually


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

## Summary by CodeRabbit

* **Chores**
* Updated internal logging infrastructure across activity service
modules to enhance code consistency and maintainability.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-16 14:23:36 -06:00
Eric 0e729604ed Website: Update user record (#39664)
Changes:
- Added a new attribute to the user record:
`fleetPremiumTrialEmailSentAt` - A JS timestamp representing when a user
was sent an email about their Fleet Premium trial
- Updated the `deliver-expired-local-trial-emails` and
`manage-fleet-premium-trial-instances` scripts to set this value when
users are sent an email about their expired trial.
2026-02-16 14:22:22 -06:00
Noah Talerman a5e37582d5 Controls > OS settings > Disk encryption: Consistent padding/styles (#39802)
For the following quick win:
- https://github.com/fleetdm/fleet/issues/39803
2026-02-16 15:21:05 -05:00
Martin Angers 81b5d7b04e Website: return 404 if Android enterprise application is not found (#39935) 2026-02-16 15:14:29 -05:00
jacobshandling beca67550b Move copy UI for InputFields with type="textarea" in line with the label (#39885)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #35561 

<img width="647" height="655" alt="Screenshot 2026-02-13 at 4 24 57 PM"
src="https://github.com/user-attachments/assets/b191f8bb-e6b7-4f3d-8819-eccf23a408f8"
/>

- Spot checked all relevant instances of `InputField` (`type="textarea"
and `enableCopy`)


- [x] Changes file added for user-visible changes in `changes/`
-  [x] QA'd all new/changed functionality manually
2026-02-16 12:11:40 -08:00
Victor Lyuboslavsky ea92615507 Fix issue with vuln jobs running in parallel. (#39806)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #35044 

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually


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

## Summary by CodeRabbit

* **Bug Fixes**
* Prevented parallel execution of vulnerability jobs when one job runs
longer than two hours, improving job reliability and preventing
concurrent conflicts.

* **Chores**
* Enhanced cron job lock management to better handle long-running
scheduled tasks and prevent premature expiration.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-16 13:59:40 -06:00
Juan Fernandez d7ccd1e92a Return empty results if app-sso platform kerberos status not available (#39932)
Resolves #35440

Return empty result set if kerberos status is not avaiable when
executing "app-sso platform".
2026-02-16 15:57:46 -04:00
Eric a268ea9564 Website: Hide related topics list on open position handbook pages (#39936)
Changes:
- Updated the handbook sidebar on open position pages to hide related
topics
2026-02-16 13:56:08 -06:00
Eric 468723e804 Website: Add related topics to handbook sidebar (#39884)
Closes: https://github.com/fleetdm/fleet/issues/37626

Changes:
- Updated the sidebar on handbook department pages to include a list of
related topics (pages in the same handbook folder)
2026-02-16 13:39:43 -06:00
jacobshandling 3bd6a93ada Fix unreleased copy misalignment (#39882)
Before:
<img width="726" height="399" alt="Screenshot 2026-02-13 at 3 13 01 PM"
src="https://github.com/user-attachments/assets/8663541c-5308-42a1-888d-0ae255af8983"
/>

Now:
<img width="726" height="399" alt="Screenshot 2026-02-13 at 3 13 31 PM"
src="https://github.com/user-attachments/assets/37a09b63-a89e-4bea-92b9-82eebdd9de6f"
/>

- [x] Manual QA
2026-02-16 10:54:36 -08:00
RachelElysia 0a2e1bff46 Fleet UI: Update Android delete software message (#39359)
## Issue
Closes #38767 

## Description
- Update copy and basic test of copy
- To be merged along with @mna 's BE changes for #38766  

## Screenshot of change
<img width="1259" height="333" alt="Screenshot 2026-02-04 at 4 29 33 PM"
src="https://github.com/user-attachments/assets/04accd98-e57d-4ec6-a050-85bb3d8a8aef"
/>


## Testing

- [x] QA'd all new/changed functionality manually
2026-02-16 13:18:53 -05:00
Martin Angers c2a2b0d62a Website: add remove enterprise apps Android proxy endpoint (#39633) 2026-02-16 13:17:31 -05:00
Lucas Manuel Rodriguez 34313b2b33 🤖 Fix fleetd escrow in X11 multi-user sessions (#39795)
**Related issue:** Resolves #31633.

Main change is stop relying on `who` command output to get the value of
the DISPLAY variable on X11 sessions (old distributions), and instead
search the value of the `DISPLAY` variable in processes that are owned
by the target user.

- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.

## Testing

- [x] QA'd all new/changed functionality manually

## fleetd/orbit/Fleet Desktop

- [x] Verified compatibility with the latest released version of Fleet
(see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/workflows/fleetd-development-and-release-strategy.md))
- [x] If the change applies to only one platform, confirmed that
`runtime.GOOS` is used as needed to isolate changes
- [x] Verified that fleetd runs on macOS, Linux and Windows
- [x] Verified auto-update works from the released version of component
to the new version (see [tools/tuf/test](../tools/tuf/test/README.md))


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

## Summary by CodeRabbit

* **Bug Fixes**
* Enhanced X11 session detection for improved support in multi-session
environments, providing more reliable display variable identification in
complex session configurations.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-16 14:15:10 -03:00
Konstantin Sykulev 3f8875cbdf Allow vulnerability webhook to fire for fleet free (#39810)
**Related issue:** Resolves #29076

# Checklist for submitter

If some of the following don't apply, delete the relevant line.

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.

- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)

## Testing
- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually



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

## Summary by CodeRabbit

* **New Features**
  * Vulnerability webhooks are now available for free-tier users.

* **Improvements**
* Refined webhook payload display for free-tier users by removing
certain advanced vulnerability metrics.
* Updated UI text descriptions in automation management to reflect
free-tier vulnerability scanning behavior.
* Simplified permission requirements for accessing automation management
features.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-16 11:02:48 -06:00
Ian Littman 1d1e98c3d4 Remove ineffectual defaulting on MySQL database/username while in dev mode (#39881)
Due to config.go, username/database are defaulted to `fleet` rather than
blank, which means that if you changed the defaults here they wouldn't
apply (so it looked like the defaulting worked, but that was just a
coincidence). Removing the code and explaining why makes it a bit
clearer what's going on, so we know that we don't set a different set of
defaults for these fields when running the Fleet server with `--dev`.

Thanks @AndreyKizimenko for catching this one! This reflects a change we
paired on in QA.

## Testing

- [x] QA'd all new/changed functionality manually

For unreleased bug fixes in a release candidate, one of:

- [x] Confirmed that the fix is not expected to adversely impact load
test results
2026-02-16 10:17:31 -06:00
Mike Thomas 126388f8a1 Update README.md (#39748)
- fixed typo and incorrect casing
2026-02-16 09:42:23 -06:00
Lucas Manuel Rodriguez 0823cc7e76 Fix orbit active GUI session detection to start Fleet Desktop and key escrowing on Linux (#39777)
Resolves #36024 and #34501.

Main change is about stop using the first user in the `users` command
output [*] and instead use `loginctl` commands to pick the correct
current active GUI user.

[*] `users` was returning empty on some new distributions, and in
multi-sessions we were always picking the first one (even if it wasn't
active).

- [X] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.

## Testing

- [x] QA'd all new/changed functionality manually

## fleetd/orbit/Fleet Desktop

- [x] Verified compatibility with the latest released version of Fleet
(see [Must
rule](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/workflows/fleetd-development-and-release-strategy.md))
- [x] If the change applies to only one platform, confirmed that
`runtime.GOOS` is used as needed to isolate changes
- [x] Verified that fleetd runs on macOS, Linux and Windows
- [x] Verified auto-update works from the released version of component
to the new version (see [tools/tuf/test](../tools/tuf/test/README.md))


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

## Summary by CodeRabbit

## Release Notes

* **Bug Fixes**
* Fixed Fleet Desktop startup to correctly detect and use the active GUI
session on Linux systems.
* Improved GUI user detection for dialog prompts, ensuring system
dialogs run in the proper user context.

* **Improvements**
* Enhanced error reporting and logging clarity for GUI session detection
failures.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-16 11:41:16 -03:00
Lucas Manuel Rodriguez 77e4004133 Update changelog for fleetd 1.52.0 release (#39911) 2026-02-16 10:56:31 -03:00
github-actions[bot]andlucasmrod f4f8f4dc73 Update versions of fleetd components in Fleet's TUF [automated] (#39912)
Automated change from [GitHub
action](https://github.com/fleetdm/fleet/actions/workflows/fleetd-tuf.yml).

Co-authored-by: lucasmrod <lucasmrod@users.noreply.github.com>
2026-02-16 10:05:44 -03:00
01f2ebcdf4 Update OS settings documentation for clarity (#38837)
Related to:

- #35738

---------

Co-authored-by: Noah Talerman <47070608+noahtalerman@users.noreply.github.com>
Co-authored-by: Jordan Montgomery <elijah.jordan.montgomery@gmail.com>
Co-authored-by: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
2026-02-16 10:52:12 +01:00
Mike Thomas 84c1c5fc44 Case study update (#39907)
Updated workforce management case study.
2026-02-16 12:31:11 +09:00
fleet-releaseandmostlikelee 4422b163e7 Update Fleet-maintained apps (#39905)
Automated ingestion of latest Fleet-maintained app data.

Co-authored-by: mostlikelee <16102903+mostlikelee@users.noreply.github.com>
2026-02-15 17:37:16 -06:00
Victor Lyuboslavsky de55ecf778 Migrate HTTP request logging from go-kit/log to slog (#39729)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #38889 

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.

## Testing

- [x] Added/updated automated tests
- [x] QA'd all new/changed functionality manually
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Refactor**
* Updated internal logging infrastructure to improve standardization and
maintainability. Logging functionality remains unchanged from an
end-user perspective.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-02-14 13:04:41 -06:00