角色音色设计系统
- 新增角色音色设计条目生成功能,通过人物小传、角色信息自动生成音色设计描述
- 音色设计中包含地域特征、方言特征等信息,提升 TTS 朗读真实感
- AI 分析小说时同步生成角色音色设计字段,无需手动配置
- 导入/导出角色数据同步携带音色设计描述
移动端全面升级
- 重构移动端底部导航栏,4个标签页(小说、章节、阅读、剧本)各占全屏
- 新增
.mobile-fullscreen全屏样式,各面板占据 header 与导航栏之间的完整空间 - 小说列表与章节列表在移动端全屏宽度显示(
width: 100%) - 隐藏侧边栏与内容区域滚动条,视觉更清爽
- 阅读模式底部补白 140px,避免内容被底部工具栏遮挡
- 新增桌面端
max-width: 1024px下底部导航栏适配
AI 连接测试
- 新增 AI 连接测试功能,支持自定义测试文本
- 实时显示 API 响应状态与耗时
安全存储重构
- 用 AES-GCM 加密算法替换旧的 XOR 加密,提升数据存储安全性
- 升级 CSP 配置,增强应用安全性
- 移除泄露的签名密钥,新增密钥忽略规则
TTS 播放逻辑优化
- 修复 abort 信号失效问题,确保中断及时响应
- 优化音频元素管理,防止重复播放
- 修复情感朗读生成内容中包含「前文」「后文」等标签的问题
- 优化 AI Prompt 模板,明确输出格式要求
AI 提示词增强
- 优化角色分析提示词,确保 AI 输出包含音色设计字段
- 优化阅读模式 TTS 增强提示词,避免上下文内容混入输出
- 优化校对提示词模板,提升检测质量
GitHub 下载优化
- 增加下载文件大小限制,防止下载过大文件
- 优化镜像源下载逻辑
导出功能优化
- 优化导出提示文案,增加敏感数据安全提醒
- 角色导出数据包含 voiceDesignPrompt 字段
UI 样式优化
- 调整校对工具栏布局,优化检测项区域显示
- 优化校对区与阅读区右侧面板宽度
- 修复检测项区域错误的 CSS 样式导致的视觉问题
- 修复角色音色设计数据导入后未正确显示的问题
- 修复
useCallback依赖项缺失导致 ESLint 警告的问题(多处) - 修复
@typescript-eslint/no-explicit-any类型错误 - 修复
react-hooks/immutability直接修改 ref 对象的错误 - 修复
react-hooks/set-state-in-effect级联渲染警告 - 修复
useAppUpdate中installUpdate不存在于模块的错误 - 修复
suggestingChapterIndex属性名错误 - 修复 PromptSettingsSection 中
useConfigStore未使用的警告 - 修复
useTTS中paragraphs条件依赖导致 useCallback 变化的性能问题
AI模型优化
- 优化模型选择界面,提供更清晰的模型分类
错误提示重构
- 替换alert为全局Toast通知,统一错误处理流程
- 新增Toast组件,支持成功、错误、警告、信息四种提示类型
角色系统增强
- 新增旁白角色类型,扩展关系枚举类型
- 新增角色重新分析功能,支持更新角色信息
章节识别优化
- 完善正则匹配规则,支持更多格式的章节标题
- 优化分卷小说识别逻辑,提升章节分割准确性
移动端体验优化
- 重构移动端导航按钮,优化下拉框布局
- 优化关系图缩放限制,改善移动端交互
TTS服务升级
- 支持音色设计模型,优化音频队列管理
- 改进音色配置逻辑,支持更灵活的语音设置
工具库完善
- 新增安全存储工具,提升数据存储安全性
- 新增类型守卫工具,增强类型安全性
- 新增统一错误处理工具,规范错误处理流程
配置扩展
- 新增校对配置项,扩展提示词模板
- 优化AI提示词模板,提升生成质量
- 改进角色分析提示词,提高识别准确率
配置存储完善
- 完善配置存储逻辑,提升数据持久化可靠性
- 优化角色关系同步逻辑,确保数据一致性
性能优化
- 优化文本提取算法,提升处理速度
- 优化高频词检测性能,降低内存占用
AI章节名推荐
- 新增AI章节名自动生成功能,支持多面板调用
- 新增
classmate同学关系类型及对应展示 - 扩展关系类型定义,完善界面展示逻辑
下载与版本检测
- 重构GitHub下载与API请求逻辑,添加镜像源选择
- 新增版本检测与更新提示,自动检测新版本
- 优化下载体验与错误处理
样式完善
- 完善全局样式与类型定义
- 优化玻璃卡片、模态框等基础组件视觉效果
移动端适配
- 新增移动端判断工具函数和
useMobile状态 Hook - 重构全局 CSS,抽离通用按钮、玻璃面板等基础样式
- 替换多处硬编码类名,统一使用新的通用样式类
- 移除 App.tsx 中重复的移动端检测逻辑
样式系统整理
- 抽离通用玻璃卡片、模态框、按钮基础样式为通用类
- 删除冗余的重复样式定义,统一项目 UI 组件样式规范
- 删除废弃的
styles.css和index.css文件 - 重构 ReaderPanel 搜索按钮类名,统一使用
btn样式
组件优化
- 添加全局错误边界组件并接入主应用
- 重构 Select 组件为函数式写法并使用内置图标
- 统一 CharacterSettings 弹窗的 UI 结构,使用统一的
config-*类名 - 整理 App.css 代码,合并重复样式
- 修复部分弹窗的交互细节和样式细节
- 修复
promptConfig依赖项缺失问题 - 修复隐藏已校对章节设置按钮样式问题
小说管理增强
- 新增删除小说前的二次确认弹窗,防止误操作导致数据丢失
分卷小说支持
- 新增分卷小说章节分割识别,支持"第X卷"等卷名格式
- 章节列表新增分卷折叠展示结构,点击卷名可展开/折叠章节
- 无分卷小说直接以章节列表形式展示,简化导航
角色分析功能
- 新增角色分析功能及相关 API
- 支持从小说文本中自动检测角色(高频词汇分析、共现网络增强、别名归并)
- 支持角色关系图可视化展示
下载体验优化
- 新增 GitHub 镜像源下载支持,优化下载体验
- 优化移动端初始页面和下载按钮交互
章节分割修复
- 修复章节标题后无实际名称时错误捕获下一行段落的问题
- 问题原因:
\s包含换行符,导致正则匹配跨越行边界 - 修复方案:将
\s+改为[ \t]+,仅匹配空格和制表符,不匹配换行符
UI 样式与交互修复
- 修复多处 UI 样式和交互细节问题
错误处理增强
- 新增 timeout 错误类型支持,完善网络请求错误处理
日志系统统一
- 所有
console.log替换为统一的logger工具 - 日志输出通过
AIConfig.enableLogging控制开关 - 根据日志类型自动选择对应的 logger 方法(file、debug、info、warn、error、proofread、search、tts、ui)
移动端体验优化
- 优化移动端初始页面布局和下载体验
主页页面
- 新增主页页面,支持显示更新日志和多平台下载
自定义提示词配置
- 新增自定义系统提示词配置功能,支持校对、剧本生成、TTS增强等场景
- 重构部分逻辑移除默认 prompt 硬编码
- 新增 GitHub Release 获取工具类
TTS 队列优化
- 优化 TTS 音频队列,添加索引校验避免播放过期音频
UI 优化
- 更新 lucide-react 到 v1.17.0 并新增多个图标
- 调整网页标题增加副标题
TypeScript 类型检查修复
- 修复
App.tsx中params.bookId可能为 undefined 的类型错误 - 修复方案:将
params.bookId保存到局部常量,使 TypeScript 能够正确收窄类型
关系图聚焦功能
- 新增角色筛选下拉框,支持聚焦特定角色的关系网络
- 聚焦模式下视图自动缩放至相关节点范围
- 优化关系图 viewBox 计算,仅基于可见节点计算画布区域
角色导入/导出增强
- 导出数据新增 order(排序顺序)、ignoredWords(忽略单词)、proofreadProgress(校对进度)、novelCategory(小说分类)、ignoredCharacterNames(忽略角色名)等字段
- 修复关系导入逻辑,避免重复添加关系数据
角色排序支持
- CharacterInfo 接口新增 order 字段,支持自定义角色排序
TTS 功能增强
- 情感朗读状态同步至全局 Store,供校对面板使用
- 情感朗读新增上一段/下一段跳转功能
- 切换章节时自动重置当前段落索引
忽略角色名功能
- 新增忽略角色名管理(addIgnoredCharacterName、setIgnoredCharacterNames)
- 支持在导入/导出时携带忽略角色名数据
隐藏已校对章节设置
- 新增 hideProofread 全局设置项
时间格式化函数升级
formatDateTime函数升级为带秒的完整时间格式(YYYY-MM-DD HH:mm:ss)
移动端校对面板优化
- 移除收起/展开按钮,校对面板始终显示
数据导出格式优化
- 导出数据中的时间字段改为格式化字符串而非时间戳
角色关系图功能
- 新增
CharacterRole枚举,定义角色类型(男主、女主、反派、男配、女配、导师、对手等) - 新增
RelationType枚举,定义人物关系类型(夫妻、父子、恋人、朋友、竞争对手等) - 新增
CharacterRelationship接口,支持存储角色之间的关系数据 - 角色设置组件增强,支持管理角色关系和关系图
- 新增关系图节点位置持久化功能
Token 使用量显示样式优化
- Token 使用量统计中括号内的详细数字现以小两节的字号和灰色字体显示
- 便于用户快速识别主要数值的同时,不会被冗长的详细数字干扰阅读
格式化工具升级
formatters.ts升级为formatters.tsx,支持返回 JSX 元素- 为
formatLargeNumber函数添加样式化输出支持
小说导入安卓端存储问题修复
- 修复导入新小说时无法在
novels目录下保存副本的问题 - 问题根因:
saveNovelToStorage、loadNovelContent、loadNovelsFromStorage、deleteNovelFromStorage函数在 Tauri 存储失败时静默回退到 localStorage,导致文件未正确保存到安卓文件系统 - 修复方案:移除静默回退逻辑,当 Tauri 存储失败时正确返回错误状态,确保问题能被及时发现
角色设置导出功能优化
- 优化
saveCharacterConfigToStorage函数,优先使用 Tauri 文件系统保存到characters/目录 - 保留 localStorage 作为 fallback,确保数据不因 Tauri 存储失败而丢失
- 添加详细日志输出,便于排查存储问题
存储模块日志增强
- 为
saveNovelToStorage添加保存路径、内容长度等调试日志 - 为
saveCharacterConfigToStorage添加相同的调试日志
起始行选择器行号显示问题修复
- 修复
start-line-select显示的行号与实际高亮段落不一致的问题 - 问题根因:选择器显示的行号基于过滤后的非空段落数,而高亮段落使用原始索引(包含空段落)
- 修复方案:统一使用原始段落索引,确保显示的行号与用户界面上的段落编号一致
阅读区起始行高亮问题修复
- 修复
reader-paragraph中line-number start-line高亮显示不对的问题 - 问题根因:
ProofreadPanel点击段落时设置的是过滤后索引,但ReaderPanel期望的是原始索引 - 修复方案:统一使用原始段落索引进行比较和显示
取消检测功能优化
- 修复点击「取消检测」后大模型请求未立即断开的问题
- 修复取消后段落状态未立即更新的问题
- 优化方案:取消时立即调用
AbortController.abort()中断请求,并将所有段落状态重置为pending
调试日志增强
- 在
handleStartCheck和cancelCheck函数中添加详细日志输出 - 便于追踪检测过程中的选中行数和请求发送情况
剧本TTS流式播放优化
- 新增流式添加对话功能,支持边生成边播放
- 新增音频队列机制,实现平滑的连续播放体验
- 新增根据段落索引跳转到对应对话的功能
- 支持播放中断和恢复,提升用户交互体验
剧本角色管理增强
- 优化角色音色配置,支持更精细的语音差异化
- 改进角色信息管理界面,提升配置效率
阅读面板交互优化
- 优化阅读区段落点击与TTS播放的联动效果
- 改进阅读进度同步逻辑,提升流畅度
章节导航体验优化
- 优化章节列表的加载和渲染性能
- 改进章节状态标记的视觉反馈
AI客户端优化
- 优化AI请求的错误处理和重试机制
- 改进API调用的稳定性和响应速度
代码质量提升
- 优化TTS服务的错误处理和日志记录
- 完善TypeScript类型定义,提升代码健壮性
剧本播放中断问题修复
- 修复TTS播放过程中中断不及时的问题
- 修复音频队列处理中的边界条件问题
章节列表显示修复
- 修复章节列表在特定情况下显示异常的问题
阅读区滚动同步问题修复
- 修复点击校对区后阅读区无法正确滚动到对应位置的问题
- 优化滚动定位逻辑,使用更精确的元素位置计算
代码结构优化
- 新增角色管理功能,支持为小说配置角色信息与音色
- 新增剧本/小说AI情感增强TTS朗读功能
- 重构TTS播放逻辑,支持角色音色差异化配音
- 优化移动端阅读模式布局与播放控制
- 升级API使用统计与配置表单体验
阅读区搜索按钮搜索弹窗样式修复
- 修复 search-modal 与 config-modal 设计不一致的问题
- 统一了头部、关闭按钮和内容区域等结构和样式
阅读进度组件重新设计
- reading-progress 现在显示当前章节的阅读进度百分比
- 新增进度条可视化,直观展示阅读进度
- 新增基于当前阅读速度的预计剩余时间显示
- 阅读进度随页面滚动自动更新(Intersection Observer)
- 不再依赖段落点击来更新进度
全局搜索弹窗优化
- global-search-modal 现在像 config-modal 一样居中显示
- 统一了 modal-overlay 结构和样式
- 优化移动端显示,修复挤压问题
校对队列面板可视化升级
- queue-stats 现在采用类似 usage-stats 的卡片式设计
- 不同状态使用不同颜色:pending(默认)、running(加载中)、done(成功)、failed(失败)
- 优化 queue-section 和 queue-actions 的可视化效果
导出功能优化
- ExportData 函数现在导出到单独的文件
- 设置导出为单个文件
- 每部小说数据分别导出为单独文件
- 更便于管理和查看导出数据
遮罩层样式统一
- modal-overlay、global-search-overlay、queue-panel-overlay、chapter-list-overlay 全部统一
- 使用 React Portal 在 document.body 层级渲染,解决 z-index 和定位问题
阅读区搜索功能修复
- 修复搜索按钮消失的问题(被错误地限制为仅阅读模式显示)
- 修复搜索结果行号与阅读区显示行号不匹配的问题
- 问题根因:搜索结果存储使用原始索引,但阅读区高亮和滚动使用过滤后索引,导致空行存在时行号不一致
- 修复方案:搜索结果统一使用原始索引存储,
paragraphIndexMap[filteredIndex]获取原始索引,确保搜索结果行号与阅读区显示一致
搜索按钮重新显示
- 将搜索按钮从仅阅读模式显示改为在所有模式下都可访问
- 搜索按钮移至 reader-toolbar 区域,不再隐藏在悬浮操作按钮中
ChapterNav 布局优化
- 优化 nav-header 水平内边距,增加元素间距
- 改善 nav-header-actions 内部元素布局,解决拥挤问题
日志系统增强
- 扩展 logger.ts 增加多种功能模块专用日志方法:
proofread、search、tts、file、ui、debug、warn、errorGeneric - 统一日志开关控制,通过 ConfigModal.tsx 的 toggle-switch 控制
剧本改编功能简化
- 移除转换粒度选择功能,直接按章节转换
- 移除段落选择功能,简化为整章内容转换
- 代码复杂度降低,用户操作更简洁
校对区段落索引错位问题
- 修复点击 btn-check 后校对区第一、第二行无法显示检测状态和结果的问题
- 问题根因:当
granularity !== "chapter"时,初始化结果数组只包含非空段落,但后续调用updateParagraphResult时使用原始段落索引(包含空段落),导致数组索引与段落索引不匹配 - 修复方案:修改
useAICheck.ts中checkChapter函数,在非章节模式下也初始化所有段落(包括空段落),确保数组索引与原始段落索引一致
采纳修改时高亮位置错误问题
- 修复段落中有多个相同字符时,采纳修改会错误地高亮第一个匹配项而非正确位置的问题
- 问题根因:
ReaderPanel.tsx的getHighlightInfo函数在highlight-new阶段使用para.indexOf(newText)查找位置,当文本中有多个相同字符时会返回第一个匹配项 - 修复方案:优先使用精确位置,验证位置处文本是否与新文本匹配,只有位置不匹配时才降级使用
indexOf
移动端滑动误触发点击问题
- 修复在移动端滑动页面时意外选中高亮段落的问题
- 问题根因:滑动结束后会触发
onClick事件,导致用户只是滚动页面却意外选中了段落 - 修复方案:在
ReaderPanel.tsx中添加滑动检测逻辑(isScrolling),在touchMove时检测移动距离超过阈值则标记为滚动操作,点击时不触发选中
移动端点击同步滚动定位偏差问题
- 修复在移动端点击校对区后阅读区滚动定位不准确的问题
- 问题根因:
scrollToElement函数使用el.offsetTop计算滚动位置,在有工具栏的布局中会不准确 - 修复方案:使用
getBoundingClientRect()获取容器和元素的精确位置,计算元素相对于容器顶部的偏移量来计算目标滚动位置
ReaderPanel 滚动行为与 ProofreadPanel 不一致问题
- 修复阅读区点击后校对区无法正确居中显示对应段落的问题
- 修复阅读区和校对区滚动同步逻辑过于复杂的问题
- 问题根因:ReaderPanel 和 ProofreadPanel 的 ref 索引逻辑不一致;ReaderPanel 使用了不必要的滚动同步逻辑
- 修复方案:统一 ReaderPanel 的 ref 索引逻辑使用
originalIndex;简化滚动逻辑移除不必要的同步滚动,保留点击选中后的同步滚动功能
error-count 点击跳转功能
- 新增点击错误计数快速跳转到第一个未处理错误所在段落的功能
- 当有未处理错误时,error-count 区域显示为可点击状态(鼠标悬停显示手型和颜色变化)
- 点击后自动选中并滚动到第一个包含未处理错误(未采纳且未跳过)的段落
proofread-toolbar 固定显示
- 修改校对区工具栏为固定显示,不再跟随滑动消失
- 使用
position: sticky配合背景色实现固定效果 - 修复了因
overflow: hidden阻止 sticky 生效的问题
TaskPanel 样式优化
- 优化
segment-index和segment-title的布局对齐 - 添加
display: inline-flex和align-items: baseline使图标和文字并排显示并与标题持平
同步滚动功能移除
- 移除了阅读区和校对区滑动时的同步滚动功能
- 保留点击选中某行后另一个区域滚动到对应段落的功能
AI Prompt 模板优化
- 更新了 PROOFREAD_SYSTEM_PROMPT(段落校对提示词)
- 更新了 PROOFREAD_SYSTEM_PROMPT_CHAPTER(章节校对提示词)
- 更新了 SCRIPT_SYSTEM_PROMPT(剧本改编提示词)
- 更新了 DEFAULT_PROMPT(默认提示词,指向 SCRIPT_SYSTEM_PROMPT)
- 优化了校对和剧本转换的 AI 提示词,提升输出质量
ReaderPanel 高亮滚动逻辑重构
- 简化
scrollToParagraph函数,与 ProofreadPanel 保持一致的实现方式 - 使用
el.scrollIntoView({ behavior: "smooth", block: "center" })实现居中滚动 - 添加
setTimeout(50ms)确保 DOM 渲染完成后再滚动 - 移除不再需要的
scrollLock机制
动画高亮定位偏差问题
- 修复
anim-highlight-old和anim-highlight-new高亮定位存在偏差的问题 - 问题根因:新文本高亮时直接使用原始索引,但
correctedText与originalText长度可能不同 - 修复方案:在
ReaderPanel.tsx中,新文本高亮阶段使用para.indexOf(newText)动态查找新文本在实际段落中的位置,而非使用固定索引 - 旧文本高亮(
highlight-old/replacing阶段)继续使用原始索引,因为此时段落内容尚未改变 - 添加降级处理:如果新文本在段落中找不到,则使用原始索引作为备选方案
校对操作反馈
- 新增文件:
src/components/Toast.tsx(Toast消息组件) - 添加了 Toast 消息提示组件,为采纳修改、撤销、跳过等操作提供明确的成功/失败反馈
- Toast 组件支持成功、错误、警告、信息四种类型,自动3秒后消失
AI校对结果显示问题
- 修复了AI大模型返回数据后,错误信息无法在对应段落的校对区正确显示的问题
- 问题根因:
checkSingleLine函数在初始化结果数组时,未考虑现有结果数组长度小于实际段落数的情况,导致索引错位 - 修复方案:优化初始化条件,当现有结果数组长度不足时重新初始化,并保留已有数据
- 优化了
useAICheck.ts中的索引映射逻辑,确保段落索引与结果数组正确对齐 - 完善了
proofreadStore.ts中updateParagraphResult的索引处理,强制使用正确的段落索引 - 清理了调试日志,保持代码整洁
- 样式更新:
src/App.css(添加Toast组件样式)
忽略单词管理
- 新增忽略单词管理弹窗,支持按章节管理校对时需要跳过的单词(如人名、地名、特殊术语等)
- 校对工具栏新增"忽略单词管理"按钮(⚙️),点击打开管理弹窗
- AI 校对时自动将忽略列表中的单词排除,不再标记为错误
- 支持添加、删除、批量管理忽略单词
- proofreadStore 新增 ignoredWords 状态管理(add/remove/get/clear)
忽略单词管理弹窗 UI
- 采用 Liquid Glass 设计风格,带毛玻璃背景(backdrop-filter: blur(20px))
- 忽略单词标签(word-tag)采用圆形 pill 设计,删除按钮为圆形
- 弹窗 z-index 层级优化,确保内容始终在遮罩层上方
- 新增
--r-full: 9999pxCSS 变量,统一圆形设计语言
校对工具栏按钮样式统一
- 取消按钮(btn-cancel)样式从红色改为与整体风格一致的灰色
- 新增忽略单词管理按钮(btn-ignored-words),悬停时显示蓝色高亮效果
忽略单词管理弹窗交互修复
- 修复点击弹窗内容区域无法交互的问题(z-index 层叠冲突)
- 修复全局 modal-overlay 的 backdrop-filter 泄漏到忽略单词弹窗的问题
- 修复忽略单词删除后列表不立即更新的问题(getIgnoredWords 改为响应式选择)
通知服务模块
- 新增通知服务模块,用于发送校对进度和完成通知
- 在 ProofreadPanel 中添加进度跟踪和通知发送逻辑
跳过错误功能
- 新增跳过错误功能及相关 UI 组件
依赖更新
- 更新依赖,添加 tauri 通知插件
样式适配
- 修改样式适配新功能
阅读面板编辑模式优化
- 高亮段落进入编辑模式时字体缩小(13px),提升编辑视野与专注度
移动端章节校对状态标记
- 新增章节左滑标记为"已校对"功能
- 新增章节右滑取消"已校对"标记
- 章节列表右侧显示校对状态图标(lucide-circle-check-big)
- 新增 useSwipeGesture 自定义 Hook 支持触摸滑动手势检测
阅读面板互斥逻辑
- TTS 面板与阅读设置面板互斥,同时只能开启一个
- 点击打开一个面板时自动关闭另一个面板
按钮图标更新
- 设置按钮(btn-settings)图标更换为 Bolt
- 语音设置按钮(reader-settings-btn)图标更换为 BookAudio
- 阅读设置按钮(reading-settings-toggle)图标更换为 LineStyle
- TTS 按钮(reader-tts-btn)图标更换为 BookHeadphones
移动端浮动按钮优化
- reader-floating-actions 按钮改为横排布局
- 按钮形状统一为正圆形(36px × 36px)
- 按钮图标完美居中显示
- 样式与 header-right 按钮保持一致
面板样式优化
- reading-settings-panel 添加模糊背景效果(backdrop-filter: blur(20px))
- TTS 面板与阅读设置面板样式统一
- 移动端面板位置调整至浮动按钮上方(bottom: 180px)
UI 细节优化
- 自定义颜色标签颜色跟随深色/亮色模式变更(var(--text-secondary))
- 移动端点击标题自动切换到小说标签页
使用 lucide-react 统一图标系统
- 全面替换项目中的所有图标为 lucide-react 图标库
- 新增自定义 Select 组件,使用 lucide-react 封装 select 选项
- 新增 Icons.ts 组件支持多种新图标(plus、file、calendar、clock、close 等)
阅读区按钮布局优化
- 调整 floating-actions 按钮间距统一为 12px
- TTS 面板和阅读设置面板位置调整至按钮组上方,保持统一间距
- 移动端设置按钮只显示图标,完美居中显示
Select 组件优化
- 新增 Select 组件支持 ChevronDown 下拉箭头
- 选中项显示 Check 图标
- 选项文字居中显示
- 支持点击外部关闭
- 玻璃效果与整体风格一致
校对工具栏优化
- 桌面端与移动端文字大小统一为 12px
- 按钮间距从 10px 减至 6px
- granularity-select 和 start-line-select 间距从 4px 减至 2px
- 标签和 Select 组件图标文字大小统一
小说列表 UI 优化
- novel-item-meta 图标文字并排显示
- 文件大小、导入时间、缓存时间均使用 lucide-react 图标
- novel-item-remove 使用 Icons.close 替换 ×
- btn-import-novel 使用 Icons.plus 替换 +
UI 细节优化
- btn-theme-toggle 移动端隐藏文字,只显示图标
- mobile-proofread-toggle 图标文字并排显示
- right-tabs 标签图标文字并排显示
- header-left 图标文字并排显示
- app-title 链接点击可跳转到首页(无参状态)
ConfigModal 修复
- 修复 ConfigModal.tsx 语法错误,补齐缺失的闭合括号
- API Key 输入框 toggle-visibility-btn 统一使用 Icons.eye 和 Icons.eyeOff
Select 组件修复
- 修复 Select 组件 width 问题,确保占据完整宽度
- 修复 Select 组件 relative 元素居中显示
阅读模式字体大小调整
- 在纯阅读模式的设置面板中添加字体大小滑块
- 支持 12px - 28px 范围调节
- 实时预览字体大小变化
代码质量提升
- 修复 ReaderPanel.tsx 中
readingTextColor变量声明顺序问题 - 移除未使用的
paragraphSpacing变量引用
移动端界面精简
- 移除移动端快捷操作栏(mobile-action-bar)
- 调整移动端布局底部 padding,从 120px 缩减至 64px
剧本改编功能优化
- 移除"按行"粒度转换选项,仅保留"按段落"和"整章"
- 简化剧本转换流程
TypeScript 编译错误修复
- 修复 fileExport.ts 缺少闭合括号导致的语法错误
- 移除 NovelList.tsx 中未使用的函数和变量
localStorage 配额问题修复
- 将 chapters 从持久化存储中移除,避免小说内容过大导致 QuotaExceededError
- 章节内容仅保留在内存中,选择小说时从文件系统重新加载
Tauri 版本同步
- 同步 Cargo.toml 与 package.json 的 Tauri 依赖版本至 2.11.0
- 修复 tauri-plugin-fs 构建错误
撤销操作高亮显示修复
- 修复点击撤销后阅读区恢复的原始文本没有高亮显示的问题
- 移除了
undo-restore阶段的高亮限制,确保撤销内容始终可见 - 为
undo-restore阶段添加红色高亮样式,与撤销前的绿色采纳样式形成对比 - 便于用户直观查看哪些内容被成功撤销恢复
Android 状态栏适配
- 使用 CSS
env(safe-area-inset-*)变量适配 iOS 和 Android 状态栏 - 更新 index.html 添加
viewport-fit=cover支持边缘到边缘显示 - 添加
theme-color和 Apple 移动端相关 meta 标签 .app-header添加顶部安全区域 padding.mobile-tab-bar添加底部安全区域 padding 和高度.app-body移动端布局正确计算安全区域
Android 文件存储路径优化
- 配置 Tauri fs 插件使用
BaseDirectory.Document存储路径 - 文件保存到
Android/data/cn.helilab.proofreader/documents/novels/目录 - 用户可通过文件管理器直接访问导出的小说文件
- 更新 capabilities 配置,添加
$DOCUMENT路径访问权限 - 更新 file_paths.xml 扩展 FileProvider 路径配置
Android 构建配置
minSdkVersion设置为 24 (Android 7.0)- AndroidManifest.xml 配置存储权限
调试日志增强
- 添加文件保存操作的详细日志输出
- 便于排查 Android 端文件同步问题
采纳修改后错误消失问题
- 修复
ProofreadPanel中useEffect依赖数组导致的内容变更后 results 被重置的问题 - 将依赖从
chapter改为chapter?.id,避免章节内容更新时误触发 results 重置
校对 Prompt 优化
- 减少对引号、省略号全角/半角混用等次要标点问题的提示
- 优先关注错别字、语法错误、逻辑不通的句子、严重排版问题
- 仅检查重大标点错误(如明显错用导致语义混淆、重复标点、严重空格问题)
剧本转换 Prompt 优化
- 明确场景编号规范(【场景 1】、【场景 2】等)
- 角色对话格式优化:角色名单独一行,对话单独一行
- 新增【内心独白】格式,专门处理心理描写
- 强调保持原文完整性,不添加或删减重要内容
- 场景之间空一行,结构更清晰
- 明确禁止输出 Markdown 或代码块
阅读区搜索功能
- 在非纯阅读模式下显示搜索按钮(📍),点击可搜索当前章节内容
- 搜索结果列表展示匹配内容(高亮显示),点击结果自动跳转到对应段落
- 支持 prev/next 导航按钮切换匹配项
- 修复搜索跳转问题,确保点击结果后正确滚动到目标行
文件导出保护
- 导出文件时如果文件名已存在,弹出确认对话框
- 用户可选择「覆盖保存」或「自动生成新文件名」
- 新文件名格式:原名 + 时间戳后缀
移动端按钮样式统一
- 统一移动端所有圆形按钮尺寸为 36x36px,border-radius 50%
- 统一 btn-export-mobile、btn-save-mobile、btn-theme-toggle、btn-settings 按钮尺寸
按钮风格统一
- 统一 btn-export、btn-import、btn-save-original 按钮样式
- 移除冲突样式,统一使用 "Liquid Glass" 按钮风格
Android 导出问题
- 修复安卓端导出文件为空的问题
- 改用 Tauri dialog 和 fs 插件处理文件保存
- 添加 TextEncoder 正确编码文件内容
移动端 UI 布局优化
- 移动端导出按钮移至顶部 header-right 区域,方便操作
- proofread-toolbar 修复 sticky 定位问题(添加
overflow: visible) - proofread-toolbar 背景添加毛玻璃效果,与 app-header 保持一致风格
- proofread-toolbar 内部三个元素(检测粒度、起始行、检测按钮)改为单行显示
- 移动端收起/显示校对按钮位置调整,紧靠校对区顶部
移动端阅读区优化
- 减小阅读区字体大小(768px: 14px → 13px,480px: 13px)
- 减小段间距(8px → 6px,6px → 4px)
- 减小行间距(1.85 → 1.6,1.6 → 1.5)
- 优化阅读区内边距,让内容显示更紧凑
导出功能优化
- 移动端导出按钮功能从「导出当前章节」改为「导出整本小说」
Android 图标尺寸规范化
- 按照 Tauri 官方文档调整 Android 应用图标尺寸
- 修复 Android 项目生成问题,重新初始化 Android 项目
- 适配多分辨率设备(mdpi/hdpi/xhdpi/xxhdpi/xxxhdpi)
Android 构建错误修复
- 删除失效的
gen/android目录,使用tauri android init重新生成 - 修复 CI 环境中的 Android 构建路径问题
阅读背景颜色优化
- 新增 4 种阅读背景颜色:薰衣草、桃色、鼠尾草、石板
- 背景选项整体居中显示,优化布局
- 所有背景颜色搭配相应的文字颜色,确保在亮色/暗色模式下清晰可读
- 按钮尺寸优化(36px),确保圆形按钮美观
段间距调整优化
- 将段间距调整功能扩展到校对模式(非阅读模式)
- 阅读模式下默认使用 50% 的段间距(最小 4px),让阅读更紧凑
- 校对模式下保持完整段间距,便于段落区分和修改定位
章节标题显示优化
- 章节标题超出显示区域时自动截断并显示省略号
- 避免长标题覆盖阅读模式开关按钮
- 添加
flex: 1和min-width: 0确保 flex 容器中的文本截断正常工作
API Key 可视化改进
- 将 API Key 输入框改为换行显示,单独占用完整宽度
- 添加眼睛按钮,点击可切换密码显示/隐藏状态
- 使用内嵌 SVG 图标实现睁眼/闭眼状态切换
自定义选项图标优化
- 将"自定义"AI 模型配置的 logo 从外部图片改为内嵌 SVG 齿轮图标
- 提升页面加载速度和图标显示可靠性
- 使用灰色系配色,与整体 UI 风格保持一致
配置模态框布局优化
- API Key 和模型名称输入框改为各自换行显示
- 提升表单填写体验,减少视觉拥挤感
React Hooks 警告修复
- 修复
ProofreadPanel.tsx中chapterResults的条件赋值导致依赖变化问题 - 将其包装在
useMemo中优化性能 - 为
useEffect添加缺失的依赖chapter,setResults,setStartLine
ESLint 配置警告修复
- 将
.eslintignore文件内容迁移到eslint.config.js的globalIgnores配置中 - 删除不再受支持的
.eslintignore文件
- Tauri: 2.x
- React: 18.x
- TypeScript: 5.x
- Vite: 8.x
Windows ARM64 支持
- 添加 Windows ARM64 构建目标(aarch64-pc-windows-msvc)
- 支持 ARM 架构设备(Surface Pro X、骁龙笔记本等)
- 同时生成 x86_64 和 ARM64 两个版本
阅读区与校对区联动高亮
- 点击阅读区段落时,校对区自动高亮对应行
- 点击校对区段落时,阅读区自动高亮对应行
- 无需先进行校对检测即可联动
UI 高亮样式优化
- 移除蓝色渐变背景,改用纯色深色/浅色背景
- 深色模式:使用较浅的深灰色背景
- 亮色模式:使用较深的浅灰色背景
- 行号与段落使用统一的高亮样式
MiSans 字体
- 全局字体更换为小米 MiSans
- 提升中文显示效果
GitHub Actions 优化
- 添加 FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 适配 Node.js 24
- 移除 Node.js 20 弃用警告
- Artifact 上传禁用压缩(compression-level: 0),加快上传和下载速度
Android 构建优化
- 产物命名格式:ProofReader-v{版本号}-{架构}.apk
- 明确指定 release 版本路径
- 支持版本号自动注入
阅读区-校对区联动问题
- 修复点击阅读区后校对区无法高亮对应行的问题
- 使用 useMemo 确保即使没有校对结果也能显示段落列表
移动端布局修复
- 修复章节、校对、剧本面板只显示半屏的问题
- 修复提示词输入框提前换行的问题
- 优化 flex 布局层级
设置按钮溢出修复
- 移动端设置按钮只显示图标,不显示文字
- 防止文字溢出圆角框
- Tauri: 2.x
- React: 18.x
- TypeScript: 5.x
- Vite: 8.x
- Node.js: 24(GitHub Actions)
Windows ARM64 支持
- 添加 Windows ARM64 构建目标
- 支持 ARM 架构设备(如 Surface Pro X、骁龙笔记本等)
- 同时生成 x86_64 和 ARM64 安装包
应用名称优化
- 英文名称:Novel Proofreader → Proof Reader
- 中文名称:小说校对助手 → 校对助手
- 统一产品标识,更简洁专业
移动端布局修复
- 修复章节、校对、剧本面板只显示半屏内容的问题
- 修复提示词输入框在屏幕 40% 宽度位置换行的问题
- 优化 flex 布局层级,确保内容正确填充可用空间
- 添加 min-height: 0 解决嵌套 flex 容器高度计算问题
GitHub Actions 配置优化
- build.yml:保留自动触发(push tags)
- macos.yml、windows.yml、linux.yml、android.yml:改为仅手动触发
- 支持按需构建,避免不必要的资源消耗
Android 设置按钮修复
- 修复移动端设置按钮文字溢出圆框问题
- 仅显示图标(⚙️),不显示文字
- 优化按钮尺寸和圆角
代码质量提升
- 修复 React Hooks 问题(useMemo、useCallback)
- 添加 ESLint 忽略配置
- TypeScript 编译通过,零类型错误
布局问题修复
- 修复 .app-body 高度计算问题
- 修复各面板 overflow-y: auto 不生效问题
- 修复提示词输入框宽度问题
构建问题修复
- 修复 Tauri 配置验证错误
- 修复 Android 状态栏重叠问题
Apple Liquid Glass 设计风格
- 实现了动态渐变背景效果
- 添加磨砂玻璃视觉效果
- 流畅的动画过渡效果
响应式布局适配
- 桌面端:左右分屏布局
- 移动端(< 768px):上下分屏布局
- 底部标签栏导航
AI 模型配置页面优化
- 重新设计配置弹窗 UI
- 支持多种 AI 提供商选择(OpenAI、DeepSeek、SiliconFlow、Mimo、LM Studio)
- 新增调试日志开关
剧本改编功能
- 支持按段落/按行/整章转换
- 可选择起始位置
- 自定义提示词支持
React Hooks 最佳实践
- 使用 useMemo 优化计算性能
- 使用 useCallback 优化回调函数
- 修复 useEffect 中 setState 导致的级联渲染问题
代码质量提升
- ESLint 检查通过(零警告)
- TypeScript 类型安全增强
- 删除未使用的变量和导入
Android 平台支持
- 添加状态栏安全区域支持
- 修复设置按钮溢出问题
- 优化移动端按钮布局
应用名称更新
- 英文:Novel Proofreader → Proof Reader
- 中文:小说校对助手 → 校对助手
构建错误修复
- 修复 Tailwind CSS 依赖问题
- 修复 Tauri 配置验证错误
- 修复 Android 构建配置问题
UI 修复
- 修复移动端设置按钮文字溢出圆框问题
- 修复章节切换时状态重置问题
- 修复文本区域高度自适应问题
GitHub Actions 修复
- 修复 workflow 语法错误
- 修复签名配置问题
- 修复 artifacts 上传配置
- Tauri: 2.x
- React: 18.x
- TypeScript: 5.x
- Vite: 8.x
支持以下平台构建:
- macOS (dmg)
- Windows (exe/msi)
- Linux (deb/AppImage)
- Android (apk/aab)