Skip to content

Releases

v0.4.1 三平台发行:Windows / Linux / macOS 原生 runner 构建与冒烟

Choose a tag to compare

@github-actions github-actions released this 24 Oct 13:12

本版重点:不止 Windows —— 三平台正式出包

v0.4.0 只有 Windows 产物。这一版把 14 号文档 §3.1 的 P0 发行矩阵接进 CI:每个平台的安装包都在该平台的原生 runner 上构建,并在同一平台上跑完 golden-path e2e 与产物冒烟才允许进 Release。本机没有 Linux/macOS 环境,所以这里没有一行"理论上能跑"。

下载与安装

平台 文件 安装方式
Windows x64 ToAPI-Setup-0.4.1-win-x64.exe 常规安装,可改目录,建桌面快捷方式
Windows x64 便携 ToAPI-0.4.1-win-x64.zip 解压即用
Linux x64(任意发行版) ToAPI-0.4.1-linux-x86_64.AppImage chmod +x 后直接运行;无 FUSE 的容器加 APPIMAGE_EXTRACT_AND_RUN=1
Debian/Ubuntu/统信 UOS ToAPI-0.4.1-linux-amd64.deb sudo apt install ./ToAPI-0.4.1-linux-amd64.deb
Fedora/RHEL/银河麒麟 ToAPI-0.4.1-linux-x86_64.rpm sudo rpm -i ToAPI-0.4.1-linux-x86_64.rpm
Linux 通用 ToAPI-0.4.1-linux-x64.tar.gz 解压后运行 toapi
Apple Silicon Mac ToAPI-0.4.1-mac-arm64.dmg / .zip 见下方"未签名说明"

校验:sha256sum -c 配合 sha256sums.txt(格式 <hash> *<文件名>)。

未签名说明(不藏着)

本轮没有 Windows Authenticode 证书,也没有 Apple 开发者证书与公证,所以:

  • Windows:SmartScreen 首次运行会提示"未知发布者",点「仍要运行」。
  • macOS:未签名、未公证。首次打开请在 Finder 里右键 App →「打开」→「打开」;
    或命令行 xattr -dr com.apple.quarantine /Applications/ToAPI.app。
    被 Gatekeeper 直接拦掉、或在企业管控设备上无法绕过右键打开的,请等签名版本,不要用来做 CI 关键路径。
  • Intel Mac(x86_64)本轮不出包:需要另一台 Intel runner 或 universal 构建,已排进后续版本。

Linux 的界面差异(按 06/14 号文档执行,不是缺陷)

  • 只有 Windows 用无边框窗口 + 自绘标题栏;Linux/macOS 保留系统原生窗口装饰。
  • 「关闭窗口时最小化到托盘」在 Linux 默认关闭:GNOME 等桌面环境常没有可用的状态栏托盘,默认隐藏窗口等于把应用藏没了。需要常驻的(跑定时回归)请在「通知设置」里手动打开,或在 KDE/Cinnamon 等有托盘的环境直接开启。Windows/macOS 仍默认开启。

macOS 托盘驻留的真实修复

CI 的 macOS e2e 暴露出一个只在 mac 上存在的问题:窗口收进托盘后系统会对应用做 App Nap,主进程定时器被降频,"关窗后继续按计划跑定时任务"在 mac 上不成立。现在收进托盘期间显式 powerSaveBlocker.start('prevent-app-suspension'),唤回窗口或退出时释放;只作用于 darwin,不影响屏幕休眠策略。

验证记录(本次 CI 实测,非本地推断)

  • windows-latest:npm test 253 例全绿 → verify:flow 真机两轮全绿(含托盘驻留→关窗退出、定时任务→通知带报告路径)→ NSIS + zip 打包 → 产物冒烟 PASS。
  • ubuntu-22.04:同一套测试在 Linux 上全绿(node:sqlite 真实读写)→ xvfb 下 e2e 全绿 → AppImage/deb/rpm/tar.gz 四包全部产出 → AppImage 在本平台冒烟 PASS(握手、面板圆角、无 emoji、无脚本错误)。
  • macos-14:测试全绿 → e2e 全绿 → dmg + zip → 未签名 .app 冒烟 PASS。
  • 汇总 job 校验产物数量并生成 sha256sums.txt。

顺带修掉的工程问题

  • CI 门禁(pr.yml)在 ubuntu 与 windows 双平台跑 npm run gate;首次运行即暴露 Windows runner 检出 CRLF 导致 prettier --check 全线误报 → 加 .gitattributes 统一 eol=lf。
  • 三栏拖宽/分屏的布局断言改为先固定 1280×800 视口:Windows runner 上窗口尺寸与本机不同,阈值断言会误报(实测 URL 187px)。
  • 定时调度测试改为不依赖自然触发时钟(间隔取 1 小时 + 手工拨回 next_run_at),慢机器上排队/并发计数不再抖动。
  • verify:flow 加 CDP 30s 超时、步骤日志与 12 分钟看门狗:macOS 那次无声卡死现在 30 秒内就报出卡在哪一步。
  • electron-builder 显式 --publish never:tag 触发时它会自行尝试发布到 GitHub Releases 并因拿不到 token 失败。

尚未做

macOS Intel 包、Windows arm64 包、签名与公证、GPG 签名、龙芯 loong64 与 UOS 专项冒烟(14 号文档 §3.2 已列风险与路线)。

v0.4.0 后台运行:托盘驻留、定时回归与通知汇报

Choose a tag to compare

@yxpil yxpil released this 24 Oct 08:50

本版重点:关掉窗口它还在跑,跑完主动告诉你结果

v0.3.0 解决了"给别人用、给 AI 用";这一版解决"人不在电脑前也要跑、跑完要知道"。(Postman 的 B3/B4 顺延为 v0.5.0/v0.6.0,见 23 号文档 §2。)

定时回归任务(12 号文档)

  • 三种触发:cron(5 段或 6 段,本机时区,自实现解析零依赖)、固定间隔(epoch 对齐,不随触发累加漂移)、单次定时。编辑器实时给出未来 5 次触发时间,非法表达式就地给中文原因(0 9 * * 1-5、*/15 * * * *、0 0 13 * 5 的"日或周"并集语义都按 Vixie cron 走)。
  • 必须锁环境:没选环境或环境不属于目标项目,直接拒绝保存 —— 定时回归跟着界面当前激活环境跑是最常见的事故源。
  • 重叠策略:skip(上次未完就跳过)/ queue(排队,上限 3,再多丢弃)/ parallel。
  • 错过补跑:应用没运行错过的触发点,启动时按策略只补最近一次并发 warn 通知「错过 N 次,已补跑最近一次」,或整体跳过;单次任务跑完自动停用;目标被删除时任务自动停用并留一条 error 通知,不会每秒重复失败。
  • 时钟可信:到期判定用单调时钟(process.hrtime),把系统时间往前拨不会提前触发、往后拨不会重复触发;库里的排期与内存不一致(界面编辑过、或另一个实例改过同一库)会自动重新对齐。
  • 目标范围支持集合 / 项目 / 单接口,等价一次 runner:start,结果照常进 runner_run 与历史。案例、MD 文档测试与动作宏尚未落地(文档 §6 明确标注未实现)。

通知体系(15 号文档)

  • 事件源:Runner 完成(默认集合:2/2 通过)、stopOnFail 中止(error)、定时任务完成、misfire 补跑、外部调用异常、DB 错误。定时任务触发的运行不会再补一条 Runner 通知,一次运行只汇报一次。
  • 五通道:应用内 Toast(error 需手动关)、通知中心(不可关,底栏铃铛 + 未读角标 99+ 封顶 + 320px 右侧抽屉,按今天/昨天/更早分组、按类型筛选、点条目跳到那次运行或任务)、OS 原生通知(只在窗口失焦或收进托盘时发,前台不打扰)、声音(映射为 OS 通知的非静默,勿扰交给系统)、Webhook(raw / 企业微信 / 钉钉 / 飞书四种模板)。
  • 防轰炸:相同事件同源 60s 内合并成一条并累计 ×N;Webhook 每地址每分钟最多 6 条,超出丢弃;定时任务默认只在结果翻转(成功↔失败)时通知,可切"每次都发"。
  • 脱敏:secret 变量值在标题、正文、OS 通知与 Webhook 载荷里一律 ***;Webhook 地址按敏感配置掩码显示,只接受 http(s)。

系统托盘

  • 「关闭窗口时最小化到托盘」默认开:关窗只隐藏不退出,定时任务在后台按计划继续跑;托盘图标在有待处理 error 未读时位图叠加红点(非 emoji)。
  • 托盘菜单:打开主窗口、最近 3 条通知摘要、立即运行任务子菜单、退出。关掉该设置后,标题栏关闭即真退出。

报告导出(顺带补上 07 号文档欠的 runner:report)

  • runner:report {runId, format:'json'|'junit'|'html', filePath?} 复用 CLI 的渲染器;不给路径就写到 userData/reports/集合名-时间戳.后缀,自定义路径后缀与格式不符时自动补正确后缀。
  • 定时任务可选"每次落报告",报告绝对路径直接写进通知正文(真机验证:报告:C:\...\reports\默认集合-20261024-163923.json)。

界面

  • 右侧面板新增「任务」档;底栏右侧铃铛 + 未读角标;通知设置对话框是 6 事件 × 4 通道矩阵 + 托盘/状态变化开关 + Webhook 配置与连通性测试。
  • 命令面板新增:显示定时任务面板、打开通知中心、通知设置。
  • 任务编辑器里可直接「新建环境」——定时任务必须锁环境,不能逼用户先去导 Postman 环境。

验证(全部实跑,不是声明)

  • npm run gate 全绿:typecheck ×2、eslint、prettier、check-channels、25 个测试文件 / 253 个用例(较 v0.3.0 的 21 文件 / 200 用例新增 53 例)。
  • 契约面从 48 个 invoke 通道 + 4 个事件扩到 62 个 invoke + 6 个事件;DB 迁移到 006_schedule_notify。
  • 新增用例:tests/unit/schedule/cron.test.ts(13)、tests/integration/schedule/scheduler.test.ts(12,桩 Runner 精确驱动 overlap/queue 上限/misfire/单调时钟)、tests/integration/schedule/tasks.test.ts(10,真实 Runner + 真实靶场 + 报告落盘)、tests/integration/notify/channels.test.ts(18,注入 desktop 桩与 fetch 桩验证通道矩阵、合并、限流、脱敏、1000 条环形清理)。
  • npm run verify:flow 真机两轮全绿(exit 0,两轮 console 错误数均为 0):新建任务 → cron 预览 5 次 → 非法表达式报错 → 就地建环境 → 保存 → 立即运行 → Toast「每小时冒烟:2/2 通过」→ 通知中心条目含通过率与报告路径 → 点条目跳 Runner → 全部已读角标消失;第二轮验证关窗收进托盘(进程存活 + 页面转后台)→ 关掉托盘设置后关窗真退出。
  • 安装包冒烟:out/win-unpacked/ToAPI.exe 启动 → 迁移到 schema 6 → 握手 v0.4.0 → 无托盘创建失败日志 → verdict: PASS(SVG 图标 13、DOM 内 emoji 0、pageErrors 0)。

尚未做(不装)

  • 动作宏录制与回放、系统级唤醒(任务计划程序 / launchd / systemd timer,即"应用完全退出也跑")。
  • 压测与宏相关的事件类型暂不进订阅矩阵,等对应功能落地再注册。

ToAPI v0.3.0 — 跨部门互传与 AI 可调用面

Choose a tag to compare

@yxpil yxpil released this 24 Oct 07:34

本版重点:跨部门互传与 AI 可调用面

v0.2.0 打通了 Postman 资产与数据驱动回归;这一版把"给别人用"和"给 AI 用"补齐。(Postman 的 B3/B4 顺延为 v0.4.0/v0.5.0,见 23 号文档 §2。)

.tapi 单文件互传(08 号文档)

  • 导出:整个项目或指定集合子树 → 一个格式化 JSON 的 .tapi 文件;集合树、脚本、提取器、伪装、鉴权逐字段带上;未识别字段留在库内不丢。
  • 敏感变量:默认剔除(value 置空 + redacted: true),可选明文携带(文件头标 contains_secrets);加密携带尚未实现,UI 只给两个选项。
  • 导入:先预览(版本是否支持、校验和、集合/接口/环境/全局变量计数、被剔除的密钥数、同名项目提示),再选策略 —— 新建项目(同名自动加「(2)」)或合并进现有项目;接口按「方法 + URL + 名称」判重,可选跳过 / 覆盖 / 保留两份;全程一个事务,失败整体回滚;校验和不匹配直接拒绝导入(UI 禁用导入按钮)。
  • 入口:项目右键「导出为 .tapi… / 导入 .tapi…」、集合右键「导出该集合为 .tapi…」、GUI 对话框(选文件或粘贴),以及 toapi run project.tapi(CI 直接把用例集导入临时库跑完即弃)。

