Files

175 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 校验改为识别浏览器专用解析错误命名空间,合法的 `<parsererror>` 用户元素不再被误判为解析失败。
- 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 个工具路由无横向溢出或控制台错误。