# Changelog 本文档记录面向使用者和维护者的重要变更。版本号以 `package.json` 为准。 ## 未发布 ## 2026.8.22 - 2026-08-22 ### Added - CRC 工具增加“Hex 输入 / 文件”模式切换;内联 Hex 支持连续字节、空白、中英文逗号和逐段可选 `0x` 前缀,并在独立 Web Worker 中完成受限解析与计算。 - CRC 标准预设由 6 种扩充为 16 种,增加 MAXIM-DOW、SAE-J1850、DNP、IBM-SDLC、KERMIT、USB、ISCSI、MPEG-2、ECMA-182 和 XZ,并补齐可直接选择的 CRC-64 预设。 ### Changed - CRC 预设按位宽分组,并采用规范名称及常用别名;原 CCITT-FALSE 显示为 IBM-3740(CCITT-FALSE),原 CRC-8 显示为 SMBUS(CRC-8),同时明确区分 KERMIT(CCITT)。 ### Fixed - 共享 Hex 字节解析器现在拒绝连续中英文逗号形成的空片段,避免输入格式错误被静默忽略。 ### Security - 将开发工具链中的传递依赖 `nanoid` 更新到 `3.3.18`,消除自定义生成器在长度为零时可能无限循环的已知漏洞。 ## 0.3.0 - 2026-08-13 ### Added - 增加 RSA 签名验证工具,支持 PKCS#1 v1.5、RSA-PSS、SHA-256/384/512、SPKI/PKCS#1/X.509/N-E 公钥,以及 UTF-8、Hex、原始文件和 Intel HEX 有效数据。 - RSA 签名验证的 Intel HEX 输入增加 Block 校验头模式;每个 block 前加入 8 字节二进制起始地址/数据长度,支持 Big Endian(默认)和 Little Endian。 - RSA N/E 输入中的指数 E 按无符号 Hex 整数解析;`10001` 等奇数位输入会在左侧补零并正确识别为十进制 65537。 - 验证结果展示有效/无效状态、算法、数据来源与长度、数据 Hash、签名长度、RSA 公钥规格、SPKI SHA-256 指纹和实际密码学实现;证书仅提取公钥及展示元数据,不验证证书链。 ### Changed - RSA 签名验证工具默认选择 RSA-PSS;Hash 仍默认使用 SHA-256,Salt Length 默认取 Hash 长度与当前模数编码上限中的较小值。 - CRC 与固件 Hash 的已选文件摘要现在支持直接拖入新文件,也保留“更换文件”和“清空”操作;RSA 签名验证的文件模式使用同一交互。 - 三个工具共用文件选择/摘要控件和事务式 Worker 生命周期管理,同时保持各自独立的算法、Worker 协议与页面状态。 ### Fixed - 更换文件时先在独立候选 Worker 中完成解析;无效文件、解析错误或候选 Worker 异常不会再清除当前文件和已有计算结果。 ### Verification - 20 个测试文件、152 条 Vitest 测试通过;新增 RSA PKCS#1 v1.5/PSS 三种 Hash、PEM/证书/N-E 公钥、奇数位 E 左侧补零、签名编码、PSS 盐长、1024 位 SHA-512 边界及自动盐长竞态、空消息、篡改签名、原始文件/Intel HEX 有效数据、大小端 Block 校验头验签语义、受限 Hex/UTF-8 输入及文件 Worker 生命周期覆盖。 - Vue/TypeScript 类型检查、Vite 生产构建和 Git 差异规范检查通过。 - CRC、固件 Hash 与 RSA 签名验证在桌面、中间宽度和 390×844 移动端视口下完成真实浏览器回归;默认 RSA-PSS/SHA-256/Salt 32、N/E 输入、PSS 1024 位 SHA-512/Salt 62 验签、文件选择与替换均正常,无横向溢出或应用控制台错误。 ## 0.2.1 - 2026-08-10 ### Fixed - Base64 解码现在拒绝 `TQ=`、`TWE==` 等长度不完整的显式填充,同时继续接受规范的无填充 Base64 URL 输入。 - XML 校验改为识别浏览器专用解析错误命名空间,合法的 `` 用户元素不再被误判为解析失败。 - favicon、Web App Manifest 和其他稳定文件名资源不再使用一年不可变缓存;只有带构建指纹的 `dist/assets/` 文件使用长期 `immutable` 缓存。 ### Security - 带 Fetch Metadata 的导航配置写入现在只接受 `Sec-Fetch-Site: same-origin`,同时拦截 `same-site` 与 `cross-site` 浏览器跨源请求。无该请求头的非浏览器客户端仍受支持,因此隐藏设置路径仍不构成身份认证。 ### Verification - 120 条 Vitest 测试通过,新增 Base64 显式填充、XML `parsererror` 合法元素、静态资源缓存分类和 same-site 跨源写入回归覆盖。 - Vue/TypeScript 类型检查、Vite 生产构建、Git 差异规范检查和 Windows PowerShell 启动脚本语法检查通过。 - 11 个页面在 1440×900、900×900 和 390×844 三种视口完成真实浏览器回归;深浅主题无横向溢出或控制台警告/错误。 ## 0.2.0 - 2026-08-09 ### Added - AES-CMAC 增加 AES-192 和 AES-256 密钥长度,保留 AES-128 默认值,并增加 NIST SP 800-38B 已知向量。 - 服务端为每个响应生成独立的 128 位 CSP nonce,使 Cloudflare JavaScript Detections 无需 `'unsafe-inline'` 便可与严格 CSP 兼容。 ### Changed - 安全随机数默认长度从 8 字节调整为 16 字节,并集中管理默认值和资源上下限。 - CRC 自定义参数和结果表头改为中文在前、英文在后的双语标签;`RefIn`/`RefOut` 明确为输入/输出位反转,宽屏参数区不再压缩长标签换行。 - CRC 与固件 Hash 的文件上传框统一悬浮、拖拽及键盘聚焦状态,并增加与后续控件的固定间距。 - RSA 仅在 Web Crypto 不可用或失败时动态加载 `node-forge` 回退,降低现代 HTTPS 浏览器首次打开 RSA 工具时的下载量。 - UTF-8 / Hex 的工具 ID、组件、字段前缀和固定路径统一为 `utf8-hex` 与 `/tools/utf8-hex`;旧导航配置中的 `ascii-hex` 会原位迁移,保留分类和排序。 - 侧边栏移除无功能编号,品牌副标题改为“本地工具箱”,共享控件统一键盘焦点环和禁用态。 - 工具管理路径调整为 `/tools/setting`;所有表单字段补充唯一 `id` 和稳定 `name`。 ### Security - 随机数增加最小/最大长度、安全随机源缺失及随机源异常的失败关闭测试,不使用普通伪随机回退。 - CSP 仍禁止任意内联脚本和第三方脚本;Cloudflare Web Analytics 保持为部署层可选功能,不加入应用代码。 - RSA 密钥生成增加异步请求版本保护,组件卸载或状态失效后,旧结果不会覆盖当前页面状态。 ### Verification - 116 条 Vitest 测试通过,覆盖 AES-128/192/256 标准向量、安全随机源失败关闭、RSA 动态回退、CSP nonce 强度及唯一性、固定工具路径、导航 ID 迁移、默认分类顺序、Intel HEX 有效数据分配上限、并发导航写入、CRC 参数防御和表单字段标识约束。 - Vue/TypeScript 类型检查、Vite 生产构建和 Windows PowerShell 启动脚本语法检查通过。 - 11 个页面在 1440×900、900×900 和 390×844 三种视口完成真实浏览器检查;深浅主题无横向溢出或控制台警告/错误。 ## 0.1.0 - 2026-08-09 ### Added - 增加统一页面介绍,不列出具体工具或生成路由专属内容。 ### Documentation - 明确标准 HTML description 和同文的 `og:description` 分享兼容性契约,不设置自定义分享图、其他 Open Graph、平台抓取器、平台专用字段或包含用户数据的动态内容。 ### Verification - 87 条 Vitest 测试通过,页面元数据测试覆盖标准 description、唯一允许的 `og:description`、Manifest 描述、favicon 回退入口和无自定义分享图约束,并增加发布版本跨文件一致性检查。 - Vue/TypeScript 类型检查和生产构建通过。 ## 0.0.6 - 2026-08-08 ### Added - 增加与侧边栏品牌一致的浏览器图标体系:SVG、内含 16/32/48 像素帧的 ICO、180 像素 Apple 图标、192/512 像素 Web App 图标、512 像素 maskable 图标及 Web App Manifest。 - 增加统一的 Windows PowerShell 启动与更新脚本,提供固定的生产配置、Git 快进更新、锁定依赖重装和构建后启动流程。 - 增加 Windows Server 非 Docker 部署、启动和更新说明。 - 增加独立的固件 Hash 工具,计算 Intel HEX 总有效数据和各 block 的 SHA-256 / SHA-512。 - 增加 8 字节二进制 Block 校验头模式,头部包含 32 位绝对起始地址和 32 位数据长度,默认 Big Endian,并支持 Little Endian。 ### Fixed - 修复 Docker 构建未复制 `public/` 资源的问题,并为 `.webmanifest` 增加标准响应类型。 - Intel HEX 解析器增加全部非空记录上限、显式 uint32 地址空间检查和无符号扩展地址运算,拒绝越过 `0xFFFFFFFF` 的数据。 - 固件 Hash 在普通 HTTP 局域网访问时增加本地 SHA-256/SHA-512 回退,不再依赖 `SubtleCrypto` 必须可用。 - 生产服务在监听端口前检查 `dist/index.html`,缺少构建产物时立即给出构建命令,不再启动后按请求重复返回 500。 - 修复固件 Hash 和安全随机数模式选择框宽度过大,以及 801-1040 像素中间宽度下 CRC 参数区可能横向溢出的问题。 - 修复 Windows 脚本无参数运行时直接启动旧 `dist`、容易被误认为已完成更新的问题;现在交互启动会明确选择启动、更新并启动、仅更新或退出。 ### Documentation - 明确应用图标资源契约,并记录不启用 Service Worker、离线缓存和冗余旧平台图标的边界。 - 补充 `dist/index.html` 缺失、Node 进程未重启、浏览器页面未刷新和前台 PowerShell 退出等启动故障排查说明。 - 将 Node、Docker Compose、容器健康检查、Windows 脚本和示例配置的生产默认端口统一为 `9000`。 - 增加通用 `README.md` 入口并强化 `AGENTS.md` 新会话接手流程,便于其他 AI 在不依赖历史对话的情况下继续维护。 - 完善英文项目入口与中文权威文档,补充核心工具行为、异步竞态、版本文件、Windows 单 EXE 评估和发布边界。 - 扩充 `AGENTS.md` 的工具扩展、Intel HEX 安全、响应式 UI、部署发布和 Git 操作约束。 ### Verification - 85 条 Vitest 测试通过,新增标准 SHA 向量、Block 头大小端、地址绑定、最高 uint32 地址、地址溢出、控制记录边界、无 Web Crypto 回退、生产构建预检、部署配置一致性和应用图标完整性覆盖。 - Vue/TypeScript 类型检查和生产构建通过。 ## 0.0.5 - 2026-08-07 ### Changed - CRC 文件读取、Intel HEX 解析和 CRC 计算统一放入独立 Web Worker,页面只保留文件摘要和结果。 - 设置页排序操作提取为可测试的纯函数,并增加加载就绪状态。 - 工具目录、默认导航、图标注册和懒加载组件增加运行时及自动化一致性检查。 - Node.js 最低版本明确为 22.12.0,增加 `typecheck` 和统一的 `npm run check` 门禁。 - 补全生产依赖版本与许可证说明。 ### Fixed - 修复 CRC 更换文件、重新计算及旧 Worker 响应覆盖当前状态的竞态问题。 - Intel HEX 增加文件、记录数和 block 数限制,并降低记录合并时的内存占用。 - PNG 在浏览器解码前校验签名、IHDR、文件大小、尺寸和总像素;清空或更换图片后忽略旧转换结果。 - ICO 在创建 Canvas 前校验并规范化尺寸。 - 修复设置页首次加载时保存按钮可能被错误启用的问题。 - 修复缺失 JS/CSS 被错误返回 `index.html` 和 200 状态的问题。 - 修复导航原子写入失败后可能残留临时文件的问题。 - Base64 解码拒绝非规范尾部填充位。 - 大型 JSON/XML 结果在语法 token 过多时降级为纯文本,避免创建过量 DOM 节点。 - 移动端菜单增加正确的展开状态、动态标签和路由切换自动关闭行为。 ### Verification - 49 条 Vitest 测试通过,覆盖算法、边界、目录一致性、排序逻辑和真实 HTTP 服务。 - Vue/TypeScript 类型检查和 Vite 生产构建通过。 - npm 依赖审计结果为 0 个已知漏洞。 - 桌面端和 390 x 844 移动端完成浏览器验收,9 个工具路由无横向溢出或控制台错误。