Use targeted checks for small changes and broader checks before shipping cross-surface work.

Python

Focused examples:
tests/test_flow.py and integration tests can require live transcription and grammar services.

Swift

Run this after Swift UI edits and whenever IPC message contracts change.

Flutter

After a WhisperKit pack is installed in a simulator:
Apple SpeechTranscriber uses the same integration test on supported physical iOS 26 hardware:
An iOS 26 simulator can build and execute the availability path but may report SpeechTranscriber unavailable because the model runtime depends on supported hardware.

Documentation

Run from doc/:
The docs source is doc/. Keep Mintlify pages, assets, snippets, and configuration there.

Manual smoke checks

  1. wh status
  2. wh start
  3. Double-tap Right Option to record.
  4. Tap Right Option or Space to stop and verify the clipboard result.
  5. Press Esc to cancel when needed.
  6. Hold Right Option past the double-tap threshold, release to stop, and verify paste-at-cursor behavior.
  7. Verify overlay states.
  8. Verify menu bar state.
  9. Verify selected-text shortcuts when those surfaces change.