Skip to content

fix(desktop): 优化推荐提示词发送与 Tab 交互 - #3310

Merged
MagicLizi merged 4 commits into
mainfrom
dash/send-suggested-prompt
Aug 25, 2026
Merged

fix(desktop): 优化推荐提示词发送与 Tab 交互#3310
MagicLizi merged 4 commits into
mainfrom
dash/send-suggested-prompt

Conversation

@dashhuang

@dashhuang dashhuang commented Aug 23, 2026

Copy link
Copy Markdown
Member

这次改了什么

摘要

优化 Desktop 输入框里的推荐提示词交互:推荐词可见时发送按钮保持可用,点击发送会直接消费并发送该推荐词;当前配置判定为发送的 Enter 快捷键也复用发送按钮的完整路径。选择 modifier-enter 时,裸 Enter 仍保持原生换行。

Tab 提示改为紧跟推荐文字的可点击键帽,点击或按物理 Tab 都只填入完整推荐词而不发送;键帽进一步缩小为更轻量的键盘按键造型,颜色继续与提示文字一致;圆角使用已登记的 8px inner-control 层级,键盘焦点使用主题无关的 Focus Blue。

同时将 3 条读取 ChatInput.tsx 源码的测试断言改为忽略 Prettier 造成的空白与换行差异,不放宽原有语义检查。

变更类型

  • feat 新功能
  • fix 缺陷修复
  • refactor / perf 重构或性能优化
  • docs / test / chore 文档、测试或工程维护
  • 其他:

范围

  • 关联 Issue / 需求:用户反馈,无关联 Issue
  • 本 PR 包含:Desktop Renderer 推荐提示词的按钮/Enter 发送、Tab 接受、Tab 按钮布局与样式,以及相关单测
  • 明确不包含:Mobile、服务端、推荐提示词生成策略
  • 用户可见变化:推荐词可通过发送按钮或当前发送快捷键直接发送;Tab 键帽紧跟推荐文字并可点击填入,尺寸更小
  • 是否存在 breaking change:无

UI 变化

  • macOS Global 隔离开发版已完成前两轮交互的手工确认;最新 Tab 尺寸、Enter 收口与规范化焦点态未重新手工目检。
  • 引用的设计规范:
    • docs/design-rules/DESIGN.md §2 Color System:键帽聚焦时使用 --focus-ring 的主题无关 Focus Blue。
    • docs/design-rules/DESIGN.md §3 Typography:沿用 text-11 字号 token,不新增任意字号。
    • docs/design-rules/DESIGN.md §4 Inputs:推荐文字继续使用输入框的弱提示层级,避免误读为已输入正文。
    • docs/design-rules/DESIGN.md §5 Border Radius:键帽使用已登记的 rounded-lg(8px inner-control)层级,不使用任意圆角。
    • docs/design-rules/DESIGN.md §10 Theme System & Token Reference:颜色使用现有语义 token,并通过 text-inherit / border-current 与推荐文字保持一致,自动适配 Light / Dark 主题。

怎么验证的

自动验证

pnpm --dir apps/desktop exec vitest run --pool=threads --maxWorkers=1 \
  src/renderer/__tests__/promptRecommendationBadge.test.ts \
  src/renderer/components/new-chat/__tests__/composerPromptRecommendation.test.ts \
  src/renderer/__tests__/deviceLinkInteractionScenarios.test.ts \
  src/renderer/__tests__/sessionAgentSwitchRemoteRouting.test.ts \
  src/renderer/lib/__tests__/providerModelEfforts.test.ts
结果:5 个文件、155 项测试通过

pnpm --dir apps/desktop exec vitest run --pool=threads --maxWorkers=1 \
  src/renderer/components/new-chat/__tests__/composerPromptRecommendation.test.ts \
  src/renderer/__tests__/promptRecommendationBadge.test.ts \
  src/renderer/__tests__/chatInputSteerShortcut.test.ts \
  src/renderer/__tests__/voiceInputEnterToSend.test.ts \
  src/renderer/__tests__/chatInputListContinuation.test.ts
结果:5 个文件、38 项测试通过;覆盖发送快捷键、modifier-enter 裸 Enter 换行、IME、长按重复、palette 与列表换行边界

pnpm --dir apps/desktop exec vitest run --pool=threads --maxWorkers=1 \
  src/renderer/__tests__/promptRecommendationBadge.test.ts \
  src/renderer/components/new-chat/__tests__/composerPromptRecommendation.test.ts
结果:2 个文件、17 项测试通过;覆盖键帽圆角、Focus Blue 焦点环与推荐词显示/接受路径

pnpm --filter desktop run --if-present typecheck
结果:通过

pnpm test:unit:related
结果:通过,apps/desktop unit 通过

pnpm exec prettier --check <本 PR 修改的 7 个文件>
结果:通过

pnpm check:dco
结果:通过,4 个提交均已签名

