Commit Graph

102 Commits

Author SHA1 Message Date
tomsideguide 8bc59be861 docs(python): document the ConvertError subclasses 2026-08-05 18:53:00 +01:00
tomsideguide 52411911e4 feat(python): raise a ConvertError subclass per failure
- UnsupportedError, MalformedError, EncryptedError, ResourceLimitError,
  and MissingPartError all subclass ConvertError, so an existing
  `except anydoc.ConvertError` keeps catching every one of them
- the part or stream at fault rides on `part`, the limit crossed on
  `limit`, which is detail the JS bindings cannot carry
- an unreadable file still raises the OSError subclass any other read
  of it would
2026-08-05 18:53:00 +01:00
tomsideguide bb78e63272 docs: give every readme the same errors section
- the root, node, wasm, and python readmes each document the failure
  model, a worked example, and a table, in the same slot and shape
- python's covers the exception types it already raises
2026-08-05 18:36:26 +01:00
tomsideguide 71be98c6fd feat(wasm): throw an Error carrying the error code
- a js-sys Error with `code` set, thrown as a JsValue, replaces JsError,
  which cannot carry properties
- ConvertErrorCode joins the typescript custom section, minus the crate's
  `io` code: there is no filesystem to fail to read
2026-08-05 18:36:18 +01:00
tomsideguide 8f05b1a3db feat(node): reject with an Error carrying the error code
- `code` on the rejection names the ConvertError variant, so callers
  branch on it rather than on the message text
- napi fills `code` from the error's status, so the rejection is rebuilt
  in Task::reject, the one place with an Env to build a JS error with
- ConvertErrorCode reaches index.d.ts through a dts header file, which
  survives regeneration
2026-08-05 18:36:10 +01:00
tomsideguide 3f4928ea1b feat: name every ConvertError variant with a stable code
`ConvertError::code()` is the machine-readable discriminant a caller
branches on, where the Display message carries the detail. The Node and
wasm bindings publish it as `error.code`.
2026-08-05 18:36:02 +01:00
tomsideguide 2d3f923973 feat: clean up heading emphasis and table header rows v0.1.5 2026-08-05 17:16:30 +01:00
tomsideguide f31a67a1d3 docs(wasm): fix file path reference 2026-08-05 15:27:18 +01:00
tomsideguide e884f6163e chore: release v0.1.4 v0.1.4 2026-08-05 15:14:53 +01:00
tomsideguide cf21e181ae ci: drop the wasm job's redundant comment 2026-08-05 15:13:35 +01:00
tomsideguide fa6b204c22 docs(wasm): rework the demo page lede and about section 2026-08-05 15:13:35 +01:00
tomsideguide fe975502d9 feat(tables): detect header rows in csv and spreadsheets 2026-08-05 15:13:35 +01:00
tomsideguide 6f0a15795e feat: add wasm bindings, @firecrawl/anydoc-wasm, and a browser demo
- wasm/ crate with wasm-bindgen bindings mirroring the lib API
  (formatFromBytes/Extension/Path, toMarkdownBytes, toDocument)
