Commit graph

226 commits

Author SHA1 Message Date
Allen Houchins
94674f28da
Re-add iMazing Profile Editor as a macOS FMA (#43574)
Register iMazing Profile Editor as a Fleet-maintained app: add input
metadata, add app entry to outputs/apps.json, and add darwin-specific
version/installer info with install/uninstall scripts and checks. Update
frontend icon mapping to include the human-readable name, and adjust
fleet configs (workstations self-service slug, dynamic label bundle
identifier, and macOS patch policy) to reference the new
imazing-profile-editor/darwin slug and
com.DigiDNA.iMazingProfileEditorMac bundle ID.
2026-04-14 15:29:40 -05:00
Allen Houchins
86b5eaf4a9
Rename iMazing Profile Editor to iMazing in the FMA library (#43555)
Replace the fleet-maintained app record for "iMazing Profile Editor"
with the full "iMazing" app. Deleted the old input file and added a new
input for imazing; renamed output paths and updated app metadata (bundle
identifier, slug, categories). Bumped version to 3.5.2 and updated
installer URL, install/uninstall script refs and SHA256. Updated
frontend icon mapping and website routes to point to the new imazing
slug, and adjusted fleet configs: workstation software slug, dynamic
label query, and macOS patch policy to reference imazing/darwin and the
new bundle identifier.

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

## Summary by CodeRabbit

* **New Features**
* iMazing application (v3.5.2) now replaces iMazing Profile Editor with
improved capabilities and enhanced functionality.
* Application category updated from Developer tools to Utilities for
better organization and discoverability.

* **Updates**
* Updated deployment configurations, system routes, and management
policies to support iMazing across all managed environments and
platforms.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-14 14:57:24 -05:00
Allen Houchins
10a7476ecc
Add Thunderbird Windows app and scripts (#43553)
Add metadata and install/uninstall automation for Thunderbird on
Windows. Adds ee/maintained-apps/inputs/winget/thunderbird.json plus
PowerShell install/uninstall scripts (NSIS silent /S, install uses
/PreventRebootRequired=true; uninstall resolves registry entry for x64
en-US and appends /S). Update maintained apps outputs: register
Thunderbird in ee/maintained-apps/outputs/apps.json and add
ee/maintained-apps/outputs/thunderbird/windows.json (version 149.0.2,
installer URL and sha256, script refs). Also update frontend icon
component and app PNG asset for Thunderbird.

<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #43526
2026-04-14 13:27:19 -05:00
Allen Houchins
3e75d59bc0
Add Granola as a Windows FMA (#43537)
Add support for Granola (Windows) including winget input,
installer/uninstaller scripts, and output metadata. Added
ee/maintained-apps/inputs/winget/granola.json plus install/uninstall
PowerShell scripts, and new
ee/maintained-apps/outputs/granola/windows.json containing version
7.128.0, installer URL and script refs (with SHA256). Also register
Granola in ee/maintained-apps/outputs/apps.json and update the frontend
icon and website app image assets for Granola.
2026-04-14 11:51:59 -05:00
Allen Houchins
3d067afb47
Add Linear as a Windows FMA (#43521)
Add Windows support for Linear: new winget input
(ee/maintained-apps/inputs/winget/linear.json) with installer metadata
and category, plus install/uninstall PowerShell scripts. Add output
metadata (ee/maintained-apps/outputs/linear/windows.json) including a
version entry, installer URL, sha256 and script refs, and register the
app in apps.json. Update frontend icon component to reference a new PNG
and add the image asset.

<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #43501
2026-04-14 09:57:23 -05:00
Ian Littman
65030e905f
Fix mis-assigned FMA bundle identifiers, switch to fuzzy matching on queries where Windows apps include version number in the name (incl. special fixes for Firefox ESR) (#42628)
Resolves #42714.

Zed + Opus 4.6; initial prompts (see additional ones in follow-on
commits):

---

Audit our existing Fleet Maintained App catalog. Look for:

1. Software that has the wrong identifiers associated (e.g. Abstract),
e.g. in `exists` queries
2. Software that has the version number in the name that leaks into the
`exists` query, e.g. 7-zip or 010 Editor or Airtame. These should be
fuzzy-matched.

For each affected app, revise input manifests to fix the issues. For
(1), revise apps.json if needed as well. Don't modify apps.json for (2)
cases.

---

Are there any discrepancies between bundle identifiers in input
manifests for Darwin apps and apps.json? If so, fix them.

---

Outputs will get overwritten by the ingester if neither the ingester nor
the input JSON files are changed. Make whatever changes need to be made
so that these edits survive an FMA ingestion cycle.

---

Revise `fuzzy` to allow specifying a custom value e.g. `Mozilal Firefox
% (ESR)` in addition to the existing true/false, then use that new
functionality to build unique queries for Firefox ESR.

---

Commit these changes, across multiple commits (there will be cases where
a changes to a single file will be spread across multiple commits, most
notably apps.json). Split commits out as follows:

1. All darwin-related changes
2. Windows switches to fuzzy matching + associated unique_identifier
changes
3. Revised handling for Firefox ESR

Prefix commit messages with "🤖 ".

---

The ingester and test changes should've gone in commit 3. Move them
there from commit 2.

---



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

## Summary by CodeRabbit

* **Bug Fixes**
* Updated application identifiers for Abstract, Amazon Chime, Beyond
Compare, and Teleport Suite to use correct bundle and package
identifiers.
* Enhanced Windows and macOS installation detection queries to match
multiple application versions using pattern matching instead of exact
version strings.

* **New Features**
* Added support for configurable fuzzy matching patterns to improve
application name matching flexibility.

* **Tests**
* Added tests validating fuzzy matching configuration unmarshaling and
behavior.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-04-10 14:13:59 -05:00
Jonathan Katz
cd836ffe04
Use org.gpgtools.updater as bundle identifier for gpg-suite (#43229)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #42680 
This manually modified outputs/apps.json since currently it only adds
new FMAs and cannot update existing ones from ingestion. It looks like
the install/uninstall scripts changed a bit, but I was able to install
and uninstall it successfully on a VM.
 
<img width="1150" height="48" alt="image"
src="https://github.com/user-attachments/assets/dad9f5f6-1f21-4169-aed5-33fb25cb666b"
/>

Patch policy for up to date version seems to work too.
<img width="863" height="49" alt="image"
src="https://github.com/user-attachments/assets/a706794d-885f-4a5c-abc5-b65c26ba7733"
/>
2026-04-08 09:52:11 -05:00
Mitch Francese
562d8aa06a
Add Marvel as a Fleet-maintained app (#42404)
## Summary

- Adds Marvel (macOS) to the Fleet maintained apps catalog
- Input: `ee/maintained-apps/inputs/homebrew/marvel.json`
- Output generated via ingester script

## Validation checklist

- [ ] App can be downloaded using manifest URL
- [ ] App installs successfully using manifest install script
- [ ] App exists in software inventory after install
- [ ] App uninstalls successfully using manifest uninstall script
2026-04-03 13:45:11 -05:00
Allen Houchins
e728fd3d5e
Add GCPW as a Windows FMA (#42619)
This pull request adds support for the "Google Credential Provider for
Windows" application to the maintained apps system, including its
metadata, installation logic, and user interface icon. The changes
ensure that the app is properly recognized, categorized, and visually
represented in the frontend.

**New application support:**

- Added metadata for "Google Credential Provider for Windows" in
`winget` input, including identifiers, architecture, installer type, and
default category.
- Added output configuration for the app, specifying version, detection
query, installer/uninstaller scripts, installer URL, and SHA256 hash.
- Registered the app in the main `apps.json` output with a description
and platform information.

**Frontend/UI updates:**

- Added a new React SVG icon component for "Google Credential Provider
for Windows" in the software page.
- Registered the new icon in the icons index and mapped the app name to
the icon in the `SOFTWARE_NAME_TO_ICON_MAP`.
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR13)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR317)
2026-03-27 21:52:08 -05:00
Harrison Ravazzolo
2dd0c4a957
macOS FMA: SwiftDialog (#42403)
Co-authored-by: Allen Houchins <32207388+allenhouchins@users.noreply.github.com>
2026-03-26 10:44:53 -05:00
Mitch Francese
7be1d2bb42
Add kitty as a Fleet-maintained app (#41574)
## Summary

- Adds kitty (macOS) to the Fleet maintained apps catalog
- Input: `ee/maintained-apps/inputs/homebrew/kitty.json`
- Output generated via ingester script

## Validation checklist

- [ ] App can be downloaded using manifest URL
- [ ] App installs successfully using manifest install script
- [ ] App exists in software inventory after install
- [ ] App uninstalls successfully using manifest uninstall script

🔍 Note: @ mention #g-software Product Designer in a comment pointing to
the new icon once added.
2026-03-23 12:15:07 -05:00
Mitch Francese
7c3f30a56f
Add Proxyman as a Fleet-maintained app (#41573)
## Summary

- Adds Proxyman (macOS) to the Fleet maintained apps catalog
- Input: `ee/maintained-apps/inputs/homebrew/proxyman.json`
- Output generated via ingester script

## Validation checklist

- [ ] App can be downloaded using manifest URL
- [ ] App installs successfully using manifest install script
- [ ] App exists in software inventory after install
- [ ] App uninstalls successfully using manifest uninstall script

Note: @mention #g-software Product Designer in a comment pointing to the
new icon once added.
2026-03-23 09:52:41 -05:00
Allen Houchins
518a2982f0
Add Firefox ESR as macOS & Windows FMAs (#40089)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40086
2026-03-19 11:01:43 -05:00
Mitch Francese
c685ce5159
Fix apps.json: replace non-ASCII characters in descriptions (#41769)
## Summary

- Replaces 5 non-ASCII characters in existing `apps.json` descriptions
with ASCII equivalents
- Adobe Creative Cloud: curly apostrophe (`'`) → straight apostrophe
(`'`)
- Airtame (darwin + windows): em-dash (`—`) → hyphen (`-`)
- Cursor (darwin + windows): em-dash (`—`) → hyphen (`-`)

## Why

Go's `json.Encoder` escapes all non-ASCII code points as `\uXXXX` when
re-encoding a file, regardless of `SetEscapeHTML(false)`. The
`updateAppsListFile()` function re-encodes the entire `apps.json` on
every new app addition. As long as these 3 entries contain non-ASCII
characters, every FMA PR that adds a new app will show spurious diffs to
these existing lines.

## Validation checklist

- [ ] Only 5 lines changed in `apps.json`
- [ ] No other files touched
2026-03-18 14:57:21 -05:00
Mitch Francese
bb091361d9
Add Tor Browser as a Fleet-maintained app (#41551)
Adds Tor Browser as a Fleet-maintained app for macOS only.

## Changes

- **macOS**: Homebrew cask `tor-browser`, DMG installer, bundle
identifier `org.torproject.torbrowser`
- Icon sourced from the official Tor Project GitHub at 128x128
- Added to `apps.json` catalog in alphabetical order

**Note:** Windows support was dropped. Tor Browser for Windows uses a
portable installer that installs to `%LOCALAPPDATA%` (not `C:\Program
Files`), which is outside the scope of what Fleet's CI validator and
Windows install validation can detect. macOS-only is the correct scope
for this app.

## Test plan

- [ ] Verify `go run cmd/maintained-apps/main.go
--slug="tor-browser/darwin"` produces valid output
- [ ] Confirm icon renders correctly in the software catalog UI
- [ ] Confirm macOS install/uninstall scripts work on a test device
2026-03-17 10:56:20 -05:00
Mitch Francese
7df3ce25a2
Add Charles Proxy as a Fleet-maintained app (#41550)
## Summary

Adds [Charles Proxy](https://www.charlesproxy.com/) as a
Fleet-maintained app for macOS.

Charles is an HTTP proxy, monitor, and reverse proxy that lets
developers view all HTTP and HTTPS traffic between their machine and the
internet. It's commonly used for debugging, testing, and network
analysis.

- macOS: DMG installer via Homebrew cask `charles`, bundle ID
`com.xk72.Charles`
- Windows: Not included — the WinGet package (`XK72.Charles`) uses an
`appx` installer type, which is not supported by Fleet's winget ingester

## Test plan

- [ ] Install Charles on a macOS host via Fleet self-service and confirm
it installs to `/Applications/Charles.app`
- [ ] Confirm `SELECT 1 FROM apps WHERE bundle_identifier =
'com.xk72.Charles';` returns a result after installation
- [ ] Uninstall Charles via Fleet and confirm the app is removed
- [ ] Confirm the Charles icon appears correctly in the Fleet UI
software catalog
- [ ] Run `go run cmd/maintained-apps/main.go --slug="charles/darwin"
--debug` and confirm no errors
2026-03-17 10:55:29 -05:00
Mitch Francese
878c93dfb3
Add Krita as a Fleet-maintained app (#41549)
Adds Krita (free and open-source digital painting application) as a
Fleet Maintained App for macOS and Windows.

## Changes

- **macOS**: Homebrew cask `krita`, DMG installer, bundle ID
`org.kde.krita`
- **Windows**: WinGet `KDE.Krita`, NSIS EXE installer with custom silent
install/uninstall scripts
- Icon generated from KDE official icon (128x128 PNG), added to icon
index
- Both platforms added to `apps.json` alphabetically (after Keka, before
LastPass)

## Testing

- macOS ingester ran successfully: `go run cmd/maintained-apps/main.go
--slug="krita/darwin" --debug`
- Windows ingester ran successfully: `go run cmd/maintained-apps/main.go
--slug="krita/windows" --debug`
- Output files generated: `ee/maintained-apps/outputs/krita/darwin.json`
and `windows.json`

## Related issue

Add Krita FMA
2026-03-17 10:54:25 -05:00
Mitch Francese
f7a8d4d503
Add Arduino IDE as a Fleet-maintained app (#41547)
## Summary

- Adds Arduino IDE (macOS only) as a Fleet maintained app using Homebrew
cask `arduino-ide`
- Bundle identifier: `cc.arduino.IDE2`, installer format: DMG, version
2.3.8
- Includes app icon, install/uninstall scripts, catalog entry, and icon
component

## Test plan

- [ ] Install Arduino IDE via Fleet on a macOS device and verify it
launches
- [ ] Uninstall Arduino IDE via Fleet and verify the app and user data
are removed
- [ ] Verify the Arduino IDE icon renders correctly in the software
catalog UI
- [ ] Confirm the entry appears alphabetically in the software catalog
(after Archaeology, before Asana)

Relates to #
2026-03-17 10:20:21 -05:00
kilo-code-bot[bot]
a24c410496
Add Backblaze as a Fleet-maintained app (#41397)
## Summary

- Adds Backblaze (data backup and storage service) as a new
fleet-maintained app with **macOS** support via Homebrew cask
(`backblaze`).
- Backblaze uses a manual installer (`Backblaze Installer.app`) inside a
DMG, so custom install and uninstall scripts are provided following the
same pattern as Adobe Creative Cloud.
- The install script mounts the DMG, locates `Backblaze Installer.app`,
and runs the `bzinstall_mate` binary with the `-nogui` flag for silent
installation.
- The uninstall script stops launchctl services
(`com.backblaze.bzbmenu`, `com.backblaze.bzserv`), removes app bundles,
preference pane, diagnostic reports, package data, and per-user
preferences.

### Files added/changed

| File | Description |
|------|-------------|
| `ee/maintained-apps/inputs/homebrew/backblaze.json` | macOS input
definition |
| `ee/maintained-apps/inputs/homebrew/scripts/backblaze_install.sh` |
Custom install script (DMG mount + manual installer execution) |
| `ee/maintained-apps/inputs/homebrew/scripts/backblaze_uninstall.sh` |
Custom uninstall script (launchctl cleanup + file removal) |
| `ee/maintained-apps/outputs/backblaze/darwin.json` | Generated macOS
output manifest |
| `ee/maintained-apps/outputs/apps.json` | Updated with Backblaze entry
and description |

### Windows support note

Windows support via WinGet (`Backblaze.Backblaze`) is not included in
this PR because the Backblaze package has never been successfully merged
into the [winget-pkgs
repository](https://github.com/microsoft/winget-pkgs). All submission
attempts were rejected due to the installer failing WinGet's unattended
installation validation. Windows support can be added once Backblaze is
available in winget-pkgs.

### Checklist

- [x] macOS input file follows Homebrew input schema
- [x] Custom scripts follow existing patterns (Adobe Creative Cloud)
- [x] Output manifest matches expected format
- [x] `apps.json` updated with description following sentence casing
format
- [x] Entry sorted alphabetically in `apps.json`
- [ ] Icon generation (requires macOS host with Backblaze installed)
- [ ] Validation on macOS host

---

Built for [Mitch
Francese](https://fleetdm.slack.com/archives/D0AG92RJGHY/p1773172809438909?thread_ts=1773163736.129729&cid=D0AG92RJGHY)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Mitch Francese <2227948+tux234@users.noreply.github.com>
2026-03-11 16:20:54 -05:00
kilo-code-bot[bot]
d5342d5a18
Add Ollama as Fleet-maintained app (#41367)
## Summary

- Adds Ollama as a fleet-maintained app (FMA) with support for both
macOS and Windows platforms
- Ollama is a popular tool to get up and running with large language
models locally

## Changes

### macOS (Darwin)
- **Input**: `ee/maintained-apps/inputs/homebrew/ollama.json` — uses
Homebrew cask `ollama-app`
- **Installer format**: `zip`
- **Bundle identifier**: `com.electron.ollama`
- **Output**: `ee/maintained-apps/outputs/ollama/darwin.json` —
generated via `go run cmd/maintained-apps/main.go --slug="ollama/darwin"
--debug`

### Windows
- **Input**: `ee/maintained-apps/inputs/winget/ollama.json` — uses
WinGet package `Ollama.Ollama`
- **Installer type**: `exe` (Inno Setup)
- **Installer scope**: `user`
- **Custom scripts**: `ollama_install.ps1` and `ollama_uninstall.ps1`
with Inno Setup silent flags (`/VERYSILENT /SUPPRESSMSGBOXES
/NORESTART`)
- **Output**: `ee/maintained-apps/outputs/ollama/windows.json` —
generated via `go run cmd/maintained-apps/main.go
--slug="ollama/windows" --debug`

### App catalog
- Added Ollama entries (darwin + windows) to
`ee/maintained-apps/outputs/apps.json` with description

## Notes
- Icon generation and frontend integration (`tools/software/icons`)
still need to be done separately per the FMA contributing guide
- Category: `Developer tools`

Built for [Mitch
Francese](https://fleetdm.slack.com/archives/D0AG92RJGHY/p1773163983187599?thread_ts=1773163736.129729&cid=D0AG92RJGHY)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Mitch Francese <2227948+tux234@users.noreply.github.com>
2026-03-11 16:11:13 -05:00
Mitch Francese
eda289f6f5
Add The Unarchiver as a Fleet-maintained app (#41467)
## Summary
- Add The Unarchiver as a new macOS-only Fleet Maintained App
- The Unarchiver is a free archive extraction utility supporting ZIP,
RAR, 7z, and many other formats
- Homebrew cask: `the-unarchiver`, bundle ID: `cx.c3.theunarchiver`
- Category: Utilities

## Changes
- `ee/maintained-apps/inputs/homebrew/the-unarchiver.json` — input
definition
- `ee/maintained-apps/outputs/the-unarchiver/darwin.json` — generated
output with install/uninstall scripts
- `ee/maintained-apps/outputs/apps.json` — added entry in alphabetical
order with description
- `frontend/pages/SoftwarePage/components/icons/TheUnarchiver.tsx` —
generated icon component
- `frontend/pages/SoftwarePage/components/icons/index.ts` — icon import
and map entry
- `website/assets/images/app-icon-the-unarchiver-60x60@2x.png` — app
icon asset
2026-03-11 14:35:49 -05:00
Mitch Francese
64fba279b1
Add IINA as a Fleet-maintained app (#41468)
## Summary
- Add IINA (modern, free and open-source media player) as a macOS-only
fleet-maintained app
- Homebrew cask: `iina`, bundle identifier: `com.colliderli.iina`,
installer format: DMG
- Includes input JSON, generated output, icon assets, and apps.json
entry

## Test plan
- [ ] Verify `go run cmd/maintained-apps/main.go --slug="iina/darwin"
--debug` generates output successfully
- [ ] Verify IINA icon renders correctly in the software page
- [ ] Verify apps.json entry is in correct alphabetical order
2026-03-11 14:33:32 -05:00
Mitch Francese
7d58c9688b
Add Sequel Ace as a Fleet-maintained app (#41469)
## Summary
- Adds Sequel Ace (free, open-source MySQL/MariaDB database manager for
macOS) as a fleet-maintained app
- Includes input JSON, generated output, app icon, and apps.json entry
- macOS only (zip installer format, cask: `sequel-ace`)

## Test plan
- [ ] Verify `sequel-ace/darwin` output JSON has correct installer URL
and SHA256
- [ ] Verify icon renders correctly in the software page
- [ ] Verify apps.json entry is in correct alphabetical order with
description

#41229
2026-03-11 14:31:07 -05:00
kilo-code-bot[bot]
f0ba17c1a2
Add Zotero as fleet-maintained app (#41370)
## Summary

- Adds Zotero (reference/research management tool) as a fleet-maintained
app with macOS and Windows support.
- **macOS**: Uses Homebrew cask `zotero` with DMG installer format
(bundle identifier: `org.zotero.zotero`).
- **Windows**: Uses WinGet package `DigitalScholar.Zotero` with NSIS
(exe) installer, including custom install/uninstall PowerShell scripts
with `/S` silent flag.

## Files added

| File | Purpose |
|------|---------|
| `ee/maintained-apps/inputs/homebrew/zotero.json` | macOS input
manifest |
| `ee/maintained-apps/inputs/winget/zotero.json` | Windows input
manifest |
| `ee/maintained-apps/inputs/winget/scripts/zotero_install.ps1` |
Windows silent install script (NSIS /S) |
| `ee/maintained-apps/inputs/winget/scripts/zotero_uninstall.ps1` |
Windows silent uninstall script (NSIS /S) |

## Remaining steps (per FMA contributing guide)

- [ ] Run `go run cmd/maintained-apps/main.go --slug="zotero/darwin"
--debug` to generate macOS output
- [ ] Run `go run cmd/maintained-apps/main.go --slug="zotero/windows"
--debug` to generate Windows output
- [ ] Generate and add app icon using the `tools/software/icons/` script
- [ ] Add description to `outputs/apps.json`

> **Note:** The WinGet package identifier for Zotero is
`DigitalScholar.Zotero` (the community-maintained identifier in the
winget-pkgs repository).

Built for [Mitch
Francese](https://fleetdm.slack.com/archives/D0AG92RJGHY/p1773163983187599?thread_ts=1773163736.129729&cid=D0AG92RJGHY)
by [Kilo for Slack](https://kilo.ai/features/slack-integration)

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
Co-authored-by: Mitch Francese <2227948+tux234@users.noreply.github.com>
2026-03-11 14:18:53 -05:00
Mitch Francese
21cfab20cc
Add Warp as Fleet maintained app for macOS (#41051)
## Summary

- Adds Warp terminal as a Fleet maintained app for macOS (darwin)
- Uses direct CDN URL (`releases.warp.dev`) instead of Homebrew's URL
which requires `User-Agent: Homebrew` header
- Single `WarpDirectInstaller` enricher: overrides URL, sets `sha256:
no_check`, strips `.stable_` from version string
- Version: `0.2026.02.25.08.24.01` (latest stable)

## Validation checklist

- [ ] App can be downloaded using manifest URL
- [ ] App installs successfully on macOS host using manifest install
script
- [ ] App exists in software inventory after install
(`dev.warp.Warp-Stable`)
- [ ] App uninstalls successfully using manifest uninstall script

## Notes

Supersedes #37901 (branch had corrupted git history from a rewrite; this
is a clean branch off main).
2026-03-11 09:02:49 -05:00
Tim Lee
e611ba409a
Remove okta verify windows FMA (#41199)
okta verify was removed 3 days ago from the winget repository
https://github.com/microsoft/winget-pkgs/pull/345319 so the job is
failing
2026-03-07 16:57:53 -06:00
Allen Houchins
7817d93da1
Add Claude as Windows FMA (#40530)
This pull request adds support for the Windows version of the Claude
desktop app to the maintained apps system. The changes include new
metadata, installation and uninstallation scripts, and integration into
the outputs that track available apps and versions.

Integration of Claude for Windows:

* Added `claude/windows` entry to the maintained apps outputs
(`ee/maintained-apps/outputs/apps.json`) to make the Windows version of
Claude discoverable and manageable.
* Introduced version tracking and metadata for `claude/windows`,
including installer URL, install/uninstall scripts, and SHA256 hash in
`ee/maintained-apps/outputs/claude/windows.json`.

Install/uninstall scripting:

* Added a PowerShell install script
(`ee/maintained-apps/inputs/winget/scripts/claude_install.ps1`) that
runs the Claude installer in silent mode and handles errors gracefully.
* Added a PowerShell uninstall script
(`ee/maintained-apps/inputs/winget/scripts/claude_uninstall.ps1`) that
locates the Claude uninstall entry, parses uninstall arguments, ensures
silent uninstallation, and terminates running processes.

Metadata for Windows app management:

* Created `claude.json` metadata file for Windows app management,
specifying installer details, script paths, and default categories.
2026-02-25 14:04:40 -06:00
Allen Houchins
452f1e8b1f
Add GIMP as a Windows FMA (#40372)
This pull request adds Windows support for GIMP version 3.0.8-2 to the
maintained apps. It introduces new install and uninstall scripts,
updates the app metadata, and provides integration details for Fleet's
package management.

New GIMP Windows app integration:

* App metadata: Added `gimp.json` in the `winget` inputs directory,
specifying package details, installer type, architecture, and default
categories.
* App listing: Updated `apps.json` to include the new GIMP Windows entry
with platform, slug, unique identifier, and description.

Installer and uninstaller scripts:

* Install script: Added `gimp_install.ps1` for silent, machine-scope
installation using Inno Setup installer flags.
* Uninstall script: Added `gimp_uninstall.ps1` for silent removal,
including logic to locate the correct uninstaller and handle edge cases.

Fleet integration and versioning:

* App version definition: Created `gimp/windows.json` output file,
detailing version, installer URL, install/uninstall script references,
SHA256, and Fleet query for existence.
2026-02-23 21:28:09 -06:00
Allen Houchins
ffecc34be9 Add Okta Verify as a Windows FMA (#40281)
This pull request adds support for managing the Okta Verify app on
Windows via the maintained apps system. It introduces new ingestion
logic for handling WiX Burn installers, adds input and output
definitions for Okta Verify, and provides install/uninstall scripts
tailored for EXE-based (Burn) installers. The changes also ensure Okta
Verify is properly listed and categorized in the maintained apps
outputs.

**Okta Verify Windows app support:**

* Added a new input definition for Okta Verify on Windows, including
installer details and categorization in
`ee/maintained-apps/inputs/winget/okta-verify.json`.
* Added install (`okta_verify_install.ps1`) and uninstall
(`okta_verify_uninstall.ps1`) PowerShell scripts for Okta Verify,
supporting silent installation/uninstallation for EXE/Burn installers.
[[1]](diffhunk://#diff-fa86938dc330e2678c50210585ea8885283546dc370017fd6f3996f12af284b9R1-R27)
[[2]](diffhunk://#diff-944cc7275484b5010c66369e563c3d09a618d67295da5221e945aebc42b033dcR1-R96)
* Added Okta Verify Windows app entry to the maintained apps output
(`apps.json`) and created a detailed output file with version, installer
URL, scripts, and detection query in `outputs/okta-verify/windows.json`.
[[1]](diffhunk://#diff-4c1446cfc02c6bb0bda874481e333c65b84e184fcea52f656b49a6489f73c9c2R1145-R1151)
[[2]](diffhunk://#diff-0c852c8b0817f497526b3eb76c2074cece7ed002f5ffa6a2ea7771affdd90f52R1-R21)

**Improvements to installer ingestion logic:**

* Updated the Winget ingester to recognize "burn" (WiX Burn
bootstrapper) as an installer type and normalize it to "exe" for
processing, ensuring correct handling of Burn-based installers.
[[1]](diffhunk://#diff-eb6c4ae7be41e61a2292c4240de750809d40c0686fb01f80f52df056ebc9c2a8R488)
[[2]](diffhunk://#diff-eb6c4ae7be41e61a2292c4240de750809d40c0686fb01f80f52df056ebc9c2a8R223-R227)
2026-02-23 09:29:50 -06:00
Allen Houchins
07873ab79c
Update apps.json (#40159)
Formatting fix.
2026-02-19 23:10:56 -06:00
Allen Houchins
fc9cc03e1b
Add auto-update note to 8x8 Work app description (#40157)
Update apps.json to include a note about a potential auto-update error
after installation when the app is owned by root. Documents two
resolutions: change ownership of 8x8 Work.app to the logged-in user, or
disable auto-updates via the Profile Policies setting in the 8x8 Admin
Console.

<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #38910
2026-02-19 22:36:42 -06:00
Allen Houchins
fe05ce4f48
Add PuTTY as a Windows FMA (#40155)
This pull request adds support for the PuTTY application (Windows) to
the maintained apps system, including metadata,
installation/uninstallation scripts, and frontend icon integration. The
changes ensure that PuTTY can be managed and visually represented in the
software catalog.

**Maintained Apps Integration:**
- Added a new input file `putty.json` with PuTTY metadata for Windows,
specifying installer details and categories.
- Generated an output file `putty/windows.json` containing version
information, install/uninstall scripts, installer URL, and SHA256 hash
for PuTTY.
- Updated the aggregated `apps.json` output to include PuTTY with its
description and unique identifier for the Windows platform.

**Frontend/Icon Integration:**
- Added a new React SVG icon component for PuTTY in `Putty.tsx`.
- Registered the PuTTY icon in the icon index and mapped it in
`SOFTWARE_NAME_TO_ICON_MAP` for display in the software catalog.
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR15)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR412)
2026-02-19 22:23:51 -06:00
Allen Houchins
1f97e3d1eb
Add LastPass as a Windows FMA (#40153)
This pull request adds support for the LastPass password manager to the
maintained apps ecosystem, including its metadata, installation and
uninstallation scripts, and a new icon for the frontend. The changes
ensure that LastPass can be managed like other supported applications
and is visually represented in the software UI.

**LastPass app integration:**

* Added LastPass metadata to `winget` inputs, including installer
details and default categories.
* Added LastPass to the maintained apps output list (`apps.json`) with a
description for display in the UI.
* Created a new output file for LastPass (`lastpass/windows.json`)
specifying versioning, detection queries, install/uninstall scripts, and
installer hash.

**Frontend/UI updates:**

* Added a new React SVG icon component for LastPass (`LastPass.tsx`).
* Registered the LastPass icon in the software icon map so it appears in
the UI when LastPass is detected.
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR10)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR297)
2026-02-19 22:02:34 -06:00
Allen Houchins
cb6cc266c6
Add BetterDisplay as a macOS FMA (#40087)
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #40043
2026-02-18 21:05:50 -06:00
Allen Houchins
72dfd1f414
Add Yubico Authenticator as a Windows FMA (#39351)
This pull request adds support for managing the Yubico Authenticator
application on Windows. The changes introduce the necessary metadata,
installation and uninstallation scripts, and update the application
catalog to include this new platform-specific entry.

**Addition of Yubico Authenticator for Windows:**

* Added a new input file with metadata for the Windows version of Yubico
Authenticator, specifying details like package identifier, architecture,
and default categories in `yubico-authenticator.json`.
* Created an output file containing version information, installation
and uninstallation scripts, installer URL, SHA256 hash, and upgrade code
for Yubico Authenticator on Windows in
`yubico-authenticator/windows.json`.
* Updated the main application catalog (`apps.json`) to include a
Windows-specific entry for Yubico Authenticator, with appropriate slug
and description.

**Frontend icon update:**

* Updated the image data for the Yubico Authenticator icon in the
frontend component to reflect the correct or updated icon asset.
2026-02-04 15:13:30 -06:00
Harrison Ravazzolo
7d255556e3
FMA: Extensis Connect Fonts (#39315)
Co-authored-by: Allen Houchins <32207388+allenhouchins@users.noreply.github.com>
2026-02-04 11:12:02 -06:00
Harrison Ravazzolo
ef69d41afb
FMA: Proxifier - macOS (#38613)
Co-authored-by: Allen Houchins <32207388+allenhouchins@users.noreply.github.com>
2026-01-22 15:08:55 -08:00
Allen Houchins
b76157b83d
Remove Microsoft Company Portal app and scripts (#38506)
Deleted all configuration, install/uninstall scripts, and output files
related to the Microsoft Company Portal app from maintained-apps. Also
removed its entry from the apps.json manifest.

`Microsoft.CompanyPortal` was removed from `winget` recently in favor of
the `msstore` version:
https://github.com/microsoft/winget-pkgs/pull/330295

Attempting to install the existing FMA in Fleet results in a certificate
error.
2026-01-20 07:38:33 -06:00
Mitch Francese
6d9a29d4ce
Add NextCloud as a macOS Fleet-maintained app (#37903)
- Add input manifest for nextcloud
- Generate output files
- Add description to apps.json
2026-01-06 21:59:11 -06:00
Allen Houchins
7d527ca23c
Add quit and relaunch logic to macOS FMAs (#37670)
This pull request enhances the macOS app installation process by
improving how running applications are handled during install and
update, and also updates the metadata and scripts for Docker Desktop.
The main improvements are the introduction of quit/relaunch logic for
pkg-based FMAs, and the renaming and updating of Docker Desktop’s
identifiers and scripts.

**App install/relaunch improvements:**

* Added new shell functions `quit_and_track_application` and
`relaunch_application` to the generated install scripts. These functions
ensure that if an app (or pkg) is running before installation, it is
quit and then automatically relaunched after installation, preserving
user state. The logic tracks whether the app was running via an
environment variable.
[[1]](diffhunk://#diff-a9df2db484fcbb560d62c43f94c4bcc2d26dcf68066c9e7cc2bffad6f124ce97L22-R41)
[[2]](diffhunk://#diff-a9df2db484fcbb560d62c43f94c4bcc2d26dcf68066c9e7cc2bffad6f124ce97R53-R59)
[[3]](diffhunk://#diff-a9df2db484fcbb560d62c43f94c4bcc2d26dcf68066c9e7cc2bffad6f124ce97R72-R73)
[[4]](diffhunk://#diff-a9df2db484fcbb560d62c43f94c4bcc2d26dcf68066c9e7cc2bffad6f124ce97R571-R648)
* Removed the previous simpler `quit_application` logic from the install
script generation, as the new functions supersede it.

**Docker Desktop metadata and script updates:**

* Renamed the Docker Desktop input and updated its `slug` and
`unique_identifier` to match the new bundle identifier
(`com.electron.dockerdesktop`), reflecting the current packaging.
* Updated the output app metadata in `apps.json` to use the new slug and
unique identifier for Docker Desktop.
* Added a new output file for Docker Desktop
(`docker-desktop/darwin.json`) with the updated install and uninstall
scripts, including the new quit/relaunch logic and references.
2026-01-05 22:31:55 -06:00
Allen Houchins
4bd3a5ce4d
Add Notepad++ as a Windows FMA (#37859)
This pull request adds support for Notepad++ as a maintained application
in the system. It includes metadata, installation and uninstallation
scripts, version tracking, and a custom icon for the frontend. The main
changes are grouped into backend app definition and scripting,
versioning/output updates, and frontend UI enhancements.

**Backend: Notepad++ App Definition and Scripting**
- Added a new app definition for Notepad++ in `winget` format, including
metadata and references to install/uninstall scripts (`notepad++.json`).
- Implemented PowerShell scripts for silent installation and
uninstallation of Notepad++ using NSIS-compatible flags
(`notepad++_install.ps1`, `notepad++_uninstall.ps1`).
[[1]](diffhunk://#diff-dbe7f508350f3d388cd03eba8739d31334cd4e8a20545dec83d40612cbb51190R1-R29)
[[2]](diffhunk://#diff-cda39039b54d874cec215f12e62ca7183f790fefe54d79affcb6f4965a305dbbR1-R99)

**Versioning and Outputs**
- Added Notepad++ entry to the main output apps registry (`apps.json`),
enabling it to be recognized as a supported app.
- Created a Notepad++ versioned output file for Windows, including
detection query, installer URL, SHA256, and script references.

**Frontend: UI Enhancements**
- Added a custom Notepad++ SVG icon component for use in the software
page UI (`Notepad++.tsx`).
- Registered the Notepad++ icon in the icon index and mapped it for
display with the app name.
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR8)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR376)
2026-01-05 13:42:49 -06:00
Allen Houchins
01907e5f8c
Remove Microsoft Teams Windows app and related files (#37747)
Deleted Microsoft Teams Windows app definition and output files, and
removed its entry from the main apps.json. This cleans up legacy support
for the old Teams Windows package.
2025-12-29 22:59:06 -06:00
Allen Houchins
54f239826e
Add Spotify as a Windows FMA (#37630)
This pull request adds full support for managing the installation and
uninstallation of Spotify on Windows via winget in the maintained apps
system. It introduces new configuration and script files, updates output
manifests, and ensures that both install and uninstall processes are
handled silently and robustly.

**Spotify Windows app integration:**

* Added a new manifest `spotify.json` in
`ee/maintained-apps/inputs/winget` to define Spotify's winget package
details, including references to custom install and uninstall scripts.
* Updated `ee/maintained-apps/outputs/apps.json` to register the Spotify
Windows app, enabling it to be discovered and managed by the platform.
* Added a new output manifest
`ee/maintained-apps/outputs/spotify/windows.json` specifying the
installer URL, version, install/uninstall script references, and
detection query for Spotify.

**Installation and uninstallation scripting:**

* Introduced a PowerShell install script `spotify_install.ps1` that
performs a silent installation of Spotify, handling exit codes and
errors gracefully.
* Added a PowerShell uninstall script `spotify_uninstall.ps1` that
locates Spotify's uninstaller via the registry, kills running processes,
and executes the uninstall silently, preserving existing arguments and
handling errors.
2025-12-22 22:19:39 -06:00
Allen Houchins
edd51ffdf9
Add OBS Studio as a Windows FMA (#37628)
This pull request adds support for managing OBS Studio on Windows using
Winget, including new install and uninstall scripts for automated
deployment and removal. The main changes are the introduction of a
metadata file for OBS Studio and robust PowerShell scripts to handle
silent installation and uninstallation.

**OBS Studio Winget Integration:**

* Added a new metadata file `obs.json` describing OBS Studio for Winget
management, including identifiers, script paths, and default categories.

**Installation Script:**

* Introduced `obs_install.ps1`, a PowerShell script that installs OBS
Studio silently using the `/S` flag, captures the installer exit code,
and handles errors gracefully.

**Uninstallation Script:**

* Added `obs_uninstall.ps1`, a PowerShell script that locates the OBS
Studio uninstaller via the Windows registry, ensures all running OBS
processes are stopped, parses the uninstall command, and performs a
silent uninstall (also with `/S`), including error handling and exit
code reporting.
2025-12-22 21:42:20 -06:00
Mitch Francese
5595a5a02b
Add Okta Verify as a macOS FMA (#37617)
- Add input manifest for okta-verify
- Generate output files
- Add description to apps.json
2025-12-22 17:15:31 -06:00
Allen Houchins
437d3f7cb6
Add Sourcetree as a Windows FMA (#37594)
This pull request adds support for the Windows version of Sourcetree
Enterprise to the maintained apps catalog. The changes introduce
metadata, installation, and uninstallation details for this app,
ensuring it can be managed and deployed via Fleet.

**Addition of Sourcetree Enterprise (Windows):**

* Added a new input definition for Sourcetree Enterprise in
`winget/sourcetree.json`, specifying package identifiers and installer
details.
* Updated `apps.json` to include Sourcetree Enterprise for the Windows
platform, with appropriate metadata and description.
* Created a new output file `sourcetree/windows.json` with version info,
install/uninstall PowerShell scripts, installer URL, SHA256 hash, and
upgrade code for proper management.
2025-12-20 22:42:48 -06:00
Allen Houchins
b195f4003c
Add Inkscape as a Windows FMA (#37386)
This pull request adds support for managing the Inkscape application on
Windows. It introduces new configuration files and updates existing
outputs to include Inkscape as a managed app, complete with installation
and uninstallation scripts.

**Addition of Inkscape for Windows:**

* Added a new input configuration for Inkscape in `winget`, specifying
installer details and default categories in `inkscape.json`.
* Created a new output file `inkscape/windows.json` with version
information, download URL, SHA256 hash, install/uninstall scripts, and
upgrade code for Inkscape 1.4.2.

**Updates to application listings:**

* Updated `apps.json` to include Inkscape for Windows as a managed app,
with its platform, slug, unique identifier, and description.
2025-12-16 21:39:05 -06:00
Allen Houchins
c5a11b1b77
Add Steam as a macOS and Windows FMA (#37383)
This pull request adds support for managing Steam as a maintained
application on both macOS (darwin) and Windows platforms. It introduces
new metadata, installation, and uninstallation scripts, and updates the
aggregated app catalog to include Steam for both platforms.

**Steam app integration:**

- Added metadata and configuration files for Steam on macOS and Windows,
including installation details, unique identifiers, and categorization.
[[1]](diffhunk://#diff-c281dce9b3fb0c07ee0240f023b10f04f90d714ede790faa62a0e6f140db35b2R1-R8)
[[2]](diffhunk://#diff-2f3d984248d056735d116afea075ebb59e8e209b4a35ecc35bc82c21f760ed7aR1-R12)
- Updated the main `apps.json` catalog to include Steam entries for both
platforms, complete with descriptions and platform-specific slugs.

**Installer and uninstaller scripts:**

- Added a PowerShell installation script for Windows that installs Steam
silently using the `/S` flag.
- Added a PowerShell uninstallation script for Windows that locates the
Steam uninstaller and removes it silently, handling both 32-bit and
64-bit registry locations.
- Added macOS shell scripts (referenced in the output) for installing
and uninstalling Steam, including logic to quit running processes and
clean up associated files.

**App version outputs:**

- Created output files for both `steam/darwin.json` and
`steam/windows.json`, specifying version information, detection queries,
installer URLs, script references, and default categories.
[[1]](diffhunk://#diff-12ddb40a8998c18e5806cefa53ded63d64144a101d2cab1dfbbe78093e8cddeaR1-R21)
[[2]](diffhunk://#diff-6a83a89e114cb2281eb5ee80b6f574a374304c1baa60b927c7e1096044814a55R1-R21)
2025-12-16 21:05:19 -06:00
Allen Houchins
353ab0a419
Add CrashPlan as a macOS and Windows FMA (#37348)
This pull request adds support for the CrashPlan backup and recovery
software to the maintained apps ecosystem for both macOS (Homebrew) and
Windows (Winget). It introduces new metadata, installation and
uninstallation scripts, and integrates CrashPlan into the application's
UI, including a dedicated icon.

**CrashPlan app support:**

- Added CrashPlan metadata for Homebrew (`crashplan.json`) and Winget
(`crashplan.json`), specifying identifiers, installer details, and
default categories.
[[1]](diffhunk://#diff-65666812266569e4f2198de5e97a2a0a2e02974e5b134dac13e9bd9fecc3109bR1-R8)
[[2]](diffhunk://#diff-c8f7deea2ce492ea0903ba3fcfdcf7a6df342b935c284dca8564f449f1247f39R1-R10)
- Included CrashPlan in the aggregated app listings (`apps.json`) for
both macOS and Windows platforms, with descriptions.

**Installer and uninstaller scripts:**

- Added versioned output and installation/uninstallation scripts for
CrashPlan on macOS (`crashplan/darwin.json`) and Windows
(`crashplan/windows.json`), including download URLs, SHA256 hashes, and
detection queries.
[[1]](diffhunk://#diff-13c8cfd39d6d7d8faabce6b6d7f6566275a4c7d09c37ca9cc9726e09c89cc60bR1-R21)
[[2]](diffhunk://#diff-5f7d9507b93b3c61d2035dd964d399e666e308be0cf46be8c358702c57b6927bR1-R22)

**UI integration:**

- Introduced a new CrashPlan SVG icon component (`CrashPlan.tsx`) and
mapped it in the software icon index for use in the UI.
[[1]](diffhunk://#diff-508f123066743b5b4f4de19a92f3aa6c1055e8cda2a5a9e8f57c99aed29df681R1-R14)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR7)
[[3]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR282)
2025-12-16 13:24:27 -06:00
Allen Houchins
34788f7686
Add 7-zip as a Windows Fleet-maintained app (#37222)
This pull request adds support for managing 7-Zip as a maintained
Windows application. The changes include configuration for installation
and uninstallation, workflow updates to handle 7-Zip specifically in CI,
and a new icon for the frontend. These updates ensure that 7-Zip can be
detected, installed, uninstalled, and visually represented in the
software management system.

**Windows workflow and detection updates:**

- Updated `.github/workflows/test-fma-windows-pr-only.yml` to detect
changes related to 7-Zip, set a `has_7zip` output variable, and add a
step to remove pre-installed 7-Zip versions before proceeding with
further app verification. This prevents conflicts with pre-existing
installations during CI runs.
[[1]](diffhunk://#diff-51641fd1d2cc19348b81fd8310b62ad270ca5082ceddff2d49064e78f126a1eaR91)
[[2]](diffhunk://#diff-51641fd1d2cc19348b81fd8310b62ad270ca5082ceddff2d49064e78f126a1eaR102)
[[3]](diffhunk://#diff-51641fd1d2cc19348b81fd8310b62ad270ca5082ceddff2d49064e78f126a1eaR117-R124)
[[4]](diffhunk://#diff-51641fd1d2cc19348b81fd8310b62ad270ca5082ceddff2d49064e78f126a1eaR164-R227)

**7-Zip application configuration:**

- Added `ee/maintained-apps/inputs/winget/7-zip.json` to define 7-Zip as
a maintained app with metadata such as slug, package identifier,
installer type, and categories.
- Added `ee/maintained-apps/outputs/7-zip/windows.json` with version
info, installation and uninstallation scripts, SHA256, and upgrade code
for 7-Zip, enabling automated install/uninstall flows.
- Updated `ee/maintained-apps/outputs/apps.json` to include 7-Zip in the
list of available apps, with a description and unique identifier for
display and selection.

**Frontend icon support:**

- Added a new React SVG icon component for 7-Zip at
`frontend/pages/SoftwarePage/components/icons/7Zip.tsx`.
- Registered the 7-Zip icon in the icon index and mapped it in
`SOFTWARE_NAME_TO_ICON_MAP` to display the icon for 7-Zip in the UI.
[[1]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR7)
[[2]](diffhunk://#diff-628095892e1d16090be1db6cc1a5c9cebc65248c32a8b1312385394818f2907bR224)
2025-12-16 09:55:30 -06:00