Scour interest feeds link every entry through https://scour.ing/r/rss/<percent-encoded article URL>, so the wrapper became the article's canonical URL: the same post arriving via Hacker News and Scour never merged, and the publication fallback showed "scour.ing" instead of the site's own domain. Resolve the wrapper like the Google News redirector. `publication_label` re-canonicalizes the stored URL so the 477 articles saved with the wrapper show the real domain too. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VXYGBPoHZSDSfE5WcJ9bvj
78 lines
2.3 KiB
TOML
78 lines
2.3 KiB
TOML
[package]
|
|
name = "daily-epub"
|
|
version = "0.3.0"
|
|
edition = "2024"
|
|
|
|
[dependencies]
|
|
ammonia = "4.1.4"
|
|
anyhow = "1.0.104"
|
|
askama = "0.16.0"
|
|
async-trait = "0.1.92"
|
|
axum = "0.8.9"
|
|
axum-login = { git = "https://github.com/maxcountryman/axum-login.git", rev = "151c72d7a1b4646830f86b4332e6bd6e34d719a7", version = "0.18.0" }
|
|
base64 = "0.23.1"
|
|
clap = { version = "4.6.6", features = ["derive"] }
|
|
dom_smoothie = "0.18.0"
|
|
epub-builder = "0.8.3"
|
|
figment = { version = "0.10.19", features = ["toml", "env"] }
|
|
futures = "0.3.34"
|
|
hex = "0.4.3"
|
|
hmac = "0.13.0"
|
|
image = "0.25.10"
|
|
jiff = { version = "0.2.35", features = ["serde"] }
|
|
lettre = { version = "0.11", default-features = false, features = ["builder", "smtp-transport", "tokio1", "tokio1-rustls-tls", "hostname"] }
|
|
libc = "0.2.189"
|
|
password-auth = "1.0.0"
|
|
percent-encoding = "2.3.2"
|
|
rand = "0.10.2"
|
|
reqwest = { version = "0.13.4", default-features = false, features = [
|
|
"rustls",
|
|
"gzip",
|
|
"json",
|
|
"charset",
|
|
"http2",
|
|
"query",
|
|
"system-proxy",
|
|
] }
|
|
resvg = "0.48.1"
|
|
rpassword = "7.5.4"
|
|
scraper = "0.27.0"
|
|
serde = { version = "1.0.229", features = ["derive"] }
|
|
serde_json = "1.0.151"
|
|
sha2 = "0.11.0"
|
|
sqlx = { version = "0.9.0", default-features = false, features = [
|
|
"derive",
|
|
"json",
|
|
"macros",
|
|
"migrate",
|
|
"runtime-tokio",
|
|
"sqlite",
|
|
"tls-rustls-ring",
|
|
] }
|
|
thiserror = "2.0.20"
|
|
time = "0.3.55"
|
|
tiny-skia = "0.12.0"
|
|
tokio = { version = "1.53.1", features = ["full"] }
|
|
tokio-util = { version = "0.7.19", features = ["io"] }
|
|
toml = "1.1.4"
|
|
toml_edit = "0.25"
|
|
tower-http = { version = "0.7.0", features = ["trace", "fs", "request-id"] }
|
|
tower_governor = { version = "0.8.0", features = ["axum"] }
|
|
tracing = "0.1.44"
|
|
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
|
|
url = { version = "2.5.8", features = ["serde"] }
|
|
zip = { version = "6", default-features = false, features = ["deflate"] }
|
|
|
|
[profile.release]
|
|
# Per-request cost in the web server is JSON decode and template render, both
|
|
# CPU-bound and spread across crates; whole-program LTO and one codegen unit
|
|
# buy a slice of that for a longer release build (tests use the dev profile).
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
|
|
[dev-dependencies]
|
|
figment = { version = "0.10.19", features = ["test", "toml", "env"] }
|
|
roxmltree = "0.21.1"
|
|
tempfile = "3.27.0"
|
|
tower = { version = "0.5.3", features = ["util"] }
|