Skip to content

Remove Yubikey Manager as a macOS FMA - #50109

Merged
allenhouchins merged 2 commits into
mainfrom
remove-macos-yubikey-manager-fma
Jul 29, 2026
Merged

Remove Yubikey Manager as a macOS FMA#50109
allenhouchins merged 2 commits into
mainfrom
remove-macos-yubikey-manager-fma

Conversation

@allenhouchins

@allenhouchins allenhouchins commented Jul 29, 2026

Copy link
Copy Markdown
Member

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) 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

  • 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

  • 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.

Summary by CodeRabbit

  • Bug Fixes
    • Updated YubiKey Manager’s Windows app description by removing the outdated Rosetta 2 requirement.
    • Removed the YubiKey Manager macOS listing and installation metadata.

The yubico-yubikey-manager cask was removed from homebrew-cask on
2026-07-28 after being disabled on 2025-07-27 because it is
discontinued upstream (replaced by yubico-authenticator). The brew API
404s for the token, so the maintained-apps ingester panics with
"app not found in brew API". Freezing the app in #50054 did not help,
since fetchCask runs before the frozen flag is applied.

Removes the Homebrew input, the darwin output, and the darwin apps.json
entry, and retargets the bare /software-catalog/yubico-yubikey-manager
redirect to the Windows page so the URL keeps resolving. Also drops the
macOS-only "Requires Rosetta 2" sentence from the Windows entry's
description. The Windows FMA, shared icon, and website image are kept.
Copilot AI review requested due to automatic review settings July 29, 2026 02:38
@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/inputs/homebrew/yubico-yubikey-manager.json

Error: File 'ee/maintained-apps/inputs/homebrew/yubico-yubikey-manager.json' does not exist

ee/maintained-apps/outputs/yubico-yubikey-manager/darwin.json

Error: File 'ee/maintained-apps/outputs/yubico-yubikey-manager/darwin.json' does not exist

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Removes the macOS Fleet-maintained app (FMA) for Yubikey Manager after the upstream Homebrew cask was removed (brew API now 404s), which was causing the scheduled maintained-apps update workflow to panic. Keeps the Windows FMA intact and adjusts the website redirect so the bare catalog URL resolves to the remaining Windows entry.

Changes:

  • Deleted the Homebrew input and macOS output JSON for yubico-yubikey-manager to prevent Homebrew ingestion panics on 404.
  • Removed the yubico-yubikey-manager/darwin entry from apps.json and corrected the remaining Windows description to drop the macOS-only Rosetta text.
  • Retargeted /software-catalog/yubico-yubikey-manager website redirect from -darwin to -windows.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
website/config/routes.js Redirects the bare Yubikey Manager catalog route to the Windows identifier (yubico-yubikey-manager-windows).
ee/maintained-apps/outputs/yubico-yubikey-manager/darwin.json Removes the macOS output payload so static-content build/ingestion no longer references a removed Homebrew cask.
ee/maintained-apps/outputs/apps.json Drops the macOS app entry and updates the remaining Windows description.
ee/maintained-apps/inputs/homebrew/yubico-yubikey-manager.json Removes the Homebrew input definition so the Homebrew ingester no longer attempts to fetch a missing cask.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI review requested due to automatic review settings July 29, 2026 02:45
@allenhouchins
allenhouchins merged commit 1e8b96e into main Jul 29, 2026
14 of 15 checks passed
@allenhouchins
allenhouchins deleted the remove-macos-yubikey-manager-fma branch July 29, 2026 02:46
@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/inputs/homebrew/yubico-yubikey-manager.json

Error: File 'ee/maintained-apps/inputs/homebrew/yubico-yubikey-manager.json' does not exist

ee/maintained-apps/outputs/yubico-yubikey-manager/darwin.json

Error: File 'ee/maintained-apps/outputs/yubico-yubikey-manager/darwin.json' does not exist

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: bc5a678a-1d1e-487a-ae2b-9828bc500dd4

