Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
52a8d1f
Release v0.3.61 — separation image rendering + ActualText, Node quick…
yfedoseev Jun 6, 2026
b9ea331
Merge main (#652 press-accurate CMYK→RGB via /OutputIntents ICC) into…
yfedoseev Jun 6, 2026
af425c8
fix(ci): resolve v0.3.61 CI failures (fmt, clippy doc-lints, rustdoc …
yfedoseev Jun 6, 2026
e966dc6
docs(changelog): attribute #652 color limitations to tracking issue #655
yfedoseev Jun 6, 2026
c36cdd2
fix(ci): ruff lint in test_core_parity.py (lines-after-imports + B017…
yfedoseev Jun 7, 2026
97d4d1b
fix(text): RTL word order in tagged PDFs via geometric row ordering (…
yfedoseev Jun 7, 2026
7733389
fix(text): grapheme-aware RTL reversal keeps Arabic diacritics attach…
yfedoseev Jun 7, 2026
0209f83
fix(text): sane space-gap threshold when font lacks a space glyph (#656)
yfedoseev Jun 7, 2026
d3408f0
fix(js): export ContentType/ImageFormat/Thumbnail*/OCR* aliases from …
yfedoseev Jun 7, 2026
bd988f7
docs(changelog): note Arabic grapheme/space-gap fixes + Node.js barre…
yfedoseev Jun 7, 2026
593ffe0
fix(text): keep char_widths in sync when merging spans — fixes number…
yfedoseev Jun 7, 2026
4482978
fix(text): stop spurious spaces after Indic matras (Tamil/Bengali/Dev…
yfedoseev Jun 7, 2026
e04aaad
fix(java): fall through to bundled native when override path is absen…
yfedoseev Jun 7, 2026
bd3c9fe
docs(changelog): note table/Indic extraction fixes + Java cross-OS lo…
yfedoseev Jun 7, 2026
0f2fb84
Merge remote-tracking branch 'origin/main' into release/v0.3.61
yfedoseev Jun 7, 2026
6253bb4
style: apply Biome + Spotless formatting to barrel/loader edits
yfedoseev Jun 7, 2026
5517b0d
fix(ci): make Node.js Bindings job pass on all OSes
yfedoseev Jun 7, 2026
ba20734
fix(ci): load a git-tracked font in html-css tests for cross-OS pass
yfedoseev Jun 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 36 additions & 6 deletions .github/workflows/ci-fips.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:

- name: Install build deps (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y cmake nasm golang-go
run: sudo apt-get -o Acquire::Retries=3 update && sudo apt-get -o Acquire::Retries=3 install -y cmake nasm golang-go

- name: Install build deps (macOS)
if: runner.os == 'macOS'
Expand All @@ -66,7 +66,7 @@ jobs:
run: choco install nasm -y

- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1
with:
cache: false
rustflags: ''
Expand All @@ -87,6 +87,36 @@ jobs:
- name: Test --no-default-features --features fips,icc
run: cargo test --no-default-features --features fips,icc

# FIPS-safe example run (cross-OS): the core scenarios use no weak crypto,
# so they must work under the FIPS build. Demonstrates extraction /
# conversion / create / search / edit / forms on Linux/macOS/Windows.
# The FIPS *rejection* path (Standard Security R≤4 needs MD5+RC4 → refused;
# only AES-256/SHA-2 R=6 is permitted, ISO 32000-1 §7.6) is covered by the
# `cargo test --features fips,icc` step above (encryption handler unit tests).
- name: Run FIPS-safe Rust examples (cross-OS, with assertions)
shell: bash
run: |
set -uo pipefail
PDF=tests/fixtures/simple.pdf
out_dir="${RUNNER_TEMP:-/tmp}"
FEAT="--no-default-features --features fips,icc"
fail() { echo "ASSERT FAILED: $1"; exit 1; }
run() { # run <expect> -- <cargo-run-args...>
local expect="$1"; shift; [ "$1" = "--" ] && shift
echo "::group::$*"
local out; out="$("$@" 2>&1)" || { echo "$out"; fail "non-zero exit: $*"; }
echo "$out"
[ -n "$(printf '%s' "$out" | tr -d '[:space:]')" ] || fail "empty output: $*"
[ -z "$expect" ] || printf '%s' "$out" | grep -qF "$expect" || fail "missing '$expect': $*"
echo "::endgroup::"
}
run "Pages:" -- cargo run $FEAT --quiet --example tutorial_extract_text -- "$PDF"
run "" -- cargo run $FEAT --quiet --example tutorial_convert_formats -- "$PDF"
run "" -- cargo run $FEAT --quiet --example tutorial_create_pdf
run "" -- cargo run $FEAT --quiet --example tutorial_search_text -- "$PDF" "PDF"
run "" -- cargo run $FEAT --quiet --example tutorial_edit_document -- "$PDF" "$out_dir/fips_edited.pdf"
run "" -- cargo run $FEAT --quiet --example tutorial_forms_annotations -- "$PDF"

# ─── Java binding FIPS build (v0.3.53 #NNN). Validates the
# `pdf_oxide_jni` cdylib compiles under --features fips and that
# the Java surface still works against a FIPS-compiled native
Expand Down Expand Up @@ -116,14 +146,14 @@ jobs:

- name: Install build deps (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y cmake nasm golang-go
run: sudo apt-get -o Acquire::Retries=3 update && sudo apt-get -o Acquire::Retries=3 install -y cmake nasm golang-go

- name: Install build deps (macOS)
if: runner.os == 'macOS'
run: brew install cmake nasm go

- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1
with:
cache: false
rustflags: ''
Expand Down Expand Up @@ -232,7 +262,7 @@ jobs:

- name: Install build deps (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y cmake nasm golang-go
run: sudo apt-get -o Acquire::Retries=3 update && sudo apt-get -o Acquire::Retries=3 install -y cmake nasm golang-go

- name: Install build deps (macOS)
if: runner.os == 'macOS'
Expand All @@ -251,7 +281,7 @@ jobs:
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0

- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
uses: actions-rust-lang/setup-rust-toolchain@46268bd060767258de96ed93c1251119784f2ab6 # v1
with:
cache: false
rustflags: ''
Expand Down
Loading
Loading