Skip to content

Releases: GMD170629/ermao-library

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 09:58

v1.1.0

新增与改进

  • 支持在线更新。管理员可在“设置 → 关于”中检查并下载新版本,下载完成后点击“立即更新”,确认后即可安装。

Features and improvements

  • In-app updates are now available. Administrators can check for and download new versions in Settings → About, then select Update now and confirm to install.

v1.0.4

Choose a tag to compare

@github-actions github-actions released this 15 Sep 05:52

v1.0.4

修复与改进

  • 优化图片目录和有声书目录导入,减少大量图片或音轨带来的重复处理;新增或修改文件时,复用未变化文件的导入结果。
  • 修复临时读取错误或进程中断后,文件没有变化时无法通过书库或目录“继续导入”恢复的问题。已保存的有效结果会继续复用,单个文件失败不会让其他成功文件全部重做。
  • 改善扫描对新增、移动、删除文件以及目录元数据和封面变化的处理。目录无法完整读取时保留已有内容,避免把临时访问失败当作文件删除。
  • 修复智能书架的筛选和规则编辑。

升级说明

  • 升级会自动转换未完成的旧导入任务,保留已有书库、资源、有效资产和阅读进度,无需重建书库。无法确认历史文件处理版本时,再次处理对应资源可能需要进行一次保守重处理。

Fixes and improvements

  • Improve image-directory and audiobook-directory imports by reducing repeated work across large collections of pages or tracks. Adding or changing files reuses import results for unchanged files.
  • Fix library and directory Continue import actions failing to recover after temporary read errors or process interruptions when files have not changed. Valid saved results are reused, and one failed file does not force every successful file to be processed again.
  • Improve scanning of added, moved, and deleted files, as well as changes to directory metadata and covers. Incomplete directory reads preserve existing content instead of treating temporary access failures as deletions.
  • Fix smart-shelf filtering and rule editing.

Upgrade notes

  • Pending legacy import tasks are migrated automatically while preserving libraries, resources, valid assets, and reading progress. Libraries do not need to be rebuilt. When the previously processed file version cannot be established, the next import of that resource may conservatively process its files once more.

v1.0.3

Choose a tag to compare

@github-actions github-actions released this 14 Sep 05:11

v1.0.3

修复与改进

  • 图片目录和 PDF 缺少有效元数据封面时,自动使用首页作为封面。新导入自动生效,已导入资源可使用“重新生成封面”更新,并保留人工封面保护。
  • 修复普通 HTTP 环境下 Web 阅读器无法保存原文件的问题,下载完成并通过完整性校验后即可阅读。
  • 已缓存的原文件可直接打开,无需重复下载。升级后旧阅读缓存会清理,首次打开时需重新下载。

Fixes and improvements

  • Image directories and PDFs without valid metadata artwork now use their first page as the cover. This applies automatically to new imports; existing resources can use Regenerate cover. Manually protected covers are preserved.
  • Fix original-file storage in the Web reader over plain HTTP. Reading starts after the download completes and passes integrity checks.
  • Cached originals reopen without another download. Upgrading clears the old reading cache, so files need to download again on first use.

Android 测试版 / Android Beta

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Sep 11:22

Android 测试版 / Android Beta

来自 develop 的持续测试版本,可能存在未发现的问题;不代表正式发布或真机验收完成。
Continuous test build from develop. This is not a stable release or a claim of physical-device acceptance.

  • 安装下方 APK,可与现有客户端共存;首次需重新登录。后续安装测试版可保留其数据。
  • Install the APK below alongside the existing app. Sign in on first use; subsequent beta updates preserve beta app data.
  • 包名 / Package: com.ermao.library.beta
  • 构建 / Build: 98 (attempt 1); versionCode: 100098
  • 提交 / Commit: 3d3f976
  • CI: https://github.com/GMD170629/ermao-library/actions/runs/34804014204
  • 已通过 / Passed: mobile backend contracts; shared and Android tests/lint; CI emulator smoke/safety checks; beta package and signature verification.
  • SHA-256 (ermao-library-1.0.2-beta.98-3d3f9761-r1.apk): f845910fee0226d4faf0f48ce1edc5be64d527245260226c31d4e2f5999c1e73

