fix: restore composer overlay integration
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
This commit is contained in:
@@ -9168,8 +9168,11 @@ export class AssistantDatabase {
|
||||
}
|
||||
|
||||
listSupervisionResults(limit = 20, target?: SupervisionTarget, resultId?: string) {
|
||||
const owner = target?.type === 'conversation' ? this.getConversation(target.conversationId)
|
||||
: target?.type === 'task' ? this.getTask(target.taskId) : undefined
|
||||
const owner = target?.type === 'conversation'
|
||||
? this.requireDatabase().prepare('SELECT project_id AS projectId FROM conversations WHERE id = ?').get(target.conversationId) as { projectId: string | null } | undefined
|
||||
: target?.type === 'task'
|
||||
? this.requireDatabase().prepare('SELECT project_id AS projectId FROM tasks WHERE id = ?').get(target.taskId) as { projectId: string | null } | undefined
|
||||
: undefined
|
||||
const sourceType = target?.type ?? null
|
||||
const sourceId = target?.type === 'conversation' ? target.conversationId : target?.taskId ?? null
|
||||
return this.requireDatabase().prepare(`SELECT id, run_id AS runId, summary,
|
||||
|
||||
@@ -7090,6 +7090,7 @@ export function registerIpcHandlers(
|
||||
assertTrustedSender(event, window)
|
||||
const request = supervisionSuggestionListRequestSchema.parse(input ?? {})
|
||||
if ((await applicationSettingsStore?.get())?.heartbeatEnabled !== true) return []
|
||||
if (!supervisionPorts) return []
|
||||
return await (await supervisionDatabase.supervisionSuggestions()).list(request.status, request.limit, request.offset)
|
||||
})
|
||||
registerHandler(ipcChannels.supervisionSuggestionAction, async (event, input: unknown) => {
|
||||
|
||||
@@ -327,6 +327,15 @@ export const Composer = memo(function Composer({
|
||||
composerOptionsTriggerRef,
|
||||
closeComposerOptions,
|
||||
);
|
||||
useEffect(() => {
|
||||
if (!composerOptionsOpen) return;
|
||||
const frame = requestAnimationFrame(() => {
|
||||
composerOptionsRef.current
|
||||
?.querySelector<HTMLElement>("button:not(:disabled), input:not(:disabled)")
|
||||
?.focus();
|
||||
});
|
||||
return () => cancelAnimationFrame(frame);
|
||||
}, [composerOptionsOpen, knowledgeLibraries.length]);
|
||||
useDismissibleComposerDialog(
|
||||
runtimeOptionsOpen,
|
||||
runtimeOptionsRef,
|
||||
@@ -405,8 +414,6 @@ export const Composer = memo(function Composer({
|
||||
runtime: runtimeControlsProvider,
|
||||
})
|
||||
: "";
|
||||
const composerContextAvailable =
|
||||
supervisorEnabled === true || knowledgeLibraries.length > 0;
|
||||
const composerOptionSummary = [
|
||||
enabledKnowledgeLibraryIds.length > 0
|
||||
? t("composer.knowledge.select", { count: enabledKnowledgeLibraryIds.length })
|
||||
@@ -808,8 +815,7 @@ export const Composer = memo(function Composer({
|
||||
</button>
|
||||
</div>
|
||||
<div className="composer__configuration" role="group" aria-label={t("composer.settings")}>
|
||||
{composerContextAvailable && (
|
||||
<>
|
||||
<>
|
||||
<button
|
||||
aria-controls="composer-options"
|
||||
aria-expanded={composerOptionsOpen}
|
||||
@@ -872,8 +878,7 @@ export const Composer = memo(function Composer({
|
||||
/>
|
||||
</label>
|
||||
)}
|
||||
{knowledgeLibraries.length > 0 && (
|
||||
<div
|
||||
<div
|
||||
className="knowledge-scope"
|
||||
onBlurCapture={(event) => {
|
||||
if (
|
||||
@@ -1010,11 +1015,9 @@ export const Composer = memo(function Composer({
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</>
|
||||
<ComposerMenuSelect
|
||||
ariaLabel={t("composer.expertLabel")}
|
||||
className="composer-picker--expert"
|
||||
|
||||
@@ -66,8 +66,9 @@ app.whenReady().then(async () => {
|
||||
const point = await js<{ x: number; y: number }>(`(() => { const r = document.querySelector('.composer__options-trigger').getBoundingClientRect(); return { x: Math.round(r.x+r.width/2), y: Math.round(r.y+r.height/2) }; })()`)
|
||||
win.webContents.sendInputEvent({ type: 'mouseDown', ...point, button: 'left', clickCount: 1 })
|
||||
win.webContents.sendInputEvent({ type: 'mouseUp', ...point, button: 'left', clickCount: 1 })
|
||||
// First focus stays on the first menu button, matching the model picker.
|
||||
await wait('document.activeElement === document.querySelector(".composer__options button:not(:disabled)")')
|
||||
// Focus the first enabled context control, which is the story-graph
|
||||
// switch when no knowledge libraries are available.
|
||||
await wait('document.activeElement === document.querySelector(".composer__options button:not(:disabled), .composer__options input:not(:disabled)")')
|
||||
}
|
||||
const scenarios: object[] = []
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user