Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,17 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Restore pinned ASR assets
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
.build/asr_runtime
.build/asr_test_assets
key: asr-assets-${{ hashFiles('scripts/fetch_asr_runtime.sh', 'scripts/fetch_asr_test_assets.sh') }}
- name: Prepare untraced build inputs
run: |
rustup target add aarch64-apple-ios aarch64-apple-ios-sim
scripts/build_ios_rust_ffi.sh
scripts/fetch_asr_runtime.sh
scripts/prepare_ios_build_inputs.sh
- name: Initialize CodeQL
uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
with:
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ scripts/check.sh # Everything the Verify CI job runs.
| Smoke-launch a built app | `scripts/smoke_app.sh <bundle> [--demo \| --installed]` | — |
| Prove the installed speech service | `scripts/check_speech_engine.sh [APP]` (run by every install) | A signed app |
| Install the iOS app on a phone | `scripts/install_ios.sh` | Unlocked iPhone in Developer Mode, `.env.local` |
| Prepare the iOS starter model | `scripts/prepare_ios_asr_model_package.sh <dir>` | Network during preparation only |
| Prepare an extra iOS model package | `scripts/prepare_ios_asr_model_package.sh <dir>` | Network during preparation only |
| Benchmark ASR models | `scripts/benchmark_asr.sh [--model m.gguf] [--manifest m.tsv]` | — |

Signing values live in the ignored `.env.local` (copy `.env.example`).
Expand All @@ -52,7 +52,8 @@ Calm, tactile, precise: a studio utility, not a settings form. Neutral
surfaces, system typography, no decorative borders, and one strong action per
workflow. Color appears only for active state, required attention, or errors.
The icon, Signal Bridge, is three generic nodes joined by one amber signal
path ([source](packaging/app_icon_source.png)). Details:
path ([source](packaging/app_icon_source.png)); iOS Voice Input crops the same
art full-bleed and paints amber only while recording. Details:
[UX specification](docs/ux_spec.md).

## Documentation
Expand Down
6 changes: 5 additions & 1 deletion Tests/untested_sources.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ Sources/HardwareControllerApp/profiles_view.swift | View; edits in `profile_edit
Sources/HardwareControllerApp/shortcut_recorder.swift | AppKit key-capture view; shortcut values in `profile_tests`.
Sources/HardwareControllerApp/voice_history_view.swift | View; state in `voice_history_model_test`.
apps/ios/voice_input/app/voice_input_history_view.swift | View; state in `voice_input_history_model_test`.
apps/ios/voice_input/app/voice_input_model_library_view.swift | View; state in `voice_input_model_library_model_test`.
apps/ios/voice_input/app/voice_input_dictate_view.swift | View; state in `voice_input_dictation_presentation_test`, driven by `voice_input_ui_test`.
apps/ios/voice_input/app/voice_input_root_view.swift | Tab container; driven by `voice_input_ui_test`.
apps/ios/voice_input/app/voice_input_settings_view.swift | View; state in `voice_input_history_model_test`, driven by `voice_input_ui_test`.
apps/ios/voice_input/app/voice_input_theme.swift | Style constant.
apps/ios/voice_input/app/voice_input_model_library_view.swift | View; state in `voice_input_model_library_model_test`, driven by `voice_input_ui_test`.
apps/ios/voice_input/app/voice_input_onboarding_view.swift | View; policy in `voice_input_onboarding_policy_test`.
apps/ios/voice_input/keyboard/keyboard_view_controller.swift | UIKit host; policy in `voice_input_keyboard_policy_test`.
apps/ios/voice_input/widgets/voice_input_widgets.swift | WidgetKit declarations.
Expand Down
6 changes: 4 additions & 2 deletions apps/ios/voice_input/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@ scripts/install_ios.sh # Build, install, and launch on a connected iPhone
```

Pick a simulator with `HC_IOS_SIMULATOR_UDID=<udid> scripts/check_ios.sh`. The
check grants microphone access only to Voice Input on that simulator.
check grants microphone access only to Voice Input on that simulator and runs
the UI tests with `jfk.wav` in place of the microphone (Debug builds only).

| Path | Owns |
| --- | --- |
| `app/` | Capture, transcribe.cpp ASR, formatting, History, Model library, onboarding. |
| `keyboard/` | QWERTY keyboard, voice status, one insertion attempt, recovery. |
| `system_capture/`, `widgets/` | Control Center control, App Intents, Live Activity. |
| `shared/` | Bounded Keychain handoff shared by app and extensions. |
| `tests/`, `ui_tests/` | Unit tests and simulator UI tests. |
| `resources/` | App icon (Signal Bridge, cropped full-bleed) and notices. |
| `tests/`, `ui_tests/` | Unit tests; UI tests that dictate a recorded clip end to end. |
| `project.yml` | XcodeGen source; regenerate with `scripts/generate_ios_project.sh`. |

Behavior and proofs: [user guide](../../../docs/user_guide.md#ios-voice-input),
Expand Down
Loading
Loading