Skip to content

Releases: Yurzi/dsh-pdf-mineru

v0.0.15

Choose a tag to compare

@Yurzi Yurzi released this 11 Sep 11:11

This release adds automatic local PDF.js rendering when Poppler is unavailable, while keeping the existing read_pdf(view: "page") interface, source verification, bounded execution and native image delivery. Reader cursor v3, index v2 and parsed caches remain unchanged.

Added

  • Added a PDF.js 6.3.289 + @napi-rs/canvas 1.0.9 subprocess fallback, with package-local fonts, CMaps, ICC profiles and WASM resources. Normal installation does not require system Poppler on supported native platforms. (25df849)
  • Added renderer: "poppler" | "pdfjs" to original-page results, strict output schemas and Native presentation, with matching physical page-count provenance. (25df849)
  • Added backend-selection, real subprocess and PDF fixture regressions, plus offline full-tool and installed-package smoke validation from an unrelated working directory. (25df849)

Fixed

  • Preserve cancellation and the shared deadline even when temporary cleanup finishes late; cleanup errors cannot mask an already established primary failure. (25df849)
  • Distinguish Poppler output I/O errors and signal termination from invalid PDFs without retrying another backend. (25df849)
  • Validate complete bounded PNG containers, including chunks, checksums and end markers, before attachment delivery. (25df849)

Changed

  • Prefer Poppler and fall back only for missing or explicitly non-executable dependencies. PDF failures, hash/identity mismatches, out-of-range pages, cancellation, timeouts and resource limits never trigger a backend retry. (25df849)
  • Share one checked snapshot, concurrency slot and total deadline across both renderers. Ship the fixed unbundled Node entry explicitly and keep heavy/native runtime dependencies outside the host/client bundles. (25df849)
  • Document supported native platforms, installation requirements and rendering limits. Canvas still requires a platform binary; application/V8 limits are not an OS sandbox or a total process-memory cap, and the two renderers are not pixel-equivalent. (25df849)

Full Changelog: v0.0.14...v0.0.15

v0.0.14

Choose a tag to compare

@Yurzi Yurzi released this 11 Sep 09:35

dsh-pdf-mineru v0.0.14 establishes an evidence-based PDF reading workflow—spanning in-document search, targeted block inspection, bounded continuation, and local original-page verification. This release incorporates all reader improvements and reliability fixes since v0.0.12, including reference list preservation, cursor v3 presentation state inheritance, scoped diagnostics, and local Poppler-based page rendering.

Added

  • Added in-document literal search (query), exact block reading (block_id), and stable result-bound block identifiers that preserve original figure/table labels and source provenance. (7c91e69)
  • Added local original-page verification (view: 'page') with optional expected_sha256, enabling direct Poppler-based page rendering against temporary streaming snapshots with timeout, cancellation, and output limits without contacting external Providers. (7c91e69)
  • Added structured block diagnostics, advisory formula verification_hints, engine and reader provenance metadata, and explicit metadata_shortened markers under constrained output budgets. (77cb48f)

Fixed

  • Fixed continuation cursors dropping inline_images: false: continuation now inherits image intent when omitted, allows explicit boolean overrides for subsequent cursors, and consistently respects model capabilities and image budgets. (77cb48f)
  • Restored reference list entries from list, ref_text, and list_items in parsed MinerU results, preserving entry ordering, numbering, and line breaks without lossy text coercion. (77cb48f)
  • Scoped quality diagnostics strictly to delivered content blocks to eliminate unrelated document warnings in TOC, table, search, or continuation responses, and recognized standard header, footer, footnote, and reference blocks. (77cb48f)
  • Ensured all reading responses explicitly return a nullable cursor (null when reading is complete or not requested), preventing ambiguity in client continuation flows. (4ab2c62)

Changed

  • Enforced bounded reading response budgets: capped default responses at 12,000 UTF-16 units with at most 8,000 units per body chunk and a 48,000-byte ceiling for JSON/prose outputs; omitted exported cache paths and duplicate TOC metadata by default unless requested via focus: 'artifacts' or focus: 'toc'. (7c91e69)
  • Reading Cursor v3: Continuation cursors now bind selected text, projection digests, artifact hashes, and reader/index versions while persisting image presentation intent. Older v1 and v2 cursor tokens are rejected with a restart instruction; existing published parse caches remain fully compatible without migration. Hosts should reload plugin tool definitions after upgrading. (77cb48f)
  • Consolidated interim development reports into the maintained Model Reading Guide and refreshed README, architecture, and contributor documentation. (77cb48f)
  • Expanded offline test suites and dual-provider regression coverage for parsed references, formula retention, diagnostic scoping, and continuation settings. (77cb48f)

Full Changelog: v0.0.12...v0.0.14

