forked from Manuel/meeting-assistant
- Introduced MacOsDesktopControlManifest to manage desktop control configurations. - Implemented MacOsDesktopControlService to handle the lifecycle of the macOS helper process. - Created MacOsWorkflowRulesEditorWindowService for managing workflow rules through a native window. - Developed a Swift helper for macOS that integrates with AppKit and Carbon for menu-bar controls and global hotkeys. - Added support for recording lifecycle actions via HTTP endpoints, maintaining consistency with existing Windows functionality. - Enhanced user experience by allowing macOS users to start/stop recordings and access settings through a menu-bar interface. - Documented design decisions, implementation evidence, and verification tasks for the new macOS features.
24 lines
1.3 KiB
Markdown
24 lines
1.3 KiB
Markdown
## Context
|
|
|
|
The application already exposes local HTTP endpoints for recording lifecycle actions. Windows desktop integrations invoke the coordinator in-process, while macOS currently has no desktop process capable of participating in AppKit or Carbon event loops.
|
|
|
|
## Decisions
|
|
|
|
### Native helper owns macOS desktop APIs
|
|
|
|
A bundled Swift helper owns the AppKit status item and Carbon global-hotkey registrations. The .NET host starts the helper only on macOS and terminates it during shutdown.
|
|
|
|
### Existing HTTP endpoints remain the control seam
|
|
|
|
The helper invokes loopback endpoints for recording and diagnostic actions. It does not duplicate recording state or lifecycle policy. It polls the status endpoint to keep the menu-bar presentation current.
|
|
|
|
### Configuration is passed as an explicit manifest
|
|
|
|
The .NET host derives a manifest from configured launch profiles. Shortcut strings are passed unchanged so macOS uses the same bindings displayed and registered on Windows.
|
|
|
|
## Verification
|
|
|
|
- Behavior tests prove the manifest preserves configured shortcuts and maps actions to the existing endpoints.
|
|
- The Swift helper supports a describe/self-test mode for deterministic packaging validation.
|
|
- Runtime verification launches the application, starts a new recording, and captures the visible macOS menu-bar recording state.
|