diff --git a/apps/desktop/src/main/browser/browser-profile.ts b/apps/desktop/src/main/browser/browser-profile.ts index def7f59..a321705 100644 --- a/apps/desktop/src/main/browser/browser-profile.ts +++ b/apps/desktop/src/main/browser/browser-profile.ts @@ -338,6 +338,7 @@ export async function importBrowserProfile(sourceId: string, profileDir: string) log.warn('partition locked, import deferred to next launch', { source: sourceId, profile: dirName }) return { ok: true, + deferred: true, cookies: collected.cookies, localStorage: collected.localStorage, cookieNote: deferredNote, diff --git a/apps/desktop/src/main/ipc.ts b/apps/desktop/src/main/ipc.ts index f4a2871..95ec676 100644 --- a/apps/desktop/src/main/ipc.ts +++ b/apps/desktop/src/main/ipc.ts @@ -274,6 +274,12 @@ export function registerIpc(): AgentService { return Promise.resolve() }) + // 应用自重启(浏览器数据导入被搁置时的一键完成入口) + handle('app:relaunch', () => { + app.relaunch() + app.exit(0) + }) + handle('app:versions', () => ({ app: process.env.npm_package_version ?? '0.0.0', electron: process.versions.electron, diff --git a/apps/desktop/src/preload/index.ts b/apps/desktop/src/preload/index.ts index f9cc1d1..20af223 100644 --- a/apps/desktop/src/preload/index.ts +++ b/apps/desktop/src/preload/index.ts @@ -55,6 +55,7 @@ const api = { getState: (): Promise => ipcRenderer.invoke('agent:state'), versions: (): Promise<{ app: string; electron: string; node: string; chrome: string; user: string }> => ipcRenderer.invoke('app:versions'), + appRelaunch: (): Promise => ipcRenderer.invoke('app:relaunch'), listSessions: (): Promise => ipcRenderer.invoke('sessions:list'), newSession: (): Promise => ipcRenderer.invoke('sessions:new'), openSession: (path: string): Promise => ipcRenderer.invoke('sessions:open', path), diff --git a/apps/desktop/src/renderer/src/components/browser/BrowserImportForm.tsx b/apps/desktop/src/renderer/src/components/browser/BrowserImportForm.tsx index 96d92e7..cb468fc 100644 --- a/apps/desktop/src/renderer/src/components/browser/BrowserImportForm.tsx +++ b/apps/desktop/src/renderer/src/components/browser/BrowserImportForm.tsx @@ -118,6 +118,17 @@ export function BrowserImportForm(): JSX.Element { {error && (
{error}
)} + {result?.deferred && ( +
+ +
+ )} {result && (
Promise getState: () => Promise versions: () => Promise<{ app: string; electron: string; node: string; chrome: string; user: string }> + appRelaunch: () => Promise listSessions: () => Promise newSession: () => Promise openSession: (path: string) => Promise diff --git a/apps/desktop/src/shared/types.ts b/apps/desktop/src/shared/types.ts index b2aa193..f3db5a8 100644 --- a/apps/desktop/src/shared/types.ts +++ b/apps/desktop/src/shared/types.ts @@ -333,6 +333,8 @@ export interface BrowserImportResult { localStorage: boolean cookieNote?: string message: string + /** true = 分区被占用,已转待办:重启应用后自动完成导入 */ + deferred?: boolean } export type AgentUiEvent =