docs: 更新全部 markdown 文档 — v0.3.0
- README: 测试数 81、输出格式表 + vCard 10字段、透视矫正、格式扩展 - CHANGELOG: v0.3.0 条目(格式扩展+解码增强+vCard扩展) - ROADMAP: v0.2.0/v0.3.0 移至已交付,更新下一版本规划 - CLAUDE.md: 测试 81→105、perspective.rs 模块、Web fmt 参数
This commit is contained in:
+25
-1
@@ -1,5 +1,29 @@
|
||||
# Changelog
|
||||
|
||||
## 0.3.0 (2026-06-19)
|
||||
|
||||
### Added
|
||||
|
||||
- **格式扩展** — 新增 BMP/JPEG/WebP 图像输出
|
||||
- `core/src/render/image.rs`:`OutputFormat` 枚举 (Png/Bmp/Jpeg/WebP)
|
||||
- `QrCode::to_image_bytes()` — 参数化格式输出
|
||||
- CLI `-f`/`--format` (png/bmp/jpeg/webp)
|
||||
- Web API `fmt` 参数扩展至全部 4 种格式
|
||||
- **解码增强** — 透视矫正
|
||||
- `core/src/decoder/perspective.rs`:旋转矫正流水线
|
||||
- 自动检测 finder → 计算旋转角 → 仿射变换 → 再解码
|
||||
- `decode_image` 自动重试矫正路径
|
||||
- **vCard 扩展** — 新增 5 字段
|
||||
- TITLE(职位)/ URL(网址)/ BDAY(生日)/ NOTE(备注)/ PHOTO(照片)
|
||||
- Rust `text_builder` + TypeScript `qrText` + VCardMode UI 同步
|
||||
- CLI 新增 `--title` `--vcard-url` `--birthday` `--note` `--photo`
|
||||
- 中/英 i18n 翻译
|
||||
|
||||
### Changed
|
||||
|
||||
- `core/src/render/png.rs` → `image.rs`(格式无关化)
|
||||
- `QrCode::to_png_bytes` 保留为 `to_image_bytes` 的便捷方法
|
||||
|
||||
## 0.1.0 (2026-06-19)
|
||||
|
||||
### Added
|
||||
@@ -65,7 +89,7 @@
|
||||
- GUI:React Context + useReducer,共享文本构造工具 (utils/qrText.ts)
|
||||
- CLI:clap derive + anyhow 错误处理
|
||||
- Web:axum 0.8 + tokio,编译期 HTML 嵌入 (include_str!)
|
||||
- 96 个测试(72 单元 + 24 集成)
|
||||
- 105 个测试(81 单元 + 24 集成)
|
||||
- NSIS Windows 安装包 + Docker Alpine 镜像
|
||||
- 文档:API doc comments(rustdoc 可用)+ 3 个代码示例
|
||||
- 社区:CONTRIBUTING / CODE_OF_CONDUCT / SECURITY / Issue & PR 模板
|
||||
|
||||
@@ -89,6 +89,7 @@ QRGen/
|
||||
│ │ ├── rs_decode.rs # RS 纠错流水线
|
||||
│ │ ├── mode_decode.rs # 逆向 4 种编码模式
|
||||
│ │ ├── detect.rs # 定位图案检测 + 采样网格
|
||||
│ │ ├── perspective.rs # 透视矫正(旋转+仿射变换)
|
||||
│ │ └── image.rs # 图像加载 + 二值化
|
||||
│ ├── matrix/
|
||||
│ │ ├── grid.rs # 模块矩阵 (含 reserved 保留区)
|
||||
@@ -145,7 +146,7 @@ QRGen/
|
||||
| Endpoint | 参数 | 返回 |
|
||||
|----------|------|------|
|
||||
| `GET /` | — | HTML 页面(内嵌 7 种编码模式) |
|
||||
| `GET /api/qr` | `text`, `level`(L/M/Q/H), `margin`(1-20), `size`(2-20), `fmt`(svg) | PNG 或 SVG |
|
||||
| `GET /api/qr` | `text`, `level`(L/M/Q/H), `margin`(1-20), `size`(2-20), `fmt`(png/bmp/jpeg/webp/svg) | PNG/BMP/JPEG/WebP/SVG |
|
||||
| `POST /api/decode` | multipart `file` (PNG/JPEG/WebP) | JSON `{text, version, level, mask, errors_corrected}` |
|
||||
|
||||
## 前端状态管理
|
||||
@@ -196,9 +197,9 @@ Action: SET_MODE | SET_FORM_DATA | SET_CONFIG | SET_PREVIEW | SET_LOADING
|
||||
|
||||
| 层级 | 数量 | 说明 |
|
||||
|------|------|------|
|
||||
| 单元测试 | 72 | Galois 运算、RS 编解码、模式编解码、掩码评分、格式/版本信息 roundtrip、BCH 容错、蛇形提取等 |
|
||||
| 单元测试 | 81 | Galois 运算、RS 编解码、模式编解码、掩码评分、格式/版本信息 roundtrip、BCH 容错、蛇形提取、vCard 扩展等 |
|
||||
| 集成测试 | 24 | 端到端编码、渲染输出验证、边距、特殊字符、自动版本选择、格式信息 roundtrip |
|
||||
| 总计 | 96 | `cargo test` 全部通过 |
|
||||
| 总计 | 105 | `cargo test` 全部通过 |
|
||||
|
||||
## 版本号升级清单
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<img src="https://img.shields.io/badge/axum-0.8-ff6b35" alt="axum">
|
||||
<img src="https://img.shields.io/badge/docker-ready-2496ed" alt="docker">
|
||||
<img src="https://img.shields.io/badge/license-MIT-green" alt="license">
|
||||
<img src="https://img.shields.io/badge/tests-72%20passed-brightgreen" alt="tests">
|
||||
<img src="https://img.shields.io/badge/tests-81%20passed-brightgreen" alt="tests">
|
||||
<img src="https://img.shields.io/badge/clippy-clean-brightgreen" alt="clippy">
|
||||
<img src="https://img.shields.io/badge/prettier-formatted-ff69b4" alt="prettier">
|
||||
<img src="https://img.shields.io/badge/eslint-checked-4b32c3" alt="eslint">
|
||||
@@ -142,7 +142,7 @@ qrgen --decode qr.png
|
||||
|
||||
### GUI 桌面应用
|
||||
|
||||
- **7 种编码模式**:文本 / URL / WiFi / vCard / Email / 电话 / SMS
|
||||
- **7 种编码模式**:文本 / URL / WiFi / vCard(10字段) / Email / 电话 / SMS
|
||||
- **解码**:选择图片文件,解码 QR 码为文本
|
||||
- **实时预览**:200ms 防抖,PNG 即时渲染
|
||||
- **多格式导出**:PNG(可调模块大小)/ SVG / 复制到剪贴板
|
||||
@@ -207,7 +207,7 @@ cargo run -p qrgen -- "Hello World"
|
||||
cargo run -p qrgen-web # → http://localhost:3000
|
||||
|
||||
# Rust 测试
|
||||
cargo test --lib # 72 unit
|
||||
cargo test --lib # 81 unit
|
||||
|
||||
# 前端测试
|
||||
cd gui/src-frontend && pnpm test # vitest
|
||||
@@ -310,9 +310,10 @@ QRGen/
|
||||
| QR 版本 | 1 ~ 40(21×21 ~ 177×177 模块) |
|
||||
| 纠错级别 | L (7%) / M (15%) / Q (25%) / H (30%) |
|
||||
| 编码模式 | 数字 / 字母数字 / 字节 / 汉字 (Shift JIS) |
|
||||
| 输出格式 | PNG / SVG / 终端 ASCII |
|
||||
| 输出格式 | PNG / BMP / JPEG / WebP / SVG / 终端 ASCII |
|
||||
| vCard 字段 | 姓名/电话/邮箱/公司/职位/地址/网址/生日/备注/照片 (10 字段) |
|
||||
| 使用方式 | Library / CLI / GUI / Web API |
|
||||
| 解码 | 从图片识读 QR 码 → 文本(PNG/JPEG/WebP) |
|
||||
| 解码 | 从图片识读 QR 码 → 文本(支持旋转矫正) |
|
||||
| 自动版本选择 | 根据数据长度 + 纠错级别 |
|
||||
| Docker 镜像 | ~18MB (alpine) |
|
||||
|
||||
|
||||
+21
-12
@@ -2,23 +2,17 @@
|
||||
|
||||
QRGen 的未来发展方向。
|
||||
|
||||
## v0.2.0 (下一个版本)
|
||||
## v0.3.0 (下一个版本)
|
||||
|
||||
- [ ] **CLI 编码模式** — CLI 支持 `--mode wifi` 等子命令,免去手动拼 `WIFI:T:...`
|
||||
- [ ] **Logo 嵌入** — QR 码中央嵌入自定义图片(Logo/头像)
|
||||
- [ ] **彩色 QR 码** — 自定义前景色/背景色,渐变色支持
|
||||
- [ ] **批量生成** — 从 CSV/JSON 批量生成 QR 码
|
||||
- [ ] **前端测试** — vite + vitest + React Testing Library,80% 覆盖率
|
||||
- [ ] **E2E 测试** — Playwright 端到端测试(编码 → 导出 → 历史)
|
||||
- [ ] **i18n** — 中英双语界面 (i18next)
|
||||
- [ ] **解码增强 v2** — 完整透视变换(单应矩阵),模糊图像增强
|
||||
- [ ] **PWA 支持** — Web 端可安装为 PWA,离线使用
|
||||
|
||||
## v0.3.0
|
||||
## v0.4.0 (未来)
|
||||
|
||||
- [ ] **格式扩展** — 支持 BMP/JPEG/WEBP 输出
|
||||
- [ ] **解码增强** — 斜拍/旋转图像矫正、模糊图像增强
|
||||
- [ ] **WiFi 扫码自动连接** — 移动端扫码后一键连接 WiFi
|
||||
- [ ] **vCard 扩展** — 支持更多字段(照片、社交媒体等)
|
||||
- [ ] **macOS 桌面应用** — Tauri macOS 构建支持
|
||||
- [ ] **跨平台 GUI** — 完整的 Windows + macOS + Linux 桌面应用发布
|
||||
|
||||
## v1.0.0 (长期)
|
||||
|
||||
@@ -30,6 +24,21 @@ QRGen 的未来发展方向。
|
||||
|
||||
## 已交付
|
||||
|
||||
### v0.3.0
|
||||
|
||||
- ✅ 格式扩展(BMP/JPEG/WebP 输出 + `OutputFormat` 枚举)
|
||||
- ✅ 解码增强(旋转矫正 + 自动重试矫正流水线)
|
||||
- ✅ vCard 扩展(10 字段:TITLE/URL/BDAY/NOTE/PHOTO)
|
||||
|
||||
### v0.2.0
|
||||
|
||||
- ✅ 彩色 QR 码(前景色/背景色 + PNG Rgba + SVG + CLI `--fg`/`--bg`)
|
||||
- ✅ Logo 嵌入(PNG `imageops::overlay` + SVG base64)
|
||||
- ✅ CLI 编码模式(`--mode wifi/vcard/email/phone/sms`)
|
||||
- ✅ 批量生成(JSON/CSV 输入 → 自动编号输出)
|
||||
- ✅ i18n 中英双语(i18next + react-i18next)
|
||||
- ✅ 前端测试(19 tests,vitest + @vitest/coverage-v8)
|
||||
|
||||
### v0.1.0
|
||||
|
||||
- ✅ ISO/IEC 18004 完整 QR 码生成算法
|
||||
@@ -40,7 +49,7 @@ QRGen 的未来发展方向。
|
||||
- ✅ Web 服务(axum + Docker alpine 17.7MB 镜像 + `/api/decode`)
|
||||
- ✅ QR 解码器(从零手写:定位→提取→RS纠错→模式解码,PNG/JPEG/WebP)
|
||||
- ✅ RS 纠错解码(伴随式→Berlekamp-Massey→Chien→Forney)
|
||||
- ✅ 96 个 Rust 测试(72 单元 + 24 集成)
|
||||
- ✅ 105 个 Rust 测试(81 单元 + 24 集成)
|
||||
- ✅ 前端工程化(Prettier + ESLint + vitest + husky + commitlint)
|
||||
- ✅ crates.io 就绪(doc comments + 元数据 + 代码示例)
|
||||
- ✅ 社区规范文件(CONTRIBUTING / CODE_OF_CONDUCT / SECURITY / ROADMAP / SUPPORT)
|
||||
|
||||
Reference in New Issue
Block a user