snowspeeder
bebaf59466
feat: authorize iOS Hermes accounts and secure session isolation
2026-10-01 12:57:57 -04:00
snowspeeder
ed329213de
Remove embedded music player
...
The music feature is retired: delete the Media tab, MediaAPI,
MediaPlayerController, PinnedMediaResourceLoader, MediaPanelView, the
media_state control publish, media scope handling in VoiceSession, the
volume setting, and all media tests. App is now Talk + Activity tabs.
Backend media API in hope-voice-api is untouched (still serves the web UI).
2026-09-12 06:26:58 -04:00
snowspeeder
af296da6b8
feat: background tasks panel (Phase 7)
2026-08-30 08:48:33 -04:00
snowspeeder
ca2d26f171
feat: voice and model pickers with sync-on-join (Phase 4)
...
- Voices.swift: 13 Azure voices, default en-US-Ava
- SettingsStore: persist voiceID/modelID, fallback to default voice
- VoiceSession: sync set_voice/set_model on agent_ready, selectVoice/selectModel, track models + model_changed
- SettingsView: voice and model picker sheets
- ControlChannel: publish via publish(data:) reliable data channel instead of sendText DataStream (agent listens on legacy data_received; DataStream text was dropped)
2026-08-30 07:50:45 -04:00
snowspeeder
4986b6d7dc
feat: LiveKit voice session, control channel, transcripts (Phase 2)
...
- VoiceSession: token->connect with fresh-room retry on timeout, agent
discovery, agent_ready wait, mic enable/mute, text send over lk.chat
- ControlChannel: outbound set_voice/set_model/get_models/set_mode/
media_state; inbound agent_ready/models/model_changed/task_event
- TranscriptHandler: transcription segments + transcript topic finals,
partial/final dedupe per role
- ConversationView/OrbView: status orb, mic/text-mode toggles, composer
- ServerConfig: plain ws:// signaling for private IPs (self-signed TLS
not injectable into SDK WebSocket); Info.plist local networking
2026-08-30 07:26:58 -04:00