AI / 程序可调用面(11 号文档)

  • Local HTTP API:http://127.0.0.1:4730(端口可配),端点与工具一一对应(/v1/projects、/v1/api、/v1/env、/v1/send、/v1/run、/v1/history、/v1/skill、/v1/tapi、POST /mcp),载荷与 IPC 同构;状态码 401/403/429/400/404。
  • 内嵌 MCP Server:15 个工具(读项目结构、发请求、跑 Runner 含数据驱动迭代、取环境与历史、设运行时变量、导出 .tapi、取 SKILL.md);stdio 用 toapi mcp --db <toapi.db>(纯 Node,不需要 Electron),Streamable HTTP 复用 POST /mcp。
  • 调用密码闸门:库内只存 salt + scrypt 派生值,明文永不落库;未设密码时开关打不开,弱口令(<8 位)被拒;「生成」出的新密码只在一次返回值里出现。闸门链固定顺序:开关与密码 → 限流 → 客户端授权 → host 白名单 → 执行 → 脱敏 → 审计。
  • 授权条与审计:外部客户端首次连接时 GUI 弹底部授权条(可展开"将交付的说明书摘要"),60s 无操作按拒绝;host 不在项目环境声明清单内要单独确认(无界面模式直接拒绝);每次调用(含失败)写 external_call_log,设置面板可回看;secret 变量在任何通道、任何响应文本里都以 *** 出现。
  • SKILL.md:toapi_get_skill / GET /v1/skill 直接返回给 AI 看的说明书(frontmatter + 环境 + 链式调用顺序 + 接口清单 + 断言建议 + cURL/JS/Python 示例),只列敏感变量名绝不给值。

全局搜索与单独重命名

  • 命令面板(Ctrl+K)即搜索入口:跨项目命中项目 / 接口 / 集合 / 环境,匹配范围包含接口名称、方法与 URL,回车直接跳转(切项目 + 打开接口)。
  • 项目 / 集合 / 接口都能在树里右键重命名(RenameDialog,Enter 提交、Esc 取消);重命名当前打开的接口只同步编辑器草稿,不会冲掉未保存改动;接口名与 URL 相互独立。

