This repository contains The Right Menu, a macOS SwiftUI app plus an embedded Finder Sync extension. Treat the app and extension as one product. The public release artifact must be the signed, notarized app bundle containing the extension, not a standalone extension.
- Be direct, neutral, and evidence-driven.
- Challenge weak assumptions, especially around what macOS allows Finder extensions to do.
- Do not pretend Finder supports UI affordances it does not support.
- Prefer small, working changes over speculative architecture.
- Preserve user changes. Never reset or revert unrelated work without explicit permission.
macOS does not allow third-party apps to add a literal new column to Finder's native right-click menu. The supported integration is a Finder Sync extension that contributes context menu items. Keep the UX language honest: this project adds The Right Menu as a Finder context menu item/submenu.
theRightMenu/is the main SwiftUI macOS app.RightMenuFinderExtension/is the Finder Sync extension.RightMenuFinderExtension/FinderSync.swiftowns Finder menu items and file actions.theRightMenu/ContentView.swiftowns the companion app UI and setup controls.theRightMenu.xcodeproj/project.pbxprojcontains the app target, extension target, embedding, signing, and build settings.
Use this as the baseline local build:
xcodebuild -project theRightMenu.xcodeproj -scheme theRightMenu -configuration Debug buildFor release validation, use a Release build or archive flow rather than assuming Debug behavior is enough.
Useful checks:
pluginkit -m -A -D -v -p com.apple.FinderSync | rg -C 2 -i "RightMenu|theRightMenu|com.reom"
pluginkit -e use -i com.reom.theRightMenu.FinderExtension
killall FinderIf Finder does not show the menu, verify:
- The extension is embedded inside
theRightMenu.app/Contents/PlugIns/. - The extension is sandboxed.
- The extension appears in PlugInKit.
- The extension is enabled in System Settings.
- Finder has been relaunched after enabling.
The GitHub Actions release workflow should eventually produce a public macOS app release. It should:
- Build the app and embedded extension.
- Sign with the correct Developer ID Application certificate.
- Enable hardened runtime where required.
- Archive and export the app.
- Notarize with Apple.
- Staple the notarization ticket.
- Package as
.dmgor.zip. - Upload the package to a GitHub Release.
Do not commit signing assets or secrets. Use GitHub Actions secrets for certificates, passwords, keychain credentials, Apple API keys, and notarization credentials.
- Follow existing Swift and SwiftUI style.
- Keep Finder actions in
FinderSync.swiftunless there is a clear reason to extract shared logic. - Avoid broad filesystem permissions unless the Finder Sync use case truly requires them.
- Add user-visible errors for failed file operations.
- Keep menu actions predictable and reversible where possible.
- When adding new file templates, use unique filenames and safe defaults.
- Do not add marketing-page UI to the app. The app is a utility/control surface.
- Keep
README.mdaccurate about Apple platform limits. - Document setup and release steps that a real user or maintainer can execute.
- Do not claim public release readiness until signing, notarization, packaging, and update/release flow have been verified.