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

Python

Local Whisper requires Python 3.11 or 3.12.
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

Run native transcription with a verified pack downloaded into the current iOS or Android app container:
This uses WhisperKit on iOS and Parakeet INT8 ONNX on Android. Network access is used for model setup; audio inference stays on-device. The pack remains installed after the test. To reuse an installed pack:
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.