Skip to content

Commit f871abe

Browse files
committed
release: bump version to 0.10.5
本次更新包含大量功能新增、优化与修复: 1. 新增章节标题AI推荐、AI连接测试功能 2. 重构状态管理,拆分多个独立zustand存储 3. 新增移动端全屏适配与优化导航栏 4. 新增校对队列、数据管理、校对设置面板 5. 新增完整单元测试覆盖工具函数 6. 新增Android后台服务与权限配置 7. 新增vitest测试配置与依赖 8. 修复大量状态依赖与类型错误 9. 更新CSP配置与依赖版本 10. 完善CHANGELOG记录
1 parent 70a9bdf commit f871abe

68 files changed

Lines changed: 7877 additions & 9767 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.trae/rules/git-commit-message.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
alwaysApply: true
3+
scene: git_message
4+
---
5+
6+
## Git 提交信息规范
7+
8+
### 格式
9+
10+
```
11+
<type>: <简短描述>
12+
13+
<详细说明(可选)>
14+
```
15+
16+
### 类型(Type)
17+
18+
| 类型 | 说明 |
19+
|------|------|
20+
| `feat` | 新功能 |
21+
| `fix` | Bug 修复 |
22+
| `refactor` | 代码重构 |
23+
| `perf` | 性能优化 |
24+
| `style` | UI 样式调整 |
25+
| `security` | 安全相关 |
26+
| `release` | 版本发布 |
27+
| `chore` | 构建/工具/依赖 |
28+
| `docs` | 文档更新 |
29+
30+
### 语言
31+
32+
- 主体描述使用**中文**
33+
- 保持简洁,不超过 50 字
34+
- 动词使用现在时(如"新增"而非"新增了")
35+
- 不要以句号结尾
36+
37+
### 示例
38+
39+
- `feat: 新增角色音色设计功能`
40+
- `fix: 修复移动端导航栏未全屏显示的问题`
41+
- `refactor: 重构安全存储模块,替换为 AES-GCM 加密`
42+
- `style: 优化校对工具栏布局,统一按钮样式`
43+
- `chore: 更新依赖版本`
44+
- `release: bump version to 0.10.5`

CHANGELOG.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,72 @@
11
# Proof Reader Changelog
22

