Extension
https://www.raycast.com/mackopes/quit-applications
Raycast Version
Raycast Beta 0.69.0.0
OS Version
macOS 27.0 (26A5388g)
Description
Quitting Wispr Flow through Quit Applications shows a success toast and removes the app from the list, but Wispr Flow's main process remains running. Quitting the same app through Cmd-Q or its own menu works.
Wispr Flow version: 1.6.182.
Steps To Reproduce
- Launch
/Applications/Wispr Flow.app.
- Run the Quit Applications extension.
- Select Wispr Flow and press Enter.
- Observe the success toast and disappearing list entry.
- Observe that Wispr Flow remains running.
Current Behaviour
- The extension reports success without terminating
com.electron.wispr-flow.
- During a failed extension attempt, Wispr Flow's main log does not enter its
before-quit path.
- A direct Cmd-Q quit enters that path and exits cleanly (about 1.6 seconds in the observed run).
- No Apple Events authorization-denial error was present in the Raycast logs around the failure.
Expected Behaviour
The selected main application terminates. The extension should only show success and remove the entry after confirming termination.
Investigation
Current code discovers each running application using its exact bundle path and keys list entries by that path, but the Quit action then passes only app.name:
const success = await quitAppWithToast(app.name);
quitApp consequently targets AppleScript by display name:
tell application "${app}" to quit
Wispr Flow installs two application bundles whose display name is Wispr Flow:
- Main app:
/Applications/Wispr Flow.app (com.electron.wispr-flow)
- Nested accessibility helper:
Wispr Flow.app/Contents/Resources/swift-helper-app-dist/Wispr Flow.app (com.electron.wispr-flow.accessibility-mac-app, LSUIElement = true)
The nested helper is filtered from discovery, but quitting later re-resolves the shared display name through AppleScript. That loses the exact identity already available as app.path and can fail to reach the selected main bundle.
The AppleScript also catches non-cancellation errors internally. runAppleScript can therefore resolve, and the extension can show success, without verifying that the selected process exited.
Current source:
https://github.com/raycast/extensions/blob/main/extensions/quit-applications/src/index.tsx
Related work:
Suggested Fix
- Pass
app.path to the quit/restart functions and target the exact bundle path or identifier.
- Verify that the selected application process terminated before showing success or removing its row.
- Propagate non-cancellation AppleScript errors instead of catching them and returning successful completion.
Extension
https://www.raycast.com/mackopes/quit-applications
Raycast Version
Raycast Beta 0.69.0.0
OS Version
macOS 27.0 (26A5388g)
Description
Quitting Wispr Flow through Quit Applications shows a success toast and removes the app from the list, but Wispr Flow's main process remains running. Quitting the same app through Cmd-Q or its own menu works.
Wispr Flow version: 1.6.182.
Steps To Reproduce
/Applications/Wispr Flow.app.Current Behaviour
com.electron.wispr-flow.before-quitpath.Expected Behaviour
The selected main application terminates. The extension should only show success and remove the entry after confirming termination.
Investigation
Current code discovers each running application using its exact bundle path and keys list entries by that path, but the Quit action then passes only
app.name:quitAppconsequently targets AppleScript by display name:Wispr Flow installs two application bundles whose display name is Wispr Flow:
/Applications/Wispr Flow.app(com.electron.wispr-flow)Wispr Flow.app/Contents/Resources/swift-helper-app-dist/Wispr Flow.app(com.electron.wispr-flow.accessibility-mac-app,LSUIElement = true)The nested helper is filtered from discovery, but quitting later re-resolves the shared display name through AppleScript. That loses the exact identity already available as
app.pathand can fail to reach the selected main bundle.The AppleScript also catches non-cancellation errors internally.
runAppleScriptcan therefore resolve, and the extension can show success, without verifying that the selected process exited.Current source:
https://github.com/raycast/extensions/blob/main/extensions/quit-applications/src/index.tsx
Related work:
Suggested Fix
app.pathto the quit/restart functions and target the exact bundle path or identifier.