原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 138942,
"has_wiki": true,
"homepage": null,
"languages": {
"HTML": 63327,
"Rust": 2188026,
"Shell": 85072,
"Python": 162068,
"Batchfile": 6281,
"Dockerfile": 1709,
"JavaScript": 62101,
"TypeScript": 1808
},
"pushed_at": "2026-07-30T05:53:15Z",
"created_at": "2026-06-27T16:51:49Z",
"owner_type": "Organization",
"updated_at": "2026-07-30T05:50:29Z",
"description": "Full Rust port of Python docling",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "master",
"license_spdx_raw": "MIT",
"primary_language": "Rust",
"significant_languages": [
"Rust"
]
},
"owner": {
"blog": null,
"name": "Docling Project",
"type": "Organization",
"login": "docling-project",
"company": null,
"location": "Switzerland",
"followers": 1206,
"avatar_url": "https://avatars.githubusercontent.com/u/188446108?v=4",
"created_at": "2024-11-14T10:15:54Z",
"is_verified": null,
"public_repos": 26,
"account_age_days": 622
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "npm-cuda-v0.52.1",
"kind": "other",
"published_at": "2026-07-30T05:53:15Z"
},
{
"tag": "v0.52.2",
"kind": "patch",
"published_at": "2026-07-30T05:51:22Z"
},
{
"tag": "v0.52.1",
"kind": "patch",
"published_at": "2026-07-29T17:25:53Z"
},
{
"tag": "v0.52.0",
"kind": "minor",
"published_at": "2026-07-28T13:46:00Z"
},
{
"tag": "v0.51.0",
"kind": "minor",
"published_at": "2026-07-28T12:22:53Z"
},
{
"tag": "npm-cuda-v0.50.0",
"kind": "other",
"published_at": "2026-07-28T07:55:31Z"
},
{
"tag": "v0.50.0",
"kind": "minor",
"published_at": "2026-07-27T20:10:58Z"
},
{
"tag": "npm-cuda-v0.49.0",
"kind": "other",
"published_at": "2026-07-23T10:55:47Z"
},
{
"tag": "v0.49.0",
"kind": "minor",
"published_at": "2026-07-22T12:27:36Z"
},
{
"tag": "v0.48.0",
"kind": "minor",
"published_at": "2026-07-22T10:33:40Z"
},
{
"tag": "v0.47.3",
"kind": "patch",
"published_at": "2026-07-22T10:14:55Z"
},
{
"tag": "v0.47.2",
"kind": "patch",
"published_at": "2026-07-22T09:53:06Z"
},
{
"tag": "v0.47.1",
"kind": "patch",
"published_at": "2026-07-22T09:14:14Z"
},
{
"tag": "v0.47.0",
"kind": "minor",
"published_at": "2026-07-22T07:14:10Z"
},
{
"tag": "v0.46.0",
"kind": "minor",
"published_at": "2026-07-21T20:08:09Z"
},
{
"tag": "v0.45.0",
"kind": "minor",
"published_at": "2026-07-21T09:22:10Z"
},
{
"tag": "v0.44.0",
"kind": "minor",
"published_at": "2026-07-20T14:49:30Z"
},
{
"tag": "v0.43.0",
"kind": "minor",
"published_at": "2026-07-20T14:14:28Z"
},
{
"tag": "v0.42.1",
"kind": "patch",
"published_at": "2026-07-17T09:05:16Z"
},
{
"tag": "v0.42.0",
"kind": "minor",
"published_at": "2026-07-16T15:47:00Z"
},
{
"tag": "v0.41.2",
"kind": "patch",
"published_at": "2026-07-16T12:31:11Z"
},
{
"tag": "v0.41.1",
"kind": "patch",
"published_at": "2026-07-16T10:07:18Z"
},
{
"tag": "v0.41.0",
"kind": "minor",
"published_at": "2026-07-16T09:20:42Z"
},
{
"tag": "v0.40.3",
"kind": "patch",
"published_at": "2026-07-15T20:03:20Z"
},
{
"tag": "v0.40.2",
"kind": "patch",
"published_at": "2026-07-15T18:17:36Z"
},
{
"tag": "v0.40.1",
"kind": "patch",
"published_at": "2026-07-15T15:59:23Z"
},
{
"tag": "v0.40.0",
"kind": "minor",
"published_at": "2026-07-15T12:57:49Z"
},
{
"tag": "v0.38.2",
"kind": "patch",
"published_at": "2026-07-15T08:10:19Z"
},
{
"tag": "v0.38.1",
"kind": "patch",
"published_at": "2026-07-15T06:04:45Z"
},
{
"tag": "v0.38.0",
"kind": "minor",
"published_at": "2026-07-14T20:24:58Z"
},
{
"tag": "v0.37.0",
"kind": "minor",
"published_at": "2026-07-14T17:25:37Z"
},
{
"tag": "v0.36.0",
"kind": "minor",
"published_at": "2026-07-14T15:31:31Z"
},
{
"tag": "v0.35.0",
"kind": "minor",
"published_at": "2026-07-14T12:32:15Z"
},
{
"tag": "v0.34.0",
"kind": "minor",
"published_at": "2026-07-14T06:43:43Z"
},
{
"tag": "v0.33.0",
"kind": "minor",
"published_at": "2026-07-13T19:19:02Z"
},
{
"tag": "v0.32.0",
"kind": "minor",
"published_at": "2026-07-13T18:36:57Z"
},
{
"tag": "v0.31.0",
"kind": "minor",
"published_at": "2026-07-13T12:52:07Z"
},
{
"tag": "v0.30.0",
"kind": "minor",
"published_at": "2026-07-10T13:34:43Z"
},
{
"tag": "v0.29.0",
"kind": "minor",
"published_at": "2026-07-10T10:34:09Z"
},
{
"tag": "v0.28.0",
"kind": "minor",
"published_at": "2026-07-10T07:30:04Z"
},
{
"tag": "v0.27.0",
"kind": "minor",
"published_at": "2026-07-10T06:22:44Z"
},
{
"tag": "v0.26.0",
"kind": "minor",
"published_at": "2026-07-10T05:00:22Z"
},
{
"tag": "v0.25.0",
"kind": "minor",
"published_at": "2026-07-09T16:25:40Z"
},
{
"tag": "v0.24.0",
"kind": "minor",
"published_at": "2026-07-09T14:47:44Z"
},
{
"tag": "v0.23.0",
"kind": "minor",
"published_at": "2026-07-09T11:48:42Z"
},
{
"tag": "v0.22.0",
"kind": "minor",
"published_at": "2026-07-09T11:22:05Z"
},
{
"tag": "v0.21.0",
"kind": "minor",
"published_at": "2026-07-09T09:27:38Z"
},
{
"tag": "v0.20.0",
"kind": "minor",
"published_at": "2026-07-08T15:54:10Z"
},
{
"tag": "v0.16.0",
"kind": "minor",
"published_at": "2026-07-06T11:27:35Z"
},
{
"tag": "v0.15.1",
"kind": "patch",
"published_at": "2026-07-06T08:41:32Z"
},
{
"tag": "v0.15.0",
"kind": "minor",
"published_at": "2026-07-03T18:37:45Z"
},
{
"tag": "v0.14.0",
"kind": "minor",
"published_at": "2026-07-03T08:15:40Z"
},
{
"tag": "v0.13.0",
"kind": "minor",
"published_at": "2026-07-02T16:21:52Z"
},
{
"tag": "v0.12.1",
"kind": "patch",
"published_at": "2026-07-02T11:51:21Z"
},
{
"tag": "v0.11.0",
"kind": "minor",
"published_at": "2026-07-02T08:55:58Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2026-07-01T16:27:24Z"
},
{
"tag": "v0.9.1",
"kind": "patch",
"published_at": "2026-07-01T15:58:24Z"
},
{
"tag": "models-v1",
"kind": "other",
"published_at": "2026-07-09T13:36:22Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2026-07-01T15:06:55Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-07-01T12:54:16Z"
},
{
"tag": "v0.7.1",
"kind": "patch",
"published_at": "2026-07-01T11:45:53Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-07-01T09:54:49Z"
},
{
"tag": "v0.6.1",
"kind": "patch",
"published_at": "2026-07-01T08:02:33Z"
}
],
"recent_commits": [
{
"oid": "ca9fe7a543b55a540dfa18b88f4f44591b5a928e",
"body": null,
"is_bot": true,
"headline": "chore(release): v0.52.2 [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-30T05:50:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95a98efaefb719aeb35bef1d09de0a50465cd80f",
"body": "panel optout flag 173",
"is_bot": false,
"headline": "Merge pull request #174 from artiz/claude/panel-optout-173",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-30T05:47:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9ebe8078c63fc12e4bbde8e72c4674279b71e83",
"body": "…+table\n\nAdds tests/snapshots/scanned/sources/scanned_chart_table.pdf.md — the\nregression pin for #173: the uncaptioned chart stays a picture and the\nbordered 8x4 table extracts with its OCR'd text.\n\nThe rest of the baseline was stale: it predates the text-panel demotion\n(#157), the force-OCR pictur\n[…]\niff identical.\n\nRefs #173\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "fix(pdf): re-baseline the snapshot corpus; pin the #173 scanned chart…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-30T05:20:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c27b35dec384c405f42495a648e29bec4bd8f870",
"body": "…orpus\n\ntests/data/scanned/sources/ is where scanned regression inputs live and\nwhat the snapshot harness sweeps; the e2e in the text_layer target reads\nit from there instead of carrying a private copy. Snapshot baseline for\nthe new fixture follows separately.\n\nRefs #173\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "fix(pdf): move the #173 scanned chart+table fixture into the shared c…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-30T04:50:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "aa0cbc8fd8a1955d505d54c91f41b83d854528ba",
"body": "…atcher\n\nThe #173 repro's second failure: on a scanned page the layout model finds\nthe bordered table (0.98) and TableFormer predicts its full structure, but\nthe grid comes back empty and dissolves — `tables: 0`. Region-scoped OCR\ndeliberately skips table labels, and a scanned page has no pdfium tex\n[…]\ns diagnosable.\n\nRefs #173\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "fix(pdf): extract scanned tables — OCR table interiors for the cell m…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-30T04:25:40Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6d4885b3c86f25c80cf9999c72f8e51bd93c1889",
"body": "Two complaints from #173 about the #157 text-panel recovery on scanned\npages:\n\n1. Uncaptioned charts/figures whose title + axis labels are dense enough\n to pass the coverage/width gates were demoted into (garbled OCR) text.\n Harden the heuristic with a line-height uniformity gate: a real text\n \n[…]\nnoTextPanels`.\n\nRefs #173\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "fix(pdf): keep uncaptioned charts as pictures + no_text_panels opt-out",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-29T21:34:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "11f3ca517544d4efe37bac57a2eccb361366a0a7",
"body": null,
"is_bot": true,
"headline": "chore(release): v0.52.1 [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-29T17:24:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3fdc84f8a27e685c0166668c786aa4d5605f4a3f",
"body": "fix(json): PDF JSON export carries page geometry and per-item provenance",
"is_bot": false,
"headline": "Merge pull request #172 from artiz/claude/json-prov-171",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-29T17:22:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e272257aaf3384351166111a9ff7f8b4077cb7ae",
"body": "DoclingDocument JSON from a PDF came back with an empty pages map and\nprov: [] on every item — the geometry existed (DocLang serializes it as\n<location> tokens) but the JSON builder hardcoded both fields, so Python\ndocling migrators lost bbox highlighting, page attribution and coordinate\nfiltering w\n[…]\narting at 0).\n\nFixes #171\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "fix(json): PDF JSON export carries page geometry and per-item provenance",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-29T17:16:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "29e74f06b18afb2d3370c7ab7748985e3d7aeb6e",
"body": null,
"is_bot": true,
"headline": "chore(release): v0.52.0 [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-28T13:41:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53bc13f8da58730908b7d9395dad3414f0949b71",
"body": "serve: docling.rs page shell for the playground, and an OpenAPI descr…",
"is_bot": false,
"headline": "Merge pull request #170 from artiz/claude/serve-ui-redesign",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-28T13:38:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50c09669132d48d72755fa8430193277c8aef542",
"body": "The model-inventory insertion landed between model_path's #[cfg(feature =\n\"ml\")] attribute and the function it guarded, so the pdf-text (wasm) build\nstarted compiling model_path — which calls the ml-gated prefer_fp32 /\nresolve_asset — and CI's wasm32 job failed with E0425. Re-attach the gate\n(and th\n[…]\ne suites, fmt and clippy.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "fix(pdf): keep model_path behind the ml feature gate",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-28T13:31:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b48dffdb6f773bc4bc10ab085bd51d1692894d26",
"body": "…entory\n\nSame build, same models, same bill: one machine's CPU converts it\nperfectly, another's dissolves page 1 into orphan one-liners — every table\ngone — while its CUDA build is fine. The default int8 layout graph keeps\nits confidences near the 0.5 label thresholds, and a different CPU's\nquantize\n[…]\nmetric; fmt/clippy clean.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "fix(pdf): fp32 layout retry for pages the int8 quant loses; model inv…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-28T13:20:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "90cac9043baa9a316a28376d6f0f4f597926e48d",
"body": null,
"is_bot": true,
"headline": "chore(release): v0.51.0 [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-28T12:18:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2301925c875b61e899fb3f3c751ea274b9c0047",
"body": "ci: least-privilege GITHUB_TOKEN; serve UI renders pictures from the …",
"is_bot": false,
"headline": "Merge pull request #169 from artiz/claude/codeql-findings",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-28T12:15:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fdc3c844c2b4f13c57245f6c1f3cd85fe1638513",
"body": "…iption\n\nThe playground looked nothing like the wasm demo page — a bare 🦆 heading, no\nlogo, no way back to the project — and the API had no machine-readable\ndescription at all, so pointing Swagger UI, Redoc or a client generator at a\nrunning server was impossible.\n\n- index.html adopts the demo page'\n[…]\nert to Markdown and JSON.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "serve: docling.rs page shell for the playground, and an OpenAPI descr…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-28T12:12:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c05d3fcd11ede1aec688bc7f9f856775c7a8007c",
"body": "…response\n\nClears the open CodeQL code-scanning alerts on master.\n\nWorkflow permissions (8 medium alerts, actions/missing-workflow-permissions):\nci.yml and npm-publish.yml declared no `permissions:` block, so every job ran\nwith the repository's default GITHUB_TOKEN scope. Both now default to\n`conten\n[…]\nile rejecting an SVG one.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "ci: least-privilege GITHUB_TOKEN; serve UI renders pictures from the …",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-28T12:00:02Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2093d806ab1cb92fdc81629615b97b2c566276e1",
"body": null,
"is_bot": false,
"headline": "Update issue templates",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-28T11:46:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e23b499ea34e8abe9858c5ac322e4a0eab1c853",
"body": "docs: add CONTRIBUTING.md",
"is_bot": false,
"headline": "Merge pull request #168 from artiz/claude/contributing-guide",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-28T11:37:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "321d41a244044285cc6a7622c904f3c021d5215d",
"body": "The repo had no contributor guide: the build/test invocations, the\nconformance workflow and the conventions a change has to satisfy lived in\nCLAUDE.md (AI-session notes) or nowhere. Collect the parts an outside\ncontributor needs — setup with and without the optional models, the test and\nlint command\n[…]\n, verified\nby running it.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docs: add CONTRIBUTING.md",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-28T11:35:49Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "24163e2d99681676377eda0b902814eeacf778c9",
"body": "wasm: publish docling.rs-wasm to npm; document the Tauri paths",
"is_bot": false,
"headline": "Merge pull request #167 from artiz/claude/wasm-npm-package",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-28T07:49:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73098dcbc52bffa288150e13883345ea5cd5eaf5",
"body": "The browser build had no consumable artifact: the wasm module existed only\ninside the GitHub Pages demo deployment (built ad-hoc by pages.yml, never\npublished) or via a DIY cargo + wasm-bindgen build. `npm i docling.rs-wasm`\nnow works:\n\n- crates/docling-wasm/npm/: the package skeleton — package.json\n[…]\nr PDF\nconvert correctly).\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: publish docling.rs-wasm to npm; document the Tauri paths",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-28T05:17:22Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e10dea35c156bc450be5ee39bf6a75e1edbace85",
"body": null,
"is_bot": true,
"headline": "chore(release): v0.50.0 [skip ci]",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-27T20:06:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d31e15ad764e46a106b9e4ad005db7dc427dfa8d",
"body": "pdf: pictures no longer claim cells in orphan recovery (#165)",
"is_bot": false,
"headline": "Merge pull request #166 from artiz/claude/orphan-picture-text-165",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-27T20:03:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35a52e607e0ae2a9bf2523c71f09abb79f47972e",
"body": "Requiring conventional feat:/fix: prefixes silently stopped every release\nafter v0.49.0 — the repo's de-facto commit style is bare area prefixes\n(\"pdf: …\", \"wasm: …\"), so bump_version.sh found nothing release-worthy in\n~100 merged commits and every master merge ended in \"nothing to release\".\n\nInvert\n[…]\nle backlog\nsince v0.49.0.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "ci(release): any non-fix merge releases the 0.x \"major\"",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T19:59:06Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e80df73e87af248a3c04a7b0ed133fa1cc916b92",
"body": "docling's LayoutPostprocessor splits clusters into regular and special\n(picture + the table/document_index/form/key_value_region wrappers), and\nits _find_unassigned_cells walks regular_clusters alone — a special never\nclaims a cell. Our add_orphan_regions counted every region as a claimer at\n0.2 int\n[…]\nrget compiles.\n\nRefs #165\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "pdf: pictures no longer claim cells in orphan recovery (#165)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T19:39:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7c950a0a230c3661551b12b9e479c16e2fdccaeb",
"body": "pdf: force_full_page_ocr on every surface (#157)",
"is_bot": false,
"headline": "Merge pull request #164 from artiz/claude/force-ocr",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-27T18:54:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5977a1b424ac90124977cf115e4d130c44820d41",
"body": "A terms-and-conditions box exported as an image — the XXXLutz blue\n\"Folgen des Widerrufs\" panel — survives every pipeline as a picture: its\nwords are not in the digital text layer, region-scoped OCR skips picture\ninteriors, and docling itself never serializes cells assigned to a picture\ncluster. The\n[…]\n clippy clean.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "pdf: demote uncaptioned text-panel pictures into paragraphs (#157)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T17:24:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f76f56159c1e981b8687ac31d5b3033125f773d7",
"body": "…#157)\n\nPDF generators that paint a line's bold runs *after* the surrounding regular\ntext (the XXXLutz terms document does this for every bold token) hand the\nsanitizer cells in stream order, not reading order. docling's cluster join\nfollows the docling-parse cell index — that same stream order — so\n[…]\nrgets compile.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "pdf: read interleaved font runs in visual order (\"C.6.\" kept whole) (…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T15:47:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d2a3b63c4a5db6b8f1709b7147fe5900d86130fc",
"body": "… (#157)\n\nDemo page, in the docling docs' visual language (dark #003778 header bar,\nduck logo, GitHub link):\n\n- a Stop button: a Web Worker cannot be interrupted mid-inference, so a real\n stop terminates the worker, rejects every pending call with a sentinel the\n page treats as \"user asked\" (blank\n[…]\nt suite green.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demo: docling-style page, Stop, Pages cap; OCR embedded pictures…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T15:24:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8b1dac98d38a2e6cddfab871918244cf896d88a3",
"body": "Signed-off-by: artiz <artem.kustikov@gmail.com>",
"is_bot": false,
"headline": "WASM demo page alyout update",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T14:32:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a22f30a65045d39fbbe37c201d91c607f05a4c5",
"body": "docling's escape hatch for text layers that exist but lie — broken\nencodings, subset fonts with garbage mappings, scanned forms with a few\ntyped-in field values — under docling's exact name and semantics: OCR every\npage from its rendered image, ignoring the embedded text layer; ignored when\nOCR is d\n[…]\nsuites green.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "pdf: force_full_page_ocr on every surface (#157)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T14:15:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a1eb14f0d245384d79d1a382313f74d89a1e5d38",
"body": "pdf: a few typed-in form fields are not a text layer (#157)",
"is_bot": false,
"headline": "Merge pull request #163 from artiz/claude/wasm-vestigial-text-layer",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-27T14:13:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "edf511fad6cec1648fec1909c28b8d00a4bee481",
"body": "A scanned parental-consent form converted to almost nothing everywhere: its\n\"text layer\" is three typed-in field values — \"03\", \"05\", \"2025\", thirteen\ncharacters over three image pages. Every gate took that vestige at face\nvalue. The native pipeline saw cells on page 1 and skipped OCR for it, losing\n[…]\ncling-wasm 8.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "pdf: a few typed-in form fields are not a text layer (#157)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T13:45:13Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "91c2f3d931b5de3414cc504c8b3d1d0d6eec7409",
"body": "chore(deps): weekly cargo update",
"is_bot": false,
"headline": "Merge pull request #161 from docling-project/deps/cargo-update",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-27T12:56:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a20a54de51beeef94c90d32e46a5df1ee60a3ffd",
"body": "wasm: OCR the whole image when layout finds no text in it (#157)",
"is_bot": false,
"headline": "Merge pull request #162 from artiz/claude/wasm-image-ocr-fallback",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-27T12:40:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "196479a7d32d61f57a8712c6d12302d613f4ba40",
"body": "Regression from unifying the demo pages: images now go through the full lite\nprofile, whose first step is the document layout model — and a UI screenshot\n(the reported case: a chat window) reads as wall-to-wall `picture` to a model\ntrained on documents. Region-scoped OCR then never fires, and the\n\"c\n[…]\nclippy clean.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: OCR the whole image when layout finds no text in it (#157)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T12:34:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5115c40316ac7cdf47a6a96ec68ddc51827cf949",
"body": "wasm: one demo page with the whole pipeline (#157)",
"is_bot": false,
"headline": "Merge pull request #160 from artiz/claude/wasm-unified-demo",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-27T12:09:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e02f01e15779bd582c93f084852a363a1686b30",
"body": "The reporting invoice's flat text-layer output opened with `\" ==` — its\nT-Mobile mark is drawn with a `TeleLogo` Type1 font, stacking the glyphs\nencoded as `\"` and `==` on top of one another. Nothing in the font metadata\ngives that away: the file's *text* fonts carry the same symbolic flag, and\nthe \n[…]\ncling-wasm 7.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-pdf: drop logo glyphs painted over each other on the flat path",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T11:43:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3f70d97c7ea5aaa73abd695be877fa333c667806",
"body": "…(#157)\n\nBoth structured-path screenshots of the reporting invoice print the\nEinspruch paragraph twice. Localized it by elimination: the flat text-layer\noutput contains the text once, the native pipeline emits it once, and a\nnative replica of the digital path (same textparse cells, same layout model\n[…]\nclippy clean.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: don't read the same cells twice when layout detections overlap …",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T11:35:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bdd76c04b2b746a4a43260d292bb3445c2230c52",
"body": "Fixing the text-layer parser made this invoice convert in 63 ms instead of\nten seconds of OCR — and lost its tables. That was not a regression but the\nshape of the choice the browser offered: the pure text-layer path is exact\nand instant but emits flat paragraphs, because headings, tables and pictur\n[…]\nd has no GPU.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: digital PDFs keep their structure without OCR (#157)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T10:41:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e11be1ac75e48db5ce9d999704556cfd9d297043",
"body": "The invoice that started this carries a second, independent defect. Its\ncontent streams declare `/Length 2826` where only 2825 bytes reach\n`endstream`, so lopdf reads past the data, does not find the keyword it\nexpects, and drops the stream — the object comes back as a bare dictionary.\nThe page then\n[…]\nill compiles.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-pdf: trust `endstream` over an overstated /Length",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T10:03:40Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d63ec4c8d18b14592ee1af60381e8d4e38862578",
"body": "The repair either fires or it does not, and a decline looks exactly like a\nscan from the outside — so a report of \"still going to OCR\" cannot be told\napart from \"the wasm build is stale\". Carry a reason out of\npad_short_xref_entries and surface it through xref_repair_status, which the\ntext_layer exa\n[…]\nl-unloadable.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-pdf: say why the xref repair declined",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T09:53:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4b0b172eb8c4cd33189ae5633fe2259af17b52fe",
"body": "A real invoice converted to nothing in the browser while pdfium read it\nfine. Traced it to the cross-reference table: the spec fixes an entry at 20\nbytes — `nnnnnnnnnn ggggg n` plus a *two*-byte EOL — and this generator emits\na bare LF, making each entry 19. lopdf rejects the whole file\n(\"invalid fi\n[…]\nill compiles.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-pdf: recover PDFs whose xref entries are 19 bytes, not 20",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T09:40:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a558df6e4af0c5989591a887bb5c012a43ab8f56",
"body": "A real invoice fails at the very first stage — lopdf reports \"invalid file\ntrailer\" while pdfium reads the same file fine — so the browser spends ~10 s\non OCR for a document whose text layer is right there. The failure says\nnothing about which part of the cross-reference machinery is wrong, and the\n\n[…]\nof the file\".\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-pdf: probe the xref/trailer when a PDF will not load",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T09:30:27Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "425615b13decac6944039d32893706cd01271bd5",
"body": "… text\n\nConfirmed on a real invoice that convert_text_layer returns nothing where\npdfium reads the layer fine, so the browser pays 10 s of OCR for a document\nit could convert in milliseconds. textparse cannot say why: every failure\npath is `let Ok(doc) = Document::load_mem(..) else { return empty }`\n[…]\ning to read\".\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-pdf: make the text-layer example name the stage that lost the…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T09:09:39Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "bae8ea837a6be612b1b61fa244d840545a68620d",
"body": "Telling \"this PDF genuinely needs OCR\" apart from \"our pure-Rust parser\nmissed a text layer pdfium can read\" had no offline reproduction: the CLI's\n--no-ocr goes through pdfium's extraction, while a wasm build calls\nconvert_text_layer (lopdf content-stream parsing). They are different\nengines, so --\n[…]\no OCR here\").\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-pdf: example that runs the browser's exact text-layer path",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T09:05:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "07af462a9bfe6ec0e68dfa189909f102676715ec",
"body": "Investigating a cell-merge report from the browser pipeline (\"Telefon\" and\n\"0676/2000\" landing in one TableFormer cell) meant knowing how coarse the\nOCR-derived word boxes actually are, since those are the one input the browser\npath does not share with the native one (no pdfium text layer — words co\n[…]\nntly retuned.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-pdf: pin the browser word-segmentation threshold with a test",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T08:07:07Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3defa1c200fb0f4dd761457355788a67eff55469",
"body": "… (#157)\n\n**Selective TableFormer.** The encoder runs once per table region and costs\nseconds, but many tables need no model at all. Each table is now first\nreconstructed geometrically — free, from the OCR cell positions — and\nTableFormer is invoked only when that grid looks unreliable.\n\nThe test co\n[…]\ness Chromium.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: run TableFormer only where geometry fails, and publish the demo…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-27T07:02:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b5649c94fef1801e9feda9f07a1d69efbd4d08c0",
"body": null,
"is_bot": true,
"headline": "chore(deps): weekly cargo update",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-27T05:35:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "70272708bf5e21de10c214575479ced0fcdcff37",
"body": "…erting\n\nTwo reports, one cause. The preview checkbox was the only control left live\nwhile a conversion ran, and its handler was wired straight to run(). Clicking\nit mid-conversion therefore started a second run on top of the first; the\nfirst then reached finishDoc, which clears the pipeline's singl\n[…]\n, fixed here.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demo: freeze the preview toggle during a run, and stop it reconv…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-26T19:49:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "753057846aed04a7742ae5844295596466e86e59",
"body": "… (#157)\n\n`images=embedded` did nothing for scanned input: the browser pipeline built\nits page with `PdfPage::from_cells`, which carries no bitmap, so every\npicture region came out as `<!-- image -->` with no pixels to inline — the\noption looked broken to anyone converting a scan.\n\nThe native pipeli\n[…]\nt-layer PDF).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: crop pictures on the OCR path so images=embedded has real bytes…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-26T19:30:31Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e74aa9c333f4dd609f9e5e98c84e17c8cc839b1f",
"body": "The browser demo had grown into three pages: index.html (declarative only,\nno PDF/image, no output-format parity) plus ocr.html and scan.html, which\nwere really OCR test harnesses. Fold everything into index.html and delete\nthe other two.\n\nThe single page now covers what the module can actually do: \n[…]\nets threads).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: one demo page with the whole pipeline (#157)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-26T19:11:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "68963dbb8238aa7a786cfe87180e0ab6bdbc64ac",
"body": "VLM doclang fallback",
"is_bot": false,
"headline": "Merge pull request #159 from artiz/claude/vlm-doclang-fallback",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-26T17:38:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ad8e486c6931390a47dc288ff798a126c353368",
"body": "picture_classification scored 1.3% similarity in the live VLM corpus run.\nRoot-causing it deterministically: our DocTags parser reproduces docling's\ngroundtruth Markdown for that fixture byte-for-byte (pictures with captions\nbefore the image placeholder, multi-page <page_break>, reading order), so\nt\n[…]\nI everywhere.\n\nRefs #153\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "vlm: lock DocTags→Markdown parity for picture_classification (#153)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T08:25:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5522d021b689ec7c5b4e5feba798e5c5e691c108",
"body": "…153)\n\nThe VLM pipeline routes non-DocTags model output through the DocLang XML\nreader, which is a strict parser: a model that leaves a <heading>/<text>\nunclosed produces markup it rejects with `expected 'heading' tag, not\n'doclang'`, and that error propagated all the way out — dropping the entire\nn\n[…]\noth branches.\n\nRefs #153\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "vlm: don't fail the whole page on malformed DocLang from the model (#…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T08:19:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2eeff630b0012c8238eaff5fd498e37a9f97430c",
"body": "wasm: in-browser OCR via ONNX Runtime Web interop (#157 stage 1)",
"is_bot": false,
"headline": "Merge pull request #158 from artiz/claude/wasm-ml-stage1",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-25T08:10:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "583b706235e282ece892a1fd00f0b6e235aeb8ca",
"body": "The earlier note called an int8 TableFormer encoder \"the biggest lever.\"\nMeasuring on a native x86 build over 15 real corpus table crops shows\notherwise: the encoder is a ResNet backbone feeding a 6-layer transformer,\nand the transformer Gemms (not the ~20 convs) are the cost. Conv-only\nstatic QDQ k\n[…]\ndoes not pay.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm docs: correct the int8-encoder perf note with measured numbers",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9e2e3fbfd62e6d305c9f88f659c38cb0e06d2147",
"body": "Rewrite the README's ML section to cover all three stages (OCR, layout,\nTableFormer #157) with the model manifest, add a \"Run it on your phone\"\nwalkthrough (download_dependencies.sh from upstream master, static hosting\nnotes, and the device model-file picker with its device → local → Hugging\nFace re\n[…]\nisfy rustfmt.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm docs: document the full in-browser ML pipeline + phone run guide",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e05c6fafdf09d8cb72927bde86164350570faf19",
"body": "Add a multi-file picker so the models can be selected from the device\ninstead of fetched: each File is read to an ArrayBuffer, handed to the\npipeline (transferred to the worker), and used by name before any network\nfetch. This avoids the 380 MB TableFormer download on a phone entirely and\n— since re\n[…]\nn that order.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demo: load models from device files (no download)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "05685e16d7698e72e9c60ce5d56d30edf134ce38",
"body": "The load fallback swallowed the fetch error and reported a flat \"not\nfound\", hiding whether it was a 404, an HTTP 503 throttle, or an\nout-of-memory on the 225 MB encoder. Keep and report the last error.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demo: surface the real TableFormer load error",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "829e28d204972974e6a82ce705b0171573788322",
"body": "The models were uploaded to the repo root next to layout_heron_int8.onnx\n(no subfolder), so point the HF fallback base at MODEL_BASE directly\ninstead of MODEL_BASE + \"tableformer/\".\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demo: TableFormer graphs load from the HF repo root",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fb9e799e49c37384f4040c7501cd41527b5cd00d",
"body": "Mirror the layout-model fallback: try local ./models/tableformer/ first,\nthen the CORS Hugging Face base, so TableFormer works on the hosted\n(phone) demo. External data is fetched from the same base that served the\n.onnx.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demo: Hugging Face fallback for the TableFormer graphs",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bc5541111ea576715b70f82e396bac1fe309d3dd",
"body": "The browser scanned path never recognized text inside table regions —\nprep_region_lines skips non-text labels and there's no pdfium text layer —\nso a detected table had no words for the matcher and rendered empty. Add\nocr_prep::prep_table_words: crop each table region, split into lines, then\nsplit e\n[…]\nfrom pdfium).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "#157 stage 3: OCR table interiors so browser tables fill",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "42235b81b93bb93fb8ad31e688e3ddf0aed9752b",
"body": "Phones can't open the console, so route the layout region-label histogram\nto the page instead: the wasm calls a global __docling_diag sink, the\nworker forwards it to the main thread, and scan.html shows it in a small\n#diag line under the controls (cleared on each new conversion). The\nmain-thread fal\n[…]\nink directly.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan: render the region-label diagnostic on the page",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7c48df3b99a1c25559a07f5b32c89d63a570b7e0",
"body": "Diagnostic for the browser scanned path: console-log the per-page region\nlabels after refinement, so it's visible whether the layout flagged any\n`table` region — a scanned table only fills when it does and the region's\nwords are OCR'd (a known gap: prep_region_lines skips non-text labels, so\ntable i\n[…]\nthe matcher).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan: log the layout region-label histogram",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d36b75111989c8a32f20f7ad3d0b6f9154d83412",
"body": "Add a cross-origin layout candidate after the local ./models/ ones: a\nHugging Face mirror (pivozavrus/docling-rs-models) that sends CORS\nheaders, so the page works when served cross-origin (the hosted phone\ndemo on raw.githack) — GitHub Release assets can't be fetched that way.\nLocal dev still prefers ./models/.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: Hugging Face fallback for the layout model",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0c65226084a5f22d1d8639ac3326575f0b51ba46",
"body": "Formatting-only: rustfmt reorders the tf_core/tf_match mod declarations\nand rewraps a couple of tf_core lines. Fixes the pinned fmt·clippy CI job.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "tf_core: cargo fmt (module order + line wrapping)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "266b1586c6353ef3536fcdd2bd04566babd134f9",
"body": "Splitting add_page into a #[wasm_bindgen] wrapper pair plus a plain\nadd_page_impl left page_count and finish inside the non-wasm_bindgen impl\nblock, so they stopped being exported to JS (\"cur.conv.finish is not a\nfunction\"). Close the plain impl right after add_page_impl and put\npage_count/finish ba\n[…]\n] impl block.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan: keep page_count/finish exported after the add_page split",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "98f06b4822c43c6588c88bf348a7a966c0688ac2",
"body": "Add the browser TableFormer profile to the scan demo. A \"TableFormer\ntables\" checkbox opts in; when checked, pipeline.js lazily loads the three\ngraphs same-origin from ./models/tableformer/ (encoder.onnx self-contained\n~225 MB; decoder_kv.onnx + bbox.onnx with their .onnx.data sidecars via\nort-web's\n[…]\nrogress line.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "#157 stage 3 (phase 4): TableFormer demo wiring",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5cf278477bf863123a9561f7a1c0e6357e24a1c5",
"body": "Wire the ONNX table-structure model into the browser pipeline. New wasm\nmodule tableformer.rs delegates the three graphs (encoder/decoder/bbox) to\na stateful JS TfSession and drives the autoregressive loop in Rust on\ntf_core: preprocess_input → encode → step* (BboxBook bookkeeping, argmax) →\nbbox → \n[…]\nclippy clean.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "#157 stage 3 (phase 3b/3c): browser TableFormer via ort-web interop",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c78e6389d56cc3cc6de44a3f4362bba90e1202c1",
"body": "Extract the second half of predict_table_rows — word-to-cell matching\n(docling's post-processor via tf_match, or the geometric fallback) and the\nspan-expanded rows×cols grid assembly — into tf_core::table_rows, shared\nwith the browser path. The native predict_table_rows keeps its ort head\n(resample \n[…]\nut unchanged.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "#157 stage 3 (phase 3a): move the ort-free table-rows tail into tf_core",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a47738c25391484bedf82f2052d33f223f2d394e",
"body": "Both modules are already pure Rust (resample uses only `image`; tf_match\nonly std) but were gated behind `ml`. Re-gate them to ocr-prep and make\ntf_match a public module so the browser TableFormer path (phase 3) can\ncrop table regions (page→1024px box-average, crop→448 bilinear) and run\ndocling's ce\n[…]\navior change.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "#157 stage 3 (phase 2): expose resample + tf_match under ocr-prep",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "837cdcfc59c993b3e00a464ab337cc186b2fada1",
"body": "Scanned PDFs frequently store pages as JPEG2000 (or JBIG2) images, which\npdf.js v6 decodes with a separate wasm module; without a wasmUrl it warns\n\"Ensure that the wasmUrl API parameter is provided\" and drops the image,\nso the rasterized page — and the OCR run on it — comes out blank. Pin\npdf.js to \n[…]\nt on the CDN.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: give pdf.js its wasm/cmap/font asset URLs",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3002bb1fc1d865076b709c94a2401c284d4e4c1b",
"body": "Groundwork for TableFormer in the browser: move the ONNX-free half of the\npipeline — the 448 encoder-input preprocessing, the autoregressive loop's\nstructure corrections (xcel→lcel, lcel-after-ucel→fcel) and bbox\nbookkeeping (tag_H_buf / bboxes_to_merge), span merging, and the OTSL→grid\nlayout — int\n[…]\npt verbatim).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "#157 stage 3 (phase 1): extract ort-free TableFormer core into tf_core",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c48b7d3eaed63023c498d5cdd1b3297e5a321558",
"body": "wasm-pack warns when license.workspace resolves but no LICENSE sits next\nto the crate. Copy the workspace MIT license into the crate directory.\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "docling-wasm: add LICENSE file for wasm-pack",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1ab32b8ffcf31dcfc013d401d3a340a3c6b8adaf",
"body": "…alls)\"\n\nThis reverts commit 1c871c7. Padding every line in a batch up to the\nbatch's max width inflates recognition compute (a narrow line padded to\na wide one does several times the conv work), and on real pages line\nwidths vary enough that the padding waste outweighs the saved per-call\noverhead —\n[…]\nidth batches.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "Revert \"#157 stage 2: padded rec batching in the browser (fewer ORT c…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "df455c6d7ac0a72ef54abcb12620cb3cda374588",
"body": "The exact-width grouping runs one recognition call per distinct line\nwidth — on a text-dense page (most lines differing) that is nearly one\nORT call per line, and every call carries thread-sync overhead under ORT\nWeb. Add width_batches_padded / batch_input_padded: group lines into\nREC_BATCH chunks s\n[…]\nis untouched.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "#157 stage 2: padded rec batching in the browser (fewer ORT calls)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8f2be443795adf2eaa27cceed71288cced8fa67c",
"body": "Running pdf.js inside the Web Worker fell back to its \"fake worker\" mode\n(a worker can't reliably spawn pdf.js's nested worker), which garbled the\nrasterized line crops: layout still found the page structure (it downsizes\nthe whole page to 640x640) but recognition decoded noise.\n\nSplit the two: pdf.\n[…]\nconvertImage.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: rasterize on the main thread, OCR in the worker",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7b2e35c9c0b900d97b5f1e41d83eba8a1bb3a2c7",
"body": "Even with multi-threaded ORT, the main thread still froze during a\nconversion: pdf.js rasterizes on it, and the Rust pre/post-processing\ninside add_page (line segmentation, CTC decode, reading-order assembly)\nruns synchronously on the calling thread. Move the whole pipeline off the\nmain thread so th\n[…]\n/thread init.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: run the pipeline in a Web Worker (responsive UI)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "87f4be60fae66a8d4c5ed5c67f3f502a4f575711",
"body": "Rasterize page p+1 while page p is being converted. pdf.js raster is\nmain-thread and the ORT layout/OCR inference runs on worker threads (once\ncross-origin isolated), so the render of the next page now overlaps the\nconvert of the current one instead of running strictly after it.\ngetImageData hands b\n[…]\n the overlap.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: pipeline pdf.js rasterization with conversion",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "6eaed97031681b35debe83c8e2e6374ec2f74195",
"body": "…orker\n\nORT Web ran single-threaded because SharedArrayBuffer needs the page to\nbe cross-origin isolated, which needs COOP+COEP response headers a static\nfile server can't set. coi.js is a service worker that re-serves every\nresponse with COOP: same-origin + COEP: credentialless (credentialless so\nt\n[…]\ne ORT bundle.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demos: multi-threaded ORT via a cross-origin-isolation service w…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4e2123efdda31802ef1e1fae14d2a46289759e41",
"body": "The release now hosts layout_heron_int8.onnx, so a fresh\ndownload_dependencies.sh drops it under ./models/ and the page already\nprefers it. Report which export actually loaded (\"ready (int8 layout)\")\nso the ~2.4x-faster path is visible instead of guessed.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: surface int8 vs fp32 layout in the ready line",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bf92b9d3d2d842d4b7a71372eab00af279de7ef0",
"body": "Show a running \"Ns/page avg\" in the status line as pages convert, log\neach page's wall time to the console, and print a total + average when\nthe run finishes — so a slow multi-page PDF is measurable instead of\njust \"page 2/10 …\".\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: per-page timing",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e75a13500bb3b6cc70d54e29e223bee6d85d51ae",
"body": "….sh in www/\n\nPoint the same-origin layout paths at ./models/ and document running the\ninstaller from crates/docling-wasm/www/ — it writes ./models/ relative to\nthe current directory, so the page reads ./models/layout_heron_int8.onnx\n(fallback ./models/layout_heron.onnx) with no copy step. gitignore\n[…]\ner populates.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: fetch layout into ./models/ via download_dependencies…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a3ccf0812e3b4ed0059887b11fca91e87a45b9a2",
"body": "…n't CORS-fetchable)\n\nGitHub Release assets are served from release-assets.githubusercontent.com\nwith no Access-Control-Allow-Origin header, so a browser fetch of the\nlayout model failed with a CORS error the moment the URL stopped 404ing.\nThe recognition models avoid this only because Hugging Face \n[…]\n't committed.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: load the layout model same-origin (release assets are…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "df2920fd50400f7cd7b755b6aeca407a75f36155",
"body": "The demo pointed at layout_heron_int8.onnx, but the release only hosts\nthe fp32 layout_heron.onnx (172 MB) — the int8 variant is produced\nlocally by scripts/install/quantize_models.py and was never uploaded,\nso the page died on a 404 before ever becoming ready.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm scan demo: fetch the layout model that models-v1 actually hosts",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ce64ed55fc35f0fa2dee4223f4efe8aea3cc948b",
"body": "While a model loads or a document converts, the demos now disable the\nupload controls (drop zone, file input, language selector), pulse the\ndrop-zone border and spin the status line, so a click mid-run can't\nstart a second conversion. Model downloads stream through a\nfetch-with-progress helper showi\n[…]\nsession load.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demos: busy-state UI + download progress + quiet ort logs",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a154e93d52e81b0ca87d566e13d1eeee8d26f154",
"body": "The paddle2onnx v5 export carries unused initializers, and ort logs a\nconsole warning for each one it prunes at session load. Harmless but\nnoisy — cap logSeverityLevel at errors for all demo sessions.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demos: errors-only ort logging",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "644520d9e589647975220e744f6af67950c354fe",
"body": "The v3 cyrillic export reads Cyrillic but drops spaces and flips case\non lookalike glyphs. Side-by-side on a rendered test line (same\npreprocessing as prep_line, greedy CTC): v3 gives \"еш: pаs\" with glued\nwords, PaddlePaddle/cyrillic_PP-OCRv5_mobile_rec_onnx decodes the whole\nline exactly, spaces in\n[…]\ne demo pages.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demos: cyrillic recognition via PP-OCRv5",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "34113668142c45261bf844465387955b9974b19a",
"body": "Without the fetch-images feature (the wasm32 build) the fetch_remote\nstub had no caller left — fetch_cached, its only user, is feature-gated\n— and FsImageResolver::base_url is stored but only read by the gated\nremote-URL resolution. Drop the stub and allow(dead_code) the field so\n`wasm-pack build` s\n[…]\neature shape.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "images: silence dead-code warnings in the no-fetch build shape",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c45388a81152077d28589fa1783e04af0d953a29",
"body": "SWHL/RapidOCR ships no cyrillic PP-OCRv3 export — the previous URL\n404'd and ort-web choked on the HTML error page (\"protobuf parsing\nfailed\"). Point the cyrillic entry at the\ncycloneboy/cyrillic_PP-OCRv3_rec_infer HF repo instead, which carries\nboth the ONNX export and its paired 163-char dictionar\n[…]\nable layout).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm demos: working cyrillic recognition model URL",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "47c1783328c16218d084d0a377f3440b62166681",
"body": "The demo pages hardcoded the English PP-OCRv3 model, so any non-Latin\nscan (e.g. Cyrillic) decoded to mojibake through the wrong dictionary.\nThe wasm API is language-agnostic — model and dict are injected from\nJS — so the fix is demo-side only: both ocr.html and scan.html get a\nrecognition-language \n[…]\n~10 MB each).\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: recognition-language selector in the browser demos",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "16a09557ca37614eca60c2a4223ec99f5fe5a042",
"body": "First real-browser test fed ocr.html a dark-theme screenshot and got\n\"(no text found)\": the whole scan pipeline assumes dark ink on light\npaper — the line segmentation thresholds pixels *darker* than the page\nmean, so light-on-dark input yields garbage. New\nocr_prep::normalize_polarity inverts a pre\n[…]\ngh untouched.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: polarity normalization for dark-mode captures (#157)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ebd2cb6e18273278a38102cc59f37ee69c8e9e25",
"body": "… field\n\nThe workspace-wide clippy job unifies features: docling-cli enables\ndocling-pdf/ml alongside docling-wasm, so PdfPage grows its ml-gated\n`image` field and docling-wasm's struct literal stopped compiling\n(E0063). A cfg-aware constructor (from_cells, under ocr-prep) spells\nthe field only when\n[…]\ntarget check.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: fix workspace clippy — PdfPage::from_cells absorbs the ml image…",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "76add75301a5658f3cb0e8bc5193c278892bc45a",
"body": "Scanned PDFs and images now convert fully client-side through the real\npipeline shape: RT-DETR layout detection + PP-OCRv3 recognition via\nONNX Runtime Web, everything else in Rust — the native pipeline's own\nfunctions, no second implementation.\n\ndocling-pdf (all under the existing ocr-prep feature,\n[…]\ntable-former.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: lite-profile scanned pipeline in the browser (#157 stage 2)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5a837fca8e676249ffd71cb80f1554abcf0f5a7a",
"body": "First slice of the browser ML pipeline: scanned images OCR fully\nclient-side.\n\ndocling-pdf grows an `ocr-prep` feature (pure Rust + the image crate, no\nort/pdfium): the ONNX-free half of the PP-OCRv3 recognition pipeline —\nline segmentation, crop prep, deterministic width-batching, CTC decode,\ndicti\n[…]\ns\nunaffected.\n\nRefs #157\n\nSigned-off-by: artiz <artem.kustikov@gmail.com>\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01EY5KAiquN4YpVf2PXEQkVT",
"is_bot": false,
"headline": "wasm: in-browser OCR via ONNX Runtime Web interop (#157 stage 1)",
"author_name": "artiz",
"author_login": "artiz",
"committed_at": "2026-07-25T07:54:29Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "42aad70cf55caa2e5a939bac2103b23c74c50ff6",
"body": "dev: full OpenAI response schema in the VLM shim (#153)",
"is_bot": false,
"headline": "Merge pull request #155 from artiz/claude/vlm-shim-openai-schema",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-25T07:53:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5fd2ce560fefb4a9a4d5144be2ed0901dcfc7601",
"body": "Update README to include Claude Code and TENET",
"is_bot": false,
"headline": "Merge pull request #156 from docling-project/artiz-patch-1",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-24T08:32:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a230abcef1d0be9c31a20f125c1a8b822f539e9",
"body": "Added mention of Claude Code and TENET framework in README.\n\nSigned-off-by: Artem Kustikov <artem.kustikov@gmail.com>",
"is_bot": false,
"headline": "Update README to include Claude Code and TENET",
"author_name": "Artem Kustikov",
"author_login": "artiz",
"committed_at": "2026-07-24T08:32:35Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 63,
"commits_last_year": 690,
"latest_release_at": "2026-07-30T05:53:15Z",
"latest_release_tag": "npm-cuda-v0.52.1",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 5,
"days_since_latest_release": 0,
"mean_days_between_releases": 0.9
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 87,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "docling",
"exists": true,
"license": "MIT",
"keywords": [
"converter",
"docling",
"document",
"markdown",
"pdf",
"parser-implementations",
"text-processing"
],
"ecosystem": "crates",
"matches_repo": true,
"registry_url": "https://crates.io/crates/docling",
"is_deprecated": false,
"latest_version": "0.52.2",
"repository_url": "https://github.com/docling-project/docling.rs",
"versions_count": 46,
"total_downloads": 1118,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 373,
"first_published_at": "2026-07-08T15:54:01.732660Z",
"latest_published_at": "2026-07-30T05:50:42.945872Z",
"latest_version_yanked": false,
"days_since_latest_publish": 0
},
{
"name": "docling-asr",
"exists": true,
"license": "MIT",
"keywords": [
"converter",
"docling",
"document",
"markdown",
"pdf",
"parser-implementations",
"text-processing"
],
"ecosystem": "crates",
"matches_repo": true,
"registry_url": "https://crates.io/crates/docling-asr",
"is_deprecated": false,
"latest_version": "0.52.2",
"repository_url": "https://github.com/docling-project/docling.rs",
"versions_count": 46,
"total_downloads": 1235,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 412,
"first_published_at": "2026-07-08T15:53:12.378481Z",
"latest_published_at": "2026-07-30T05:50:33.280768Z",
"latest_version_yanked": false,
"days_since_latest_publish": 0
},
{
"name": "docling-cli",
"exists": true,
"license": "MIT",
"keywords": [
"converter",
"docling",
"document",
"markdown",
"pdf",
"command-line-utilities",
"text-processing"
],
"ecosystem": "crates",
"matches_repo": true,
"registry_url": "https://crates.io/crates/docling-cli",
"is_deprecated": false,
"latest_version": "0.52.2",
"repository_url": "https://github.com/docling-project/docling.rs",
"versions_count": 45,
"total_downloads": 686,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 229,
"first_published_at": "2026-07-08T15:54:07.970189Z",
"latest_published_at": "2026-07-30T05:51:19.748141Z",
"latest_version_yanked": false,
"days_since_latest_publish": 0
},
{
"name": "docling-pdf",
"exists": true,
"license": "MIT",
"keywords": [
"converter",
"docling",
"document",
"markdown",
"pdf",
"parser-implementations",
"text-processing"
],
"ecosystem": "crates",
"matches_repo": true,
"registry_url": "https://crates.io/crates/docling-pdf",
"is_deprecated": false,
"latest_version": "0.52.2",
"repository_url": "https://github.com/docling-project/docling.rs",
"versions_count": 46,
"total_downloads": 1265,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 422,
"first_published_at": "2026-07-08T15:53:00.766718Z",
"latest_published_at": "2026-07-30T05:50:29.092972Z",
"latest_version_yanked": false,
"days_since_latest_publish": 0
},
{
"name": "docling-rag",
"exists": true,
"license": "MIT",
"keywords": [
"docling",
"embeddings",
"rag",
"semantic-search",
"vector",
"database",
"text-processing"
],
"ecosystem": "crates",
"matches_repo": true,
"registry_url": "https://crates.io/crates/docling-rag",
"is_deprecated": false,
"latest_version": "0.52.2",
"repository_url": "https://github.com/docling-project/docling.rs",
"versions_count": 24,
"total_downloads": 327,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 109,
"first_published_at": "2026-07-15T12:57:34.707551Z",
"latest_published_at": "2026-07-30T05:51:10.105021Z",
"latest_version_yanked": false,
"days_since_latest_publish": 0
},
{
"name": "docling-core",
"exists": true,
"license": "MIT",
"keywords": [
"converter",
"docling",
"document",
"markdown",
"pdf",
"parser-implementations",
"text-processing"
],
"ecosystem": "crates",
"matches_repo": true,
"registry_url": "https://crates.io/crates/docling-core",
"is_deprecated": false,
"latest_version": "0.52.2",
"repository_url": "https://github.com/docling-project/docling.rs",
"versions_count": 46,
"total_downloads": 1477,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 492,
"first_published_at": "2026-07-08T15:52:00.893838Z",
"latest_published_at": "2026-07-30T05:50:20.077902Z",
"latest_version_yanked": false,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 3,
"stars": 20,
"watchers": 1,
"fork_history": {
"days": [
{
"date": "2026-06-27",
"count": 1
},
{
"date": "2026-07-09",
"count": 1
},
{
"date": "2026-07-12",
"count": 1
}
],
"complete": true,
"collected": 3,
"total_forks": 3
},
"star_history": null,
"open_issues_and_prs": 2
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [
"crates/docling-serve/src/openapi.yaml"
],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"Cargo.toml",
"crates/docling-asr/Cargo.toml",
"crates/docling-cli/Cargo.toml",
"crates/docling-core/Cargo.toml",
"crates/docling-node/Cargo.toml",
"crates/docling-pdf/Cargo.toml",
"crates/docling-py/Cargo.toml",
"crates/docling-rag/Cargo.toml",
"crates/docling-serve/Cargo.toml",
"crates/docling-wasm/Cargo.toml",
"crates/docling/Cargo.toml"
],
"largest_source_bytes": 107873,
"source_files_sampled": 188,
"oversized_source_files": 9,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 6621
},
"dependencies": {
"manifests": [
"Cargo.toml"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "quick-xml",
"direct": true,
"version": "0.31.0",
"severity": "high",
"ecosystem": "crates",
"cvss_score": 7.5,
"advisory_ids": [
"RUSTSEC-2026-0194",
"RUSTSEC-2026-0195"
],
"fixed_version": "0.41.0",
"advisory_count": 2,
"oldest_advisory_days": 30
},
{
"name": "instant",
"direct": false,
"version": "0.1.13",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2024-0384"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 696
},
{
"name": "paste",
"direct": false,
"version": "1.0.15",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2024-0436"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 660
},
{
"name": "rustls-pemfile",
"direct": false,
"version": "2.2.0",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2025-0134"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 243
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 1,
"unknown": 3
},
"advisory_count": 5,
"affected_count": 4,
"assessed_count": 622,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 64,
"direct_affected_count": 1
},
"ecosystems": [
"crates"
],
"dependencies": [
{
"name": "docling-core",
"manifest": "crates/docling-asr/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "ort",
"manifest": "crates/docling-asr/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2.0.0-rc.12"
},
{
"name": "serde_json",
"manifest": "crates/docling-asr/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "symphonia",
"manifest": "crates/docling-asr/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.5"
},
{
"name": "docling",
"manifest": "crates/docling-cli/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "docling-serve",
"manifest": "crates/docling-cli/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "serde_json",
"manifest": "crates/docling-cli/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "tokio",
"manifest": "crates/docling-cli/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "serde_json",
"manifest": "crates/docling-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "sha2",
"manifest": "crates/docling-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.10"
},
{
"name": "tokenizers",
"manifest": "crates/docling-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.20"
},
{
"name": "pulldown-cmark",
"manifest": "crates/docling-core/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.13"
},
{
"name": "docling",
"manifest": "crates/docling-node/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "napi",
"manifest": "crates/docling-node/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "napi-derive",
"manifest": "crates/docling-node/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "docling-core",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "pdfium-render",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.8"
},
{
"name": "ort",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2.0.0-rc.12"
},
{
"name": "image",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.25"
},
{
"name": "flate2",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "tar",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.4"
},
{
"name": "regex",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1.11"
},
{
"name": "lopdf",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.44"
},
{
"name": "fast_image_resize",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "5.1.4"
},
{
"name": "tokenizers",
"manifest": "crates/docling-pdf/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.20"
},
{
"name": "docling",
"manifest": "crates/docling-py/Cargo.toml",
"ecosystem": "crates",
"version_constraint": null
},
{
"name": "pyo3",
"manifest": "crates/docling-py/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.29"
},
{
"name": "serde_json",
"manifest": "crates/docling-py/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "docling-core",
"manifest": "crates/docling-py/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.0"
},
{
"name": "docling",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "docling-pdf",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "zip",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2.2"
},
{
"name": "tokio",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "axum",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.8"
},
{
"name": "async-trait",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1"
},
{
"name": "thiserror",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "serde",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "serde_json",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "dotenvy",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.15"
},
{
"name": "clap",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "4"
},
{
"name": "reqwest",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.12"
},
{
"name": "sqlx",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.8"
},
{
"name": "sqlite-vec",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1.6"
},
{
"name": "libsqlite3-sys",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.30"
},
{
"name": "pulldown-cmark",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.13"
},
{
"name": "uuid",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "sha2",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.10"
},
{
"name": "tracing",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1"
},
{
"name": "tracing-subscriber",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.3"
},
{
"name": "ort",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2.0.0-rc.12"
},
{
"name": "tokenizers",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.20"
},
{
"name": "suppaftp",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "6"
},
{
"name": "ssh2",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.9"
},
{
"name": "lapin",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "futures-lite",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "redis",
"manifest": "crates/docling-rag/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.27"
},
{
"name": "axum",
"manifest": "crates/docling-serve/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.8"
},
{
"name": "docling",
"manifest": "crates/docling-serve/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "serde",
"manifest": "crates/docling-serve/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "serde_json",
"manifest": "crates/docling-serve/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "tokio",
"manifest": "crates/docling-serve/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "tokio-stream",
"manifest": "crates/docling-serve/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1"
},
{
"name": "ureq",
"manifest": "crates/docling-serve/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "3"
},
{
"name": "url",
"manifest": "crates/docling-serve/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "docling",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "docling-core",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "docling-pdf",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "image",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.25"
},
{
"name": "js-sys",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.3"
},
{
"name": "wasm-bindgen-futures",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.4"
},
{
"name": "serde_json",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "wasm-bindgen",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.2"
},
{
"name": "console_error_panic_hook",
"manifest": "crates/docling-wasm/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.1"
},
{
"name": "calamine",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.26"
},
{
"name": "csv",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1.4.0"
},
{
"name": "headless_chrome",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1.0"
},
{
"name": "tempfile",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "3"
},
{
"name": "docling-asr",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "docling-core",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "docling-pdf",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.52.2"
},
{
"name": "image",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.25"
},
{
"name": "mail-parser",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.11"
},
{
"name": "pulldown-cmark",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.13.4"
},
{
"name": "quick-xml",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.41"
},
{
"name": "rayon",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1.10"
},
{
"name": "regex",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1.11"
},
{
"name": "roxmltree",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.20"
},
{
"name": "scraper",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "0.27.0"
},
{
"name": "serde_json",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "1"
},
{
"name": "ureq",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "3"
},
{
"name": "url",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2"
},
{
"name": "zip",
"manifest": "crates/docling/Cargo.toml",
"ecosystem": "crates",
"version_constraint": "2.2"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "async-trait",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "async-trait",
"direct": true,
"version": "0.1.91",
"ecosystem": "crates"
},
{
"name": "axum",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "axum",
"direct": true,
"version": "0.8.9",
"ecosystem": "crates"
},
{
"name": "calamine",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "calamine",
"direct": true,
"version": "0.26.1",
"ecosystem": "crates"
},
{
"name": "clap",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "clap",
"direct": true,
"version": "4.6.4",
"ecosystem": "crates"
},
{
"name": "console_error_panic_hook",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "console_error_panic_hook",
"direct": true,
"version": "0.1.7",
"ecosystem": "crates"
},
{
"name": "csv",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "csv",
"direct": true,
"version": "1.4.0",
"ecosystem": "crates"
},
{
"name": "docling",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "docling-asr",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "docling-core",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "docling-pdf",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "docling-serve",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "dotenvy",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "dotenvy",
"direct": true,
"version": "0.15.7",
"ecosystem": "crates"
},
{
"name": "fast_image_resize",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "fast_image_resize",
"direct": true,
"version": "5.5.0",
"ecosystem": "crates"
},
{
"name": "flate2",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "flate2",
"direct": true,
"version": "1.1.9",
"ecosystem": "crates"
},
{
"name": "futures-lite",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "futures-lite",
"direct": true,
"version": "1.13.0",
"ecosystem": "crates"
},
{
"name": "futures-lite",
"direct": true,
"version": "2.6.1",
"ecosystem": "crates"
},
{
"name": "headless_chrome",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "headless_chrome",
"direct": true,
"version": "1.0.22",
"ecosystem": "crates"
},
{
"name": "image",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "image",
"direct": true,
"version": "0.25.10",
"ecosystem": "crates"
},
{
"name": "js-sys",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "js-sys",
"direct": true,
"version": "0.3.103",
"ecosystem": "crates"
},
{
"name": "lapin",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "lapin",
"direct": true,
"version": "2.5.5",
"ecosystem": "crates"
},
{
"name": "libsqlite3-sys",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "libsqlite3-sys",
"direct": true,
"version": "0.30.1",
"ecosystem": "crates"
},
{
"name": "lopdf",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "lopdf",
"direct": true,
"version": "0.44.0",
"ecosystem": "crates"
},
{
"name": "mail-parser",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "mail-parser",
"direct": true,
"version": "0.11.5",
"ecosystem": "crates"
},
{
"name": "napi",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "napi",
"direct": true,
"version": "2.16.17",
"ecosystem": "crates"
},
{
"name": "napi-derive",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "napi-derive",
"direct": true,
"version": "2.16.13",
"ecosystem": "crates"
},
{
"name": "ort",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "ort",
"direct": true,
"version": "2.0.0-rc.12",
"ecosystem": "crates"
},
{
"name": "pdfium-render",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "pdfium-render",
"direct": true,
"version": "0.8.37",
"ecosystem": "crates"
},
{
"name": "pulldown-cmark",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "pulldown-cmark",
"direct": true,
"version": "0.13.4",
"ecosystem": "crates"
},
{
"name": "pyo3",
"direct": true,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "quick-xml",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "quick-xml",
"direct": true,
"version": "0.31.0",
"ecosystem": "crates"
},
{
"name": "quick-xml",
"direct": true,
"version": "0.41.0",
"ecosystem": "crates"
},
{
"name": "rayon",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "rayon",
"direct": true,
"version": "1.12.0",
"ecosystem": "crates"
},
{
"name": "redis",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "redis",
"direct": true,
"version": "0.27.6",
"ecosystem": "crates"
},
{
"name": "regex",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "regex",
"direct": true,
"version": "1.13.1",
"ecosystem": "crates"
},
{
"name": "reqwest",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "reqwest",
"direct": true,
"version": "0.12.28",
"ecosystem": "crates"
},
{
"name": "roxmltree",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "roxmltree",
"direct": true,
"version": "0.20.0",
"ecosystem": "crates"
},
{
"name": "scraper",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "scraper",
"direct": true,
"version": "0.27.0",
"ecosystem": "crates"
},
{
"name": "serde",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "serde",
"direct": true,
"version": "1.0.229",
"ecosystem": "crates"
},
{
"name": "serde_json",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "serde_json",
"direct": true,
"version": "1.0.151",
"ecosystem": "crates"
},
{
"name": "sha2",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "sha2",
"direct": true,
"version": "0.10.9",
"ecosystem": "crates"
},
{
"name": "sha2",
"direct": true,
"version": "0.11.0",
"ecosystem": "crates"
},
{
"name": "sqlite-vec",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "sqlite-vec",
"direct": true,
"version": "0.1.9",
"ecosystem": "crates"
},
{
"name": "sqlx",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "sqlx",
"direct": true,
"version": "0.8.6",
"ecosystem": "crates"
},
{
"name": "ssh2",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "ssh2",
"direct": true,
"version": "0.9.6",
"ecosystem": "crates"
},
{
"name": "suppaftp",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "suppaftp",
"direct": true,
"version": "6.3.0",
"ecosystem": "crates"
},
{
"name": "symphonia",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "symphonia",
"direct": true,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "tar",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "tar",
"direct": true,
"version": "0.4.46",
"ecosystem": "crates"
},
{
"name": "tempfile",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "tempfile",
"direct": true,
"version": "3.27.0",
"ecosystem": "crates"
},
{
"name": "thiserror",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "thiserror",
"direct": true,
"version": "1.0.69",
"ecosystem": "crates"
},
{
"name": "thiserror",
"direct": true,
"version": "2.0.19",
"ecosystem": "crates"
},
{
"name": "tokenizers",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "tokenizers",
"direct": true,
"version": "0.20.4",
"ecosystem": "crates"
},
{
"name": "tokio",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "tokio",
"direct": true,
"version": "1.53.1",
"ecosystem": "crates"
},
{
"name": "tokio-stream",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "tokio-stream",
"direct": true,
"version": "0.1.19",
"ecosystem": "crates"
},
{
"name": "tracing",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "tracing",
"direct": true,
"version": "0.1.44",
"ecosystem": "crates"
},
{
"name": "tracing-subscriber",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "tracing-subscriber",
"direct": true,
"version": "0.3.23",
"ecosystem": "crates"
},
{
"name": "ureq",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "ureq",
"direct": true,
"version": "3.3.0",
"ecosystem": "crates"
},
{
"name": "url",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "url",
"direct": true,
"version": "2.5.8",
"ecosystem": "crates"
},
{
"name": "uuid",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "uuid",
"direct": true,
"version": "1.24.0",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "wasm-bindgen",
"direct": true,
"version": "0.2.126",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-futures",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-futures",
"direct": true,
"version": "0.4.76",
"ecosystem": "crates"
},
{
"name": "zip",
"direct": true,
"version": null,
"ecosystem": "crates"
},
{
"name": "zip",
"direct": true,
"version": "2.4.2",
"ecosystem": "crates"
},
{
"name": "docling-core",
"direct": true,
"version": null,
"ecosystem": "pypi"
},
{
"name": "adler2",
"direct": false,
"version": "2.0.1",
"ecosystem": "crates"
},
{
"name": "aes",
"direct": false,
"version": "0.8.4",
"ecosystem": "crates"
},
{
"name": "aes",
"direct": false,
"version": "0.9.2",
"ecosystem": "crates"
},
{
"name": "aho-corasick",
"direct": false,
"version": "1.1.4",
"ecosystem": "crates"
},
{
"name": "aligned",
"direct": false,
"version": "0.4.3",
"ecosystem": "crates"
},
{
"name": "aligned-vec",
"direct": false,
"version": "0.6.4",
"ecosystem": "crates"
},
{
"name": "allocator-api2",
"direct": false,
"version": "0.2.21",
"ecosystem": "crates"
},
{
"name": "amq-protocol",
"direct": false,
"version": "7.2.3",
"ecosystem": "crates"
},
{
"name": "amq-protocol-tcp",
"direct": false,
"version": "7.2.3",
"ecosystem": "crates"
},
{
"name": "amq-protocol-types",
"direct": false,
"version": "7.2.3",
"ecosystem": "crates"
},
{
"name": "amq-protocol-uri",
"direct": false,
"version": "7.2.3",
"ecosystem": "crates"
},
{
"name": "android_system_properties",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "anes",
"direct": false,
"version": "0.1.6",
"ecosystem": "crates"
},
{
"name": "anstream",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "anstyle",
"direct": false,
"version": "1.0.14",
"ecosystem": "crates"
},
{
"name": "anstyle-parse",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "anstyle-query",
"direct": false,
"version": "1.1.5",
"ecosystem": "crates"
},
{
"name": "anstyle-wincon",
"direct": false,
"version": "3.0.11",
"ecosystem": "crates"
},
{
"name": "anyhow",
"direct": false,
"version": "1.0.104",
"ecosystem": "crates"
},
{
"name": "arbitrary",
"direct": false,
"version": "1.4.2",
"ecosystem": "crates"
},
{
"name": "arc-swap",
"direct": false,
"version": "1.9.2",
"ecosystem": "crates"
},
{
"name": "arg_enum_proc_macro",
"direct": false,
"version": "0.3.4",
"ecosystem": "crates"
},
{
"name": "arrayvec",
"direct": false,
"version": "0.7.8",
"ecosystem": "crates"
},
{
"name": "as-slice",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "asn1-rs",
"direct": false,
"version": "0.7.2",
"ecosystem": "crates"
},
{
"name": "asn1-rs-derive",
"direct": false,
"version": "0.6.0",
"ecosystem": "crates"
},
{
"name": "asn1-rs-impl",
"direct": false,
"version": "0.2.0",
"ecosystem": "crates"
},
{
"name": "async-channel",
"direct": false,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "async-executor",
"direct": false,
"version": "1.14.0",
"ecosystem": "crates"
},
{
"name": "async-global-executor",
"direct": false,
"version": "3.1.0",
"ecosystem": "crates"
},
{
"name": "async-global-executor-trait",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "async-io",
"direct": false,
"version": "1.13.0",
"ecosystem": "crates"
},
{
"name": "async-io",
"direct": false,
"version": "2.6.0",
"ecosystem": "crates"
},
{
"name": "async-lock",
"direct": false,
"version": "2.8.0",
"ecosystem": "crates"
},
{
"name": "async-lock",
"direct": false,
"version": "3.4.2",
"ecosystem": "crates"
},
{
"name": "async-reactor-trait",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "async-task",
"direct": false,
"version": "4.7.1",
"ecosystem": "crates"
},
{
"name": "atoi",
"direct": false,
"version": "2.0.0",
"ecosystem": "crates"
},
{
"name": "atomic-waker",
"direct": false,
"version": "1.1.2",
"ecosystem": "crates"
},
{
"name": "auto_generate_cdp",
"direct": false,
"version": "0.4.6",
"ecosystem": "crates"
},
{
"name": "autocfg",
"direct": false,
"version": "1.5.1",
"ecosystem": "crates"
},
{
"name": "av-scenechange",
"direct": false,
"version": "0.14.1",
"ecosystem": "crates"
},
{
"name": "av1-grain",
"direct": false,
"version": "0.2.5",
"ecosystem": "crates"
},
{
"name": "avif-serialize",
"direct": false,
"version": "0.8.9",
"ecosystem": "crates"
},
{
"name": "axum-core",
"direct": false,
"version": "0.5.6",
"ecosystem": "crates"
},
{
"name": "base64",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "base64",
"direct": false,
"version": "0.22.1",
"ecosystem": "crates"
},
{
"name": "base64ct",
"direct": false,
"version": "1.8.3",
"ecosystem": "crates"
},
{
"name": "bit_field",
"direct": false,
"version": "0.10.3",
"ecosystem": "crates"
},
{
"name": "bitflags",
"direct": false,
"version": "1.3.2",
"ecosystem": "crates"
},
{
"name": "bitflags",
"direct": false,
"version": "2.13.1",
"ecosystem": "crates"
},
{
"name": "bitstream-io",
"direct": false,
"version": "4.10.0",
"ecosystem": "crates"
},
{
"name": "block-buffer",
"direct": false,
"version": "0.10.4",
"ecosystem": "crates"
},
{
"name": "block-buffer",
"direct": false,
"version": "0.12.1",
"ecosystem": "crates"
},
{
"name": "block-padding",
"direct": false,
"version": "0.3.3",
"ecosystem": "crates"
},
{
"name": "block-padding",
"direct": false,
"version": "0.4.2",
"ecosystem": "crates"
},
{
"name": "blocking",
"direct": false,
"version": "1.6.2",
"ecosystem": "crates"
},
{
"name": "built",
"direct": false,
"version": "0.8.1",
"ecosystem": "crates"
},
{
"name": "bumpalo",
"direct": false,
"version": "3.20.3",
"ecosystem": "crates"
},
{
"name": "bytemuck",
"direct": false,
"version": "1.25.2",
"ecosystem": "crates"
},
{
"name": "byteorder",
"direct": false,
"version": "1.5.0",
"ecosystem": "crates"
},
{
"name": "byteorder-lite",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "bytes",
"direct": false,
"version": "1.12.1",
"ecosystem": "crates"
},
{
"name": "cast",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "cbc",
"direct": false,
"version": "0.1.2",
"ecosystem": "crates"
},
{
"name": "cbc",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "cc",
"direct": false,
"version": "1.4.0",
"ecosystem": "crates"
},
{
"name": "cfg-if",
"direct": false,
"version": "1.0.4",
"ecosystem": "crates"
},
{
"name": "cfg_aliases",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "chacha20",
"direct": false,
"version": "0.10.1",
"ecosystem": "crates"
},
{
"name": "chrono",
"direct": false,
"version": "0.4.45",
"ecosystem": "crates"
},
{
"name": "ciborium",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "ciborium-io",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "ciborium-ll",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "cipher",
"direct": false,
"version": "0.4.4",
"ecosystem": "crates"
},
{
"name": "cipher",
"direct": false,
"version": "0.5.2",
"ecosystem": "crates"
},
{
"name": "clap_builder",
"direct": false,
"version": "4.6.2",
"ecosystem": "crates"
},
{
"name": "clap_derive",
"direct": false,
"version": "4.6.4",
"ecosystem": "crates"
},
{
"name": "clap_lex",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "cms",
"direct": false,
"version": "0.2.3",
"ecosystem": "crates"
},
{
"name": "codepage",
"direct": false,
"version": "0.1.2",
"ecosystem": "crates"
},
{
"name": "color_quant",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "colorchoice",
"direct": false,
"version": "1.0.5",
"ecosystem": "crates"
},
{
"name": "combine",
"direct": false,
"version": "4.6.7",
"ecosystem": "crates"
},
{
"name": "concurrent-queue",
"direct": false,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "console_log",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "const-oid",
"direct": false,
"version": "0.10.2",
"ecosystem": "crates"
},
{
"name": "const-oid",
"direct": false,
"version": "0.9.6",
"ecosystem": "crates"
},
{
"name": "convert_case",
"direct": false,
"version": "0.6.0",
"ecosystem": "crates"
},
{
"name": "convert_case",
"direct": false,
"version": "0.8.0",
"ecosystem": "crates"
},
{
"name": "cookie-factory",
"direct": false,
"version": "0.3.3",
"ecosystem": "crates"
},
{
"name": "core-foundation",
"direct": false,
"version": "0.9.4",
"ecosystem": "crates"
},
{
"name": "core-foundation-sys",
"direct": false,
"version": "0.8.7",
"ecosystem": "crates"
},
{
"name": "cpubits",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "cpufeatures",
"direct": false,
"version": "0.2.17",
"ecosystem": "crates"
},
{
"name": "cpufeatures",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "crc",
"direct": false,
"version": "3.4.0",
"ecosystem": "crates"
},
{
"name": "crc-catalog",
"direct": false,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "crc32fast",
"direct": false,
"version": "1.5.0",
"ecosystem": "crates"
},
{
"name": "criterion",
"direct": false,
"version": null,
"ecosystem": "crates"
},
{
"name": "criterion",
"direct": false,
"version": "0.5.1",
"ecosystem": "crates"
},
{
"name": "criterion-plot",
"direct": false,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "crossbeam-deque",
"direct": false,
"version": "0.8.7",
"ecosystem": "crates"
},
{
"name": "crossbeam-epoch",
"direct": false,
"version": "0.9.20",
"ecosystem": "crates"
},
{
"name": "crossbeam-queue",
"direct": false,
"version": "0.3.13",
"ecosystem": "crates"
},
{
"name": "crossbeam-utils",
"direct": false,
"version": "0.8.22",
"ecosystem": "crates"
},
{
"name": "crunchy",
"direct": false,
"version": "0.2.4",
"ecosystem": "crates"
},
{
"name": "crypto-common",
"direct": false,
"version": "0.1.7",
"ecosystem": "crates"
},
{
"name": "crypto-common",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "cssparser",
"direct": false,
"version": "0.37.0",
"ecosystem": "crates"
},
{
"name": "cssparser-macros",
"direct": false,
"version": "0.7.0",
"ecosystem": "crates"
},
{
"name": "csv-core",
"direct": false,
"version": "0.1.13",
"ecosystem": "crates"
},
{
"name": "ctor",
"direct": false,
"version": "0.2.9",
"ecosystem": "crates"
},
{
"name": "darling",
"direct": false,
"version": "0.20.11",
"ecosystem": "crates"
},
{
"name": "darling_core",
"direct": false,
"version": "0.20.11",
"ecosystem": "crates"
},
{
"name": "darling_macro",
"direct": false,
"version": "0.20.11",
"ecosystem": "crates"
},
{
"name": "data-encoding",
"direct": false,
"version": "2.11.0",
"ecosystem": "crates"
},
{
"name": "defmt",
"direct": false,
"version": "1.1.1",
"ecosystem": "crates"
},
{
"name": "defmt-macros",
"direct": false,
"version": "1.1.1",
"ecosystem": "crates"
},
{
"name": "defmt-parser",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "der",
"direct": false,
"version": "0.7.10",
"ecosystem": "crates"
},
{
"name": "der-parser",
"direct": false,
"version": "10.0.0",
"ecosystem": "crates"
},
{
"name": "der_derive",
"direct": false,
"version": "0.7.3",
"ecosystem": "crates"
},
{
"name": "deranged",
"direct": false,
"version": "0.5.8",
"ecosystem": "crates"
},
{
"name": "derive_arbitrary",
"direct": false,
"version": "1.4.2",
"ecosystem": "crates"
},
{
"name": "derive_builder",
"direct": false,
"version": "0.20.2",
"ecosystem": "crates"
},
{
"name": "derive_builder_core",
"direct": false,
"version": "0.20.2",
"ecosystem": "crates"
},
{
"name": "derive_builder_macro",
"direct": false,
"version": "0.20.2",
"ecosystem": "crates"
},
{
"name": "derive_more",
"direct": false,
"version": "2.1.1",
"ecosystem": "crates"
},
{
"name": "derive_more-impl",
"direct": false,
"version": "2.1.1",
"ecosystem": "crates"
},
{
"name": "des",
"direct": false,
"version": "0.8.1",
"ecosystem": "crates"
},
{
"name": "digest",
"direct": false,
"version": "0.10.7",
"ecosystem": "crates"
},
{
"name": "digest",
"direct": false,
"version": "0.11.3",
"ecosystem": "crates"
},
{
"name": "displaydoc",
"direct": false,
"version": "0.2.6",
"ecosystem": "crates"
},
{
"name": "doc-comment",
"direct": false,
"version": "0.3.4",
"ecosystem": "crates"
},
{
"name": "document-features",
"direct": false,
"version": "0.2.12",
"ecosystem": "crates"
},
{
"name": "dtoa",
"direct": false,
"version": "1.0.11",
"ecosystem": "crates"
},
{
"name": "dtoa-short",
"direct": false,
"version": "0.3.5",
"ecosystem": "crates"
},
{
"name": "ecb",
"direct": false,
"version": "0.2.0",
"ecosystem": "crates"
},
{
"name": "ego-tree",
"direct": false,
"version": "0.11.0",
"ecosystem": "crates"
},
{
"name": "either",
"direct": false,
"version": "1.17.0",
"ecosystem": "crates"
},
{
"name": "encoding_rs",
"direct": false,
"version": "0.8.35",
"ecosystem": "crates"
},
{
"name": "equator",
"direct": false,
"version": "0.4.2",
"ecosystem": "crates"
},
{
"name": "equator-macro",
"direct": false,
"version": "0.4.2",
"ecosystem": "crates"
},
{
"name": "equivalent",
"direct": false,
"version": "1.0.2",
"ecosystem": "crates"
},
{
"name": "errno",
"direct": false,
"version": "0.3.14",
"ecosystem": "crates"
},
{
"name": "esaxx-rs",
"direct": false,
"version": "0.1.10",
"ecosystem": "crates"
},
{
"name": "etcetera",
"direct": false,
"version": "0.8.0",
"ecosystem": "crates"
},
{
"name": "event-listener",
"direct": false,
"version": "2.5.3",
"ecosystem": "crates"
},
{
"name": "event-listener",
"direct": false,
"version": "5.4.1",
"ecosystem": "crates"
},
{
"name": "event-listener-strategy",
"direct": false,
"version": "0.5.4",
"ecosystem": "crates"
},
{
"name": "executor-trait",
"direct": false,
"version": "2.1.2",
"ecosystem": "crates"
},
{
"name": "exr",
"direct": false,
"version": "1.74.2",
"ecosystem": "crates"
},
{
"name": "extended",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "fastrand",
"direct": false,
"version": "1.9.0",
"ecosystem": "crates"
},
{
"name": "fastrand",
"direct": false,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "fax",
"direct": false,
"version": "0.2.7",
"ecosystem": "crates"
},
{
"name": "fdeflate",
"direct": false,
"version": "0.3.7",
"ecosystem": "crates"
},
{
"name": "filetime",
"direct": false,
"version": "0.2.29",
"ecosystem": "crates"
},
{
"name": "find-msvc-tools",
"direct": false,
"version": "0.1.9",
"ecosystem": "crates"
},
{
"name": "flagset",
"direct": false,
"version": "0.4.7",
"ecosystem": "crates"
},
{
"name": "flume",
"direct": false,
"version": "0.11.1",
"ecosystem": "crates"
},
{
"name": "fnv",
"direct": false,
"version": "1.0.7",
"ecosystem": "crates"
},
{
"name": "foldhash",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "form_urlencoded",
"direct": false,
"version": "1.2.2",
"ecosystem": "crates"
},
{
"name": "futures-channel",
"direct": false,
"version": "0.3.33",
"ecosystem": "crates"
},
{
"name": "futures-core",
"direct": false,
"version": "0.3.33",
"ecosystem": "crates"
},
{
"name": "futures-executor",
"direct": false,
"version": "0.3.33",
"ecosystem": "crates"
},
{
"name": "futures-intrusive",
"direct": false,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "futures-io",
"direct": false,
"version": "0.3.33",
"ecosystem": "crates"
},
{
"name": "futures-sink",
"direct": false,
"version": "0.3.33",
"ecosystem": "crates"
},
{
"name": "futures-task",
"direct": false,
"version": "0.3.33",
"ecosystem": "crates"
},
{
"name": "futures-util",
"direct": false,
"version": "0.3.33",
"ecosystem": "crates"
},
{
"name": "generic-array",
"direct": false,
"version": "0.14.7",
"ecosystem": "crates"
},
{
"name": "getopts",
"direct": false,
"version": "0.2.24",
"ecosystem": "crates"
},
{
"name": "getrandom",
"direct": false,
"version": "0.2.17",
"ecosystem": "crates"
},
{
"name": "getrandom",
"direct": false,
"version": "0.3.4",
"ecosystem": "crates"
},
{
"name": "getrandom",
"direct": false,
"version": "0.4.3",
"ecosystem": "crates"
},
{
"name": "gif",
"direct": false,
"version": "0.14.2",
"ecosystem": "crates"
},
{
"name": "half",
"direct": false,
"version": "2.7.1",
"ecosystem": "crates"
},
{
"name": "hashbrown",
"direct": false,
"version": "0.15.5",
"ecosystem": "crates"
},
{
"name": "hashbrown",
"direct": false,
"version": "0.17.1",
"ecosystem": "crates"
},
{
"name": "hashify",
"direct": false,
"version": "0.2.9",
"ecosystem": "crates"
},
{
"name": "hashlink",
"direct": false,
"version": "0.10.0",
"ecosystem": "crates"
},
{
"name": "heck",
"direct": false,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "hermit-abi",
"direct": false,
"version": "0.3.9",
"ecosystem": "crates"
},
{
"name": "hermit-abi",
"direct": false,
"version": "0.5.2",
"ecosystem": "crates"
},
{
"name": "hex",
"direct": false,
"version": "0.4.3",
"ecosystem": "crates"
},
{
"name": "hkdf",
"direct": false,
"version": "0.12.4",
"ecosystem": "crates"
},
{
"name": "hmac",
"direct": false,
"version": "0.12.1",
"ecosystem": "crates"
},
{
"name": "hmac-sha256",
"direct": false,
"version": "1.1.14",
"ecosystem": "crates"
},
{
"name": "home",
"direct": false,
"version": "0.5.12",
"ecosystem": "crates"
},
{
"name": "html5ever",
"direct": false,
"version": "0.39.0",
"ecosystem": "crates"
},
{
"name": "http",
"direct": false,
"version": "1.4.2",
"ecosystem": "crates"
},
{
"name": "http-body",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "http-body-util",
"direct": false,
"version": null,
"ecosystem": "crates"
},
{
"name": "http-body-util",
"direct": false,
"version": "0.1.4",
"ecosystem": "crates"
},
{
"name": "httparse",
"direct": false,
"version": "1.10.1",
"ecosystem": "crates"
},
{
"name": "httpdate",
"direct": false,
"version": "1.0.3",
"ecosystem": "crates"
},
{
"name": "hybrid-array",
"direct": false,
"version": "0.4.13",
"ecosystem": "crates"
},
{
"name": "hyper",
"direct": false,
"version": "1.11.0",
"ecosystem": "crates"
},
{
"name": "hyper-rustls",
"direct": false,
"version": "0.27.9",
"ecosystem": "crates"
},
{
"name": "hyper-util",
"direct": false,
"version": "0.1.20",
"ecosystem": "crates"
},
{
"name": "iana-time-zone",
"direct": false,
"version": "0.1.65",
"ecosystem": "crates"
},
{
"name": "iana-time-zone-haiku",
"direct": false,
"version": "0.1.2",
"ecosystem": "crates"
},
{
"name": "icu_collections",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_locale_core",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_normalizer",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_normalizer_data",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_properties",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_properties_data",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_provider",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "ident_case",
"direct": false,
"version": "1.0.1",
"ecosystem": "crates"
},
{
"name": "idna",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "idna_adapter",
"direct": false,
"version": "1.2.2",
"ecosystem": "crates"
},
{
"name": "image-webp",
"direct": false,
"version": "0.2.4",
"ecosystem": "crates"
},
{
"name": "imgref",
"direct": false,
"version": "1.12.2",
"ecosystem": "crates"
},
{
"name": "indexmap",
"direct": false,
"version": "2.14.0",
"ecosystem": "crates"
},
{
"name": "inout",
"direct": false,
"version": "0.1.4",
"ecosystem": "crates"
},
{
"name": "inout",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "instant",
"direct": false,
"version": "0.1.13",
"ecosystem": "crates"
},
{
"name": "interpolate_name",
"direct": false,
"version": "0.2.4",
"ecosystem": "crates"
},
{
"name": "io-lifetimes",
"direct": false,
"version": "1.0.11",
"ecosystem": "crates"
},
{
"name": "ipnet",
"direct": false,
"version": "2.12.0",
"ecosystem": "crates"
},
{
"name": "is-terminal",
"direct": false,
"version": "0.4.17",
"ecosystem": "crates"
},
{
"name": "is_terminal_polyfill",
"direct": false,
"version": "1.70.2",
"ecosystem": "crates"
},
{
"name": "itertools",
"direct": false,
"version": "0.10.5",
"ecosystem": "crates"
},
{
"name": "itertools",
"direct": false,
"version": "0.11.0",
"ecosystem": "crates"
},
{
"name": "itertools",
"direct": false,
"version": "0.12.1",
"ecosystem": "crates"
},
{
"name": "itertools",
"direct": false,
"version": "0.13.0",
"ecosystem": "crates"
},
{
"name": "itertools",
"direct": false,
"version": "0.14.0",
"ecosystem": "crates"
},
{
"name": "itertools",
"direct": false,
"version": "0.15.0",
"ecosystem": "crates"
},
{
"name": "itoa",
"direct": false,
"version": "1.0.18",
"ecosystem": "crates"
},
{
"name": "jiff",
"direct": false,
"version": "0.2.35",
"ecosystem": "crates"
},
{
"name": "jiff-core",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "jiff-static",
"direct": false,
"version": "0.2.35",
"ecosystem": "crates"
},
{
"name": "jiff-tzdb",
"direct": false,
"version": "0.1.8",
"ecosystem": "crates"
},
{
"name": "jiff-tzdb-platform",
"direct": false,
"version": "0.1.3",
"ecosystem": "crates"
},
{
"name": "jobserver",
"direct": false,
"version": "0.1.35",
"ecosystem": "crates"
},
{
"name": "lazy-regex",
"direct": false,
"version": "3.6.0",
"ecosystem": "crates"
},
{
"name": "lazy-regex-proc_macros",
"direct": false,
"version": "3.6.0",
"ecosystem": "crates"
},
{
"name": "lazy_static",
"direct": false,
"version": "1.5.0",
"ecosystem": "crates"
},
{
"name": "lebe",
"direct": false,
"version": "0.5.3",
"ecosystem": "crates"
},
{
"name": "libc",
"direct": false,
"version": "0.2.189",
"ecosystem": "crates"
},
{
"name": "libfuzzer-sys",
"direct": false,
"version": "0.4.13",
"ecosystem": "crates"
},
{
"name": "libloading",
"direct": false,
"version": "0.8.9",
"ecosystem": "crates"
},
{
"name": "libloading",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "libm",
"direct": false,
"version": "0.2.16",
"ecosystem": "crates"
},
{
"name": "libredox",
"direct": false,
"version": "0.1.18",
"ecosystem": "crates"
},
{
"name": "libssh2-sys",
"direct": false,
"version": "0.3.2",
"ecosystem": "crates"
},
{
"name": "libz-sys",
"direct": false,
"version": "1.1.29",
"ecosystem": "crates"
},
{
"name": "linux-raw-sys",
"direct": false,
"version": "0.12.1",
"ecosystem": "crates"
},
{
"name": "linux-raw-sys",
"direct": false,
"version": "0.3.8",
"ecosystem": "crates"
},
{
"name": "litemap",
"direct": false,
"version": "0.8.2",
"ecosystem": "crates"
},
{
"name": "litrs",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "lock_api",
"direct": false,
"version": "0.4.14",
"ecosystem": "crates"
},
{
"name": "log",
"direct": false,
"version": "0.4.33",
"ecosystem": "crates"
},
{
"name": "loop9",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "lru-slab",
"direct": false,
"version": "0.1.2",
"ecosystem": "crates"
},
{
"name": "lzma-rust2",
"direct": false,
"version": "0.15.8",
"ecosystem": "crates"
},
{
"name": "macro_rules_attribute",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "macro_rules_attribute-proc_macro",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "markup5ever",
"direct": false,
"version": "0.39.0",
"ecosystem": "crates"
},
{
"name": "matchers",
"direct": false,
"version": "0.2.0",
"ecosystem": "crates"
},
{
"name": "matchit",
"direct": false,
"version": "0.8.4",
"ecosystem": "crates"
},
{
"name": "matrixmultiply",
"direct": false,
"version": "0.3.11",
"ecosystem": "crates"
},
{
"name": "maybe-owned",
"direct": false,
"version": "0.3.4",
"ecosystem": "crates"
},
{
"name": "maybe-rayon",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "md-5",
"direct": false,
"version": "0.10.6",
"ecosystem": "crates"
},
{
"name": "md-5",
"direct": false,
"version": "0.11.0",
"ecosystem": "crates"
},
{
"name": "memchr",
"direct": false,
"version": "2.8.3",
"ecosystem": "crates"
},
{
"name": "mime",
"direct": false,
"version": "0.3.17",
"ecosystem": "crates"
},
{
"name": "minimal-lexical",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "miniz_oxide",
"direct": false,
"version": "0.8.9",
"ecosystem": "crates"
},
{
"name": "mio",
"direct": false,
"version": "1.2.2",
"ecosystem": "crates"
},
{
"name": "monostate",
"direct": false,
"version": "0.1.18",
"ecosystem": "crates"
},
{
"name": "monostate-impl",
"direct": false,
"version": "0.1.18",
"ecosystem": "crates"
},
{
"name": "moxcms",
"direct": false,
"version": "0.8.1",
"ecosystem": "crates"
},
{
"name": "multer",
"direct": false,
"version": "3.1.0",
"ecosystem": "crates"
},
{
"name": "napi-build",
"direct": false,
"version": null,
"ecosystem": "crates"
},
{
"name": "napi-build",
"direct": false,
"version": "2.3.2",
"ecosystem": "crates"
},
{
"name": "napi-derive-backend",
"direct": false,
"version": "1.0.75",
"ecosystem": "crates"
},
{
"name": "napi-sys",
"direct": false,
"version": "2.4.0",
"ecosystem": "crates"
},
{
"name": "ndarray",
"direct": false,
"version": "0.17.2",
"ecosystem": "crates"
},
{
"name": "new_debug_unreachable",
"direct": false,
"version": "1.0.6",
"ecosystem": "crates"
},
{
"name": "no_std_io2",
"direct": false,
"version": "0.9.4",
"ecosystem": "crates"
},
{
"name": "nom",
"direct": false,
"version": "7.1.3",
"ecosystem": "crates"
},
{
"name": "nom",
"direct": false,
"version": "8.0.0",
"ecosystem": "crates"
},
{
"name": "noop_proc_macro",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "nu-ansi-term",
"direct": false,
"version": "0.50.3",
"ecosystem": "crates"
},
{
"name": "num-bigint",
"direct": false,
"version": "0.4.8",
"ecosystem": "crates"
},
{
"name": "num-complex",
"direct": false,
"version": "0.4.6",
"ecosystem": "crates"
},
{
"name": "num-conv",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "num-derive",
"direct": false,
"version": "0.4.2",
"ecosystem": "crates"
},
{
"name": "num-integer",
"direct": false,
"version": "0.1.46",
"ecosystem": "crates"
},
{
"name": "num-rational",
"direct": false,
"version": "0.4.2",
"ecosystem": "crates"
},
{
"name": "num-traits",
"direct": false,
"version": "0.2.19",
"ecosystem": "crates"
},
{
"name": "oid-registry",
"direct": false,
"version": "0.8.1",
"ecosystem": "crates"
},
{
"name": "once_cell",
"direct": false,
"version": "1.21.4",
"ecosystem": "crates"
},
{
"name": "once_cell_polyfill",
"direct": false,
"version": "1.70.2",
"ecosystem": "crates"
},
{
"name": "onig",
"direct": false,
"version": "6.5.3",
"ecosystem": "crates"
},
{
"name": "onig_sys",
"direct": false,
"version": "69.9.3",
"ecosystem": "crates"
},
{
"name": "oorandom",
"direct": false,
"version": "11.1.5",
"ecosystem": "crates"
},
{
"name": "openssl-probe",
"direct": false,
"version": "0.1.6",
"ecosystem": "crates"
},
{
"name": "openssl-sys",
"direct": false,
"version": "0.9.117",
"ecosystem": "crates"
},
{
"name": "ort-sys",
"direct": false,
"version": "2.0.0-rc.12",
"ecosystem": "crates"
},
{
"name": "p12-keystore",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "parking",
"direct": false,
"version": "2.2.1",
"ecosystem": "crates"
},
{
"name": "parking_lot",
"direct": false,
"version": "0.12.5",
"ecosystem": "crates"
},
{
"name": "parking_lot_core",
"direct": false,
"version": "0.9.12",
"ecosystem": "crates"
},
{
"name": "paste",
"direct": false,
"version": "1.0.15",
"ecosystem": "crates"
},
{
"name": "pastey",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "pbkdf2",
"direct": false,
"version": "0.12.2",
"ecosystem": "crates"
},
{
"name": "pem-rfc7468",
"direct": false,
"version": "0.7.0",
"ecosystem": "crates"
},
{
"name": "percent-encoding",
"direct": false,
"version": "2.3.2",
"ecosystem": "crates"
},
{
"name": "phf",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "phf_codegen",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "phf_generator",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "phf_macros",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "phf_shared",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "pin-project-lite",
"direct": false,
"version": "0.2.17",
"ecosystem": "crates"
},
{
"name": "pinky-swear",
"direct": false,
"version": "6.2.1",
"ecosystem": "crates"
},
{
"name": "piper",
"direct": false,
"version": "0.2.5",
"ecosystem": "crates"
},
{
"name": "piston-float",
"direct": false,
"version": "1.0.1",
"ecosystem": "crates"
},
{
"name": "pkcs12",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "pkcs5",
"direct": false,
"version": "0.7.1",
"ecosystem": "crates"
},
{
"name": "pkg-config",
"direct": false,
"version": "0.3.33",
"ecosystem": "crates"
},
{
"name": "plain",
"direct": false,
"version": "0.2.3",
"ecosystem": "crates"
},
{
"name": "plotters",
"direct": false,
"version": "0.3.7",
"ecosystem": "crates"
},
{
"name": "plotters-backend",
"direct": false,
"version": "0.3.7",
"ecosystem": "crates"
},
{
"name": "plotters-svg",
"direct": false,
"version": "0.3.7",
"ecosystem": "crates"
},
{
"name": "png",
"direct": false,
"version": "0.18.1",
"ecosystem": "crates"
},
{
"name": "polling",
"direct": false,
"version": "2.8.0",
"ecosystem": "crates"
},
{
"name": "polling",
"direct": false,
"version": "3.11.0",
"ecosystem": "crates"
},
{
"name": "portable-atomic",
"direct": false,
"version": "1.14.0",
"ecosystem": "crates"
},
{
"name": "portable-atomic-util",
"direct": false,
"version": "0.2.7",
"ecosystem": "crates"
},
{
"name": "potential_utf",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "powerfmt",
"direct": false,
"version": "0.2.0",
"ecosystem": "crates"
},
{
"name": "ppv-lite86",
"direct": false,
"version": "0.2.21",
"ecosystem": "crates"
},
{
"name": "precomputed-hash",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "proc-macro2",
"direct": false,
"version": "1.0.107",
"ecosystem": "crates"
},
{
"name": "profiling",
"direct": false,
"version": "1.0.18",
"ecosystem": "crates"
},
{
"name": "profiling-procmacros",
"direct": false,
"version": "1.0.18",
"ecosystem": "crates"
},
{
"name": "pulp",
"direct": false,
"version": "0.22.3",
"ecosystem": "crates"
},
{
"name": "pulp-wasm-simd-flag",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "pxfm",
"direct": false,
"version": "0.1.30",
"ecosystem": "crates"
},
{
"name": "pyo3-build-config",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "pyo3-ffi",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "pyo3-macros",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "pyo3-macros-backend",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "qoi",
"direct": false,
"version": "0.4.1",
"ecosystem": "crates"
},
{
"name": "quick-error",
"direct": false,
"version": "2.0.1",
"ecosystem": "crates"
},
{
"name": "quinn",
"direct": false,
"version": "0.11.11",
"ecosystem": "crates"
},
{
"name": "quinn-proto",
"direct": false,
"version": "0.11.16",
"ecosystem": "crates"
},
{
"name": "quinn-udp",
"direct": false,
"version": "0.5.15",
"ecosystem": "crates"
},
{
"name": "quote",
"direct": false,
"version": "1.0.47",
"ecosystem": "crates"
},
{
"name": "r-efi",
"direct": false,
"version": "5.3.0",
"ecosystem": "crates"
},
{
"name": "r-efi",
"direct": false,
"version": "6.0.0",
"ecosystem": "crates"
},
{
"name": "rand",
"direct": false,
"version": "0.10.2",
"ecosystem": "crates"
},
{
"name": "rand",
"direct": false,
"version": "0.8.7",
"ecosystem": "crates"
},
{
"name": "rand",
"direct": false,
"version": "0.9.5",
"ecosystem": "crates"
},
{
"name": "rand_chacha",
"direct": false,
"version": "0.3.1",
"ecosystem": "crates"
},
{
"name": "rand_chacha",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "rand_core",
"direct": false,
"version": "0.10.1",
"ecosystem": "crates"
},
{
"name": "rand_core",
"direct": false,
"version": "0.6.4",
"ecosystem": "crates"
},
{
"name": "rand_core",
"direct": false,
"version": "0.9.5",
"ecosystem": "crates"
},
{
"name": "rand_pcg",
"direct": false,
"version": "0.10.2",
"ecosystem": "crates"
},
{
"name": "rangemap",
"direct": false,
"version": "1.7.1",
"ecosystem": "crates"
},
{
"name": "rav1e",
"direct": false,
"version": "0.8.1",
"ecosystem": "crates"
},
{
"name": "ravif",
"direct": false,
"version": "0.13.0",
"ecosystem": "crates"
},
{
"name": "raw-cpuid",
"direct": false,
"version": "11.6.0",
"ecosystem": "crates"
},
{
"name": "rawpointer",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "rayon-cond",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "rayon-core",
"direct": false,
"version": "1.13.0",
"ecosystem": "crates"
},
{
"name": "rc2",
"direct": false,
"version": "0.8.1",
"ecosystem": "crates"
},
{
"name": "reactor-trait",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "reborrow",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "redox_syscall",
"direct": false,
"version": "0.5.18",
"ecosystem": "crates"
},
{
"name": "redox_syscall",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "regex-automata",
"direct": false,
"version": "0.4.16",
"ecosystem": "crates"
},
{
"name": "regex-syntax",
"direct": false,
"version": "0.8.11",
"ecosystem": "crates"
},
{
"name": "rgb",
"direct": false,
"version": "0.8.53",
"ecosystem": "crates"
},
{
"name": "ring",
"direct": false,
"version": "0.17.14",
"ecosystem": "crates"
},
{
"name": "rustc-hash",
"direct": false,
"version": "2.1.3",
"ecosystem": "crates"
},
{
"name": "rustc_version",
"direct": false,
"version": "0.4.1",
"ecosystem": "crates"
},
{
"name": "rusticata-macros",
"direct": false,
"version": "4.1.0",
"ecosystem": "crates"
},
{
"name": "rustix",
"direct": false,
"version": "0.37.28",
"ecosystem": "crates"
},
{
"name": "rustix",
"direct": false,
"version": "1.1.4",
"ecosystem": "crates"
},
{
"name": "rustls",
"direct": false,
"version": "0.23.42",
"ecosystem": "crates"
},
{
"name": "rustls-connector",
"direct": false,
"version": "0.20.2",
"ecosystem": "crates"
},
{
"name": "rustls-native-certs",
"direct": false,
"version": "0.7.3",
"ecosystem": "crates"
},
{
"name": "rustls-pemfile",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "rustls-pki-types",
"direct": false,
"version": "1.15.1",
"ecosystem": "crates"
},
{
"name": "rustls-webpki",
"direct": false,
"version": "0.103.13",
"ecosystem": "crates"
},
{
"name": "rustversion",
"direct": false,
"version": "1.0.23",
"ecosystem": "crates"
},
{
"name": "ryu",
"direct": false,
"version": "1.0.23",
"ecosystem": "crates"
},
{
"name": "salsa20",
"direct": false,
"version": "0.10.2",
"ecosystem": "crates"
},
{
"name": "same-file",
"direct": false,
"version": "1.0.6",
"ecosystem": "crates"
},
{
"name": "schannel",
"direct": false,
"version": "0.1.29",
"ecosystem": "crates"
},
{
"name": "scopeguard",
"direct": false,
"version": "1.2.0",
"ecosystem": "crates"
},
{
"name": "scrypt",
"direct": false,
"version": "0.11.0",
"ecosystem": "crates"
},
{
"name": "security-framework",
"direct": false,
"version": "2.11.1",
"ecosystem": "crates"
},
{
"name": "security-framework-sys",
"direct": false,
"version": "2.17.0",
"ecosystem": "crates"
},
{
"name": "selectors",
"direct": false,
"version": "0.38.0",
"ecosystem": "crates"
},
{
"name": "semver",
"direct": false,
"version": "1.0.28",
"ecosystem": "crates"
},
{
"name": "serde_core",
"direct": false,
"version": "1.0.229",
"ecosystem": "crates"
},
{
"name": "serde_derive",
"direct": false,
"version": "1.0.229",
"ecosystem": "crates"
},
{
"name": "serde_path_to_error",
"direct": false,
"version": "0.1.20",
"ecosystem": "crates"
},
{
"name": "serde_urlencoded",
"direct": false,
"version": "0.7.1",
"ecosystem": "crates"
},
{
"name": "servo_arc",
"direct": false,
"version": "0.4.3",
"ecosystem": "crates"
},
{
"name": "sha1",
"direct": false,
"version": "0.10.7",
"ecosystem": "crates"
},
{
"name": "sharded-slab",
"direct": false,
"version": "0.1.7",
"ecosystem": "crates"
},
{
"name": "shlex",
"direct": false,
"version": "2.0.1",
"ecosystem": "crates"
},
{
"name": "signal-hook-registry",
"direct": false,
"version": "1.4.8",
"ecosystem": "crates"
},
{
"name": "simd-adler32",
"direct": false,
"version": "0.3.10",
"ecosystem": "crates"
},
{
"name": "simd_helpers",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "siphasher",
"direct": false,
"version": "1.0.3",
"ecosystem": "crates"
},
{
"name": "slab",
"direct": false,
"version": "0.4.12",
"ecosystem": "crates"
},
{
"name": "smallvec",
"direct": false,
"version": "1.15.2",
"ecosystem": "crates"
},
{
"name": "socket2",
"direct": false,
"version": "0.4.10",
"ecosystem": "crates"
},
{
"name": "socket2",
"direct": false,
"version": "0.6.5",
"ecosystem": "crates"
},
{
"name": "socks",
"direct": false,
"version": "0.3.4",
"ecosystem": "crates"
},
{
"name": "spin",
"direct": false,
"version": "0.9.9",
"ecosystem": "crates"
},
{
"name": "spki",
"direct": false,
"version": "0.7.3",
"ecosystem": "crates"
},
{
"name": "spm_precompiled",
"direct": false,
"version": "0.1.4",
"ecosystem": "crates"
},
{
"name": "sqlx-core",
"direct": false,
"version": "0.8.6",
"ecosystem": "crates"
},
{
"name": "sqlx-macros",
"direct": false,
"version": "0.8.6",
"ecosystem": "crates"
},
{
"name": "sqlx-macros-core",
"direct": false,
"version": "0.8.6",
"ecosystem": "crates"
},
{
"name": "sqlx-postgres",
"direct": false,
"version": "0.8.6",
"ecosystem": "crates"
},
{
"name": "sqlx-sqlite",
"direct": false,
"version": "0.8.6",
"ecosystem": "crates"
},
{
"name": "stable_deref_trait",
"direct": false,
"version": "1.2.1",
"ecosystem": "crates"
},
{
"name": "string_cache",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "string_cache_codegen",
"direct": false,
"version": "0.6.1",
"ecosystem": "crates"
},
{
"name": "stringprep",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "strsim",
"direct": false,
"version": "0.11.1",
"ecosystem": "crates"
},
{
"name": "subtle",
"direct": false,
"version": "2.6.1",
"ecosystem": "crates"
},
{
"name": "symphonia-bundle-flac",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-bundle-mp3",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-codec-aac",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-codec-pcm",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-codec-vorbis",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-core",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-format-isomp4",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-format-mkv",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-format-ogg",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-format-riff",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-metadata",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "symphonia-utils-xiph",
"direct": false,
"version": "0.5.5",
"ecosystem": "crates"
},
{
"name": "syn",
"direct": false,
"version": "2.0.119",
"ecosystem": "crates"
},
{
"name": "syn",
"direct": false,
"version": "3.0.3",
"ecosystem": "crates"
},
{
"name": "sync_wrapper",
"direct": false,
"version": "1.0.2",
"ecosystem": "crates"
},
{
"name": "synstructure",
"direct": false,
"version": "0.13.2",
"ecosystem": "crates"
},
{
"name": "target-lexicon",
"direct": false,
"version": "0.13.5",
"ecosystem": "crates"
},
{
"name": "tcp-stream",
"direct": false,
"version": "0.28.0",
"ecosystem": "crates"
},
{
"name": "tendril",
"direct": false,
"version": "0.5.1",
"ecosystem": "crates"
},
{
"name": "thiserror-impl",
"direct": false,
"version": "1.0.69",
"ecosystem": "crates"
},
{
"name": "thiserror-impl",
"direct": false,
"version": "2.0.19",
"ecosystem": "crates"
},
{
"name": "thread_local",
"direct": false,
"version": "1.1.10",
"ecosystem": "crates"
},
{
"name": "tiff",
"direct": false,
"version": "0.11.3",
"ecosystem": "crates"
},
{
"name": "time",
"direct": false,
"version": "0.3.54",
"ecosystem": "crates"
},
{
"name": "time-core",
"direct": false,
"version": "0.1.9",
"ecosystem": "crates"
},
{
"name": "time-macros",
"direct": false,
"version": "0.2.32",
"ecosystem": "crates"
},
{
"name": "tinystr",
"direct": false,
"version": "0.8.3",
"ecosystem": "crates"
},
{
"name": "tinytemplate",
"direct": false,
"version": "1.2.1",
"ecosystem": "crates"
},
{
"name": "tinyvec",
"direct": false,
"version": "1.12.0",
"ecosystem": "crates"
},
{
"name": "tinyvec_macros",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "tokio-macros",
"direct": false,
"version": "2.7.1",
"ecosystem": "crates"
},
{
"name": "tokio-rustls",
"direct": false,
"version": "0.26.4",
"ecosystem": "crates"
},
{
"name": "tokio-util",
"direct": false,
"version": "0.7.19",
"ecosystem": "crates"
},
{
"name": "tower",
"direct": false,
"version": null,
"ecosystem": "crates"
},
{
"name": "tower",
"direct": false,
"version": "0.5.3",
"ecosystem": "crates"
},
{
"name": "tower-http",
"direct": false,
"version": "0.6.11",
"ecosystem": "crates"
},
{
"name": "tower-layer",
"direct": false,
"version": "0.3.3",
"ecosystem": "crates"
},
{
"name": "tower-service",
"direct": false,
"version": "0.3.3",
"ecosystem": "crates"
},
{
"name": "tracing-attributes",
"direct": false,
"version": "0.1.31",
"ecosystem": "crates"
},
{
"name": "tracing-core",
"direct": false,
"version": "0.1.36",
"ecosystem": "crates"
},
{
"name": "tracing-log",
"direct": false,
"version": "0.2.0",
"ecosystem": "crates"
},
{
"name": "try-lock",
"direct": false,
"version": "0.2.5",
"ecosystem": "crates"
},
{
"name": "tungstenite",
"direct": false,
"version": "0.29.0",
"ecosystem": "crates"
},
{
"name": "typenum",
"direct": false,
"version": "1.20.1",
"ecosystem": "crates"
},
{
"name": "unicase",
"direct": false,
"version": "2.9.0",
"ecosystem": "crates"
},
{
"name": "unicode-bidi",
"direct": false,
"version": "0.3.18",
"ecosystem": "crates"
},
{
"name": "unicode-ident",
"direct": false,
"version": "1.0.24",
"ecosystem": "crates"
},
{
"name": "unicode-normalization",
"direct": false,
"version": "0.1.25",
"ecosystem": "crates"
},
{
"name": "unicode-normalization-alignments",
"direct": false,
"version": "0.1.12",
"ecosystem": "crates"
},
{
"name": "unicode-properties",
"direct": false,
"version": "0.1.4",
"ecosystem": "crates"
},
{
"name": "unicode-segmentation",
"direct": false,
"version": "1.13.3",
"ecosystem": "crates"
},
{
"name": "unicode-width",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "unicode_categories",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "untrusted",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "ureq-proto",
"direct": false,
"version": "0.6.0",
"ecosystem": "crates"
},
{
"name": "utf16string",
"direct": false,
"version": "0.2.0",
"ecosystem": "crates"
},
{
"name": "utf8-zero",
"direct": false,
"version": "0.8.1",
"ecosystem": "crates"
},
{
"name": "utf8_iter",
"direct": false,
"version": "1.0.4",
"ecosystem": "crates"
},
{
"name": "utf8parse",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "v_frame",
"direct": false,
"version": "0.3.9",
"ecosystem": "crates"
},
{
"name": "valuable",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "vcpkg",
"direct": false,
"version": "0.2.15",
"ecosystem": "crates"
},
{
"name": "vecmath",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "version_check",
"direct": false,
"version": "0.9.5",
"ecosystem": "crates"
},
{
"name": "waker-fn",
"direct": false,
"version": "1.2.0",
"ecosystem": "crates"
},
{
"name": "walkdir",
"direct": false,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "want",
"direct": false,
"version": "0.3.1",
"ecosystem": "crates"
},
{
"name": "wasi",
"direct": false,
"version": "0.11.1+wasi-snapshot-preview1",
"ecosystem": "crates"
},
{
"name": "wasip2",
"direct": false,
"version": "1.0.4+wasi-0.2.12",
"ecosystem": "crates"
},
{
"name": "wasite",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-macro",
"direct": false,
"version": "0.2.126",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-macro-support",
"direct": false,
"version": "0.2.126",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-shared",
"direct": false,
"version": "0.2.126",
"ecosystem": "crates"
},
{
"name": "web-sys",
"direct": false,
"version": "0.3.103",
"ecosystem": "crates"
},
{
"name": "web-time",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "web_atoms",
"direct": false,
"version": "0.2.5",
"ecosystem": "crates"
},
{
"name": "webpki-roots",
"direct": false,
"version": "0.26.11",
"ecosystem": "crates"
},
{
"name": "webpki-roots",
"direct": false,
"version": "1.0.9",
"ecosystem": "crates"
},
{
"name": "weezl",
"direct": false,
"version": "0.1.12",
"ecosystem": "crates"
},
{
"name": "weezl",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "which",
"direct": false,
"version": "8.0.5",
"ecosystem": "crates"
},
{
"name": "whoami",
"direct": false,
"version": "1.6.1",
"ecosystem": "crates"
},
{
"name": "winapi",
"direct": false,
"version": "0.3.9",
"ecosystem": "crates"
},
{
"name": "winapi-i686-pc-windows-gnu",
"direct": false,
"version": "0.4.0",
"ecosystem": "crates"
},
{
"name": "winapi-util",
"direct": false,
"version": "0.1.11",
"ecosystem": "crates"
},
{
"name": "winapi-x86_64-pc-windows-gnu",
"direct": false,
"version": "0.4.0",
"ecosystem": "crates"
},
{
"name": "windows-core",
"direct": false,
"version": "0.62.2",
"ecosystem": "crates"
},
{
"name": "windows-implement",
"direct": false,
"version": "0.60.2",
"ecosystem": "crates"
},
{
"name": "windows-interface",
"direct": false,
"version": "0.59.3",
"ecosystem": "crates"
},
{
"name": "windows-link",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "windows-result",
"direct": false,
"version": "0.4.1",
"ecosystem": "crates"
},
{
"name": "windows-strings",
"direct": false,
"version": "0.5.1",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.48.0",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.52.0",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.61.2",
"ecosystem": "crates"
},
{
"name": "windows-targets",
"direct": false,
"version": "0.48.5",
"ecosystem": "crates"
},
{
"name": "windows-targets",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_gnullvm",
"direct": false,
"version": "0.48.5",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_msvc",
"direct": false,
"version": "0.48.5",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnu",
"direct": false,
"version": "0.48.5",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnu",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_msvc",
"direct": false,
"version": "0.48.5",
"ecosystem": "crates"
},
{
"name": "windows_i686_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnu",
"direct": false,
"version": "0.48.5",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnu",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnullvm",
"direct": false,
"version": "0.48.5",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_msvc",
"direct": false,
"version": "0.48.5",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "winreg",
"direct": false,
"version": "0.56.0",
"ecosystem": "crates"
},
{
"name": "wit-bindgen",
"direct": false,
"version": "0.57.1",
"ecosystem": "crates"
},
{
"name": "writeable",
"direct": false,
"version": "0.6.3",
"ecosystem": "crates"
},
{
"name": "x509-cert",
"direct": false,
"version": "0.2.5",
"ecosystem": "crates"
},
{
"name": "x509-parser",
"direct": false,
"version": "0.17.0",
"ecosystem": "crates"
},
{
"name": "xattr",
"direct": false,
"version": "1.6.1",
"ecosystem": "crates"
},
{
"name": "y4m",
"direct": false,
"version": "0.8.0",
"ecosystem": "crates"
},
{
"name": "yoke",
"direct": false,
"version": "0.8.3",
"ecosystem": "crates"
},
{
"name": "yoke-derive",
"direct": false,
"version": "0.8.2",
"ecosystem": "crates"
},
{
"name": "zerocopy",
"direct": false,
"version": "0.8.55",
"ecosystem": "crates"
},
{
"name": "zerocopy-derive",
"direct": false,
"version": "0.8.55",
"ecosystem": "crates"
},
{
"name": "zerofrom",
"direct": false,
"version": "0.1.8",
"ecosystem": "crates"
},
{
"name": "zerofrom-derive",
"direct": false,
"version": "0.1.7",
"ecosystem": "crates"
},
{
"name": "zeroize",
"direct": false,
"version": "1.9.0",
"ecosystem": "crates"
},
{
"name": "zerotrie",
"direct": false,
"version": "0.2.4",
"ecosystem": "crates"
},
{
"name": "zerovec",
"direct": false,
"version": "0.11.6",
"ecosystem": "crates"
},
{
"name": "zerovec-derive",
"direct": false,
"version": "0.11.3",
"ecosystem": "crates"
},
{
"name": "zmij",
"direct": false,
"version": "1.0.23",
"ecosystem": "crates"
},
{
"name": "zopfli",
"direct": false,
"version": "0.8.3",
"ecosystem": "crates"
},
{
"name": "zune-core",
"direct": false,
"version": "0.5.1",
"ecosystem": "crates"
},
{
"name": "zune-inflate",
"direct": false,
"version": "0.2.54",
"ecosystem": "crates"
},
{
"name": "zune-jpeg",
"direct": false,
"version": "0.5.15",
"ecosystem": "crates"
},
{
"name": "@napi-rs/cli",
"direct": false,
"version": "^2.18.4",
"ecosystem": "npm"
},
{
"name": "docling.rs",
"direct": false,
"version": "^0.20.0",
"ecosystem": "npm"
},
{
"name": "maturin",
"direct": false,
"version": null,
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 686,
"direct_count": 113,
"indirect_count": 573
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 126,
"open_issues": 2,
"closed_ratio": 0.957,
"closed_issues": 45,
"closed_unmerged_prs": 1
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "artiz",
"commits": 485,
"avatar_url": "https://avatars.githubusercontent.com/u/171757?v=4"
},
{
"type": "User",
"login": "claude",
"commits": 137,
"avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.78
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"deps-update.yml",
"npm-publish.yml",
"pages.yml",
"publish-models.yml",
"pypi-publish.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"Cargo.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 3,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/14 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 6,
"reason": "project has 2 contributing companies or organizations -- score normalized to 6",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 5,
"reason": "5 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "ca9fe7a543b55a540dfa18b88f4f44591b5a928e",
"ran_at": "2026-07-30T06:02:07Z",
"aggregate_score": 4.2,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-30T05:52:42Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-30T05:47:58Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 34,
"created_at": "2026-07-08T16:09:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 139,
"created_at": "2026-07-22T08:13:53Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/docling-project/docling.rs",
"host": "github.com",
"name": "docling.rs",
"owner": "docling-project"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": "The weighted overall 62 is calibrated to 69 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 62,
"calibrated": 69,
"calibration": "2026-08-02"
}
}
],
"value": 69,
"inputs": {
"security": 48,
"vitality": 71,
"community": 47,
"governance": 63,
"calibration": "2026-08-02",
"engineering": 71,
"ai_readiness": 78,
"weighted_overall_raw": 62
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 71,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"commits_last_year": 690,
"human_commit_share": 0.94,
"days_since_last_push": 0,
"active_weeks_last_year": 5
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "5/52 weeks with commits",
"points": 3.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 5
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "690 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 690
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 63,
"latest_release_tag": "npm-cuda-v0.52.1",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 0.9
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "63 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 63
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~0.9 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.9
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "weak",
"name": "Community & Adoption",
"value": 47,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 23,
"inputs": {
"forks": 3,
"stars": 20,
"watchers": 1,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "20 stars",
"points": 20.7,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 20
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "3 forks",
"points": 2.5,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 3
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "1 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 1
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"readme_badge_services": [],
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 55,
"inputs": {
"packages": [
"docling",
"docling-asr",
"docling-cli",
"docling-pdf",
"docling-rag",
"docling-core"
],
"dependents": null,
"ecosystems": "crates",
"total_downloads": 6108,
"monthly_downloads": 2037
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "2,037 downloads/month across crates",
"points": 44.1,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 2037,
"ecosystems": "crates"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 63,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "at_risk",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 23,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.78
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 78% of commits",
"points": 4.9,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 78
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 6,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 80,
"inputs": {
"merged_prs": 126,
"open_issues": 2,
"closed_issues": 45,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 0.957,
"closed_unmerged_prs": 1,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "96% of issues closed",
"points": 40.2,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 96
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "126/127 decided PRs merged",
"points": 29.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 126,
"decided": 127
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/14 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"followers": 1206,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "docling-project",
"public_repos": 26,
"account_age_days": 622
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "1,206 followers of docling-project",
"points": 22.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1206,
"login": "docling-project"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "26 public repos, account ~1 yr old",
"points": 13.8,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 26
}
},
{
"code": "account_age_years",
"params": {
"years": 1
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"docling",
"docling-asr",
"docling-cli",
"docling-pdf",
"docling-rag",
"docling-core"
],
"ecosystems": "crates",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "6 package(s) on crates",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 6,
"ecosystems": "crates"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 0 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 0
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "46 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 46
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 71,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "6 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 6
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "weak",
"name": "Security",
"value": 48,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "weak",
"name": "Security posture",
"note": null,
"notes": [],
"value": 42,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 18,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 0,
"scorecard_aggregate": 4.2
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "8 out of 8 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/14 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "5 existing vulnerabilities detected",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "good",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 622 resolved dependencies against OSV; 64 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 622
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 64
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 72,
"inputs": {
"source": "osv",
"advisories": 5,
"affected_packages": 4,
"assessed_packages": 622,
"unassessed_packages": 64,
"affected_by_severity": "high 1, unknown 3",
"direct_affected_packages": 1
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "1 affected: quick-xml 0.31.0 (high 7.5)",
"points": 14,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 1,
"packages": "quick-xml 0.31.0 (high 7.5)"
}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory has been public longer than 90 days",
"points": 40,
"status": "met",
"details": [
{
"code": "advisories_none_stale",
"params": {
"days": 90
}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "exceptional",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 622,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 78,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.979,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 6621
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "92 of 94 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 92,
"sampled": 94
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 66,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Cargo.lock"
],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.75,
"toolchain_manifests": [
"Cargo.toml",
"crates/docling-asr/Cargo.toml",
"crates/docling-cli/Cargo.toml",
"crates/docling-core/Cargo.toml",
"crates/docling-node/Cargo.toml",
"crates/docling-pdf/Cargo.toml",
"crates/docling-py/Cargo.toml",
"crates/docling-rag/Cargo.toml",
"crates/docling-serve/Cargo.toml",
"crates/docling-wasm/Cargo.toml",
"crates/docling/Cargo.toml"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Cargo.toml, crates/docling-asr/Cargo.toml, crates/docling-cli/Cargo.toml (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "Cargo.toml, crates/docling-asr/Cargo.toml, crates/docling-cli/Cargo.toml"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Rust (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Rust"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "75 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 75,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "exceptional",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 97,
"inputs": {
"primary_language": "Rust",
"largest_source_bytes": 107873,
"source_files_sampled": 188,
"oversized_source_files": 9
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Rust (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Rust"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "9/188 source files over 60KB",
"points": 52.4,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 188,
"oversized": 9
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "excellent",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": [
"crates/docling-serve/src/openapi.yaml"
]
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": "crates/docling-serve/src/openapi.yaml",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "crates/docling-serve/src/openapi.yaml"
}
}
],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"labels": [
"network-service",
"library",
"cli"
],
"scores": {
"cli": 4,
"library": 6,
"network-service": 7
},
"primary": "network-service",
"evidence": [
{
"tier": "distribution",
"label": "library",
"source": "registry:crates",
"weight": 6
},
{
"tier": "dependencies",
"label": "cli",
"source": "dep:clap",
"weight": 4
},
{
"tier": "dependencies",
"label": "network-service",
"source": "dep:axum",
"weight": 4
},
{
"tier": "structure",
"label": "network-service",
"source": "api_schema",
"weight": 3
}
],
"artifacts": [],
"confidence": "medium",
"host_extension": false,
"runs_as_process": true,
"consumed_by_code": true
},
"metrics_version": "2.3.1"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Could not fetch crates package 'docling-py' from its registry",
"Could not fetch crates package 'docling-node' from its registry",
"deps.dev does not index crates:docling@0.52.2; advisories assessed against the repository dependency graph instead"
],
"report_type": "repository",
"generated_at": "2026-07-30T06:02:34.499021Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/docling-project/docling.rs.svg",
"full_name": "docling-project/docling.rs",
"license_state": "standard",
"license_spdx": "MIT"
}