下载 APK 及对应 .sha256 文件以校验完整性。Download the APK and matching .sha256 file to verify integrity.

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 13 Sep 14:32

v1.0.2

修复与改进

  • 改进 SQLite 并发写入:锁等待与 SQL 执行预算分别计算,导入任务完成写入可重试,避免重复执行已完成的导入工作。
  • Docker 部署支持浏览挂载目录,目录选择器展示挂载位置,方便配置书库与目标目录。
  • 优化 Android 内容浏览与图书标签编辑,保留启动图标原有颜色;低于 1% 的阅读进度显示为“<1%”,正确保留继续阅读状态。
  • 优化 Android 全屏音频播放器的系统栏背景与图标显示。
  • 优化 Web 书库新建和编辑表单、中英文布局、扫描开关与识别源设置;移除导入设置中重复的文件管理入口。
  • 统一交付 Android APK、fnOS FPK、SHA-256 校验文件及 amd64/arm64 Docker 镜像。Android 沿用正式签名并支持保留数据升级;补充提供 iOS 1.0.2(构建号 3)的 iPhone arm64 Release IPA 及 SHA-256 校验文件,最低支持 iOS 17。IPA 需用户自行签名后安装,不能直接安装;本次补包仅修正两处 Kotlin 导出枚举的 Swift 引用名称,不改变业务逻辑;原 v1.0.2 标签保持不变。尚未完成本次补包的真机安装与运行验收。

Fixes and improvements

  • Improve concurrent SQLite writes by separating lock waits from SQL execution budgets. Retry import completion writes without repeating completed import work.
  • Browse mounted folders in Docker deployments and identify mount locations in library and destination directory pickers.
  • Refine Android content browsing and book tag editing, and preserve the launcher's original colors. Reading progress below 1% now displays as “<1%” and correctly retains the continue-reading state.
  • Improve system bar backgrounds and icon appearance in the Android full-screen audio player.
  • Refine Web library creation and editing forms, Chinese and English layouts, scan switches, and metadata provider settings. Remove the duplicate file management entry from import settings.
  • Deliver the Android APK, fnOS FPK, SHA-256 files, and amd64/arm64 Docker image together. Android retains its stable signing identity for data-preserving upgrades. An iPhone arm64 Release IPA for iOS 1.0.2 (build 3), requiring iOS 17 or later, and its SHA-256 checksum are also provided. Users must sign the IPA themselves before installation; it cannot be installed directly. This supplementary package fixes only two Swift references to Kotlin-exported enum names, with no business logic changes; the original v1.0.2 tag is unchanged. Physical-device installation and runtime acceptance of this supplementary package have not yet been completed.

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 13 Sep 07:16

v1.0.1

修复与改进

  • 修复 v1.0.0 发布流程未能生成 fnOS 安装包的问题,统一交付 Android APK、fnOS FPK 和支持 amd64/arm64 的 Docker 镜像。
  • 正式发布会核验 APK 与 FPK 的完整性和 SHA-256;附件上传不完整时不会公开 Release,也不会切换稳定镜像标签。
  • 修复后端封面能力的依赖接线和导入任务批量写入,保留缺失封面时的空值行为及独立图书识别流程。
  • Android 正式版升级到 1.0.1,沿用原正式签名,支持从 v1.0.0 保留数据覆盖升级。iOS 同步源码版本,本次不提供 IPA。

Fixes and improvements

  • Fix the release pipeline that failed to produce the v1.0.0 fnOS package. Android APK, fnOS FPK, and the amd64/arm64 Docker image now share one stable release workflow.
  • Verify APK and FPK completeness and SHA-256 checksums before publication. Incomplete uploads cannot publish the Release or promote stable image tags.
  • Fix backend cover dependency wiring and batch creation of import tasks while preserving empty values for missing covers and the separate book identification step.
  • Update Android to 1.0.1 with the existing stable signing identity, allowing a data-preserving upgrade from v1.0.0. The iOS source version is synchronized; this release does not include an IPA.

v1.0.0

Choose a tag to compare

@GMD170629 GMD170629 released this 13 Sep 05:20

v1.0.0

简体中文

