71 lines
1.8 KiB
Markdown
71 lines
1.8 KiB
Markdown
# Mobile Client
|
|
|
|
> Status: Phase 3 — not yet started.
|
|
> This document tracks intentions and open questions.
|
|
|
|
---
|
|
|
|
## Goal
|
|
|
|
A native mobile client for iOS and Android.
|
|
Not a PWA. Not a wrapper around the desktop client.
|
|
|
|
## Open questions
|
|
|
|
### UI framework
|
|
|
|
egui on mobile is not practical today — touch input support is limited,
|
|
and the immediate mode model doesn't map well to mobile interaction patterns.
|
|
|
|
Candidates under consideration:
|
|
|
|
| Option | Notes |
|
|
|--------|-------|
|
|
| Rust + custom egui mobile backend | Most consistent with desktop codebase, significant work |
|
|
| Rust + Makepad | Rust-native UI designed for mobile, less mature |
|
|
| Rust core + Flutter UI | Dart for UI, Rust for audio/networking via FFI |
|
|
| Rust core + Swift/Kotlin UI | Platform-native UI, Rust for the important parts |
|
|
|
|
Decision: deferred to Phase 3.
|
|
|
|
### Audio
|
|
|
|
Mobile audio APIs are significantly more constrained than desktop:
|
|
|
|
- iOS: AVAudioSession, strict background audio rules
|
|
- Android: AAudio / OpenSL ES, varying latency by device
|
|
|
|
opus encoding is the same. cpal has partial mobile support.
|
|
The audio pipeline will need platform-specific tuning.
|
|
|
|
### Background operation
|
|
|
|
Voice calls in the background require OS-level permission and
|
|
platform-specific handling (CallKit on iOS, ConnectionService on Android).
|
|
This is non-trivial and will be a significant portion of mobile dev effort.
|
|
|
|
---
|
|
|
|
## What mobile must support (MVP)
|
|
|
|
- connect to a VNOX node
|
|
- join voice channels
|
|
- push-to-talk
|
|
- text chat
|
|
- identity (same keypair as desktop, importable via QR or keyfile)
|
|
|
|
## What mobile explicitly will not do
|
|
|
|
- host a node (gateway or voice-node)
|
|
- run plugins
|
|
- game overlay
|
|
|
|
---
|
|
|
|
## Timeline
|
|
|
|
Mobile client is Phase 3, after:
|
|
- Phase 1: desktop client + server MVP
|
|
- Phase 2: overlay, permissions, friend system
|
|
|
|
Estimated start: after Phase 2 is stable.
|