# Novel_Tool **Repository Path**: ichliebedich-DaCapo/Novel_Tool ## Basic Information - **Project Name**: Novel_Tool - **Description**: 小说查看和编辑工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Novel Tool `Novel Tool` 是一个基于 `Wails v2 + Go + Vue 3 + TypeScript` 的桌面小说阅读与整理工具,当前重点覆盖: - 打开 `txt / md` 小说并按章节自动解析 - 阅读、编辑与自动保存 - 书签、阅读进度、最近文件持久化 - 全书搜索、章节跳转、切片导出与导出预览 - 章节新增、插入、重命名、删除与顺延重排 - Git 备份、差异查看、还原与删除备份仓库 - 自定义无边框标题栏、可拖拽侧栏、目录 / 书签 / 备份视图 - 内置在线更新,支持从 Gitee Releases 检查并安装新版本 ## 命名约定 - 应用展示名:`Novel Tool` - Windows 构建产物名:`novel-tool.exe` - Go module:`novel-slicer` - 应用级配置目录:`~/.novel-tool` - 小说项目级配置目录:`<小说目录>/.novel-tool` ## 技术栈 ### 后端 - `Go` - `Wails v2` - 章节解析、项目配置、搜索、切片导出、Git 备份、在线更新 ### 前端 - `Vue 3 Composition API` - `TypeScript` - `Vite` - `Tailwind CSS` - `@vueuse/core` - `lucide-vue-next` ## 主要功能 ### 文件与项目状态 - 通过系统文件对话框打开小说文件 - 支持拖拽 `txt / md` 到窗口内打开 - 支持最近文件、重新加载、恢复上次文件 - 标题栏可打开最近 10 个文件记录 - 阅读进度按章节索引持久化 - 每本小说的书签与切片导出路径单独保存 ### 章节与阅读 - 自动识别常见中文、英文、数字形式的章节标题 - 支持新增章节、在指定章节后插入章节 - 支持重命名与删除章节 - 删除或插入章节后可辅助进行标题顺延重排 - 支持编辑模式与浏览模式 - 支持 `Ctrl + 鼠标滚轮` 调整阅读 / 编辑字号,并在关闭时保存 ### 搜索与定位 - 支持全文搜索 - 支持章节跳转 - 搜索结果可直接定位到阅读区 ### 书签与侧栏 - 阅读区内直接添加或取消书签 - 侧栏支持“目录 / 书签 / 备份”切换 - 侧栏宽度可拖拽调整并持久化 ### 导出 - 按章节范围导出切片内容 - 支持导出章节预览 - 记住上次切片导出模式、数量与章节区间 - 自动记住上次导出路径 - 导出完成后弹窗提示结果,并可打开导出文件所在位置 ### 备份 - 支持在当前小说目录初始化 Git 备份仓库 - 初始化时自动创建“初始化版本”提交 - 备份只跟踪当前小说文件,避免无关文件进入备份记录 - 支持创建备份提交、查看备份历史与还原到指定提交 - 备份详情支持内联 / 并排差异视图,以及上一个 / 下一个差异跳转 - 提交详情使用内存缓存与文件缓存,减少重复读取历史差异的等待 - 支持删除当前小说目录下的备份仓库 ### 在线更新 - 启动后静默检查一次更新 - 标题栏“帮助 -> 版本与更新”可手动检查 - 版本弹窗中可下载并安装最新版本 - 版本弹窗中可打开发布页或下载历史版本附件 ## 目录结构 ```text Novel_Tool/ |-- README.md |-- app.json |-- main.go |-- go.mod |-- wails.json |-- wails-window-drag-guide.md |-- scripts/ | |-- sync-version.mjs | `-- sync-version.ps1 |-- docs/ | |-- guide/ | | |-- online-update-guide.md | | `-- wails-window-drag-guide.md | `-- releases/ | |-- v1.0.0.md | `-- v1.0.1.md |-- internal/ | |-- app/ | |-- config/ | |-- gitbackup/ | |-- logger/ | |-- models/ | |-- parser/ | |-- processutil/ | |-- project/ | |-- search/ | `-- slicer/ `-- frontend/ |-- package.json |-- src/ | |-- AppShell.vue | |-- components/ | |-- lib/ | `-- types/ `-- dist/ ``` ## 版本管理 应用运行时版本只维护在 `app.json` 的 `version` 字段里。`releaseNotesDir` 用来指定版本说明目录,文件名按版本号自动推导,例如 `version` 为 `v1.0.1` 且 `releaseNotesDir` 为 `docs/releases` 时,会读取 `docs/releases/v1.0.1.md`。 发布或测试打包前执行: ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File scripts\sync-version.ps1 ``` 脚本会把 `app.json.version` 同步到 `wails.json` 和前端 `package*.json`,避免多个文件手动改版本。 ## 关键模块 ### `internal/parser` - 负责小说章节识别与解析 - 管理内存中的章节列表 - 支持新增、插入、删除、重命名章节 - 负责把章节内容重新写回原文件 ### `internal/project` - 负责项目级配置读写 - 保存书签、阅读进度、导出路径 - 配置文件位于小说目录下的 `.novel-tool/config/` ### `internal/config` - 负责应用级配置 - 保存主题、字号、行距、最近文件、上次打开路径等 - 配置文件位于 `~/.novel-tool/config.json` ### `internal/app` - 暴露 Wails 绑定接口 - 串联文件打开、保存、搜索、书签、备份、在线更新等流程 ### `internal/gitbackup` - 负责当前小说文件的 Git 备份流程 - 支持初始化仓库、创建提交、读取历史、生成差异、还原提交与删除仓库 - 备份提交详情使用内存缓存与项目级文件缓存 ### `frontend/src/AppShell.vue` - 应用主界面入口 - 负责主布局、文件打开流程、状态栏、快捷操作、备份详情与版本更新弹窗 ### `frontend/src/components/WindowTitleBar.vue` - 自定义无边框标题栏 - 负责菜单、窗口按钮、更新红点提示 ## 配置与数据 ### 应用级配置 位置: - Windows:`%USERPROFILE%\.novel-tool\config.json` 主要内容: - 主题 - 字号 - 行距 - 隐藏后缀 - 自定义章节正则 - 最近文件(保留最近 10 个) - 上次打开路径 - 上次成功打开文件 - 自动保存间隔 ### 项目级配置 位置: - `<小说目录>\.novel-tool\config\config.json` - `<小说目录>\.novel-tool\config\bookmarks.json` - `<小说目录>\.novel-tool\cache\backup-details\` - `<小说目录>\.novel-tool\log\novel-tool.log` 主要内容: - `readingProgress` - `currentFilePath` - `lastSliceExportPath` - 备份详情缓存 ## 在线更新相关文档 - 详细实现文档见 [docs/guide/online-update-guide.md](docs/guide/online-update-guide.md) - 无边框标题栏拖拽说明见 [docs/guide/wails-window-drag-guide.md](docs/guide/wails-window-drag-guide.md) ## 开发环境要求 - Go `1.22+` - Node.js `18+` - npm - Wails CLI ## 安装依赖 ```powershell cd frontend npm install ``` ## 开发 ```powershell wails dev ``` ## 构建 ```powershell wails build ``` 默认构建产物: ```text build/bin/novel-tool.exe ``` ## 验证命令 ```powershell go test ./... ``` ```powershell cd frontend npm run build ``` ## 当前界面要点 - 自定义无边框标题栏 - 顶部快捷工具区 - 左侧目录 / 书签 / 备份信息侧栏 - 中间阅读与编辑区 - 底部状态栏与编码切换 - 切片导出、最近打开、备份详情与导出结果弹窗 - 版本与在线更新弹窗 ## 后续可优化方向 - 将内部命名 `novel-slicer` 逐步迁移为 `novel-tool` - 为章节重排增加更精细的撤销与预览 - 增加更多导出格式 - 完善版本说明维护流程 - 为备份差异视图增加更细粒度的搜索与筛选 --- 文档版本:`1.4.0` 最后更新:`2026-05-03`