二毛图书 v1.0.0 集中完善原生阅读、书库导入、进度同步与日常管理。Web、服务端、Android、iOS 与共享阅读组件统一使用 1.0.0 版本标识。

  • 阅读与收听:原生客户端提供电子书、PDF、漫画和有声书入口;改进 TXT 目录及字号调整后的位置恢复、漫画阅读方向切换、音频旋转与章节衔接。阅读器保留原始文件,不持久化转换后的 EPUB 或解包副本。
  • 跨设备进度:统一第一方客户端的位置保存与同步,改进首页、详情和播放器的继续阅读展示;活动阅读会话发现远端新位置时提示用户,由用户选择跳转。已读状态与阅读位置分别保存。
  • 书库与元数据:按真实目录组织图书与卷册资源,支持平铺和卷册两种书库方式;分阶段导入与元数据识别,改进书名、作者、卷册标题及缺失封面的处理。
  • 下载与 Kindle:统一移动端下载、Kindle 列表和管理反馈;支持从整本图书选择可发送资源,并在发送前检查 EPUB/PDF 附件及 50 MB 限制。
  • 日常管理:图书和卷册删除只需一次确认,无需输入名称;完善用户管理、OPDS 设置、头像、日志与双语操作反馈。

安装与边界

Android 正式包名为 com.ermao.library,版本为 1.0.0(versionCode 1);独立测试渠道使用 com.ermao.library.beta,两者需分别登录。请从本版本 Release 附件获取 APK,并核对同名 SHA-256 校验文件。

v1.0 的验收范围为全新安装,不承诺从 0.x 数据库或客户端直接升级;请保留旧数据备份并使用独立应用数据目录。新版客户端发布前,应先部署匹配的后端,特别是卷册源文件删除接口。OPDS 提供目录、搜索与原文件下载,不提供第三方阅读进度同步;有声书不转码,实际解码能力取决于客户端。iOS 版本号同步不代表本次提供 IPA。

2026-09-13,项目负责人确认已完成验收并批准正式发布。此前未完成的候选验收台账已过时并从当前文档中移除。

English

Ermao Library v1.0.0 improves native reading, library imports, progress synchronization, and everyday management. The web app, server, Android app, iOS app, and shared reader packages use version 1.0.0.

  • Reading and listening: native clients provide ebook, PDF, comic, and audiobook entry points. Improvements cover TXT chapter and font-size position restoration, comic reading-direction changes, audio rotation, and chapter transitions. Readers retain originals without persisting converted EPUBs or unpacked copies.
  • Cross-device progress: first-party clients share position-saving and synchronization semantics, with improved resume information on home, detail, and player views. Active readers offer an explicit jump when a newer remote position is found. Completion status is stored separately from reading position.
  • Libraries and metadata: real directories determine books and readable resources, with flat and volume organization modes. Staged imports and metadata identification improve book titles, authors, volume titles, and missing-cover handling.
  • Downloads and Kindle: mobile download and Kindle lists share consistent management feedback. Book-level sending lets users select eligible resources, with EPUB/PDF attachment validation and a 50 MB limit before sending.
  • Everyday management: deleting a book or volume requires one confirmation without typing its name. User management, OPDS settings, avatars, logs, and bilingual operation feedback are improved.

Installation and limitations

The stable Android package is com.ermao.library, version 1.0.0 (versionCode 1). The independent beta channel uses com.ermao.library.beta and requires a separate sign-in. Obtain the APK from this Release's assets and verify it against the matching SHA-256 file.

The v1.0 acceptance scope covers fresh installations, without a promise of direct upgrades from 0.x databases or clients. Back up old data and use a separate application data directory. Deploy the matching backend before the new clients, especially the volume source-file deletion endpoint. OPDS provides browsing, search, and original downloads without third-party progress synchronization. Audiobooks are not transcoded; decoding depends on the client. Synchronizing the iOS version does not mean an IPA is included in this delivery.

On September 13, 2026, the project owner confirmed acceptance was complete and approved the stable release. Earlier incomplete candidate acceptance records are obsolete and have been removed from the current documentation.

v0.5.5

Choose a tag to compare

@github-actions github-actions released this 11 Aug 05:55

v0.5.5

简体中文

