Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 08:26
Immutable release. Only release title and notes can be modified.
611fb9c

Added

  • Full right-to-left extraction support: page direction is auto-detected, RTL tables are emitted with column 1 as the rightmost (first logical) column, and mixed Hebrew/English cells are joined in reading order
  • Excel exports of RTL documents open with a right-to-left sheet view, and the data preview lays out right-to-left for RTL documents
  • "Include Headers" now adds an Excel autofilter to the header row, making the exported sheet filterable
  • Fully bilingual status messages: progress, errors, file info, page count, and column labels now follow the selected language
  • Footer now shows the GitHub logo linking to the source repository and an Apache License 2.0 notice (bilingual)
  • Release workflow (.github/workflows/release.yml): pushing a v* tag (or a manual dispatch) creates the GitHub Release with the matching CHANGELOG section as notes

Changed

  • Table extraction rewritten around page-wide column detection (coverage histogram): rows with empty cells keep their remaining cells in the correct columns instead of shifting left, and title or total lines can no longer break column detection
  • Row grouping now merges nearby baselines instead of fixed-grid rounding, so slightly wobbly lines are no longer split into separate rows
  • Column boundaries use the real rendered item widths from PDF.js (clamped against producer-inflated widths) instead of a character-count estimate
  • Overlaid fragments such as decimal points are folded back into their host number ("1 20" plus an overlaid "." now extracts as "1.20")
  • Structured data extraction keeps key names: "Name: John" extracts as two cells ("Name", "John") instead of dropping the key
  • Cleanup options (Skip Empty Rows, Merge Fragments, Auto-detect Columns) are now non-destructive: unchecking an option restores the original extracted data
  • Turnstile verification is required once per session instead of once per file
  • "Hebrew/Arabic RTL Support" is now enabled by default (it only activates on documents detected as RTL)
  • scripts/release.sh reworked for the PR-based flow: it now only validates and pushes the version tag (the version bump and CHANGELOG entry come from the PR, the GitHub Release comes from the release workflow)

Fixed

  • Excel exports no longer prefix cells that start with "=", "+", "-", or "@" with an apostrophe; SheetJS writes string-typed cells that spreadsheet applications never evaluate as formulas, so the CSV-only injection guard now leaves .xlsx cell text unmangled
  • CSV export now quotes cells containing carriage returns
  • Uploaded filenames only have the final ".pdf" extension stripped (case-insensitive), so names containing ".pdf" elsewhere are no longer mangled
  • Removed the misleading "multiple" attribute from the file input (only one file is processed)
  • Dropped files with an empty MIME type (some Linux file managers) are accepted when they have a .pdf extension
  • The previous PDF document is now destroyed before loading a new one, releasing its memory
  • The service worker precaches style.css, app.js, manifest.json, and the icons, so the app works offline instead of loading unstyled
  • Replaced spread-based Math.max calls with reduce loops to avoid stack overflows on very large documents