v0.0.12

Choose a tag to compare

@Yurzi Yurzi released this 11 Sep 04:44

dsh-pdf-mineru v0.0.12 upgrades runtime compatibility to DeepSeek Harness v0.1.5-rc.2, prevents user settings bloat through intelligent diff-to-base configuration pruning, introduces automatic legacy settings slimming on startup, adds page-level and section-level reset-to-defaults controls in the Web GUI, and enhances model-facing page range guidance on out-of-bounds requests.

Added

  • Pruned default configuration values on save via pruneConfigToDiff so that unchanged defaults are not written to settings.yaml, preventing user configuration bloat. (16ceb76)
  • Automatic startup slimming via detectBloatedSettingsOps and settings.mutate to clean up legacy bloated default entries from existing settings.yaml files. (16ceb76)
  • Added page-level "Reset to Defaults" and section-level "Reset" controls in the Web settings UI to easily restore default values. (16ceb76)
  • Formatted model-facing out-of-range error messages ([PAGE_OUT_OF_RANGE]) to include the valid document page range (e.g. valid: 1-3, total pages: 3) when requested pages fall outside document bounds. (6d91815)

Changed

  • Raised minimum supported DSH version to 0.1.5-rc.2 and aligned DSH runtime peers, development dependencies, and lockfile. (7090cc4)
  • Use typed live Agent/session route access for image-capability detection, retaining request-header precedence, Agent-option fallback, and conservative handling of unavailable model metadata. (7090cc4)
  • Replace obsolete Host, Tool, and Connection ambient declarations with published types; align client RPC calls and tool schema inference with rc.2 contracts. (7090cc4)

Fixed

  • Explicitly inject both connection and webServer for RPC registration so headless hosts retain both model tools without attempting HTTP route registration. (7090cc4)
  • Use a caller-local guarded route registrar to handle Cordis service-getter dependency scoping and enforce loopback-only RPC access. (7090cc4)
  • Include required empty details in RPC error envelopes so rc.2 clients retain actionable MinerU error objects instead of rejecting the wire response. (7090cc4)

Full Changelog: v0.0.11...v0.0.12

v0.0.11

Choose a tag to compare

@Yurzi Yurzi released this 06 Sep 17:11

dsh-pdf-mineru v0.0.11 delivers critical storage concurrency protections, configuration schema v2 with automated migration, configurable inline image budgets, precise reading-continuation cursors, gated secondary artifacts, and strict lossless JSON tool outputs.

⚠️ Breaking Changes

  • Storage Protocol & Locking: Stop all MinerU processes sharing the storage root before upgrading. .process.lock is now a persistent version fence, not a lock to delete at normal shutdown. Local hard-link support and shared PID visibility are required; NFS or cross-host locking is not supported. (c597545)
  • Configuration Schema v2: Plugin configuration is versioned as schema v2. Legacy schema v1 configuration is automatically migrated: obsolete defaults.artifacts and limits.maxFilesPerRequest settings are validated and pruned. (2a363d4)
  • Continuation Cursor Contract: Replaced numeric line offsets (read_offset_line) with an opaque Unicode-safe cursor token for partial reading continuations. (c597545)
  • Secondary Artifact Gating: Secondary artifact file paths (layout.json, model.json, etc.) in read_pdf are now omitted by default unless explicitly requested via focus: 'artifacts'. (deded1c)

Added

  • Configurable per-request inline image budget via output.maxInlineImages setting (defaulting to 6). (d571013)
  • Added artifacts focus option to read_pdf to inspect raw secondary artifact file paths on demand. (deded1c)
  • Automatic legal document boundary clamping (narrowPageSelection) for out-of-bounds page requests in read_pdf. (deded1c)

Fixed

  • Ensured all tool outputs strictly conform to lossless JSON by omitting undefined optional properties. (f2a3dad)
  • Removed obsolete defaults.artifacts from the shipped Cordis configuration to ensure clean startup under strict config validation. (c597545)
  • Routed async completion through a separate bounded synopsis API instead of Markdown projection flags, avoiding oversized Markdown allocations. (c597545, e75fc8d)
  • Accurately accounted for consumed image bytes during partial reads, stat checks, and close failures; isolated stable Figure identifiers from attachment failures. (c597545, e75fc8d)
  • Protected readers, image processors, producers, and storage maintenance across concurrent processes sharing a storage root, strictly rejecting symlinked traversal. (c597545)
  • Enforced non-mutating cache reads and isolated published results from non-deterministic provider output. (c597545)
  • Bounded maintenance traversal and surfaced incomplete storage scan statistics as lower bounds in the Web GUI. (c597545)

