From 498089401708dc08123141891dba9b54e47cefea Mon Sep 17 00:00:00 2001 From: brother7 <7brother7@gmail.com> Date: Thu, 6 Aug 2026 16:46:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(AI=E8=AE=BE=E8=AE=A1):=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E8=BE=93=E5=85=A5=E6=A1=86=E5=9B=9E=E8=BD=A6=E5=8F=91?= =?UTF-8?q?=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 需求:AI 设计输入框监听 Enter 并发送消息。 实现:复用现有发送链路,保留 Shift+Enter 换行并保护输入法组合状态;补充聚焦回归测试。 --- .../tasks/20260806-design-enter-send-b83f.md | 51 +++++++++++++++++++ src/pages/ImageCanvas/index.tsx | 9 ++-- tests/unit/image-canvas-page.test.tsx | 36 +++++++++++++ 3 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 .project-docs/30-worklog/tasks/20260806-design-enter-send-b83f.md diff --git a/.project-docs/30-worklog/tasks/20260806-design-enter-send-b83f.md b/.project-docs/30-worklog/tasks/20260806-design-enter-send-b83f.md new file mode 100644 index 0000000..c9f2435 --- /dev/null +++ b/.project-docs/30-worklog/tasks/20260806-design-enter-send-b83f.md @@ -0,0 +1,51 @@ +# Task: 支持 AI 设计输入框回车发送 + +## Identity + +- Task ID: 20260806-design-enter-send-b83f +- Mode: Feature +- Branch: codex/design-enter-send-b83f +- Worktree: D:\Datas\OthersProjects\makelore-design-enter-send-b83f +- Base commit: 7b23cce67a1b9e61a48d89dedbd088d37b10ecd4 +- Owner: codex +- Status: Completed + +## Scope + +- 让 AI 设计输入框在非输入法组合状态下按 Enter 直接发送。 +- 保留 Shift+Enter 输入换行,并同步更新快捷键提示。 +- 增加回车发送、换行和输入法保护的回归测试。 + +## Intent And Constraints + +- 复用现有 `handleSend`,不改变消息、Quote 确认与任务创建链路。 +- 中文输入法候选确认期间的 Enter 不得误发消息。 +- 改动仅限 AI 设计页及其聚焦测试,不触碰原主工作区中的未归属改动。 + +## Plan + +1. 调整输入框键盘事件判定与可见快捷键提示。 +2. 覆盖 Enter、Shift+Enter 和 IME composition 三种行为。 +3. 执行聚焦测试、类型检查、Lint 与 Vite 构建。 + +## Outcome + +- AI 设计输入框现在按 Enter 即可发送,继续复用既有消息与结构化 Quote 确认逻辑。 +- Shift+Enter 保留多行输入;输入法组合状态下按 Enter 不会误发。 +- 输入框下方提示已更新为 `Enter 发送 · Shift+Enter 换行`。 + +## Verification + +- `vitest run tests/unit/image-canvas-page.test.tsx`:21 passed。 +- `tsc --noEmit`:通过。 +- `eslint src/pages/ImageCanvas/index.tsx tests/unit/image-canvas-page.test.tsx`:通过。 +- `vite build`:通过,仅有既有动态导入与 chunk 体积警告。 +- 全仓 `eslint .`:未通过,命中本任务之外的既有问题:`src/components/layout/MainLayout.tsx` effect 内同步 setState、`tests/unit/chat-command-dialogs.test.tsx` 未使用变量,以及 6 个既有 warning。 + +## Follow-ups + +- 后续可单独清理全仓既有 Lint 基线问题,不阻塞本次交互修复。 + +## Promotion Candidates + +- None recorded. diff --git a/src/pages/ImageCanvas/index.tsx b/src/pages/ImageCanvas/index.tsx index 52c4fd6..272b345 100644 --- a/src/pages/ImageCanvas/index.tsx +++ b/src/pages/ImageCanvas/index.tsx @@ -536,10 +536,9 @@ export function ImageCanvas() { }; const handleComposerKeyDown = (event: KeyboardEvent) => { - if ((event.metaKey || event.ctrlKey) && event.key === 'Enter') { - event.preventDefault(); - void handleSend(); - } + if (event.key !== 'Enter' || event.shiftKey || event.nativeEvent.isComposing) return; + event.preventDefault(); + void handleSend(); }; const handleFirstFrameSelect = async (asset: DesignAsset) => { @@ -819,7 +818,7 @@ export function ImageCanvas() { /> {actionError ?

{actionError}

: null}
- ⌘/Ctrl + Enter 发送 + Enter 发送 · Shift+Enter 换行