- Type: Menu Bar App (
LSUIElement). - Entry Point:
SnapFocusApp.swift. - Global Hotkey:
Cmd+Shift+S(triggers Voice Overlay). - Window Management:
PreferencesView(API Key configuration).RulerView(Always-on-top floating timeline).VoiceOverlayView(Transient floating interaction window).
-
Agentic Scheduler (Gemini AI)
- File:
GeminiCalendarScheduler.swift - Status: ✅ Implemented
- Function: Takes natural language input (transcript), sends to Gemini
gemini-2.5-flash(or pro-preview), parses JSON response, and creates events in "SnapFocus" calendar. - Limit: Currently only schedules for "today" based on immediate input. No context of past tasks.
- File:
-
Voice Assistant Interface
- File:
VoiceOverlayView.swift,SpeechRecognizer.swift - Status: ✅ Implemented
- Function: "Glowing Orb" UI that visualizes listening state. Uses
SFSpeechRecognizerfor real-time transcription. - Flow: Listen -> Transcribe -> Send to Gemini -> Update Calendar.
- File:
-
Calendar Management
- File:
CalendarManager.swift - Status: ✅ Implemented
- Function:
- Syncs with Apple Calendar (EventKit).
- Creates/Manages "SnapFocus" specific calendar.
- Smart Nudging: Adjusts current task duration via Up/Down arrow keys on the Ruler (shifts subsequent connected tasks).
- Bulk Shift: Capability to shift all remaining daily events (programmatic support exists).
- File:
-
Floating Ruler HUD
- File:
RulerView.swift - Status: ✅ Implemented
- Function: Visualizes the day's schedule on the side of the screen. Expands on hover.
- File:
-
Window Tiling (Rectangle)
- File:
RectangleManager.swift - Status: ✅ Implemented (Helper only)
- Function: Sends commands to Rectangle app via URL scheme (
rectangle://).
- File:
- Context-Aware Scheduling: Fetch yesterday's uncompleted tasks and include them in the Gemini prompt.
- Smart Rescheduling: Handle "I'm running late" intent specifically (auto-shift current schedule).
- Task Backlog/Inbox: A place to store tasks that aren't scheduled for a specific time yet.
- Ruler Interactivity:
- Drag-and-drop events to reschedule.
- Right-click context menu (Edit, Delete, Mark Complete).
- Error Handling: Better visual feedback when API keys are missing or requests fail.
- Local LLM Support: Option to use on-device models instead of Gemini API.
- Two-Way Sync: More robust handling of external calendar changes affecting the schedule.
- Permissions: Requires explicit accessibility (for hotkey) and screen recording/microphone permissions.
- Dependencies: Relies on "Rectangle" app being installed for window management features.