20 lines
1.1 KiB
Markdown
20 lines
1.1 KiB
Markdown
|
|
# Apple client (macOS + iOS) — placeholder
|
||
|
|
|
||
|
|
Built in **M4** (see [`docs/roadmap.md`](../../docs/roadmap.md)). Swift + SwiftUI, consuming
|
||
|
|
`libvoicecat` through the C ABI ([`core/include/voicecat.h`](../../core/include/voicecat.h)).
|
||
|
|
|
||
|
|
Planned shape (see [`docs/architecture.md`](../../docs/architecture.md) §4 and
|
||
|
|
[`docs/tech-stack.md`](../../docs/tech-stack.md) §2):
|
||
|
|
|
||
|
|
- A Swift Package wrapping the core as an **XCFramework** (macOS + iOS device + simulator).
|
||
|
|
- A module map exposing `voicecat.h` to Swift (Swift can also use C++ interop directly, but
|
||
|
|
the C ABI is the stable contract).
|
||
|
|
- SwiftUI app target for macOS and iOS.
|
||
|
|
- **iOS audio:** app owns `AVAudioSession` (`.playAndRecord` / `.voiceChat`), mic permission,
|
||
|
|
interruption/route handling, calling `vc_audio_*` hooks on the core.
|
||
|
|
- **iOS screen/system audio (`SCREEN_AUDIO`):** a **ReplayKit Broadcast Upload Extension**
|
||
|
|
capturing `RPSampleBufferType.audioApp`, linking a minimal core slice, sharing session
|
||
|
|
state via an **App Group** ([`docs/voice.md`](../../docs/voice.md) §9).
|
||
|
|
|
||
|
|
Nothing here yet — the core must reach M2 (working voice) before the GUI is worth building.
|