feat(composer): carry reference image names and submit on Enter

Propagate an optional imageName through the agent content pipeline
(frontend types → API → domain → prompt building) so reference images
render with their name instead of a bare "image" label.

Also switch PromptComposer to submit on plain Enter (Shift+Enter for
newline, IME-safe) and add a submitDisabled guard wired from the canvas
and home composers.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-08 08:41:15 +08:00
parent 398dec422d
commit 3c5006e2f3
11 changed files with 34 additions and 7 deletions
@@ -190,6 +190,7 @@ export const CanvasAgentComposer = forwardRef<PromptComposerHandle, CanvasAgentC
onAnnotationPreviewChange={onAnnotationPreviewChange}
onPasteFile={onUploadFile}
onSubmit={onSubmit}
submitDisabled={generating || !canSubmit}
/>
{previewSlot}
<div className="assistant-composer-toolbar">
@@ -632,6 +632,7 @@ export const PromptComposer = forwardRef<
onAnnotationPreviewChange?: (preview: AnnotationPreviewRequest | null) => void;
onPasteFile?: (file: File | null) => void | Promise<void>;
onSubmit?: () => void;
submitDisabled?: boolean;
}
>(function PromptComposer(
{
@@ -648,7 +649,8 @@ export const PromptComposer = forwardRef<
onAnnotationsChange,
onAnnotationPreviewChange,
onPasteFile,
onSubmit
onSubmit,
submitDisabled = false
},
ref
) {
@@ -883,7 +885,8 @@ export const PromptComposer = forwardRef<
}
return {
type: "image",
imageUrl: part.reference.publicUrl
imageUrl: part.reference.publicUrl,
imageName: part.reference.name
};
})
.filter((part): part is AgentContent => Boolean(part));
@@ -1067,9 +1070,10 @@ export const PromptComposer = forwardRef<
}
}
}
if ((event.metaKey || event.ctrlKey) && event.key === "Enter") {
const isComposing = event.nativeEvent.isComposing || event.keyCode === 229;
if (event.key === "Enter" && !event.shiftKey && !isComposing) {
event.preventDefault();
onSubmit?.();
if (!submitDisabled) onSubmit?.();
}
}}
onPaste={handlePaste}