本版本修复了大书库启动时分类索引重建长时间占用 SQLite 写锁、导致正常查询或写入请求等待的问题。后台维护现在以最多 25 本为一批进行集合处理,优先让正常请求取得写锁;发生竞争时会快速退让并自动重试,不会丢失待处理状态。

索引重建同时改为批量读取和集合写入,显著减少数据库语句数量,并在并发元数据修改时跳过旧快照,避免旧索引覆盖新内容。重建过程保持分批提交、失败回滚、断点续跑及作品更新时间不变。

本版本还包含原生移动端界面对系统导航与原生控件的迁移,改进书库、书架、导入和服务器连接界面的平台一致性。

English

This release fixes large-library startup indexing holding SQLite's writer lock long enough to delay normal queries and writes. Background maintenance now processes at most 25 books per set-based batch, yields to regular requests, and quickly defers and retries on contention without losing pending work.

Facet rebuilding now uses bulk projections and set-based writes to substantially reduce database statements. It also rejects stale source snapshots after concurrent metadata edits, preserves restartable batches and rollback behavior, and leaves each work's visible update timestamp unchanged.

The release also includes the native mobile UI migration toward platform navigation and native controls across library, shelf, import, and server-connection surfaces.

v0.5.4

Choose a tag to compare

@github-actions github-actions released this 10 Aug 10:50

v0.5.4

简体中文

本修复版本解决了 EPUB 阅读器长按方向键翻页后,松开按键仍会持续翻页的问题。键盘自动重复现在会与实际翻页完成速度保持同步,松键后不会继续执行积压的翻页操作,同时仍保留长按连续翻页能力。

修复同时覆盖 EPUB 内嵌正文与阅读器外层界面的键盘输入路径,并保持左右方向、从右向左阅读、Page Up/Page Down、空格键和首尾跳转等既有导航行为。

English

This maintenance release fixes EPUB pages continuing to turn after a held arrow key is released. Keyboard auto-repeat is now paced by completed page turns, preventing queued navigation from running after keyup while preserving continuous navigation during a deliberate long press.

The fix covers both embedded EPUB documents and the outer reader shell while preserving existing left/right, right-to-left, Page Up/Page Down, Space, and start/end navigation behavior.

v0.5.3

Choose a tag to compare

@github-actions github-actions released this 10 Aug 09:56

v0.5.3

简体中文

本修复版本优化了大规模书库的浏览与筛选性能。智能筛选的作者、标签和丛书候选项改为有界的按需搜索,并支持可恢复的后台索引维护;书库列表与书架接口使用更轻量的查询和聚合结果,减少加载大型书库时的数据库与网络开销。

书库界面现在可在封面上显示阅读进度,作者、出版社、标签和丛书可直接带入筛选,作品详情补全文件大小、页数、章节数、时长和卷册数等汇总信息。进入并返回作品详情时会保留原有查询,继续阅读和书架数据也会更准确地选择可读卷册。

导入流程缩短了数据库事务范围,并改进文件处理进度、任务恢复和并发处理,降低导入期间的数据库占用。部署文档也补充了数据目录、权限、备份、反向代理和受支持格式说明。

开发中的原生移动端完善了服务器连接与账号会话、书库首页、书架和导入基础流程,并修正顶部与底部导航、大字体布局、继续阅读卡片和无障碍状态。原生阅读器仍在开发中。

English

This maintenance release improves browsing and filtering performance for large libraries. Author, tag, and series suggestions now use bounded on-demand search with recoverable background index maintenance, while library lists and shelves use lighter queries and aggregated projections to reduce database and network work.

Book covers can now show reading progress, and authors, publishers, tags, and series can be applied directly as library filters. Work details add file-size, page, chapter, duration, and volume summaries; returning from a work preserves the previous query, and continue-reading and shelf results select readable volumes more accurately.

Import processing now keeps database transactions shorter and improves file-processing progress, task recovery, and concurrent handling. The deployment guides also clarify data directories, permissions, backups, reverse proxies, and supported formats.

The native mobile client under development expands server connections and account sessions, the library home, shelves, and import foundations, while refining header and tab navigation, large-text layouts, continue-reading presentation, and accessibility states. The native reader remains in development.