Skip to content

feat(opds): acquisition feeds and asset streaming - #146

Merged
phildenhoff merged 7 commits into
mainfrom
opds-2-feeds
Sep 18, 2026
Merged

phildenhoff merged 7 commits into
mainfrom
opds-2-feeds

Conversation

@phildenhoff

@phildenhoff phildenhoff commented Sep 18, 2026 •

Copy link
Copy Markdown
Member

Citadel's library lives on one machine, and readers like KOReader speak OPDS. Before anything else in this stack can work, the catalog half has to exist: feeds a reader can browse, and a way to hand over actual book files without client input ever becoming a filesystem path.

What changed

  • New citadel-opds crate, deliberately Tauri-independent: OPDS 1.x Atom catalog with root navigation (all / recent / unread), author, series, and tag facets, an OpenSearch description, and pagination.
  • Book file streaming with HTTP range request support, plus cover serving.
  • Asset resolution goes through libcalibre by opaque book ID — client-supplied strings never reach a path.
  • Tauri command wiring so the layers above have something to call.

One honest cut: asset reads are bounded synchronous File reads. Moving them onto the HTTP runtime's blocking adapter is deferred to CDL-23; nothing in the current handlers needs otherwise.

Validation

Covered by crate tests in this diff (asset resolution and books API in libcalibre, catalog and asset handling in citadel-opds); full workspace suite (348 tests) green at the final stack tip, including 62 citadel-opds tests.

Part of the OPDS v1 stack (bottom layer; #147 → #148 → #149 → #150 → #151 → #152 → #153 → #154 → #155 build on top).

@github-actions

Copy link
Copy Markdown

libcalibre Test Coverage Report

Overall coverage: 79.96%

📊 Download HTML Report

Coverage breakdown available in the artifacts.

@github-actions

Copy link
Copy Markdown

libcalibre Test Coverage Report

Overall coverage: 79.96%

📊 Download HTML Report

Coverage breakdown available in the artifacts.

@phildenhoff
phildenhoff marked this pull request as ready for review September 18, 2026 03:52
@github-actions

Copy link
Copy Markdown

libcalibre Test Coverage Report

Overall coverage: 79.96%

📊 Download HTML Report

Coverage breakdown available in the artifacts.

@github-actions

Copy link
Copy Markdown

libcalibre Test Coverage Report

Overall coverage: 79.98%

📊 Download HTML Report

Coverage breakdown available in the artifacts.

@github-actions

Copy link
Copy Markdown

libcalibre Test Coverage Report

Overall coverage: 79.98%

📊 Download HTML Report

Coverage breakdown available in the artifacts.

@github-actions

Copy link
Copy Markdown

libcalibre Test Coverage Report

Overall coverage: 79.98%

📊 Download HTML Report

Coverage breakdown available in the artifacts.

@github-actions

Copy link
Copy Markdown

libcalibre Test Coverage Report

Overall coverage: 80.16%

📊 Download HTML Report

Coverage breakdown available in the artifacts.

@phildenhoff
phildenhoff merged commit 00d499b into main Sep 18, 2026
7 checks passed
@phildenhoff
phildenhoff deleted the opds-2-feeds branch September 18, 2026 06:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant