Catalogue is a local-first macOS capture archive. Hold the trigger key, capture the current screen, then attach either a voice note or typed context and review everything inside a calm native macOS app.
- Native SwiftUI macOS app
- Home, Inbox, Timeline, Search, and Settings
- Local settings persistence
- Global hold-to-capture flow
- Full-display screenshot capture
- Typed-note fallback flow
- Voice recording with local transcription
- Timeline archive browsing with local filtering
- Global full-library text search
- Menu bar presence and background utility behavior
- First calendar event creation flow from entries
- Local JSON metadata store plus Application Support file storage
Catalogue/
App/
Models/
Services/
Stores/
Utilities/
Views/
Resources/
project.yml
Catalogue.xcodeproj
- Xcode 16+
- macOS 14+
- Screen Recording permission
- Microphone permission for voice capture
- Input Monitoring permission for the global trigger key monitor
- Calendar permission for event creation from entries
-
Generate the project when needed:
xcodegen generate
-
Open
Catalogue.xcodeprojin Xcode. -
Run the
Cataloguetarget.
Catalogue relies on native macOS privacy controls:
Screen Recording: required for screenshot capture.Microphone: required for voice notes.Input Monitoring: required so the app can detect the global trigger key while in the background.Calendars: required only if you want to create a Calendar event from an entry.
If you deny a permission, the app remains usable and surfaces the missing capability in Settings and Home. You can reopen System Settings from inside the app.
Catalogue can now behave like a background utility:
- You can keep it in the Dock, the menu bar, or both.
- Closing the last window does not quit the app.
- Capture remains active while the app is resident in the background.
- The menu bar item provides quick access to the app, recent captures, settings, and quit.
Current limitation:
- Dock visibility is switched at runtime using the native activation policy. This works cleanly for the MVP, but it is not a fully separate
LSUIElementbuild target.
- Launch at login is implemented with
ServiceManagement.SMAppService.mainApp. - It should work on signed builds on macOS 13+.
- In unsigned local debug builds, macOS may still refuse or require approval depending on local system policy.
Catalogue's first calendar pass is intentionally conservative:
- Enable calendar integration in
Settings. - Open an entry and use
Create Calendar EventorSuggest Event. - Review the generated draft before confirming.
- Catalogue never auto-creates events.
The app stores a lightweight local link to the created calendar event identifier and title when available.
The app stores its local data in the user's Application Support directory:
~/Library/Application Support/Catalogue/
Inside that directory:
entries.jsonstores metadataScreenshots/stores PNG capturesAudio/stores retained recorded audio filesModels/stores local transcription model files used by the app
EntryStoreowns metadata persistence and deletion.SettingsStoreowns user preferences.AppNavigationStoreowns app-wide section and entry selection.EntryRetrievalowns local timeline grouping and search matching.AppLifecycleControllermanages Dock visibility, menu bar utility mode, and launch-at-login synchronization.CaptureManagercoordinates the global trigger flow.OverlayWindowManagerrenders the fullscreen hold/capture overlay.CalendarServiceowns EventKit permission status and event creation.TranscriptionServiceremains abstracted, even though the app now prefers localwhisper.cpp.
Inbox: recent and operational review surfaceTimeline: chronological archive browsingSearch: retrieval-first lookup across the full librarySettings: permissions, capture behavior, theme, and app presence
This repository is source-available, not open source.
- You may install and run Catalogue.
- You may not modify it.
- You may not redistribute it.
- You may not share derivative versions.
See LICENSE for the exact terms.
- v1 supports
Right Optionas the trigger key cleanly, with a future-ready enum for more keys. - The MVP captures the main display.
- Metadata is stored in JSON for speed of implementation, with a clean seam for SQLite later.
- Menu bar mode and Dock visibility are controlled dynamically at runtime.
- Calendar integration is explicit and opt-in, not automatic scheduling.
- Expand trigger remapping beyond
Right Option. - Improve event/date extraction beyond the current first-pass detector.
- Add Highlights and Collections as real sections.
- Refine search ranking and result highlighting.
- Add deeper summaries and sync in later versions.