Commit Graph
74 Commits
Author SHA1 Message Date
Kiro Agent f15365d03c feat(shelf): 在读 / 想读 / 已读 and 分组 (prototypes 2 and 19)
Server: user_books gains reading_status. The shelf list computes each
book's readingState — an explicit 在读/已读 mark wins, otherwise progress
decides (>=99% 已读, started 在读), and 想读 gives way once reading starts —
filters by ?status=, and PUT /api/v1/books/:id/reading-status sets or
clears the mark.

Client: chips 全部/在读/想读/已读 and 分组 (a series or a tag from the
shelf's facets) above the toolbar, all kept in the URL; a state label on
each cover; the ⋯ menu marks 想读/在读/已读, clears the mark, or takes the
book off the shelf.

Docs: API, UI and media user guide for this and the other V3.1 gaps.
2026-10-20 04:47:06 +00:00
Kiro Agent 68e085482c feat(media): library management states and 扫描与元数据 (prototype 20)
Server:
- Scan jobs record the number of files listed (total), so a running scan
  can report a real percentage.
- New 扫描设置 business settings, shown as the page's 扫描与元数据 card:
  自动扫描新文件 (hourly rescan of every library, default on),
  刮削封面与简介 (after a completed scan, scrape items that have no online
  metadata and were never attempted, with the first configured provider;
  default off), 读取内嵌字幕与歌词 (default on; off hides embedded subtitle
  streams and lyrics tags), 扫描隐藏文件夹 (default off: names starting
  with '.' are skipped, e.g. ._film.mp4 resource forks).
- MediaAutomation runs the scheduled scans and post-scan scraping as the
  first active administrator; MediaScanner gains onFinished/isScanning.

Client:
- Each library card shows its latest scan: 上次扫描 今天 09:12 beside
  重新扫描; 正在扫描 · 已处理 62% with a progress bar and 取消; or the
  failure (路径不可访问…) with 重试 and 查看详情 (the tasks page).
  Starting or cancelling a scan now stays on the page; scan-jobs is polled.
- 扫描与元数据 card beside the list saves each switch with the settings
  revision, and hides itself on servers without these settings.
2026-10-20 04:41:03 +00:00
hectorqin 8584d7b4e3 fix(web): align React UI with legacy reader UX
Unify media secondary page chrome, loading states, playback controls, favorites filtering, and source/library screens with the legacy reader experience.
2026-10-05 13:23:27 +08:00
hectorqin a4586faadd feat(extensions): support file and batch actions 2026-10-02 23:30:08 +08:00
hectorqin 358d6005d1 feat(media): add batch match policies and richer recent playback 2026-10-01 13:30:28 +08:00
hectorqin 79eeb5ded6 test(android): cover asset origin login bootstrap 2026-10-01 08:09:29 +08:00
hectorqin 0166164c04 feat(media): add directory filename rules and replace folder routes 2026-09-29 15:35:07 +08:00
hectorqin 713d1eb5aa fix(media): recognize disc filenames under directory rules 2026-09-29 10:50:53 +08:00
hectorqin 2d13f11811 feat(media): support named season and edition groups 2026-09-29 09:59:56 +08:00
hectorqin 9bf885eabc fix(media): infer episode numbers for directory series 2026-09-29 09:48:38 +08:00
hectorqin dc2c96ae9a fix(media): apply inherited rules and clean release numbering 2026-09-29 09:38:33 +08:00
hectorqin 5f3a75c973 fix(media): keep folder navigation and honor directory season rules 2026-09-29 07:28:41 +08:00
hectorqin 0f06d6e9f3 fix(media): restore recognition scrolling and add bulk selection 2026-09-28 22:33:32 +08:00
hectorqin 385e68de78 feat(media): add directory recognition rules and reviewed reidentification 2026-09-28 17:53:30 +08:00
hectorqin f583b32e46 feat(media): clean missing resources by directory 2026-09-28 17:24:04 +08:00
hectorqin 501ca71f6b fix(media): prefer OpenList direct playback and open player before buffering 2026-09-28 13:39:47 +08:00
hectorqin ff976a4cf6 feat(settings): manage business configuration from admin pages 2026-09-28 12:38:54 +08:00
hectorqin 996f0c555e fix(media): accelerate remote scans and expose scan diagnostics 2026-09-28 10:58:02 +08:00
hectorqin 73f9eb6e20 feat(media): add isolated media libraries and playback
Support local and OpenList libraries, metadata, independent media navigation, themes, and audio/video playback. Preserve approved v2 prototypes and current documentation; archive superseded review artifacts and keep generated validation output outside version control.
2026-09-27 18:22:51 +08:00
hectorqin 06b3d09e22 feat(admin): manage users and invite-based registration 2026-09-24 17:19:48 +08:00
hectorqin 1d86efab34 feat(reader): add selection annotations and server-side book search 2026-09-24 16:03:35 +08:00
hectorqin 2d85c39756 feat(search): log stream termination reasons and plugin diagnostics 2026-09-24 11:48:42 +08:00
hectorqin 524d015b35 feat(plugins): load dependent forms on tab and selection changes 2026-09-24 11:26:57 +08:00
hectorqin 4cc7bff5f0 feat(plugins): add rule debugging workbench layout 2026-09-24 11:09:27 +08:00
hectorqin aa7aee051d feat(sources): organize source login and plugin management 2026-09-24 10:32:47 +08:00
hectorqin 7bff77eaf8 feat(reader): deliver P0-P2 reading tools and ecosystem integrations
Add reliable reading progress, verified backup and restore, reading tools, offline downloads, source quality checks, personal credential status, OPDS serving and verified WebDAV backup uploads.
2026-09-24 07:47:32 +08:00
hectorqin e3cabf4b1f feat(web): add PWA installation and offline app shell 2026-09-24 06:34:21 +08:00
hectorqin 95cb3134db feat(sources): support default source and refine switching UI 2026-09-23 15:16:15 +08:00
hectorqin 4896e5efc7 feat(reader): stream alternative sources and refresh current chapters
Add book information dialogs and compact toolbar actions with source provenance. Reuse Streamable HTTP for alternative discovery and preserve cached text when a forced refresh fails.
2026-09-23 13:16:54 +08:00
hectorqin 0a468992be feat(plugins): update installed packages while preserving source data 2026-09-23 12:42:14 +08:00
hectorqin cb96d48d62 fix(search): stop on stream disconnect and allow concurrent book actions 2026-09-23 11:41:24 +08:00
hectorqin a852682e0c fix(plugins): isolate all request timeouts and cancellations 2026-09-23 11:14:41 +08:00
hectorqin 0782202dae fix(plugins): isolate search stop failures and float operation feedback
A searchCancel deadline previously killed the shared plugin process and prevented subsequent acquisition. Release only the stop request and allow late cleanup to finish. Keep ordinary hard cancellation unchanged. Cover process and HTTP acquisition regressions and compact extension feedback without layout shifts.
2026-09-23 09:46:02 +08:00
hectorqin d7ebc3c898 feat(plugins): support web npm and tgz installation 2026-09-22 19:21:37 +08:00
hectorqin 72c4405435 chore: keep host repository plugin agnostic 2026-09-22 17:47:21 +08:00
hectorqin a131a8cc45 feat(plugins): add bounded diagnostic output 2026-09-22 15:56:22 +08:00
hectorqin 5f8554eadd feat(search): stream source results over HTTP 2026-09-22 14:38:36 +08:00
hectorqin 171297dc39 feat(search): add rolling multi-source sessions 2026-09-22 13:33:44 +08:00
hectorqin b49caf0ffc feat(sources): add cancellable batch search and configurable concurrency 2026-09-22 10:30:46 +08:00
hectorqin 3420bf07ce fix(library): 限定管理员上传并完善文件管理导航与布局 2026-09-21 15:25:28 +08:00
hectorqin 8e8ca23d3b fix(sources): 完善配置交互并增加真实端到端测试 2026-09-21 13:03:30 +08:00
hectorqin c27c505f24 feat(sources): 按书源实例隔离插件配置并拆分管理 Tab 2026-09-21 12:28:50 +08:00
hectorqin 964a666f5b feat(plugins): 支持独立配置页、多书源订阅与目录换源 2026-09-21 11:50:21 +08:00
hectorqin 5ecf918551 feat(plugins): support independently installed npm providers 2026-09-21 10:29:17 +08:00
hectorqin c192fc2f12 feat(sources): add configuration pages and chapter updates 2026-09-20 23:59:12 +08:00
hectorqin a6fddab953 feat(reader): 接入插件章节阅读与目录刷新
接入远程章节出版物、稳定定位、服务端与设备端缓存及手动刷新;补充账号隔离、同步并发保护、API 和设计文档。
2026-09-20 18:40:09 +08:00
hectorqin 037bdd6880 feat(sources): 增加内置 local、OPDS 与进程插件系统 2026-09-20 17:51:12 +08:00
hectorqin 31b5459a47 fix(web,server): 下架按下架的书 id 定位,书库两半各归其位 2026-09-20 12:32:43 +08:00
hectorqin ae397b6181 feat(web,server): 补全书架的加入/移除两侧并统一可见性判据 2026-09-20 11:52:15 +08:00
hectorqin 558f44e206 feat(web,server): 书架默认按最近阅读排,书库拆成预览与文件两页 2026-09-19 14:17:55 +08:00