Skip to content

feat(web): 支持聊天输入框实时 Markdown 编辑 - #1181

Closed
qqqqqf-q wants to merge 1 commit into
codex/user-prompt-markdownfrom
codex/markdown-composer
Closed

feat(web): 支持聊天输入框实时 Markdown 编辑#1181
qqqqqf-q wants to merge 1 commit into
codex/user-prompt-markdownfrom
codex/markdown-composer

Conversation

@qqqqqf-q

@qqqqqf-q qqqqqf-q commented Sep 8, 2026

Copy link
Copy Markdown
Member

聊天输入框原先只显示 Markdown 源文。现在使用 Milkdown CrepeBuilder,在输入和粘贴时显示可直接编辑的标题、强调、列表、引用和代码,并继续以 Markdown 字符串对接现有草稿与发送流程。

本 PR 叠在 #1178 上,base 为 codex/user-prompt-markdown,只包含输入框编辑功能。#1178 合入后再调整到 main。

行为

  • Enter 发送,Shift+Enter 换行;保留命令候选选择与输入法组合输入保护。
  • 编辑变更同步写回草稿;外部替换草稿时重置编辑历史,避免撤销恢复已发送内容或其他会话的草稿。
  • 复用现有附件及大段粘贴策略、失焦接字和聚焦路径。
  • 输入框与正文共用排版变量及规则,复用中英文分段字重与字号补偿;ProseMirror decorations 只负责样式,不改写 Markdown 内容。
  • 复用 DialogBody 的滚动边缘状态与过渡,将输入框渐隐距离缩为 8px。到达边缘或内容不溢出时,对应渐隐消失。

验证与边界

  • 相关 Vitest:19 项通过。
  • ego lite 实际聊天页:发送后收到 Bot 的 OK;Enter 发送、Shift+Enter 换行、撤销、刷新恢复草稿通过。
  • 浏览器对照:标题、中英文正文、行内代码和引用的计算样式一致;修改一个共享字号变量,两处同步变化;深色代码底色一致,390px 窄屏无横向溢出。
  • 渐隐检查:顶部、中间、底部、清空四种状态通过;右侧留白保持原值。最后将距离从 16px 调整为 8px,静态规范检查通过。
  • 用户已试用并反馈功能可以;完整真人收发 happy path 与跨输入法、浏览器矩阵尚未明确确认。模拟 composition 事件不代表真实输入法全面验证。
  • 完整 web 类型检查仍有 446 项报错,与此前基线数量一致;本次新增组件、输入接口和 composable 未报告类型错误,未将此检查标记为通过。
  • 完整前端 ESLint、提交钩子的 staged ESLint、UI contract 和 Go 测试通过。mise run lint 与提交钩子的 Go lint 均被本机其他 golangci-lint 进程锁阻塞;此次无 Go 改动,在已完成上述检查后仅本次提交使用临时 hooksPath 跳过重复钩子,未修改仓库规则。Go lint 未完成,交由 CI 验证。

代码量与自审

按本 PR base/head 的 Git diff 统计,10 个文件:新增 1,919 行、删除 47 行、净增 1,872 行。

类别 新增 删除 净增
生产代码及配置 230 35 195
测试(含测试注释) 44 0 44
自动生成锁文件 1,645 12 1,633

生产代码及配置排除纯注释、空行后:新增 209 行、删除 35 行、净增 174 行。统计保留含代码的行,不把锁文件计入生产代码;没有单独的纯机械性文件。

新增代码主要用于编辑器生命周期、现有输入框接口适配、中英文样式 decorations 和共享排版。锁文件增量主要是 Milkdown 的传递依赖,不代表全部都会进入浏览器 bundle。

自审已修正快捷键改变、空输入框撑高、正文与输入框参数重复、附件粘贴处理顺序和渐隐留白问题。请重点 review 草稿切换时重置 undo、Markdown 序列化对源文格式的规范化,以及 DialogBody 在聊天输入框中的复用。未修改后端、数据模型或上下文压力圈。

⚠️ No human QA — this PR has not been verified by a human yet. Remove this line once a human confirms the happy path.

@qqqqqf-q qqqqqf-q closed this Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant