Skip to content

feat: 优化 HTTP Client 工作台、请求编辑与响应工具 - #3

Merged
xiaoyumuxi merged 1 commit into
mainfrom
codex/http-client-workbench
Nov 2, 2026
Merged

xiaoyumuxi merged 1 commit into
mainfrom
codex/http-client-workbench

Conversation

@xiaoyumuxi

Copy link
Copy Markdown
Contributor

改动

HTTP 面板原先使用普通文本框和固定等分布局,缺少请求文件入口、历史和响应导出。本次将它整理为紧凑的请求/响应工作台,并修复 HTML 前导空白、响应头可读性及占位文字导致的异常光标。

  • 合并顶部文件、读取、预览上限、取消和发送操作;收紧响应标签、耗时、大小与状态码布局,增加方法/状态色标、请求和响应头数量、内容类型及空/加载/失败状态。
  • 请求和响应编辑区使用本地打包的 CodeMirror 6,提供 HTTP、内联变量、JSON/HTML 高亮、行号和撤销;单行占位示例与 CodeMirror 光标绘制修复三行高光标,保留键盘输入与焦点行为。
  • 原生选择 UTF-8 .http/.rest 文件后读取并解析请求;选择请求会定位编辑器,发送仍须用户操作。
  • 增加仅在当前页面会话中保留的历史(最多 20 项、1 MiB 源文本),可恢复请求及选择、清空,不持久化含凭据的草稿。
  • 分栏支持鼠标、键盘调整及双击恢复;逐帧更新局部 CSS 布局,窄窗口改为上下布局,增加深浅主题和减少动态效果支持。
  • 预览上限改为 1–512 KiB、按 1 KiB 调整,前后端默认值统一为 128 KiB,保留 UTF-8 和传输预算限制。
  • 响应头改用宿主界面比例字体、13px 默认字号、紧凑行距与更清晰的对比度,保留长值展开;响应正文可切换换行/横向滚动。
  • HTML 查看器默认收起完整前导空行,底部显示数量并可恢复原文;内部空白不变,保存和预览保留原始响应。
  • 右下角可通过原生保存对话框导出仅正文或响应头+正文。写入采用同目录临时文件和原子替换,拒绝 app bundle、插件安装包、符号链接与特殊文件;截断提示明确说明只导出当前预览。
  • 识别 HTML 后可先保存到当前本地工作区,再调用宿主 preview/openHTML 以 previewOnly 打开;先检查能力和目标,拒绝已打开的文件,避免旧缓冲区冒充新响应。
  • 图标采用用户选定的 A「极简地球」,去掉细网格和 http 小字;工具窗口使用 template 模式,选中着色交给宿主;面板与空状态共用该 SVG,并跟随主题着色。
  • 中英文文案统一放入 shared/i18n/;增加锁定的 UI 构建、生成产物一致性检查、依赖版本/许可证清单,并在 Linux CI 运行真实后端浏览器集成测试,替换原来的模拟桥接测试。

兼容与限制

  • requires.backend 从 1 调整为 2,新增 workspace.metadata、documents.read、preview.open 权限,复用现有公开 SDK/宿主能力,没有修改宿主协议。
  • 当前仍仅支持 macOS。Web bridge 低于 2 时禁用文件动作;HTML 预览要求当前本地工作区和对应宿主能力,必须显式选择保存位置,没有隐藏响应缓存。
  • 原生文件对话框、编辑区 HTML 预览的完整宿主验收和 Intel 硬件运行仍待完成;浏览器检查不替代这些验收。因此保留 Draft。
  • 不修改版本号、标签或发布资产;本地 ZIP 只供验收,没有纳入提交或发布。

验证

  • npm run build、npm run check、git diff --check。
  • cargo fmt --check、cargo clippy --locked -- -D warnings。
  • Apple Silicon 和 x86_64-apple-darwin Release 构建;Universal 打包、架构和 ad-hoc 签名检查,ZIP 完整性及包内 UI/图标与源码逐字节比对。
  • python3 scripts/test_protocol.py --binary target/release/lithe-http-client:12 项通过,包括新默认上限、可调范围、UTF-8 截断、取消与无状态文件写入。
  • HTTP_CLIENT_BINARY=target/release/lithe-http-client node scripts/test_ui.js:Chrome 7 组通过。
  • HTTP_CLIENT_BROWSER=webkit HTTP_CLIENT_BINARY=target/release/lithe-http-client node scripts/test_ui.js:WebKit 7 组通过,覆盖光标/输入/焦点、真实解析和发送、历史、高亮、响应头、分栏、换行、HTML 文本安全与前导空行、截断、取消、真实文件读写、安装目录只读、语言和窄/矮布局。测试使用真实 SDK 进程和回环 HTTP 服务,不模拟业务响应。
  • 用真实 GitHub HTML 响应复现并验证 6 行前导空白问题;检查浅色与深色响应头显示。
  • Lithe 仓库的测试稳定性、运行时 bundle 只读验证和功能矩阵格式验证通过;本 PR 不修改宿主平台实现。
  • 本次启动的测试后端、回环服务与浏览器已清理;保留用户已有 Lithe 实例。

@xiaoyumuxi
xiaoyumuxi marked this pull request as ready for review November 2, 2026 15:13
@xiaoyumuxi
xiaoyumuxi merged commit 5ead3c7 into main Nov 2, 2026
1 check passed
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