Add XCreds as a macOS FMA (#45404)

Register XCreds as a maintained app: add Homebrew cask (Casks/xcreds.rb)
and API/input JSON, add app metadata
(ee/maintained-apps/inputs/homebrew/xcreds.json), and include outputs
(apps.json and outputs/xcreds/darwin.json) with installer/uninstall
scripts and checks. Also add frontend icon component and asset
(XCreds.tsx, app-icon-xcreds-60x60@2x.png) and wire the icon into the
icons index mapping.
This commit is contained in:
Allen Houchins
2026-05-15 10:34:13 -05:00
committed by GitHub
parent 855caac093
commit 8c9f56f2ec
8 changed files with 182 additions and 0 deletions
@@ -0,0 +1,43 @@
cask "xcreds" do
version "5.9,9148"
sha256 "ab416a7d215029cfed6f292b176951ca614ce263c2b8923beee7fcf417de199a"
url "https://github.com/twocanoes/xcreds/releases/download/tag-#{version.csv.first}(#{version.csv.second})/XCreds_Build-#{version.csv.second}_Version-#{version.csv.first}.pkg"
name "XCreds"
desc "Syncs the user's IdP password with their macOS login password"
homepage "https://twocanoes.com/products/mac/xcreds/"
livecheck do
skip "Twocanoes does not expose a parseable XCreds version feed; bump manually"
end
depends_on macos: ">= :big_sur"
pkg "XCreds_Build-#{version.csv.second}_Version-#{version.csv.first}.pkg"
# XCreds installs a LaunchAgent that runs the app at user login, and a
# SecurityAgentPlugin that participates in the macOS login window. The
# postinstall script also modifies the system authorization database
# (system.login.console) — that part cannot be reverted declaratively;
# admins who need a full revert should restore from the rights.bak
# captured at install time under /Library/Application Support/xcreds/.
uninstall launchctl: "com.twocanoes.xcreds-launchagent",
quit: "com.twocanoes.xcreds",
pkgutil: "com.twocanoes.pkg.secureremoteaccess",
delete: [
"/Applications/XCreds.app",
"/Library/Security/SecurityAgentPlugins/XCredsLoginPlugin.bundle",
"/Library/LaunchAgents/com.twocanoes.xcreds-launchagent.plist",
]
zap trash: [
"~/Library/Application Support/xcreds",
"~/Library/Caches/com.twocanoes.xcreds",
"~/Library/HTTPStorages/com.twocanoes.xcreds",
"~/Library/Preferences/com.twocanoes.xcreds.plist",
"~/Library/Saved Application State/com.twocanoes.xcreds.savedState",
"~/Library/WebKit/com.twocanoes.xcreds",
"/Library/Application Support/xcreds",
"/Library/Managed Preferences/com.twocanoes.xcreds.plist",
]
end
@@ -0,0 +1,85 @@
{
"token": "xcreds",
"old_tokens": [],
"name": [
"XCreds"
],
"desc": "Syncs the user's IdP password with their macOS login password",
"homepage": "https://twocanoes.com/products/mac/xcreds/",
"url": "https://github.com/twocanoes/xcreds/releases/download/tag-5.9(9148)/XCreds_Build-9148_Version-5.9.pkg",
"url_specs": {},
"version": "5.9,9148",
"autobump": true,
"no_autobump_message": null,
"skip_livecheck": true,
"bundle_version": null,
"bundle_short_version": null,
"sha256": "ab416a7d215029cfed6f292b176951ca614ce263c2b8923beee7fcf417de199a",
"artifacts": [
{
"uninstall": [
{
"launchctl": "com.twocanoes.xcreds-launchagent",
"quit": "com.twocanoes.xcreds",
"pkgutil": "com.twocanoes.pkg.secureremoteaccess",
"delete": [
"/Applications/XCreds.app",
"/Library/Security/SecurityAgentPlugins/XCredsLoginPlugin.bundle",
"/Library/LaunchAgents/com.twocanoes.xcreds-launchagent.plist"
]
}
]
},
{
"pkg": [
"XCreds_Build-9148_Version-5.9.pkg"
]
},
{
"zap": [
{
"trash": [
"~/Library/Application Support/xcreds",
"~/Library/Caches/com.twocanoes.xcreds",
"~/Library/HTTPStorages/com.twocanoes.xcreds",
"~/Library/Preferences/com.twocanoes.xcreds.plist",
"~/Library/Saved Application State/com.twocanoes.xcreds.savedState",
"~/Library/WebKit/com.twocanoes.xcreds",
"/Library/Application Support/xcreds",
"/Library/Managed Preferences/com.twocanoes.xcreds.plist"
]
}
]
}
],
"caveats": null,
"caveats_rosetta": null,
"depends_on": {
"macos": {
">=": [
"11"
]
}
},
"conflicts_with": null,
"container": null,
"rename": [],
"auto_updates": null,
"deprecated": false,
"deprecation_date": null,
"deprecation_reason": null,
"deprecation_replacement_formula": null,
"deprecation_replacement_cask": null,
"deprecate_args": null,
"disabled": false,
"disable_date": null,
"disable_reason": null,
"disable_replacement_formula": null,
"disable_replacement_cask": null,
"disable_args": null,
"languages": [],
"ruby_source_path": "Casks/xcreds.rb",
"ruby_source_checksum": {
"sha256": "37fed8dc1c0a4d404d6be172a465e6fe1f919a5b79200155923b2399001d6a54"
}
}
@@ -0,0 +1,9 @@
{
"name": "XCreds",
"unique_identifier": "com.twocanoes.xcreds",
"token": "xcreds",
"installer_format": "pkg",
"slug": "xcreds/darwin",
"default_categories": ["Productivity"],
"cask_path": "ee/maintained-apps/inputs/homebrew/custom-tap/api/xcreds.json"
}
+7
View File
@@ -1961,6 +1961,13 @@
"unique_identifier": "com.wrike.Wrike",
"description": "Wrike is a project management app."
},
{
"name": "XCreds",
"slug": "xcreds/darwin",
"platform": "darwin",
"unique_identifier": "com.twocanoes.xcreds",
"description": "XCreds is an app that syncs a user's cloud identity provider password with their macOS login password."
},
{
"name": "Yubico Authenticator",
"slug": "yubico-authenticator/darwin",
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -247,6 +247,7 @@ import Windsurf from "./Windsurf";
import Wireshark from "./Wireshark";
import Word from "./Word";
import WrikeForMac from "./WrikeForMac";
import XCreds from "./XCreds";
import YubicoAuthenticator from "./YubicoAuthenticator";
import YubikeyManager from "./YubikeyManager";
import Zed from "./Zed";
@@ -517,6 +518,7 @@ export const SOFTWARE_NAME_TO_ICON_MAP = {
wireshark: Wireshark,
"wrike for mac": WrikeForMac,
wrike: WrikeForMac,
xcreds: XCreds,
"yubico authenticator": YubicoAuthenticator,
"yubikey manager": YubikeyManager,
zed: Zed,
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB