Releases: cshdotcom/readest-lite
Release list
Release v8.23.2
v8.23.2
Changed
- 隐藏自定义分组管理:移除 ViewMenu 中的 GroupManagementModal 菜单项、import、state
- 恢复原生分组:Bookshelf.tsx 移除 dbGroups 拉取 + merge 逻辑,恢复用 generateBookshelfItems 按 book.groupName 原生分组
- BookGroup DB 模型和 /api/book-groups API 保留但前端不再调用
Updated
- 宣传网站 ITERATION_PROMPT.md 从 v8.8.0 更新到 v8.23.0
- aph.html 自动加载最新提示词
镜像
ghcr.io/cshdotcom/readest-lite:8.23.2ghcr.io/cshdotcom/readest-lite:latest
Release v8.23.1
v8.23.1
Fixed
- 用户文件查看显示仅管理员:storage/list.ts 增加 SUPER_ADMIN_EMAIL env fallback,即使用户 DB role 没更新也能通过校验
- README 快速开始命令加
-e SUPER_ADMIN_EMAIL=admin@example.com - 环境变量表加 SUPER_ADMIN_EMAIL 行
Updated
- 宣传网站已更新:https://cshdotcom.github.io/readestl/
- index.html: NodeByte 社区置顶横幅 + 12 功能卡片 + TODO + 快速开始(含 SUPER_ADMIN_EMAIL)
- deploy.html: 部署教程 + 环境变量表(含 SUPER_ADMIN_EMAIL)+ Nginx 反向代理 + 备份指南
镜像
ghcr.io/cshdotcom/readest-lite:8.23.1ghcr.io/cshdotcom/readest-lite:latest
升级
docker pull ghcr.io/cshdotcom/readest-lite:8.23.1
docker compose down && docker compose up -dRelease v8.23.0
v8.23.0 — 删除有声书 + 删除 RSS favicon + 修复超级管理员 + 分组融合 + 宣传网站
Removed
- 有声书内置播放器:移除 AudiobookPlayer 组件、/api/audiobook/* 端点、bookService 音频短路、BookFormat MP3/M4A/M4B。加到 TODO 待办列表
- RSS 自动 favicon 识别:删除 favicon.ts,feedBook.ts 不再抓取 favicon
Fixed — 超级管理员 ENV 识别(彻底修复)
- 根因:
init-admin.mjs(容器启动实际运行的脚本)硬编码role = 'admin',在 Phase 1 会把已有的 super_admin 降级回 admin - 修复:计算
targetRole = (SUPER_ADMIN_EMAIL == ADMIN_EMAIL) ? 'super_admin' : 'admin',不再降级
Added
- 分组管理与书库 GroupBy 融合(v8.22.5 已实现)
- RSS 防重复检查
docs/website/index.html宣传网站(NodeByte 置顶 + TODO + 功能列表)- README TODO 待办列表
- README NodeByte 社区置顶
镜像
ghcr.io/cshdotcom/readest-lite:8.23.0ghcr.io/cshdotcom/readest-lite:8.22ghcr.io/cshdotcom/readest-lite:latest
升级
docker pull ghcr.io/cshdotcom/readest-lite:8.23.0
docker compose down && docker compose up -dRelease v8.22.5
v8.22.5 — 分组管理融合 + RSS 防重复
✨ 分组管理融合到书库 GroupBy=Groups
- 当书库选择「Group by → Groups」时,从
/api/book-groups拉取 BookGroup DB 条目 - 将 DB 中的空分组注入书架列表 — 用户在 GroupManagementModal 创建的分组现在会出现在书库中,即使没有书籍分配
- 已有书籍的分组不会被重复注入
🔧 修复 RSS 书籍重复(变成 2 本)
handleAddFeedSubmit增加防重复检查:如果书库已有相同 hash 的书,提示「已订阅」并跳过- 新增翻译:「Already subscribed to "{{title}}"」→「已订阅「{{title}}」」
📦 镜像
ghcr.io/cshdotcom/readest-lite:8.22.5ghcr.io/cshdotcom/readest-lite:8.22ghcr.io/cshdotcom/readest-lite:latest
⬆️ 升级
docker pull ghcr.io/cshdotcom/readest-lite:8.22.5
docker compose down && docker compose up -dRelease v8.22.4
v8.22.4 — 关键修复:超级管理员 + 文件复制 + RSS + 有声书
🔧 修复
1. env 配置的超级管理员不被识别
- 根因:
ensureAdminUser硬编码role: 'admin',从未读SUPER_ADMIN_EMAIL环境变量 - 修复:若
SUPER_ADMIN_EMAIL == ADMIN_EMAIL,则role = 'super_admin' - 已有用户也会自动升级 role(重启容器即生效)
2. 管理员文件管理器无法复制文件给自己
- 根因:v8.22.2 加了 "Cannot copy file to its owner" 检查阻止了这种情况
- 修复:移除该检查;目标已有文件时改为跳过(不报错)
3. 有声书点击无反应
- 根因:
player/page.tsx第 41 行被损坏(const etadata缺[M) - 修复:恢复为
const [metadata, setMetadata]
4. RSS 书籍无法打开
- 根因:
loadBookContent对feed://书籍抛BookFileNotFoundError(静默崩溃) - 修复:改为抛出清晰的中文错误提示,引导用户用书库视图浏览
5. 查看用户文件显示"仅管理员"
- 根因:超级管理员角色未被正确写入 DB →
validateAdmin拒绝 - 修复:通过上述 #1 的 super_admin role 修复间接解决
✨ 增强
批量复制到多个用户
/api/storage/copy支持targetUserIds数组(多目标)- AdminFileTransfer 目标用户改为可搜索+可多选下拉面板
- max-h-60 滚动不溢出
- 全选/清空/Done 按钮
- 搜索框实时过滤
- 复制时弹 toast:
Copied N file(s) to M user(s)
目标用户下拉面板
- 改为下拉面板(不是 datalist)
- 可搜索、可多选、可滚动、不溢出
- 移动仅支持单目标(多目标用复制)
🌐 翻译
- 新增 8 个简体中文键(目标用户下拉 + RSS 提示)
📦 镜像
ghcr.io/cshdotcom/readest-lite:8.22.4ghcr.io/cshdotcom/readest-lite:8.22ghcr.io/cshdotcom/readest-lite:latest
⬆️ 升级
docker pull ghcr.io/cshdotcom/readest-lite:8.22.4
docker compose down && docker compose up -d升级后浏览器硬刷新(Ctrl+Shift+R)清掉旧 SW 缓存。
Release v8.22.3
v8.22.3 — 内置 HTML5 有声书播放器 + NodeByte 社区置顶
🎵 内置有声书播放器(无需外部服务)
Readest Lite 现在自带内置有声书播放器,不再依赖 Audiobookshelf。直接上传 .mp3/.m4a/.m4b 即可播放。
新增 API:
GET /api/audiobook/metadata/[bookHash]— 返回该书的音频章节列表(自动按 fileKey 排序,提取章节标题)GET /api/audiobook/stream/[bookHash]?fileKey=...&token=...— 流式返回音频文件,支持 HTTP Range(拖动进度条),token 通过 URL 传递,24 小时 TTL
AudiobookPlayer 组件功能:
▶️ 播放/暂停/上一章/下一章- 🔍 拖动进度条跳转
- 🎚️ 音量调节 + 静音
- ⚡ 播放速度(0.75× / 1× / 1.25× / 1.5× / 1.75× / 2×)
- 💾 自动保存播放进度(每 5 秒),下次打开继续播放
- 🔁 自动连续播放下一章
- 📚 章节列表(点击切换)
bookService 改造:
- 上传 .mp3/.m4a/.m4b 自动识别为有声书,跳过 foliate-js 解析
- BookFormat 类型扩展:
'MP3' | 'M4A' | 'M4B' useOpenBook.ts:本地音频书也走/player路由
📌 NodeByte 社区置顶
README 顶部加入 for-the-badge 风格的社区入口徽章,NodeByte 社区链接放到最显眼位置:
📖 文档
- README 新增「🔊 有声书播放」详细章节,包括 3 种播放方式 + 播放器功能列表 + 鉴权说明
- ITERATION_PROMPT.md 更新到 v8.22.3
🌐 翻译
- 新增 14 个简体中文键(有声书播放器 UI)
📦 镜像
ghcr.io/cshdotcom/readest-lite:8.22.3ghcr.io/cshdotcom/readest-lite:8.22ghcr.io/cshdotcom/readest-lite:latest
⬆️ 升级
docker pull ghcr.io/cshdotcom/readest-lite:8.22.3
docker compose down && docker compose up -d升级后浏览器硬刷新(Ctrl+Shift+R)清掉旧 SW 缓存。
Release v8.22.2
v8.22.2 — 关键 CORS 修复 + 有声书教程页 + 体验改进
🔧 关键修复
根因:reader 页面 CORS 错误(download.readest.com / storage.readest.com)
之前打开书籍会闪现 CORS 错误并阻塞阅读体验。根因是客户端去 fetch 上游官方 CDN 的 release-notes.json 和 CJK 字体。修复:
helpers/updater.ts:checkForAppUpdates与checkAppReleaseNotes在 web 平台(非 Tauri)直接 short-circuit,不再 fetch 远程services/constants.ts:READEST_CHANGELOG_FILE/READEST_UPDATER_FILE改为本地相对路径/releases/...,READEST_PUBLIC_STORAGE_BASE_URL改为空字符串styles/fonts.ts:hostedCJKFonts改为空数组,不再引用 storage.readest.com 上的 CJK 字体(加载会 404 但不会 CORS 报错)- 新增
public/releases/latest.json与public/releases/release-notes.json(Lite 自有的本地更新日志)
📚 有声书点击改为应用内教程页
之前点击有声书只显示「Lite 不支持」冷冰冰提示。现在改为详细的「3 种播放方式」教程:
- 上传本地音频文件:支持 .mp3 / .m4a / .m4b
- 单文件有声书(.m4b 或单个 .mp3):直接上传
- 多文件有声书(多个 .mp3 章节):创建一个与书同名的文件夹上传
- 封面:可选 cover.jpg
- 从 Audiobookshelf(ABS)流式播放:在 设置 → 集成 → Audiobookshelf 配置服务器
- 导入带朗读的 EPUB:自动识别内嵌 audio narration
🎨 用户体验改进
- 用户中心布局:阅读统计卡片(最核心功能)移到第一位
- 管理员文件管理:AdminFileTransfer 默认折叠(与回收站一致),点击展开
- 移动/复制到自身:增加边界检查,错误信息友好
🌐 翻译
- 新增 15 个简体中文键(有声书教程 + 折叠 UI)
📦 镜像
ghcr.io/cshdotcom/readest-lite:8.22.2ghcr.io/cshdotcom/readest-lite:8.22ghcr.io/cshdotcom/readest-lite:latest
⬆️ 升级
docker pull ghcr.io/cshdotcom/readest-lite:8.22.2
docker compose down && docker compose up -d升级后浏览器需要硬刷新(Ctrl+Shift+R)清掉旧的 service worker 缓存。
Release v8.22.1
v8.22.1 — 修复 CI 构建失败
Fixed
- 移除
readera-import的未用变量author与NotionForm的未用useEffect/useCallbackimport(触发 noUnusedLocals TS6133)
镜像
ghcr.io/cshdotcom/readest-lite:8.22.1ghcr.io/cshdotcom/readest-lite:8.22ghcr.io/cshdotcom/readest-lite:latest
v8.22.0 主要功能
上游 v0.12.7 / v0.12.8 适配移植
- ReadEra 注释导入(上游 #6032):新增
POST /api/readera-import+ImportAnnotationsDialog入口 - Notion 笔记同步(上游 #5949):新增
NotionSettings+ 代理路由/api/notion/[...path]+/api/notion/sync-all+NotionForm组件 - 带登录的网页小说导入(上游 #6119):新增
POST /api/novel/proxy+ImportNovelDialog高级选项(Cookie + 自定义请求头)
修复 v8.21 用户反馈
- 分组管理点击没反应:GroupManagementModal 改用
createPortal渲染到document.body,避免 Dropdown 关闭时 unmount - 有声书点击闪退:
/playerpage 加<Suspense>包裹useSearchParams(Next.js 16 要求) - 创建用户无所属用户组选项:role select 永远显示;普通 admin 时 disabled;加提示文本
- AdminFileTransfer 用户列表可搜索:改用
<input list="...">+<datalist>,源/目标用户都可搜索
翻译
- 新增 32 个简体中文键 + 48 个 en 键
- 覆盖:有声书 / 角色 / 文件管理 / 分组 / ReadEra / Notion / 网页小说
升级方法
docker pull ghcr.io/cshdotcom/readest-lite:8.22.1
docker compose down && docker compose up -dRelease v8.21.1
v8.21.1 — 修复版
Fixed
ViewMenu.tsx使用了react-icons/md中不存在的MdFolderManage图标,CI 构建失败。改为MdCreateNewFolder。
v8.21.0 包含的功能(在 v8.21.1 中可用)
回收站批量选择
- 每行 checkbox +
selectedIdsstate - 工具栏:恢复选中 / 删除选中 / 取消选择
- Modal 顶部:全选 + 批量恢复 + 批量删除(带选中数)
- 批量删除前 confirm() 二次确认
管理员跨用户文件管理
/api/storage/list支持?userId=<id>与?allUsers=1- 新增
POST /api/storage/move与POST /api/storage/copy批量移动/复制到目标用户 /api/storage/delete支持?userId=<id>+?purge=trueAdminFileTransfer组件,集成到用户中心(仅 admin/super_admin 可见):- 用户下拉(默认「所有用户」)+ 文件名搜索 + 刷新
- 表格列表(粘性表头 + max 400px 滚动)
- 全选/反选 + 目标用户 + 移动/复制/回收/彻底删除 + 二次确认
分组管理(书库三点菜单底部)
- 新增 Prisma 模型
BookGroup(唯一约束userId+name+sortOrder) - 新增
GET/POST /api/book-groups与PUT/DELETE /api/book-groups/[id] - 删除分组同步清空
Book.groupName,重命名时同步更新 GroupManagementModal组件:- 顶部「新分组名称」+「添加」按钮(回车提交)
- 中部搜索框(按名称实时过滤)
- 每行:上下移排序 + 编辑按钮 + 删除按钮
- 行内编辑(回车保存 / Esc 取消)+ 删除前确认
- 列表可垂直滚动(max 360px),分组多时不溢出
中文翻译补全
- 新增 49 个简体中文键 + 75 个 en 键
- 覆盖:分组管理 / 回收站批量 / 跨用户文件管理 / 权限错误
镜像
ghcr.io/cshdotcom/readest-lite:8.21.1ghcr.io/cshdotcom/readest-lite:8.21ghcr.io/cshdotcom/readest-lite:latestghcr.io/cshdotcom/readest-lite:sha-ccaf36b
升级方法
docker pull ghcr.io/cshdotcom/readest-lite:8.21.1
docker compose down && docker compose up -dReadest Lite v8.19.8 — 角色选择 + SVG 头像
Readest Lite v8.19.8 — 角色选择修复 + SVG 头像修复
🐛 修复
1. 管理员无法选择角色创建用户
根因:canChangeRole 要求 user !== null,但创建用户时 user === null。
修复:允许创建和编辑时都能选择角色。
2. SVG 头像仍被拒绝
根因:isValidAvatarUrl 已移除 SVG 限制,但服务端错误消息仍说 "cannot be SVG"。
修复:更新所有错误消息和前端提示,明确接受 SVG。
3. 前端功能未生效的说明
用户运行的 Docker 镜像是旧版。升级到 v8.19.8 后所有功能生效:
- ✅ 头像显示(UserAvatar 组件)
- ✅ 超级管理员金色标识 + 管理员蓝色标识
- ✅ 用户详情查看(仅管理员可见 chevron 按钮)
- ✅ 分组管理(SelectModeActions「更多」下拉菜单)
- ✅ 每本书上传按钮(BookItem 云按钮)
- ✅ 操作日志 + 回滚(3 个 API 端点)
- ✅ 阅读统计同步(statsSync.ts)
- ✅ 有声书页面(/player/page.tsx)
📦 升级方式
docker compose pull && docker compose up -d必须硬刷新(Ctrl+Shift+R)清除旧缓存。