📥 Commits

Reviewing files that changed from the base of the PR and between 3a78739 and 368936e.

📒 Files selected for processing (3)
  • ee/maintained-apps/inputs/homebrew/yubico-yubikey-manager.json
  • ee/maintained-apps/outputs/apps.json
  • ee/maintained-apps/outputs/yubico-yubikey-manager/darwin.json

Walkthrough

Removed the Homebrew input and macOS output metadata for Yubico YubiKey Manager, including its macOS version and embedded installation scripts. Updated the Windows app description to remove the “Requires Rosetta 2” text while retaining the end-of-life messaging and link.

Possibly related PRs

  • fleetdm/fleet#50054: Adjusts the same YubiKey Manager Homebrew input to control macOS output version updates.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch remove-macos-yubikey-manager-fma

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

allenhouchins added a commit that referenced this pull request Jul 29, 2026
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**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 on
`fleetdm.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". (The `proxyman/darwin` description 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 makes `apps.json` agree with its own input. The
`wechat/darwin` entry keeps "WeChat for Mac", which is the actual macOS
product name.

Renaming the Windows entry needs a matching icon key.
`getMatchedSoftwareIcon` matches 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 a `wechat: Wechat` key 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: `UpsertMaintainedApp` keys on `slug` and updates
`name` in place, and `ReconcileMaintainedAppSoftwareNames` only renames
`darwin` titles, so the Windows rename doesn't touch existing software
titles. Website icons resolve from the slug (`build-static-content.js`
builds `app-icon-<slug>-60x60@2x.png`), not the name, so
`app-icon-wechat-60x60@2x.png` is unaffected.

Descriptions here mirror upstream cask/winget copy, so these are minimal
factual corrections rather than a voice rewrite.

# 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:
- `apps.json` still parses; 1378 apps; verified the four
`proxyman`/`wechat` entries read as intended and the `darwin` ones are
untouched.
- Traced the icon lookup by hand: name "wechat" now hits the new
exact-match key; "wechat for mac" still hits the original.
- Swept every non-darwin entry in `apps.json` for macOS-only phrasing
(`Rosetta`, `macOS`, `Mac`, `Apple`) — these two were the only genuine
mismatches. `duo-desktop/windows` (lists macOS, Windows, and Linux) and
`imazing-profile-editor/windows` (edits Apple configuration profiles)
are correct as written.

Note: `node_modules` isn'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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

ee/maintained-apps/outputs/apps.json:9508

  • The description includes an HTML link with target="_blank" but no rel="noopener noreferrer". Because app descriptions are rendered unescaped in website/views/pages/docs/app-details.ejs (<%- thisApp.description %>), this can allow reverse-tabnabbing if the link target is compromised.
      "description": "YubiKey Manager is an application for configuring any YubiKey. YubiKey Manager won't get security updates or bug fixes. It's End of Life: <a target=\"_blank\" href=\"https://www.yubico.com/support/download/yubikey-manager/\">https://www.yubico.com/support/download/yubikey-manager</a>"

ee/maintained-apps/outputs/apps.json:9508

  • PR description says /software-catalog/yubico-yubikey-manager was retargeted from -darwin to -windows to avoid a 404 after removing the macOS FMA, but website/config/routes.js still redirects this path to /software-catalog/yubico-yubikey-manager-darwin (see website/config/routes.js:1139). This will continue to send users to a page that no longer exists once the darwin entry is removed.
      "name": "Yubikey Manager",
      "slug": "yubico-yubikey-manager/windows",
      "platform": "windows",
      "unique_identifier": "YubiKey Manager",
      "description": "YubiKey Manager is an application for configuring any YubiKey. YubiKey Manager won't get security updates or bug fixes. It's End of Life: <a target=\"_blank\" href=\"https://www.yubico.com/support/download/yubikey-manager/\">https://www.yubico.com/support/download/yubikey-manager</a>"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants