From 534c1cbfb2ac3645036b5dfb90d10868c3699803 Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Wed, 8 Apr 2026 00:47:44 -0700 Subject: [PATCH 1/4] feat(settings): add 'Use Vision Model' option to Screen Intelligence Panel - Introduced a new checkbox in the Screen Intelligence Panel to toggle the use of a vision model for richer context extraction from screenshots. - Updated state management to handle the new option and integrated it into the configuration and processing logic. - Adjusted related tests and configurations to support the new feature, ensuring compatibility across the application. --- .../panels/ScreenIntelligencePanel.tsx | 18 ++++ .../ScreenIntelligencePanel.test.tsx | 2 + app/src/utils/tauriCommands/accessibility.ts | 1 + app/src/utils/tauriCommands/config.ts | 1 + src/openhuman/config/ops.rs | 4 + src/openhuman/config/schema/accessibility.rs | 11 +++ src/openhuman/config/schemas.rs | 2 + .../screen_intelligence/processing_worker.rs | 96 ++++++++++++++----- 8 files changed, 110 insertions(+), 25 deletions(-) diff --git a/app/src/components/settings/panels/ScreenIntelligencePanel.tsx b/app/src/components/settings/panels/ScreenIntelligencePanel.tsx index 8f35d85e644..53cc2dedf15 100644 --- a/app/src/components/settings/panels/ScreenIntelligencePanel.tsx +++ b/app/src/components/settings/panels/ScreenIntelligencePanel.tsx @@ -71,6 +71,7 @@ const ScreenIntelligencePanel = () => { 'all_except_blacklist' ); const [baselineFps, setBaselineFps] = useState('1'); + const [useVisionModel, setUseVisionModel] = useState(true); const [keepScreenshots, setKeepScreenshots] = useState(false); const [allowlistText, setAllowlistText] = useState(''); const [denylistText, setDenylistText] = useState(''); @@ -105,6 +106,7 @@ const ScreenIntelligencePanel = () => { status.config.policy_mode === 'whitelist_only' ? 'whitelist_only' : 'all_except_blacklist' ); setBaselineFps(String(status.config.baseline_fps ?? 1)); + setUseVisionModel(status.config.use_vision_model ?? true); setKeepScreenshots(status.config.keep_screenshots ?? false); setAllowlistText((status.config.allowlist ?? []).join('\n')); setDenylistText((status.config.denylist ?? []).join('\n')); @@ -145,6 +147,7 @@ const ScreenIntelligencePanel = () => { enabled, policy_mode: policyMode, baseline_fps: Number.isFinite(fps) && fps > 0 ? fps : 1, + use_vision_model: useVisionModel, keep_screenshots: keepScreenshots, allowlist: allowlistText .split('\n') @@ -282,6 +285,21 @@ const ScreenIntelligencePanel = () => { /> + +