[workspace]
members = ["benchmark"]

[package]
name = "readex"
version = "0.19.0"
edition = "2024"
rust-version = "1.85"
authors = ["Martin Davidson <martingdavidson@gmail.com>"]
license = "MIT OR Apache-2.0"
description = "HTML main-content extraction (article body, title, metadata) — Rust ports of Mozilla Readability, Trafilatura, and htmldate."
repository = "https://github.com/0x4D44/readex"
homepage = "https://github.com/0x4D44/readex"
documentation = "https://docs.rs/readex"
readme = "README.md"
keywords = ["html", "extraction", "readability", "trafilatura", "content"]
categories = ["text-processing", "parser-implementations"]

# Development artefacts kept out of the published tarball.
# - wrk_docs/ / wrk_journals/ / notes/ — design docs, journals, scratchpads.
# - benchmark/ — workspace member crate (its own Cargo.toml has publish = false).
# - examples/ — current contents are M9/M10/M11 dev probes; a clean public
#   example will land in 0.19.1.
# - tests/ — integration / parity gates depend on the benchmark/ oracle
#   harness and corpus, which are intentionally not part of the published
#   crate. Tests remain in the GitHub repo for project development.
# - *.log — local dev logs (build_run.log, gates_after.log).
# - .claude/ — local Claude Code workspace config.
exclude = [
    "/wrk_docs/",
    "/wrk_journals/",
    "/notes/",
    "/benchmark/",
    "/examples/",
    "/tests/",
    "/.claude/",
    "*.log",
]

# Version-bump rationale, anti-inversion catches, parity-gate verdicts, and
# dependency-pin justifications for every prior release (mdrcel 0.0.1 through
# 0.18.8, plus this 0.19.0 rename release) are recorded in CHANGELOG.md.

[dependencies]
# Parser-equivalence version-bump fence: html5ever / markup5ever_rcdom /
# tendril / web_atoms are pinned EXACTLY because any of them can shift HTML
# parsing semantics in ways that break differential-equivalence with the
# Mozilla Readability (JS) and Trafilatura (Python) oracles. Bumps require
# the parser-equivalence BLOCKER gate to be re-run green. See CHANGELOG.md
# for the full HLD §3.1 rationale.
html5ever = "=0.39.0"
markup5ever_rcdom = "=0.39.0"
tendril = "=0.5.0"
web_atoms = "=0.2.4"

# Pure-algorithm dependencies, pinned exactly per the project's
# new-dependency discipline. See CHANGELOG.md for per-version rationale.
regex = "=1.12.3"
serde_json = "=1.0.149"
unicode-normalization = "=0.1.25"

[dev-dependencies]
# SHA-256 for the in-tree fuzz harness cache integrity check.
sha2 = "=0.10.9"
