Edison Jwa
0381be6964
feat(ui): add per-user volume controls ( #17 )
2026-06-03 18:08:52 +09:00
Edison Jwa
5f7e2f7e97
fix(audio): update CoreML bridge for SileroVADRunner rename
...
Aligns with silero-coreml class rename to avoid CoreML type collision.
2026-06-02 20:41:30 +09:00
Edison Jwa
80c2ed46bc
fix(ci): align Flutter inventory with stable SDK
2026-06-02 19:44:45 +09:00
Edison Jwa
7510bdca73
fix(ci): refresh Flutter license inventory
2026-06-02 19:41:50 +09:00
Edison Jwa
966afd2b53
ci: fix Apple CoreML VAD checks
2026-06-02 19:33:02 +09:00
Edison Jwa
112a563de5
build(macos): link local SileroCoreML package
2026-06-02 01:54:05 +09:00
Edison Jwa
cac178f4af
build(ios): link local SileroCoreML package
2026-06-02 01:53:21 +09:00
Edison Jwa
71b7502ab7
Merge pull request #11 from EdisonJwa/fix/reduce-voice-snapshot-polling
...
perf(ui): stop polling snapshots from audio stats
2026-05-31 23:44:35 +09:00
Edison Jwa
25e6a16eb1
Merge pull request #10 from EdisonJwa/fix/ios-audio-lifecycle-lag
...
fix(ios): stabilize audio lifecycle startup
2026-05-31 23:43:32 +09:00
Edison Jwa
714a6b758c
perf(ui): stop polling snapshots from audio stats
2026-05-31 23:03:19 +09:00
Edison Jwa
e8e9fa8ccf
build(ios): remove onnxruntime pod wiring
2026-05-31 22:30:46 +09:00
Edison Jwa
b320f24c93
feat(ui): add shared app snackbar styling
2026-05-29 18:40:57 +09:00
Edison Jwa
fe6e07353e
chore: restore product scaffold to rollback baseline
2026-05-29 14:02:04 +09:00
Edison Jwa
487aff4e7c
fix: improve voice and chat controls
2026-05-25 18:26:56 +09:00
Edison Jwa
d03ea937e6
fix: refine linux voice runtime behavior
2026-05-25 18:26:49 +09:00
Edison Jwa
a2d686d9d0
feat: promote linux native audio path
2026-05-25 17:42:06 +09:00
Edison Jwa
862f83b297
fix: parse linux distro metadata
2026-05-25 16:02:01 +09:00
Edison Jwa
4a2a05ef83
fix: keep diagnostics available while connecting
2026-05-25 16:01:48 +09:00
Edison Jwa
b8df25a195
Reduce Linux setup ambiguity and surface desktop input/message failures honestly
...
Clarify ONNX Runtime guidance with direct-open install hints, restore desktop WebRTC VAD visibility, map mouse side buttons through focused PTT capture/runtime paths, and wait for server acks before showing chat sends as successful.
Constraint: Linux release UX must stay functional when ONNX Runtime is optional and GNOME portal availability varies
Rejected: Keep desktop VAD locked to Silero only | misleads users when ONNX Runtime is skipped
Confidence: medium
Scope-risk: moderate
Directive: Preserve the protocol send-ack wait path for chat so UI success always tracks real server acceptance
Tested: flutter analyze lib/main.dart lib/widgets/chat_views.dart lib/widgets/input_dialogs.dart lib/widgets/startup_dependency_screen.dart; flutter test test/widgets/input_dialogs_test.dart test/widgets/chat_views_test.dart test/services/startup_dependency_check_test.dart test/widgets/startup_dependency_screen_test.dart test/widgets/voice_settings_controls_test.dart test/widgets/audio_processing_config_state_test.dart; cargo test -p chanora_protocol --lib; cargo test -p chanora_audio ptt_backends --lib
Not-tested: Live manual GNOME portal rebind/global PTT on a real desktop session; observer-bot chat against a live server after the sender-name fallback change
2026-05-25 11:55:10 +09:00
Edison Jwa
1709ae2ac2
Route Android system back through the Flutter shell
...
Constraint: SRS-163 requires Android back to be handled by the shell/platform layer, and the Dart service existed but was not wired into the live app.
Rejected: Leave BackIntentService test-only and unwired | System back would bypass app policy on Android.
Confidence: medium
Scope-risk: narrow
Directive: Keep back-intent probe state in sync with every new dialog or pushed route added to the Flutter shell.
Tested: dart format apps/chanora_flutter/lib/main.dart; flutter analyze lib/main.dart test/services/back_intent_service_test.dart; flutter test test/services/back_intent_service_test.dart
Not-tested: Manual Android device back-navigation smoke test
2026-05-25 03:21:02 +09:00
Edison Jwa
7c9660572e
chore: refresh iOS project metadata
2026-05-25 01:20:36 +09:00
Edison Jwa
1326b03301
build: add Android release APK packaging script
2026-05-25 01:20:16 +09:00
Edison Jwa
5515ff6643
feat: stabilize voice activity and audio routing
2026-05-25 01:19:09 +09:00
Edison Jwa
d7556cd39f
feat: request Android startup permissions
2026-05-25 01:10:10 +09:00
Edison Jwa
11d4e7b7da
fix: stabilize Android permission state names
2026-05-25 01:08:02 +09:00
Edison Jwa
b8195acc9b
perf: avoid duplicate bootstrap work on join
2026-05-24 21:02:16 +09:00
Edison Jwa
b494f8902d
perf: short-circuit granted mic permission checks
2026-05-24 20:54:49 +09:00
Edison Jwa
7d5d8c2c90
feat: integrate chat voice and diagnostics client
2026-05-23 06:51:55 +09:00
Edison Jwa
7e28791ec2
Handle pokes outside chat tabs
2026-05-23 05:25:36 +09:00
Edison Jwa
738b274748
chore: bump build number to +76
2026-05-22 10:03:17 +09:00
Edison Jwa
bf284018e6
feat: Android Oboe voice backend — WebRTC APM, VAD, HW/SW toggle, BBCode welcome, link trust, foreground task
...
Audio engine (Rust):
- Android Oboe: WebRTC APM (AEC/NS/AGC/HPF) + TEN/Silero ONNX VAD
- Hardware effects (JNI) with software fallback per-effect
- Render reference buffer for AEC between output/capture callbacks
- Voice activity gate: suppress transmission when speaker muted (all platforms)
- Audio focus (SDD-109) + Bluetooth SCO (SDD-110) via JNI
- ONNX Runtime 1.26 via ort 2.0.0-rc.12 (down from rc.10, ndarray 0.17)
- VAD worker channel capacity 8→32, initial seq u64::MAX (warm-up fix)
- TEN VAD default backend (was Silero)
- Platform→WebrtcApm resolution after hardware binding
- oboe-rs edisonjwa fork with get_raw_session_id()
Android Kotlin:
- AndroidAudioFocusController + AndroidBluetoothScoController
- AndroidAudioLifecycleController (route changes to Flutter)
- ProGuard rules for new controllers
Flutter UI:
- VoiceSettings: Android HW/SW toggle (Platform auto / WebRTC APM)
- VoiceStatusChip: mute warning border + Speaker muted label
- BBCode welcome message parser (BbCodeText, case-insensitive)
- Welcome message foldable (expanded by default)
- Link trust dialog (domain wildcards, SharedPreferences)
- HapticFeedback on voice sheet opener
- Server name in AppBar, version v0.1.0
- Default channel (id=1) visible, serverquery clients hidden
- flutter_foreground_task integration
Config:
- ort load-dynamic on all non-iOS (Android/Linux/Windows)
- ONNX Runtime AAR 1.26.0
- ndarray moved to common deps (was Apple-only)
2026-05-22 09:29:57 +09:00
Edison Jwa
6af4ecab0f
feat(voice): add iOS VAD runtime support
2026-05-21 20:51:45 +09:00
Edison Jwa
171baf6e41
fix(voice): clamp transmit when speakers muted
2026-05-20 16:37:48 +09:00
Edison Jwa
f8a9c7a422
fix(android): add output device picker
2026-05-20 16:26:13 +09:00
Edison Jwa
f4db27b565
fix(android): expose audio output devices
2026-05-20 16:26:07 +09:00
Edison Jwa
256874997b
fix(android): request microphone permission on startup
2026-05-20 14:52:34 +09:00
Edison Jwa
bc1bd89424
fix(android): strengthen user voice indicators
2026-05-20 14:52:34 +09:00
Edison Jwa
b21fc16ee6
fix(android): clarify channel and voice status icons
2026-05-20 14:52:34 +09:00
Edison Jwa
34121b2eb7
fix(android): use row-only channel joins
2026-05-20 14:52:34 +09:00
Edison Jwa
48a38dba46
fix(android): prompt from locked channel rows
2026-05-20 14:52:34 +09:00
Edison Jwa
f8b6485390
fix(android): show password action only for locked channels
2026-05-20 14:52:34 +09:00
Edison Jwa
273eaf21c1
fix(android): add channel password join action
2026-05-20 14:52:34 +09:00
Edison Jwa
42d0ca0953
fix(android): polish app chrome and join guard
2026-05-20 14:52:34 +09:00
Edison Jwa
bc70da51df
fix(android): derive current channel from snapshot
2026-05-20 14:52:34 +09:00
Edison Jwa
3ae8e1ab77
fix(android): adapt fold layout and diagnostics
2026-05-20 14:52:34 +09:00
Edison Jwa
30ff955439
fix(android): clear permission-owned hard mute
2026-05-20 14:52:34 +09:00
Edison Jwa
eb1f4b895e
fix(android): remove cpal product wording
2026-05-20 14:52:34 +09:00
Edison Jwa
210a6a0e11
fix(android): unblock mic permission startup
2026-05-20 14:52:34 +09:00
Edison Jwa
d6763787aa
feat(android): initialise Oboe runtime context
2026-05-20 14:52:33 +09:00
Edison Jwa
8c253f1d4d
feat(voice): harden Android audio and channel joins
2026-05-19 01:58:07 +09:00