feat(macos): enable meeting integrations

This commit is contained in:
dh
2026-08-06 08:19:26 +02:00
parent 9542c05ea4
commit 2af7933a1b
27 changed files with 1999 additions and 227 deletions
@@ -0,0 +1,41 @@
## MODIFIED Requirements
### Requirement: Meeting metadata is captured when available
Meeting Assistant SHALL enrich a meeting from a matching calendar appointment when platform calendar metadata is available.
On Windows, Meeting Assistant SHALL retain Outlook Classic COM metadata lookup.
On macOS, Meeting Assistant SHALL read calendars available through EventKit, including Outlook-synced calendars, and SHALL apply the existing Teams-marker and current-meeting selection rules.
#### Scenario: macOS meeting uses calendar metadata
- **GIVEN** an EventKit calendar contains a Teams appointment spanning the meeting start time
- **WHEN** Meeting Assistant enriches the meeting on macOS
- **THEN** it applies the appointment title, attendees, agenda, and scheduled end time
#### Scenario: Windows metadata provider remains unchanged
- **GIVEN** Meeting Assistant is compiled for the Windows target
- **WHEN** meeting metadata is registered
- **THEN** it uses the Outlook Classic COM provider
- **AND** does not invoke or require the macOS native helper
### Requirement: Meeting Assistant can prompt to record scheduled Teams meetings
Meeting Assistant SHALL optionally inspect the host calendar for scheduled Teams meetings and show a native record-or-skip prompt when a meeting enters the configured prompt window.
On Windows, Meeting Assistant SHALL retain Outlook Classic COM lookup and Windows app notifications.
On macOS, Meeting Assistant SHALL use EventKit calendar events and a native AppKit record-or-skip prompt.
#### Scenario: macOS calendar meeting becomes due
- **GIVEN** calendar recording prompts are enabled on macOS
- **AND** an EventKit Teams appointment enters the prompt window
- **WHEN** the scheduler checks due meetings
- **THEN** Meeting Assistant shows the native macOS prompt
- **AND** starts recording with the appointment metadata when the user chooses record
### Requirement: Platform capabilities are diagnosable
Meeting Assistant SHALL expose a read-only diagnostic response containing the detected host, effective integration provider names, and enabled state of calendar prompts, speaker identification, screenshot OCR, FunASR backend, FunASR diarization, Whisper-local diarization, and workflow editor availability.
#### Scenario: macOS reports real integration providers
- **WHEN** the capability diagnostic is requested on macOS
- **THEN** it reports real macOS calendar metadata, calendar prompt, screenshot, and workflow editor providers
- **AND** does not report the no-op or unavailable provider names
@@ -0,0 +1,23 @@
## MODIFIED Requirements
### Requirement: Meeting screenshots are captured into assistant context
Meeting Assistant SHALL capture the active application window on supported Windows and macOS hosts and append it to the active meeting assistant context.
On Windows, Meeting Assistant SHALL retain the existing foreground-window capture implementation.
On macOS, Meeting Assistant SHALL capture the foremost on-screen window belonging to the frontmost application through native macOS APIs.
The existing screenshot OCR, crop, attendee enrichment, retry, and summary-wait behavior SHALL apply unchanged to macOS screenshots.
#### Scenario: macOS captures the active window for OCR
- **GIVEN** an active meeting on macOS and Screen Recording permission
- **WHEN** the screenshot hotkey or endpoint is invoked
- **THEN** Meeting Assistant saves a PNG of the frontmost application window
- **AND** appends it to assistant context
- **AND** starts OCR when screenshot OCR is enabled
#### Scenario: Windows screenshot provider remains unchanged
- **GIVEN** Meeting Assistant is compiled for the Windows target
- **WHEN** active-window screenshot capture is registered
- **THEN** it uses the existing Windows foreground-window provider
- **AND** does not invoke or require the macOS native helper
@@ -0,0 +1,18 @@
## MODIFIED Requirements
### Requirement: Portable transcription backends and speaker processing are available on macOS
Meeting Assistant SHALL allow speaker identification, managed FunASR startup, FunASR diarization, and Whisper-local pyannote diarization to run on macOS using the same managed implementations and configuration contracts as Windows.
These capabilities SHALL remain independently configurable and SHALL report actionable dependency errors when Docker, model files, API credentials, or model-access credentials are missing.
#### Scenario: macOS enables configured portable processing
- **GIVEN** the portable build is running on macOS
- **AND** speaker identification, managed FunASR, FunASR diarization, or Whisper-local diarization is enabled
- **WHEN** the corresponding transcription path runs
- **THEN** Meeting Assistant invokes the existing managed implementation
- **AND** does not disable the capability solely because the host is macOS
#### Scenario: Windows processing behavior remains unchanged
- **GIVEN** Meeting Assistant is compiled for the Windows target
- **WHEN** portable transcription and speaker-processing services are registered
- **THEN** it retains the existing managed implementations and configuration behavior