Launch
Launch is a Spotlight-style launcher for macOS. Press ⌘Space, type, press Return: it opens apps, finds files, and quits running processes from one box. Apps match by name, word start or initials, and the ones you use most rank higher. File search is built on fsearch.
changes
Fixed
Release 1.0.3
Fixed
Follow system appearance in launcher panel
Stop forcing dark aqua on LauncherPanel so it follows the system appearance. LauncherCard now picks its scrim, glass style, and shadow from the color scheme. Dark mode keeps the dark scrim over clear glass; light mode uses a light tint over regular glass, which frosts like Spotlight, with a softer shadow.
Added
Add separate DEV app icon for Debug builds
Add AppIcon-DEV.icon with a yellow gradient and magnifying glass layers, and use it for the Debug configuration so dev builds are easy to tell apart from release builds.
Also change the AppIcon fill color space from extended-srgb to srgb, and reorder CODE_SIGN_ENTITLEMENTS in project.pbxproj (no functional change).
Added
Show calendar events in the menu bar
The menu bar item now lists today's and tomorrow's events, and shows the
featured event (the one in progress, else the next timed one today) as
text beside the icon, counting down its time left or time until it starts.
- Event rows: start and end time, a dot in the calendar's colour, the name.
Clicking one opens its meeting link if it has one, else the event in
Calendar.
- Open in Calendar and Dismiss Event for the featured event. A dismissed
event stays hidden from the menu bar until it ends.
- The menu is AppKit (NSStatusItem and NSMenu) rather than MenuBarExtra,
so icons and the coloured dot render.
- Show Launcher and Welcome Guide are only in debug builds.
- Adds the calendar usage string and the calendars entitlement for the
hardened runtime.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Fixed
Update launcher.png
Fixed
Update launcher.png
Fixed
Release 1.0.2
Fixed
glass background
Fixed
selection
Fixed
Tidy SwiftUI structure and share one main-actor key monitor
SwiftUI
- LauncherView, OnboardingView: take the @Observable model as a plain let,
since neither makes bindings from it.
- Extract ResultList, FileSearchSection, OnboardingFooter and the two
permission rows into their own views with narrow inputs, so a selection or a
status change redraws the part that shows it.
- LaunchAtLoginToggle read SMAppService's status in a @State default, which
runs every time the parent redraws (Settings does every two seconds). Read it
once in .task, and move the register/unregister side effect into a method.
- FileSearchStatus is Equatable and Settings stores a polled status only when
it changed.
Concurrency
- LocalKeyMonitor holds the nonisolated(unsafe) / MainActor.assumeIsolated hop
for NSEvent monitors in one place; the panel and the shortcut recorder use it.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Removed
Replace progressive blur with a clear glass card
The launcher is now one 540pt card of clear glass with a faint dark scrim
behind the text: a magnifier and field on top, a divider, then one-line rows
with the path or kind at the right. The selection is white on the accent
colour. There is no footer; an action's error still shows in a thin bar under
the list. The panel stays dark whatever the system appearance, because clear
glass shows what is behind it and dark text over a dark window is unreadable.
Removes the progressive blur view and its tests, which nothing uses any more,
and fixes the README line that pointed at a footer.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Fixed
Release 1.0.1
Added
Replace glass card with progressive blur launcher
Drop the glass card, dividers and shortcut hint footer in favor of a borderless layout over a pool of progressive blur that fades out on every side.
- Add ProgressiveBlur (NSVisualEffectView with a variableBlur filter, masked per-pixel) with a material-based fallback in BlurBlot.
- Blur and content animate in and out via LauncherViewModel.isPresented; PanelController delays orderOut until the transition finishes and ignores mouse events while fading.
- Panel uses dark appearance, is positioned higher and clamped to short screens.
- Rows have no selection background; the selection is brighter text and a fuller icon, with the title cross-faded between weights. The list gets edge fades and centered scrolling.
- Replace ActionHintBar and ShortcutHint with ActionErrorBar, which only shows errors.
- Raise maxRows to 14 and the app provider's default limit to 10.
- Update metrics tests and add BlurProfile tests.
Added
Document development and licensing
Add a development guide for building, testing, and releasing Launch; streamline the README with clearer usage and troubleshooting guidance; and add the MIT license.
Fixed
Use gh credentials for https pushes in release
When `origin` is an https URL, push through `gh auth git-credential` so the release script reuses the existing gh login instead of prompting for a password GitHub no longer accepts. SSH remotes are unchanged.
If the push fails, the script now stops with a message. It explains that the release commit and tag exist locally and lists the manual push and `gh release create` commands to finish.
Fixed
Release 1.0.0
Fixed
Update AppIcon
Fixed
Fix release script Xcode lookup and test target signing
Added
Add Sparkle updates and per-feature toggles
Updates:
- Integrate Sparkle via SwiftPM, with an Updater wrapper, a Settings → Updates section and a "Check for Updates…" menu item.
- Add Config/Info.plist with the appcast feed URL and the EdDSA public key.
- scripts/release.sh now verifies the feed URL and signing key, launches the exported app once with --smoke-test, generates and verifies a signed appcast.xml, and uploads it with the release.
- Notarization can use the asc CLI, falling back to notarytool.
- Ad hoc builds disable the hardened runtime so the embedded Sparkle framework can load.
Features:
- Add Feature and FeatureSettings so File Search and Kill can be switched on or off in Settings and onboarding. The router drops disabled providers immediately, and the placeholder only names the enabled ones.
- FileSearchHost starts the file engine lazily, so a disabled File Search costs no memory.
- Kill gets a red "tile" icon.
UI:
- Add a transparent shadow margin around the launcher card so its shadow is no longer clipped, and adjust the panel position to match.
Also adds tests for features, metrics and update config, a README update, a launcher screenshot, and an ASC.md reference.
Added
Add release script and expand README
Add scripts/release.sh, which runs the tests, archives and exports a Developer ID-signed build, notarizes and staples the app and dmg, writes a zip and SHA256SUMS.txt, then commits, tags, pushes and creates the GitHub release. The version is written to the Xcode project only after everything else succeeds and the user confirms. Options include --version, --bump, --dry-run, --draft and --signing.
Rework the README with a header, features, install steps, permissions, a releasing section and the license note. Screenshot, website and license entries are still TODO placeholders.
Fixed
init
Fixed
Initial Commit