3+
## v0.10.5 (2026-06-13)
4+
5+
### ✨ 功能更新
6+
7+
**角色音色设计系统**
8+
- 新增角色音色设计条目生成功能,通过人物小传、角色信息自动生成音色设计描述
9+
- 音色设计中包含地域特征、方言特征等信息,提升 TTS 朗读真实感
10+
- AI 分析小说时同步生成角色音色设计字段,无需手动配置
11+
- 导入/导出角色数据同步携带音色设计描述
12+
13+
**移动端全面升级**
14+
- 重构移动端底部导航栏,4个标签页(小说、章节、阅读、剧本)各占全屏
15+
- 新增 `.mobile-fullscreen` 全屏样式,各面板占据 header 与导航栏之间的完整空间
16+
- 小说列表与章节列表在移动端全屏宽度显示(`width: 100%`
17+
- 隐藏侧边栏与内容区域滚动条,视觉更清爽
18+
- 阅读模式底部补白 140px,避免内容被底部工具栏遮挡
19+
- 新增桌面端 `max-width: 1024px` 下底部导航栏适配
20+
21+
**AI 连接测试**
22+
- 新增 AI 连接测试功能,支持自定义测试文本
23+
- 实时显示 API 响应状态与耗时
24+
25+
### 🔧 改进优化
26+
27+
**安全存储重构**
28+
- 用 AES-GCM 加密算法替换旧的 XOR 加密,提升数据存储安全性
29+
- 升级 CSP 配置,增强应用安全性
30+
- 移除泄露的签名密钥,新增密钥忽略规则
31+
32+
**TTS 播放逻辑优化**
33+
- 修复 abort 信号失效问题,确保中断及时响应
34+
- 优化音频元素管理,防止重复播放
35+
- 修复情感朗读生成内容中包含「前文」「后文」等标签的问题
36+
- 优化 AI Prompt 模板,明确输出格式要求
37+
38+
**AI 提示词增强**
39+
- 优化角色分析提示词,确保 AI 输出包含音色设计字段
40+
- 优化阅读模式 TTS 增强提示词,避免上下文内容混入输出
41+
- 优化校对提示词模板,提升检测质量
42+
43+
**GitHub 下载优化**
44+
- 增加下载文件大小限制,防止下载过大文件
45+
- 优化镜像源下载逻辑
46+
47+
**导出功能优化**
48+
- 优化导出提示文案,增加敏感数据安全提醒
49+
- 角色导出数据包含 voiceDesignPrompt 字段
50+
51+
**UI 样式优化**
52+
- 调整校对工具栏布局,优化检测项区域显示
53+
- 优化校对区与阅读区右侧面板宽度
54+
- 修复检测项区域错误的 CSS 样式导致的视觉问题
55+
56+
### 🐛 Bug 修复
57+
58+
- 修复角色音色设计数据导入后未正确显示的问题
59+
- 修复 `useCallback` 依赖项缺失导致 ESLint 警告的问题(多处)
60+
- 修复 `@typescript-eslint/no-explicit-any` 类型错误
61+
- 修复 `react-hooks/immutability` 直接修改 ref 对象的错误
62+
- 修复 `react-hooks/set-state-in-effect` 级联渲染警告
63+
- 修复 `useAppUpdate``installUpdate` 不存在于模块的错误
64+
- 修复 `suggestingChapterIndex` 属性名错误
65+
- 修复 PromptSettingsSection 中 `useConfigStore` 未使用的警告
66+
- 修复 `useTTS``paragraphs` 条件依赖导致 useCallback 变化的性能问题
67+
68+
---
69+
370
## v0.10.1 (2026-06-04)
471

572
### ✨ 功能更新

README.md

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
- 📖 **纯阅读模式** — 沉浸式阅读体验,支持调节字体、背景、行间距、首行缩进、自定义背景图
99
- 👥 **角色分析 & 关系图谱** — AI 自动分析整本小说,提取角色人物小传和关系图谱,支持可视化拖拽展示
1010
- 🎬 **剧本转换** — 一键将小说段落转换为剧本格式,支持自定义改编指令
11-
- 🎙️ **TTS 情感朗读** — AI 自动为对话添加情感/音色标注,支持流式边生成边播放
11+
- 🎙️ **TTS 情感朗读** — AI 自动为对话添加情感/音色标注,支持流式边生成边播放,含角色音色设计
1212
- 📚 **分卷支持** — 自动识别「第X卷」等分卷结构,支持折叠/展开导航
1313
- 🏠 **主页 & 版本检测** — 启动页展示更新日志,自动检测新版本,支持 GitHub 镜像源多平台下载
1414
- 📱 **多端支持** — Windows / macOS / Linux 桌面端 + Android 移动端
1515
- 💾 **本地优先** — 文件存储在本地,数据安全可控
1616
- 🔄 **碎片化处理** — 突破大模型上下文限制,逐段、逐章处理超长文本,适合校对数百万字的网络小说
1717
- 🔎 **全局搜索** — 跨章节搜索小说内容,支持结果定位跳转(Cmd/Ctrl+F)
1818
- 📝 **忽略单词管理** — 支持管理校对时需要跳过的单词(人名、地名、特殊术语)
19+
- 🎭 **角色音色设计** — AI 根据角色小传自动生成音色描述(含地域/方言特征),用于 TTS 情感朗读
20+
- 🧪 **AI 连接测试** — 支持自定义测试文本,实时验证 API 连通性与响应速度
1921

2022
## 功能特性
2123

@@ -91,6 +93,7 @@
9193
### 🎙️ TTS 情感朗读
9294
- **AI 情感/音色标注**:自动为对话添加情感(开心、悲伤、愤怒等)和音色标签,提升 TTS 表现力
9395
- **音色设计模型支持**:支持自定义音色设计,优化语音差异化体验
96+
- **角色音色设计**:AI 根据角色人物小传自动生成音色设计描述,包含地域特征、方言特征等信息
9497
- **流式播放**:支持边生成边播放,音频队列机制实现平滑的连续播放体验
9598
- **段落跳转**:支持上一段/下一段跳转,切换章节时自动重置段落索引
9699
- **播放控制**:支持播放中断和恢复
@@ -99,6 +102,7 @@
99102
### ⚙️ AI 配置
100103
- 支持 OpenAI 兼容接口(OpenAI、DeepSeek、通义千问、Ollama、SiliconFlow、Mimo 等)
101104
- 可配置:API Base URL、API Key、模型名称、自定义请求头
105+
- **AI 连接测试**:支持自定义测试文本,实时验证 API 连通性与响应速度
102106
- API Key 支持显示/隐藏切换
103107
- 配置持久化保存在本地
104108

@@ -139,7 +143,7 @@ novel-proofreader/
139143
│ │ ├── ProofreadPanel.tsx # 右侧校对区
140144
│ │ ├── ProofreadQueuePanel.tsx # 校对任务队列
141145
│ │ ├── TaskPanel.tsx # 剧本转换面板
142-
│ │ ├── ConfigModal.tsx # AI 配置弹窗(含自定义 Prompt)
146+
│ │ ├── ConfigModal.tsx # AI 配置弹窗入口
143147
│ │ ├── CharacterSettings.tsx # 角色管理 & AI 角色分析
144148
│ │ ├── RelationshipGraph.tsx # 角色关系图可视化
145149
│ │ ├── GlobalSearch.tsx # 全局搜索
@@ -150,16 +154,34 @@ novel-proofreader/
150154
│ │ ├── Toast.tsx # Toast 消息提示组件
151155
│ │ ├── Select.tsx # 自定义下拉选择组件
152156
│ │ └── Icons.tsx # Lucide 图标封装
157+
│ │ └── config/ # 配置弹窗子面板
158+
│ │ ├── AITestSection.tsx # AI 连接测试
159+
│ │ ├── APIUsageSection.tsx # API 用量统计
160+
│ │ ├── DataManagementSection.tsx # 数据管理
161+
│ │ ├── PromptSettingsSection.tsx # 自定义 Prompt 配置
162+
│ │ ├── ProofreadSettingsSection.tsx # 校对设置
163+
│ │ └── TTSConfigSection.tsx # TTS 语音配置
153164
│ ├── hooks/
154165
│ │ ├── useFileImport.ts # 文件导入
155166
│ │ ├── useAICheck.ts # AI 校对逻辑
156167
│ │ ├── useScriptTask.ts # 剧本转换逻辑
168+
│ │ ├── useTTS.ts # TTS 情感朗读
169+
│ │ ├── useAppUpdate.ts # 应用更新检测
170+
│ │ ├── useChapterTitleSuggestion.ts # AI 章节名推荐
171+
│ │ ├── useReadingProgress.ts # 阅读进度管理
172+
│ │ ├── useSearch.ts # 全局搜索逻辑
157173
│ │ ├── useMobile.ts # 移动端状态管理
158174
│ │ └── useSwipeGesture.ts # 移动端滑动手势
159175
│ ├── stores/
160-
│ │ ├── appStore.ts # 全局状态(小说、章节、角色、关系图)
176+
│ │ ├── appStore.ts # 全局状态聚合入口
177+
│ │ ├── novelStore.ts # 小说/章节状态
178+
│ │ ├── characterStore.ts # 角色状态
161179
│ │ ├── configStore.ts # AI / TTS / Prompt 配置状态
162-
│ │ └── proofreadStore.ts # 校对结果状态
180+
│ │ ├── aiConfigStore.ts # AI 连接配置
181+
│ │ ├── uiStore.ts # UI 状态(弹窗等)
182+
│ │ ├── proofreadStore.ts # 校对结果状态
183+
│ │ ├── proofreadMetaStore.ts # 校对元数据
184+
│ │ └── appMetaStore.ts # 应用元数据
163185
│ ├── types/
164186
│ │ └── index.ts # TypeScript 类型定义
165187
│ ├── utils/
@@ -171,20 +193,24 @@ novel-proofreader/
171193
│ │ ├── ttsService.ts # TTS 语音合成 & 音频队列
172194
│ │ ├── githubApi.ts # GitHub Release API & 镜像源下载
173195
│ │ ├── logger.ts # 可开关的日志系统
174-
│ │ ├── secureStorage.ts # 安全存储工具
196+
│ │ ├── secureStorage.ts # 安全存储工具(AES-GCM)
175197
│ │ ├── scrollUtils.ts # 滚动工具
176198
│ │ ├── mobile.ts # 移动端判断函数
177199
│ │ ├── typeGuards.ts # 类型守卫
178200
│ │ ├── decodeText.ts # 文本编码检测
179201
│ │ └── urlParams.ts # URL 参数解析
180202
│ ├── App.css # 全局样式(CSS Variables + 组件样式)
181-
│ ├── main.tsx # 入口文件
203+
│ ├── App.tsx # Tauri 入口组件(路由/全局布局)
204+
│ ├── main.tsx # 应用入口文件
182205
│ └── vite-env.d.ts # Vite 类型声明
183206
├── src-tauri/ # Tauri Rust 后端
184207
│ ├── Cargo.toml
185208
│ ├── tauri.conf.json
186209
│ ├── icons/ # 各平台应用图标
187-
│ └── src/lib.rs
210+
│ ├── capabilities/ # 权限配置
211+
│ └── src/
212+
│ ├── lib.rs # Tauri 插件注册与应用入口
213+
│ └── commands.rs # Tauri 命令(TTS、校对等)
188214
├── public/icons/ # Web 图标
189215
├── package.json
190216
├── tsconfig.json

package.json

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
{
22
"name": "proofreader",
33
"private": true,
4-
"version": "0.10.1",
4+
"version": "0.10.5",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",
88
"build": "tsc -b && vite build",
99
"lint": "eslint .",
1010
"preview": "vite preview",
11-
"tauri": "tauri"
11+
"tauri": "tauri",
12+
"test": "vitest run",
13+
"test:watch": "vitest"
1214
},
1315
"dependencies": {
1416
"@tauri-apps/api": "^2.11.0",
1517
"@tauri-apps/plugin-dialog": "^2.7.1",
1618
"@tauri-apps/plugin-fs": "^2.5.1",
1719
"@tauri-apps/plugin-notification": "^2.2.0",
20+
"@tauri-apps/plugin-updater": "^2.10.1",
1821
"lucide-react": "^1.17.0",
1922
"react": "^19.2.6",
2023
"react-dom": "^19.2.6",
@@ -25,6 +28,8 @@
2528
"@eslint/js": "^10.0.1",
2629
"@tailwindcss/vite": "^4.3.0",
2730
"@tauri-apps/cli": "^2.11.2",
31+
"@testing-library/jest-dom": "^6.9.1",
32+
"@testing-library/react": "^16.3.2",
2833
"@types/node": "^25.9.1",
2934
"@types/react": "^19.2.15",
3035
"@types/react-dom": "^19.2.3",
@@ -33,8 +38,10 @@
3338
"eslint-plugin-react-hooks": "^7.1.1",
3439
"eslint-plugin-react-refresh": "^0.5.2",
3540
"globals": "^17.6.0",
41+
"jsdom": "^29.1.1",
3642
"typescript": "~6.0.2",
3743
"typescript-eslint": "^8.60.0",
38-
"vite": "^8.0.14"
44+
"vite": "^8.0.14",
45+
"vitest": "^4.1.8"
3946
}
4047
}

0 commit comments

Comments
 (0)