Repository navigation
Releases
MoonHID 0.6.1 — AI 协作说明更新与 Windows 验收修复
MoonHID 0.6.1 是文档与验收补丁,库代码和公开 API 与 0.6.0 相同。核心支持 wasm / wasm-gc / JS / native,展示 JSON 保持 v2,声明使用独立 v1 格式。
moon add We1chan/moonhid@0.6.1- AI 协作说明:记录参赛者与 AI 编程工具(Codex、Claude Code)的实际分工;README 与验收说明同步更新。
- 修复 Git for Windows 默认 CRLF 检出下
scripts/test-cli.mjs的失败,此前 Windows 全新克隆运行一键验收会退出 1。 - 新增 Windows 工作流,以 CRLF 检出后运行一键快速验收。
0.6.0 引入的功能:网页报告编辑、四场景演示、结构化声明 v1、批量重放、帧转换与 HIDAPI 可行性。原生收发适配器和网页 Output/Feature 发送仍为规划。
验收入口:
发布提交:f0420829bc00b1f40b311978d41b67ff1f659c0f。
实际验收:
- 默认 Windows Git(CRLF)全新克隆运行完整验收:PASS 23 / FAIL 0 / SKIP 0,四后端各 123/123。
- 注册表全新独立安装:四后端各 14/14,71 份源码/配置与标签逐字节一致(机器记录)。
- 干净克隆验收机器记录
离线包解压后运行 node scripts/serve-offline.mjs,Windows 可双击 start-inspector.cmd,只需 Node.js 22+。
离线 ZIP SHA-256:b9080de1706ab7e653d442d265669b53e6cf8b979b21950732ee1bf4626c41cd,以附件 SHA256SUMS.txt 校验。
MoonHID 0.6.0 — 结构化声明、批量重放与报告编辑
MoonHID 0.6.0 新增结构化描述符声明、批量帧重放、网页字段编辑和纯 MoonBit transport 帧转换。核心支持 wasm / wasm-gc / JS / native,展示 JSON 保持 v2;声明使用独立 v1 格式。
moon add We1chan/moonhid@0.6.0- 网页编辑与 LED 操作:初始化三方向报告,编辑字段/元素并导出完整 HEX。
- 四场景演示:键盘、鼠标/手柄、媒体键/厂商配置、固件回归,一条 MoonBit 命令打印固定结果。
- 声明 v1:build/declare、命名 flags、嵌套集合、显式宽度与字节无损往返;五模板及真实/codec 描述符回归。
- 批量重放:JSONL、原文件行号、错误后继续、Usage/Raw/物理量/活跃集合断言;Xbox 42 帧使用既有独立预期。
- 帧转换与 HIDAPI 可行性:四后端帧转换,Windows/Linux 链接与初始化、Linux CI UHID 枚举探针。原生收发适配器和网页 Output/Feature 发送仍为规划。
发布提交:706ff87a88ae166cc627c1bc1d0ca774e00ebe57。发布前 PR 与发布提交的五项 CI 均已通过;发布提交 CI 在 GitHub 队列延迟后通过手动触发完成。
实际验收:干净克隆完整脚本 23 PASS / 0 FAIL / 0 SKIP,四后端各 123/123;注册表全新独立安装无本地覆盖,四后端各 14/14,71 份源码/配置与发布提交原始字节及 LF 归一比较均一致。
离线包解压后运行 node scripts/serve-offline.mjs,Windows 可双击 start-inspector.cmd。只需 Node.js 22+;BUILD.json 记录版本与构建提交。
离线 ZIP SHA-256:d17b2ca18be8f0450ee9352aefbcf71b99826e640214227875c024c22ead15b8,以附件 SHA256SUMS.txt 校验。
证据边界:合成、虚拟设备与实机观测分开;Xbox 仅为既有主机 Input,未新增实机 LED/Feature 收发。
完整发布机器记录 汇总安装、干净克隆、下载校验与证据边界。
MoonHID 0.5.2 — 可访问文档与完整报告标准案例
MoonHID 0.5.2 修复 GitHub / Mooncakes 的文档入口,补齐 HID 1.11 完整报告的标准证据。核心 API 与 0.5.0 相同,JSON schema 保持 v2。
moon add We1chan/moonhid@0.5.2Mooncakes 同时渲染模块和源码包 README。0.5.1 只修正模块 README 后,线上验收仍发现 27 个包文档断链;该版本已标记为历史预发布。0.5.2 将两份 README 的跨页链接统一为明确的 GitHub 地址,避免平台相对路径基址差异。
- 10 个标准范围案例覆盖 Input、Output、Feature、ID、Variable、Array、Null、Constant 和 Buffered Bytes;每个普通元素检查 HID 1.11 §8.4 的四字节跨度约束。
- 13 位普通 Feature 的独立预期为
07 a0 91,并通过 hid-tools 0.12 的独立填入/提取对照。 - 33 位 Raw 单独标为宽松扩展,不计作标准兼容证据。
- JS/native 各验证 10 个标准正例、1 个扩展、7 个反例,以及每个解码元素的全部元数据。
- 本地文档检查拒绝跨页相对链接,核验文件和锚点;线上检查消费两站实际渲染的 href。
入口:
下载 moonhid-inspector-v0.5.2.zip,解压后运行 node scripts/serve-offline.mjs,或 Windows 双击 start-inspector.cmd。需要 Node.js 22+。BUILD.json 记录构建提交,SHA256SUMS.txt 校验下载文件。
离线合成案例验证报告格式与声明范围,不能替代 Output/Feature 实机传输或完整设备认证。
发布后实际验收:两站渲染的 62 个链接全部可访问;新项目从注册表下载 0.5.2,四后端各 9/9;源码四后端各 112/112,发布提交五项 CI、Pages 与发布后公开链接工作流均成功。58 份源码/配置/接口在 LF 归一后与发布提交一致(包为 CRLF,不宣称原始字节 SHA 相同)。离线 ZIP 从 GitHub 重新下载,SHA-256 与 17 份构建文件一致,Node-only 启动、三方向 Buffered Bytes 和普通 Feature 解码通过。
离线 ZIP SHA-256:f2c0ae44d3b07fe10227abf863b0b2e2645d5620d4b60961c016729cb4d31c7d。
MoonHID 0.5.1 — 文档验收未通过的历史版本
本版本的核心安装验收通过,但公开文档修复没有通过线上验收:Mooncakes 同时展示模块根与包内可执行 README,根文档链接已正确,包内文档仍有 27 个错误相对链接。
0.5.1 保留为历史预发布版本;复审请使用已发布的 0.5.2 正式版本、当前 main 的 标准兼容说明 与 完整报告案例。0.5.2 的实际公开页面 62 项链接检查为 0 失败,独立安装四后端各 9/9。
已记录 实际排查过程与结果。核心 API 与 0.5.0 相同;本版本不应被视为公开文档问题已解决的证据。
MoonHID 0.5.0
2026-10-20 文档与复审入口更新:本页保留 0.5.0 发布历史。旧注册表页面的 README 路径问题已在 0.5.2 修复,请使用 0.5.2 正式版本、当前标准兼容说明 和 完整报告案例。
新版已完成实际公开页面 62 项链接检查(0 失败)和注册表全新安装(四后端各 9/9)。33 位 Raw 已明确列为超出 HID 1.11 §8.4 的宽松扩展,不计入标准兼容证据。完整结果见 独立排查记录。
MoonHID 0.5.0 补齐 HID 1.11 已定义的 Buffered Bytes,在 Input、Output、Feature 中按整段固定字节流编解码,并同步 CLI、JSON、字段与 Usage 访问、浏览器显示。
moon add We1chan/moonhid@0.5.0每个 Buffered Bytes Main item 接受一个 Raw(Bytes),解码进入 buffered_values;校验字节对齐与精确长度,不套用整数、Array、Null 或物理量规则。
从 0.4.0 升级时,手工构造 DecodedReport 的调用方需增加 buffered_values(无缓冲区时为 [])。既有函数签名不变,JSON schema 保持 v2,新增数组字段。
离线检查器下载 moonhid-inspector-v0.5.0.zip 并解压,在解压目录运行 node scripts/serve-offline.mjs;Windows 也可双击 start-inspector.cmd。只需 Node.js 22+。SHA256SUMS.txt 用于校验下载文件,BUILD.json 记录发布提交。
Buffered Bytes 证据来自标准语义和离线合成案例,不包含新硬件采集或 Output/Feature 实机发送。
2026-10-16 已发布到 Mooncakes。发布提交为 839aa3961f5e2586a5da637d3a01a4538ed011a1。
验证结果:四后端每后端 112 项源码测试通过;发布提交 CI 的五项任务全部成功。仓库外实际下载 0.5.0,四后端每后端 9 项安装验收通过,57 份模块配置及源码文件与发布提交逐字节一致。离线包重新从 GitHub 下载后,校验值、Node-only 启动和三方向 Buffered Bytes 解码通过;Pages 部署 成功,在线 JS 模块与发布离线包一致。
离线 ZIP SHA-256:
5d739d9b730f045e8d94603294e70085e467c89b5988aba2a8a8d34aede06b73
MoonHID 0.4.0
初审补充:报告编解码的 HID 1.11 标准兼容目标见 hid-compatibility.md,完整报告案例见 report-cases.md,最新版本为 0.5.2。
MoonHID 0.4.0
2026-10-12 已发布到 Mooncakes,并通过独立项目的四后端安装验收。
发布提交为 1f1abfd815e254304c89e25b296b2e13c65ccab7。
main CI 的固定工具链四后端与最新 JS 任务全部成功,
Pages 部署 也已完成。
0.4.0 将 MoonHID 扩展为通用 HID 报告工具库。调用方可以生成描述符、编码 Input / Output / Feature,
按字段或 Usage 读写报告,并将 Logical 值与物理量相互转换。完整范围与成熟库对比见
功能范围 和 README。
本版本内容
DescriptorBuilder链式构建器,支持集合、Usage、范围、Report ID、Physical / Unit 与 Global Push / Pop;
serialize_items保留原始 item 宽度和未知数据。encode_report支持三方向、多 ID、整数和超宽 Raw 值,校验数量、范围与 Null,自动写入 ID 和零填充。find_fields、read_field、write_field、array_selector与位/字节插入接口,可修改一个字段并保留相邻位。list_reports、new_report、按 Usage 按下/释放/列出按键与按钮、读写数值和物理量,参照 Windowshidpi.h接口。- 五种描述符模板:鼠标、键盘(含 LED)、手柄、媒体键、厂商数据。
- native / Node.js CLI 增加
generate、encode,编码支持位置数组与 Usage 对象两种值文件。 - JSON schema 保持 v2;修复最新 MoonBit 的 JSON 转换弃用调用,保留既有数字格式。
网页继续提供描述符分析、解码、lint、JSON 导出与 WebHID Input。
编码、字段修改与生成通过库和 CLI 使用。核心保持纯 MoonBit,设备传输边界见 功能范围。
安装与交付入口
moon add We1chan/moonhid@0.4.0离线 ZIP 包含编译好的 MoonBit JS 模块,只需 Node.js 22+。
Windows 双击 start-inspector.cmd,其他系统运行 node scripts/serve-offline.mjs。
发布验证
源码验收见 编解码与生成验收:四后端每后端 101 项测试,native / JS CLI、
浏览器、固件回归、headless Chrome、hid-tools 0.12 的七份真实描述符与五种模板独立对照通过。
固定工具链为 MoonBit 0.10.14+7d59c7ec9、moon 0.1.20260920,另检查最新工具链。
发布命令完成包解压后的依赖安装与检查,Mooncakes 返回 200 OK。
离线包已通过 Node-only 启动、资源与 MIME、HEAD 和路径限制检查,BUILD.json 记录同一发布提交。
GitHub 上传后重新下载 ZIP 与 SHA256SUMS.txt,校验一致;解压下载包后再次运行相同启动检查通过。
moonhid-inspector-v0.4.0.zip 的 SHA-256:
2be79478c9284a4a0746bd3d0e407323807df720a5507f4fcc7648b354eeb034
独立安装验收
仓库外新建 installcheck/moonhid-040,执行 moon add We1chan/moonhid@0.4.0,
实际从注册表下载版本 0.4.0,没有本地路径覆盖。Windows 11 上的 wasm / wasm-gc / JS / native
无警告检查通过,每后端 6/6 发布验收测试通过。
56 份模块配置、src/ 下全部源码、测试、可执行文档、接口与包配置均与发布工作树逐字节一致,
换行归一化后也与发布提交一致。完整记录 保存文件 SHA-256、
CI 与 Pages 结果,以及离线 ZIP 与 GitHub 上传资产校验值。
独立安装复现
在仓库外创建项目,不配置本地路径覆盖:
moon new --user installcheck --name moonhid-040 moonhid-040
cd moonhid-040
moon add We1chan/moonhid@0.4.0在该项目的 moon.pkg 增加以下导入:
import {
"We1chan/moonhid" @moonhid,
"We1chan/moonhid/examples" @examples,
} for "test"
将 验收测试源码 保存为 verify_test.mbt,执行
moon check --target all --deny-warn 和 moon test verify_test.mbt --target all。
测试覆盖五种模板及 item 往返、按键/LED 字段编辑、三方向和多 ID、Null/物理量、超宽 Raw Feature 与 JSON v2。
MoonHID 0.3.0
MoonHID 0.3.0
2026-10-07 已发布到 Mooncakes,在线检查器与 GitHub Release 均可用。
PR #28 通过五项 CI 后以 merge 合并,
发布提交为 8148a323014bc8a47a906ad576d0093b5f516d13。
main CI 与
Pages 部署 均成功。
本版本增加描述符 lint 核心、JSON v2 lints、CLI lint、网页中文提示和 item 定位。
公开新增 API 为 Lint、LintLevel、lint_descriptor 和 lint_to_json,
其余 v2 字段语义不变;旧 v2 文档缺少 lints 时按空数组处理。
网页提供 Null 状态教学案例和手柄实际 Input 采集入口。
采集页生成的描述符来自浏览器可见字段重建,不是设备原始 USB/BLE 描述符,
不验证原编码、嵌套集合、物理单位或本地元数据。元数据不完整时必须明确选择原始位值模式,
不进行原始 Logical、Array 或 Null 语义验证。
Xbox 蓝牙实测 收录 42 条实际 Input,以及 A 状态、轴两端和回中的回归。
交付入口:
- 在线检查器
- GitHub Release 与离线包
- Mooncakes:
moon add We1chan/moonhid@0.3.0
发布前运行四后端检查、构建与测试,检查公开接口和格式,并运行网页、CLI、
固件示例、外部 hid-tools 及 headless Chrome 验证。PR 合并后以 main 的成功 CI 为发布依据。
版本内容在本文件中记录;实际发布和安装结果以对应 Release、注册表条目及验证记录为准。
稳定 CI 固定 MoonBit 0.10.14+7d59c7ec9,另一个 job 检查最新工具链。
Publish inspector 只在本仓库 main 的 push CI 成功后部署对应提交,也支持手动部署 main。
离线包包含编译好的解析器,只需 Node.js 22+ 运行本地服务,不需要 MoonBit 或 Python。
独立安装验收
仓库外新建 installcheck/moonhid-030,执行 moon add We1chan/moonhid@0.3.0,
确认下载版本为 0.3.0,没有本地路径覆盖。四后端各 3/3 测试通过,
覆盖新增 lint / JSON 公开 API、修正后的 Null 判定,以及 Xbox 实测轴端点。
12 份核心源码、接口及配置与发布工作树逐字节匹配,换行归一化后也与发布提交匹配。
完整记录 包含文件 SHA-256、版本、CI 和离线 ZIP 校验值。
复现:
moon new --user installcheck --name moonhid-030 moonhid-030
cd moonhid-030
moon add We1chan/moonhid@0.3.0在 moon.pkg 增加 "We1chan/moonhid" @moonhid 的 for "test" 导入,
将 验收测试源码 保存为 verify_test.mbt,执行
moon check --target all --deny-warn 和 moon test --target all。