Repository navigation
Fix Rocket Typist and HoudahSpot macOS FMA bundle IDs - #56904
Merged
Merged
Conversation
Both inputs took their unique_identifier from Homebrew zap stanzas that guessed the bundle ID from the major version. The real IDs are com.witt-software.Rocket-Typist-2 and com.houdah.HoudahSpot4, so the exists, patched, and open queries and the quit helpers never matched a real install.
fleet-release
previously approved these changes
Oct 29, 2026
allenhouchins
temporarily deployed
to
Docker Hub
October 29, 2026 14:09 — with
GitHub Actions
Inactive
Contributor
Script Diff Resultsee/maintained-apps/outputs/houdahspot/darwin.json=== Install // 0d98debd -> 0b3e5072 ===
--- /tmp/old.lnXuHe 2026-10-29 14:10:51.268127082 +0000
+++ /tmp/new.ZroVij 2026-10-29 14:10:51.268127082 +0000
@@ -100,7 +100,7 @@
sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
hdiutil detach "$MOUNT_POINT" || true
# copy to the applications folder
-quit_and_track_application 'com.houdah.HoudahSpot6' || exit 1
+quit_and_track_application 'com.houdah.HoudahSpot4' || exit 1
if [ -d "$APPDIR/HoudahSpot.app" ]; then
sudo mv "$APPDIR/HoudahSpot.app" "$TMPDIR/HoudahSpot.app.bkp" || exit $?
fi
@@ -113,4 +113,4 @@
fi
exit 1
fi
-relaunch_application 'com.houdah.HoudahSpot6'
+relaunch_application 'com.houdah.HoudahSpot4'
=== Uninstall // 4465095f -> 85d073d9 ===
--- /tmp/old.9Ztpf6 2026-10-29 14:10:51.286127216 +0000
+++ /tmp/new.jkIST4 2026-10-29 14:10:51.286127216 +0000
@@ -110,7 +110,7 @@
fi
}
-quit_application 'com.houdah.HoudahSpot6' || exit 1
+quit_application 'com.houdah.HoudahSpot4' || exit 1
sudo rm -rf "$APPDIR/HoudahSpot.app"
trash "$LOGGED_IN_USER" '~/Library/Application Scripts/com.houdah.HoudahSpot4.FinderExtension'
trash "$LOGGED_IN_USER" '~/Library/Application Scripts/com.houdah.HoudahSpot4.HoudahSpotQuickAction'ee/maintained-apps/outputs/rocket-typist/darwin.json=== Install // 3c06b467 -> e4014e16 ===
--- /tmp/old.bXgdnc 2026-10-29 14:10:51.333127565 +0000
+++ /tmp/new.klpL86 2026-10-29 14:10:51.333127565 +0000
@@ -100,7 +100,7 @@
sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
hdiutil detach "$MOUNT_POINT" || true
# copy to the applications folder
-quit_and_track_application 'com.witt-software.Rocket-Typist-3' || exit 1
+quit_and_track_application 'com.witt-software.Rocket-Typist-2' || exit 1
if [ -d "$APPDIR/Rocket Typist.app" ]; then
sudo mv "$APPDIR/Rocket Typist.app" "$TMPDIR/Rocket Typist.app.bkp" || exit $?
fi
@@ -113,4 +113,4 @@
fi
exit 1
fi
-relaunch_application 'com.witt-software.Rocket-Typist-3'
+relaunch_application 'com.witt-software.Rocket-Typist-2'
=== Uninstall // e6a00242 -> 4610d3d1 ===
--- /tmp/old.bDzKAq 2026-10-29 14:10:51.350127691 +0000
+++ /tmp/new.lLua5A 2026-10-29 14:10:51.350127691 +0000
@@ -110,13 +110,15 @@
fi
}
-quit_application 'com.witt-software.Rocket-Typist-3' || exit 1
+quit_application 'com.witt-software.Rocket-Typist-2' || exit 1
sudo rm -rf "$APPDIR/Rocket Typist.app"
+trash "$LOGGED_IN_USER" '~/Library/Application Scripts/com.witt-software.Rocket-Typist-2.Share-Text-With-Rocket-Typist'
trash "$LOGGED_IN_USER" '~/Library/Application Support/com.witt-software.rocket-typist'
-trash "$LOGGED_IN_USER" '~/Library/Application Support/com.witt-software.Rocket-Typist-3'
+trash "$LOGGED_IN_USER" '~/Library/Application Support/com.witt-software.Rocket-Typist-2'
trash "$LOGGED_IN_USER" '~/Library/Application Support/Rocket Typist'
trash "$LOGGED_IN_USER" '~/Library/Caches/com.apple.helpd/Generated/com.witt-software.Rocket-Typist.help*'
-trash "$LOGGED_IN_USER" '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.witt-software.Rocket-Typist-3'
-trash "$LOGGED_IN_USER" '~/Library/Caches/com.witt-software.Rocket-Typist-3'
-trash "$LOGGED_IN_USER" '~/Library/HTTPStorages/com.witt-software.Rocket-Typist-3'
-trash "$LOGGED_IN_USER" '~/Library/Preferences/com.witt-software.Rocket-Typist-3.plist'
+trash "$LOGGED_IN_USER" '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.witt-software.Rocket-Typist-2'
+trash "$LOGGED_IN_USER" '~/Library/Caches/com.witt-software.Rocket-Typist-2'
+trash "$LOGGED_IN_USER" '~/Library/Containers/com.witt-software.Rocket-Typist-2.Share-Text-With-Rocket-Typist'
+trash "$LOGGED_IN_USER" '~/Library/HTTPStorages/com.witt-software.Rocket-Typist-2*'
+trash "$LOGGED_IN_USER" '~/Library/Preferences/com.witt-software.Rocket-Typist-2.plist' |
…-mcclintock-268875 # Conflicts: # ee/maintained-apps/outputs/rocket-typist/darwin.json
fleet-release
approved these changes
Oct 29, 2026
allenhouchins
temporarily deployed
to
Docker Hub
October 29, 2026 14:30 — with
GitHub Actions
Inactive
fleet-release
approved these changes
Oct 29, 2026
Contributor
Script Diff Resultsee/maintained-apps/outputs/houdahspot/darwin.json=== Install // 0d98debd -> 0b3e5072 ===
--- /tmp/old.gHJCny 2026-10-29 14:31:57.426571310 +0000
+++ /tmp/new.BN3ArG 2026-10-29 14:31:57.426571310 +0000
@@ -100,7 +100,7 @@
sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
hdiutil detach "$MOUNT_POINT" || true
# copy to the applications folder
-quit_and_track_application 'com.houdah.HoudahSpot6' || exit 1
+quit_and_track_application 'com.houdah.HoudahSpot4' || exit 1
if [ -d "$APPDIR/HoudahSpot.app" ]; then
sudo mv "$APPDIR/HoudahSpot.app" "$TMPDIR/HoudahSpot.app.bkp" || exit $?
fi
@@ -113,4 +113,4 @@
fi
exit 1
fi
-relaunch_application 'com.houdah.HoudahSpot6'
+relaunch_application 'com.houdah.HoudahSpot4'
=== Uninstall // 4465095f -> 85d073d9 ===
--- /tmp/old.yxfoVP 2026-10-29 14:31:57.445571516 +0000
+++ /tmp/new.WJLy8r 2026-10-29 14:31:57.445571516 +0000
@@ -110,7 +110,7 @@
fi
}
-quit_application 'com.houdah.HoudahSpot6' || exit 1
+quit_application 'com.houdah.HoudahSpot4' || exit 1
sudo rm -rf "$APPDIR/HoudahSpot.app"
trash "$LOGGED_IN_USER" '~/Library/Application Scripts/com.houdah.HoudahSpot4.FinderExtension'
trash "$LOGGED_IN_USER" '~/Library/Application Scripts/com.houdah.HoudahSpot4.HoudahSpotQuickAction'ee/maintained-apps/outputs/rocket-typist/darwin.json=== Install // 3c06b467 -> e4014e16 ===
--- /tmp/old.befdWo 2026-10-29 14:31:57.494572045 +0000
+++ /tmp/new.oN5BIg 2026-10-29 14:31:57.495572056 +0000
@@ -100,7 +100,7 @@
sudo cp -R "$MOUNT_POINT"/* "$TMPDIR"
hdiutil detach "$MOUNT_POINT" || true
# copy to the applications folder
-quit_and_track_application 'com.witt-software.Rocket-Typist-3' || exit 1
+quit_and_track_application 'com.witt-software.Rocket-Typist-2' || exit 1
if [ -d "$APPDIR/Rocket Typist.app" ]; then
sudo mv "$APPDIR/Rocket Typist.app" "$TMPDIR/Rocket Typist.app.bkp" || exit $?
fi
@@ -113,4 +113,4 @@
fi
exit 1
fi
-relaunch_application 'com.witt-software.Rocket-Typist-3'
+relaunch_application 'com.witt-software.Rocket-Typist-2'
=== Uninstall // e6a00242 -> 4610d3d1 ===
--- /tmp/old.5YR0Vo 2026-10-29 14:31:57.515572272 +0000
+++ /tmp/new.CU60Yo 2026-10-29 14:31:57.516572283 +0000
@@ -110,13 +110,15 @@
fi
}
-quit_application 'com.witt-software.Rocket-Typist-3' || exit 1
+quit_application 'com.witt-software.Rocket-Typist-2' || exit 1
sudo rm -rf "$APPDIR/Rocket Typist.app"
+trash "$LOGGED_IN_USER" '~/Library/Application Scripts/com.witt-software.Rocket-Typist-2.Share-Text-With-Rocket-Typist'
trash "$LOGGED_IN_USER" '~/Library/Application Support/com.witt-software.rocket-typist'
-trash "$LOGGED_IN_USER" '~/Library/Application Support/com.witt-software.Rocket-Typist-3'
+trash "$LOGGED_IN_USER" '~/Library/Application Support/com.witt-software.Rocket-Typist-2'
trash "$LOGGED_IN_USER" '~/Library/Application Support/Rocket Typist'
trash "$LOGGED_IN_USER" '~/Library/Caches/com.apple.helpd/Generated/com.witt-software.Rocket-Typist.help*'
-trash "$LOGGED_IN_USER" '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.witt-software.Rocket-Typist-3'
-trash "$LOGGED_IN_USER" '~/Library/Caches/com.witt-software.Rocket-Typist-3'
-trash "$LOGGED_IN_USER" '~/Library/HTTPStorages/com.witt-software.Rocket-Typist-3'
-trash "$LOGGED_IN_USER" '~/Library/Preferences/com.witt-software.Rocket-Typist-3.plist'
+trash "$LOGGED_IN_USER" '~/Library/Caches/com.plausiblelabs.crashreporter.data/com.witt-software.Rocket-Typist-2'
+trash "$LOGGED_IN_USER" '~/Library/Caches/com.witt-software.Rocket-Typist-2'
+trash "$LOGGED_IN_USER" '~/Library/Containers/com.witt-software.Rocket-Typist-2.Share-Text-With-Rocket-Typist'
+trash "$LOGGED_IN_USER" '~/Library/HTTPStorages/com.witt-software.Rocket-Typist-2*'
+trash "$LOGGED_IN_USER" '~/Library/Preferences/com.witt-software.Rocket-Typist-2.plist' |
allenhouchins
marked this pull request as ready for review
October 29, 2026 14:58
fleet-release
approved these changes
Oct 29, 2026
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Existing installers can retain stale bundle-ID title references that catalog sync and script refresh do not repair, disconnecting them from real inventory unless those references are reconciled or affected installers are confirmed absent.
1 open issue
What changed in this PR
Corrects the macOS bundle IDs for Rocket Typist and HoudahSpot in Fleet-maintained apps, aligning detection and application lifecycle scripts with the installed apps.
Changes:
- Updates both input definitions and catalog entries with the correct identifiers.
- Regenerates detection queries and quit/relaunch script references without changing versions, download URLs, or checksums.
- Preserves the uninstall cleanup paths corrected in #56900 and #56433.
| File | Description |
|---|---|
ee/maintained-apps/outputs/rocket-typist/darwin.json |
Updates Rocket Typist queries, script calls, and references. |
ee/maintained-apps/outputs/houdahspot/darwin.json |
Updates HoudahSpot queries, script calls, and references. |
ee/maintained-apps/outputs/apps.json |
Corrects both catalog identifiers. |
ee/maintained-apps/inputs/homebrew/rocket-typist.json |
Sets Rocket Typist’s identifier to the -2 bundle ID. |
ee/maintained-apps/inputs/homebrew/houdahspot.json |
Sets HoudahSpot’s identifier to com.houdah.HoudahSpot4. |
Review effort: Balanced
| "slug": "houdahspot/darwin", | ||
| "platform": "darwin", | ||
| "unique_identifier": "com.houdah.HoudahSpot6", | ||
| "unique_identifier": "com.houdah.HoudahSpot4", |
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Related issue: Follow-up to #56900 and #56433. CodeRabbit flagged the corrected zap paths on those bot PRs as regressions. Both threads were declined because the input identifier is the real bug, and this PR fixes it.
The
unique_identifierin both inputs came from Homebrew zap stanzas that guessed the bundle ID from the major version (Rocket-Typist-#{version.major},HoudahSpot6). The real IDs are different, so the exists, patched, and open queries, plus the quit/relaunch helpers in the install and uninstall scripts, never matched a real install.com.witt-software.Rocket-Typist-3com.witt-software.Rocket-Typist-2com.houdah.HoudahSpot6com.houdah.HoudahSpot4Evidence
Rocket Typist.dmg, sha25607544827b7b1b63f49a1661f48a73abaa92e2173cbbd2e1d74167f7f626c5b73) hasCFBundleIdentifiercom.witt-software.Rocket-Typist-2, andcodesign -dvreports the same identifier (teamGH2Y99U35Z). This matches the AutoPkg recipe (autopkg/homebysix-recipesRocketTypist/RocketTypist.download.recipepinsidentifier "com.witt-software.Rocket-Typist-2"), IntuneBrew's entry for 3.4.2, and various: update zap stanza paths from CI Homebrew/homebrew-cask#298106, which replaced the zap paths with the-2paths its CI saw on disk.com.houdah.HoudahSpot4, and the extensions arecom.houdah.HoudahSpot4.FinderExtension/.HoudahSpotQuickAction. Homebrew fixed its zap stanza in Homebrew/homebrew-cask@d27087407c.The darwin validator passed with the wrong IDs only because
appExistsincmd/maintained-apps/validate/darwin.goalso matches by app name (... OR LOWER(<name>) LIKE LOWER('%<appName>%')), so a passing validator doesn't prove the identifier is right.Changes
unique_identifierfixed inrocket-typist.jsonandhoudahspot.json.go run ./cmd/maintained-apps -slug <slug>/darwin. Version, URL, and sha256 are unchanged for both apps. The only differences are the identifier in the three queries and in the install script'squit_and_track_application/relaunch_applicationand the uninstall script'squit_applicationcalls, plus the recomputed script refs.main: HoudahSpot's from Update Fleet-maintained apps #56433, and Rocket Typist's (-2paths plus theShare-Text-With-Rocket-Typistextension) from Update Fleet-maintained apps #56900. Mergingmainin after Update Fleet-maintained apps #56900 landed hit a conflict inrocket-typist/darwin.json. I kept this branch's side, which matchesmain's scripts exactly once-3is swapped for-2, and a fresh regen reproduces it byte for byte.apps.json:unique_identifierupdated for both entries by hand. The generator only adds new slugs toapps.jsonand doesn't refresh existing ones, andserver/mdm/maintainedapps/sync.goreads this field intofleet_maintained_apps. Same approach as Update Mellel macOS FMA to 6.8.0 (com.redlex.mellel.mac bundle ID) #55866.Not included: legacy-ID handling. No migration code was added for the old IDs. They never matched a real install, so no host's inventory reported them. I haven't checked whether any customer has added either FMA. If someone has, a reviewer should decide whether anything beyond the regenerated queries is needed. I'm flagging it here rather than building migration code for it.
Checklist for submitter
Testing
QA'd all new/changed functionality manually
Mounted the Rocket Typist 3.4.2 DMG and read
Info.plist+codesign -dv(results above).go test ./ee/maintained-apps/... ./cmd/maintained-apps/...passes.Compared old vs new outputs after parsing them: every query equals the old one with only the ID swapped, and the script diffs are only the lines listed above.
AI
AI: Claude Code (claude-opus-5-5)