Skip to content

Latest commit

 

History

History
65 lines (51 loc) · 3.53 KB

File metadata and controls

65 lines (51 loc) · 3.53 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Xberg is the next iteration of Kreuzberg. The changelog starts fresh at 1.0.0-rc.1. For the Kreuzberg v1–v4 history, see the Kreuzberg v4 LTS changelog.


[Unreleased]

Changed

  • OcrExtractionResult now derives Default. Downstream bindings and callers can construct and extend it without spelling out every field.

Fixed

  • PDF/OCR worker-stack overflow. The deep per-page OCR extraction futures are now boxed (Box::pin) so their large state lives on the heap instead of inflating the worker-thread stack frame. Together with the stack the binding runtimes provision for the async path, this stops scanned / image-only PDFs from aborting the process with a stack overflow (SIGBUS) during OCR.
  • Tesseract image OCR no longer fails on an empty language list. OcrConfig { language: [] } joined to an empty Tesseract language string, which the native backend tried to load as a language pack named "" — surfacing as the confusing Failed to download language pack ''. An empty language now defaults to English consistently across every OCR backend, matching the documented OcrConfig default. PaddleOCR results also report English in their metadata instead of an empty language when none is configured.
  • WASM Tesseract backend builds again. It still treated the OCR language config as a single string after it became a list, so the WebAssembly build stopped compiling. It now uses the primary language (the in-memory WASI Tesseract handles one language at a time, like the PaddleOCR and VLM backends) and warns when more than one is requested.

1.0.0-rc.1 - 2026-06-26

Initial Xberg release candidate. Xberg continues the Kreuzberg document-intelligence engine under a new name with a reset v1 version line. This is a full rebrand with no back-compat aliases; the published kreuzberg packages remain frozen on the v4 LTS line.

Changed

  • Rebranded Kreuzberg → Xberg.
    • Rust: crate kreuzbergxberg (and every kreuzberg-* workspace crate → xberg-*); the kreuzberg:: namespace → xberg::; KreuzbergErrorXbergError.
    • CLI: binary kreuzbergxberg; config discovery kreuzberg.{toml,yaml,json}xberg.{toml,yaml,json}; all KREUZBERG_* environment variables → XBERG_*; cache directory .kreuzberg/.xberg/.
    • FFI: symbol prefix kreuzberg_*xberg_*; header kreuzberg.hxberg.h; lib kreuzberg_ffixberg_ffi.
    • Package coordinates: PyPI xberg, npm @xberg-io/*, RubyGems/Hex/pub.dev xberg, Maven io.xberg, NuGet Xberg, Packagist xberg-io/xberg, Homebrew xberg.
    • Go: module github.com/xberg-io/xberg with no /vN suffix (v1); the binding lives at packages/go/.
    • Docs: documentation now at docs.xberg.io.
  • ner-onnx: vendored the stripped span-mode GLiNER runtime as xberg-gliner, replaced the ORP pipeline wrapper with direct ort session management, and moved runtime model downloads to the xberg-io/gliner-models artifact repository. The public ner-onnx feature and NER config shape are unchanged.