bash /Users/dash/Code/XD/dash/Skills/git/scripts/run-unit-gate.sh \
  /Users/dash/Code/Cindy/cindy-send-suggested-prompt
结果:此前完整门禁 2124/2125 个测试文件通过、28481 项测试通过;仅
src/main/cindy-brain/__tests__/ghostInstallReceipt.test.ts 的 2 项既有失败。
同样的 2 项失败已在干净 origin/main(67afe491)上定向复现,与本 PR 无关。

手工验证

  • 环境:macOS、Global、隔离开发版 send-suggested-prompt-e1ac09,启动结果 DESKTOP_DEV_VERDICT=ready
  • 已验证推荐词可见时发送按钮可点击,点击后直接发送推荐词
  • 已验证上一版 Tab 键帽位置、方形键盘造型与文字同色
  • 已验证点击 Tab 只填入完整推荐词、不发送,并保持输入框焦点
  • 用户已确认此前发送按钮与 Tab 的视觉、点击效果

未执行的验证

  • 未单独切换到另一套 Light / Dark 模式做实机目检;实现仅使用现有语义 token 与继承色,未新增硬编码颜色。
  • 最新缩小并对齐设计规范后的 Tab 键帽,以及 Enter 快捷键复用发送路径与 modifier-enter 裸 Enter 换行,已完成自动验证,尚未在开发版中重新手工操作确认。
  • 最新提交未重新跑完整单测门禁;相关单测门禁已通过。此前完整门禁仅剩上文已在干净 origin/main 复现的 2 项基线失败,等待 CI 在当前环境复核。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:

影响与回滚

  • 影响范围:仅 Desktop Renderer 的输入框推荐提示词交互与对应测试
  • 回滚 / 降级方式:revert 本 PR 的 4 个提交即可恢复原行为

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
@dashhuang
dashhuang requested a review from a team as a code owner August 23, 2026 22:57

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2bf28cd88a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/desktop/src/renderer/components/new-chat/ChatInput.tsx
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f17ee0a61f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/desktop/src/renderer/components/new-chat/ChatInput.tsx Outdated
Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 20cff1da82

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/desktop/src/renderer/components/new-chat/ChatInput.tsx Outdated
Comment thread apps/desktop/src/renderer/components/new-chat/ChatInput.tsx Outdated
@greptile-apps

greptile-apps Bot commented Aug 23, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 优化 Desktop 输入框的推荐提示词交互,使发送按钮和已配置的 Enter 快捷键能够消费并发送推荐词,同时让物理 Tab 与可点击键帽共用仅填入、不发送的接受动作。

  • 将推荐词接受逻辑集中到 acceptPromptRecommendation
  • 统一按钮与发送型 Enter 快捷键的发送路径
  • 调整 Tab 键帽的布局、样式和可点击行为
  • 更新相关源码契约测试,使部分断言不受 Prettier 空白变化影响

Confidence Score: 5/5

当前没有已确认的阻塞性失败,PR 看起来可以安全合并。

未发现仍然存在且满足本次 follow-up review 发布范围的阻塞性故障。

Important Files Changed

Filename Overview
apps/desktop/src/renderer/components/new-chat/ChatInput.tsx 集中推荐词接受逻辑,统一按钮与 Enter 的发送路径,并将 Tab 提示改为可点击键帽。
apps/desktop/src/renderer/components/new-chat/tests/composerPromptRecommendation.test.ts 增加推荐词发送、Tab 接受和 Enter 路由的源码契约断言。
apps/desktop/src/renderer/tests/promptRecommendationBadge.test.ts 更新 Tab 键帽布局、样式、焦点轮廓和点击处理的源码断言。
apps/desktop/src/renderer/tests/chatInputSteerShortcut.test.ts 将发送快捷键的预期调用路径更新为完整的语音停止与发送入口。

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    R[推荐词可见] --> A{用户操作}
    A -->|点击发送或发送型 Enter| I[填入推荐词]
    I --> S[执行既有发送链]
    A -->|物理 Tab 或点击键帽| F[仅填入推荐词]
    F --> E[保持编辑器焦点]
Loading

Reviews (2): Last reviewed commit: "fix(desktop): 对齐推荐词键帽设计规范" | Re-trigger Greptile

Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

按维护者指示批准;合并仍需通过 review-pr 的代码审查与其余安全门。

@MagicLizi MagicLizi added the touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) label Aug 24, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

命中 UI 路径(ChatInput.tsx)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面,便于确认界面符合 DESIGN.md 设计规范。本条不阻断合并。

@MagicLizi
MagicLizi merged commit b62bdaf into main Aug 25, 2026
21 checks passed
@MagicLizi
MagicLizi deleted the dash/send-suggested-prompt branch August 25, 2026 02:06
@MagicLizi

Copy link
Copy Markdown
Contributor

合了。推荐词现在是「Tab 填入、发送才真正发出去」,键盘路径终于跟按钮一致。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants