th-9c3f4e: unregister nested bundles, not just the outer .app - #606
Merged
Merged
Conversation
The session-closeout lane hit this cleaning up by hand: a debug build registers its Sparkle Updater.app and SmoothFlowUITests-Runner.app as their own LaunchServices entries, and `lsregister -u` on the outer SmoothFlow.app leaves both behind. Because the rows outlive the files, deleting the build directory produces a machine that looks clean and is not — which matters beyond tidiness, since `open -a SmoothFlow` can resolve to a stale row and a release "verified" by launching it would prove nothing. The matcher now covers any SmoothFlow*.app path. The exclusion for the official install became a PREFIX rather than an exact match on purpose: the real /Applications/SmoothFlow.app has its own nested Updater.app, and unregistering that would break Sparkle on a machine that was fine. Too wide is a worse failure than too narrow here, so the test pins both directions — plus a guard against its copy of the regex drifting from the shipped one, which would otherwise let this pass while the real matcher misbehaved. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: f8f1472 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
brentrager
enabled auto-merge (squash)
September 17, 2026 19:05
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.
Follow-up to #603, from a real miss the
session-closeoutlane hit while cleaning up by hand.The gap
A SmoothFlow debug build registers three LaunchServices entries, not one:
lsregister -uon the outer bundle does not take the other two with it, and the rows outlive the files — so deleting the build directory leaves a machine that looks clean and isn't.install-release.shas shipped in #603 matched only*/SmoothFlow.appand would have missed both nested entries while reporting success.That matters beyond tidiness: a stale row is exactly what lets
open -a SmoothFlowresolve to something that is not the release, which would make a screenshot-based verification meaningless.The fix
The matcher now covers any
SmoothFlow*.apppath. The exclusion for the official install is deliberately a prefix rather than an exact match, because/Applications/SmoothFlow.apphas its own nestedUpdater.app— unregistering that would break Sparkle on a machine that was perfectly healthy. Too wide is the worse failure here, so the test pins both directions:Debug/SmoothFlow.appUpdater.appSmoothFlowUITests-Runner.app/Applications/SmoothFlow.appUpdater.app/Applications/Safari.appinstall-release.test.shalso guards against its own copy of the regex drifting from the shipped one — without that, the test would keep passing while the real matcher misbehaved. Verified the guard trips by running the suite against a deliberately broken copy.Confirmed on this machine:
lsregister -dumpnow returns exactly one SmoothFlow row,/Applications/SmoothFlow.app, and the new matcher correctly reports nothing stale without flagging that install's nested Updater.🤖 Generated with Claude Code