验证(实测,不是声明)

  • npm run gate:typecheck(tsc ×2)+ eslint + prettier --check + 48 invoke / 4 event 通道契约一致 + 21 个测试文件 / 200 项测试全绿(v0.2.0 起新增 48 项)。
  • 新增用例:tests/unit/flow/data-file.test.ts(11)、tests/unit/cli/*(15)、tests/integration/flow/data-driven.test.ts(10,真实靶场逐条比对落线查询串)、tests/integration/cli/run.test.ts(7,runCli 端到端 + 三种报告 + 退出码 0/1/2 + .tapi 直跑)、tests/unit/tapi/format.test.ts(7)、tests/integration/tapi/roundtrip.test.ts(17,导出/预览/导入/篡改拒绝/合并判重)、tests/unit/open/params.test.ts(6)、tests/integration/open/channels.test.ts(18,真实监听端口 + 真实靶场:401/429/host 闸门/脱敏/MCP 会话/审计/SKILL.md)。
  • npm run verify:flow:CDP 驱动真机 Electron,退出码 0 —— 数据行「CSV · 2 行 · 迭代 2 次」与 2 个轮次标记、.tapi 导入 Toast 与新项目入树、篡改校验和被禁用、按 URL 搜到接口、按名称搜到项目、重命名「查订单V2」后 URL 不变、开放调用面板未设密码时开关被锁而设密码后解锁、片段回显 127.0.0.1:4730;两轮 console 错误 0。
  • 打包冒烟:node scripts/smoke-package.mjs out/win-unpacked/ToAPI.exe → verdict: PASS(握手 v0.3.0、标题栏 46px / 3 按钮、LOGO 加载、三面板 14px、svgIcons=12、emojiInDom=0、页面错误 0)。
  • 未做代码签名:NSIS 安装器的 SmartScreen 提示属预期。

已知边界(本版不含,见 11 号文档 §9 / 08 号文档 §9)

.tapi 加密携带与案例字段、Skill 包写盘与右键导出目录、Runner 并发排队与 BUSY、MCP 流式(SSE)、拖文件进窗口导入。

产物

文件 说明
ToAPI-Setup-0.3.0-win-x64.exe NSIS 安装器(未签名)
ToAPI-0.3.0-win-x64.zip 便携版
sha256sums.txt 校验和

ToAPI v0.2.0 — Postman 兼容 B1+B2:资产脚本与数据驱动 CLI

Choose a tag to compare

@yxpil yxpil released this 24 Oct 06:10

本版重点:Postman 本地兼容前两批(B1 资产与脚本 + B2 数据驱动与 CLI)

B1 与 B2 在同一开发周期完成,合并为一个版本发布(批次范围与验收标准不变,B3/B4 顺延为 v0.3.0/v0.4.0,见 23 号文档 §2)。

B1 资产与脚本

  • Collection v2.1 / Environment 双向互操作:导入 → 导出 → 再导入语义无损;未识别字段 100% 回填 source_json,导入报告列出提示;整个导入一个事务,失败整体回滚。
  • 作用域继承:集合级 auth / variables / pre/post 脚本沿「项目根 → 外层集合 → 内层集合 → 接口」链继承,noauth 可显式覆盖;变量优先级 local > environment > 内层集合 > 外层集合 > 项目根 > global,runtime 最高。
  • pm.* 源码级兼容:pm.test(同步 / Promise / done 三种写法)、pm.test.skip、pm.expect chai 链式子集、pm.response.to.have.*、pm.sendRequest、pm.cookies、pm.environment / pm.collectionVariables / pm.globals / pm.variables 分层读写、pm.info、pm.request 后置只读保护。
  • 动态变量:{{$randomInt}}、{{$guid}}、{{$timestamp}}、{{$isoTimestamp}}、{{$randomEmail}}、{{$randomIPv6}} 等全量清单,同一请求内每次出现独立求值;未知 {{$name}} 保持原样并进未解析清单。
  • 沙箱库:_(lodash)、CryptoJS、uuid.v4/v7、moment、atob/btoa、URL/URLSearchParams、TextEncoder/TextDecoder、定时器与 console;fetch / XMLHttpRequest / require / process 仍然不可用(网络只走 toapi.request.send / pm.sendRequest)。

B2 数据驱动与 CLI

  • 数据驱动 Runner:CSV(RFC 4180 引号/内嵌换行/BOM/CRLF)与 JSON 对象数组,每行一次迭代;--iteration-count 可多于行数并循环取行;pm.iterationData.get/has/toObject 与 {{列名}} 插值同时可用,优先级为「环境 < 数据行 < local」。
  • 流程控制:pm.execution.setNextRequest(名称) 在同轮内跳转,null / 未知名结束本轮,跳转次数设上限防自跳死循环;只在 Runner/CLI 上下文生效,单次发送调用只记警告。
  • toapi run 无头 CLI(纯 Node,无需 Electron 运行时):位置参数导入 Postman 集合到临时库跑完即弃,或 --db 直接跑已有数据库;--env(文件或库内名称)、--globals、--data、--iteration-count、--delay、--timeout、--bail、--quiet、--reporters cli,json,junit,html 与三份导出路径;退出码 0 全通过 / 1 有失败 / 2 用法与 IO 错误,可被 CI 直接判定。
  • GUI:Runner 面板可粘贴数据行并设定迭代次数,明细行显示「第 N/M 轮」,标题行显示轮数与通过率;树与命令面板发起的运行自动带上数据源。断言三态图标(通过 / 失败 / 跳过)在响应面板与 Runner 一致。
  • 数据模型:迁移 004 增加 runner_run.iteration_count 与 runner_item.iteration,明细索引改为 (run_id, iteration, sort_order)。

验证(实测,不是声明)

  • npm run gate:typecheck(tsc ×2)+ eslint + prettier --check + 38 invoke / 3 event 通道契约一致 + 17 个测试文件 / 152 项测试全绿。
  • 新增 42 项用例(合计 17 个测试文件 / 152 项):tests/unit/flow/data-file.test.ts(11)、tests/unit/cli/args.test.ts(9)、tests/unit/cli/reporters.test.ts(6)、tests/integration/flow/data-driven.test.ts(10,真实靶场比对落线查询串)、tests/integration/cli/run.test.ts(6,runCli 端到端跑真实集合 + 三种报告文件 + 退出码 0/1/2)。
  • npm run verify:flow:CDP 驱动真机 Electron。Postman 导入预览/导入报告/环境覆盖、集合 Runner 通过率与跳过标记、数据行「CSV · 2 行 · 迭代 2 次」与 2 个轮次标记、标题行「2 轮迭代」全部断言通过;两轮 console 错误 0。
  • 打包冒烟:node scripts/smoke-package.mjs out/win-unpacked/ToAPI.exe → verdict: PASS(握手版本、标题栏 46px / 3 按钮、LOGO complete=true、三面板 14px、svgIcons=12、emojiInDom=0、页面错误 0)。
  • 未做代码签名:NSIS 安装器的 SmartScreen 提示属预期。

产物

文件 说明
ToAPI-Setup-0.2.0-win-x64.exe NSIS 安装器(未签名)
ToAPI-0.2.0-win-x64.zip 便携版
sha256sums.txt 校验和

无头 CLI 当前从仓库使用:npm run build:electron 后 node bin/toapi.cjs run …(纯 Node ≥ 24,不需要 Electron)。安装包内的 CLI 入口(asar + ELECTRON_RUN_AS_NODE)尚未验证,留待后续版本随发行矩阵一起补。

ToAPI v0.1.6 — 自有 LOGO

Choose a tag to compare

@yxpil yxpil released this 23 Oct 20:25

本版重点

换上项目自己的 LOGO,应用不再显示 Electron 默认图标。

  • 标题栏品牌位:24px 透明底手写 TA. 标 + ToAPI 文字,替换原先的黑底发送图标。
  • 窗口 / 任务栏图标:主进程 BrowserWindow 指定 electron/assets/icon.png(256×256),开发态也显示自有图标。
  • 安装器 / exe 图标:build/icon.png(512×512,由原 576×574 LOGO 等比缩放为方形)交给 electron-builder 生成多尺寸 ICO,NSIS 安装器、便携 zip 内 exe、开始菜单快捷方式一致。
  • 原始 LOGO.png 保留在仓库根目录,图标资产由它派生,不引入第三方图标库。

验证(实测,不是声明)

  • npm run gate:typecheck + lint + format + 32 invoke / 3 event 通道契约 + 76 项测试全绿。
  • npm run verify:flow:CDP 驱动真机;标题栏 46px、LOGO complete=true 且 naturalWidth 128 → 显示 24×24,三枚 32×28/8px 控件齐全;Win32 GetWindowPlacement 实测 maximized → normal → minimized;两轮 console 错误 0。
  • 打包产物 ToAPI.exe 冒烟 PASS(握手 v0.1.6、LOGO 加载、标题栏 46px / 3 按钮、三面板 14px、页面错误 0);用 ExtractAssociatedIcon 抽取 exe 图标目检为 TA.。
  • 打包环境提示:GitHub 下载图标转换工具被证书拦截,已用 ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/ 完成。

产物

文件 说明
ToAPI-Setup-0.1.6-win-x64.exe NSIS 安装器(未签名,SmartScreen 提示属预期)
ToAPI-0.1.6-win-x64.zip 便携版
sha256sums.txt 校验和

ToAPI v0.1.5 — 画布浮层现代化重构

Choose a tag to compare

@yxpil yxpil released this 23 Oct 19:49

本版重点

界面上的一次整体重构:从“描边药丸堆叠”改为“浅灰画布 + 白色浮层面板”,信息层级更清楚,视觉更安静。

  • 画布与浮层:body 改为浅灰画布 #F2F2F4;项目树、编辑器、响应区成为三块白色面板(14px 圆角、1px 细线、10px 间距),不使用投影,靠留白与细线分区分层。
  • 下划线文字 Tab:Params / Headers / Body / Scripts 与响应 Pretty / Raw / Headers 改为透明底文字 Tab,选中项加 2px 黑条,去掉胶囊选中块。
  • 底色徽章:HTTP 方法与响应状态改为 6px 圆角的柔和色块(method 色 + 浅底),不再是描边药丸。
  • 输入框:普通输入改为填充式;URL 大胶囊 44px,聚焦时底色转白并加深边框。编辑面板窄于 480px 时发送按钮收为 36px 图标圆钮,保证 1024 最小窗口下 URL 仍有 237px。
  • 标题栏与状态栏:标题栏 46px、与画布同色,品牌方标 24px,右侧窗口控件改为 32×28 / 8px 圆角;底栏 30px 透明,DB 大小与版本靠右。
  • Toast:移到底部居中(距底 44px),不再占用标题栏下方空间。
  • 空态:Params / Headers 无内容时显示一块浅底说明卡与「添加一行」动作,不再是一片空白。

验证(实测,不是声明)

  • npm run gate:typecheck + lint + format + 32 invoke / 3 event 通道契约 + 76 项测试全绿。
  • npm run verify:flow:CDP 驱动真机两轮。画布 rgb(242,242,244)、三块面板白底/1px/14px、下划线 Tab 透明底 + 2px rgb(22,22,24) 指示条、Toast 距底 44px;状态行 200 OK · 16ms · 112 B;Runner 2/2 通过率 100%;1024×640 下 URL 237px。
  • 标题栏 46px、drag/no-drag 正确、三枚 32×28/8px 按钮带 title;点击最大化/还原/最小化后由 Win32 GetWindowPlacement 实测 maximized → normal → minimized;关闭按钮真实退出进程。
  • 字体仅 12/13/14/20;按钮按角色圆角;2px 聚焦环;渐变/投影计数 0;JSON 三色 22/29/180;DOM emoji 0、两轮 console 错误 0。
  • 打包产物 ToAPI.exe 冒烟 PASS(握手 v0.1.5、标题栏 46px / 3 按钮、三面板 14px、canvas 正确、页面错误 0)。

产物

文件 说明
ToAPI-Setup-0.1.5-win-x64.exe NSIS 安装器(未签名,SmartScreen 提示属预期)
ToAPI-0.1.5-win-x64.zip 便携版
sha256sums.txt 校验和

截图:.tmp/toapi-flow-1.png(首轮)、.tmp/toapi-select.png(下拉展开)、.tmp/toapi-titlebar.png(最大化态)。

ToAPI v0.1.4 — 一体化无边框标题栏

Choose a tag to compare

@yxpil yxpil released this 23 Oct 19:33

本版重点

Windows 上把原生标题栏与网页合成一体,界面从窗口第一像素开始。

  • 无边框窗口:frame:false,40px 自绘标题栏整条可拖拽,不再有系统标题栏与菜单栏的双层观感。
  • 窗口控制药丸:右侧最小化 / 最大化(还原)/ 关闭三枚 30px 药丸,14px SVG 图标、title + aria-label 齐备;关闭按钮 hover 变 --err 红底。
  • 状态真源在主进程:新增 window:get-state / minimize / toggle-maximize / close 与 event:window-state;双击拖拽区、Win+↑、系统贴边同样能同步最大化图标。
  • 平台边界:仅 Windows 使用自绘标题栏;Linux / 信创继续使用系统原生装饰(14 号文档)。
  • Toast 避让:标题栏存在时 Toast 距标题栏下沿 16px,不遮挡拖拽区。

验证(实测,不是声明)

  • npm run gate:typecheck + lint + format + 32 invoke / 3 event 通道契约 + 76 项测试全绿。
  • npm run verify:flow:CDP 驱动真机两轮;标题栏 40px、drag/no-drag 正确、三枚按钮 999px 带 title,点击后由 Win32 GetWindowPlacement 实测 maximized → normal → minimized 再恢复;关闭按钮真实退出进程;两轮 console 错误 0。
  • 打包产物 ToAPI.exe 冒烟 PASS(握手 v0.1.4、标题栏 40px / 3 按钮、emoji 0、页面错误 0)。

产物

文件 说明
ToAPI-Setup-0.1.4-win-x64.exe NSIS 安装器(未签名,SmartScreen 提示属预期)
ToAPI-0.1.4-win-x64.zip 便携版
sha256sums.txt 校验和

截图:.tmp/toapi-flow-1.png、.tmp/toapi-titlebar.png(最大化态)。

v0.1.3 — 圆角下拉列表

Choose a tag to compare

@yxpil yxpil released this 23 Oct 19:21

下拉列表改为定制圆角弹层

  • 原生系统直角弹层替换为 Chromium appearance: base-select 弹层:白底、1px --line、10px 圆角、无阴影
  • 选项 28px 高、999px 药丸;hover 灰底,选中项黑底白字;箭头展开时旋转 180°
  • 方法、鉴权、Body 类型、提取器、环境等全部 <select> 一致生效
  • 1024×640 下 URL 输入由 207px 增至 241px(自定义箭头更紧凑)

验证

  • npm run gate 全绿(76 tests)
  • npm run verify:flow 两轮通过;可信点击展开下拉后断言 ::picker(select) 10px、box-shadow: none、选项 999px,截图 .tmp/toapi-select.png
  • 安装包冒烟 PASS(v0.1.3、DB 4.0 KB、emoji 0)

产物

  • ToAPI-Setup-0.1.3-win-x64.exe(NSIS 安装器)
  • ToAPI-0.1.3-win-x64.zip(便携版)
  • sha256sums.txt

未做代码签名,首次运行需通过 SmartScreen。

v0.1.2 — UI 按文档全面适配

Choose a tag to compare

@yxpil yxpil released this 23 Oct 19:12

界面行为按 06 / 07 / 21 号文档补齐

  • 三栏拖拽调宽、上下/左右分屏;栏宽、响应比例与分屏方向写入 localStorage,重启保持
  • 项目树右键菜单、拖拽排序(tree:move 中点排序)、删除二次确认(含受影响数量)
  • Ctrl+K 命令面板(过滤 + 回车执行)、Ctrl+`` 切换分屏、Ctrl+Shift+R` 运行集合
  • 响应状态行 200 OK · Nms · X B,JSON 三色高亮;历史固定行高虚拟滚动、按天分组、搜索、加载更多
  • 底栏展示当前环境、DB 大小(app:hello.dbSizeBytes)与版本号
  • 修复:新建接口空 URL 草稿无法保存(发送时仍给出明确校验提示)
  • 回归:1024×640 下 URL 输入 207px,三栏不重叠;全部按钮 999px 且带 title;渐变/投影 0

验证

  • npm run gate 全绿(typecheck / lint / format / channels / 76 tests)
  • npm run verify:flow 两轮真机通过,console 错误 0;截图 .tmp/toapi-flow-1.png、.tmp/toapi-flow-2.png
  • 安装包冒烟 PASS(v0.1.2、DB 4.0 KB、emoji 0)

产物

  • ToAPI-Setup-0.1.2-win-x64.exe(NSIS 安装器)
  • ToAPI-0.1.2-win-x64.zip(便携版)
  • sha256sums.txt

未做代码签名,首次运行需通过 SmartScreen。

ToAPI v0.1.1(Windows x64)

Choose a tag to compare

@yxpil yxpil released this 23 Oct 18:41

修复界面布局缺陷,功能范围与 v0.1.0 相同(M1–M4)。

修的是什么

接口名输入框与保存按钮原先和 URL 大胶囊挤在同一行,在默认窗口宽度下把URL 输入框压到 4px 宽——也就是看不见、点不到。现改为:

  • 上:标题行(接口名 + 保存)
  • 下:URL 大胶囊独占整行(方法选择 + URL + 发送内嵌)

实测 URL 输入框宽度 1267px 视口下 239px,最小 1024×640 下 150px。scripts/verify-flow.mjs 已加 ≥200px 的宽度回归断言,防止再次退化;06 号 UI 规范 §3.3/§4 同步了这条布局规则。

产物

文件 用途
ToAPI-Setup-0.1.1-win-x64.exe NSIS 安装程序
ToAPI-0.1.1-win-x64.zip 便携版
sha256sums.txt SHA-256 校验和

验证

  • npm run gate 全绿:typecheck + ESLint + Prettier + 通道契约 + 76 个测试
  • verify-flow:真机跑通 建项目→发送 200→脚本断言→集合 Runner 通过率→重启持久化,console 错误 0
  • smoke-package:对本版打包 exe 冷启动冒烟 PASS(状态栏 v0.1.1 · db2)

已知限制

未做代码签名(无证书),首次运行需过 SmartScreen;仅 Windows x64;TAPI 互传、MD 文档测试、MCP/HTTP 开放调用、定时、压测、多语言与 EULA 尚未实现。