From 53cceab7da80013c0747e5b2a726320ffb4a29ee Mon Sep 17 00:00:00 2001 From: Wang Date: Wed, 9 Sep 2026 23:04:39 +0800 Subject: [PATCH 1/2] feat(desktop): improve WorkHub floating interaction and progress Keep existing Desktop windows in the background during control, show actionable progress, and remove the redundant session return button. Generated-by: OpenAI Codex --- .github/assets/workhub-progress/card-dark.png | Bin 0 -> 178491 bytes .../assets/workhub-progress/card-light.png | Bin 0 -> 95150 bytes apps/desktop/e2e/workhub-layout.spec.ts | 16 +- .../e2e/workhub-reconstruction.spec.ts | 52 ++- apps/desktop/renderer-architecture.json | 9 +- .../__tests__/client-settings-effects.test.ts | 19 ++ .../main/__tests__/workhub-control.test.ts | 45 ++- .../__tests__/workhub-presentation.test.ts | 305 ++++++++++++++++-- .../src/main/client-settings-effects.ts | 4 +- apps/desktop/src/main/runtime-host-boot.ts | 11 +- apps/desktop/src/main/workhub-control.ts | 23 +- apps/desktop/src/main/workhub-presentation.ts | 246 ++++++++++---- apps/desktop/src/main/workhub-ui.ts | 2 +- .../src/preload/workhub-presentation.ts | 2 + apps/desktop/src/renderer/app-shell.tsx | 19 +- .../workhub/locales/workhub-live-copy.ts | 6 + .../features/workhub/ui/workhub-dock.tsx | 9 +- .../workhub/ui/workhub-progress-card.tsx | 69 ++++ .../features/workhub/ui/workhub-root.tsx | 64 +++- .../src/renderer/locales/shell-copy.ts | 4 - apps/desktop/src/renderer/main.tsx | 7 +- apps/desktop/src/renderer/styles/workhub.css | 27 +- apps/desktop/src/shared/workhub-control.d.ts | 1 + .../src/shared/workhub-presentation.d.ts | 5 +- apps/desktop/stories/workhub.stories.tsx | 2 +- .../server/hosted-execution-tool-profile.ts | 1 + .../tool-activity-presentation.test.ts | 11 + packages/ui/src/__tests__/tool-format.test.ts | 16 + packages/ui/src/tool-activity.tsx | 3 +- packages/ui/src/tool-activity/display-name.ts | 12 + 30 files changed, 826 insertions(+), 164 deletions(-) create mode 100644 .github/assets/workhub-progress/card-dark.png create mode 100644 .github/assets/workhub-progress/card-light.png create mode 100644 apps/desktop/src/renderer/features/workhub/ui/workhub-progress-card.tsx diff --git a/.github/assets/workhub-progress/card-dark.png b/.github/assets/workhub-progress/card-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..9053102074ed34ef1b1bb3c15f1b953035553069 GIT binary patch literal 178491 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⪼oEoKbyr^~ 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 z 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 XLnEhx=Qyk;00000NkvXXu0mjfnbjTv literal 0 HcmV?d00001 diff --git a/apps/desktop/e2e/workhub-layout.spec.ts b/apps/desktop/e2e/workhub-layout.spec.ts index 8fbc4f5394..b6fce56bdc 100644 --- a/apps/desktop/e2e/workhub-layout.spec.ts +++ b/apps/desktop/e2e/workhub-layout.spec.ts @@ -152,7 +152,21 @@ test('WorkHub uses its coordination model and shared attachment composer', async const close = await workhub.getByRole('button', { name: /^(隐藏|Hide)$/ }).boundingBox(); const input = await editor.boundingBox(); expect(close!.y).toBeLessThan(input!.y); - await workhub.getByRole('button', { name: /收起对话|Collapse conversation/ }).click(); + await expect(workhub.locator('.workHubHistory')).toHaveCSS('opacity', '1'); + const collapseFrames = await workhub.getByRole('button', { name: /收起对话|Collapse conversation/ }).evaluate((button) => new Promise<{ opacity: number; visible: boolean }[]>((resolve) => { + const history = document.querySelector('.workHubHistory')!; + const frames: { opacity: number; visible: boolean }[] = []; + const started = performance.now(); + const sample = () => { + const style = getComputedStyle(history); + frames.push({ opacity: Number(style.opacity), visible: style.visibility === 'visible' }); + if (performance.now() - started < 220) requestAnimationFrame(sample); + else resolve(frames); + }; + (button as HTMLButtonElement).click(); + requestAnimationFrame(sample); + })); + expect(collapseFrames.some((frame) => frame.visible && frame.opacity > 0 && frame.opacity < 1)).toBe(true); await expect(workhub.locator('.workHubHistory')).toBeHidden(); await expect(workhub.getByRole('button', { name: /滚动到底部|Scroll to bottom/ })).toHaveCount(0); await expect.poll(() => workhub.evaluate(() => window.innerHeight)).toBeLessThan(expandedHeight / 2); diff --git a/apps/desktop/e2e/workhub-reconstruction.spec.ts b/apps/desktop/e2e/workhub-reconstruction.spec.ts index 3f0bc523bf..e0fe89deb6 100644 --- a/apps/desktop/e2e/workhub-reconstruction.spec.ts +++ b/apps/desktop/e2e/workhub-reconstruction.spec.ts @@ -61,6 +61,23 @@ test('WorkHub moves the same renderer and draft between the main window and floa await expect.poll(() => workhub.evaluate(() => window.maka.workHubPresentation.getSnapshot())).toMatchObject({ placement: 'floating', floatingVisible: true }); await expect(editor).toHaveText('Keep this unsent WorkHub draft — typed during opening'); await expect(editor).toHaveAttribute('data-test-instance', marker); + // A reused native window is already painted when focus arrives. Replaying + // the intro here would visibly fade that frame out after it appeared. + await workhub.evaluate(() => { + const samples: string[] = []; + (window as Window & { workHubFocusSamples?: string[] }).workHubFocusSamples = samples; + window.maka.workHubPresentation.onFocusComposer(() => { + requestAnimationFrame(() => samples.push(getComputedStyle(document.querySelector('.workHubComposerSurface')!).opacity)); + }); + }); + for (let index = 0; index < 3; index++) { + await workhub.evaluate(() => window.maka.workHubPresentation.hide()); + await expect(page.locator('.workHubDockPlaceholder')).toBeHidden(); + await expect(workhub.locator('.workHubHistory')).toHaveCSS('pointer-events', 'auto'); + await expect(editor).toHaveAttribute('data-test-instance', marker); + await page.evaluate(() => window.maka.workHubPresentation.detach()); + await expect.poll(() => workhub.evaluate(() => (window as Window & { workHubFocusSamples?: string[] }).workHubFocusSamples)).toEqual(Array.from({ length: index + 1 }, () => '1')); + } await page.evaluate(() => window.maka.settings.updateClient({ workHub: { enabled: false } })); await expect(page.locator('.workHubDock')).toBeHidden(); await expect.poll(() => workhub.evaluate(() => window.maka.workHubPresentation.getSnapshot())).toMatchObject({ floatingVisible: false, shortcutRegistered: false }); @@ -85,8 +102,7 @@ test('WorkHub moves the same renderer and draft between the main window and floa await workhub.getByRole('button', { name: /展开对话|Expand conversation/ }).click(); await expect(workhub.locator('.workHubHistory')).toBeVisible(); await workhub.getByRole('button', { name: /^(Hide|隐藏|隱藏)$/ }).click(); - await expect.poll(() => workhub.evaluate(() => window.maka.workHubPresentation.getSnapshot())).toMatchObject({ placement: 'floating', floatingVisible: false }); - await page.getByRole('button', { name: /^(Bring WorkHub back|收回工作台)$/ }).click(); + await expect.poll(() => workhub.evaluate(() => window.maka.workHubPresentation.getSnapshot())).toMatchObject({ placement: 'docked', floatingVisible: false }); await expect(page.locator('.workHubDockPlaceholder')).toBeHidden(); await expect.poll(() => workhub.evaluate(() => window.maka.workHubPresentation.getSnapshot())).toMatchObject({ placement: 'docked' }); await expect(editor).toHaveText('Keep this unsent WorkHub draft — typed during opening'); @@ -107,4 +123,36 @@ test('WorkHub moves the same renderer and draft between the main window and floa await workhub.getByRole('button', { name: '发送', exact: true }).click(); await expect(workhub.locator('.workHubLive')).toHaveAttribute('data-conversation-expanded', 'true'); await expect(workhub.locator('article').filter({ hasText: 'Keep this unsent WorkHub draft' }).first()).toBeVisible(); + // WorkHub owns foreground focus while native input targets Desktop behind it. + // Playwright otherwise forces document.hasFocus() true for every page. + const main = await app.browserWindow(page); + const cdp = await app.context().newCDPSession(page); + await cdp.send('Emulation.setFocusEmulationEnabled', { enabled: false }); + await main.evaluate(window => window.showInactive()); + await page.evaluate(() => window.maka.workHubPresentation.detach()); + await expect.poll(() => main.evaluate(window => window.isFocused())).toBe(false); + expect(await page.evaluate(() => document.hasFocus())).toBe(false); + const result = await app.evaluate(async ({ BrowserWindow }, mainId) => { + const require = process.getBuiltinModule('module').createRequire(process.cwd() + '/package.json'); + const { WorkHubUi } = require('./dist/main/workhub-ui.js'); + const main = BrowserWindow.fromId(mainId)!; + let focused = 0; + const onFocus = () => focused++; + main.on('focus', onFocus); + const ui = new WorkHubUi(() => main.webContents, () => main.webContents.executeJavaScript('window.maka.settings.getClient()'), () => {}, async () => ''); + try { + const signal = new AbortController().signal; + await ui.begin(signal); + await ui.execute({ kind: 'open', area: 'newTask' }, signal); + const observation = await ui.observe(); + const editor = observation.controls.find((item: any) => item.editable && item.name.match(/消息输入框|Message/)); + if (!editor) throw new Error('Background navigation did not expose the composer'); + await ui.execute({ kind: 'type', ref: editor.ref, text: '后台输入验证' }, signal); + await main.webContents.executeJavaScript("window.__backgroundKey = undefined; document.addEventListener('keydown', event => { window.__backgroundKey = { key: event.key, trusted: event.isTrusted }; }, { once: true })"); + await ui.execute({ kind: 'key', ref: editor.ref, key: 'ArrowLeft' }, signal); + return { focused, mainFocused: main.isFocused(), key: await main.webContents.executeJavaScript('window.__backgroundKey'), value: await main.webContents.executeJavaScript('document.querySelector("[contenteditable=true]")?.textContent') }; + } finally { main.removeListener('focus', onFocus); } + }, await main.evaluate(window => window.id)); + expect(result).toEqual({ focused: 0, mainFocused: false, key: { key: 'ArrowLeft', trusted: true }, value: '后台输入验证' }); + await expect(workhub.locator('[contenteditable=true]')).toBeEmpty(); }); diff --git a/apps/desktop/renderer-architecture.json b/apps/desktop/renderer-architecture.json index ca1078374a..f0fc27ab92 100644 --- a/apps/desktop/renderer-architecture.json +++ b/apps/desktop/renderer-architecture.json @@ -710,7 +710,7 @@ "nonTriviaTokens": 1395 }, "src/renderer/app-shell.tsx": { - "importDeclarations": 71, + "importDeclarations": 70, "bridgePaths": { "window.maka.attachments": 1, "window.maka.attachments.readBytes": 1, @@ -863,7 +863,6 @@ "./use-turn-action-registry": 1, "./workspace-readiness-recovery": 1, "@astryxdesign/core/AppShell": 1, - "@astryxdesign/core/Button": 1, "@maka/core/onboarding-milestone": 1, "@maka/core/session": 1, "@maka/core/session-revisions": 1, @@ -872,8 +871,8 @@ "@maka/ui": 1, "react": 1 }, - "importSpecifiers": 109, - "nonTriviaTokens": 13749 + "importSpecifiers": 108, + "nonTriviaTokens": 13700 }, "src/renderer/use-app-shell-composer-quotes.ts": { "importDeclarations": 2, @@ -4657,7 +4656,7 @@ "react-dom/client": 1 }, "importSpecifiers": 7, - "nonTriviaTokens": 268 + "nonTriviaTokens": 260 } }, "rootDebtClosure": { diff --git a/apps/desktop/src/main/__tests__/client-settings-effects.test.ts b/apps/desktop/src/main/__tests__/client-settings-effects.test.ts index 28c3f157d1..0dcdeda897 100644 --- a/apps/desktop/src/main/__tests__/client-settings-effects.test.ts +++ b/apps/desktop/src/main/__tests__/client-settings-effects.test.ts @@ -183,3 +183,22 @@ test('an explicit dark preference ignores what the OS reports', async () => { await effects.refresh(false); assert.deepEqual(applied, ['ink']); }); + + +test('applies WorkHub enable state from the supplied snapshot without another storage read', async () => { + const applied: boolean[] = []; + const effects = createClientSettingsEffects({ + settingsStore: { get: async () => { throw new Error('unexpected storage read'); } }, + applyWorkHub: async (enabled) => { applied.push(enabled); }, + applyKeepSystemAwake: async () => undefined, + applyBotSettings: async () => undefined, + applyAppIcon: async () => undefined, + systemPrefersDark: () => false, + observeLocale: () => undefined, + emitExternalChanged: () => undefined, + }); + const settings = createDefaultSettings(); + await effects.apply({ ...settings, workHub: { enabled: true } }, true); + await effects.apply({ ...settings, workHub: { enabled: false } }, true); + assert.deepEqual(applied, [true, false]); +}); diff --git a/apps/desktop/src/main/__tests__/workhub-control.test.ts b/apps/desktop/src/main/__tests__/workhub-control.test.ts index 2b720fb6b1..407916ef4a 100644 --- a/apps/desktop/src/main/__tests__/workhub-control.test.ts +++ b/apps/desktop/src/main/__tests__/workhub-control.test.ts @@ -106,18 +106,18 @@ test("control rejects ordinary Sessions, stale turns and switched Host epochs be await assert.rejects( async () => h.tool.impl( - { request: { operation: "observe" } }, + { status: "Checking Maka", request: { operation: "observe" } }, { ...h.ctx(), sessionId: "ordinary" }, ), /Only the active WorkHub/, ); await assert.rejects( - async () => h.tool.impl({ request: { operation: "observe" } }, h.ctx("stale")), + async () => h.tool.impl({ status: "Checking Maka", request: { operation: "observe" } }, h.ctx("stale")), /Inactive turn/, ); h.setCurrent(false); await assert.rejects( - async () => h.tool.impl({ request: { operation: "observe" } }, h.ctx()), + async () => h.tool.impl({ status: "Checking Maka", request: { operation: "observe" } }, h.ctx()), /Host changed/, ); }); @@ -148,7 +148,7 @@ test("partial batches never replay input and the failure budget belongs to the r const act = async (refs = ["current"]) => (await h.tool.impl( { - request: { + status: "Checking Maka", request: { operation: "act", actions: refs.map((ref) => ({ kind: "click", ref })), }, @@ -157,6 +157,7 @@ test("partial batches never replay input and the failure budget belongs to the r )) as { completed: unknown[]; recoverable: boolean; + error: string; inputDispatched: boolean; requiresNewTurn?: boolean; }; @@ -164,11 +165,15 @@ test("partial batches never replay input and the failure budget belongs to the r assert.equal(partial.completed.length, 1); assert.equal(attempts, 2); assert.equal(partial.inputDispatched, false); - assert.equal((await h.command("snapshot")).error, "Control changed"); + assert.equal(partial.error, "Control changed", "the model still receives the recoverable error"); + assert.equal((await h.command("snapshot")).error, undefined, "recoverable tool failures are not conversation errors"); failAfterInput = true; assert.equal((await act()).inputDispatched, true); assert.equal((await act()).recoverable, false); - assert.equal((await act()).requiresNewTurn, true); + const blocked = await act(); + assert.equal(blocked.requiresNewTurn, true); + assert.equal(blocked.error, "Control changed"); + assert.equal((await h.command("snapshot")).phase, "error"); assert.equal(attempts, 4); h.control.complete( desktopSessionResourceKey({ @@ -178,13 +183,14 @@ test("partial batches never replay input and the failure budget belongs to the r ); h.setTurn("new-turn"); assert.equal((await act()).recoverable, true); + assert.equal((await h.command("snapshot")).error, undefined, "a new turn does not inherit the previous terminal error"); }); test("takeover cancels waiting and interrupts the exact owning turn", async (t) => { const h = harness(); t.after(() => h.control.close()); const pending = assert.rejects( - async () => h.tool.impl({ request: { operation: "observe", waitMs: 5000 } }, h.ctx()), + async () => h.tool.impl({ status: "Checking Maka", request: { operation: "observe", waitMs: 5000 } }, h.ctx()), /abort|User took control/i, ); await new Promise((resolve) => setImmediate(resolve)); @@ -192,7 +198,7 @@ test("takeover cancels waiting and interrupts the exact owning turn", async (t) await pending; assert.deepEqual(h.interrupted, ["turn"]); await assert.rejects( - async () => h.tool.impl({ request: { operation: "observe" } }, h.ctx()), + async () => h.tool.impl({ status: "Checking Maka", request: { operation: "observe" } }, h.ctx()), /User took control/, ); }); @@ -408,7 +414,7 @@ test("window preparation cannot admit input after takeover or a Host switch", as async () => h.tool.impl( { - request: { + status: "Checking Maka", request: { operation: "act", actions: [{ kind: "navigate", section: "general" }], }, @@ -456,7 +462,7 @@ test("takeover stops an action without exposing its internal abort reason as a c signal.addEventListener('abort', () => reject(signal.reason), { once: true }); }); }); - const action = h.tool.impl({ request: { operation: "act", actions: [{ kind: "navigate", section: "general" }] } }, h.ctx()); + const action = h.tool.impl({ status: "Checking Maka", request: { operation: "act", actions: [{ kind: "navigate", section: "general" }] } }, h.ctx()); await executing; await h.command('stop'); const result = await action as { interrupted: boolean; error: string }; @@ -484,7 +490,7 @@ test("cancelling undo is a normal completion for the renderer", async (t) => { signal.addEventListener('abort', () => reject(signal.reason), { once: true }); }); }); - await h.tool.impl({ request: { operation: 'act', actions: [{ kind: 'set', target: 'theme', value: createDefaultSettings().appearance.theme }] } }, h.ctx()); + await h.tool.impl({ status: "Checking Maka", request: { operation: 'act', actions: [{ kind: 'set', target: 'theme', value: createDefaultSettings().appearance.theme }] } }, h.ctx()); h.control.complete(desktopSessionResourceKey({ ...scope, sessionId: WORKHUB_COORDINATION_SESSION_ID })); const undoing = h.command('undo'); await executing; @@ -493,3 +499,20 @@ test("cancelling undo is a normal completion for the renderer", async (t) => { assert.equal((await h.command('snapshot')).error, undefined); assert.equal((await h.command('snapshot')).phase, 'paused'); }); + + +test('control requires a short status before preparing the window and publishes the same text', async (t) => { + let prepared = 0; + const h = harness(async () => { prepared++; }); + t.after(() => h.control.close()); + t.mock.method(WorkHubUi.prototype, 'observe', async () => ({ section: null, language: 'en', theme: 'light', accessibility: '', controls: [] })); + for (const status of [undefined, '', ' ', 'a'.repeat(81), 'first\nsecond']) { + await assert.rejects(async () => h.tool.impl({ status, request: { operation: 'observe' } }, h.ctx())); + } + assert.equal(prepared, 0); + await h.tool.impl({ status: ' 正在检查项目设置 ', request: { operation: 'observe' } }, h.ctx()); + assert.equal((await h.command('snapshot')).status, '正在检查项目设置'); + assert.equal(prepared, 1); + h.control.complete(desktopSessionResourceKey({ ...scope, sessionId: WORKHUB_COORDINATION_SESSION_ID })); + assert.equal((await h.command('snapshot')).status, undefined); +}); diff --git a/apps/desktop/src/main/__tests__/workhub-presentation.test.ts b/apps/desktop/src/main/__tests__/workhub-presentation.test.ts index 9ae830ec80..c5e7968e2b 100644 --- a/apps/desktop/src/main/__tests__/workhub-presentation.test.ts +++ b/apps/desktop/src/main/__tests__/workhub-presentation.test.ts @@ -30,9 +30,10 @@ import type { createWorkHubPresentation } from '../workhub-presentation.js'; const source = fileURLToPath(new URL('../../../src/main/workhub-presentation.ts', import.meta.url)); -async function harness(animate = false) { +async function harness(animate = false, displayFrequency = 60) { let enabled = true; let mainRequests = 0; + let mainAvailable = true; let opening: Promise | undefined; const openingStarted = deferred(); let now = 0; @@ -54,6 +55,7 @@ async function harness(animate = false) { const errors: unknown[] = []; let handler: ((event: unknown, command: string, payload?: unknown) => Promise) | undefined; let unregistered = false; + let shortcut: (() => void) | undefined; let registeredViews = 0; let releasedViews = 0; let pointerDisplay = { x: 0, y: 0, width: 1200, height: 900 }; @@ -65,6 +67,8 @@ async function harness(animate = false) { isDestroyed() { return this.destroyed; } send(channel: string, ...args: unknown[]) { this.sent.push([channel, ...args]); } getZoomFactor() { return 1; } + backgroundThrottling = true; + setBackgroundThrottling(allowed: boolean) { this.backgroundThrottling = allowed; } captures = 0; async capturePage() { this.captures++; @@ -97,11 +101,14 @@ async function harness(animate = false) { isMinimized() { return false; } getContentBounds() { return this.bounds; } getBounds() { return this.bounds; } - setBounds(bounds: typeof this.bounds) { this.bounds = bounds; } + setBounds(bounds: typeof this.bounds) { this.bounds = bounds; this.emit('resize'); } setVisibleOnAllWorkspaces() {} setMaximizable() {} - show() { this.visible = true; } + show() { this.visible = true; this.emit('show'); } + showInactive() { this.visible = true; } hide() { this.visible = false; } + resizable = true; + setResizable(value: boolean) { this.resizable = value; } focused = 0; focus() { this.focused++; } restore() {} @@ -114,29 +121,30 @@ async function harness(animate = false) { setVisible(value: boolean) { this.visible = value; } getVisible() { return this.visible; } setBackgroundColor() {} - setBounds() {} + boundsUpdates: Electron.Rectangle[] = []; + setBounds(bounds: Electron.Rectangle) { this.boundsUpdates.push(bounds); } } const output = await build({ entryPoints: [source], bundle: true, write: false, format: 'cjs', platform: 'node', external: ['electron'] }); const module = { exports: {} as { createWorkHubPresentation: typeof createWorkHubPresentation } }; const nodeRequire = createRequire(import.meta.url); runInNewContext(output.outputFiles[0]!.text, { module, exports: module.exports, console, process, URL, Error, - Date: class extends Date { static now() { return now; } }, + performance: { now: () => now }, setTimeout: (callback: () => void, delay: number) => { timers.set(++timerId, { at: now + delay, callback }); return timerId; }, clearTimeout: (id: number) => timers.delete(id), require: (name: string) => name === 'electron' ? { BrowserWindow: FakeWindow, WebContentsView: FakeView, systemPreferences: { getAnimationSettings: () => ({ prefersReducedMotion: !animate }) }, - globalShortcut: { register: () => true, unregister: () => { unregistered = true; } }, + globalShortcut: { register: (_accelerator: string, callback: () => void) => { shortcut = callback; return true; }, unregister: () => { unregistered = true; } }, ipcMain: { handle: (_channel: string, callback: typeof handler) => { handler = callback; }, removeHandler: () => { handler = undefined; } }, - screen: { getCursorScreenPoint: () => ({ x: pointerDisplay.x, y: pointerDisplay.y }), getDisplayNearestPoint: () => ({ workArea: pointerDisplay }), getDisplayMatching: () => ({ workArea: { x: 0, y: 0, width: 1200, height: 900 } }) }, + screen: { getCursorScreenPoint: () => ({ x: pointerDisplay.x, y: pointerDisplay.y }), getDisplayNearestPoint: () => ({ workArea: pointerDisplay }), getDisplayMatching: () => ({ displayFrequency, workArea: { x: 0, y: 0, width: 1200, height: 900 } }) }, } : nodeRequire(name), }); const main = new FakeWindow(); const controller = module.exports.createWorkHubPresentation({ - mainWindow: () => main as unknown as Electron.BrowserWindow, - isEnabled: async () => enabled, - ensureMainWindow: async () => { mainRequests++; openingStarted.resolve(); await opening; return main as unknown as Electron.BrowserWindow; }, + mainWindow: () => mainAvailable ? main as unknown as Electron.BrowserWindow : undefined, + isEnabled: () => enabled, + ensureMainWindow: async () => { mainRequests++; openingStarted.resolve(); await opening; mainAvailable = true; return main as unknown as Electron.BrowserWindow; }, mainModuleDirectory: '/app/dist/main', preloadPath: '/app/dist/preload/preload.cjs', onError: (error) => errors.push(error), onViewCreated: () => { registeredViews++; return () => { releasedViews++; }; }, @@ -144,7 +152,7 @@ async function harness(animate = false) { controller.attachMainWindow(main as unknown as Electron.BrowserWindow); controller.registerIpc(); const command = (sender: Contents, name: string, payload?: unknown) => handler!({ sender, senderFrame: sender.mainFrame }, name, payload); - return { get mainRequests() { return mainRequests; }, controller, main, windows, views, errors, command, advance, setEnabled: (value: boolean) => { enabled = value; }, deferOpening: (value: Promise) => { opening = value; return openingStarted.promise; }, movePointer: (display: typeof pointerDisplay) => { pointerDisplay = display; }, registrations: () => [registeredViews, releasedViews], handler: () => handler, unregistered: () => unregistered }; + return { setMainAvailable: (value: boolean) => { mainAvailable = value; }, shortcut: () => shortcut!(), get mainRequests() { return mainRequests; }, controller, main, windows, views, errors, command, advance, setEnabled: (value: boolean) => { enabled = value; }, deferOpening: (value: Promise) => { opening = value; return openingStarted.promise; }, movePointer: (display: typeof pointerDisplay) => { pointerDisplay = display; }, registrations: () => [registeredViews, releasedViews], handler: () => handler, unregistered: () => unregistered }; } test('yields the docked native view to main-window overlays without replacing the conversation', async () => { @@ -272,7 +280,9 @@ test('animates from the current height, keeps the bottom anchored and survives r h.advance(160); assert.equal(floating.bounds.height, 720); await h.command(view.webContents, 'conversation-layout', { expanded: false, compactHeight: 110 }); - h.advance(80); + h.advance(18); + assert.ok(floating.bounds.height > 700, 'collapse starts gently while the visible conversation fades'); + h.advance(62); const intermediate = floating.bounds.height; assert.ok(intermediate > 110 && intermediate < 720); await h.command(view.webContents, 'conversation-layout', { expanded: true, compactHeight: 110 }); @@ -291,6 +301,7 @@ test('animates from the current height, keeps the bottom anchored and survives r test('reparents one live conversation across docking, floating, hide and main-window close', async () => { const h = await harness(); + h.main.show(); await h.command(h.main.webContents, 'host', { visible: true, rect: { x: 100, y: 40, width: 900, height: 760 } }); const view = h.views[0]!; await h.command(view.webContents, 'conversation-layout', { expanded: true, compactHeight: 96 }); @@ -312,6 +323,8 @@ test('reparents one live conversation across docking, floating, hide and main-wi await assert.rejects(h.command(view.webContents, 'conversation-layout', { expanded: false, compactHeight: Number.NaN }), /Invalid WorkHub conversation layout/); await h.command(view.webContents, 'hide'); assert.equal(floating.visible, false); + assert.equal(h.controller.getSnapshot().placement, 'docked'); + assert.ok(h.main.children.has(view)); assert.equal(view.webContents.destroyed, false); await h.command(view.webContents, 'dock'); assert.ok(h.main.children.has(view) && !floating.children.has(view)); @@ -330,7 +343,8 @@ test('reparents one live conversation across docking, floating, hide and main-wi assert.equal(floating.visible, false); assert.equal(h.main.visible, false, 'hiding the floating window must not show Desktop'); assert.equal(h.main.focused, mainFocusCount, 'the shortcut never focuses Desktop'); - assert.ok(floating.children.has(view)); + assert.equal(h.controller.getSnapshot().placement, 'docked'); + assert.ok(floating.children.has(view), 'a hidden Desktop defers native reparenting'); await h.controller.toggle(); assert.equal(floating.visible, true); h.movePointer({ x: 1600, y: -900, width: 1000, height: 800 }); @@ -404,30 +418,45 @@ test('application broadcasts reach registered auxiliaries once and stop after re assert.deepEqual(messages, ['settings:changed']); }); -test('control preparation floats the live conversation and focuses the main window without resetting an existing float', async () => { +test('control shows a passive card only after it is painted and preserves manual conversation geometry', async () => { const h = await harness(); await h.command(h.main.webContents, 'host', { visible: true, rect: { x: 0, y: 0, width: 1000, height: 800 } }); const view = h.views[0]!; - await h.controller.prepareControl(); + await h.controller.prepareControl('turn-one'); const floating = h.windows[1]!; - assert.equal(h.controller.getSnapshot().placement, 'floating'); - assert.ok(floating.visible && floating.children.has(view)); - assert.equal(h.main.children.has(view), false); - assert.equal(h.main.focused, 1); + const request = h.controller.getSnapshot().progressRequest!; + assert.equal(typeof request, 'number'); + assert.equal(floating.visible, false, 'the old chat cannot flash before the progress card is painted'); + assert.equal(view.webContents.backgroundThrottling, false, 'hidden card preparation must be able to produce animation frames'); + assert.equal(floating.bounds.width, 360); + assert.equal(floating.bounds.height, 112); + assert.equal(floating.resizable, false); + assert.equal(floating.bounds.x + floating.bounds.width / 2, 600); + assert.equal(floating.bounds.y + floating.bounds.height, 804); + await h.command(view.webContents, 'progress-ready', request); + assert.equal(floating.visible, true); + assert.equal(view.webContents.backgroundThrottling, true, 'restore normal throttling after showing the card'); + assert.equal(floating.focused, 0); + assert.equal(h.main.focused, 0, 'control does not activate the main window'); + assert.equal(h.mainRequests, 0, 'the focus-or-create fallback must not run for an existing window'); + assert.equal(h.main.visible, false, 'control does not reveal a hidden main window'); + assert.equal(view.webContents.sent.some(([channel]) => channel.endsWith('focus-composer')), false); + await h.command(view.webContents, 'ready'); + await h.command(view.webContents, 'show-conversation'); + assert.equal(h.controller.getSnapshot().progressRequest, undefined); + assert.equal(floating.bounds.width, 520); + assert.equal(floating.bounds.height, 720); + assert.equal(floating.resizable, true); + assert.ok(view.webContents.sent.some(([channel, expand]) => channel.endsWith('focus-composer') && expand === true)); floating.setBounds({ x: 120, y: 130, width: 520, height: 650 }); - const floatingFocus = floating.focused; - await h.controller.prepareControl(); + const focused = floating.focused; + await h.controller.prepareControl('turn-one'); assert.deepEqual(floating.bounds, { x: 120, y: 130, width: 520, height: 650 }); - assert.equal(floating.focused, floatingFocus, 'a later control call must not refocus the composer'); - assert.equal(h.main.focused, 2); + assert.equal(floating.focused, focused, 'control leaves a manually opened chat alone'); assert.equal(h.views.length, 1); - await h.command(view.webContents, 'hide'); - await h.controller.prepareControl(); - assert.equal(floating.visible, true); h.controller.dispose(); }); - test('control preparation refuses disabled presentation before opening and rechecks a pending open', async () => { const h = await harness(); h.setEnabled(false); @@ -438,6 +467,7 @@ test('control preparation refuses disabled presentation before opening and reche h.setEnabled(true); const opened = deferred(); const opening = h.deferOpening(opened.promise); + h.setMainAvailable(false); const control = h.controller.prepareControl(); await opening; h.setEnabled(false); @@ -504,3 +534,224 @@ test('all WorkHub entries obey the client enable setting and disabling retains t assert.deepEqual(h.registrations(), [1, 0]); h.controller.dispose(); }); + + +test('prewarms once and the shortcut shows and hides synchronously', async () => { + const h = await harness(); + await h.controller.refreshSettings(); + const floating = h.windows[1]!; + const view = h.views[0]!; + assert.equal(floating.visible, false); + assert.equal(view.visible, false); + assert.ok(floating.children.has(view)); + await h.controller.refreshSettings(); + assert.equal(h.windows.length, 2); + assert.equal(h.views.length, 1); + h.shortcut(); + assert.equal(floating.visible, true, 'show happens in the shortcut callback, without an async queue'); + h.shortcut(); + assert.equal(floating.visible, false); + assert.equal(h.mainRequests, 0); + assert.equal(h.main.focused, 0); + h.controller.dispose(); +}); + +test('a pending backdrop capture and older hide cannot delay or undo the shortcut', async () => { + const h = await harness(); + await h.controller.refreshSettings(); + const host = { visible: true, rect: { x: 200, y: 40, width: 800, height: 760 } }; + await h.command(h.main.webContents, 'host', host); + h.main.show(); + const view = h.views[0]!; + await h.command(view.webContents, 'ready'); + const started = deferred(); + const capture = deferred<{ toDataURL(): string }>(); + view.webContents.capturePage = () => { started.resolve(); return capture.promise; }; + const occlude = h.command(h.main.webContents, 'host', { ...host, occluded: true }); + await started.promise; + const olderHide = h.command(view.webContents, 'hide'); + h.shortcut(); + const floating = h.windows[1]!; + assert.equal(floating.visible, true); + assert.ok(floating.children.has(view)); + capture.resolve({ toDataURL: () => 'data:image/png;base64,frame' }); + await Promise.all([occlude, olderHide]); + assert.equal(floating.visible, true, 'an older queued intent cannot hide the newer summon'); + assert.equal(view.visible, true); + h.controller.dispose(); +}); + +test('the shortcut supersedes a pending dock without waiting for the main window', async () => { + const h = await harness(); + await h.controller.refreshSettings(); + h.shortcut(); + const view = h.views[0]!; + const opened = deferred(); + const opening = h.deferOpening(opened.promise); + const docking = h.command(view.webContents, 'dock'); + await opening; + h.shortcut(); + h.shortcut(); + const floating = h.windows[1]!; + assert.equal(floating.visible, true); + opened.resolve(); + await docking; + assert.equal(h.controller.getSnapshot().placement, 'floating'); + assert.ok(floating.children.has(view)); + assert.equal(floating.visible, true); + assert.equal(h.main.focused, 0); + h.controller.dispose(); +}); + + +test('native resize callbacks do not submit duplicate view bounds and follow display cadence', async () => { + const h = await harness(true, 120); + await h.controller.show(); + const view = h.views[0]!; + await h.command(view.webContents, 'conversation-layout', { expanded: true, compactHeight: 96 }); + const before = view.boundsUpdates.length; + h.advance(9); + assert.ok(view.boundsUpdates.length > before, 'a 120Hz display gets its next animation frame before 16ms'); + h.advance(231); + assert.equal(h.windows[1]!.bounds.height, 720); + for (let index = 1; index < view.boundsUpdates.length; index++) { + assert.notDeepEqual(view.boundsUpdates[index], view.boundsUpdates[index - 1]); + } + h.controller.dispose(); +}); + + +test('hiding returns the live view to Desktop and preserves floating geometry for the next summon', async () => { + const h = await harness(); + h.main.show(); + await h.controller.refreshSettings(); + const host = { visible: true, rect: { x: 200, y: 40, width: 800, height: 760 } }; + await h.command(h.main.webContents, 'host', host); + h.shortcut(); + const floating = h.windows[1]!; + const view = h.views[0]!; + await h.command(view.webContents, 'conversation-layout', { expanded: false, compactHeight: 144 }); + h.shortcut(); + assert.equal(floating.visible, false); + assert.equal(h.controller.getSnapshot().placement, 'docked'); + assert.ok(h.main.children.has(view)); + assert.equal(view.visible, true); + await h.command(view.webContents, 'conversation-layout', { expanded: false, compactHeight: 96 }); + h.shortcut(); + assert.equal(floating.visible, true); + assert.equal(floating.bounds.height, 144, 'Desktop geometry does not shrink the floating composer'); + assert.ok(floating.children.has(view)); + assert.equal(h.mainRequests, 0); + assert.equal(h.main.focused, 0); + assert.equal(h.views.length, 1); + assert.equal(h.windows.length, 2); + h.controller.dispose(); +}); + +test('hiding with Desktop closed keeps the conversation alive without reopening Desktop', async () => { + const h = await harness(); + await h.controller.show(); + const view = h.views[0]!; + h.main.destroy(); + await h.controller.toggle(); + assert.equal(h.controller.getSnapshot().placement, 'docked'); + assert.equal(h.windows[1]!.visible, false); + assert.ok(h.windows[1]!.children.has(view)); + assert.equal(view.webContents.destroyed, false); + await h.controller.toggle(); + assert.equal(h.windows[1]!.visible, true); + assert.equal(h.mainRequests, 0); + assert.equal(h.views.length, 1); + h.controller.dispose(); +}); + + +test('a hidden Desktop defers native docking until it shows', async () => { + const h = await harness(); + await h.controller.refreshSettings(); + const host = { visible: true, rect: { x: 200, y: 40, width: 800, height: 760 } }; + await h.command(h.main.webContents, 'host', host); + h.shortcut(); + const view = h.views[0]!; + const floating = h.windows[1]!; + await h.command(view.webContents, 'conversation-layout', { expanded: false, compactHeight: 144 }); + const before = view.boundsUpdates.length; + h.shortcut(); + await h.command(h.main.webContents, 'host', host); + assert.equal(h.controller.getSnapshot().placement, 'docked'); + assert.equal(floating.visible, false); + assert.ok(floating.children.has(view)); + assert.equal(view.boundsUpdates.length, before, 'hiding does not resize an invisible conversation'); + await h.command(view.webContents, 'conversation-layout', { expanded: false, compactHeight: 96 }); + h.shortcut(); + assert.equal(floating.bounds.height, 144); + h.shortcut(); + h.main.show(); + assert.ok(h.main.children.has(view), 'Desktop receives the conversation in its show callback'); + assert.equal(view.visible, true); + assert.equal(h.main.focused, 0); + assert.equal(h.mainRequests, 0); + assert.equal(h.views.length, 1); + h.controller.dispose(); +}); + + +test('control keeps a visible Desktop conversation docked and floats it when the host is hidden or occluded', async () => { + for (const hidden of [{ visible: false }, { occluded: true }]) { + const h = await harness(); + h.main.show(); + const host = { visible: true, rect: { x: 200, y: 40, width: 800, height: 760 } }; + await h.command(h.main.webContents, 'host', host); + const view = h.views[0]!; + await h.controller.prepareControl('turn'); + assert.equal(h.controller.getSnapshot().placement, 'docked'); + assert.equal(h.windows.length, 1, 'control does not create an unnecessary floating window'); + assert.ok(h.main.children.has(view)); + assert.equal(view.visible, true); + await h.command(h.main.webContents, 'host', { ...host, ...hidden }); + await h.controller.prepareControl('turn'); + assert.equal(h.controller.getSnapshot().placement, 'floating'); + assert.equal(typeof h.controller.getSnapshot().progressRequest, 'number'); + await h.command(view.webContents, 'progress-ready', h.controller.getSnapshot().progressRequest); + assert.ok(h.windows[1]!.visible && h.windows[1]!.children.has(view)); + assert.equal(h.views.length, 1); + h.controller.dispose(); + } +}); + + +test('closing progress suppresses the current turn and old paint acknowledgements cannot reopen it', async () => { + const h = await harness(); + await h.controller.prepareControl('turn-one'); + const view = h.views[0]!; + const first = h.controller.getSnapshot().progressRequest!; + assert.equal(view.webContents.backgroundThrottling, false); + await h.command(view.webContents, 'hide'); + assert.equal(view.webContents.backgroundThrottling, true, 'cancelling preparation restores normal background behavior'); + await h.command(view.webContents, 'progress-ready', first); + await h.controller.prepareControl('turn-one'); + assert.equal(h.controller.getSnapshot().progressRequest, undefined); + assert.equal(h.windows[1]!.visible, false); + await h.controller.prepareControl('turn-two'); + assert.notEqual(h.controller.getSnapshot().progressRequest, undefined); + h.controller.finishControl(); + await h.command(view.webContents, 'hide'); + await h.command(h.main.webContents, 'host', { visible: false, rect: { x: 0, y: 0, width: 0, height: 0 } }); + assert.equal(h.windows[1]!.visible, false); + h.controller.dispose(); +}); + +test('the shortcut opens the normal composer from progress without waiting for its paint', async () => { + const h = await harness(); + await h.controller.prepareControl('turn'); + const request = h.controller.getSnapshot().progressRequest!; + await h.controller.toggle(true); + const floating = h.windows[1]!; + assert.equal(h.controller.getSnapshot().progressRequest, undefined); + assert.equal(floating.visible, true); + assert.equal(floating.bounds.width, 520); + assert.equal(h.views[0]!.webContents.backgroundThrottling, true); + await h.command(h.views[0]!.webContents, 'progress-ready', request); + assert.equal(floating.bounds.width, 520); + h.controller.dispose(); +}); diff --git a/apps/desktop/src/main/client-settings-effects.ts b/apps/desktop/src/main/client-settings-effects.ts index 355b8831a3..82a1795f80 100644 --- a/apps/desktop/src/main/client-settings-effects.ts +++ b/apps/desktop/src/main/client-settings-effects.ts @@ -35,7 +35,7 @@ interface ClientSettingsEffectDependencies { readonly applyKeepSystemAwake: (enabled: boolean) => Promise; readonly applyBotSettings: (settings: AppSettings['botChat']) => Promise; readonly applyAppIcon: (icon: AppIconChoice) => Promise; - readonly applyWorkHub: () => Promise; + readonly applyWorkHub: (enabled: boolean) => Promise; /** * What the OS currently reports, read fresh on every pass. Injected * rather than imported so this module stays free of electron and keeps @@ -86,7 +86,7 @@ export function createClientSettingsEffects( ); const appIconChanged = nextAppIcon !== appIcon; dependencies.observeLocale(settings); - await dependencies.applyWorkHub(); + await dependencies.applyWorkHub(settings.workHub.enabled); if (keepAwakeChanged) { await dependencies.applyKeepSystemAwake(settings.system.keepSystemAwake); keepSystemAwake = settings.system.keepSystemAwake; diff --git a/apps/desktop/src/main/runtime-host-boot.ts b/apps/desktop/src/main/runtime-host-boot.ts index 85db56710b..df1792febf 100644 --- a/apps/desktop/src/main/runtime-host-boot.ts +++ b/apps/desktop/src/main/runtime-host-boot.ts @@ -901,7 +901,8 @@ const workHubRuntime = createWorkHubRuntime({ }); const workHubControl = createWorkHubControl({ ipcMain, - prepareWindow: () => workHubPresentation.prepareControl(), + prepareWindow: (turnId) => workHubPresentation.prepareControl(turnId), + finishControl: () => workHubPresentation.finishControl(), window: () => { const window = mainWindowController.browserWindow(); if (!window) throw new Error('Maka window is unavailable'); @@ -914,8 +915,9 @@ const workHubControl = createWorkHubControl({ isCurrent: isCurrentWorkHubTarget, ...workHubRuntime, }); +let workHubEnabled = false; const workHubPresentation = createWorkHubPresentation({ - isEnabled: async () => (await settingsStore.get()).workHub.enabled, + isEnabled: () => workHubEnabled, mainWindow: () => mainWindowController.browserWindow(), ensureMainWindow: async () => { await quitCoordinator.focusOrCreateWindow(); @@ -965,7 +967,10 @@ const botRegistry = new BotRegistry({ }); const clientSettingsEffects = createClientSettingsEffects({ settingsStore, - applyWorkHub: () => workHubPresentation.refreshSettings(), + applyWorkHub: async (enabled) => { + workHubEnabled = enabled; + await workHubPresentation.refreshSettings(); + }, applyKeepSystemAwake: async (enabled) => { keepSystemAwake.apply(enabled); }, diff --git a/apps/desktop/src/main/workhub-control.ts b/apps/desktop/src/main/workhub-control.ts index ac971e7776..37f33c8122 100644 --- a/apps/desktop/src/main/workhub-control.ts +++ b/apps/desktop/src/main/workhub-control.ts @@ -20,6 +20,7 @@ import { setTimeout as wait } from "node:timers/promises"; import { z } from "zod"; import type { IpcMain, WebContents } from "electron"; +import { redactSecrets } from '@maka/core/redaction'; import type { AppSettings } from "@maka/core/settings"; import { WORKHUB_COORDINATION_SESSION_ID } from "@maka/core/session"; import type { MakaTool } from "@maka/runtime/tool-runtime"; @@ -40,13 +41,17 @@ import type { WorkHubControlSnapshot } from '../shared/workhub-control.js'; // Tool protocols require an object root; keep each operation's exact shape // inside it so models cannot combine arguments from incompatible operations. -const controlParameters = z.object({ request: workHubControlSchema }).strict(); +const controlParameters = z.object({ + status: z.string().trim().min(1).max(80).regex(/^[^\r\n]+$/).describe('A short user-facing description of the current action, in the user\'s language. Match the language of the user\'s current request: Chinese for Chinese requests, English for English requests. Do not default to the language of these tool instructions. For example: Opening project settings. Describe the action, not reasoning or a claim of completion.'), + request: workHubControlSchema, +}).strict(); const tasksParameters = z.object({ request: workHubTasksSchema }).strict(); interface WorkHubControlDeps { ipcMain: Pick; window(): WebContents; - prepareWindow(): Promise; + prepareWindow(turnId?: string): Promise; + finishControl?(): void; authorizedRenderer(contents: WebContents): boolean; send(channel: string, payload: unknown): void; readSettings(): Promise; @@ -167,14 +172,15 @@ export function createWorkHubControl(deps: WorkHubControlDeps) { throw new Error("Another WorkHub control call is still running"); busy = true; try { + const { request: args, status } = controlParameters.parse(input); const active = await claim(scope, ctx); const signal = AbortSignal.any([ active.controller.signal, ctx.abortSignal, ]); signal.throwIfAborted(); - const args = controlParameters.parse(input).request; - await deps.prepareWindow(); + update({ status: redactSecrets(status), ...(active.failures < 3 ? { error: undefined, phase: "acting" as const } : {}) }); + await deps.prepareWindow(active.turnId); signal.throwIfAborted(); requireCurrent(scope); await deps.assertTurn(scope, active.turnId); @@ -228,8 +234,8 @@ export function createWorkHubControl(deps: WorkHubControlDeps) { !signal.aborted && deps.isCurrent(scope) && active.failures < 3; const inputDispatched = ui.dispatchedInputs > inputBeforeAction; update({ - error: signal.aborted ? undefined : message, - phase: signal.aborted ? "paused" : "error", + error: signal.aborted || recoverable ? undefined : message, + phase: signal.aborted ? "paused" : recoverable ? "acting" : "error", ...(!recoverable ? { cursor: undefined } : {}), }); return { @@ -306,9 +312,11 @@ export function createWorkHubControl(deps: WorkHubControlDeps) { if (owner?.resourceKey !== resourceKey) return; owner.controller.abort(new Error("WorkHub turn finished")); owner = undefined; + deps.finishControl?.(); update({ cursor: undefined, phase: snapshot.phase === "acting" ? "idle" : snapshot.phase, + status: undefined, }); }; deps.ipcMain.handle( @@ -383,8 +391,9 @@ export function createWorkHubControl(deps: WorkHubControlDeps) { undoController?.abort(new Error("WorkHub control closed")); owner?.controller.abort(new Error("WorkHub control closed")); owner = undefined; + deps.finishControl?.(); undo = undefined; - update({ cursor: undefined, phase: "idle", canUndo: false }); + update({ cursor: undefined, phase: "idle", canUndo: false, status: undefined }); deps.ipcMain.removeHandler("workhub-control:command"); }, }; diff --git a/apps/desktop/src/main/workhub-presentation.ts b/apps/desktop/src/main/workhub-presentation.ts index 22fe93e237..bd70308e98 100644 --- a/apps/desktop/src/main/workhub-presentation.ts +++ b/apps/desktop/src/main/workhub-presentation.ts @@ -29,7 +29,8 @@ const SHORTCUT = 'CommandOrControl+Shift+K'; export interface WorkHubPresentationDeps { mainWindow(): BrowserWindow | undefined; ensureMainWindow(): Promise; - isEnabled(): Promise; + /** Applied client settings; showing the window must not wait for storage. */ + isEnabled(): boolean; mainModuleDirectory: string; viteDevServerUrl?: string; preloadPath: string; @@ -40,9 +41,16 @@ export interface WorkHubPresentationDeps { /** One renderer owns the conversation, draft and model selection for its entire lifetime. */ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { let view: WebContentsView | undefined; + let viewBounds: Electron.Rectangle | undefined; let floating: BrowserWindow | undefined; let parent: BrowserWindow | undefined; let host: WorkHubHost = { visible: false, rect: { x: 0, y: 0, width: 0, height: 0 } }; + let presentationRevision = 0; + let progressRequest: number | undefined; + let conversationBounds: Electron.Rectangle | undefined; + let controlTurnId: string | undefined; + let dismissedTurnId: string | undefined; + let expandOnFocus = false; let placement: 'docked' | 'floating' = 'docked'; let shortcutRegistered = false; let disposed = false; @@ -58,7 +66,7 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { let resizeTarget: Electron.Rectangle | undefined; let queue: Promise = Promise.resolve(); const mainReady = new WeakSet(); - const pendingNavigation = new WeakMap(); + const pendingNavigation = new WeakMap(); const mainListeners = new Map void>(); const entry = resolveMainRendererEntry(deps.mainModuleDirectory, deps.viteDevServerUrl); const reportError = deps.onError ?? ((error: unknown) => console.error('[workhub-presentation]', error)); @@ -73,7 +81,7 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { } function getSnapshot(): WorkHubPresentationSnapshot { - return { placement, floatingVisible: !!floating && !floating.isDestroyed() && floating.isVisible(), shortcutRegistered, rendererCrashed }; + return { placement, floatingVisible: !!floating && !floating.isDestroyed() && floating.isVisible(), shortcutRegistered, rendererCrashed, ...(progressRequest !== undefined ? { progressRequest } : {}) }; } function send(channel: string, ...args: unknown[]): void { @@ -89,7 +97,8 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { if (!view || view.webContents.isDestroyed() || !rendererReady || !parent || parent.isDestroyed() || !parent.isVisible()) return; if (placement === 'docked' && (!host.visible || host.occluded)) return; view.webContents.focus(); - view.webContents.send('workhub-presentation:focus-composer'); + view.webContents.send('workhub-presentation:focus-composer', expandOnFocus); + expandOnFocus = false; focusPending = false; } @@ -146,28 +155,50 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { return; } resizeTarget = bounds; - const started = Date.now(); + const started = performance.now(); + const frequency = screen.getDisplayMatching(bounds).displayFrequency; + const frameDuration = 1000 / (Number.isFinite(frequency) && frequency > 0 ? frequency : 60); + let previous = initial; const tick = () => { if (disposed || window.isDestroyed() || floating !== window || placement !== 'floating') { cancelFloatingAnimation(); return; } - const progress = Math.min(1, (Date.now() - started) / 240); - const eased = 1 - (1 - progress) ** 3; + const progress = Math.min(1, (performance.now() - started) / 240); + // Shrinking a fully visible conversation needs a gentle start as well + // as a gentle landing; expansion reveals its content after growing. + const eased = bounds.height < initial.height ? progress * progress * (3 - 2 * progress) : 1 - (1 - progress) ** 3; const height = Math.round(initial.height + (bounds.height - initial.height) * eased); const bottom = Math.round(initial.y + initial.height + (bounds.y + bounds.height - initial.y - initial.height) * eased); - window.setBounds({ ...bounds, height, y: bottom - height }); - fitFloating(); - if (progress < 1) resizeTimer = setTimeout(tick, 16); + const next = { ...bounds, height, y: bottom - height }; + if (next.x !== previous.x || next.y !== previous.y || next.width !== previous.width || next.height !== previous.height) { + window.setBounds(next); + fitFloating(); + previous = next; + } + if (progress < 1) { + // Keep frame deadlines independent of native resize work; do not add + // another full frame's delay after every setBounds/resize callback. + const elapsed = performance.now() - started; + const nextFrame = Math.min(240, (Math.floor(elapsed / frameDuration) + 1) * frameDuration); + resizeTimer = setTimeout(tick, Math.max(1, nextFrame - elapsed)); + } else cancelFloatingAnimation(); }; tick(); } + function setViewBounds(bounds: Electron.Rectangle): void { + if (!view || (viewBounds && bounds.x === viewBounds.x && bounds.y === viewBounds.y && + bounds.width === viewBounds.width && bounds.height === viewBounds.height)) return; + view.setBounds(bounds); + viewBounds = bounds; + } + function fitFloating(): void { - if (!floating || floating.isDestroyed() || parent !== floating || !view) return; + if (!floating || floating.isDestroyed() || parent !== floating || !view || progressRequest !== undefined) return; const { width, height } = floating.getContentBounds(); - view.setBounds({ x: 0, y: 0, width, height }); + setViewBounds({ x: 0, y: 0, width, height }); if (conversationExpanded && !resizeTarget) expandedHeight = height; } @@ -193,9 +224,8 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { floating.on('close', (event) => { if (disposed) return; event.preventDefault(); - cancelFloatingAnimation(); - floating?.hide(); - changed(); + ++presentationRevision; + hideFloating(); }); return floating; } @@ -203,6 +233,9 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { function updateDockedBounds(): void { const main = deps.mainWindow(); if (!view || placement !== 'docked' || !main || main.isDestroyed()) return; + // A hidden Desktop cannot display the conversation. Keep its native view + // parked for the next shortcut, and attach synchronously when Desktop shows. + if (floating && parent === floating && !main.isVisible()) return; attach(main); const zoom = main.webContents.getZoomFactor(); const size = main.getContentBounds(); @@ -210,72 +243,125 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { const y = Math.max(0, Math.min(size.height, Math.round(host.rect.y * zoom))); const width = Math.max(0, Math.min(size.width - x, Math.round(host.rect.width * zoom))); const height = Math.max(0, Math.min(size.height - y, Math.round(host.rect.height * zoom))); - view.setBounds({ x, y, width, height }); + setViewBounds({ x, y, width, height }); view.setVisible(host.visible && !host.occluded && width > 0 && height > 0); if (host.visible && width > 0 && height > 0 && focusPending) focusComposer(); } - async function detach(positionAtDefault = false): Promise { - if (!await deps.isEnabled() || disposed) return; + function clearProgressRequest(): void { + if (progressRequest !== undefined && view && !view.webContents.isDestroyed()) view.webContents.setBackgroundThrottling(true); + progressRequest = undefined; + } + + function hideFloating(): void { + cancelFloatingAnimation(); + floating?.hide(); + if (controlTurnId) dismissedTurnId = controlTurnId; + clearProgressRequest(); + expandOnFocus = false; + focusPending = false; + placement = 'docked'; + // Reparent the live view to an existing Desktop without opening/focusing it. + // If Desktop is closed, the hidden floating container keeps the view alive. + updateDockedBounds(); + changed(); + } + + function detach(positionAtDefault = false): void { + if (!deps.isEnabled() || disposed) return; cancelFloatingAnimation(); ensureView(); const target = ensureFloating(); + clearProgressRequest(); placement = 'floating'; attach(target); view!.setVisible(true); // Summoning follows the pointer's display, including an existing window // that was last used on another monitor. - const old = target.getBounds(); + const old = conversationBounds ?? target.getBounds(); + if (conversationBounds) target.setResizable(true); + conversationBounds = undefined; const area = screen.getDisplayNearestPoint(screen.getCursorScreenPoint()).workArea; const width = Math.min(old.width, area.width); const height = Math.min(conversationExpanded ? expandedHeight : compactHeight, area.height); - target.setBounds({ + const bounds = { width, height, x: positionAtDefault ? area.x + Math.round((area.width - width) / 2) : Math.max(area.x, Math.min(old.x, area.x + area.width - width)), y: positionAtDefault ? Math.max(area.y, area.y + area.height - height - 96) : Math.max(area.y, Math.min(old.y, area.y + area.height - height)), - }); + }; + const current = target.getBounds(); + if (bounds.x !== current.x || bounds.y !== current.y || bounds.width !== current.width || bounds.height !== current.height) target.setBounds(bounds); fitFloating(); if (target.isMinimized()) target.restore(); target.show(); target.focus(); - target.setMaximizable(false); focusComposer(); changed(); } - async function prepareControl(): Promise { - if (!await deps.isEnabled()) throw new Error('WorkHub is disabled'); + function requestProgress(): void { + const main = deps.mainWindow(); + const dockVisible = placement === 'docked' && parent === main && main?.isVisible() && !main.isMinimized() + && host.visible && !host.occluded && view?.getVisible(); + if (!controlTurnId || dismissedTurnId === controlTurnId || progressRequest !== undefined || dockVisible + || (placement === 'floating' && floating?.isVisible()) || !deps.isEnabled() || disposed) return; + ensureView(); + const target = ensureFloating(); + cancelFloatingAnimation(); + conversationBounds ??= target.getBounds(); + target.setResizable(false); + progressRequest = ++presentationRevision; + // The card must paint while its native window is hidden. Hidden pages + // suspend RAF by default, which would deadlock the renderer-ready handshake. + view!.webContents.setBackgroundThrottling(false); + placement = 'floating'; + attach(target); + view!.setVisible(true); + // Preserve the parked conversation's viewport. The native window clips the + // small card; no transcript layout or composer state needs to be replaced. + setViewBounds({ x: 0, y: 0, width: Math.max(360, viewBounds?.width ?? 520), height: Math.max(112, viewBounds?.height ?? 720) }); + const area = screen.getDisplayNearestPoint(screen.getCursorScreenPoint()).workArea; + const width = Math.min(360, area.width), height = Math.min(112, area.height); + target.setBounds({ width, height, x: area.x + Math.round((area.width - width) / 2), y: Math.max(area.y, area.y + area.height - height - 96) }); + // The renderer acknowledges its painted card before showInactive, avoiding + // one frame of the old full conversation in the compact native window. + changed(); + } + + async function prepareControl(turnId?: string): Promise { + if (!deps.isEnabled()) throw new Error('WorkHub is disabled'); if (disposed) throw new Error('WorkHub presentation is disposed'); - const main = await deps.ensureMainWindow(); - if (!await deps.isEnabled()) throw new Error('WorkHub is disabled'); + controlTurnId = turnId; + // The creation fallback activates Desktop. An existing window must retain + // its visibility, stacking order and focus while WorkHub operates it. + const existing = deps.mainWindow(); + const main = existing && !existing.isDestroyed() ? existing : await deps.ensureMainWindow(); + if (!deps.isEnabled()) throw new Error('WorkHub is disabled'); if (disposed) throw new Error('WorkHub presentation is disposed'); attachMainWindow(main); - if (placement !== 'floating' || !floating?.isVisible()) await detach(); - if (!await deps.isEnabled() || disposed) return; - if (main.isMinimized()) main.restore(); - main.show(); - main.focus(); + requestProgress(); } - async function navigateMain(navigation: WorkHubMainNavigation): Promise { - if (navigation.kind === 'workhub' && !await deps.isEnabled()) return; + async function navigateMain(navigation: WorkHubMainNavigation, revision = presentationRevision): Promise { + if (navigation.kind === 'workhub' && !deps.isEnabled()) return; const main = await deps.ensureMainWindow(); if (disposed) throw new Error('WorkHub presentation is disposed'); - if (navigation.kind === 'workhub' && !await deps.isEnabled()) return; + if (revision !== presentationRevision || (navigation.kind === 'workhub' && !deps.isEnabled())) return; attachMainWindow(main); if (main.isMinimized()) main.restore(); main.show(); main.focus(); if (mainReady.has(main.webContents)) main.webContents.send('workhub-presentation:open-main', navigation); - else pendingNavigation.set(main.webContents, navigation); + else pendingNavigation.set(main.webContents, { navigation, revision }); return main; } - async function dock(): Promise { + async function dock(revision: number): Promise { cancelFloatingAnimation(); - if (!await navigateMain({ kind: 'workhub' }) || !await deps.isEnabled() || disposed) return; + if (!await navigateMain({ kind: 'workhub' }, revision) || revision !== presentationRevision || !deps.isEnabled() || disposed) return; ensureView(); floating?.hide(); + clearProgressRequest(); placement = 'docked'; updateDockedBounds(); focusComposer(); @@ -291,7 +377,7 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { // BrowserWindow disposal must never own the conversation's lifetime. attach(ensureFloating()); floating!.hide(); - placement = 'floating'; + placement = 'docked'; host = { ...host, visible: false }; changed(); }; @@ -299,10 +385,12 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { contents.on('did-start-loading', onLoading); main.on('close', onClose); main.on('resize', updateDockedBounds); + main.on('show', updateDockedBounds); const cleanup = () => { if (!contents.isDestroyed()) contents.removeListener('did-start-loading', onLoading); main.removeListener('close', onClose); main.removeListener('resize', updateDockedBounds); + main.removeListener('show', updateDockedBounds); mainListeners.delete(main); }; main.once('closed', cleanup); @@ -315,22 +403,32 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { function registerIpc(): void { if (ipcRegistered) return; - ipcMain.handle(COMMAND, (event, command: unknown, payload: unknown) => { - return enqueue(async () => { + ipcMain.handle(COMMAND, async (event, command: unknown, payload: unknown) => { + const authorize = () => { const main = deps.mainWindow(); const isMain = !!main && !main.isDestroyed() && main.webContents === event.sender; if ((!isMain && !ownsWebContents(event.sender)) || event.senderFrame !== event.sender.mainFrame) { throw new Error('WorkHub presentation IPC requires an owned main frame'); } + return { main, isMain }; + }; + authorize(); + const changesPresentation = command === 'detach' || command === 'show-conversation' || command === 'dock' || command === 'hide' || command === 'session'; + const revision = changesPresentation ? ++presentationRevision : presentationRevision; + return enqueue(async () => { + const { main, isMain } = authorize(); + // A newer shortcut takes effect immediately, including during a pending dock. + if (changesPresentation && revision !== presentationRevision) return; switch (command) { case 'snapshot': return getSnapshot(); case 'ready': if (!isMain) { rendererReady = true; if (focusPending) focusComposer(); } else { mainReady.add(event.sender); - const navigation = pendingNavigation.get(event.sender); - if (navigation && (navigation.kind !== 'workhub' || await deps.isEnabled())) { - pendingNavigation.delete(event.sender); + const pending = pendingNavigation.get(event.sender); + pendingNavigation.delete(event.sender); + const navigation = pending?.revision === presentationRevision ? pending.navigation : undefined; + if (navigation && (navigation.kind !== 'workhub' || deps.isEnabled())) { event.sender.send('workhub-presentation:open-main', navigation); } } @@ -355,23 +453,41 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { } } if (disposed) return; - // Geometry updates need no settings read until they would reopen a hidden dock. - host = value.visible && !host.visible && !await deps.isEnabled() ? { ...value, visible: false } : value; + // Layout cannot reopen a disabled dock. + host = value.visible && !host.visible && !deps.isEnabled() ? { ...value, visible: false } : value; if (disposed) return; if (host.visible && placement === 'docked') { attachMainWindow(main!); // Layout notifications must not turn a crash into a reload loop. if (!rendererCrashed) ensureView(); } + if (!host.visible) requestProgress(); updateDockedBounds(); return backdrop; } - case 'detach': await detach(); return; + case 'progress-ready': + if (isMain) throw new Error('Only the WorkHub view can present its progress'); + if (typeof payload !== 'number' || !Number.isSafeInteger(payload)) throw new Error('Invalid progress request'); + if (payload === progressRequest && payload === presentationRevision && deps.isEnabled()) { + floating?.showInactive(); + view?.webContents.setBackgroundThrottling(true); + changed(); + } + return; + case 'show-conversation': + conversationExpanded = true; + expandOnFocus = true; + detach(true); + return; + case 'detach': detach(); return; case 'conversation-layout': { if (isMain) throw new Error('Only the WorkHub view can size its conversation'); const value = payload as { expanded?: unknown; compactHeight?: unknown } | null; if (!value || typeof value.expanded !== 'boolean' || typeof value.compactHeight !== 'number' || !Number.isFinite(value.compactHeight) || value.compactHeight <= 0) throw new Error('Invalid WorkHub conversation layout'); - compactHeight = Math.max(80, Math.ceil(value.compactHeight)); + if (progressRequest !== undefined) return; + // Desktop's wider composer must not overwrite the remembered floating + // height and force a second resize on the next shortcut summon. + if (!floating || placement === 'floating') compactHeight = Math.max(80, Math.ceil(value.compactHeight)); if (placement !== 'floating' || !floating || floating.isDestroyed()) { conversationExpanded = value.expanded; return; @@ -386,12 +502,12 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { } return; } - case 'dock': await dock(); return; - case 'hide': cancelFloatingAnimation(); floating?.hide(); changed(); return; + case 'dock': await dock(revision); return; + case 'hide': hideFloating(); return; case 'session': if (typeof payload !== 'string' || payload.length > 4096) throw new Error('Invalid session key'); parseDesktopSessionKey(payload); - await navigateMain({ kind: 'session', sessionKey: payload }); + await navigateMain({ kind: 'session', sessionKey: payload }, revision); return; default: throw new Error('Unknown WorkHub presentation command'); } @@ -400,29 +516,36 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { ipcRegistered = true; } - function toggle(positionAtDefault = false): Promise { - return enqueue(async () => { - if (placement === 'floating' && floating?.isVisible()) { - cancelFloatingAnimation(); - floating.hide(); - changed(); - } else await detach(positionAtDefault); - }); + async function toggle(positionAtDefault = false): Promise { + if (disposed) throw new Error('WorkHub presentation is disposed'); + ++presentationRevision; + if (progressRequest === undefined && placement === 'floating' && floating?.isVisible()) { + hideFloating(); + } else detach(positionAtDefault); } async function refreshSettings(): Promise { - const enabled = await deps.isEnabled(); + const enabled = deps.isEnabled(); if (disposed) return; if (enabled) { + // Prepare the reusable native window and renderer while enabling WorkHub, + // before a shortcut needs them. Never restart a crashed renderer implicitly. + const target = ensureFloating(); + if (!rendererCrashed) { + ensureView(); + if (!parent) { attach(target); fitFloating(); } + } if (!shortcutRegistered) shortcutRegistered = globalShortcut.register(SHORTCUT, () => { void toggle(true).catch(reportError); }); } else { if (shortcutRegistered) globalShortcut.unregister(SHORTCUT); shortcutRegistered = false; + ++presentationRevision; cancelFloatingAnimation(); focusPending = false; host = { ...host, visible: false }; view?.setVisible(false); - floating?.hide(); + hideFloating(); + return; } changed(); } @@ -437,6 +560,7 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { cancelFloatingAnimation(); const previous = view; view = undefined; + viewBounds = undefined; rendererReady = false; // Release this renderer's subscriptions and broadcasts before another view // can register. A delayed destroyed event must not release its replacement. @@ -458,5 +582,5 @@ export function createWorkHubPresentation(deps: WorkHubPresentationDeps) { floating = undefined; } - return { registerIpc, refreshSettings, attachMainWindow, getSnapshot, ownsWebContents, send, prepareControl: () => enqueue(prepareControl), show: () => enqueue(detach), toggle, dispose }; + return { registerIpc, refreshSettings, attachMainWindow, getSnapshot, ownsWebContents, send, prepareControl: (turnId?: string) => enqueue(() => prepareControl(turnId)), finishControl: () => { controlTurnId = undefined; }, show: async () => { if (disposed) throw new Error('WorkHub presentation is disposed'); ++presentationRevision; detach(); }, toggle, dispose }; } diff --git a/apps/desktop/src/main/workhub-ui.ts b/apps/desktop/src/main/workhub-ui.ts index d46f46e7a6..72279eaf62 100644 --- a/apps/desktop/src/main/workhub-ui.ts +++ b/apps/desktop/src/main/workhub-ui.ts @@ -123,7 +123,7 @@ export class WorkHubUi { })()`); if (rect.width < 1 || rect.height < 1 || rect.x < 0 || rect.y < 0) throw new Error("Preference control is not visible"); - return (await wc.capturePage(rect)).toPNG().toString("base64"); + return (await wc.capturePage(rect, { stayHidden: true })).toPNG().toString("base64"); } async execute( diff --git a/apps/desktop/src/preload/workhub-presentation.ts b/apps/desktop/src/preload/workhub-presentation.ts index 7c5e1bc0e6..a0eba54d67 100644 --- a/apps/desktop/src/preload/workhub-presentation.ts +++ b/apps/desktop/src/preload/workhub-presentation.ts @@ -31,6 +31,8 @@ export const workHubPresentationBridge: WorkHubPresentationBridge = { getSnapshot: () => ipcRenderer.invoke('workhub-presentation:command', 'snapshot'), setHost: (host) => ipcRenderer.invoke('workhub-presentation:command', 'host', host), setConversationLayout: (layout) => ipcRenderer.invoke('workhub-presentation:command', 'conversation-layout', layout), + progressReady: (request) => ipcRenderer.invoke('workhub-presentation:command', 'progress-ready', request), + showConversation: () => ipcRenderer.invoke('workhub-presentation:command', 'show-conversation'), detach: () => ipcRenderer.invoke('workhub-presentation:command', 'detach'), dock: () => ipcRenderer.invoke('workhub-presentation:command', 'dock'), hide: () => ipcRenderer.invoke('workhub-presentation:command', 'hide'), diff --git a/apps/desktop/src/renderer/app-shell.tsx b/apps/desktop/src/renderer/app-shell.tsx index 5b791ca802..c0c24ee10c 100644 --- a/apps/desktop/src/renderer/app-shell.tsx +++ b/apps/desktop/src/renderer/app-shell.tsx @@ -66,7 +66,6 @@ import { reconcileInteractions, } from '@maka/ui'; import type { ConnectionEvent } from '@maka/core/connections'; -import { Button } from '@astryxdesign/core/Button'; import { useKeyboardHelp } from './keyboard-help'; import { useCommandPalette } from './command-palette'; import { ChatMessageSurface } from './chat-message-surface'; @@ -448,11 +447,8 @@ function AppShellContent({ const becameEnabled = enabled && !workHubEnabledRef.current; workHubEnabledRef.current = enabled; setWorkHubEnabled(enabled); - if (!enabled) setWorkHubActive(false); - if (becameEnabled) { - setWorkHubActive(true); - setNavSelection({ section: 'sessions' }); - } + if (!enabled || becameEnabled) setWorkHubActive(enabled); + if (becameEnabled) setNavSelection({ section: 'sessions' }); } catch { // Keep the last known client-owned setting. A transient settings read // must not leave the shell half-switched between WorkHub and Session. @@ -2499,7 +2495,7 @@ function AppShellContent({

{ closeSettings(); openSession(sessionId); }} /> - + ) : null} {!sharedSessionActive && navSelection.section === 'sessions' ? : null} - {workHubEnabled && navSelection.section === 'sessions' && activeId ? ( - + ; +} diff --git a/apps/desktop/src/renderer/features/workhub/ui/workhub-root.tsx b/apps/desktop/src/renderer/features/workhub/ui/workhub-root.tsx index 5c763ccd77..2107cd37ab 100644 --- a/apps/desktop/src/renderer/features/workhub/ui/workhub-root.tsx +++ b/apps/desktop/src/renderer/features/workhub/ui/workhub-root.tsx @@ -17,10 +17,11 @@ * under the License. */ -import { useEffect, useMemo, useRef, useState } from 'react'; +import { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; import { ChatSurfaceLayout, MakaWordmark, useUiLocale, type ComposerHandle } from '@maka/ui'; import { Button, IconButton } from '@astryxdesign/core'; import { ChevronDown, PictureInPicture2, Undo2, X } from '@maka/ui/icons'; +import { WorkHubProgressCard } from './workhub-progress-card.js'; import { WorkHubComposer } from './workhub-composer.js'; import { WorkHubConversation } from './workhub-conversation.js'; import { WorkHubNavigationRail } from './workhub-navigation-rail.js'; @@ -32,8 +33,13 @@ import type { WorkHubPresentationSnapshot } from '../../../../shared/workhub-pre import { workHubLiveCopy } from '../locales/workhub-live-copy.js'; import { workHubLinkedWork } from '../model/linked-work.js'; -function revealWordmark(element: HTMLDivElement | null, content: HTMLDivElement | null) { +function cancelReveal(element: HTMLDivElement | null, content: HTMLDivElement | null) { for (const target of [element, content]) for (const animation of target?.getAnimations() ?? []) animation.cancel(); + content?.style.removeProperty('pointer-events'); +} + +function revealWordmark(element: HTMLDivElement | null, content: HTMLDivElement | null) { + cancelReveal(element, content); if (!element || window.matchMedia('(prefers-reduced-motion: reduce)').matches) return; element.animate([ { opacity: 0, transform: 'translateY(6px) scale(0.98)', offset: 0 }, @@ -42,11 +48,20 @@ function revealWordmark(element: HTMLDivElement | null, content: HTMLDivElement { opacity: 0, transform: 'translateY(-3px) scale(1)', offset: 0.85 }, { opacity: 0, transform: 'translateY(-3px) scale(1)', offset: 1 }, ], { duration: 1200, easing: 'ease-out' }); - content?.animate([ - { opacity: 0, pointerEvents: 'none', offset: 0 }, - { opacity: 0, pointerEvents: 'none', offset: 0.65 }, - { opacity: 1, pointerEvents: 'auto', offset: 1 }, - ], { duration: 1200, easing: 'ease-in-out' }); + if (content) { + // Non-compositable properties in the same effect force opacity onto the + // renderer thread. Keep the interaction gate outside the visual keyframes. + content.style.pointerEvents = 'none'; + const reveal = content.animate([ + { opacity: 0, offset: 0 }, + { opacity: 0, offset: 0.65 }, + { opacity: 1, offset: 1 }, + ], { duration: 1200, easing: 'ease-in-out' }); + reveal.id = 'workhub-reveal'; + reveal.onfinish = () => { + if (!content.getAnimations().some((animation) => animation.id === 'workhub-reveal' && animation.playState === 'running')) content.style.removeProperty('pointer-events'); + }; + } } export function WorkHubRoot() { @@ -59,6 +74,8 @@ export function WorkHubRoot() { const composerSurface = useRef(null); const revealMark = useRef(null); const history = useRef(null); + const hasPresented = useRef(false); + const pendingComposerFocus = useRef(false); const surface = useRef(null); const [expandedOverride, setConversationExpanded] = useState(); const hasConversation = transcript.messages.length > 0 || busy || Boolean(controller.liveTurn); @@ -68,11 +85,18 @@ export function WorkHubRoot() { const [expandedLayoutHeight, setExpandedLayoutHeight] = useState(720); const [control, setControl] = useState(); const [presentation, setPresentation] = useState(); - const floating = presentation?.placement === 'floating'; + const progress = presentation?.progressRequest !== undefined; + const floating = !progress && presentation?.placement === 'floating'; const showConversation = !floating || conversationExpanded; + useLayoutEffect(() => { + if (!progress && pendingComposerFocus.current) { + pendingComposerFocus.current = false; + composer.current?.focus(); + } + }, [progress]); const compactHeight = () => Math.ceil(composerSurface.current?.getBoundingClientRect().height ?? 96); useEffect(() => { - if (!composerSurface.current) return; + if (!composerSurface.current || progress) return; const resize = () => { surface.current?.style.setProperty('--workhub-composer-height', `${compactHeight()}px`); void services.presentation.setConversationLayout({ expanded: conversationExpanded, compactHeight: compactHeight() }).catch(controller.report); @@ -81,9 +105,10 @@ export function WorkHubRoot() { observer.observe(composerSurface.current); resize(); return () => observer.disconnect(); - }, [services, floating, conversationExpanded]); + }, [services, floating, conversationExpanded, progress]); const toggleConversation = async () => { if (conversationExpanded) { + cancelReveal(revealMark.current, history.current); setExpandedLayoutHeight(surface.current?.querySelector('.maka-chat-layout')?.getBoundingClientRect().height ?? 0); setConversationExpanded(false); } else { @@ -97,6 +122,10 @@ export function WorkHubRoot() { let active = true; const acceptPresentation = (next: WorkHubPresentationSnapshot) => { if (!active) return; + if (next.progressRequest !== undefined || next.placement !== 'floating' || !next.floatingVisible) { + cancelReveal(revealMark.current, history.current); + for (const animation of composerSurface.current?.getAnimations() ?? []) animation.cancel(); + } if (!hasConversationRef.current && (next.placement === 'docked' || !next.floatingVisible)) setConversationExpanded(undefined); setPresentation(next); }; @@ -113,8 +142,13 @@ export function WorkHubRoot() { }; const unsubscribeControl = services.control.subscribe(acceptControl); void services.control.getSnapshot().then(acceptControl).catch(controller.report); - const focus = services.presentation.onFocusComposer(() => { - composer.current?.focus(); + const focus = services.presentation.onFocusComposer((expand) => { + if (expand) setConversationExpanded(true); + if (surface.current?.inert) pendingComposerFocus.current = true; + else composer.current?.focus(); + // A warm summon must not fade the last painted frame back out. + if (hasPresented.current) return; + hasPresented.current = true; if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return; for (const element of [composerSurface.current]) { for (const animation of element?.getAnimations() ?? []) animation.cancel(); @@ -143,7 +177,9 @@ export function WorkHubRoot() { void task.catch(controller.report); }; return ( -
+ + {progress && } +
{floating && conversationExpanded &&
} label={t.hide} onClick={() => call(services.presentation.hide())} />
@@ -161,7 +197,7 @@ export function WorkHubRoot() {
{(controller.error || control?.error) && (
- {controller.error ?? control?.error} + {controller.error ?? t.controlFailed} {controller.canRetry && (

{spoken?.replace(/\s+/g, ' ').trim() || t.progressHint}

- +