Keep every enclosure on an item, and view without downloading

The rss crate keeps at most one enclosure per item and, when a feed ships
several, silently keeps the last -- so a two-file item lost its first
file. enclosures_by_item reads them from the XML in document order,
unescaping attributes so a URL's & survives. The row summarises the
one you would act on and counts the rest; the pane below lists them all.

Non-media enclosures gain a View link opening in a new tab: the
publisher's URL, or the local copy once downloaded. A direct link, not a
proxy, so the daemon does not become a fetch-anything relay.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AdXho5tTkjFLeUXKbEjKBh
This commit is contained in:
2026-09-10 18:01:25 +00:00
parent 6d6b4dd1e4
commit dd9c0881ee
11 changed files with 212 additions and 21 deletions

16
Cargo.lock generated
View File

@@ -187,7 +187,7 @@ dependencies = [
"chrono",
"derive_builder",
"diligent-date-parser",
"quick-xml",
"quick-xml 0.41.0",
]
[[package]]
@@ -1568,6 +1568,7 @@ dependencies = [
"librqbit",
"opml",
"percent-encoding",
"quick-xml 0.42.0",
"reqwest",
"rss",
"rusqlite",
@@ -2037,7 +2038,7 @@ dependencies = [
"httparse",
"librqbit-dualstack-sockets",
"network-interface",
"quick-xml",
"quick-xml 0.41.0",
"reqwest",
"serde",
"serde_derive",
@@ -2537,6 +2538,15 @@ dependencies = [
"serde",
]
[[package]]
name = "quick-xml"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41b1177fdf999d2321d3fb46ff47159d9c1fb9ad66a4879f8c50a0b504615e9b"
dependencies = [
"memchr",
]
[[package]]
name = "quinn"
version = "0.11.11"
@@ -2858,7 +2868,7 @@ checksum = "f505d3e5e7b06b4dc0245b13294f8ef9a1a0f70284708be1e11c5b7b7441034e"
dependencies = [
"atom_syndication",
"derive_builder",
"quick-xml",
"quick-xml 0.41.0",
]
[[package]]