## ADDED Requirements ### Requirement: Model Download Progress Display The sidecar SHALL report Whisper model download progress to enable UI feedback. #### Scenario: Emit download start - **WHEN** Whisper model download begins - **THEN** sidecar SHALL emit JSON to stdout: `{"status": "downloading_model", "model": "", "progress": 0, "total_mb": }` #### Scenario: Emit download progress - **WHEN** download progress updates - **THEN** sidecar SHALL emit JSON: `{"status": "downloading_model", "progress": , "downloaded_mb": , "total_mb": }` - **AND** progress updates SHALL occur at least every 5% or every 5 seconds #### Scenario: Emit download complete - **WHEN** model download completes - **THEN** sidecar SHALL emit JSON: `{"status": "model_downloaded", "model": ""}` - **AND** proceed to model loading #### Scenario: Skip download for cached model - **WHEN** model already exists in huggingface cache - **THEN** sidecar SHALL NOT emit download progress messages - **AND** proceed directly to loading ### Requirement: Frontend Model Download Progress Display The Electron frontend SHALL display model download progress to users. #### Scenario: Show download progress in transcript panel - **WHEN** sidecar emits download progress - **THEN** whisper status element SHALL display download percentage and size - **AND** format: "Downloading: XX% (YYY MB / ZZZ MB)" #### Scenario: Show download complete - **WHEN** sidecar emits model_downloaded status - **THEN** whisper status element SHALL briefly show "Model downloaded" - **AND** transition to loading state #### Scenario: Forward progress events via IPC - **WHEN** main process receives download progress from sidecar - **THEN** it SHALL forward to renderer via `model-download-progress` IPC channel