UI Architecture (iOS + Mac Catalyst)
Overview of the app’s user interface. For component details, see linked notes.
Navigation
- Single unified ContentView (no tabs)
- Settings via gear icon (top right) - 405-settings-sheet
- Floating play button (bottom center)
Main Sections
State Management
Key Components
File Structure
Sources/
MinutaApp.swift # Entry point, AppState
AppIntents.swift # Shortcuts integration
Services/
StorageLocationManager.swift # Folder selection
Views/
ContentView.swift # Main view (~105 lines)
Components/ # Reusable components
History/ # History-related views
Sections/ # Main sections
Settings/ # Settings views
Mac Catalyst
- Title bar hidden via SceneDelegate
- Native save panel for exports
- Traffic lights visible
App Intents
| Intent | Description |
|---|
| StartTimerIntent | Start timer with optional tag name/comment; an unknown name creates the tag |
| StopTimerIntent | Stop all running timers |
| StartTimerFromWidgetIntent | Widget button: start a timer, optional tag ID (not discoverable in Shortcuts) |
| StopTimerFromWidgetIntent | Widget button: stop one timer by ID (not discoverable) |
| StopAllTimersFromWidgetIntent | Widget button: stop all timers (not discoverable) |
The widget intents live in Sources/WidgetIntents.swift, compiled into both the app and the widget extension; they run in the app process in the background (ForegroundContinuableIntent). All five run through WidgetIntentService, which also updates the recent tags and the widget snapshot. See WidgetData.