diff --git a/desktop/package.json b/desktop/package.json index 2f87369c..e7a3d0b9 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -5,7 +5,8 @@ "type": "module", "scripts": { "dev": "vite", - "build": "tsc -b && vite build", + "build": "bun run build:preview-agent && tsc -b && vite build", + "build:preview-agent": "bun run ./scripts/build-preview-agent.ts", "build:sidecars": "bun run ./scripts/build-sidecars.ts", "build:macos-arm64": "bash ./scripts/build-macos-arm64.sh", "build:windows-x64": "powershell -ExecutionPolicy Bypass -File ./scripts/build-windows-x64.ps1", diff --git a/desktop/scripts/build-preview-agent.ts b/desktop/scripts/build-preview-agent.ts new file mode 100644 index 00000000..2240f5c5 --- /dev/null +++ b/desktop/scripts/build-preview-agent.ts @@ -0,0 +1,3 @@ +import { $ } from 'bun' +await $`bun build ./src/preview-agent/index.ts --outfile=./src-tauri/resources/preview-agent.js --format=iife --minify` +console.log('preview-agent.js built') diff --git a/desktop/src-tauri/resources/preview-agent.js b/desktop/src-tauri/resources/preview-agent.js new file mode 100644 index 00000000..5fa73bcc --- /dev/null +++ b/desktop/src-tauri/resources/preview-agent.js @@ -0,0 +1 @@ +(()=>{(()=>{window.__PREVIEW_AGENT__=!0})();})(); diff --git a/desktop/src-tauri/src/webview_panel.rs b/desktop/src-tauri/src/webview_panel.rs index 79c44648..b674e111 100644 --- a/desktop/src-tauri/src/webview_panel.rs +++ b/desktop/src-tauri/src/webview_panel.rs @@ -3,8 +3,7 @@ use tauri::{AppHandle, LogicalPosition, LogicalSize, Manager, Runtime, WebviewBu const PREVIEW_LABEL: &str = "preview"; -/// M1 placeholder init script; replaced by the real preview-agent bundle in a later milestone. -const PREVIEW_INIT_SCRIPT: &str = "window.__PREVIEW_AGENT_READY__ = true;"; +const PREVIEW_INIT_SCRIPT: &str = include_str!("../resources/preview-agent.js"); #[derive(Default)] pub struct PreviewState(Mutex); @@ -63,7 +62,7 @@ pub async fn preview_open( .get_window(crate::MAIN_WINDOW_LABEL) .ok_or_else(|| "main window not found".to_string())?; let builder = WebviewBuilder::new(PREVIEW_LABEL, WebviewUrl::External(target)) - .initialization_script(PREVIEW_INIT_SCRIPT); + .initialization_script_for_all_frames(PREVIEW_INIT_SCRIPT); main.add_child( builder, LogicalPosition::new(bounds.x, bounds.y), diff --git a/desktop/src/preview-agent/index.ts b/desktop/src/preview-agent/index.ts new file mode 100644 index 00000000..46ed1d3e --- /dev/null +++ b/desktop/src/preview-agent/index.ts @@ -0,0 +1,5 @@ +// 注入到被预览页面的 IIFE 入口(M3 逐步填实) +;(() => { + // 标记注入成功,供宿主探测 + ;(window as unknown as { __PREVIEW_AGENT__?: boolean }).__PREVIEW_AGENT__ = true +})()