Skip to content

feat(ui-mac): REQ-038b 会话页 slash 弹框与首页统一(alpha 菜单组件级接管) - #99

Merged
jinjunnn merged 1 commit into
alphafrom
feat/req038b-session-slash-takeover
Jul 5, 2026
Merged

feat(ui-mac): REQ-038b 会话页 slash 弹框与首页统一(alpha 菜单组件级接管)#99
jinjunnn merged 1 commit into
alphafrom
feat/req038b-session-slash-takeover

Conversation

@jinjunnn

@jinjunnn jinjunnn commented Jul 5, 2026

Copy link
Copy Markdown
Owner

内容(用户拍板:「在新对话输入 / 和在已有对话输入 / 弹框不是一个弹框。我需要使用新对话的那个弹框」)

会话页 slash 弹层从「上游自带弹层 + CSS 换皮」升级为组件级接管:两处现在渲染同一个 alpha 菜单组件(createComposerAutocomplete)——同数据源(command.list + command.options)、同样式(.a-pop 家族)、同键盘交互、同选中语义。

  • 上游弹层整体隐藏(:has(> [data-slash-id]) display:none);菜单键(↑↓/Enter/Tab)window capture 拦截,防上游隐藏弹层双选;Esc 刻意放行使上游内部弹层状态同步关闭(否则后续 Enter 会静默选中隐藏项)
  • 编辑器保持上游 contenteditable(ADR-016 复用不重写):选中经 execCommand 写回,上游 draft 状态经其自身 input 监听同步
  • 菜单 Portal 到 body + fixed 锚定(composer overflow 裁切,ChipPopover 同款方案)
  • @ 菜单不接管(上游 @ 与内部 parts/draft 强耦合,modes 限定 slash)

验证

  • CDP 实测:会话页 / → alpha 菜单(12 条,mcp/skill 徽标),上游弹层不可见;rev 过滤+Enter 回填 /review ;ArrowDown+Enter 选中第二项正确;宽度=composer、上方 8px,与首页一致 —— 截图 docs/audits/2026-07-05-s18-t1-req038/09-session-alpha-slash.png
  • alpha-check 三关绿(385 tests)
  • 零改上游(guard 绿)

🤖 Generated with Claude Code

- composer-slash-inject.tsx:首页同一套 createComposerAutocomplete Portal 进会话 composer(body 锚定防 overflow 裁切);上游弹层整体隐藏;菜单键 capture 拦截防隐藏弹层双选,Esc 放行同步关闭;编辑器仍上游 contenteditable(execCommand 写回,draft 同步)——零改上游
- composer-autocomplete 增 modes 选项(会话面仅 slash;@ 与上游 parts 状态强耦合不接管)
- CDP 实测:菜单同款(mcp/skill 徽标/active/宽度贴合)、过滤/键盘选中/回填全通;截图入册
- 长描述单行截断(两面同款)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jinjunnn
jinjunnn merged commit f62e900 into alpha Jul 5, 2026
4 checks passed
@jinjunnn
jinjunnn deleted the feat/req038b-session-slash-takeover branch July 5, 2026 13:25
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