Fix macOS-only copy on two Windows FMA catalog entries - #50111
Conversation
The proxyman/windows and wechat/windows entries in apps.json were copy-pasted from their macOS counterparts, so the Windows apps describe themselves as macOS software in the Fleet UI and on the fleetdm.com software catalog. Drops "macOS" from the Proxyman Windows description, and renames the WeChat Windows entry from "WeChat for Mac" to "WeChat" (matching its winget input, which already says "WeChat"). Adds a 'wechat' key to SOFTWARE_NAME_TO_ICON_MAP. Icon matching is by lowercased app name and requires an exact or whole-word-prefix match, so the existing 'wechat for mac' key would not match the new name and the app would fall back to the generic package icon. The old key stays for macOS and for hosts reporting that name.
There was a problem hiding this comment.
Pull request overview
This PR corrects customer-facing copy in the Fleet-maintained app catalog for two Windows entries that were mistakenly describing macOS software, and updates the frontend software-icon mapping so the renamed Windows WeChat entry still resolves to the correct icon.
Changes:
- Fixes
proxyman/windowsdescription to remove the incorrect “macOS” reference. - Renames
wechat/windowsfrom “WeChat for Mac” to “WeChat” and updates its description accordingly. - Adds a
wechaticon map key so “WeChat” matches an icon (while retaining"wechat for mac"for macOS/inventory matches).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| frontend/pages/SoftwarePage/components/icons/index.ts | Adds wechat: Wechat mapping so the Windows “WeChat” name resolves to the correct icon. |
| ee/maintained-apps/outputs/apps.json | Corrects Windows catalog copy for proxyman/windows and wechat/windows to remove macOS-only wording. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #50111 +/- ##
=======================================
Coverage 68.05% 68.05%
=======================================
Files 3929 3929
Lines 250284 250284
Branches 13238 13238
=======================================
Hits 170324 170324
Misses 64661 64661
Partials 15299 15299
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
WalkthroughUpdated the Proxyman Windows description to remove the macOS qualifier. Normalized the WeChat Windows entry name, identifier, and description from “WeChat for Mac” to “WeChat”. Added a ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Related issue: N/A — found while removing the macOS Yubikey Manager FMA (#50109)
Two Windows Fleet-maintained apps describe themselves as macOS software in
ee/maintained-apps/outputs/apps.json, because the entries were copy-pasted from their macOS counterparts. This copy is customer-facing: it shows in the Fleet UI's software catalog and onfleetdm.com/software-catalog/<slug>.proxyman/windows— "Proxyman is a high-performance macOS app that enables developers to view HTTP/HTTPS requests and responses." → drops "macOS". (Theproxyman/darwindescription keeps it; it's accurate there.)wechat/windows— name "WeChat for Mac" and "WeChat for Mac is a free messaging and calling application." → "WeChat". The winget input (inputs/winget/wechat.json) already declares"name": "WeChat", so this also makesapps.jsonagree with its own input. Thewechat/darwinentry keeps "WeChat for Mac", which is the actual macOS product name.Renaming the Windows entry needs a matching icon key.
getMatchedSoftwareIconmatches on the lowercased app name and requires an exact match or a whole-word prefix (matchLoosePrefixToKey:s === key || s.startsWith(key + " ")), so the existing"wechat for mac"key would not match a name of "WeChat" and the app would fall back to the generic package icon. Added awechat: Wechatkey alongside it (both point at the same component; the"wechat for mac"key stays for macOS and for hosts reporting that name in inventory).No server-side impact:
UpsertMaintainedAppkeys onslugand updatesnamein place, andReconcileMaintainedAppSoftwareNamesonly renamesdarwintitles, so the Windows rename doesn't touch existing software titles. Website icons resolve from the slug (build-static-content.jsbuildsapp-icon-<slug>-60x60@2x.png), not the name, soapp-icon-wechat-60x60@2x.pngis unaffected.Descriptions here mirror upstream cask/winget copy, so these are minimal factual corrections rather than a voice rewrite.
Checklist for submitter
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
apps.jsonstill parses; 1378 apps; verified the fourproxyman/wechatentries read as intended and thedarwinones are untouched.apps.jsonfor macOS-only phrasing (Rosetta,macOS,Mac,Apple) — these two were the only genuine mismatches.duo-desktop/windows(lists macOS, Windows, and Linux) andimazing-profile-editor/windows(edits Apple configuration profiles) are correct as written.Note:
node_modulesisn't installed in my working copy, so ESLint/Prettier weren't run locally — the added line is a one-line map entry matching the surrounding style. CI will confirm.Summary by CodeRabbit