QAyong
a07539d458
feat(canvas): Agent 面板 - 支持回车发送并让技能菜单接受中文顿号
画布 Agent 面板的输入框此前有两个中文用户的体验问题:Enter 不发送(只换行),
且技能候选菜单只认 "/" 触发,中文标点状态下按 "/" 打出的是 "、",必须先切回英文。
回车发送:
- canvas-resource-mention-textarea.tsx:sendOnEnter 由 boolean 扩展为 boolean | "both",
新增 shouldSubmitOnEnter() 统一判定;原来 contentEditable 与 textarea 两处各写一份表达式。
false 仅 ⌘/Ctrl+Enter 提交(原行为),"both" 两者都提交,Shift+Enter 始终换行。默认仍为 true,
首页智能创作、批量创作表、短剧工作台三个调用方键位不变。
- canvas-cloud-agent-chat-ui.tsx:改传 sendOnEnter={canSubmit ? "both" : false},
运行中 Enter 保持换行、不误发;提示文案改为「Enter 发送 · Shift+Enter 换行」,发送按钮 tooltip 同步。
- canvas-cloud-agent.css:快捷键提示原本在 @container (max-width: 520px) 下整条 display: none,
而默认面板宽度 448px 正落在该区间,等于开箱即用时看不到任何发送键说明;
改为 .agent-composer-send-hint-full / -compact 两段,窄态降级为短文案「Enter 发送」。
中文顿号触发技能菜单:
- canvas-cloud-agent-chat-ui.tsx:handlePromptChange 的检测正则由 /(^|\s)\/([^\s/]*)$/
改为 /(^|\s)[/、]([^\s/、]*)$/。保留「行首或紧跟空白」前置条件,
中文正文里的顿号(如「苹果、香蕉」)不会误触发;applySlashSkill 的替换长度仍为 1,两个触发符都是单字符。
- canvas-cloud-agent-panel.tsx:placeholder 改为「用 / 或 、 引用 Skills」,让两种触发方式可发现。
- canvas-resource-mention-editor.test.ts:同步源码断言(键位、两段提示类名、触发正则、placeholder)。
验证:
- cd web && bun run typecheck 通过。
- bun run lint(改动文件)通过;改动文件按 prettier 校验通过(其余四个文件基线即未格式化,CI 会跳过)。
- bun test test/canvas-resource-mention-editor.test.ts:10 通过 / 1 失败。失败项是同文件既有断言
expect(css).not.toContain(".agent-tool-row:hover"),而 main 上 canvas-cloud-agent.css 本就含该选择器,
属于基线既有失败,与本次改动无关(未在本 PR 内顺手修改,避免扩大范围)。
- 触发正则边界用独立脚本实测:、夜景 / 、夜景(前置空白)/ abc /夜 / a\n、x / " @节点 /夜景" 均正确给出
start 与 query;苹果、香蕉 / abc、夜景 / 、a、 不触发。
- 未启动开发服务,浏览器键位与实际菜单行为待人工验收。
2026-09-19 03:31:41 +08:00
..
2026-09-14 01:11:56 +08:00
2026-08-15 12:45:29 +08:00
2026-08-22 17:42:04 +08:00
2026-09-17 23:25:50 +08:00
2026-09-16 22:59:38 +08:00
2026-09-14 17:58:21 +08:00
2026-09-14 17:58:21 +08:00
2026-09-17 18:40:42 +08:00
2026-09-18 15:26:26 +08:00
2026-09-17 18:40:42 +08:00
2026-09-15 13:38:31 +08:00
2026-09-14 01:11:56 +08:00
2026-09-17 20:21:25 +08:00
2026-09-16 22:59:38 +08:00
2026-09-16 23:45:53 +08:00
2026-09-14 17:58:21 +08:00
2026-09-14 01:11:56 +08:00
2026-09-15 13:38:31 +08:00
2026-09-09 22:02:10 +08:00
2026-09-02 20:32:58 +08:00
2026-09-04 14:03:33 +08:00
2026-09-05 16:39:45 +08:00
2026-09-14 01:11:56 +08:00
2026-09-18 23:28:57 +08:00
2026-09-09 22:02:10 +08:00
2026-09-09 13:01:47 +08:00
2026-09-09 13:01:47 +08:00
2026-08-31 13:16:10 +08:00
2026-09-16 22:59:45 +08:00
2026-09-04 14:03:33 +08:00
2026-09-17 20:21:25 +08:00
2026-09-01 14:57:05 +08:00
2026-09-09 22:02:10 +08:00
2026-09-16 22:59:45 +08:00
2026-09-07 23:02:34 +08:00
2026-09-17 23:17:09 +08:00
2026-09-17 23:17:09 +08:00
2026-09-17 23:17:09 +08:00
2026-09-09 22:55:19 +08:00
2026-09-14 01:11:56 +08:00
2026-09-14 17:19:56 +08:00
2026-09-01 23:54:41 +08:00
2026-09-09 10:34:10 +08:00
2026-09-16 18:29:48 +08:00
2026-08-31 09:00:37 +08:00
2026-09-15 20:56:19 +08:00
2026-09-07 14:03:50 +08:00
2026-09-18 13:03:35 +08:00
2026-09-01 17:32:38 +08:00
2026-08-31 06:49:43 +08:00
2026-09-15 20:56:19 +08:00
2026-09-08 17:26:34 +08:00
2026-09-14 01:11:56 +08:00
2026-08-31 09:00:37 +08:00
2026-07-23 10:34:59 +08:00
2026-08-06 16:36:51 +08:00
2026-08-15 15:48:16 +08:00
2026-08-22 12:29:24 +08:00
2026-09-01 14:57:05 +08:00
2026-09-01 14:57:05 +08:00
2026-09-01 16:47:03 +08:00
2026-09-17 00:08:35 +08:00
2026-09-15 09:19:54 +08:00
2026-09-06 07:42:02 +08:00
2026-09-18 23:27:34 +08:00
2026-09-14 00:11:26 +08:00
2026-09-16 20:54:14 +08:00
2026-09-08 17:26:34 +08:00
2026-08-28 16:24:58 +08:00
2026-09-08 23:53:22 +08:00
2026-07-31 13:12:06 +08:00
2026-08-29 10:28:23 +08:00
2026-09-05 13:24:10 +08:00
2026-09-02 00:47:57 +08:00
2026-08-19 20:52:11 +08:00
2026-09-01 14:57:05 +08:00
2026-09-16 20:54:14 +08:00
2026-09-11 21:42:54 +08:00
2026-08-31 12:28:12 +08:00
2026-09-01 14:57:05 +08:00
2026-08-31 09:00:37 +08:00
2026-09-14 01:11:56 +08:00
2026-09-05 13:24:10 +08:00
2026-09-18 13:19:57 +08:00
2026-09-18 15:26:26 +08:00
2026-09-19 03:31:41 +08:00
2026-09-11 21:43:28 +08:00
2026-09-14 17:19:56 +08:00
2026-09-05 13:24:10 +08:00
2026-09-14 01:11:56 +08:00
2026-09-01 14:57:05 +08:00
2026-08-31 06:49:43 +08:00
2026-08-27 22:12:04 +08:00
2026-08-26 22:38:07 +08:00
2026-09-14 01:11:56 +08:00
2026-08-15 15:48:16 +08:00
2026-09-15 17:28:28 +08:00
2026-09-14 01:11:56 +08:00
2026-09-07 22:39:07 +08:00
2026-09-16 22:59:34 +08:00
2026-09-08 23:53:22 +08:00
2026-08-29 08:48:38 +08:00
2026-09-08 17:26:34 +08:00
2026-08-10 00:13:02 +08:00
2026-08-14 20:45:26 +08:00
2026-08-10 00:13:02 +08:00
2026-09-01 23:54:41 +08:00
2026-09-14 01:11:56 +08:00
2026-09-09 22:02:10 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-08 20:56:42 +08:00
2026-09-08 17:26:34 +08:00
2026-08-03 15:06:09 +08:00
2026-09-14 01:11:56 +08:00
2026-09-17 20:21:25 +08:00
2026-09-14 01:11:56 +08:00
2026-09-01 17:52:21 +08:00
2026-09-17 23:32:38 +08:00
2026-08-27 22:12:04 +08:00
2026-09-16 22:59:50 +08:00
2026-08-27 22:12:04 +08:00
2026-09-18 23:13:32 +08:00
2026-09-09 13:00:42 +08:00
2026-09-15 13:38:31 +08:00
2026-09-14 01:11:56 +08:00
2026-09-14 01:11:56 +08:00
2026-08-27 10:32:45 +08:00
2026-09-08 16:58:41 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 10:32:45 +08:00
2026-08-27 20:47:10 +08:00
2026-08-27 20:47:10 +08:00
2026-09-04 14:03:33 +08:00
2026-09-04 14:03:33 +08:00
2026-09-16 20:54:14 +08:00
2026-09-04 14:03:33 +08:00
2026-08-18 21:42:22 +08:00
2026-08-15 12:45:29 +08:00
2026-08-15 12:45:29 +08:00
2026-09-17 17:44:44 +08:00
2026-09-14 01:11:56 +08:00
2026-08-15 15:48:16 +08:00
2026-09-09 22:02:10 +08:00
2026-08-22 09:52:09 +08:00
2026-09-16 20:22:54 +08:00
2026-09-11 14:02:49 +08:00
2026-08-31 09:00:37 +08:00
2026-09-11 14:02:49 +08:00
2026-09-15 20:56:19 +08:00
2026-09-15 21:47:04 +08:00
2026-08-28 09:07:33 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-18 23:26:54 +08:00
2026-09-14 19:47:03 +08:00
2026-08-31 15:06:34 +08:00
2026-09-14 01:11:56 +08:00
2026-09-09 22:02:10 +08:00
2026-09-18 09:31:40 +08:00
2026-09-07 22:39:07 +08:00
2026-09-04 14:03:33 +08:00
2026-09-09 22:02:10 +08:00
2026-08-29 23:34:55 +08:00
2026-08-31 12:28:12 +08:00
2026-08-31 15:59:34 +08:00
2026-08-29 23:34:55 +08:00
2026-08-29 23:34:55 +08:00
2026-08-25 14:33:34 +08:00
2026-09-09 22:02:10 +08:00
2026-09-08 17:26:34 +08:00
2026-09-16 22:59:45 +08:00
2026-08-31 13:16:10 +08:00
2026-09-18 23:28:57 +08:00
2026-09-14 01:11:56 +08:00
2026-09-14 01:11:56 +08:00
2026-09-18 23:28:57 +08:00
2026-09-14 01:11:56 +08:00
2026-08-19 11:58:06 +08:00
2026-08-22 09:52:09 +08:00
2026-08-27 22:39:30 +08:00
2026-09-09 22:02:10 +08:00
2026-09-04 14:03:33 +08:00
2026-08-14 20:44:50 +08:00
2026-09-04 14:03:33 +08:00
2026-09-09 22:02:10 +08:00
2026-09-09 22:02:10 +08:00
2026-09-09 22:02:10 +08:00
2026-08-30 16:52:09 +08:00
2026-08-29 11:05:59 +08:00
2026-09-17 20:21:25 +08:00
2026-09-10 09:11:16 +08:00
2026-08-30 19:03:10 +08:00
2026-09-09 22:02:10 +08:00
2026-09-09 22:02:10 +08:00
2026-08-30 19:03:10 +08:00
2026-09-18 10:30:08 +08:00
2026-09-17 23:32:19 +08:00
2026-09-17 23:32:34 +08:00
2026-08-29 13:19:01 +08:00
2026-09-18 10:30:08 +08:00