mirror of
https://git.pumpin.online/funkpower/catena.git
synced 2026-10-22 18:57:14 +00:00
The harness compared these tools against the code they replaced — Python imported from book-pipeline, podcast-pipeline and knowledge-mcp, and JavaScript copied out of the podcast media server and indexer, each pinned to a commit. All of it has since been deleted, so the live half cannot run and the golden half pins answers against a source nobody can consult. What was worth keeping was never the comparison. `KNOWN.md` argued, at length, why a dozen of these tools deliberately do something a reader would not expect: why pdfgutter measures the crop box throughout, why avplan finds the encoder rather than reading one out of the environment, why mdscrub will not manufacture a page boundary. Those arguments are about this code and stand on their own, so they are now `docs/decisions.md`, rewritten to say what each tool does and why rather than what it does differently. Binding coverage is unaffected: the bindings carry 24 tests of their own, a node smoke test against the built package, and a typecheck.
81 lines
3.2 KiB
TOML
81 lines
3.2 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*"]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.85"
|
|
license = "MPL-2.0"
|
|
repository = "https://git.pumpin.online/funkpower/catena"
|
|
|
|
[workspace.dependencies]
|
|
catena-cli = { path = "crates/catena-cli", version = "0.1.0" }
|
|
corpus-core = { path = "crates/corpus-core", version = "0.1.0" }
|
|
cuekit = { path = "crates/cuekit", version = "0.1.0" }
|
|
textkit = { path = "crates/textkit", version = "0.1.0" }
|
|
chunkmd = { path = "crates/chunkmd", version = "0.1.0" }
|
|
mdscrub = { path = "crates/mdscrub", version = "0.1.0" }
|
|
mdsplit = { path = "crates/mdsplit", version = "0.1.0" }
|
|
pdftriage = { path = "crates/pdftriage", version = "0.1.0" }
|
|
cuenorm = { path = "crates/cuenorm", version = "0.1.0" }
|
|
cueseg = { path = "crates/cueseg", version = "0.1.0" }
|
|
rrf = { path = "crates/rrf", version = "0.1.0" }
|
|
cuepack = { path = "crates/cuepack", version = "0.1.0" }
|
|
bibclean = { path = "crates/bibclean", version = "0.1.0" }
|
|
avplan = { path = "crates/avplan", version = "0.1.0" }
|
|
pdfgutter = { path = "crates/pdfgutter", version = "0.1.0" }
|
|
catena = { path = "crates/bindings", version = "0.1.0" }
|
|
seriesof = { path = "crates/seriesof", version = "0.1.0" }
|
|
idnorm = { path = "crates/idnorm", version = "0.1.0" }
|
|
bibfetch = { path = "crates/bibfetch", version = "0.1.0" }
|
|
bookmeta = { path = "crates/bookmeta", version = "0.1.0" }
|
|
langid = { path = "crates/langid", version = "0.1.0" }
|
|
tocfind = { path = "crates/tocfind", version = "0.1.0" }
|
|
booksniff = { path = "crates/booksniff", version = "0.1.0" }
|
|
citefind = { path = "crates/citefind", version = "0.1.0" }
|
|
emb = { path = "crates/emb", version = "0.1.0" }
|
|
|
|
clap = { version = "4", features = ["derive"] }
|
|
clap_mangen = "0.3"
|
|
pyo3 = { version = "0.27", features = ["extension-module", "abi3-py39"] }
|
|
wasm-bindgen = "0.2"
|
|
serde-wasm-bindgen = "0.6"
|
|
deunicode = "1"
|
|
fancy-regex = "0.16"
|
|
# 0.38 is the last release that builds on the pinned toolchain; the ones
|
|
# after it need a newer compiler than the rest of this asks for.
|
|
lopdf = { version = "0.38", default-features = false }
|
|
# Reading one small member out of an EPUB. Default features pull in four
|
|
# compression backends; an EPUB is deflate or nothing.
|
|
zip = { version = "2", default-features = false, features = ["deflate"] }
|
|
regex = "1"
|
|
schemars = "1"
|
|
serde = { version = "1", features = ["derive"] }
|
|
# float_roundtrip: without it a float read back from JSON can be one unit in
|
|
# the last place away from the one that was written, which would make a
|
|
# record that round-trips through a pipe not the record it started as.
|
|
serde_json = { version = "1", features = ["float_roundtrip"] }
|
|
thiserror = "2"
|
|
unicode-general-category = "1"
|
|
unicode-normalization = "0.1"
|
|
ureq = { version = "3", features = ["json"] }
|
|
tiktoken-rs = "0.12"
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
missing_docs = "warn"
|
|
|
|
[profile.release]
|
|
strip = true
|
|
lto = true
|
|
codegen-units = 1
|
|
|
|
# The Python extension module, which cannot be stripped the way a binary can.
|
|
# Stripping a dylib's symbols leaves one macOS refuses to load at all —
|
|
# "mis-aligned LINKEDIT string pool" — and there is nothing to strip for
|
|
# anyway, since the interpreter resolves its symbols at load time.
|
|
[profile.wheel]
|
|
inherits = "release"
|
|
strip = false
|