main
339
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
616f9ab108 |
Update scripts in Fleet-maintained apps (#50756)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Updates** - Refreshed macOS and Windows installer metadata for numerous maintained applications, including AltTab, Arc, Calibre, ChatGPT, Chrome, Kiro, Loom, Postman, Prisma Access Browser, RustRover, and others. - Updated release versions, download links, version detection, and integrity checks. - **Bug Fixes** - Improved Evernote removal verification on Windows. - Enhanced Krita and Proton Drive macOS cleanup, including related support files and background services. - **Configuration** - Webex is now marked as frozen. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
9b5e9775ce |
Unfreeze XnConvert (macOS) (#50700)
Automated unfreeze probe. Removes `"frozen": true` and regenerates the output manifest so test-fma-macos-pr-only can validate `xnconvert/darwin` at its current upstream version. Frozen since: not recoverable from this checkout (squashed/shallow history — every input file is attributed to the same import commit) Version: 1.112.0 -> 1.115.0 Draft until validation reports. Merge only if the FMA checks are green and the validate shard actually ran for this slug. --- _Generated by [Claude Code](https://claude.ai/code/session_01Hx5UA4Dhqh2UUCX8h6k6Vv)_ Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
ec59e20971 |
Regenerate Fleet Desktop FMA manifests for v1.4.0 (#50674)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** NA — follow-up to #49910 ## What changed Regenerates `api/fleet-desktop.json` and `outputs/fleet-desktop/darwin.json` for Fleet Desktop v1.4.0. No cask changes. ## Why #49910 bumped `Casks/fleet-desktop.rb` to 1.4.0 but never ran `regenerate.sh` or the ingester, so the generated manifests — the files Fleet actually serves — were still on 1.3.4 and still pointed at the old `allenhouchins/fleet-desktop` GitHub release URL. That release feed is stale (it stops at v1.3.4); 1.4.0 is hosted at `download.fleetdm.com`. The `.rb` bump had no effect in production, and nothing in CI catches this kind of drift. This was found during a routine custom-tap maintenance pass. All four casks (druva-insync, fleet-desktop, xcreds, zoom-rooms) are at their latest upstream versions, so this is the only change needed: | Cask | Version | Upstream | | |---|---|---|---| | druva-insync | 8.1.3,110967 | `inSync-8.1.3r110967` | current | | fleet-desktop | 1.4.0 | 1.4.0 (1.4.1 → 404) | **manifests were stale** | | xcreds | 5.9,9148 | `tag-5.9(9148)` | current | | zoom-rooms | 7.1.5.13403 | `cdn.zoom.us/prod/7.1.5.13403/` | current | ## Notes for reviewers Verified the 1.4.0 installer against the cask stanzas before regenerating: - sha256 of the downloaded pkg matches the cask's `c920b983…` - receipt id `com.fleetdm.fleet-desktop` (from `PackageInfo`) matches both the `pkgutil:` and `quit:` stanzas - `CFBundleShortVersionString` is `1.4.0`, matching the cask version — so the `patched` query won't produce a perpetual false "Update available" - the `pkg` stanza filename `fleet_desktop-v1.4.0.pkg` matches the downloaded filename `regenerate.sh` rebuilds all four api JSONs; only fleet-desktop changed, so there was no brew schema drift to absorb on the others. The `install_script_ref` changes (`5d021f75` → `0341b271`) only because the pkg filename inside the script changed; `uninstall_script_ref` is unchanged. Unrelated, not addressed here: brew emits a deprecation warning on three casks for `depends_on macos: ">= :ventura"` (string comparison) vs `depends_on macos: :ventura`. It doesn't affect the generated JSON. # Checklist for submitter - [x] QA'd all new/changed functionality manually ## fleetd/orbit/Fleet Desktop - [x] If the change applies to only one platform, confirmed that `runtime.GOOS` is used as needed to isolate changes This is a macOS-only FMA manifest regeneration — no Go code, no schema, no fleetd/orbit runtime changes. The remaining template sections (changes file, SQL/input validation, timeouts, automated tests, migrations, config settings, fleetd compatibility/auto-update) don't apply; prior custom-tap bumps (#49563, #50651) likewise carry no changes file. |
||
|
|
600fbf461d |
Update fleet desktop FMA to v1.4.0 (#49910)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #45524 Release alongside v4.90.0 release. Don't release prior FMA update of Fleet Desktop macOS to 1.4.0 https://github.com/fleetdm/fleet/actions/runs/30112916197 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Updated the Fleet Desktop Homebrew cask to version 1.4.0. * Downloads now use the official Fleet Desktop distribution URL. * Updated the project homepage reference. * **Maintenance** * Adjusted automatic update detection to use manual, release-based versioning. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
b668734d5c |
Remove Fig FMA (cask removed from Homebrew upstream) (#50483)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** NA Removes the **Fig** Fleet-maintained app. Its Homebrew cask no longer exists. Homebrew deleted the `fig` cask in [`a36fac3b75`](https://github.com/Homebrew/homebrew-cask/commit/a36fac3b75f633a9c787c4c73fc46606939947a3) on **2026-08-04**, the end of a long deprecation: | Date | Upstream change | |---|---| | 2024-08-03 | `fig: deprecate` | | 2025-08-02 | `fig: disable` | | 2026-08-04 | `fig: remove cask` | `https://formulae.brew.sh/api/cask/fig.json` now returns **404**, so the nightly ingester panics and no maintained apps are generated at all: ``` {"time":"2026-08-04T02:38:58.15272663Z","level":"INFO","msg":"ingesting homebrew app","name":"fig"} panic: ingesting homebrew app: app not found in brew API ``` Note that `"frozen": true` does **not** fix this — that flag only gates the output write, and the ingester still fetches the cask first and panics on the 404. Removing the input is the fix. There is no successor cask to migrate to. Fig was acquired by AWS and folded into Amazon Q Developer CLI, which is not distributed via Homebrew (`amazon-q`, `amazon-q-developer-cli`, `q-cli`, and `codewhisperer` all 404), and `fig.io` itself now returns 503. ### Changes - Deleted `ee/maintained-apps/inputs/homebrew/fig.json` - Deleted `ee/maintained-apps/outputs/fig/darwin.json` - Removed the `fig/darwin` entry from `ee/maintained-apps/outputs/apps.json` - Deleted the `Fig` icon component and its `index.ts` import/map entry - Deleted `website/assets/images/app-icon-fig-60x60@2x.png` The output file is deleted rather than orphaned so the PR validator's changed-app detector doesn't keep validating a removed app. # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] QA'd all new/changed functionality manually Verified `apps.json` still parses and the `fig/darwin` slug is gone (1390 apps remain, `figma` untouched), `tsc --noEmit` is clean after removing the `Fig` icon import, and no references to `fig`, `com.mschrage.fig`, `fig/darwin`, or `repo.fig.io` remain anywhere in the repo. > [!NOTE] > Existing hosts with Fig installed will no longer see it as a Fleet-maintained app. The app is end-of-life upstream, so there is no version for Fleet to track or patch to. |
||
|
|
bbbe93d1b7 |
Bump Zoom Rooms FMA (custom-tap) to 7.1.5.13403 (#50442)
**Related issue:** NA — routine custom-tap cask maintenance # Checklist for submitter - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [x] Timeouts are implemented and retries are limited to avoid infinite loops ## Testing - [x] `go test ./ee/maintained-apps/...` passes - [ ] QA'd all new/changed functionality manually (installer metadata, URL, and checksum verified as below; not yet deployed through a Fleet server) No `changes/` file, consistent with prior custom-tap cask-bump PRs (#49563, #48028, #45912). ## Version bump details | | Old | New | |---|---|---| | Version | 7.1.0.13088 | 7.1.5.13403 | - **Upstream source:** `https://zoom.us/client/latest/ZoomRooms.pkg` redirects to `https://cdn.zoom.us/prod/7.1.5.13403/ZoomRooms.pkg` (Zoom does not expose a parseable Zoom Rooms version feed, per the cask's `livecheck` block, so this is the standard manual-bump discovery method). - **New download URL:** `https://cdn.zoom.us/prod/7.1.5.13403/ZoomRooms.pkg` - **sha256:** `3b303bc150a3a5d639f09439abf84f2117784a2124ba660f7c73917ba5ef9ab6` - Downloaded installer verified: 587 MB, `xar archive` (matches expected `.pkg` format). **Reviewer note:** `api/zoom-rooms.json` was updated mechanically because `regenerate.sh` requires macOS. Before merging, run `ee/maintained-apps/inputs/homebrew/custom-tap/regenerate.sh` locally and confirm `git diff` is clean for `api/zoom-rooms.json`. --- _Generated by [Claude Code](https://claude.ai/code/session_01U8YEGYFy9Uc88wvyg96ySE)_ <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Updates** * Updated Zoom Rooms for macOS to version 7.1.5.13403. * Refreshed download links and package verification checksums. * Installation and uninstallation behavior remains unchanged. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
183aa052d2 |
Defuse Docker Desktop's install-on-quit updater in macOS FMA install script (#50451)
**Related issue:** Customer reports of failed Docker Desktop updates from self-service on macOS. ## Details The reported error is Docker Desktop's own updater speaking, not Fleet's: ``` failed to back up /Applications/Docker.app before update: renaming (moving) file from /Applications/Docker.app to /Applications/Docker.app.back: rename /Applications/Docker.app /Applications/Docker.app.back: file exists ``` Hosts showing "update available" in self-service are exactly the hosts where Docker Desktop has already downloaded and staged its **own** self-update at `~/Library/Application Support/com.docker.install/in_progress/Docker.app`. When the FMA install script gracefully quits Docker Desktop, that quit triggers Docker's install-on-quit updater, which renames `Docker.app` → `Docker.app.back` and moves the staged copy into place — racing the script's own `mv`/`rm`/`cp` of `/Applications/Docker.app`. The script previously cleaned up after this race (leftover `.back` bundle and staged copy); this PR prevents it instead: - Remove the entire `com.docker.install` staging directory (staged bundle + updater state) **before** quitting the app, so the quit can't trigger Docker's updater. Same whole-directory removal the uninstall's `post_uninstall_scripts` already does. - Wait out (bounded, 30s) any updater already in flight before touching `/Applications/Docker.app`. - Output regenerated via `go run ./cmd/maintained-apps -slug docker-desktop/darwin`; version pinned at 4.85.0, installer URL/sha unchanged, only the install script ref changed. Hosts already wedged with a stale `Docker.app.back` self-heal: the script still removes `.back` before copying the new bundle. ## Local validation (macOS arm64, Docker Desktop 4.84.0 running) - shellcheck and `bash -n` clean; embedded output script matches input byte-for-byte with correct sha256[:8] ref - Downloaded the pinned 4.85.0 DMG; sha256 matches the manifest - Seeded affected-host state (non-empty `/Applications/Docker.app.back`, staged `com.docker.install/in_progress/Docker.app`) and ran the shipped script: staging dir removed before quit, running Docker Desktop (VM + active build) quit gracefully, wait loop did not hang - Wait loop unit-tested against a live process matching `com\.docker\.install`: waits until it exits, 30s cap # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [x] Timeouts are implemented and retries are limited to avoid infinite loops ## Testing - [x] QA'd all new/changed functionality manually |
||
|
|
a586a53f9a |
Unfreeze Adobe Acrobat Pro (macOS) (#50402)
Automated unfreeze probe. Removes `"frozen": true` and regenerates the output manifest so `test-fma-darwin-pr-only` can validate `adobe-acrobat-pro/darwin` at its current upstream version. Frozen since: 2026-06-23 (#48089, automated FMA update run) Version: 26.001.21691 -> 26.001.21771 Upstream Homebrew reports 26.001.21771, newer than the pinned 26.001.21691 that #50370 set from the delivered installer, so this is a genuine forward bump rather than a regression. The cask uses a stable "latest" download URL with `sha256: no_check`, so the regenerated diff is version and `patched` query only. Draft until validation reports. Merge only if the FMA checks are green and the validate shard actually ran for this slug. <!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** NA # Checklist for submitter - [x] QA'd all new/changed functionality manually — pending CI validation, see above. --- _Generated by [Claude Code](https://claude.ai/code/session_01LvsXk65MD2s93jeGJuHAk5)_ Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
2833401d12 |
Add Dante Controller as a macOS FMA (#50378)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #50377 # What this does Adds **Dante Controller** as a macOS Fleet-maintained app, from Homebrew cask [`dante-controller`](https://formulae.brew.sh/cask/dante-controller) (4.18.1.1). The cask ships a DMG containing `DanteController.pkg`, so `installer_format: "dmg"` with the standard mount-and-`installer -pkg` install script — the same shape as AdGuard, Adobe Acrobat Pro, and other existing DMG+pkg FMAs. Uninstall is fully generated from the cask's directives (2 `launchctl` services, 8 `pkgutil` receipt IDs, 3 zap trash paths) — no custom scripts. Windows is out of scope: no `Audinate.DanteController` winget package exists. See #50377 for the full feasibility analysis, including why Dante Virtual Soundcard was excluded on both platforms. ## Notes - **Identity verified against the real installer**, not cask metadata. Extracted `DanteController.pkg` from the DMG and read the app bundle's `Info.plist`: `CFBundleIdentifier` = `com.audinate.dante.DanteController`, confirming the input's `unique_identifier`. This needed checking because the cask's preferences path uses a *different* domain (`com.audinate.dante.controller`). - `CFBundleShortVersionString` and `CFBundleVersion` are both `4.18.1.1`, matching the cask version, so the exists/patched queries reconcile with osquery's `apps` table. - Installer SHA confirmed against a local download of the DMG (`4515cd12…38ff`) — matches both the cask and the generated output. - **Arch split.** The cask ships separate arm64/x64 DMGs; the brew API's top-level URL (which the ingester pins) is the arm64 build. This matches the behavior of the ~173 existing darwin FMAs with arch-specific URLs. - **`auto_updates true`.** Dante Updater self-patches, so hosts may drift ahead of the FMA-pinned version. - Ships a new catalog icon, extracted from the app bundle's own `.icns` — not sourced from the web. # Checklist for submitter - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] FMA CI validator (install → detect → uninstall) **passes** on the macOS runner — [run 30682752130](https://github.com/fleetdm/fleet/actions/runs/30682752130/job/91322957939) (`Found app: 'Dante Controller' at /Applications/Dante Controller.app, Version: 4.18.1.1` → `All 1 apps were successfully validated.`) - [x] Generated output verified locally: installer SHA matches the cask, exists/patched queries checked against the app bundle's `Info.plist`, `apps.json` is valid JSON with a description filled in. - [x] QA'd all new/changed functionality manually --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
352d1f9070 |
Unfreeze NVIDIA GeForce NOW (macOS) (#50392)
Automated unfreeze probe. Removes `"frozen": true` and regenerates the output manifest so `test-fma-darwin-pr-only` can validate `nvidia-geforce-now/darwin` at its current upstream version. Frozen since: 2026-06-15 (#47645, automated FMA update run) Version: 2.0.85.133 -> 2.0.87.131 Upstream Homebrew cask reports 2.0.87.131, which is newer than the pinned 2.0.85.133, so this is a genuine forward bump rather than a regression. Note: the regenerated manifest also picks up a newer `uninstall_script_ref`, because the frozen output missed the script-template updates that landed on main while it was pinned. Draft until validation reports. Merge only if the FMA checks are green and the validate shard actually ran for this slug. **Related issue:** NA # Checklist for submitter - [x] QA'd all new/changed functionality manually — pending CI validation, see above. --- _Generated by [Claude Code](https://claude.ai/code/session_01F3HnFWdGjLMbqHdxWZXBAo)_ Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
24b24ae699 |
Unfreeze Logi Options+ (macOS) (#50372)
Automated unfreeze probe. Removes `"frozen": true` and regenerates the output manifest so `test-fma-darwin-pr-only` can validate `logi-options+/darwin` at its current upstream version. Frozen since: 2026-04-03 (#42984, automated FMA update run) Version: 2.4.903778 -> 2.5.926888 Note: the regenerated manifest also picks up a newer `uninstall_script_ref`, because the frozen output missed the script-template updates that landed on main while it was pinned. Draft until validation reports. Merge only if the FMA checks are green and the validate shard actually ran for this slug. **Related issue:** NA # Checklist for submitter - [x] QA'd all new/changed functionality manually — pending CI validation, see above. --- _Generated by [Claude Code](https://claude.ai/code/session_01EBxhs5D65LRUwCEJejBLJH)_ Co-authored-by: allenhouchins <allen@fleetdm.com> |
||
|
|
2747d82328 |
Unfreeze Keeper Password Manager (macOS) (#50371)
Automated unfreeze probe. Removes `"frozen": true` and regenerates the output manifest so `test-fma-darwin-pr-only` can validate `keeper-password-manager/darwin` at its current upstream version. Frozen since: 2026-02-10 (#39623, automated FMA update run) Version: 18.2.1 -> 18.5.0 Draft until validation reports. Merge only if the FMA checks are green and the validate shard actually ran for this slug. **Related issue:** NA # Checklist for submitter - [x] QA'd all new/changed functionality manually — pending CI validation, see above. --- _Generated by [Claude Code](https://claude.ai/code/session_01EBxhs5D65LRUwCEJejBLJH)_ Co-authored-by: allenhouchins <allen@fleetdm.com> |
||
|
|
0177c98f9a |
Regenerate macOS FMA install scripts (#50264)
Automated ingestion of latest Fleet-maintained app data. --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
0594f653dd |
Propagate errors in macOS FMA install scripts (#50198)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #50056 ## Summary macOS FMA install scripts never checked the exit code of the install command (`installer -pkg` / `cp -R`) — the script's last statement is always `relaunch_application`, which exits 0 — so a failed install exited 0 and Fleet reported it installed. **Generated scripts.** The generator now propagates failure: both `installer -pkg` variants end with `|| exit $?`, and the `cp -R` path exits non-zero on a failed copy, removes the partial copy (so a failed fresh install isn't inventoried as the new version), and restores the app it moved aside. Regenerated `outputs/` for non-frozen generated apps are produced by the `ingest-maintained-apps` job, so they aren't committed here. **Custom scripts.** 9 of the 18 custom input scripts had the same bug and are fixed with the same pattern: Google Chrome, Zoom, Microsoft Edge, GitHub Desktop, Webex, Cycling '74 Max, Pd, Grammarly Desktop, and P4V. The DMG-based ones also now fail before removing/moving the existing app when the mount or staging copy fails, so a bad download can't leave a host with nothing. Their `outputs/*/darwin.json` are updated in the same commit (script content + recomputed 8-char sha256 ref, versions untouched), following the precedent of #49033. Docker Desktop (`set -euo pipefail`), 1Password/Slack/LogiTune (installer is the last statement), and the rest already propagated errors. **Frozen apps.** The ingest job never rewrites frozen outputs, so the 10 frozen apps with generated scripts (adobe-acrobat-pro, comet, evernote, firealpaca, keeper-password-manager, nvidia-geforce-now, pritunl, vnc-viewer, wins, worksheet-crafter) had the fix applied directly to their published `darwin.json` scripts — the exact text the current generator would emit, with pinned versions/URLs/hashes untouched. The 11th frozen app (logi-options+) uses a custom script that was already correct and in sync. # Checklist for submitter - [x] Changes file added for user-visible changes in `changes/` (`changes/50056-fma-install-scripts-ignore-errors`). - [x] Untrusted data interpolated into shell scripts is validated against shell metacharacters. (No new untrusted interpolation: the guard reuses the same curated cask-derived name the adjacent lines already interpolate.) ## Testing - [x] Added/updated automated tests (three generator tests: pkg, pkg-with-choices, cp-R restore — the last now pins the exact emitted block). - [x] All 19 updated output manifests validated: embedded scripts pass `bash -n`, refs match `sha256(script)[:8]`, refs map stays key-sorted like Go's encoder. - [x] QA'd all new/changed functionality manually. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * macOS Fleet-maintained app installations now fail fast when installers, DMG extraction/mounting, or app copy steps error. * If an upgrade fails, the system removes any partial app and restores the previously installed version when available. * Improved robustness during app staging/copying, including safer handling of paths with spaces or special characters. * **Tests** * Added unit coverage to verify installer failure propagation and rollback behavior. * **Documentation** * Clarified that the install-script error handling applies to both generated and custom scripts, including already-published frozen apps. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
344e5aa5a2 |
Remove Dynalist macOS Fleet-maintained app (cask deleted from homebrew-cask) (#50215)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** NA — fixing a failing scheduled "Update Fleet-maintained apps" run. Removes the **macOS** Dynalist Fleet-maintained app. The Windows (winget) FMA is unaffected and stays. ## Why The `dynalist` cask was deleted from homebrew-cask on 2026-07-30 ([commit `adac21ffc4`](https://github.com/Homebrew/homebrew-cask/commit/adac21ffc401)), completing Homebrew's full deprecation lifecycle: - `deprecate!` 2024-07-29, `because: :unmaintained` - `disable!` 2025-07-29 - cask file removed 2026-07-30 `https://formulae.brew.sh/api/cask/dynalist.json` now returns 404, so the scheduled ingester panics: ``` {"level":"INFO","msg":"ingesting homebrew app","name":"Dynalist"} panic: ingesting homebrew app: app not found in brew API ``` Marking the app `"frozen": true` does **not** fix this — the ingester fetches the cask JSON before the frozen flag is consulted (`cmd/maintained-apps/main.go`), so removal is the only fix for a dead upstream cask. ## What changed Deletions only (39 lines, no additions): - `ee/maintained-apps/inputs/homebrew/dynalist.json` — deleted - `ee/maintained-apps/outputs/dynalist/darwin.json` — deleted - the `dynalist/darwin` entry in `ee/maintained-apps/outputs/apps.json` — removed; `dynalist/windows` remains ## Deliberately kept Because the Windows FMA still needs them: - `ee/maintained-apps/outputs/dynalist/windows.json`, `ee/maintained-apps/inputs/winget/dynalist.json`, and its install/uninstall scripts - `frontend/pages/SoftwarePage/components/icons/Dynalist.tsx` and its `dynalist:` mapping in `icons/index.ts` — the map is keyed by lowercased app name and is shared across platforms - `website/assets/images/app-icon-dynalist-60x60@2x.png` — keyed by slug token, still serving the Windows entry in the app library ## Note for reviewers Hosts that currently have the macOS Dynalist FMA installed will lose the maintained-app entry on the next sync. This matches the behavior of prior FMA removals (Nocturnal #50050, Dell Display Manager #47420, Messenger #46541). # Checklist for submitter - [x] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. Not applicable — consistent with prior FMA removal PRs, which do not add a changes file. ## Testing - [x] QA'd all new/changed functionality manually Verified that `ee/maintained-apps/outputs/apps.json` still parses as valid JSON (1381 apps) and that `Dynalist` now resolves to only `dynalist/windows`. Confirmed the 404 against the brew API and read the pre-removal cask at `adac21ffc4~1` to establish the deprecation reason. `git diff` confirms the change is deletions-only. |
||
|
|
1e8b96e03d |
Remove Yubikey Manager as a macOS FMA (#50109)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** N/A — fixes the failing scheduled "Update Fleet-maintained apps" workflow The `yubico-yubikey-manager` cask was removed from homebrew-cask on 2026-07-28 ([Homebrew/homebrew-cask@7ffabaa](https://github.com/Homebrew/homebrew-cask/commit/7ffabaad8fcc657dc90343844ad76a50bb60b945)) after being disabled on 2025-07-27 `because: :discontinued, replacement_cask: "yubico-authenticator"` — Yubico discontinued `yubikey-manager-qt` (the 1.2.5 installer this FMA pinned) in favor of Yubico Authenticator. The brew API now returns 404 for the token, so the maintained-apps ingester panics: ``` {"level":"INFO","msg":"ingesting homebrew app","name":"Yubikey Manager"} panic: ingesting homebrew app: app not found in brew API ``` Freezing the app in #50054 did not resolve this: `fetchCask` runs before the `frozen` flag is applied, so the ingester still fetches the cask and fails on the 404. This is the follow-up that PR called out. Removes Yubikey Manager as a **macOS** Fleet-maintained app, following the same pattern as #50050 (Nocturnal), #46541 (Messenger), and #47420 (Dell Display Manager): - `ee/maintained-apps/inputs/homebrew/yubico-yubikey-manager.json` — Homebrew input - `ee/maintained-apps/outputs/yubico-yubikey-manager/darwin.json` — macOS output data - `ee/maintained-apps/outputs/apps.json` — the `yubico-yubikey-manager/darwin` entry - `website/config/routes.js` — the bare `/software-catalog/yubico-yubikey-manager` redirect pointed at `-darwin`, which would now 404; retargeted to `-windows` The **Windows** FMA is unaffected and continues to update, so these are deliberately kept: - `ee/maintained-apps/inputs/winget/yubico-yubikey-manager.json` and its install/uninstall scripts - `ee/maintained-apps/outputs/yubico-yubikey-manager/windows.json` - the `yubico-yubikey-manager/windows` entry in `apps.json` - `frontend/pages/SoftwarePage/components/icons/YubikeyManager.tsx` and its `"yubikey manager"` mapping in `index.ts` - `website/assets/images/app-icon-yubico-yubikey-manager-60x60@2x.png` Also drops "Requires Rosetta 2." from the Windows entry's description in `apps.json`. Rosetta is macOS-only; the sentence was copy-pasted from the macOS entry, and with macOS gone the Windows page is what `/software-catalog/yubico-yubikey-manager` now resolves to. Descriptions in `apps.json` are hand-maintained — `updateAppsListFile` in `cmd/maintained-apps/main.go` only appends entries whose slug it doesn't already find, so it won't overwrite the edit. # Checklist for submitter - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] QA'd all new/changed functionality manually: - `go run ./cmd/maintained-apps -slug yubico-yubikey-manager/darwin` exits 0 with no panic and writes no files (before this change, the same run panicked on the brew 404). - `apps.json` still parses and holds 1377 apps; the only remaining `yubico-yubikey-manager` entry is `/windows`. - Grepped the repo for `yubico-yubikey-manager`: remaining hits are the winget input, its two script paths, the windows `apps.json` entry, and the retargeted website redirect. No automated tests added — this is a data-file removal with no new code paths. |
||
|
|
4b8a8435af |
Amend Docker Desktop patch policy SQL (#50041)
My workstation has Docker Desktop 4.84.0 (latest as of today) and was incorrectly failing the "macOS - Docker Desktop up to date" patch policy. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Bug Fixes** - Improved Docker Desktop patch-status detection on macOS by excluding application paths containing `.back` anywhere in the path, avoiding incorrect patching of nested/backup bundles. - **Improvements** - Enhanced Docker Desktop install and uninstall cleanup to remove stale `Docker.app.back` artifacts and related staged in-progress update copies (including cleanup during upgrade timing). - **Tests** - Updated macOS Docker Desktop ingestion/patched check expectations to match the new `.back` path filtering behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
95008e853d |
Freeze the macOS Yubikey Manager FMA (#50054)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** N/A Pins the macOS Fleet-maintained app for Yubikey Manager at its current output version, `1.2.5`, by setting `"frozen": true` on the Homebrew input. - `ee/maintained-apps/inputs/homebrew/yubico-yubikey-manager.json` — added `"frozen": true` The flag is read by the ingester into the manifest ([`homebrew/ingester.go`](https://github.com/fleetdm/fleet/blob/main/ee/maintained-apps/ingesters/homebrew/ingester.go)) and then consumed in two places: - [`cmd/maintained-apps/main.go`](https://github.com/fleetdm/fleet/blob/main/cmd/maintained-apps/main.go) skips overwriting `outputs/yubico-yubikey-manager/darwin.json` when the output file already exists, so the published version, installer URL, SHA256, and patch-policy query stop moving. - [`cmd/maintained-apps/validate/main.go`](https://github.com/fleetdm/fleet/blob/main/cmd/maintained-apps/validate/main.go) skips the app entirely during validation. `frozen` is tagged `json:"-"` on the manifest struct, so it does not appear in the output JSON — that file is intentionally left untouched by this PR. The Windows FMA (`inputs/winget/yubico-yubikey-manager.json`) is deliberately **not** frozen and continues to update. ## Note for reviewers While preparing this change I found that the `yubico-yubikey-manager` cask has been **removed from homebrew-cask**: ``` https://formulae.brew.sh/api/cask/yubico-yubikey-manager.json → 404 ``` The full cask list now contains only `pallotron-yubiswitch`, `yubico-authenticator`, and `yubihsm2-sdk`, and the token is not present in `inputs/homebrew/custom-tap/` either. This matches upstream: Yubico discontinued `yubikey-manager-qt` (the 1.2.5 installer this FMA pins) in favor of Yubico Authenticator. **Freezing does not resolve that 404.** The ingester fetches cask metadata *before* the frozen flag is applied, so the scheduled "Update Fleet-maintained apps" workflow is still expected to fail for this app with: ``` panic: ingesting homebrew app: app not found in brew API ``` Fully resolving that would mean removing the macOS FMA, the way #50050 did for Nocturnal (input, output, `apps.json` entry, frontend icon + mapping, website PNG). This PR is scoped to the freeze only, per the request; the removal can be a follow-up if that is the direction we want. # Checklist for submitter - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] QA'd all new/changed functionality manually — confirmed the edited input still parses as JSON, and traced the `frozen` flag through the ingester into both the output-write skip and the validation skip. No automated tests were added; this is a single data-file flag with no new code paths. --------- Co-authored-by: Kitzy <kitzy@kitzy.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> |
||
|
|
aea7c4068f |
Remove Nocturnal as a macOS FMA (#50050)
**Related issue:** N/A — fixes the failing scheduled "Update Fleet-maintained apps" workflow The `nocturnal` cask was removed from homebrew-cask on 2026-07-28 ([Homebrew/homebrew-cask@517db75](https://github.com/Homebrew/homebrew-cask/commit/517db75b78)) after being deprecated on 2024-07-27 and disabled on 2025-07-27, both `because: :unmaintained` (upstream repo's last push was in 2018). The brew API now returns 404 for it, so the maintained-apps ingester panics: ``` panic: ingesting homebrew app: app not found in brew API ``` This removes Nocturnal as a Fleet-maintained app, following the same pattern as #46541 (Messenger) and #47420 (Dell Display Manager): - `ee/maintained-apps/inputs/homebrew/nocturnal.json` — Homebrew input - `ee/maintained-apps/outputs/nocturnal/darwin.json` — macOS output data - `ee/maintained-apps/outputs/apps.json` — Nocturnal entry - `frontend/pages/SoftwarePage/components/icons/Nocturnal.tsx` and its import/mapping in `index.ts` - `website/assets/images/app-icon-nocturnal-60x60@2x.png` # Checklist for submitter - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] QA'd all new/changed functionality manually (verified `apps.json` still parses, no remaining `nocturnal` references, ESLint passes on the icons index) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Removed Apps** - Removed Nocturnal from the maintained application catalog. - Removed its installation and uninstallation support. - Removed the Nocturnal icon from software listings. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
d138998d84 |
Update Fleet-maintained apps (#49857)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added frozen status to Pritunl package configurations, preventing automatic version changes. * **Updates** * Refreshed maintained application packages across Windows and macOS, including Firefox, Bitwarden, Postman, Arc, Granola, PhpStorm, WebStorm, Bruno, and others. * Updated download links and integrity checks to match the latest available installers. * Improved version detection so upgrades are recognized correctly for each refreshed release. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
707199656d |
Update Fleet-maintained apps (#49813)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added/updated managed release definitions for many applications on both macOS and Windows. * Updated the Mozilla VPN installer script to better handle MSI installs in automation. * Marked Typora for frozen behavior in winget to prevent unintended updates. * **Bug Fixes** * Refreshed download links and integrity checksums across updated app versions. * Improved version detection for newly released builds. * **Improvements** * Enhanced uninstall behavior for select apps (additional cleanup/services and improved media handling for ONLYOFFICE macOS). <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
1a1b6e786a |
Add Box Tools Fleet-maintained app for Windows and macOS (#49779)
**Related issue:** Resolves #49738 Adds **Box Tools** as a Fleet-maintained app for **Windows** (winget `Box.BoxTools`) and **macOS** (Homebrew cask `box-tools`). ## Windows details (verified against the real installer) - Installer: `BoxToolsInstaller-AdminInstall.msi` (machine-wide admin MSI, `ALLUSERS=1`), x64. - MSI Property table verified with msitools: `ProductName` = `Box Tools`, `Manufacturer` = `Box`, `ProductVersion` = `4.32.0.1324` — all match the winget manifest, so `unique_identifier: "Box Tools"` and the generated exists query (`name = 'Box Tools' AND publisher = 'Box'`) match what osquery reports from the registry. No `program_publisher` override needed. - The winget manifest has no `Scope`, so `installer_scope: "machine"` is set in the input (confirmed by `ALLUSERS=1`). - ProductCode/UpgradeCode match the manifest; standard auto-generated machine-MSI install + upgrade-code uninstall scripts. - Downloaded SHA256 matches the manifest SHA (`9f5958...c5066`). - No sibling-name collision with the existing Box Drive FMA (its DisplayName is `Box`; matching is exact). ## macOS details Box Tools on macOS is **per-user only**: the cask installs the app bundles to `~/Library/Application Support/Box/Box Edit/`, Box's admin `.pkg` forbids the local system domain (`enable_localSystem="false"`), and [Box's large-scale deployment docs](https://support.box.com/hc/en-us/articles/360043695834-Large-Scale-Deployments-Box-Tools) instruct running the installer as the console user (multi-user Macs are not a supported configuration). Because the install location is outside osquery's `apps` directory scan paths, detection relies on osquery's LaunchServices enumeration (`_LSCopyAllApplicationURLs` in `genApps`), which surfaces the bundles regardless of location — verified against a live install where all four Box Tools bundles are LaunchServices-registered at the per-user path and appear in the `apps` table. - `unique_identifier: com.Box.Box-Edit` (verified `CFBundleIdentifier` of `Box Edit.app` in the DMG). - **Custom install script** (the cask's app artifacts are all `target:`-style, which the script generator skips, so the auto-generated script would be a no-op): resolves the console user (falling back to `lastUserName` when run while logged out), quits the Box apps, copies the four app bundles from the DMG's `Install Box Tools.app/Contents/Resources/` into the user's `~/Library/Application Support/Box/Box Edit/` (replicating the cask/pkg payload exactly), chowns them, and registers them with LaunchServices in both root and user contexts so inventory and box.com pick them up without a first manual launch. - **Custom uninstall script**: quits/kills the Box Tools processes and removes `Box Edit` from every local user's home. The parent `Box` directory is shared with Box Drive, so it is only removed if left empty. - The cask uses `sha256 :no_check` (rolling `currentrelease` URL) — the established FMA convention for such casks (same as Google Chrome/VS Code darwin); the server pins the hash of what it downloads at add time. - Cask version is `4.32` while `CFBundleShortVersionString` is `4.32.0`; the validator's prefix matching and the patched query's `version_compare` both treat these as consistent. ## Shared caveat ⚠️ Both installer URLs are rolling `currentrelease` links. On Windows the pinned SHA will drift when Box ships a new build until the FMA auto-update ingests the new manifest; macOS uses `no_check` per the cask. ## Icon Generated from the official 512×512 Box Tools icon shipped inside the vendor DMG via `tools/software/icons/generate-icons.sh` (frontend `BoxTools.tsx` + map entry, website `app-icon-box-tools-60x60@2x.png`). Both platforms share the icon via the common `name`/slug. # Checklist for submitter - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] Verified installer identity fields (MSI Property table, Info.plist bundle identifiers/versions) with msitools/PlistBuddy against the live installers; Windows output SHA matches the winget manifest. - [x] Verified on a live macOS install that the per-user Box Tools bundles are LaunchServices-registered and visible to osquery's `apps` table. - [ ] FMA validation CI (Windows + macOS runners) to confirm install/uninstall/detection. - [ ] QA'd all new/changed functionality manually <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added Box Tools support for both Windows and macOS. * Added Box Tools install, upgrade, and uninstall handling for the maintained app catalog. * Published Box Tools metadata to the software catalog (including platform-specific entries and version targeting). * Added a Box Tools icon to the software interface for improved name matching. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
ebda171dad |
Add Prisma Access Browser as a macOS FMA (#49641)
**Related issue:** Resolves #49328 Adds Prisma Access Browser (Homebrew cask `prisma-access-browser`) as a macOS Fleet-maintained app. ## Notes for reviewers **Naming/slug:** This product already ships as a Windows FMA named **Prisma Browser** (`prisma-browser/windows`, added in #46409 — "Prisma Browser" is Palo Alto's current branding for what was Prisma Access Browser). The FMA library combines platforms into one row by slug token, so this entry uses `name: "Prisma Browser"` and `slug: "prisma-browser/darwin"` while keeping `token: "prisma-access-browser"` for the cask lookup (same token≠slug pattern as the `libreoffice`, `ollama`, and `zoom` inputs). Both platforms now show as a single "Prisma Browser" library row and share the existing Prisma icon, so no icon changes are needed. **Identity verified against the real installer** (downloaded the full pkg; SHA256 matches the cask): - `CFBundleIdentifier` = `com.talon-sec.Work` (from the pkg Distribution/PackageInfo), so the exists query matches osquery's `apps` table. - `CFBundleShortVersionString` = `150.49.5.129`, exactly the cask version before the comma, so the patched query's `bundle_short_version` comparison reconciles. - Installs `Prisma Access Browser.app` machine-wide to `/Applications` as root; requires macOS 12+. Not a bootstrapper. **Install script filename:** the cask's pkg artifact (`PrismaBrowser-universal.pkg`) doesn't match the URL basename, but the vendor serves that name via `Content-Disposition`, which is what the server stores (`FilenameFromResponse`) and what orbit names the downloaded installer on both download paths — so the auto-generated install script works without a custom script. **Installer URL** is pinned (version + hash in the path), so no latest-redirect SHA-drift risk. # Checklist for submitter ## Testing - [x] Verified installer identity fields (bundle ID, versions, SHA256) against the real pkg - [x] `go test ./ee/maintained-apps/... ./cmd/maintained-apps/...` passes; generated JSON validated - [ ] FMA validator run (CI) confirms install/uninstall on a macOS host |
||
|
|
4303188e2d |
Update custom-tap casks: Druva inSync 8.1.3, Fleet Desktop 1.3.4, Zoom Rooms 7.1.0.13088 (#49563)
**Related issue:** NA — routine custom-tap cask maintenance ## What Bump three custom-tap casks to their latest upstream releases and regenerate the api JSONs (`regenerate.sh`) and FMA output manifests (`go run cmd/maintained-apps/main.go --slug=<token>/darwin`): | Cask | Old | New | |------|-----|-----| | Druva inSync | 7.6.1 (r110931) | 8.1.3 (r110967) | | Fleet Desktop | 1.3.2 | 1.3.4 | | Zoom Rooms | 7.0.5.12655 | 7.1.0.13088 | XCreds 5.9 (9148) is still the latest upstream release and is unchanged. ## Why / reviewer notes - **Druva:** the 8.0.0 phased rollout never reached the public CDN (its `.dmg` 404'd since March); 8.1.3 is the first 8.x build served from `downloads.druva.com`. Druva 8.x officially supports macOS 14 (Sonoma)+ only, so `depends_on` moves from `:big_sur` to `:sonoma` (informational — the ingester doesn't read it). - **`api/xcreds.json` +2 lines with no cask change:** `regenerate.sh` rebuilds all api JSONs, and current Homebrew now emits `pinned`/`pinned_version` fields. Expected drift; anyone running the script gets the same output. - **Verification done against the downloaded installers:** - sha256 values computed locally from the actual downloads; the Druva download's SHA1 matches the checksum published on Druva's download page. - Installer internals inspected: the Druva dmg still contains `Install inSync.pkg`, and pkg receipt IDs are unchanged across all three (`com.druva.inSync.pkg` @ 8.1.3, `com.fleetdm.fleet-desktop` @ 1.3.4, `us.zoom.pkg.zp` @ 7.1.0.13088), so existing install/uninstall stanzas remain valid. - No `changes/` file, consistent with prior cask-bump PRs (#45912, #48028) and the automated FMA-ingestion PRs. # Checklist for submitter - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] `go test ./ee/maintained-apps/...` passes - [ ] QA'd all new/changed functionality manually (installer metadata, URLs, and checksums verified as above; not yet deployed through a Fleet server) |
||
|
|
0e587dc80c |
Add Firefox Nightly and Firefox Developer Edition Fleet-maintained apps (#49501)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** #49149 Adds **Firefox Nightly** and **Firefox Developer Edition** as Fleet-maintained apps for macOS and Windows (4 new FMAs). Mozilla VPN (also requested in #49149) is not included, so this doesn't close the issue. ## What's included | App | macOS | Windows | |-----|-------|---------| | Firefox Nightly | Homebrew cask `firefox@nightly`, bundle ID `org.mozilla.nightly` | MSIX `Mozilla.Firefox.Nightly.MSIX` (no exe package exists in winget) | | Firefox Developer Edition | Homebrew cask `firefox@developer-edition`, bundle ID `org.mozilla.firefoxdeveloperedition` | NSIS exe `Mozilla.Firefox.DeveloperEdition`, machine scope, `/S` | All identity fields were verified against the real installers, not catalog metadata: bundle IDs read from the DMGs' `Info.plist`, MSIX identity ("Firefox Nightly" / publisher "Mozilla Corporation") read from the package's `AppxManifest.xml`, and DevEd's registry identity (`Firefox Developer Edition (x64 en-US)`, publisher `Mozilla`, versionless DisplayName) confirmed in Mozilla's NSIS installer source at the shipped release tags. The MSIX install/uninstall scripts follow the established Slack/Claude pattern (provision machine-wide + register for the logged-on user via scheduled task). ## Pre-release version handling (macOS) Mozilla's pre-release bundles report only the base version in `CFBundleShortVersionString` (`153.0` for cask version `153.0b13`), which would make the generated patch policy flag every up-to-date install as outdated. Instead, the patch policies for these two channels compare **`bundle_version`** (`CFBundleVersion` encodes the build date, e.g. `15326.7.15`), so individual pre-release builds are distinguishable: - **Nightly**: derived directly from the build timestamp embedded in the cask version (`154.0a1,2026-07-17-09-27-13` → `15426.7.17`). No external calls. - **Developer Edition**: build date resolved from Mozilla's [buildhub](https://buildhub.moz.tools) (indexed as product `firefox`, channel `aurora`). On buildhub failure the ingester logs a warning and falls back to a base-version comparison (cycle granularity) rather than failing the run; it self-corrects on the next scheduled ingestion. The macOS validator gets a matching exception accepting `base + "b"` versions for the DevEd bundle ID. Both computed values were verified against the actual DMGs' `Info.plist`. **Known limitation (Windows):** patch detection for Developer Edition on Windows is only accurate to the release cycle (153 vs 154), not between betas (b13 vs b14) — the registry `DisplayVersion` and winget's `PackageVersion` are both the base version (`151.0`) with no beta number, and osquery's `programs` table has nothing finer to compare. Nightly on Windows is day-granular since its MSIX package version encodes the build date. Documented in #49149. ## Other changes - Tightened `firefox_uninstall.ps1` (release channel FMA): its `*Firefox*` match would have uninstalled Developer Edition (or ESR) first depending on registry enumeration order. Now matches `Mozilla Firefox*` and excludes ESR; `firefox/windows` output regenerated. - Channel-specific icons generated from the real app bundles (frontend components + website PNGs), with map keys covering both catalog and inventory names. ## Why Firefox Beta is not included Beta (requested in #49149) was deliberately dropped: - On Windows, the Beta exe registers the same identity as release Firefox (`Mozilla Firefox (x64 en-US)`), making it indistinguishable in inventory. The only distinct package is `Mozilla.Firefox.Beta.MSIX`, which has no `en-US` winget locale manifest (only `en`), which the ingester requires. - On macOS, Beta shares both the bundle ID (`org.mozilla.firefox`) and the install path (`/Applications/Firefox.app`) with release Firefox, so installing it silently replaces a release install. ## Notes for reviewers - Nightly URLs are date-stamped and refresh with the daily FMA ingestion; within-cycle Nightly darwin builds share a `CFBundleVersion` date so same-day rebuilds are indistinguishable. - DevEd's winget package lags Mozilla's releases (winget latest is 151.0 vs current 153.0b13); the FMA tracks winget as usual. - The `CFBundleVersion` format (`<major><yy>.<M>.<D>`, unpadded) is an inferred contract of Mozilla's build system, verified against both shipped DMGs; if it ever changes, patch status fails visibly (reports unpatched), not silently. # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [x] Timeouts are implemented and retries are limited to avoid infinite loops ## Testing - [x] Added/updated automated tests - [ ] QA'd all new/changed functionality manually <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added deployment support for Mozilla Firefox Developer Edition and Firefox Nightly on macOS and Windows (including Homebrew/Winget inputs and platform-specific install/uninstall workflows). * Added new catalog entries and dedicated UI icons for both Firefox variants. * **Bug Fixes** * Improved macOS “patched” detection and version matching for Developer Edition and Nightly builds. * Enhanced Homebrew ingestion by resolving build information (with fallback when unavailable). * Refined Windows uninstallation matching to target the correct Firefox release channels and avoid ESR. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
d839a386cb |
Add Smallstep Agent as a macOS FMA (#49393)
Adds Smallstep Agent (com.smallstep.Agent) as a maintained macOS app including: - Homebrew input config and darwin output with install/uninstall scripts - Entry in apps.json catalog - Frontend icon component and icon map registration - App icon asset for the website <!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #49151 # 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. - [ ] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [ ] Timeouts are implemented and retries are limited to avoid infinite loops - [ ] If paths of existing endpoints are modified without backwards compatibility, checked the frontend/CLI for any necessary changes ## Testing - [ ] Added/updated automated tests - [ ] Where appropriate, [automated tests simulate multiple hosts and test for host isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing) (updates to one hosts's records do not affect another) - [ ] QA'd all new/changed functionality manually For unreleased bug fixes in a release candidate, one of: - [ ] Confirmed that the fix is not expected to adversely impact load test results - [ ] Alerted the release DRI if additional load testing is needed ## Database migrations - [ ] Checked schema for all modified table for columns that will auto-update timestamps during migration. - [ ] Confirmed that updating the timestamps is acceptable, and will not cause unwanted side effects. - [ ] Ensured the correct collation is explicitly set for character columns (`COLLATE utf8mb4_unicode_ci`). ## New Fleet configuration settings - [ ] Setting(s) is/are explicitly excluded from GitOps If you didn't check the box above, follow this checklist for GitOps-enabled settings: - [ ] Verified that the setting is exported via `fleetctl generate-gitops` - [ ] Verified the setting is documented in a separate PR to [the GitOps documentation](https://github.com/fleetdm/fleet/blob/main/docs/Configuration/yaml-files.md#L485) - [ ] Verified that the setting is cleared on the server if it is not supplied in a YAML file (or that it is documented as being optional) - [ ] Verified that any relevant UI is disabled when GitOps mode is enabled ## fleetd/orbit/Fleet Desktop - [ ] 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)) - [ ] If the change applies to only one platform, confirmed that `runtime.GOOS` is used as needed to isolate changes - [ ] Verified that fleetd runs on macOS, Linux and Windows - [ ] 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 * **New Features** * Added Smallstep Agent for macOS software management. * Added version detection and upgrade support for Smallstep Agent. * Added installation, uninstallation, and app relaunch handling. * Added Smallstep Agent metadata, Security categorization, and software icon. * **Bug Fixes** * Ensured Smallstep Agent versions consistently use the expected `v` prefix. * **Tests** * Added coverage for missing, prefixed, and unprefixed version formats. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
a91afbf348 |
Update Fleet-maintained apps (#49404)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Updates** * Updated maintained app metadata for the latest releases of 3DF Zephyr, ChatGPT, Claude, Cursor, Discord, Evernote, Fastmail, Fing, JetBrains Toolbox, Kiro CLI, Miro, Notepad.exe, Opera, Portfolio Performance, Rocket.Chat, Signal, Slicer, Tailscale, Tower, Visual Studio Code, Vivaldi, WebCatalog, and Zen Browser. * Refreshed installer download links, version detection thresholds, and integrity checks to match the new releases. * Updated Fing’s installer format to use ZIP artifacts. * Corrected Mimestream’s uninstall configuration to point to the right script reference. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
1a81e3551f |
Add Mozilla VPN as a macOS and Windows FMA (#49284)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #49149 Adds **Mozilla VPN** as a Fleet-maintained app for both macOS (Homebrew cask `mozilla-vpn`) and Windows (winget `Mozilla.VPN`), version 2.38.0. Identity fields verified against the real installers (not catalog metadata): | | macOS | Windows | |---|---|---| | `unique_identifier` | `org.mozilla.macos.FirefoxVPN` (CFBundleIdentifier from pkg PackageInfo) | `Mozilla VPN` (MSI `ProductName`) | | Publisher | — | `Mozilla Corporation` (MSI `Manufacturer` = winget locale, no override needed) | | Format/type | `pkg` | `msi` (winget `wix`, machine scope, `ALLUSERS=1`) | - Install/uninstall scripts auto-generated (machine-scope MSI + cask artifacts/zap) — no custom scripts. - Generated SHAs match the manifests (macOS `2803d4b4…`, Windows `11a270b3…`). - No bootstrapper (`ARPSYSTEMCOMPONENT` absent); pinned installer URLs; no risk flags. - On Windows, osquery reports `programs.version` as `2.38.0.0` vs the FMA's `2.38.0`; `version_compare` treats a fresh install as ≥ target, so the patch policy reports patched correctly. - New app icon generated (`MozillaVpn.tsx`, website PNG, `index.ts` map key `"mozilla vpn"` shared by both platforms). # Checklist for submitter - [ ] QA'd all new/changed functionality manually |
||
|
|
66a8791247 |
Update Fleet-maintained apps (#49196)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Refreshed maintained-app listings across macOS and Windows with updated versions and downloads (e.g., Postman, DataGrip, OneDrive, Zed, CMake, Proton VPN, and more). * Updated ChatGPT macOS installer format to use ZIP artifacts. * **Bug Fixes** * Improved uninstall/upgrade handling for ChatGPT and Gemini, including safer app quitting/relaunch and more targeted cleanup. * Enhanced Weasis Windows uninstall to remove all related MSI products discovered via upgrade codes. * Refreshed installer integrity checks for DBeaver Enterprise and DBeaver Ultimate. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
4a219a2c72 |
Update Fleet-maintained apps (#49055)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Updated maintained app entries so users get the latest releases for AltTab, Badgeify, BetterTouchTool, EM Client, Mendeley Reference Manager, Setapp, Signal, Tuple, Webex, WeChat, WhatsApp, and Worksheet Crafter. * Refreshed version checks and download details to match the newest available installers. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
0fda179e92 |
Fix osascript is-running checks across 15 FMA custom scripts (#49033)
**Related issue:** Resolves #48638, resolves #48225 # Checklist for submitter If some of the following don't apply, delete the relevant line. - [ ] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [x] Timeouts are implemented and retries are limited to avoid infinite loops ## Testing - [x] QA'd all new/changed functionality manually ## Details Follow-up to #49030 (GitHub Desktop, #48639), which fixed one instance of this bug. An audit for the raw pattern found **15 more custom FMA scripts** carrying the same broken check that #42951 fixed in the generated helpers: gating on the **exit status** of `osascript -e 'application id "..." is running'`. osascript exits 0 whether it prints `true` or `false`, so a fully-quit app is misclassified as running whenever the bundle id resolves. Impact by script: - **Relaunch after every patch (user-visible — the filed bugs):** `zoom_install.sh` (#48638) and `google_chrome_install.sh` (#48225) set `*_WAS_RUNNING=true` unconditionally and reopen the app after `installer`, even when the user had nothing open. - **Broken check, no relaunch step (needless quit attempts, misleading logs):** install scripts for 1Password, Adobe CC, ExpressVPN, Grammarly, LogiTune, Microsoft Edge, P4V, Slack; uninstall scripts for Adobe CC, CleanMyMac, GPG Suite, Microsoft Word, P4V. Note `tell application id X to quit` against a not-running app can briefly launch it to deliver the quit event, so these aren't purely cosmetic either. The fix is the same one-line pattern everywhere, style-matched to each script (`local`/POSIX `[ ]`/top-level variants preserved): capture osascript output and compare it to `"true"`. No other behavior changed — this PR deliberately does not touch relaunch methods or console-user guards. Regenerated the 13 affected darwin manifests with `go run ./cmd/maintained-apps -slug <slug>`. All diffs are script-ref-only except `google-chrome/darwin.json`, which also picked up the legitimate upstream 150.0.7871.115 version bump during regeneration (the daily ingest cron would publish it tonight regardless). An unrelated `google-chrome/windows.json` winget bump was excluded. ## Manual QA Reproduced the bug live on macOS with the shipped Zoom script logic (ref `05e6a85c`) against a **fully-quit** Zoom (verified `is running` = `false`, zero processes): the exit-status check set `ZOOM_WAS_RUNNING=true` and the relaunch step launched Zoom — exactly the customer report, no background helpers needed. The corrected output-compare check on the same state correctly reported not running. Equivalent verification for the shared-helper variant was done against GitHub Desktop in #49030 (both the fully-quit and running→quit→relaunch paths). Verified for all 16 scripts: `bash -n` passes, no `if [!] osascript -e "application id ...` pattern remains anywhere under `inputs/homebrew/scripts/`, and every regenerated manifest ref carries the output-compare check. Remaining by-design behavior (unchanged): an app running with a dock icon but no visible window is genuinely running and will still be quit and relaunched; window-aware relaunching would be a separate enhancement. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved app detection before install/uninstall steps, reducing unnecessary quit attempts and making setup flows more reliable. * Updated several app install/uninstall workflows to better handle running apps, cleanup, and restart behavior. * Refined a few app package definitions to point to newer supported versions. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
598f425b66 |
Sync GitHub Desktop FMA install script with current quit/relaunch helpers (#49030)
**Related issue:** Resolves #48639 # Checklist for submitter If some of the following don't apply, delete the relevant line. - [ ] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [x] Timeouts are implemented and retries are limited to avoid infinite loops ## Testing - [x] QA'd all new/changed functionality manually ## Details The GitHub Desktop FMA uses a custom install script (`ee/maintained-apps/inputs/homebrew/scripts/github-desktop-install.sh`) that embeds its own copies of `quit_and_track_application` and `relaunch_application`. Those copies were frozen before two fixes landed in the generated helpers in `ee/maintained-apps/ingesters/homebrew/scripts.go`: - #42951 — check osascript **output** instead of exit status. `osascript -e '... is running'` exits 0 whether it prints `true` or `false`, so the stale `if ! osascript ...` guard never fired. The app was marked `APP_WAS_RUNNING=1` on **every** install with a GUI user logged in and relaunched after every patch — even from a fully-quit state. This is the root cause of #48639. - #43842 — relaunch via `launchctl asuser ... open -b` as the console user instead of `osascript ... to activate` (which is unreliable from a root context), plus the updated empty/root/loginwindow console-user guards. This PR replaces both embedded functions with the current scripts.go constants (verified byte-for-byte identical) and regenerates `ee/maintained-apps/outputs/github/darwin.json` via `go run ./cmd/maintained-apps -slug github`. The manifest diff is script-ref-only (`98ab6ed8` → `c91ea2b5`); version and uninstall script are unchanged. The other five custom scripts (Docker Desktop, OpenVPN Connect, Webex, Max, Pd) already carry the updated helpers — GitHub Desktop was the only one missed. ## Manual QA Tested the updated `quit_and_track_application` / `relaunch_application` functions on macOS against GitHub Desktop itself (`com.github.GitHubClient`): - **Fully quit (the bug scenario):** verified `is running` returns `false` and zero `GitHub Desktop.app` processes. Fixed functions set `APP_WAS_RUNNING=0` and the app stays closed. Running the old shipped check (`if ! osascript ...`) against the same state misclassifies the app as running (osascript exits 0 with output `false`) and would have relaunched it. - **Running:** quit succeeds, `APP_WAS_RUNNING=1`, app relaunches successfully afterward. - `bash -n` passes on the updated script. Note: hosts where the FMA was already added keep the baked `98ab6ed8` script until their instance refreshes the manifest. The by-design behavior "app running with dock icon but no visible window → relaunched with a window" is unchanged; window-aware relaunching would be a separate enhancement. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved GitHub Desktop installation behavior on macOS so the app is more reliably closed and reopened after install. * Better handles login/session edge cases, helping ensure the app relaunches in the correct user’s desktop session. * Reduces failed or missed relaunches when the installer is run with elevated permissions. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
fd0402278c |
Rename MacPaw Gemini app to Gemini 2 and fix Gemini app icons (#48819)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> Follow-up to #48817 (Gemini → Google Gemini rename). Renames MacPaw's Gemini maintained app to "Gemini 2" (matching the actual app, which installs as `Gemini 2.app`) and fixes the app icons for both Gemini apps: - `ee/maintained-apps/inputs/homebrew/gemini.json` and `ee/maintained-apps/outputs/apps.json`: name and description updated to "Gemini 2". The slug/token stays `gemini`. - The existing `Gemini.tsx` frontend icon and the website's `app-icon-gemini-60x60@2x.png` were actually Google's sparkle icon, so MacPaw's app showed the wrong icon, and after #48817 "Google Gemini" matched no icon key and fell back to the generic package icon. - `Gemini.tsx` is renamed to `GoogleGemini.tsx`, and a new `Gemini2.tsx` (generated from MacPaw's app bundle via `tools/software/icons/generate-icons.sh`) is added. - Icon map now resolves: `"gemini 2"` → MacPaw icon (FMA list + host inventory), `"google gemini"` → Google sparkle (FMA list), `gemini` → Google sparkle (host inventory, since Google's app installs as `Gemini.app`). - The website PNG for the `gemini` slug is replaced with MacPaw's icon; `app-icon-google-gemini-60x60@2x.png` was already correct. # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. ## Testing - [x] QA'd all new/changed functionality manually <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Updated the app listing to show **Gemini 2** instead of Gemini. * Added support for the new Gemini 2 branding across app icons and display labels. * **Bug Fixes** * Improved icon matching so Gemini-related entries display the correct artwork and naming. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
e00524590e |
Rename Gemini app to Google Gemini (#48817)
Updates the maintained app name from "Gemini" to "Google Gemini" in both the input config and generated apps.json output, including the app description. |
||
|
|
f04ee2312d |
Update Fleet-maintained apps (#48540)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Updated app release metadata so the latest versions are correctly detected and installed across macOS and Windows. * Refreshed download links and checksums for several apps, including Claude, Codex, Gemini, Postman, Thunderbird, VirtualBox, Ollama, and others. * Improved version matching for patch detection so upgrade checks reflect the newest releases. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
d60cf1274e |
Rebrand VNC Viewer to RealVNC Connect Viewer (#48255)
Update maintained app metadata and frontend mapping to reflect RealVNC rebrand and package changes. Renamed app entries for macOS and Windows, bumped macOS version to 8.4.2, updated bundle identifier checks and patch queries to account for both legacy and new bundle IDs, and replaced installer URL, checksums, and install/uninstall script refs. Marked the Homebrew input as frozen. Also updated frontend icon mappings to include the new "realvnc connect viewer" name (and kept a mapping for the legacy name). <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Updated the app label to **RealVNC Connect Viewer** across supported platforms, including catalog/manifest entries. * Added/updated icon mappings for **RealVNC Connect Viewer** and **RealVNC Viewer**. * **Bug Fixes** * Updated the macOS viewer deployment to **version 8.4.2**. * Improved upgrade/uninstall behavior to replace the legacy viewer, relaunch the updated app, and clean up previous remnants. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
52c176f3ad |
Capitalize Kiro app name (#48194)
Update app name from 'kiro' to 'Kiro' in Homebrew input and generated apps output to match proper app branding. <!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #48182 # 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. - [ ] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [ ] Timeouts are implemented and retries are limited to avoid infinite loops - [ ] If paths of existing endpoints are modified without backwards compatibility, checked the frontend/CLI for any necessary changes ## Testing - [ ] Added/updated automated tests - [ ] Where appropriate, [automated tests simulate multiple hosts and test for host isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing) (updates to one hosts's records do not affect another) - [ ] QA'd all new/changed functionality manually For unreleased bug fixes in a release candidate, one of: - [ ] Confirmed that the fix is not expected to adversely impact load test results - [ ] Alerted the release DRI if additional load testing is needed ## Database migrations - [ ] Checked schema for all modified table for columns that will auto-update timestamps during migration. - [ ] Confirmed that updating the timestamps is acceptable, and will not cause unwanted side effects. - [ ] Ensured the correct collation is explicitly set for character columns (`COLLATE utf8mb4_unicode_ci`). ## New Fleet configuration settings - [ ] Setting(s) is/are explicitly excluded from GitOps If you didn't check the box above, follow this checklist for GitOps-enabled settings: - [ ] Verified that the setting is exported via `fleetctl generate-gitops` - [ ] Verified the setting is documented in a separate PR to [the GitOps documentation](https://github.com/fleetdm/fleet/blob/main/docs/Configuration/yaml-files.md#L485) - [ ] Verified that the setting is cleared on the server if it is not supplied in a YAML file (or that it is documented as being optional) - [ ] Verified that any relevant UI is disabled when GitOps mode is enabled ## fleetd/orbit/Fleet Desktop - [ ] 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)) - [ ] If the change applies to only one platform, confirmed that `runtime.GOOS` is used as needed to isolate changes - [ ] Verified that fleetd runs on macOS, Linux and Windows - [ ] Verified auto-update works from the released version of component to the new version (see [tools/tuf/test](../tools/tuf/test/README.md)) |
||
|
|
3900de5125 |
Update Fleet-maintained apps (#48089)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated managed-app versions and installer metadata across macOS and Windows, including cmux (0.64.17), Firefox (152.0.2), Granola (7.356.2), Lens (2026.6.231104-latest), Power Automate (2.69.00217.26166), PreForm (3.60.2.639), and Workflowy (4.3.2606230837), with refreshed download links and verification checksums. * Marked Adobe Acrobat Pro as frozen. * **Bug Fixes** * Improved Power Automate uninstall reliability by switching to the WiX Burn bootstrapper-based uninstall flow. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
fd70ff7eb8 |
Bump fleet-desktop to 1.3.2 (#48028)
Update Fleet Desktop from 1.3.1 to 1.3.2 across Homebrew cask, API metadata, and darwin output. Changes include version and sha256 updates, updated download URLs and pkg filenames, updated ruby_source checksum, and a new installer script ref that installs fleet_desktop-v1.3.2.pkg. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated Fleet Desktop package to version 1.3.2 in Homebrew configuration, including checksums and installation artifacts. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
c6291b37f4 |
Rename Cloudflare WARP to Cloudflare One (#47939)
Update branding from "Cloudflare WARP" to "Cloudflare One" across maintained app data. Changed name fields in Homebrew and Winget input JSON, updated outputs/apps.json entries and descriptions, and updated the frontend NameToIdentifierMap key to "Cloudflare One" (keeps existing slug/identifier unchanged). <!-- Add the related story/sub-task/bug number, like Resolves #123, or remove if NA --> **Related issue:** Resolves #47731 # 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. - [ ] Input data is properly validated, `SELECT *` is avoided, SQL injection is prevented (using placeholders for values in statements), JS inline code is prevented especially for url redirects, and untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. - [ ] Timeouts are implemented and retries are limited to avoid infinite loops - [ ] If paths of existing endpoints are modified without backwards compatibility, checked the frontend/CLI for any necessary changes ## Testing - [ ] Added/updated automated tests - [ ] Where appropriate, [automated tests simulate multiple hosts and test for host isolation](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/reference/patterns-backend.md#unit-testing) (updates to one hosts's records do not affect another) - [ ] QA'd all new/changed functionality manually For unreleased bug fixes in a release candidate, one of: - [ ] Confirmed that the fix is not expected to adversely impact load test results - [ ] Alerted the release DRI if additional load testing is needed ## Database migrations - [ ] Checked schema for all modified table for columns that will auto-update timestamps during migration. - [ ] Confirmed that updating the timestamps is acceptable, and will not cause unwanted side effects. - [ ] Ensured the correct collation is explicitly set for character columns (`COLLATE utf8mb4_unicode_ci`). ## New Fleet configuration settings - [ ] Setting(s) is/are explicitly excluded from GitOps If you didn't check the box above, follow this checklist for GitOps-enabled settings: - [ ] Verified that the setting is exported via `fleetctl generate-gitops` - [ ] Verified the setting is documented in a separate PR to [the GitOps documentation](https://github.com/fleetdm/fleet/blob/main/docs/Configuration/yaml-files.md#L485) - [ ] Verified that the setting is cleared on the server if it is not supplied in a YAML file (or that it is documented as being optional) - [ ] Verified that any relevant UI is disabled when GitOps mode is enabled ## fleetd/orbit/Fleet Desktop - [ ] 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)) - [ ] If the change applies to only one platform, confirmed that `runtime.GOOS` is used as needed to isolate changes - [ ] Verified that fleetd runs on macOS, Linux and Windows - [ ] 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 * **Chores** * Updated product references from Cloudflare WARP to Cloudflare One across platform metadata and catalogs. <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
d17b10b9d5 |
Add Vivaldi as a Fleet-maintained app (#41552)
**Related issue:** N/A — adds Vivaldi to the Fleet-maintained apps catalog. ## Summary Adds **Vivaldi** as a Fleet-maintained app for **macOS** and **Windows**. - **macOS (`vivaldi/darwin`)** — Homebrew cask input plus a `VivaldiDMGInstaller` enricher that redirects Homebrew's unsupported `tar.xz` download to Vivaldi's direct universal DMG (`https://downloads.vivaldi.com/stable/Vivaldi.{version}.universal.dmg`), keeping `installer_format: dmg` so the standard `hdiutil`-based install/uninstall scripts are generated. `unique_identifier` is the verified bundle id `com.vivaldi.Vivaldi`. - **Windows (`vivaldi/windows`)** — winget input (`Vivaldi.Vivaldi`) with custom install/uninstall scripts. Installs **machine-wide** with `--vivaldi-silent --do-not-launch-chrome --system-level`. Because Fleet runs installers as `SYSTEM`, the `--system-level` flag is required — without it the Chromium-based installer lands in the `SYSTEM` profile and is invisible to the real user. The exists query matches the registry `DisplayName` `Vivaldi` and verified `Publisher` `Vivaldi Technologies AS.`; the uninstall script looks up the entry under HKLM (with an HKCU fallback) and runs the Chromium uninstaller with `--force-uninstall`. Outputs were regenerated via the ingester (`go run cmd/maintained-apps/main.go --slug=...`) at Vivaldi **8.0.4033.46**; script refs are content-addressed, not hand-edited. ## Changes - `ee/maintained-apps/inputs/homebrew/vivaldi.json`, `ingesters/homebrew/external_refs/vivaldi.go` (+ registration in `main.go`) — macOS input and DMG-URL enricher - `ee/maintained-apps/inputs/winget/vivaldi.json` + `scripts/vivaldi_install.ps1` / `vivaldi_uninstall.ps1` — Windows input and custom machine-wide install/uninstall - `ee/maintained-apps/outputs/vivaldi/darwin.json`, `vivaldi/windows.json`, `outputs/apps.json` — generated catalog entries (with descriptions) - `frontend/pages/SoftwarePage/components/icons/Vivaldi.tsx` + `index.ts`, `website/assets/images/app-icon-vivaldi-60x60@2x.png` — UI/website icon # Checklist for submitter - [x] Input data is properly validated; untrusted data interpolated into shell scripts/commands is validated against shell metacharacters. (Silent-install flags are documented Vivaldi switches; the uninstall script parses the registry UninstallString defensively.) ## Testing - [x] Regenerated both outputs via the ingester; verified `installer_url`, SHA, and non-empty install/uninstall script refs. - [x] Verified macOS `unique_identifier` (`com.vivaldi.Vivaldi`) and Windows identity (DisplayName `Vivaldi`, Publisher `Vivaldi Technologies AS.`) against the cask/winget manifests. - [x] `apps.json` validates as JSON; `go build ./cmd/maintained-apps/...` and `GOOS=windows go build ./cmd/maintained-apps/validate/` pass. - [ ] QA'd all new/changed functionality manually (via the FMA validator on macOS + Windows hosts). <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added support for Vivaldi browser across macOS (Homebrew) and Windows (Winget) platforms with version management capabilities. * Included automated installation and uninstallation scripts for both operating systems. * Added Vivaldi icon to the application interface. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Allen Houchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> |
||
|
|
1c5abecb02 |
Add Spokenly app support (#47795)
Introduce Spokenly to the catalog and UI: add homebrew input metadata, add apps.json entry, and add darwin output with version 2.22.1, installer URL, sha256, and install/uninstall script refs. Also add frontend icon component and image, and register Spokenly in the icon index mapping. |
||
|
|
abd70c758d |
Update Fleet-maintained apps (#47774)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes * **Chores** * Updated version metadata and installer information for 63 maintained applications across macOS and Windows platforms, including development tools, browsers, communication utilities, and productivity software. Updated version numbers, download links, and integrity checksums to support deployment of latest stable application releases across supported systems. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
42a3703533 |
Add Sonos as a macOS & Windows FMA (#47671)
Add Sonos to maintained apps across platforms. Introduces SonosVersionTransformer (converts Homebrew "90.0-77070" -> "90.0.77070") and registers it for the sonos/darwin slug so osquery version_compare and patch detection work. Add special patched query in the Homebrew ingester to compare bundle_version for Sonos. Add inputs for Homebrew and Winget (including a Win32 install PowerShell script and Winget manifest), outputs for darwin and windows with version metadata, installer URLs, sha256s, and install/uninstall script refs; include the actual install/uninstall script refs. Add a React SVG icon and map it in the icons index, and update the Sonos app image asset and apps.json entries. Also includes a couple punctuation cleanups in apps.json. |
||
|
|
464d741c24 |
Update Fleet-maintained apps (#47645)
Automated ingestion of latest Fleet-maintained app data. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated metadata for 25+ maintained applications across Windows and macOS platforms, including Docker, Discord, Slack, Spotify, and others, to reflect current available versions. * Added frozen state configuration for Fire Alpaca and NVIDIA GeForce NOW Homebrew packages. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: allenhouchins <32207388+allenhouchins@users.noreply.github.com> Co-authored-by: Allen Houchins <allenhouchins@mac.com> |
||
|
|
48b45577ae |
Add macOS Fleet-maintained apps (N) (#47537)
Adds 25 Fleet-maintained app(s) whose cask token starts with 'N': inputs, outputs, app icons (TSX + website PNG), and the matching index.ts and apps.json entries. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added support for 24 new apps (Nagstamon, Name Mangler, NAPS2, NDI Tools, NeoFinder, Netiquette, NetNewsWire, Netron, NetSpot, Nextcloud Talk Desktop, Nightfall, Nitro PDF Pro, Nocturnal, NordLayer, NoSQL Workbench, NotchNook, Notepad.exe, Notesnook, NotesOllama, Noun Project, Novabench, Nucleo, Numi, NVIDIA GeForce NOW) with install/uninstall/version metadata. * **UI Changes** * Added icons and name→icon mappings for the new applications and expanded the software icon registry. * **Updates** * Expanded and reordered the maintained apps listing to include the new entries. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> |
||
|
|
532c5d5e33 |
Add macOS Fleet-maintained apps (A) (#47536)
Adds 43 Fleet-maintained app(s) whose cask token starts with 'A': inputs, outputs, app icons (TSX + website PNG), and the matching index.ts and apps.json entries. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added support for 50+ macOS applications including Acorn, Affinity Suite, AirDroid, Anytype, Audio Hijack, and more * Applications now include automated installation and management capabilities with version tracking <!-- end of auto-generated comment: release notes by coderabbit.ai --> |
||
|
|
a30298db83 |
Add macOS Fleet-maintained apps (L) (#47519)
Adds 23 Fleet-maintained app(s) whose cask token starts with 'L': inputs, outputs, app icons (TSX + website PNG), and the matching index.ts and apps.json entries. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added support for 24 new macOS applications (Lapce, Lasso, Last Window Quits, Latest, LaunchBar, LightBurn, LinearMouse, Lingon X, lo‑rain, Local, LocalSend, LocationSimulator, Logseq, LookAway, Loop, Loopback, LosslessCut, Low Profile, Lunacy, Lunar, LunaSea, Lunatask, Lychee Slicer). * Added corresponding app icons and installer/management entries to the software catalog for in‑app discovery and installation. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> |
||
|
|
350d208eab |
Unfreeze FMAs (#47525)
Remove stale "frozen" flags from several input manifests and update metadata and scripts for multiple apps. Bump package versions, installer URLs, checksums and script references for Adobe Acrobat Pro, Backblaze, Cloudflare WARP (Windows) and FileMaker Pro; add improved install/uninstall scripts and more robust quit/relaunch and uninstall handling. Also adjust minor manifest fields (categories/paths) and refactor several script refs for reliability. |
||
|
|
e9ba8ede41 |
Add macOS Fleet-maintained apps (T) (#47333)
Adds 47 Fleet-maintained app(s) whose cask token starts with 'T': inputs, outputs, app icons (TSX + website PNG), and the matching index.ts and apps.json entries. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added support for 40+ new macOS apps (Tabby, Tableau Prep/Public, Taskade, Termius, Topaz suite, TradingView, Tresorit, Trezor Suite, Typora, and more) with install/uninstall manifests and versioned package entries. * **UI** * Added icons for all newly supported apps and expanded name→icon mappings. * **Updates** * Catalog/output data refreshed to include new entries and reorder affected listings. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> |