Three iOS client problems fixed plus a new core stereo-mic capture ABI: 1. Channel-id sync bug (mic button permanently dimmed): SessionState never synced currentChannelId from the self user's channelId on connect, so the mic button (gated on currentChannelId == 0) stayed dimmed. Added syncSelfChannel() (mirrors macOS MainWindowController.swift:461,491,522); called from init/.channelList/.userJoined/.userLeft/.userUpdated/.joinResult. Added applyServerMuteState() + serverMuted/serverDeafened to VoiceState. 2. Join/Leave Voice button: replaced icon-only mic toggle with explicit text button (parity with macOS). Mute/deafen disable when not in voice. 3. IOSAudioRouter.swift (new): full AVAudioSession routing layer — input port selection, built-in mic orientation/polar patterns, Bluetooth HFP/A2DP/Off modes, Standard/Raw mic processing, stereo capture, AirPlay, UserDefaults persistence. AudioSessionManager delegates to it. 4. Core stereo-mic capture (append-only ABI): vc_set_capture_channels() lets the core open the mic device in stereo (2-ch interleaved). LocalStream gains capture_channels; ensure_audio_running reads it; audio_engine.cpp capture_accum_ + on_capture updated to channel-aware accumulation. Test test_stereo_mic_capture (headless, L!=R stereo round-trip). Swift wrapper VoiceCatClient.setCaptureChannels. 5. Settings UI rework: AVAudioSession-derived input/output tree replaces miniaudio device picker. 6. iOS deployment target raised to 18.0 (Package.swift + project.pbxproj). swift-tools-version 6.0 with swiftLanguageModes .v5. Docs: tech-stack.md, architecture.md, voice.md, roadmap.md, building.md updated; stale 'vc_audio_suspend/resume deferred' claims corrected. Verified: ctest --preset dev 21/21 green; swift test 6/6 green; xcodebuild -target VoiceCatiOS -sdk iphonesimulator BUILD SUCCEEDED.
54 lines
926 B
Plaintext
54 lines
926 B
Plaintext
# Build output
|
|
/build/
|
|
/out/
|
|
|
|
# Staged distribution artifacts (scripts/build-*.sh output)
|
|
/dist/
|
|
*.o
|
|
*.obj
|
|
*.a
|
|
*.lib
|
|
*.so
|
|
*.dylib
|
|
*.dll
|
|
*.exe
|
|
*.pdb
|
|
|
|
# vcpkg
|
|
/vcpkg_installed/
|
|
/vcpkg/
|
|
|
|
# Generated protobuf
|
|
*.pb.cc
|
|
*.pb.h
|
|
*_pb2.py
|
|
|
|
# Server runtime data (self-host data dir, keys, db)
|
|
/voicecat-data/
|
|
*.sqlite
|
|
*.sqlite-*
|
|
|
|
# IDE / OS
|
|
.vs/
|
|
.vscode/
|
|
.idea/
|
|
*.user
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Apple / Windows client build artifacts (added in M4)
|
|
clients/apple/**/build/
|
|
clients/apple/**/*.xcodeproj/xcuserdata/
|
|
clients/apple/**/*.xcodeproj/project.xcworkspace/
|
|
clients/apple/**/*.xcframework/
|
|
clients/windows/**/bin/
|
|
clients/windows/**/obj/
|
|
# SwiftPM build artifacts
|
|
clients/apple/.build/
|
|
clients/apple/.swiftpm/
|
|
clients/apple/Package.resolved
|
|
|
|
# Test artifacts: TOFU pin store written by vc_client during headless tests
|
|
# (core/src/core/client.cpp falls back to this relative path when tofu_store_path is unset).
|
|
voicecat_tofu_pins.txt
|