Skip to content

feat(web): 权限确认弹窗精简展示 —— PascalCase 工具名 + 文件改动摘要 - #17

Open
shaohaozhi286 wants to merge 1 commit into
masterfrom
shz_vide/confirmation-window-ui-1d5588
Open

feat(web): 权限确认弹窗精简展示 —— PascalCase 工具名 + 文件改动摘要#17
shaohaozhi286 wants to merge 1 commit into
masterfrom
shz_vide/confirmation-window-ui-1d5588

Conversation

@shaohaozhi286

Copy link
Copy Markdown
Collaborator

改了什么

Web UI 的权限确认弹窗(PermissionModal)此前把工具参数 JSON 原样糊进卡片 —— file_write 时就是整个文件内容,既难看也没法审。本 PR 对齐昨天 TUI 工具行改造的口径:

  • 工具名 PascalCase:卡片头部从原始名换成 pascalCaseToolName,与 TUI 的 pascal_case_tool_name(src/tui/tool_row_format.cpp)完全同口径 —— file_writeFileWrite,已是驼峰的名字(AskUserQuestion)原样保留,MCP 名 mcp__server__snapshotMcpServerSnapshot
  • file_write / file_edit 只显示「改哪个文件、多少行」:路径(等宽、可断行)+ 灰色行数摘要,不再透出参数 JSON。file_edit 细分三形态:替换 N 行 → M 行 / 新建 写入 N 行 / 删除 N 行,replace_all 追加「(所有匹配)」。
  • bash 只显示命令本体(命令就是用户要审的内容,保留截断与「仅显示预览」角标)。
  • 其余工具保留紧凑 JSON 兜底;参数异形(缺 file_path、args 为字符串/数组)也降级到 JSON,不抛错。

为什么这样做

  • 展示逻辑收口在纯函数 web/src/lib/permissionToolPreview.js,遵循仓库约定(数据整形放 lib、Node 单测),组件只做映射。
  • 行数统计对尾换行做了处理("a\n" 算 1 行不算 2 行),否则整文件写入(必带尾换行)行数恒虚高 1。

审阅提示

  • 后端零改动:permission_request payload(request_id/tool/args)一字未动,纯前端展示层变更。
  • Plan 审批 / EnterPlanMode 分支、三按钮、Yolo 提示、子代理来源标签均不受影响。
  • 测试:新增 permissionToolPreview.test.js 6 个用例(PascalCase 口径、行数边界、file_edit 三形态、bash、异形参数降级),已注册进 runTests.js;pnpm test 全量 0 失败,pnpm build 通过。
  • 合并后若要让嵌入二进制的 daemon 用上新前端,需 pnpm build 后重新跑 CMake configure(嵌入发生在 configure 期)。

🤖 Generated with Claude Code

对齐 TUI 工具行改造的口径:弹窗头部工具名走 pascal_case_tool_name
同款转换(file_write → FileWrite,MCP 双下划线名逐词转换);
file_write/file_edit 不再把参数 JSON(含完整文件内容)糊进弹窗,
只显示文件路径 + 行数摘要(写入 N 行 / 替换 N→M 行 / 删除 N 行,
replace_all 标注所有匹配);bash 只显示命令本体;其余工具保留
紧凑 JSON 兜底。展示逻辑收口在纯函数 lib/permissionToolPreview.js,
Node 单测覆盖行数边界与异形参数降级。后端 payload 零改动。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

2 participants