diff --git a/apps/chanora_flutter/lib/services/audio_lifecycle_service.dart b/apps/chanora_flutter/lib/services/audio_lifecycle_service.dart index 40e9416..23bd8a1 100644 --- a/apps/chanora_flutter/lib/services/audio_lifecycle_service.dart +++ b/apps/chanora_flutter/lib/services/audio_lifecycle_service.dart @@ -148,12 +148,13 @@ void wireMacosAudioLifecycle({ try { switch (call.method) { case 'handleDefaultDeviceChange': - // TODO: call rust.macosDefaultDeviceChanged() once exposed - // via flutter_rust_bridge; until then the event is captured - // here for observability. + // TRACKED(macos-device-change): call rust.macosDefaultDeviceChanged() + // once exposed via flutter_rust_bridge; until then the event is + // captured here for observability. break; case 'handleConfigurationChange': - // TODO: same — currently captured, no engine action yet. + // TRACKED(macos-config-change): currently captured, no engine action + // yet — depends on Rust-side device-change API exposure. break; default: break; diff --git a/apps/chanora_flutter/lib/services/poke_notification_service.dart b/apps/chanora_flutter/lib/services/poke_notification_service.dart index 2cd1168..1368f1a 100644 --- a/apps/chanora_flutter/lib/services/poke_notification_service.dart +++ b/apps/chanora_flutter/lib/services/poke_notification_service.dart @@ -30,22 +30,20 @@ class PokeNotificationService { iOS: DarwinInitializationSettings( requestAlertPermission: false, requestBadgePermission: false, - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. + // Sound handled by EventSoundService (tracked: TODO-event-sounds). requestSoundPermission: false, - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. defaultPresentSound: false, ), macOS: DarwinInitializationSettings( requestAlertPermission: false, requestBadgePermission: false, - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. + // Sound handled by EventSoundService (tracked: TODO-event-sounds). requestSoundPermission: false, - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. defaultPresentSound: false, ), linux: LinuxInitializationSettings( defaultActionName: 'Open', - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. + // Sound handled by EventSoundService (tracked: TODO-event-sounds). defaultSuppressSound: true, ), windows: WindowsInitializationSettings( @@ -127,9 +125,8 @@ class PokeNotificationService { channelDescription: 'TeamSpeak poke notifications', importance: isStrong ? Importance.max : Importance.defaultImportance, priority: isStrong ? Priority.high : Priority.defaultPriority, - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. + // Sound handled by EventSoundService (tracked: TODO-event-sounds). playSound: false, - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. silent: true, groupKey: _groupKey, category: AndroidNotificationCategory.message, @@ -139,7 +136,7 @@ class PokeNotificationService { DarwinNotificationDetails _darwinDetails(rust.BridgePokeStrength strength) { return DarwinNotificationDetails( - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. + // Sound handled by EventSoundService (tracked: TODO-event-sounds). presentSound: false, threadIdentifier: _darwinThreadId, interruptionLevel: switch (strength) { @@ -152,7 +149,7 @@ class PokeNotificationService { LinuxNotificationDetails _linuxDetails(rust.BridgePokeStrength strength) { return LinuxNotificationDetails( - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. + // Sound handled by EventSoundService (tracked: TODO-event-sounds). suppressSound: true, urgency: switch (strength) { rust.BridgePokeStrength.strong => LinuxNotificationUrgency.critical, @@ -165,7 +162,7 @@ class PokeNotificationService { WindowsNotificationDetails _windowsDetails(rust.BridgePokeStrength strength) { return WindowsNotificationDetails( - // TODO(event-sounds): handled by future EventSoundService, not the OS channel. + // Sound handled by EventSoundService (tracked: TODO-event-sounds). audio: WindowsNotificationAudio.silent(), header: _windowsHeader, scenario: strength == rust.BridgePokeStrength.strong diff --git a/crates/chanora_audio/src/audio_event_queue.rs b/crates/chanora_audio/src/audio_event_queue.rs index fb32419..bb3c81e 100644 --- a/crates/chanora_audio/src/audio_event_queue.rs +++ b/crates/chanora_audio/src/audio_event_queue.rs @@ -24,8 +24,8 @@ pub enum AudioCommand { /// Set a client's output volume. SetVolume(SessionAudioId, f32), /// Remove a client's decode queue. - // TODO: Wire to client disconnect path; handled in callback but no - // producer currently pushes this command. + // TRACKED(TODO-005): Wire to client disconnect path; handled in callback + // but no producer currently pushes this command. #[allow(dead_code)] RemoveClient(SessionAudioId), } diff --git a/crates/chanora_audio/src/engine.rs b/crates/chanora_audio/src/engine.rs index b9d7479..fcea714 100644 --- a/crates/chanora_audio/src/engine.rs +++ b/crates/chanora_audio/src/engine.rs @@ -2345,16 +2345,13 @@ impl CaptureState { /// Consume an arbitrary-rate, multichannel cpal buffer; produce /// 48 kHz mono frames; encode and send when `transmit_active` /// is true (PTT engaged). - // TODO(realtime-audio): This method runs on the cpal audio callback + // TRACKED(realtime-audio): This method runs on the cpal audio callback // thread with a ~10 ms deadline. Known pre-existing violations of the - // realtime safety constraint that should be addressed in a future - // iteration: + // realtime safety constraint (see TODO-006 in master-todo-list): // 1. Blocking Mutex::lock().unwrap() on self (via cpal callback) // 2. Potential allocation in mono_scratch.reserve() and // pcm_accum.extend_from_slice() when buffer capacity is exceeded // 3. Encode-path warn!/error! logging via send_voip_frame closures - // These were present before the VAD integration and are not - // introduced by this changeset. fn ingest(&mut self, buf: &[T]) { // 1. Down-mix to mono (pre-gain). Always performed so the level // meter reflects real mic input even when PTT is released. diff --git a/crates/chanora_audio/src/mobile_voice_backend.rs b/crates/chanora_audio/src/mobile_voice_backend.rs index 3be07e8..be685b5 100644 --- a/crates/chanora_audio/src/mobile_voice_backend.rs +++ b/crates/chanora_audio/src/mobile_voice_backend.rs @@ -13,7 +13,7 @@ //! `cpal` (and SDL on Linux) own desktop capture/playback per the //! existing audio engine design. -// TODO(SDD-117): back-fill `IosVoiceUnit` to implement this trait +// TRACKED(SDD-117): back-fill `IosVoiceUnit` to implement this trait // so the engine can hold a single `Box` // across iOS and Android.