Skip to content
 
 

Repository files navigation

UV Reader(柚肥阅读)

中文 · English · 许可证 · 问题反馈

不离开书页,读懂一个观点,留下一条真正有用的笔记。

UV Reader 是中文优先的独立桌面阅读器(Electron),支持 EPUB、PDF、FB2、MOBI、AZW3 和 CBZ。阅读、划线、批注、阅读笔记和可选的 AI 伴读都在同一个窗口里完成,不再依赖 Obsidian。

状态:开发中,计划作为独立桌面应用发布,暂未提供安装包;当前可从源码构建运行。

功能

能力 说明
阅读 分页 / 滚动两种模式,滚轮翻页,页码跳转,单栏或双栏,五套阅读主题,内置与自定义字体
划线批注 三色划线、就近批注、右键菜单,阅读笔记自动汇总
阅读笔记 每本书一篇 Markdown 笔记, 可跳回原文对应位置
目录 左侧栏,可搜索、可关闭,高度与阅读区一致
适合页面 正文按可用宽度铺满;PDF 切到单页并放大到约 90% 阅读区宽度
AI 伴读(可选) HTTP 服务(DeepSeek、Kimi、通义千问、智谱 GLM、MiniMax、硅基流动、豆包、OpenRouter、OpenAI、Ollama、LM Studio、自定义端点)与本机 CLI/ACP(Codex、Claude、Grok、Kimi、ZCode)
本地优先 书籍、进度、划线、笔记都保存在本机文件;AI 关闭时不联网

运行

前置:Node.js 22 或更高。

npm ci
npm run desktop:install   # 安装 Electron;网络受限时先设置 ELECTRON_MIRROR
npm run desktop:build
npm run desktop:start
  • 开发:npm run desktop:dev(watch 构建,重启应用生效)
  • 冒烟:npm run desktop:smoke(打开内置示例书,退出码 0/1)
  • 端到端:npm run desktop:e2e(Playwright 驱动 Electron:翻页、划线、笔记、目录、AI 密钥链路等)

打包

npm run desktop:dist:dir   # 只出免安装目录(apps/desktop/release/win-unpacked)
npm run desktop:dist       # Windows:NSIS 安装包 + 便携版
npm run desktop:smoke:packaged   # 用打包产物跑冒烟(退出码 0/1)
npm run build:icon         # 重新生成应用图标(纯 Node,无外部依赖)
  • 产物:apps/desktop/release/UV-Reader-<版本>-setup.exeUV-Reader-<版本>-portable.exe;macOS 为 dmg、Linux 为 AppImage(需在对应系统上构建)。
  • 版本号取自根 package.json;图标由 scripts/make-app-icon.mjs 生成到 apps/desktop/build/icon.png
  • 已注册 .epub/.pdf/.mobi/.azw3/.fb2/.cbz 文件关联与单实例;用“打开方式”传入的路径会在启动后自动打开。
  • 网络受限时先设置镜像:ELECTRON_MIRRORELECTRON_BUILDER_BINARIES_MIRROR(例如 npmmirror 对应路径)。

测试与校验

npm test              # 阅读核心单元测试
npm run test:shim     # 宿主兼容层契约测试
npm run test:desktop  # 桌面壳测试
npm run check:i18n    # 9 种语言字典与占位符一致性
npx eslint packages/reader/src/ --max-warnings=0

CI(.github/workflows/ci.yml)按上述顺序执行,并在 xvfb 下跑一次桌面冒烟。

本机已安装并登录 CLI(Claude Code / Codex / Grok / Kimi / ZCode)时,可以手动验证 AI 伴读的 CLI 链路(不依赖 ACP 适配器,未安装时自动走兼容模式):

npm run desktop:test:cli              # 默认 claude-cli,自动探测可执行文件
npm run desktop:test:cli -- codex-cli # 指定 provider;第三个参数可传二进制路径

架构

apps/desktop/        Electron 壳:主进程、预加载、渲染进程、打包脚本
packages/reader/     阅读核心与界面(main.js 仍通过兼容层运行)
packages/host-shim/  Obsidian API 兼容层(迁移期过渡,之后会随重构移除)
assets/starter-books/ 内置公版示例书

迁移进行中:阅读逻辑会逐步从 packages/reader/src/main.js 抽成与宿主无关的模块,packages/host-shim 是过渡方案,最终目标是桌面端只依赖纯阅读模块。计划与进度见 docs/standalone-desktop-plan.md

隐私

书籍、阅读进度、划线和笔记都在本地文件中,无账号、无遥测。可选联网能力默认关闭:翻译(Google Translate)、AI 伴读(你选择并配置的服务或本机 CLI)。详见 SECURITY.md

许可

项目整体采用 GNU GPL v3.0 onlyGPL-3.0-only),完整条款见 LICENSE。第三方组件、字体与改编来源见 NOTICE.mdfonts/README.mdlicenses/。需要 GPL 之外的授权可联系作者协商商业授权


English

UV Reader is a Chinese-first standalone desktop reader (Electron) for EPUB, PDF, FB2, MOBI, AZW3 and CBZ. Reading, highlighting, notes and an optional AI companion live in one window; Obsidian is no longer required.

Status: in development; planned for release as a standalone desktop app. No installer is published yet — build from source for now.

Features: paged/scrolling reading, wheel paging, page jump, single or two columns, five page themes, bundled and custom fonts, three-colour highlights with inline comments, one Markdown reading note per book with backlinks, a searchable left TOC sidebar, fit-to-width reading (PDFs are zoomed to ~90% of the reading area), and optional AI assistance through HTTP providers or locally signed-in CLIs (Codex, Claude Code, Grok, Kimi, ZCode).

Build and run:

npm ci
npm run desktop:install
npm run desktop:build
npm run desktop:start

Tests: npm test, npm run test:shim, npm run test:desktop, npm run check:i18n, npx eslint packages/reader/src/ --max-warnings=0.

License: GNU GPL v3.0 only. Third-party notices live in NOTICE.md.

About

UV Reader(柚肥阅读)— 中文优先的独立桌面阅读器:EPUB / PDF / FB2 / MOBI / AZW3 / CBZ,划线批注、阅读笔记与可选 AI 伴读。

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages