diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 58246dda..b2344518 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1347,16 +1347,6 @@ fn resolve_tool_approval( Ok(crate::harness_ai_service::resolve_tool_approval(&tool_call_id, approved, result)) } -/// 前端审批完成后回调:将审批结果发送给等待中的 stream_chat loop -#[tauri::command] -fn resolve_tool_approval( - tool_call_id: String, - approved: bool, - result: Option, -) -> Result { - Ok(crate::harness_ai_service::resolve_tool_approval(&tool_call_id, approved, result)) -} - #[tauri::command] async fn ai_completion( state: tauri::State<'_, AppState>, diff --git a/src/components/Onboarding/OnboardingTour.tsx b/src/components/Onboarding/OnboardingTour.tsx index 5a73f97a..6d995f5a 100644 --- a/src/components/Onboarding/OnboardingTour.tsx +++ b/src/components/Onboarding/OnboardingTour.tsx @@ -181,7 +181,7 @@ const getTourSteps = (t: (key: string) => string): any[] => { }, // 步骤 4: 布局切换器(定位到布局切换按钮) { - target: '[data-testid="layout-switcher"]', + target: document.querySelector('[data-testid="layout-switcher"]') ? '[data-testid="layout-switcher"]' : 'body', content: renderMarkdown(t('onboarding.steps.layoutSwitcher')), title: t('onboarding.steps.layoutSwitcherTitle'), disableBeacon: false, @@ -212,8 +212,8 @@ export const OnboardingTour: React.FC = ({ // 目标元素选择器(只检查静态元素) const targets = [ 'body', - '[data-testid="layout-switcher"]' - ]; + document.querySelector('[data-testid="layout-switcher"]') ? '[data-testid="layout-switcher"]' : null, + ].filter(Boolean) as string[]; // 轮询检测目标元素是否存在 let checkInterval: NodeJS.Timeout | null = null;