Removed
- Orphan
docs/reference/api-gleam.mdleft behind bydc268c1c0e chore: drop Gleam binding entirely. CI Docstask docs:build:strictaborted on 8unresolved link referencewarnings from this file (e.g.[\BatchFileItem`],[0.0, 1.0],["https://example.com"]` patterns the strict link checker reads as broken markdown references). The Gleam binding itself was removed earlier; this is just nav cleanup. - java: removed stale hand-authored trait-bridge overlay in
packages/java/src/main/java/dev/kreuzberg/(9 files:IPostProcessor,IOcrBackend,IValidator,IEmbeddingBackend,OcrBackendBridge,PostProcessorBridge,ValidatorBridge,EmbeddingBackendBridge,package-info). Alef's trait-bridge code generation now produces these files correctly in the canonicalpackages/java/dev/kreuzberg/location; the overlay was leftover from before alef handled trait bridges and carried only stale unused imports and formatting differences. Both trees were being compiled by Maven'ssourceDirectory=basedirconfig, triggering duplicate-class errors and checkstyle violations. The canonical generated copies are now the sole source.
Fixed
-
alef: bump
alef_versionto 0.25.37 and regenerate all bindings. Picks up four fixes that affect the kreuzberg surface. (1) Kotlin/Android DTO instance methods (e.g.ExtractionConfig,RedactionConfig,ServerConfig,PaddleOcrConfigwithers) were emitted as broken top-level functions after the data-class constructor)with snake_case locals and references to non-existent native methods, breaking compilation; they are now emitted inside the class body as camelCase member stubs that throwUnsupportedOperationExceptionwith reconstruct-via-Builder guidance. (2) Java stops emitting throwingUnsupportedOperationExceptionstubs forSelf-returning DTO/enum methods (no JNI/FFM symbol exists for them yet — absence beats a stub that compiles but misleads), and restores thetruedefault for boxed@Nullable Boolean#[serde(default)]fields (e.g.ChunkingConfig.trim,EmbeddingConfig.normalize) so omitted JSON no longer surfacesnullfrom the accessor. (3) The newOcrBackend::emits_structured_markdownvtable method is now wired through the full FFI/native bridge surface (FFI struct + initializers, C header, Go/Zig/Dart/JNI/node bridges), fixing the rc.20missing field emits_structured_markdown in initializer of KreuzbergOcrBackendVTablenative-build break. (4) Enum associated static-factory methods are now collected and surfaced. Also carries the 0.25.36 cfg-variant dedup completeness (pyo3/napi/wasm/zig/dart FRB mirror) and the Javamarshal_optional_bytes.jinjatemplate registration. -
alef: bump
alef_versionto 0.25.35 and regenerate all bindings, fixing two binding-surface regressions that broke every language e2e suite on rc.20. (1) The async embedding/reranking entry points (embed_texts_async,rerank_async) vanished from generated bindings — the real implementations are generic /alef(skip)-marked and re-exported at the crate root under one cfg, while a no-ORT stub lives under the disjointnot(...)cfg; alef's extractor dropped the re-export and a dedup-by-name pass then collapsed the remaining pair, so the symbol disappeared whenever the surviving entry's cfg was inactive (embedTextsAsync is not a function, missingkreuzberg_embed_texts_asyncFFI symbol,:nif_not_loaded, etc.). alef 0.25.34's pub-use-clears-skip + dedup-by-(name,cfg)extractor fixes restore both cfg-gated variants. (2) Those paired variants then produced duplicate-method compile errors in single-surface bindings (JavaKreuzberg.javahad 14 identical-signature duplicates; C#/Go/Kotlin/Swift/Dart/PHP/Ruby/Elixir + the JNI shim likewise); alef 0.25.35's sharedcodegen::fn_dedupcollapses same-named cfg-variant functions to one host method for those backends while Rust-cfg-gated backends (FFI/napi/pyo3/wasm) keep both#[cfg]arms. Also carries the alef PHPDefault::defaultgating, Swiftexclude_typesforwarder filtering, extendrextendr_module!cfg-gated registration, Java checkstyle/import cleanups, and the Darttoken_countu32→i64cast. -
ci: copy
crates/kreuzberg-candle-ocrinto the musl build images. The crate is an optional path-dep of thekreuzbergcrate (candle-ocrfamily of features) but was neverCOPY'd intodocker/Dockerfile.musl-build, socargo buildaborted at workspace resolution withfailed to read /build/crates/kreuzberg-candle-ocr/Cargo.toml: No such file or directory. The same gap existed indocker/Dockerfile.musl-ffianddocker/Dockerfile.musl-rustler, which both depend onkreuzbergwith thefullfeature set; all three now copy the crate alongsidekreuzberg-paddle-ocr. The Cargo.toml stripsedblocks were already candle-ocr-safe (they never reference it), so the workspace member is preserved consistently. -
alef: bump
alef_versionto 0.25.30 and regenerate. Addsexcluded_default_features = ["heic"]to the[crates.dart]and[crates.swift]blocks so the generatedpackages/{dart,swift}/rust/Cargo.tomldefault = [...]arrays no longer pullheic—libheif-syshas no cross-compile story for iOS or Android NDK targets, which made CI Mobile (cargo check kreuzberg-darton aarch64-apple-ios / aarch64-apple-ios-sim / aarch64-linux-android / x86_64-linux-android) and the rc.20 PublishBuild Swift packagejob fail withpkg-config has not been configured to support cross-compilation. Theheicfeature itself is preserved as a forwarding entry so desktop callers can opt in via--features heic. The regen also picks up alef 0.25.28–0.25.30 fixes: Java PMD-violation suppressions, removal of generated-filealef:hashheaders, PHP module-entry version sync, and the per-fieldDefaultfallback for core types withoutDefault. -
crates/kreuzberg-ffi/tests/vtable_bytes_len.rsinitializer forKreuzbergOcrBackendVTablewas missing the newemits_structured_markdownfield added in rc.20, which made CI Rust onmacos-latestandubuntu-24.04-armfail with E0063missing field. The test now constructs the full vtable; no production code change required. -
scripts/publish/update-homebrew-formula.shnow ensuresdepends_on "libheif"is present in the tap formula at publish time. Homebrew bottle builds were failing during rc.18/rc.19 becauselibheif-syscould not locatelibheif.pcviaPKG_CONFIG_PATHin the brew sandbox (the formula declared onlycmake/pkg-config/rustas build deps). The injection is idempotent and self-healing for any future formula drift. -
ci: set
MACOSX_DEPLOYMENT_TARGET=15.0for the macOS Python wheel build (cibw-environment-macosinpublish.yaml).macos-latestis now macOS 15 (Sequoia), and the Homebrew HEIF/AV1 dylibs libheif bundles (libx265,libheif,libaom,libvmaf,libsharpyuv,libde265) carryLC_BUILD_VERSION minos 15.0. With the wheel taggedmacosx_11_0_arm64, delocate aborted the rc.20 run withDelocationError: Library dependencies do not satisfy target MacOS version 11.0. Pinning to 15.0 tags the wheelmacosx_15_0_arm64so the bundled dylibs satisfy the check. Only arm64 macOS is built (Intel dropped in rc.20+), and 15.0 is already the effective minimum imposed by the libheif dylibs.