Repository navigation
Releases: BookdockDevs/bookdock
Releases · BookdockDevs/bookdock
Release list
Bookdock v0.7.0
[0.7.0] - 2026-10-28
Highlights
- Edit TXT and EPUB book content in the browser, with local drafts and a review of changes before saving.
- Search online books in full with streaming results and progress.
Added
- A browser-based content editor for TXT and EPUB books, with chapter and text editing, change review, and local draft recovery. TXT editing supports chapter splitting and merging; EPUB editing offers table-of-contents and file views for adjusting navigation and reading order.
- After content edits, Bookdock maps reading progress, highlights, bookmarks, and notes to the new revision when their positions can be identified reliably. Records that cannot be safely located retain their original information instead of being assigned a guessed position.
- Online full-book search for EPUB and TXT scans the revision currently visible to the reader and streams matching excerpts and progress. Existing search settings are preserved; current-chapter and offline searches remain local.
Fixed
- Dragging the reader sidebar scrollbar no longer resizes the sidebar. The scrollbar stays at the panel edge, with a separate resize area on the reading side and a subtle grip shown only on hover or drag.
- Selection toolbars now follow visible text while scrolling, hide when the selection leaves the reading viewport, and clear on page turns and navigation without interrupting open note editors.
- Reader bookmarks retain their content revision, restoring the active bookmark button and ribbon marker; locatable legacy bookmarks remain visible.
- Clean reading no longer leaves a black video placeholder after hiding embedded media.
- Excerpt and idea share cards embed the selected fonts, including WenKai's imported stylesheets and Unicode subsets, so copied and saved images retain the chosen typeface. The preview displays the same prepared PNG used by both actions.
- Reading activity charts use consistent 24-hour labels, and library card menus become visible with a clear focus indicator when reached by keyboard.
- Reader settings sliders expose their names to assistive technology, and the page-turn zone help pointer aligns with its trigger.
- Legado volume rows no longer show their update timestamps as reading-page content.
Changed
- Refined reader settings contrast, segmented controls, toggle alignment, and section spacing for a more legible panel.
- Improved browser tab titles to clearly show current book titles and page names across views.
- Share cards show a loading state until image preparation finishes, disable copy/save while preparing, and offer retry after a failure. Changing the card discards outdated preparations and releases the previous preview.
- Legado EPUB audio/video resources support authenticated byte-range requests and HEAD metadata; the Vite development proxy preserves the browser-facing host so generated source URLs use the LAN address.
- Removed the obsolete update preview page.
Upgrade notes
- Back up the complete
DATA_DIRbefore upgrading. Migration 0057 adds the tables and fields used for content editing and revision mapping. Downgrading requires the pre-upgrade data with the matching previous release.
中文
[0.7.0] - 2026-10-28
亮点
- 在网页中编辑 TXT 和 EPUB 书籍内容,支持本地草稿和保存前查看修改。
- 在线阅读时支持全书搜索,逐步显示结果与搜索进度。
新增
- TXT 与 EPUB 书籍编辑工作台:支持编辑章节目录与正文、保存前查看差异,并在本地恢复草稿。TXT 支持拆分和合并章节;EPUB 提供目录和文件两种视图,分别调整导航和阅读顺序。
- 修改书籍内容后,阅读进度、划线、书签和笔记会在能够可靠定位时映射到新版本;无法安全定位的记录保留原有信息,不会猜测新位置。
- 在线阅读 EPUB/TXT 时,全书搜索按阅读器当前可见的内容版本扫描,逐批显示命中摘要和搜索进度,沿用已有搜索设置。当前章节及离线搜索仍使用本地流程。
修复
- 修复拖动阅读侧页滚动条时误触宽度调整的问题。滚动条保持贴边,宽度拖拽区独立放在正文一侧,仅在悬停或拖动时显示轻量握柄。
- 阅读器选中文本工具气泡会跟随可见文字滚动,选区离开正文视口时暂时隐藏,并在翻页或导航时清除临时选区;已打开的笔记编辑器不受影响。
- 阅读器书签现在会保存所属内容修订,恢复书签按钮的激活状态和位置丝带标记;仍可定位的旧书签也会继续显示。
- 纯净阅读隐藏内嵌媒体后,不再留下黑色视频占位框。
- 书摘和想法分享卡片正确嵌入所选字体,支持霞鹜文楷的导入样式表与字符分包,避免复制或保存图片时字体与预览不一致;预览、复制和保存共用同一张准备完成的 PNG。
- 阅读时段图统一使用 24 小时刻度;键盘焦点到达书库卡片的更多操作时,按钮和焦点边框会显示。
- 阅读设置滑杆向辅助技术提供设置名称,翻页点击区说明的尖角与触发按钮对齐。
- 开源阅读书源不再把分卷更新时间显示成阅读页正文。
变更
- 调整阅读设置的对比度、分段控件、开关对齐和分组间距,让面板更易读、观感更柔和。
- 优化浏览器标签页标题,在各页面统一清晰显示当前书名与页面名称。
- 分享图片准备期间显示加载态并禁用复制、保存,失败后支持重试;切换卡片配置时丢弃过期任务并释放旧预览,不再先显示默认字体再切换。
- 开源阅读书源的 EPUB 音视频资源现支持鉴权字节范围请求与 HEAD 元数据;Vite 开发代理保留浏览器访问时的 Host,生成的书源链接因此使用局域网地址。
- 移除已废弃的更新预览页面。
升级说明
- 升级前请备份完整的
DATA_DIR。迁移 0057 增加了内容编辑和版本映射所需的数据表及字段;如需降级,须使用与旧版本匹配的升级前备份。
Bookdock v0.6.5
[0.6.5] - 2026-10-25
Highlights
- The reader adds an end-of-book flow, configurable keyboard shortcuts, EPUB media playback, and word-level Edge TTS highlighting.
- The library adds batch downloads and undo for recent private-library actions.
Added
- The reader shows an inline end-of-book card after the final section with reading statistics and actions to mark the book finished or write a review. Stopping a manual timer opens a save dialog prefilled with the captured session; its description explains that saving adds the session to reading history, and the finished option is preselected at the book's end.
- Reader keyboard shortcuts can be customized, synchronized with the user's account, and opened directly with Shift + /. The reader supports configurable navigation history, playback, chapter-boundary, sidebar, search, settings, and font-size commands.
- Batch book downloads from the selection toolbar. Single selections use the existing download dialog and multi-book selections prepare a ZIP with each book's original or chosen export format, per-book replacement rules, partial retry, and existing permission checks.
- Undo recent private-library actions—shelf and category changes, tag adjustments, pinning, hiding, and moving books to trash—from the original notification or the configurable Ctrl/Command+Z shortcut.
- Edge TTS supports word-level highlighting from the service's real timing metadata. The sentence highlight remains visible while the current mapped word receives a deeper overlay; missing or unmappable boundaries keep sentence-level highlighting.
- EPUB embedded audio/video and Media Overlay use authenticated on-demand media URLs with HTTP Range seeking. The server prepares stored and deflated entries into a bounded disk cache, supports media up to 1 GiB per entry, and restores the existing retry control after native video errors.
Changed
- Unified discussion threads and detail modals across book reviews and reader ideas: extracted a shared
DiscussionThreadwith tabbed comments and likes, keyboard shortcuts (Ctrl/Cmd+Enter), and right-aligned publication timestamps on the tab bar. Time display logic between reviews and ideas now aligns to relative/short dates by default with full minute-accurate timestamps in hover tooltips. Standardized header action bar with consistent button ordering, tooltips, and private lock icon indicator. - Reader sidebar idea cards now support inline expansion for long notes (> 120 chars) and bounded discussion streams, eliminating extraneous modal navigation while reading.
- Redesigned confirmation dialogs to unify standard, destructive, and text-verified confirmation flows with consistent modal chrome, header close action, balanced button proportions, Enter-key submission for text matching, and background scroll-lock guards.
- Updated the Edge TTS consumer WebSocket handshake to the upstream v2
Sec-MS-GECflow. A single synthesis now returns its audio and word-boundary metadata together through the server gateway.
Fixed
- Archive book selection and view filters replace the current history entry, so Back no longer steps through each book viewed.
- Back buttons in the archive and reader stay within the app when there is no in-app history, instead of navigating to a blank page or opening a new tab.
- Book covers in library listings retain their loaded state in client memory to eliminate placeholder flicker when navigating back from the reader.
- Reopening a book no longer waits for post-mount network checks or flashes a 200 ms loading overlay.
- Switching between scrolled and paginated reading modes preserves the reading position without cumulative drift.
- Transparent book covers no longer show duplicate placeholder text after the artwork loads.
- When reader font preparation times out, the reader silently falls back to system fonts instead of showing a warning.
- Image-led volume headings no longer split awkwardly across columns in paginated reading.
中文
[0.6.5] - 2026-10-25
亮点
- 阅读器新增全书结束流程、自定义键盘快捷键、EPUB 音视频播放及 Edge TTS 词级高亮。
- 书库新增批量下载,并支持撤销近期的私有书库操作。
新增
- 阅读器在末章正文后展示全书结束卡片,汇总阅读数据并提供标记读完和书评入口。停止手动计时会打开预填本次会话信息的保存弹窗,说明保存后会将记录加入阅读历史;到达书末时默认勾选“标记为读完”。
- 阅读器现支持自定义键盘快捷键并同步到当前账号,也可按 Shift + / 直接打开快捷键菜单。可配置命令涵盖阅读位置历史、朗读、章节首尾、侧页、搜索、设置和字号调整。
- 书籍批量下载:可从批量操作栏下载所选书籍。单本沿用现有下载弹窗,多本打包为 ZIP,并支持保持原格式、统一 EPUB/TXT、逐本应用可用的文本替换规则,以及失败项重试;每本书仍使用现有下载权限校验。
- 私有书库支持撤销书架/归类、标签调整、置顶、隐藏和移入回收站等操作;可点击原操作通知中的撤销图标,也可使用可配置的 Ctrl/Command+Z 快捷键。
- Edge TTS 现支持根据服务返回的真实时间元数据进行词级高亮:整句底色持续保留,当前可映射的词叠加更深的高亮;缺少或无法映射边界时继续使用句级高亮。
- EPUB 正文音视频及 Media Overlay 改用鉴权的按需媒体 URL,并支持 HTTP Range 拖动播放。服务端将 ZIP stored/deflate entry 准备到有界磁盘缓存,每个媒体 entry 支持最大 1 GiB;原生视频加载失败时恢复现有重试入口。
优化
- 书评与想法详情弹窗及讨论流交互统一:抽象并共用
DiscussionThread讨论流组件,将发表时间整合至 Tab 栏(评论/赞)同行右侧,消除冗余分割线与垂直空隙。想法与书评详情时间统一采用相对/短日期展示,悬停浮现精确到分钟的完整时间戳;规范作者信息栏,私密状态统一以锁图标呈现。 - 阅读器侧栏抽屉中的想法卡片支持长文本(>120字)就地折叠展开与内嵌有界讨论流,保持阅读单流连续性。
- 确认弹窗重构与交互统一:重构确认弹窗视觉与结构,统一普通确认、危险操作与文本验证输入;对齐标准窗口系统的 Header/Footer 与关闭按钮,优化按键比例,支持文本确认回车提交与页面背景防穿透。
- Edge TTS consumer WebSocket 握手更新为上游 v2
Sec-MS-GEC流程;服务端在同一次合成中一并取得音频和词级时间元数据,再通过网关结构化返回。
修复
- 阅读档案内点选书籍或筛选视图时替换当前历史记录,返回时不再逐本经过此前浏览过的书籍。
- 阅读档案与阅读器的返回按钮在没有应用内历史时留在应用内,避免跳转到空白页或打开新标签页。
- 书架列表封面在客户端保留已加载状态缓存,消除从阅读器返回首页时封面从占位图闪烁的问题。
- 重新打开书籍时不再等待挂载后的网络检查,也不再闪现 200ms 加载遮罩。
- 翻页与滚动模式切换时保留阅读位置,避免反复切换造成进度漂移。
- 透明封面加载完成后不再显示重复的占位书名和格式文字。
- 字体准备超时后静默回退到系统字体,不再弹出警告打断阅读。
- 分页阅读中的带图卷名标题不再在分栏间意外拆开。
Bookdock v0.6.4
[0.6.4] - 2026-10-24
Highlights
- EPUB and TXT reading loads chapters on demand, prepares nearby content as you read, and keeps the current page visible until an updated revision is ready.
- Reading history now uses rebuildable server-side projections and paginated session history, improving reliability and avoiding full-history downloads.
Added
- Reading history projections can be rebuilt from durable session facts, with bounded recovery when stored projection versions are inconsistent.
Changed
- The default service port is now 18423 instead of 3000 for Docker and source deployments. The frontend development port remains 5173; explicit
PORTsettings remain supported. - Reader chapter delivery uses bounded shared caches, cancellation, and nearby-content prefetch. Reader loading and error states now use consistent, theme-aware views.
- Notification, note archive, review, and catalog trash reads batch database work while preserving existing access checks and pagination.
Fixed
- Owners can open their hidden private books directly and continue reading them without making those books appear in default listings.
- Reader content updates keep the current page until the replacement renderer is ready; failed replacements preserve the existing reader.
Upgrade notes
- Back up the complete
DATA_DIRbefore upgrading. Migration 0056 adds reading projection state and fields used to rebuild daily projections and paginate session history. Downgrading requires the pre-upgrade data with the matching previous release. - Update Docker port mappings and reverse-proxy upstreams for the new default, or keep the public port with a mapping such as
3000:18423. Pull/rebuild the image and recreate the container; in-app updates do not replace the old launcher or health check. If retaining an old image for in-app updates, first recreate it withPORT=3000explicitly set.
中文
[0.6.4] - 2026-10-24
亮点
- EPUB / TXT 阅读改为按需加载章节,并随阅读准备附近正文;新版本准备就绪前保留当前页面。
- 阅读历史改用服务端可重建投影并支持会话记录游标分页,提升可靠性,避免一次性下载完整历史。
新增
- 阅读历史投影可根据持久化会话事实重建;检测到已存投影版本不一致时,会进行有界恢复。
优化
- Docker 与源码部署的默认服务端口由 3000 调整为 18423。前端开发端口仍为 5173,继续支持通过
PORT自定义服务端口。 - 阅读器章节传输增加有界共享缓存、请求取消与附近正文预取;阅读加载和错误状态统一为适配主题的界面。
- 通知、笔记归档、书评和书库回收站查询批量读取数据库,同时保留原有访问校验与分页行为。
修复
- 书籍所有者可直接打开自己隐藏的私有书并继续阅读,书籍仍不会出现在默认列表中。
- 阅读内容更新时会保留当前页面,直到新阅读器准备完成;替换失败时继续显示原阅读器。
升级说明
- 升级前请备份完整
DATA_DIR。迁移 0056 新增阅读投影状态及字段,用于重建每日投影并支持会话历史分页。降级须使用升级前的数据和对应旧版本。 - 请同步调整 Docker 端口映射和反向代理上游地址;如需保留原访问端口,可使用
3000:18423映射。请拉取或重新构建镜像并重建容器,面板更新不会替换旧启动器和健康检查。若保留旧镜像使用面板更新,需先显式设置PORT=3000并重建容器。
Bookdock v0.6.3
[0.6.3] - 2026-10-23
Highlights
- Personal profiles bring your bio, reading overview, currently-reading books, ideas, and reviews together, with separate sharing controls.
- Shared-library activity brings new books, versions, content updates, and reader contributions into one filterable timeline.
Added
- Editable profile bios and public/private profile settings. Shared profiles are available to other signed-in users; reading overviews, currently-reading books, and activity can each be shared independently, subject to current access permissions.
- Personal activity timelines for ideas and reviews. Your own timeline includes private entries; other readers see only shared content they can currently access.
- Shared-library activity for new books, versions, content updates, ideas, and reviews, with filters and expandable batch records. Deletion and restoration records are visible only to library owners and administrators.
- Profile links from ideas, reviews, comments, replies, likes, notifications, and instance-user and library-member lists.
Changed
- Not on a shelf and Uncategorized move to the top of their respective sidebar lists and hide when empty, keeping the navigation tabs in place when switching views. Removing the last book leaves the current empty view open.
- The notification popover uses a more compact layout, and its bell stays highlighted while it is open.
- Inline idea editing groups visibility and image tools together, with theme-aware Save buttons and actions that wrap together in narrow panels.
Fixed
- Settings retain the selected section, user-management tab, and library when returning from a user profile or refreshing the page, without adding a history entry for each tab switch.
- Reader startup no longer reports a Bookdock font timeout for fonts controlled by the book. Bookdock font overrides still wait for the fonts needed by visible text.
Security
- Docker images and CI now use Node.js 22.23.4 with upstream runtime security fixes.
Upgrade notes
- Back up the complete
DATA_DIRbefore upgrading. Migration 0055 adds activity history and imports existing shared ideas and reviews using their original publication times; it does not reconstruct earlier book additions, updates, or deletions. Downgrading requires the pre-upgrade data with the matching previous release. - Pull the updated Bookdock image and recreate the container, or rebuild from updated source, to receive the Node.js runtime update. In-app updates replace application files only and do not upgrade Node.js.
中文
[0.6.3] - 2026-10-23
亮点
- 个人主页集中展示简介、阅读概览、正在阅读的书籍、想法与书评,各展示模块可独立控制分享。
- 共享书库动态集中展示新书、新版本、正文更新与书友发布的内容,支持按类型筛选。
新增
- 可编辑个人简介,将主页设为公开或私密;公开主页面向其他登录用户,阅读概览、正在阅读和动态可分别控制分享,展示内容遵循当前访问权限。
- 个人动态时间线集中展示想法与书评;本人可查看自己的私人条目,其他读者仅能看到当前有权访问的公开内容。
- 共享书库新增动态页,汇集新书、新版本、正文更新及书友想法、书评,支持筛选与展开批量记录;删除、恢复等管理记录仅书库所有者和管理员可见。
- 想法、书评、评论、回复、点赞、通知,以及实例用户和书库成员列表均可进入对应个人主页。
优化
- “未入架”和“未分类”移至各自侧栏列表首位,内部为空时隐藏,切换标签不再带动顶部导航上下移动;移走或删除最后一本书后,仍保留当前空页面。
- 通知浮层采用更紧凑的布局,打开期间铃铛保持高亮。
- 就地编辑想法时,公开设置与图片工具集中排列,保存按钮跟随主题配色;窄面板内操作按钮整体换行。
修复
- 从用户主页返回设置页或刷新页面后,会保留原先的设置分区、用户管理标签和选中书库;切换标签不会逐次增加返回记录。
- 书籍自行控制的字体不再被误报为 Bookdock 字体加载超时;启用 Bookdock 字体覆盖时,仍等待可见正文所需的字体。
安全更新
- Docker 镜像和 CI 升级至包含上游安全修复的 Node.js 22.23.4。
升级说明
- 升级前请备份完整
DATA_DIR。迁移 0055 新增动态历史,并按原始发布时间导入已有公开想法和书评;不会补造更早的新书入库、正文更新或删除记录。降级须使用升级前的数据和对应旧版本。 - 请拉取新版 Bookdock 镜像并重建容器,或使用更新后的源码重新构建,以更新 Node.js 运行环境;面板内更新仅替换应用文件,不会升级 Node.js。
Bookdock v0.6.2
[0.6.2] - 2026-10-22
Highlights
- Reflowable EPUB clean reading mode with isolated resource styling, clean typography, and reading position preservation.
- Streamlined reader settings "Display" panel with semantic grouping, collapsible secondary controls, and compact button styles.
- Hardened reader selection toolbar, deselect cleanup, and in-flight annotation mutation safeguards.
- Independent personal-library categories, two-level category tree navigation, and personal archive retention with explicit cleanup choice on removal.
Added
- Reflowable EPUBs offer clean reading with basic typography and hidden images and media. It supports reading presets and per-book overrides, and keeps your reading position when switched on or off.
- Personal-library categories are now independent of shelves, with two-level paths and optional recommendations created only when you save a selection.
- The reading-data API provides category breakdowns, including uncategorized reading history.
- Personal highlights, bookmarks, ideas and private reviews now stay in your archive after the original book file is deleted.
- Retained books keep their title, author, format and cover in the archive, shown as source unavailable instead of failing to open.
- Removing a book from your library, or deleting it, now offers to clear your personal data for that book: reading records, notes and more.
Changed
- Reorganized the reader settings "Display" panel into three semantic groups: Reading Method, Text Display, and Reading Aids. Secondary options for headers, footers, and peer idea styling collapse cleanly when their toggles are off without occupying layout space or entering keyboard tab order, and secondary option buttons use a more compact style.
- Jumping to an annotation in the reader always aligns the passage near the top of the page, instead of leaving it where it happens to be.
- The personal-library sidebar separates shelves, categories and tags. Books without a shelf appear under Not on a shelf, independently of Uncategorized books.
- Book details display and edit categories and tags; shelf organization remains available from the library and batch organizer.
- Redesigned book detail category and tag pickers into compact popover attributes: category picker supports two-level hierarchy with viewport-aware auto-flip, inline category creation, and collapsible template suggestions; tag picker uses removable selected pills paired with a searchable multi-select popover and inline creation.
- Batch organization uses consistent shelf, category and tag choices, explicit keep-unchanged options, compact category trees, and fixed dialog actions.
- Collecting a shared book copies its category path and merges tags by name into your library, without copying hidden or pinned settings or following later source changes.
- Archived notes, reviews and reading statistics leave out a book as soon as you choose personal-data cleanup, and come back when you restore it from the trash.
- Permanent deletion, emptying the trash and automatic cleanup honor that choice and remove only your own data for the book.
- Batch deletion applies the personal-data choice to owned books as well as collected ones.
- Enhanced backend performance and response aggregation across core modules:
BookDetailResnow includes shelf name, tags, and reading position directly in book details to eliminate sequential request waterfalls and layout shifting; session validation is cached in-memory with write-invalidation; SQLite connections usebusy_timeout,synchronous = NORMAL, and a 20MB cache size; unread notification counts are cached with event-driven invalidation; and book search and list queries push JSON extraction inside the subquery to minimize payload evaluation overhead. - Modal dialogs remove non-passive wheel blockers and full-screen backdrop blurs to restore native compositor-thread smooth scrolling; broad scrollbar hover pseudo-selectors are confined to dedicated scroll containers to reduce style recalculation churn.
- Manual timing confirms that the reading record was saved only after the server accepts it, and reading times below one minute are shown in seconds.
Fixed
- Clicking actions on the reader selection toolbar (such as highlighting, restyling, or note creation) no longer misidentifies clicks as outside events that unintentionally close open popovers or dismiss the top header.
- Clearing reader selection or dismissing selection menus synchronously clears native browser text selection, highlights, and note editor ranges.
- Annotation mutations add in-flight deduplication, guard against stale response race conditions overwriting current selection state, and roll back optimistic cache updates if the request fails.
- Opening a book keeps the reader theme, font size and spacing applied even when external fonts load slowly or time out, preventing a temporary white page with the book's original formatting.
- Reader immediately clears and suppresses header and footer summon states while any fullscreen modal or overlay is active, preventing accidental toolbar reveal when moving the mouse near top or bottom edges.
- Opening replacement rules from reader settings no longer leaves the reader header stuck open.
- Switching between shelf, category and tag navigation clears the previous dimension and pagination while retaining additional filters and existing link meanings.
- Category and tag reading totals use one authorized library entry per version, respect private-library metadata and visibility, and avoid counting duplicate links. Retained history without a current library entry remains included.
- Empty shelf, category and tag views use consistent hints; empty shared tags are labeled correctly, and failed category loads show retry instead of appearing empty.
- The archive no longer labels a note's position as unavailable when the book itself is gone; only the jump back to the original text is disabled.
- Unread notification counts refresh immediately when source access or target visibility changes, including when access is restored.
- Fixed page transition delay and two-phase loading waterfalls by setting TanStack Router's pending threshold to zero, enabling intent preloading on hover, adding matching pending skeletons for the reading archive and notification center, and hooking sidebar and account navigation into router preloading.
Upgrade notes
- Back up the complete
DATA_DIRbefore upgrading. Migration 0053 keeps your notes, reviews, comments and likes, and stops deleting them when a book is removed. Downgrading requires the pre-upgrade data with the matching previous release. - Migration 0054 preserves existing personal shelf IDs, settings and book assignments in a separate shelf table, and copies category paths and tags from valid shared sources for previously collected books. Recommended categories are not pre-created.
中文
[0.6.2] - 2026-10-22
亮点
- 可重排 EPUB 支持“纯净阅读”模式,提供纯粹排版与资源隔离,切换时无缝保持阅读进度。
- 重构阅读设置中的“显示”菜单结构,语义化分组,附属选项折叠收起且不占布局空间,采用紧凑选项样式。
- 加固划线选区工具栏交互、原生选区同步清除机制与在途标注保存保护。
- 私库分类与书架独立,支持两级分类导航树与紧凑属性选择弹层,删书留档与个人数据清理机制完善。
新增
- 可重排 EPUB 新增“纯净阅读”,使用基础文字排版并隐藏图片和音视频;支持阅读预设与仅本书设置,开关切换时保留阅读位置。
- 私库分类与书架独立,支持两级分类路径;推荐分类仅在选用并保存后按需创建。
- 阅读数据 API 新增分类分布,包含未分类的历史阅读数据。
- 个人划线、书签、想法与私密书评在原书文件被删除后仍保留在归档中心。
- 保留的书籍在归档中心继续显示书名、作者、格式与封面,并标注原书不可用,而不是直接打开失败。
- 从个人书库移出或删除书籍时,可以同时选择清理这本书的个人数据,包括阅读记录、笔记等。
变更
- 重构阅读设置中的“显示”菜单结构,按语义拆分为“阅读方式”、“正文显示”与“阅读辅助”三组;页眉、页脚与书友想法关闭时收起附属选项且不占用布局空间与键盘焦点顺序,简繁转换及展示方式等选项采用更紧凑的样式。
- 阅读器内跳转标注时始终把目标位置对齐到页面上方,不再因为目标恰好在可视区域而原地不动。
- 私库侧栏分为书架、分类与标签;未分配书架的书籍显示在“未入架”,与“未分类”独立。
- 书籍详情展示和编辑分类与标签;书架整理继续从书库首页和批量整理入口操作。
- 书籍详情中的分类与标签编辑交互重构为紧凑属性弹层:分类选择器支持两级层级树与视口自适应翻转、行内新建分类以及折叠式推荐分类;标签选择器支持已选标签直接快捷移除,结合支持即时过滤和行内新建的多选弹层。
- 批量整理统一书架、分类与标签的选择样式,明确提供保持不变的选项,分类树更紧凑,弹窗底部操作保持固定。
- 收藏共享书籍时,按分类路径映射到私库、按名称合并标签,不复制隐藏或置顶状态,也不自动跟随来源更新。
- 选择清理个人数据后,归档笔记、书评与阅读统计会先隐藏该书;从回收站恢复后重新出现。
- 彻底删除、清空回收站与自动清理都会遵循该选择,并且只清除你本人在这本书上的数据。
- 批量删除同样应用个人数据清理选择,个人书籍与收藏书籍一视同仁。
- 全项目核心后端性能审计与响应聚合优化:书籍详情接口直接携带书架名称、标签与阅读定位进度,消除多阶段请求瀑布与弹窗内容跳动;认证守卫引入会话 Token 内存缓存与精准失效机制,消除并发接口重复查询会话表;SQLite 数据库连接配置
busy_timeout、WALsynchronous = NORMAL与 20MB 页面缓存提升高并发写入稳定性;通知未读数轮询引入带事件失效的轻量缓存,避免全量实体扫描;列表与搜索查询将 JSON 提取下推至子查询内部,降低元数据传输与解析开销。 - 优化模态弹窗滚动与渲染性能:移除阻塞主线程平滑滚动的非被动 onWheel 拦截与全屏背景模糊,收敛全局通配符高频伪类以消除滚动时的样式重算掉帧。
- 手动计时在服务端确认保存后才提示阅读记录已保存,不足一分钟的阅读时长改为按秒显示。
修复
- 点击选区划线工具栏(包括划线、样式切换与笔记入口)时不再误触发外部点击判定,避免意外关闭设置弹层或收起阅读器顶栏。
- 关闭选区或清除选中文本时,同步清理浏览器原生选区高亮与相关气泡弹层。
- 划线与标注操作增加防重复提交限制、旧请求竞态保护以及保存失败时的乐观缓存回滚机制。
- 打开书籍时,即使外部字体加载缓慢或超时,正文仍保持阅读主题、字号与间距,不再短暂显示白底和书籍原始排版。
- 阅读器在打开任意全屏弹窗或遮罩时,立即清除并静默顶栏/底栏召唤状态,避免鼠标滑动到页面边缘时误触发栏位显隐。
- 从阅读设置打开替换规则弹窗时,顶栏不再因设置态残留而保持常显。
- 切换书架、分类与标签导航时清除前一维度条件及分页,保留附加筛选与旧链接语义。
- 分类与标签阅读统计为每个版本选定唯一合法馆藏,遵循私库元数据和可见性规则,避免重复关联造成重复计时;没有当前馆藏的保留历史仍会计入。
- 书架、分类与标签空状态统一;共享库空标签文案恢复正确,分类加载失败时提供重试,不再误显示为空。
- 原书已不存在时,归档笔记不再标注历史位置不可用,仅禁用跳转到原文的入口。
- 来源访问权限或想法、书评可见性变化后,通知未读数立即刷新;恢复访问时也会重新计入保留的未读通知。
- 修复子页面跳转卡顿与二次加载瀑布流:将 TanStack Router 挂起等待阈值设为零以消除点击无响应延迟,开启悬浮预加载,为“阅读档案”与“通知中心”补齐专属框架骨架屏,并将侧栏与账号菜单升级至标准路由预加载。
升级说明
- 升级前完整备份
DATA_DIR。迁移 0053 会保留你的笔记、书评、评论与点赞,并停止在书籍删除时一并清除;降级需要恢复升级前的数据并使用对应旧版本。 - 迁移 0054 将已有私库书架平移到独立表,保留书架 ID、属性及成员关系,并从合法共享来源为此前收藏的书籍映射分类路径、合并标签;不会预先创建推荐分类。
Bookdock v0.6.1
[0.6.1] - 2026-10-20
Highlights
- Track and maintain your reading history with calendars, trends, independent automatic/manual timers, and JSON backup or CSV export.
- Reader headers and footers leave unused positions clear; hidden controls no longer block text selection or links.
- More reliable book opening, remote downloads, and library navigation, with loading and retry feedback where needed.
Added
- Per-book reading data with a calendar, daily trends, time-of-day distribution, retroactive entries, and record editing/deletion without moving the reader's saved position.
- Week, month, year, and all-time archive views with date drill-down and matching book, note, and reading statistics.
- Personal reading history remains available after the original book is removed or becomes inaccessible. Reading data can be backed up/restored as JSON or exported as CSV, for one book or the whole account.
Changed
- Automatic and manual timing can be enabled independently, used together, or both disabled while keeping history and retroactive entry available. Both timers share a configurable suspension grace period, excluding time spent away.
- Reading captures survive page changes, refreshes, and temporary connection failures. Rejected records remain stored without blocking other books, and overlapping timed activity is counted only once per account.
- Reading statistics split known active intervals across local days and hours; a per-book reading day requires at least one minute. Historical reading volume and untouched record precision are preserved when content grows or records are corrected.
- WebDAV and S3 book reads use verified partial downloads when supported, reuse concurrent downloads, and fall back to whole-file caching when partial reads fail or small remote reads are slow.
- Reader startup waits for the fonts needed by visible text and avoids flashing a loading indicator during fast opens. If font preparation fails, reading can continue with a fallback font and a notice.
- Scrolling reader headers and footers use compact, opaque labels, leaving empty positions clear of the text. Paginated information fits within page margins without an extra band when all its fields are disabled.
- Book details provide direct access to reading data. The review shortcut opens your existing review or a new composer; publishing, converting a collected book to a personal book, and uploading another version move into More actions.
- Reader saves and background recovery stay quiet, without save-status warnings or retry buttons over the text.
- Animation now respects the operating system's reduced-motion preference across the whole app, instead of only on a handful of hand-marked elements.
- Loading screens announce themselves to screen readers and expose their busy state.
Fixed
- Hidden reader controls no longer intercept text selection or link clicks through invisible hover areas. Sidebar resizing and floating controls keep their hit areas within their actual bounds.
- Opening a book no longer briefly shows a white page or book-defined typography before the reader theme appears, including when chapter loads overlap.
- Text replacement rules are ready before the reader opens, avoiding a second load and relocation just after the first page appears.
- Rebuilding the reader for a text replacement or a Chinese conversion now covers the reading area while it is rebuilt, instead of briefly showing an empty or unstyled page.
- Refreshing library, shelf, and tag views preserves known names or shows local loading and retry states instead of briefly showing a default or unrelated title.
- Opening a shared-library link no longer loads personal books or exposes personal actions while the requested library is unresolved. Filter corrections and scroll restoration wait for the matching view.
- Recently Read shows a loading placeholder and retry after initial failures instead of silently disappearing while books load.
- Opening a book now applies saved reading settings before displaying its text, preventing a temporary default layout while preferences load. Failed initial settings or font-list loads offer a retry.
- Books can open correctly when a stored file size differs from the actual file size, including previously cached files.
- Uploading the same TXT file in different accounts or libraries no longer overwrites another generated book; repeated uploads within the same library still reuse the existing book.
- Remote downloads retain timeout protection until the response finishes, and incomplete downloads are discarded so subsequent opens can retry.
- Confirmation dialogs lock while their request is in flight, so double-clicking can no longer send a second destructive request and a dialog can no longer be dismissed mid-request.
- Replacing a highlight no longer loses the highlights it replaced when saving the new one fails.
- Drag-reordering shelves and tags keeps hidden items in their original slots instead of dropping them, and re-syncs with the server once the change settles.
- Registering an account no longer leaves the page treating the session as a guest.
- Instance-wide settings switches and the first-owner setup form can no longer be submitted twice at once.
- A failed library-preference change now rolls back only the field that failed, instead of undoing a newer successful change to a different field.
- Storage migration and restore actions report failures instead of failing silently.
- The WebDAV import queue always releases its lock when a run finishes, so cancelling or closing the panel no longer leaves importing permanently stuck.
- Moving a book to another category in a shared library now reports a failure instead of silently doing nothing.
Upgrade notes
- Back up the complete
DATA_DIRbefore upgrading. Migration 0052 converts existing reading history to the new model automatically; downgrading requires the pre-upgrade data and matching previous release. - Existing reading time and coverage are retained. Older records without detailed time or position information remain historical totals; the upgrade does not invent missing hourly activity or per-record coverage. Reading-data JSON exports do not replace a complete instance backup.
中文
[0.6.1] - 2026-10-20
主要更新
- 阅读数据支持日历、趋势与记录维护,自动记录和手动计时可独立使用,并提供 JSON 备份与 CSV 导出。
- 页眉页脚的空位置不再遮挡正文,隐藏控件不再拦截选字和链接点击。
- 改善书籍打开、远端下载与书库导航的稳定性,在需要时提供加载和重试反馈。
新增
- 单书阅读数据页提供阅读日历、每日趋势、时段分布、补录与记录编辑/删除,维护记录不改变阅读器保存的位置。
- 档案支持周、月、年和全部时间范围,可下钻到具体日期,书籍、笔记与阅读统计使用同一范围。
- 原书删除或不可访问后,个人阅读档案仍保留;支持单书或全账号阅读数据的 JSON 备份/恢复与 CSV 导出。
变更
- 自动记录与手动计时可分别开启、同时使用或全部关闭;关闭后仍可查看历史和补录。两种计时共用可配置的离开宽限,离开期间不计时。
- 阅读采集可在页面切换、刷新和临时断网后恢复;失败记录保留且不阻塞其他书籍保存,同一账号的重叠有效时段只计一次。
- 已知有效时段按记录时的本地日期与小时拆分,单书单日累计至少一分钟才计为阅读日;内容增长或纠正记录时,保留历史阅读量与未修改字段的原精度。
- WebDAV 和 S3 读取在支持时使用经过校验的分段下载,合并并发下载;分段读取失败或远端小段读取过慢时,回退为整文件缓存。
- 阅读器启动时等待可见正文所需的字体,快速打开时避免加载提示一闪而过;字体准备失败时会提示并使用替代字体继续阅读。
- 滚动阅读的页眉页脚改为紧凑的不透明信息标签,空位置不再遮挡正文;翻页信息栏复用页边距,整栏字段均关闭时不额外占用空间。
- 书籍详情可直接进入阅读数据;书评快捷入口打开自己的已有书评或新建编辑器,发布、转存为个人书籍和上传新版本移入“更多操作”。
- 阅读保存与后台恢复保持安静,不再在正文上显示保存状态警告或重试按钮。
- 应用内的动画现在遵循操作系统的“减少动态效果”偏好,不再只作用于少数手工标记的元素。
- 加载界面会向屏幕阅读器播报自身状态,并标记为忙碌状态。
修复
- 阅读器隐藏的控制栏不再通过透明热区拦截选字和链接点击;侧栏拖动把手与浮动控件的操作范围收紧到实际边界内。
- 打开书籍时不再先显示白底或书籍自带排版,再突然切换为阅读器主题;章节加载交错时也能正确应用主题。
- 文本替换规则在阅读器打开前就绪,避免首屏出现后再次加载并重新定位。
- 文本替换或简繁转换触发阅读器重建时,阅读区会被加载层覆盖,不再短暂露出空白或未排版的页面。
- 刷新书库、书架或标签页面时,保留已知名称,或显示局部加载与重试状态,不再短暂显示默认名称或无关标题。
- 打开共享书库链接时,先确认目标书库,再决定列表和操作权限;等待期间不请求个人书籍、不显示个人操作,也不提前调整筛选或恢复滚动位置。
- 最近阅读在首次加载和失败时提供局部加载与重试反馈,不再突然插入页面或静默消失。
- 打开书籍时先应用已保存的阅读设置,再显示正文,避免偏好加载期间短暂显示默认排版;首次加载设置或字体列表失败时可重试。
- 修复记录的文件大小与实际大小不一致时书籍无法正常打开的问题,包括已有本地缓存的文件。
- 修复不同账号或书库上传相同 TXT 时,生成的书籍文件可能互相覆盖的问题;同一书库内重复上传仍复用已有书籍。
- 远端下载的超时保护持续到响应接收完成,未完成的下载会被丢弃,后续打开可重新尝试。
- 确认对话框在请求进行期间会锁定,连点不再发出第二个破坏性请求,请求中途也无法关闭或按 Esc 退出。
- 替换划线时,若新划线保存失败,被替换的旧划线不再丢失。
- 拖拽调整书架与标签顺序时,隐藏项保留在原有位置,不再被丢弃;变更结算后会与服务端重新同步。
- 注册账号后,页面不再继续把当前会话视为访客。
- 实例级设置开关与首个所有者初始化表单无法再被重复提交。
- 书库偏好某一项保存失败时,只回滚该字段,不再连带撤销其他字段上已成功的修改。
- 存储迁移与还原操作会提示失败,不再静默失败。
- WebDAV 导入队列在一轮任务结束时必定释放占用,取消或关闭面板不再导致导入永久卡住。
- 在共享书库中把书籍移动到其他分类时,失败会提示,不再静默无反应。
升级说明
- 升级前完整备份
DATA_DIR。迁移 0052 随启动自动转换已有阅读历史;降级需要一起恢复升级前的数据与对应旧版本。 - 旧阅读时长与覆盖会保留;缺少详细时间或位置依据的记录仍作为历史汇总,不推测缺失的小时活动或逐条覆盖。阅读数据 JSON 导出不能替代完整实例备份。
Bookdock v0.6.0
[0.6.0] - 2026-10-16
Highlights
- Rate and review books with half-star ratings, formatted text, and images; share reviews and discuss them with other readers in the source library.
- A notification center keeps comments, replies, and likes on your ideas and reviews together, with unread counts and links to the discussion.
- A new archive brings your highlights, bookmarks, ideas, reviews, and reading statistics together, with search and browsing by book.
Added
- One review per reader per work, shared across its file versions, with an optional title, a 0.5–5 rating in half-star steps, and a body; a rating or body is required. Reviews can stay private or be shared in the source library, where visible ratings contribute to the average and rating distribution.
- A review editor with visual editing and Markdown source modes, plus comments, replies, likes, and liker lists on shared reviews.
- Image uploads for ideas and reviews: ideas support up to 9 images and reviews up to 20 images, each up to 5 MiB.
- Saved interaction notifications with unread counts, all/unread filters, mark-all-as-read, and discussion previews. Notifications and their targets follow current access permissions.
- An archive with a searchable book list, note-type filters, and a reading overview. Per-book views include reading time and progress, chapter/time sorting, highlight color/style filters, inline note editing, batch export/delete, and a start/continue-reading shortcut.
- Reader profiles show the reader's name, avatar, and shared reviews you can currently access. Your own notes and private reviews remain available only to you.
- Reading summary cards compare this month's reading time, books, and reading days with the same period last month.
Changed
- Notes use a consistent detail and editing experience in the reader and archive; notifications open the corresponding idea or review discussion.
- Library, settings, statistics, and notes views distinguish loading, failure, and empty results. Temporary refresh failures retain available content with a retry option, while loss of access clears cached content.
Fixed
- Back navigation in the reader, settings, statistics, and your profile falls back to the library when there is no previous in-app page, avoiding return loops or leaving the app. Exiting the archive restores the library's previous filters and scroll position.
- Switching accounts no longer reuses another account's cached settings.
- External storage connection failures are shown as errors with a retry action instead of appearing as an unconfigured connection list.
- Unresolvable reading-position links report that the position is unavailable instead of appearing to jump successfully.
Upgrade notes
- Back up the complete
DATA_DIRbefore upgrading. Migrations 0046–0051 run automatically on startup and cannot be undone in place. To downgrade, restore the pre-upgrade data with the matching previous release. - Existing reading progress files are imported automatically into the database on the first startup after upgrading; subsequent progress is saved in the database.
- Uploaded idea/review images stay in local storage, even when book files use remote storage. Include these files in your
DATA_DIRbackup; clearing the book cache does not remove them.
中文
[0.6.0] - 2026-10-16
主要更新
- 书籍支持半星评分与书评,可使用格式化正文与图片,并在来源书库内分享、参与讨论。
- 新增通知中心,集中查看想法与书评收到的评论、回复和点赞,支持未读计数与讨论跳转。
- 新增归档中心,集中管理划线、书签、想法与书评,按书检索浏览,并查看阅读统计。
新增
- 每人每作品可写一条书评,同一作品的不同文件版本共用书评;支持可选标题、0.5–5 分的半星评分与正文,评分和正文至少填写一项。书评可保持私密或在来源书库内分享,可见评分计入作品均分与评分分布。
- 书评编辑器支持可视化编辑与 Markdown 源码模式;共享书评支持评论、回复、点赞和点赞者列表。
- 想法与书评支持上传图片:每条想法最多 9 张,每条书评最多 20 张,单张图片不超过 5 MiB。
- 互动通知可保留查看,支持未读计数、全部/未读筛选、全部标为已读与讨论预览;通知展示和跳转遵循当前访问权限。
- 归档中心提供可搜索的书籍列表、笔记类型筛选与阅读总览。单书页面支持查看阅读时长与进度、按章节或时间排序、按划线颜色或样式筛选、直接编辑笔记、批量导出或删除,以及开始/继续阅读。
- 他人主页展示读者昵称、头像及你当前有权查看的共享书评;自己的笔记与私密书评仍仅本人可见。
- 阅读汇总卡片新增本月阅读时长、阅读书籍数和阅读天数与上月同期的对比。
变更
- 阅读器与归档中心采用一致的笔记详情和编辑交互,通知可直接打开对应的想法或书评讨论。
- 书库、设置、统计与笔记页面区分加载中、加载失败和空结果;临时刷新失败时保留已有内容并提供重试,失去访问权限后清除缓存内容。
修复
- 阅读器、设置、统计与本人主页没有可返回的应用内页面时,返回书库,避免返回循环或跳出应用;退出归档中心时恢复进入前的书库筛选与滚动位置。
- 切换账户时不再复用其他账户缓存的设置。
- 外部存储连接列表加载失败时显示错误与重试入口,不再误显示为尚未配置连接。
- 阅读位置链接无法解析时明确提示位置不可用,不再表现为跳转成功。
升级说明
- 升级前完整备份
DATA_DIR。迁移 0046–0051 随启动自动执行,不能原地撤销;降级需要一起恢复升级前的数据与对应旧版本。 - 升级后首次启动会自动将已有阅读进度文件导入数据库,之后的阅读进度统一保存在数据库中。
- 上传的想法/书评图片始终保存在本地,即使书籍文件使用远程存储也不例外。备份
DATA_DIR时应包含这些文件;清理书籍缓存不会删除它们。
Bookdock v0.5.0
[0.5.0] - 2026-10-11
Highlights
- Connect your NAS or object storage: browse and batch-import EPUB/TXT from WebDAV servers and S3-compatible services.
- Keep book files remotely with a configurable local cache, background archiving, and controls to migrate existing books or bring them back to local storage.
- AI searches chapters on demand within your reading scope, without a separate indexing step or persistent copies of chapter text.
Added
- Save and test multiple WebDAV or S3-compatible connections in Settings, then browse remote files and batch-import EPUB/TXT from the upload dialog.
- The instance owner can use a remote connection for book storage and set a local cache limit. New books are saved locally before background archiving; files no longer cached locally are fetched when needed, while covers stay local.
- A storage dashboard shows storage usage and transfer progress, with cache clearing, migration of existing books with pause/resume, and restore-to-local controls. Connection and file-availability checks guard storage switches.
Changed
- AI retrieval now searches chapters on demand and returns source citations within the selected reading scope and spoiler prevention bounds. Persistent chunk and search indexes are removed, along with the reader's manual index-building and cleanup controls.
Fixed
- TXT chapter detection recognises more bracketed headings, Chinese volume/chapter forms, and special sections such as prefaces, finales, and afterwords. Body lines such as 正文完, 第一回合, and 第一部分 no longer create false chapters. Built-in hierarchy presets are updated while user edits are preserved.
- Switching accounts restores cached reading settings immediately instead of briefly clearing font preferences. Reading preferences are also cached locally, and font lists are reused for five minutes.
- In-app updates retry briefly when Windows temporarily locks newly extracted files during release promotion.
Upgrade notes
- Back up the complete
DATA_DIRbefore upgrading. Migrations 0042–0045 run automatically on startup and cannot be undone in place. To downgrade, restore the pre-upgrade data with the matching previous release. - Migrations 0042–0044 add external storage connections, storage tiers, and transfer tasks. When using remote storage, back up remote book files separately: a
DATA_DIRbackup alone does not include files stored only remotely. - Migration 0045 removes the old AI chunk and search indexes. SQLite can reuse the freed space, but the database file may not shrink automatically. An optional offline
VACUUM;after a successful upgrade can reclaim that space.
中文
[0.5.0] - 2026-10-11
主要更新
- 接入 NAS 与对象存储:从 WebDAV 服务器和 S3 兼容服务浏览、批量导入 EPUB/TXT。
- 书籍文件可存放在远端,配合可设容量的本地缓存与后台归档,也能迁移已有书籍或还原到本地。
- AI 按阅读范围即时检索章节,无需单独建立索引,也不再持久化保存章节原文切片。
新增
- 在设置中保存、测试多个 WebDAV 或 S3 兼容连接,再从上传弹窗浏览远端文件、批量导入 EPUB/TXT。
- 实例所有者可将书籍存储设为远端连接,并设置本地缓存容量。新书先保存在本地,再后台归档;未保留本地缓存的文件会在需要时取回,封面仍保存在本地。
- 存储仪表盘展示空间占用与传输进度,支持清理缓存、暂停或恢复已有书籍的迁移,以及还原到本地。切换存储前会检查连接和文件是否可用。
变更
- AI 改为按需检索章节,在所选阅读范围与防剧透边界内返回原文引用。移除持久化切片与检索索引,同时取消阅读器中手动建立、清理索引的操作。
修复
- TXT 章节识别支持更多带括号标题、卷/部/话/集/篇写法,以及前言、大结局、感言等特殊章节;正文完、第一回合、第一部分等正文行不再被误切成章节。内置层级预设同步更新,保留用户自己的修改。
- 切换账号时立即恢复缓存的阅读设置,避免字体偏好短暂重置。阅读偏好也在本机缓存,字体列表缓存五分钟。
- 应用内更新在 Windows 暂时锁定新解压文件时进行短暂重试,避免版本切换因此失败。
升级说明
- 升级前完整备份
DATA_DIR。迁移 0042–0045 随启动自动执行,不能原地撤销;降级需要一起恢复升级前的数据与对应旧版本。 - 迁移 0042–0044 新增外部存储连接、文件存储分层与传输任务。使用远端存储时,请单独备份远端书籍文件:仅备份
DATA_DIR不包含只存放在远端的文件。 - 迁移 0045 移除旧 AI 切片与检索索引。SQLite 可复用释放的空间,但数据库文件不一定自动缩小;如需收回这部分磁盘空间,可在升级成功后停机执行
VACUUM;,这不是升级的必需步骤。
Bookdock v0.4.4
[0.4.4] - 2026-10-07
Highlights
- Ideas become discussions: public ideas support comments, replies, likes and liker lists; the reader gains side-by-side drawer and floating modal modes, 280–720 px draggable width, reading margin shifting, bottom composer, and custom card styles.
- Structured search expressions: library search supports combining plain words with exact
author:,tag:, etc. filters, boolean operators (&,|,!), and interactive condition chips. - Simplified identity & database architecture: legacy guest database identity and obsolete instance settings are fully retired; anonymous reading is client-only, and hidden content display is isolated per local account.
- Upload duplicate warning: uploading a file that matches an existing book prompts before creating a separate copy.
Added
- Reader ideas become discussions for collected shared books: eligible readers can publish public ideas bound to the exact source listing and version, with comments, one-level replies, likes and liker lists. Deleting a comment removes it and promotes surviving replies to top level without placeholders. Visibility defaults to the account's last successful choice and stays private until published.
- Reader ideas can be viewed in a side-by-side drawer sidebar or floating modal, with draggable width adjustment (280–720 px), bottom composer, reading margin shifting, and custom card layout styles.
- New
showFriendIdeasreader setting (synced across devices, defaults to on): shows other readers' idea markers without ever hiding your own. Revision mismatches disable markers and jumps instead of misplacing them. - Library search takes one expression that mixes ordinary words with exact
author:,series:,tag:,shelf:,category:,format:andstatus:conditions, combined with&,|,!and parentheses. Names match exactly, and an unknown or malformed value reports the position to fix instead of replacing the results. - The search box validates a draft against the real list before applying it, suggests names already in the library and shows one removable chip per condition. It applies on Enter, the search button, or 300 ms after typing stops rather than on every keystroke, and exiting restores the previous filters, page and scroll position.
- Uploading a file that matches an existing book now names it and waits for an explicit continue before adding a separate copy.
Changed
- "Show hidden items" is remembered separately for each account in the current browser, defaults to off, and returns to the previous choice after refresh or signing in again. It is not synced across devices.
- Signing out or losing the session immediately hides private hidden content while keeping the account's local preference. Switching accounts never inherits another account's choice, and guests cannot reveal hidden items.
- Turning off hidden display while reading a hidden private book saves pending progress before leaving the reader; failed saves keep the reader open for retry.
- The instance owner is the one account named by
instance.ownerUserId; theowner/memberrole is derived per request instead of stored on the account, and no account holds aguestrole. - Anonymous readers no longer have a database account.
GET /api/v1/auth/meanswers{ user: null, guest: true }, guest preferences and progress stay in the local browser, and personal data, downloads, exports and every change require a real account.
Fixed
- Searching cross-paragraph selections with multi-line whitespace from idea menus and annotations now correctly matches occurrences in book search.
- Chinese font stacks now include common Windows face names, which may change the physical font actually rendered; Latin-first fonts still lead with the CJK companion chain.
- AI "save as idea" now shows loading feedback and offers a retry when its settings fail to load, instead of silently doing nothing.
- Hidden-display changes now clear related list, search, detail, recent-reading, taxonomy, annotation and statistics caches, preventing stale hidden content from remaining visible.
- Hidden private-book links no longer reuse hidden-inclusive cached details when display is off; direct links never enable hidden display automatically.
- Filter reset affordances in the library context bar and the view menu are now icon buttons.
- Dismissing a finished update now clears its record so the entry returns on refresh, and interrupted updates no longer show later steps as done; failed dismissals stay open for retry while closing an active update keeps it running in the background.
- A failed system update no longer rolls back to a snapshot from another release, an unknown manifest format or one without an instance owner; the current database and the pending update are left untouched.
Upgrade notes
- The old shared browser preference is not migrated to any account. Each account starts with hidden display off until explicitly enabled.
- This switch controls display only. Book, shelf and tag hide flags and shared-library permissions are unchanged; it is not an unlock credential, and no PIN is introduced.
- Migration 0040 retires the legacy guest identity,
users.roleandinstance_settings. It runs once, cannot be undone in place, and stops rather than deleting data it does not recognise: back upDATA_DIRcompletely first, and never boot an older release against a migrated database. It also turns registration and guest access off once, which the owner can re-enable. - Migration 0041 adds idea discussion tables (
idea_comments,idea_likes,idea_comment_likes), idea provenance columns (source_library_book_version_id,revision_id,edited_at) and an author-cleanup trigger. It applies automatically on boot and, like 0040, cannot be undone in place. - Snapshots now record
formatVersion: 2with theinstancerow. Earlier snapshots stay listable and deletable but only roll back to the release they came from.
中文
[0.4.4] - 2026-10-07
主要更新
- 想法讨论区与全新侧边栏:公开想法支持评论、回复、点赞与点赞名单;阅读器新增侧边抽屉与居中弹窗双模式,支持 280–720 px 自由拖拽调宽、版心自适应避让与多种卡片样式。
- 结构化搜索表达式:书库搜索支持普通词与
author:、tag:等精确条件自由组合,支持&、|、!逻辑运算与胶囊标签交互。 - 游客身份与数据库模型精简:彻底退场旧数据库游客账号与旧配置表,游客转为纯前端轻量会话,个人隐私与隐藏内容展示按本地账号完全隔离。
- 藏书防重提醒:上传文件与已有藏书内容一致时主动提示,明确确认后才会另存副本。
新增
- 阅读想法长出讨论区:收藏过的共享书可发布公开想法,精确绑定来源书库与版本;支持评论、单层回复、点赞与点赞名单,删评论即整行删除、存活回复上提为顶级,不留占位。可见范围默认沿用上次发布成功的选择,发布前一律私密。
- 阅读器想法支持侧边抽屉与浮层弹窗双模式切换:侧边栏支持 280–720 px 拖拽调宽与阅读版心自适应避让,底部提供即时想法输入框,并支持多种卡片排版样式。
- 阅读器新增“显示书友想法”开关(多端同步,默认开):只显示他人的想法标记,自己的想法永远可见。版本对不上时标记与跳转直接禁用,不会错位。
- 搜索支持把普通词和精确条件写进同一个表达式:
author:、series:、tag:、shelf:、category:、format:、status:,可用&、|、!和括号组合。名称精确匹配;未知或格式错误的取值会标出要改的位置,而不是替换掉当前结果。 - 搜索框先对真实列表校验再生效:提示书库里已有的名称,每个条件显示为可单独移除的标签;改为按回车、点搜索按钮或输入停顿 300 毫秒才生效,不再逐字触发,退出搜索时恢复原来的筛选、页码和滚动位置。
- 上传文件与已有藏书内容一致时,先报出那本书的名字,等你点“继续上传”才会另存一份。
变更
- “显示隐藏内容”按账号在当前浏览器中分别保存,首次默认关闭;刷新或再次登录时恢复上次选择,不跨设备同步。
- 退出登录或会话失效后立即收起私库隐藏内容,同时保留该账号的本机偏好;切换账号不继承前一个账号的选择,游客始终不能显示隐藏内容。
- 关闭显示时,若正在阅读隐藏的私库书籍,先保存待写入的阅读进度,再退出阅读;保存失败时保留阅读页面,方便重试。
- 实例所有者改为
instance.ownerUserId指定的那一个账号;owner/member每次请求实时派生,不再存进账号,账号也不再拥有guest角色。 - 匿名读者不再有数据库账号。
GET /api/v1/auth/me返回{ user: null, guest: true },游客的偏好与进度仍留在本机浏览器,个人数据、下载导出和一切修改都需要真实账号。
修复
- 修复从想法详情或划线菜单搜索跨段落、多行空白的选中文本时无法命中正文的问题。
- 中文字体栈补齐 Windows 常用字名,同等设置下实际命中的物理字体可能变化;西文优先字体仍由西文字体打头、CJK 伴随补齐。
- AI“存为想法”在配置加载失败时显示加载或重试,不再点了没反应。
- 切换显示状态时同步清理列表、搜索、详情、最近阅读、书架、标签、标注和阅读统计等相关缓存,避免隐藏内容继续显示。
- 关闭显示后,隐藏私库书籍的链接不会复用此前包含隐藏内容的详情缓存;直接链接不会自动开启显示。
- 书库上下文栏与视图菜单的重置筛选改为图标按钮。
- 已结束的更新关闭即清理,入口刷新后恢复;中途取消不再把没走到的步骤标成完成;清理失败留窗重试,执行中关闭只隐藏、后台继续。
- 系统更新失败时,若快照来自其他版本、清单格式未知或缺少实例所有者,则拒绝回滚,保持当前数据库和待更新状态不动。
升级说明
- 旧公共浏览器偏好不会迁移给任何账号;各账号首次默认关闭隐藏内容,需自行开启。
- 此开关只控制展示,不修改书籍、书架和标签的隐藏标记,也不改变共享库权限;显示偏好不作为解锁授权,本次不引入 PIN。
- 迁移 0040 清理旧游客身份、
users.role列和instance_settings表。它只执行一次,不能原地撤销,遇到无法识别的数据会停下而不是删除——请先完整冷备份DATA_DIR,且不要用旧版本启动已迁移的数据库;同时会一次性关闭注册和游客访问,可由所有者重新开启。 - 迁移 0041 新增想法讨论表(
idea_comments、idea_likes、idea_comment_likes)、想法来源列(source_library_book_version_id、revision_id、edited_at)与账号清理触发器。随启动自动执行,与 0040 一样不能原地撤销。 - 快照清单改为记录
formatVersion: 2与instance行。旧快照仍可列出和删除,但只能回滚到它对应的那个版本。
Bookdock v0.4.3
[0.4.3] - 2026-10-04
Highlights
- Old library storage cleaned up behind the scenes: books, progress, and notes stay as-is, with a one-time automatic carry-over first.
- Rules become importable: text replacements and TOC presets support JSON import/export plus batch delete.
- Book details become editable in place: fix one field at a time, restore values from the source file, and change the cover without opening the large edit dialog.
- Dangerous actions ask for the name: deleting or transferring a library, and transferring the instance, now require typing the exact name.
- Notifications reworked: queued past three, repeats merged, and toasts clear of bottom bars; dialog save errors now show inline.
- Library navigation rewritten: sidebar rebuilt around the current library, plus a searchable right-side directory with batch actions; shared categories go two levels with subtree counts.
Added
- JSON import/export for replacement rules and TOC presets, with a preview step, duplicate-name suggestions, and disabled-by-default imports for review.
- Batch delete for both rule lists, with a selected-count and select-all.
- Drag-to-reorder for TOC presets; the order you see is the order applied.
- Single-field edit in book details: right-click a row (title, author, series, publisher, date, language, ISBN, subjects, synopsis) to fix just that field.
- Per-field and whole-form "restore from source", showing whether each value came from inside the file, from the file name, or from the shared version.
- Inline cover editing in book details: right-click the cover to replace or remove it.
- GIF avatars, with still images used where animation doesn't fit (e.g. share cards) and clear errors for oversized or broken GIFs.
- Currently-reading rows show an inline progress bar with percentage.
- Directory view for shelves, categories and tags: grouped browsing, independent search, the same select mode, and manager batch actions (pin, hide, delete) with counts.
- Two-level shared categories with flat personal shelves: both levels hold works, parent rows show subtree counts, and the view menu offers an include-subcategories switch (on by default).
- Category plus one tag can combine as filters; publishing uses the two-level target picker, and rename-plus-move saves atomically.
Changed
- Replacement rules are now listed in the order they take effect, with position numbers; grouping is display-only.
- Library deletion, library transfer, and instance transfer require typing the exact name, stay open and retryable on failure, and no longer confuse libraries when switching.
- Read-status and shelf labels in book details: click to filter, right-click to change the value.
- Sidebar rewritten around the current library: fixed brand, library switcher and all-books on top, shelves-or-tags panels in the middle with a directory shortcut, stats/settings/account at the bottom; panel state, expansion and scroll position are kept per library.
- Home gains a context bar listing only individually removable extra filters (keyword, format, read status, author, series).
- Toasts show at most three at once with the rest queuing; identical repeats update in place instead of stacking, and hover or keyboard focus pauses each independently.
- Toasts float above bottom action bars (batch bar, uploads, dialog footers, reader controls) and clear when switching accounts.
- Book-detail and append dialogs report save failures inline, flagging partial saves, instead of toasting.
- Toast copy names the outcome across more actions: catalog visibility per work and version, trash-empty counts, already-in-sync pushes, restored rule counts, pinning, version deletion, annotation batch delete, font uploads and settings sync.
- Scrollbars are thin and theme-aware app-wide, including the reader.
- Placeholder covers redrawn with spine lighting and a matte sheen, retuned dark-mode palettes, and a compact card size for list rows.
Fixed
- Restoring default AI prompts no longer brings your old edits back afterward.
- Reading stats no longer double-count the same version across libraries and handle deleted books gracefully.
- Class-based dark mode (
.dark) works again.
Upgrade notes
- Back up the complete
DATA_DIRbefore upgrading. Migrations 0038-0039 apply automatically. - The old-storage cleanup cannot be undone in place: to go back, restore the database plus
files/snapshot together.
中文
[0.4.3] - 2026-10-04
主要更新
- 旧书库存储在后台清理:书籍、进度、笔记原样保留,先自动搬运一次,无需操作。
- 规则可导入导出:替换规则与目录预设支持 JSON 导入导出与批量删除。
- 书籍详情可就地改:一次只改一个字段,可从来源恢复,封面不用进大编辑框。
- 高危操作需输入名称:删库、转让书库、转让实例需输入准确名称。
- 通知重做:超过三条排队,重复合并,不再遮挡底部操作栏;弹窗保存失败改为行内报错。
- 书库导航重写:侧栏围绕当前书库重建,右侧目录支持搜索与批量操作;共享分类支持两级并显示子树数量。
新增
- 两类规则的 JSON 导入导出:导入前预览,重名自动建议新名,导入项默认禁用,确认后再启用。
- 两类规则的批量删除:支持全选与已选计数。
- 目录预设支持拖拽排序,所见顺序即生效顺序。
- 详情单字段快编:右键标题、作者、丛书、出版社、日期、语言、ISBN、主题、简介等行,只改该字段。
- 逐字段与整单“从来源恢复”,恢复前说明值来自文件内、文件名推断还是共享版本。
- 详情封面内联编辑:右键封面直接换图/删图。
- GIF 头像:动图不合适的地方(如分享卡)用静态图;超大或损坏的 GIF 明确报错。
- 在读行显示带百分比的行内进度条。
- 书架/分类/标签的右侧目录:分组浏览、独立搜索、同样的选择模式,管理员可批量置顶/隐藏/删除并显示数量。
- 共享分类支持两级、私人书架保持平级:两级都可放作品,父级显示子树数量,视图菜单可开关“包含子分类”(默认开)。
- 分类可与一个标签组合筛选;发布改用两级目标选择器,改名加移动一次原子保存。
变更
- 替换规则按生效顺序展示并带序号,分组只做展示标签。
- 删库、转让书库、转让实例需输入准确名称;失败留在框内可重试;中途切换书库不会串确认框。
- 详情里的阅读状态与书架标签:左键筛选,右键改值。
- 侧栏围绕当前书库重写:顶部固定品牌、书库切换与全部书籍,中部书架或分类面板加目录入口,底部统计/设置/账户;面板状态、展开与滚动位置按书库记住。
- 首页新增条件栏,只列出可单独移除的附加筛选(关键词、格式、阅读状态、作者、系列)。
- 通知最多同时显示三条,多余排队;重复通知原位更新不再堆叠,悬停或键盘聚焦可暂停。
- 通知浮于底部操作栏之上(批量操作栏、上传面板、弹窗底部、阅读器控件),切换账号清空通知。
- 书籍详情与追写弹窗的保存失败改为行内报错,部分保存明确标出,不再弹通知。
- 通知文案点名结果:目录显隐、回收站数量、已一致推送、补回规则数,以及置顶、版本删除、标注批量删除、字体上传、设置同步。
- 滚动条全应用变细并跟随主题,阅读器也一致。
- 占位封面重绘(书脊高光、哑光质感),深色配色重调,列表行用紧凑卡片尺寸。
修复
- 恢复默认 AI 快捷指令后,不再把旧草稿写回去。
- 阅读统计不再跨馆重复计数,遇到已删书也能正常显示。
.dark深色切换恢复生效。
升级说明
- 升级前请完整备份
DATA_DIR。迁移 0038–0039 自动执行。 - 旧存储清理不可原地撤销:回退需把数据库与
files/快照一起恢复。