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:
dh
2026-08-06 08:18:52 +02:00
parent 5f39923c27
commit 9542c05ea4
20 changed files with 981 additions and 11 deletions
@@ -0,0 +1,20 @@
## MODIFIED Requirements
### Requirement: Recording mode is controlled by a configurable hotkey
Meeting Assistant SHALL use normal .NET configuration to define global hotkeys that work on Windows and macOS and toggle recording/transcription mode.
Meeting Assistant SHALL preserve the configured shortcut strings across Windows and macOS, including the defaults `Ctrl+Alt+M`, `Ctrl+Alt+L`, `Ctrl+Alt+Z`, and `Ctrl+Alt+S`.
Meeting Assistant SHALL expose a configurable abort/discard hotkey for an active recording on Windows and macOS.
#### Scenario: macOS uses the configured Windows-equivalent shortcuts
- **GIVEN** the default and English profiles use `Ctrl+Alt+M` and `Ctrl+Alt+L`
- **AND** abort and screenshot use `Ctrl+Alt+Z` and `Ctrl+Alt+S`
- **WHEN** Meeting Assistant starts on macOS
- **THEN** it registers those same global shortcut combinations
- **AND** routes them to toggle, abort, and screenshot actions through the local service surface
#### Scenario: macOS recording hotkey starts recording
- **GIVEN** Meeting Assistant is idle on macOS
- **WHEN** the user presses the configured recording hotkey
- **THEN** Meeting Assistant starts recording/transcription mode