Skip to main content

Menu

Choose a theme and configure high-contrast mode. Preferences are saved in your browser only.

User Preferences

Theme

Pick a palette or follow your system preference.

High Contrast

Sharper text and borders. System follows your OS setting.

Version 2.0.0

The entire archiver was rewritten from Node.js to Rust. Same features, same file structure on disk, but now it’s a single static binary with no runtime dependencies.

Changed

  • Rust rewrite — the entire scraper, builder, and server are now Rust. No Node.js, no npm, no runtime. One binary.
  • Sitemap-first scraping — webChronicle now auto-discovers sitemaps (/sitemap.xml, /sitemap_index.xml, /wp-sitemap.xml, etc.) before falling back to recursive crawling. You can also pass a sitemap URL directly.
  • 10-thread concurrent scraping — pages are fetched in parallel for faster runs.
  • Local-first link rewriting — all links in snapshots are rewritten to point to local copies. No broken links when browsing offline.
  • CDN image handling — images from CDN URLs are downloaded and stored locally.
  • data-src / data-srcset support — lazy-loaded images are captured correctly.
  • Overlay injection moved to serve-time — snapshots on disk are clean HTML. The overlay (archive date, back link) is injected by the server on-the-fly via Shadow DOM. Copy a snapshot folder, get the original page.
  • ledger.toml index — replaces the old JSON index. Human-readable, hand-editable.
  • Tera templates — the index page uses Tera instead of Eleventy’s Liquid.
  • System fonts — no web font requests. The UI uses system-ui and friends.

Removed

  • Node.js runtime, npm dependencies, Eleventy, .nvmrc, package.json build scripts — all gone. package.json is metadata only.
  • Filmstrip UI — replaced with a blog-style feed (domain h2, snapshots ul/li, max-width: 640px).

Install

git clone https://github.com/freshjuice-dev/webchronicle.git
cd webchronicle
cargo build --release

./target/release/webchronicle init
./target/release/webchronicle scrape
./target/release/webchronicle build
./target/release/webchronicle serve --port 3000

Known gaps

  • @font-face declarations in CSS files are not yet parsed for local font downloading. Fonts referenced via url() in CSS are downloaded, but @font-face src URLs are not.