Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.4.0] - 2026-07-25

### 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

### 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)

### 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

## [1.3.0] - 2026-07-21

### Added
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![CI](https://github.com/NX1X/EasyConvert/actions/workflows/ci.yml/badge.svg)](https://github.com/NX1X/EasyConvert/actions/workflows/ci.yml)
[![CodeQL](https://github.com/NX1X/EasyConvert/actions/workflows/codeql.yml/badge.svg)](https://github.com/NX1X/EasyConvert/actions/workflows/codeql.yml)
[![Version](https://img.shields.io/badge/version-1.3.0-blue.svg)](https://github.com/NX1X/EasyConvert/releases)
[![Version](https://img.shields.io/badge/version-1.4.0-blue.svg)](https://github.com/NX1X/EasyConvert/releases)
[![License](https://img.shields.io/badge/License-Apache%202.0-informational.svg)](LICENSE)
[![Built](https://img.shields.io/badge/Built-June%202025-blue.svg)](#)
[![Views](https://hits.sh/github.com/NX1X/EasyConvert.svg?label=Views&color=blue)](https://hits.sh/github.com/NX1X/EasyConvert/)
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "easyconvert",
"version": "1.3.0",
"version": "1.4.0",
"description": "Free PDF table to Excel/CSV converter with advanced table detection and RTL text support",
"main": "public/index.html",
"scripts": {
Expand Down
Loading