Changed

  • Upgraded storage coordination to scoped local-filesystem bakery locking (withLock) with a persistent .process.lock version fence. (c597545)
  • Migrated configuration schema to v2, adding bounded backward-compatible migration logic for v1 configuration. (2a363d4)
  • Streamlined prose presentation: removed verbose result headers and manifest paths, standardizing figure labeling as Figure N (Page X, "Title") and displaying explicit page ranges. (deded1c)
  • Replaced numeric line offsets with an opaque Unicode-safe cursor token for partial reading continuations. (c597545)

Full Changelog: v0.0.10...v0.0.11

v0.0.10

Choose a tag to compare

@Yurzi Yurzi released this 05 Sep 20:16

dsh-pdf-mineru v0.0.10 guards against spurious inline image emissions on non-image focus modes and prevents unintended full document scans when page image candidate lists are empty.

Fixed

  • Guarded shouldInline in read_pdf to only activate when focus includes the image modality, preventing inline image emission for non-image focus modes (toc, text, table). (bb86df5)
  • Prevented inlineImagesForSingleResult from falling back to full document scanning when candidate page image list is empty, adding comprehensive regression tests for per-page image isolation. (bb86df5)

Full Changelog: v0.0.9...v0.0.10

v0.0.9

Choose a tag to compare

@Yurzi Yurzi released this 05 Sep 20:05

dsh-pdf-mineru v0.0.9 introduces document table of contents inspection via focus: toc in read_pdf, and ensures strict schema compliance for inlined image outputs.

Added

  • Added toc option (with outline alias) to focus parameter in read_pdf, formatting and projecting document table of contents with hierarchical indentation and page indexing as Markdown. (62285e6)
  • Added comprehensive unit tests covering TOC markdown formatting, focus normalization, and outline-only content projection. (62285e6)

Fixed

  • Omitted undeclared internal attachmentRef property from inlined_images tool output items to strictly conform to readPdfResultSchema (additionalProperties: false), reconstructing ImageAttachmentRef within renderResult. (229bd2f)

Full Changelog: v0.0.8...v0.0.9

v0.0.8

Choose a tag to compare

@Yurzi Yurzi released this 05 Sep 18:33

Changed

  • Refactored model tool surface to decoupled, specialized single-document tools: read_pdf (synchronous reading with page slicing via pages, content focus filtering via focus, and reading-order multimodal figure inlining) and async_parse_pdf (native background parsing with document structure summary).
  • Enforced single file_path across tools, pipeline, Zod schema, and SettingsPage, removing multi-file parameters (file_paths) and maxFilesPerRequest limit while preserving underlying provider batch primitives.
  • Completely decoupled proprietary MinerU parameters (model, ocr, formula, table, language, artifacts, max_inline_images) from tool arguments; always request all artifacts from providers for permanent local caching.
  • Replaced markdown preview fields with full markdown_content and authoritative content_status (complete, partial, not_requested), featuring fair character budget allocation, clean paragraph-boundary truncation, and resume line offsets for partial deliveries.
  • Enhanced pages parsing to flexibly accept single numbers, number arrays, and range strings (e.g. "1-3, 5"); added focus filtering based on cached content_list.json with graceful fallback to Markdown.
  • Strictly ordered inline images by natural document reading order, linked to page selection, bound markdown captions, and eliminated rigid image quotas.
  • Re-architected model output and tool descriptions to strict Plain Text English with zero emoji, eliminating hallucinated guidance references to deprecated fields.
  • Decoupled document presentation, outline (TOC) extraction, character budget allocation, and prose formatting from MinerUService into dedicated src/service/result-presenter.ts.
  • Consolidated shared HTTP request pipelines, timeout management, error body diagnostics, and retry policies into src/providers/http-client.ts, eliminating duplicate logic across official and self-hosted providers.
  • Upgraded self-hosted-v2 multipart streaming to Node 22 native FormData and openAsBlob, removing third-party form-data package dependency.
  • Replaced hand-rolled streaming JSON parser in safe-zip with standard V8 JSON.parse, and standardized delay timers across all modules using node:timers/promises.
  • Adopted scoped locking (withLock) across mutating storage operations (clearCache, commitTransaction, quarantine) with contention backoff, eliminating startup lifetime lock holding to allow concurrent multi-process initialization.
  • Eliminated self-inflicted read-only (0o400/0o500) permission cycles in result-repository, streamlining cache cleanup and quarantine deletions.
  • Modernized single-process storage lock (ProcessLock) to use atomic file creation (flag: 'wx') with cross-platform dead PID reclamation, retiring abstract Unix sockets and Windows named pipes.

Removed

  • Removed mineru_health from the model-facing tool surface, keeping it strictly as an internal loopback RPC probe for the Web GUI.
  • Removed obsolete batch coordination (batch-coordinator.ts, batchViewSchema) in favor of unified ResultView.