forked from Manuel/meeting-assistant
feat(macos): add native desktop controls and hotkey integration
- 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.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
## 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.
|
||||
Reference in New Issue
Block a user