From 257204f0cd77c328addbb0f25e3e331ded241abc Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 8 Jan 2026 05:57:27 +0000 Subject: [PATCH] fix: remove swift/android build warnings --- .../clawdbot/android/node/ScreenRecordManager.kt | 11 ++++++++++- .../java/com/clawdbot/android/ui/RootScreen.kt | 15 ++++++++++----- .../com/clawdbot/android/voice/TalkModeManager.kt | 1 + .../ClawdbotIPCTests/AgentWorkspaceTests.swift | 4 ++-- .../ClawdbotIPCTests/SettingsViewSmokeTests.swift | 2 +- 5 files changed, 24 insertions(+), 9 deletions(-) diff --git a/apps/android/app/src/main/java/com/clawdbot/android/node/ScreenRecordManager.kt b/apps/android/app/src/main/java/com/clawdbot/android/node/ScreenRecordManager.kt index ade6da02c..61203f4f8 100644 --- a/apps/android/app/src/main/java/com/clawdbot/android/node/ScreenRecordManager.kt +++ b/apps/android/app/src/main/java/com/clawdbot/android/node/ScreenRecordManager.kt @@ -4,6 +4,7 @@ import android.content.Context import android.hardware.display.DisplayManager import android.media.MediaRecorder import android.media.projection.MediaProjectionManager +import android.os.Build import android.util.Base64 import com.clawdbot.android.ScreenCaptureRequester import kotlinx.coroutines.Dispatchers @@ -65,7 +66,7 @@ class ScreenRecordManager(private val context: Context) { val file = File.createTempFile("clawdbot-screen-", ".mp4") if (includeAudio) ensureMicPermission() - val recorder = MediaRecorder() + val recorder = createMediaRecorder() var virtualDisplay: android.hardware.display.VirtualDisplay? = null try { if (includeAudio) { @@ -121,6 +122,14 @@ class ScreenRecordManager(private val context: Context) { ) } + private fun createMediaRecorder(): MediaRecorder = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + MediaRecorder(context) + } else { + @Suppress("DEPRECATION") + MediaRecorder() + } + private suspend fun ensureMicPermission() { val granted = androidx.core.content.ContextCompat.checkSelfPermission( diff --git a/apps/android/app/src/main/java/com/clawdbot/android/ui/RootScreen.kt b/apps/android/app/src/main/java/com/clawdbot/android/ui/RootScreen.kt index 1ea73c98a..10b74926a 100644 --- a/apps/android/app/src/main/java/com/clawdbot/android/ui/RootScreen.kt +++ b/apps/android/app/src/main/java/com/clawdbot/android/ui/RootScreen.kt @@ -39,6 +39,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ScreenShare import androidx.compose.material.icons.filled.ChatBubble import androidx.compose.material.icons.filled.CheckCircle import androidx.compose.material.icons.filled.Error @@ -47,7 +48,6 @@ import androidx.compose.material.icons.filled.PhotoCamera import androidx.compose.material.icons.filled.RecordVoiceOver import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.Report -import androidx.compose.material.icons.filled.ScreenShare import androidx.compose.material.icons.filled.Settings import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState @@ -123,7 +123,7 @@ fun RootScreen(viewModel: MainViewModel) { if (screenRecordActive) { return@remember StatusActivity( title = "Recording screen…", - icon = Icons.Default.ScreenShare, + icon = Icons.AutoMirrored.Filled.ScreenShare, contentDescription = "Recording screen", tint = androidx.compose.ui.graphics.Color.Red, ) @@ -327,11 +327,10 @@ private fun CanvasView(viewModel: MainViewModel, modifier: Modifier = Modifier) // Some embedded web UIs (incl. the "background website") use localStorage/sessionStorage. settings.domStorageEnabled = true settings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE - if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) { - WebSettingsCompat.setForceDark(settings, WebSettingsCompat.FORCE_DARK_OFF) - } if (WebViewFeature.isFeatureSupported(WebViewFeature.ALGORITHMIC_DARKENING)) { WebSettingsCompat.setAlgorithmicDarkeningAllowed(settings, false) + } else { + disableForceDarkIfSupported(settings) } if (isDebuggable) { Log.d("ClawdbotWebView", "userAgent: ${settings.userAgentString}") @@ -414,6 +413,12 @@ private fun CanvasView(viewModel: MainViewModel, modifier: Modifier = Modifier) ) } +private fun disableForceDarkIfSupported(settings: WebSettings) { + if (!WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) return + @Suppress("DEPRECATION") + WebSettingsCompat.setForceDark(settings, WebSettingsCompat.FORCE_DARK_OFF) +} + private class CanvasA2UIActionBridge(private val onMessage: (String) -> Unit) { @JavascriptInterface fun postMessage(payload: String?) { diff --git a/apps/android/app/src/main/java/com/clawdbot/android/voice/TalkModeManager.kt b/apps/android/app/src/main/java/com/clawdbot/android/voice/TalkModeManager.kt index 198c6af9c..c9ccf1e2e 100644 --- a/apps/android/app/src/main/java/com/clawdbot/android/voice/TalkModeManager.kt +++ b/apps/android/app/src/main/java/com/clawdbot/android/voice/TalkModeManager.kt @@ -714,6 +714,7 @@ class TalkModeManager( systemTtsPendingId = null } + @Suppress("OVERRIDE_DEPRECATION") @Deprecated("Deprecated in Java") override fun onError(utteranceId: String?) { if (utteranceId == null) return diff --git a/apps/macos/Tests/ClawdbotIPCTests/AgentWorkspaceTests.swift b/apps/macos/Tests/ClawdbotIPCTests/AgentWorkspaceTests.swift index 2e785625b..320a44c39 100644 --- a/apps/macos/Tests/ClawdbotIPCTests/AgentWorkspaceTests.swift +++ b/apps/macos/Tests/ClawdbotIPCTests/AgentWorkspaceTests.swift @@ -63,7 +63,7 @@ struct AgentWorkspaceTests { case .unsafe: break case .safe: - #expect(false, "Expected unsafe bootstrap safety result.") + #expect(Bool(false), "Expected unsafe bootstrap safety result.") } } @@ -81,7 +81,7 @@ struct AgentWorkspaceTests { case .safe: break case .unsafe: - #expect(false, "Expected safe bootstrap safety result.") + #expect(Bool(false), "Expected safe bootstrap safety result.") } } diff --git a/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift b/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift index c59aba43a..93b88d5ea 100644 --- a/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift +++ b/apps/macos/Tests/ClawdbotIPCTests/SettingsViewSmokeTests.swift @@ -150,7 +150,7 @@ struct SettingsViewSmokeTests { @Test func voiceWakeSettingsBuildsBody() { let state = AppState(preview: true) - let view = VoiceWakeSettings(state: state) + let view = VoiceWakeSettings(state: state, isActive: false) _ = view.body }