Repository navigation
Releases
v0.4.1 三平台发行:Windows / Linux / macOS 原生 runner 构建与冒烟
本版重点:不止 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 test253 例全绿 →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 后台运行:托盘驻留、定时回归与通知汇报
本版重点:关掉窗口它还在跑,跑完主动告诉你结果
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 可调用面
本版重点:跨部门互传与 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
本版重点: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.expectchai 链式子集、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 按钮、LOGOcomplete=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
本版重点
换上项目自己的 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、LOGOcomplete=true且 naturalWidth 128 → 显示 24×24,三枚 32×28/8px 控件齐全;Win32GetWindowPlacement实测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 — 画布浮层现代化重构
本版重点
界面上的一次整体重构:从“描边药丸堆叠”改为“浅灰画布 + 白色浮层面板”,信息层级更清楚,视觉更安静。
- 画布与浮层:
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 透明底 + 2pxrgb(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;点击最大化/还原/最小化后由 Win32GetWindowPlacement实测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 — 一体化无边框标题栏
本版重点
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,点击后由 Win32GetWindowPlacement实测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 — 圆角下拉列表
下拉列表改为定制圆角弹层
- 原生系统直角弹层替换为 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 按文档全面适配
界面行为按 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)
修复界面布局缺陷,功能范围与 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 错误 0smoke-package:对本版打包 exe 冷启动冒烟 PASS(状态栏v0.1.1 · db2)
已知限制
未做代码签名(无证书),首次运行需过 SmartScreen;仅 Windows x64;TAPI 互传、MD 文档测试、MCP/HTTP 开放调用、定时、压测、多语言与 EULA 尚未实现。