Skip to content

Compatibility and support

Offprint is currently an alpha project. Public APIs, schema records, artifact formats, and package layout can change before the first stable release.

Host support

SurfaceSupported baseline
RustRust 1.97, edition 2024
CLI archivesLinux x86-64 glibc, macOS arm64, macOS x86-64, Windows x86-64
Node.jsNode.js 22 or newer on the four archive targets
PythonPython 3.10 through 3.14 wheels using Python's stable application binary interface on the four archive targets
System browserChrome, Chromium, or Edge based on Chromium 120 or newer

Other source builds can use a compatible caller-selected system browser when the managed catalog has no archive for the host.

Independent version axes

AxisCurrent ownerMeaning
Product versionversions.toml and package manifestsRust crates, CLI, npm, and Python release version
Public schemaoffprint_model::PUBLIC_SCHEMA_VERSIONSerialized request, event, result, error, and browser records
Artifact formatoffprint_model::ARTIFACT_FORMAT_VERSIONCanonical Offprint HTML envelope
Collector protocoloffprint-protocolHost-to-page observation messages
Collector bundleReserved versions.toml valueInjected JavaScript build. The value is not yet enforced
Browser catalogManaged Chromium catalogPinned revisions and archive digests
CDP revisionGenerated protocol inputChrome DevTools Protocol definitions

Current public schema and artifact format versions are both 2. Top-level capture, batch, crawl, and export requests reject unknown fields and incompatible schema versions. Nested closure is record-specific. A generated schema with additionalProperties: false rejects extra fields. Verifiers reject incompatible artifact format or schema versions.

Interface parity

All interfaces share the native service, canonical record serialization, capture defaults, artifact formats, and error codes. Host ergonomics differ:

  • Rust exposes fluent builders, memory output, custom network rules, and browser ports directly.
  • Node.js exposes TypeScript record aliases and one OffprintError class.
  • Python uses snake_case method arguments and stage-specific exception classes.
  • CLI JSON projects verification results into ArtifactVerification and uses process exit statuses.

Binding tests cover capture, inspection, export, format verification, events, cancellation, errors, and shutdown. Shared Rust integration tests own broader batch, crawl, browser-management, remote CDP, and artifact verification evidence.