- static demo page under wasm/www, deployed to GitHub Pages on push
- @firecrawl/anydoc-wasm published from release.yml with provenance
- wasm job in CI: clippy on the wasm target plus a Node smoke test
- version guard now spans five locations (wasm/Cargo.toml added)
2026-08-05 14:55:34 +01:00
Anderson Medeiros dev cad7ef2dd6 fix(build): drop zip's C-backed zstd codec, unblock wasm32 builds 2026-08-04 21:12:36 +01:00
tomsideguide 987b8fe679 docs: reorganize agent skill section 2026-08-04 21:01:31 +01:00
tomsideguide 7285ccd661 docs: move quick start above features 2026-08-04 20:55:38 +01:00
tomsideguide 8065e31a26 docs: drop the PDF shortcut note from the formats table 2026-08-04 20:53:18 +01:00
tomsideguide 6eac2b2774 chore: release v0.1.3 v0.1.3 2026-08-04 20:50:25 +01:00
tomsideguide 24c8fa2c24 chore: route PDF issues to pdf-inspector 2026-08-04 20:48:26 +01:00
tomsideguide 32c454ba3c feat: add an agent skill 2026-08-04 20:48:25 +01:00
tomsideguide aa695d3c7d feat: add an anydoc CLI to the npm package 2026-08-04 20:48:25 +01:00
tomsideguide 58c9ea61b9 docs: name Firecrawl Parse and explain what its OCR adds 2026-08-04 18:43:44 +01:00
tomsideguide 60f7f84d63 docs: reword the Firecrawl Parse feature bullet 2026-08-04 18:35:48 +01:00
tomsideguide cdceddeb02 docs: reword the hosted /parse note in the intro 2026-08-04 18:35:06 +01:00
Nicolas 7538e52ef8 Update README.md 2026-08-04 13:34:46 -04:00
Nicolas e09b54e560 Update README.md 2026-08-04 13:34:33 -04:00
Nicolas cb6896637f Update README.md 2026-08-04 13:31:24 -04:00
tomsideguide 923c0ef7e3 docs: show the format detection example in Rust 2026-08-04 18:26:38 +01:00
tomsideguide 371f47f34a chore: restore the lockfile entries CI's npm expects v0.1.2 2026-08-04 17:19:36 +01:00
tomsideguide c756978d59 chore: release 0.1.2 2026-08-04 17:14:14 +01:00
tomsideguide 2d95950345 ci: create the GitHub release last, with the addons, wheels, and sdist
napi prepublish no longer creates the release as a side effect of the
npm publish (--no-gh-release, so that job drops contents: write). A final
job, gated on all three registry publishes, creates the release with
generated notes and uploads every built artifact.
2026-08-04 17:11:15 +01:00
tomsideguide 85c39ed570 ci: skip the npm dry-run publish when the version is already live
npm refuses even a --dry-run publish over an existing version, so gate
the dry-run step on the same registry probe as the real publish.
2026-08-04 17:00:37 +01:00
tomsideguide 3c3d7f97b3 ci: test the Linux release matrices through docker run
JavaScript actions cannot run inside Alpine containers on arm64 runners,
so the aarch64-musl container: jobs failed before their first step. Run
all four Linux test flavors with docker run on the host instead.
2026-08-04 16:52:37 +01:00
tomsideguide 89fbad0630 docs: point scanned PDFs at the hosted parse endpoint 2026-08-04 16:47:27 +01:00
tomsideguide 5edf4da782 docs: rewrite the READMEs around features, quick starts, and the hosted parse option 2026-08-04 16:45:49 +01:00
Eric Ciarla 48c4923f8c Update README.md 2026-08-04 11:39:37 -04:00
tomsideguide 4982f0fb1f ci: rewrite the workflows with npm provenance, dry-run releases, and a shared version gate
Clean-room rewrite. The release gate moves to scripts/check-versions.sh
(also runnable locally), npm publishing runs on a GitHub-hosted runner so
every package gets a provenance attestation, workflow_dispatch on Release
is now a full no-publish dry run, and both workflows default to read-only
permissions.
2026-08-04 16:38:15 +01:00
tomsideguide 0d57d59f69 ci: publish to npm without provenance, which self-hosted runners cannot attest v0.1.1 2026-08-04 16:17:17 +01:00
tomsideguide 65040b465a ci: fix the release blockers found on the first v0.1.1 run
The crates.io liveness probe hit the API without a User-Agent (403) and fell through to a doomed publish: probe the sparse index instead. npm rejects provenance from self-hosted runners: publish from a GitHub-hosted one. setup-python's universal2 macOS build launches as arm64 on Apple silicon, where pip rejects the x86_64 wheel: run the x64 test through Rosetta.
2026-08-04 16:16:34 +01:00
tomsideguide cc80979156 ci: fail the release fast when the tag and version locations disagree 2026-08-04 16:11:19 +01:00
tomsideguide 30c7a73a3d ci: skip the crates.io publish when the version is already live 2026-08-04 16:04:42 +01:00
tomsideguide e24727dfa8 ci: import the installed wheel in the Python test job 2026-08-04 16:04:42 +01:00
tomsideguide edc8726890 chore: regenerate the Node loader for 0.1.1 2026-08-04 16:04:42 +01:00
tomsideguide eb5bee7bc8 chore: release 0.1.1 2026-08-04 15:57:11 +01:00
tomsideguide 4debcff312 ci: build, test, and publish the Python wheels 2026-08-04 15:57:01 +01:00
tomsideguide 6f2dce23d9 feat: Python bindings, published to PyPI as firecrawl-anydoc 2026-08-04 15:57:00 +01:00
tomsideguide a27d1947e2 chore: update GitHub release permissions and add GITHUB_TOKEN for npm publish 2026-08-04 15:31:57 +01:00
tomsideguide cac1b85044 docs: correct the benchmark corpus size and timing method 2026-08-03 18:31:12 +01:00
tomsideguide f672f73236 chore: publish prep
Declare rust-version 1.88, the floor zip and calamine already impose,
so an old toolchain gets an MSRV message instead of an edition-2024
parse error.

Run CI on pushes to main too. Everything lands directly on main, so the
pull_request trigger meant it never ran.

Record the benchmark machine in the readme, and drop github-slugger from
the bench harness, left behind when the differential harness went away.
2026-08-03 17:31:52 +01:00
tomsideguide 94835bbb83 docs: document the public API surface, and keep it documented
Every public item in `model` and `ConvertError` now carries a doc
comment, so docs.rs shows more than a list of names. `#![warn(missing_docs)]`
holds the line: CI's `-D warnings` turns a new undocumented public item
into a failure.

GridBuilder becomes pub(crate) with it. Frontends build grids and
consumers read them off `Table::grid`, so it was public API that nobody
outside the crate could use and everybody would have been stuck with.
2026-08-03 17:31:44 +01:00