diff --git a/.github/release-notes/v0.4.0.md b/.github/release-notes/v0.4.0.md new file mode 100644 index 0000000..0ee3d96 --- /dev/null +++ b/.github/release-notes/v0.4.0.md @@ -0,0 +1,25 @@ +OffPDF v0.4.0 completes the direct-editing foundation while keeping unsupported PDF structures fail-closed. + +Highlights: + +- Source-content inspection uses one bounded input snapshot with deterministic locators. +- Oversized, malformed, compressed, or ambiguous content is rejected explicitly. +- Font encodings and unsafe PDF text-state operators are checked before a source edit can be considered. +- Desktop job identifiers are validated before filesystem use. +- Operating-system file intake keeps the original file order. +- CI requires the same PDF engines exercised by production paths. + +This release does not claim Word-like editing for arbitrary PDFs. Existing source text and image replacement remains limited to separately proven structures; overlays continue to be treated as new content. + +Known issue: + +- Some real-device HEIC/HEIF files may still crash on Windows; investigation continues in issue #14. + +Thanks to @Aaqibhafeezkhan for contributing to this release. + +Packages: + +- Signed and notarized DMG for Apple Silicon Macs +- Windows x64 NSIS installer — unsigned while Authenticode signing is pending. Verify the accompanying SHA-256 file before use. + +See [CHANGELOG.md](https://github.com/McanKul/offpdf/blob/v0.4.0/CHANGELOG.md) for full details. diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bf5add..bff5edd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,32 @@ All notable project changes should be documented here. ## Unreleased +## 0.4.0 - 2026-10-05 + +### Added + +- Completed the v0.4 direct-editing foundation with a documented compatibility matrix and an explicit boundary between safe overlays and narrowly proven source-content edits. +- Added deterministic, read-only source locators for supported whole-string text and uniquely referenced image structures without exposing a general save capability. + +### Fixed + +- Source-content inspection now reads from one bounded snapshot and fails closed on oversized, malformed, compressed, or ambiguous PDF structures. +- Cross-reference tables, indirect objects, decoded content streams, font encodings, and unsafe text-state operators are bounded or rejected with explicit reasons. +- Desktop job identifiers are validated before they can reach temporary filesystem paths. +- Files opened through the operating system retain their original intake order. + +### CI + +- Rust CI now installs and requires the PDF engines used by production paths instead of silently skipping their tests. + +### Contributors + +- Thank you to @Aaqibhafeezkhan for contributing to this release. + +### Known issues + +- Some real-device HEIC/HEIF files may still crash on Windows; investigation continues in issue #14. + ## 0.3.2 - 2026-09-11 ### Added diff --git a/package-lock.json b/package-lock.json index 26e4eb3..e0d31b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "offpdf", - "version": "0.3.2", + "version": "0.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "offpdf", - "version": "0.3.2", + "version": "0.4.0", "license": "MIT", "dependencies": { "@tauri-apps/api": "^2.1.1", diff --git a/package.json b/package.json index 0049c24..316e619 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "offpdf", "private": true, - "version": "0.3.2", + "version": "0.4.0", "type": "module", "description": "Free, open-source, offline-first desktop PDF utility.", "license": "MIT", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 2d7686c..d357649 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2846,7 +2846,7 @@ dependencies = [ [[package]] name = "offpdf" -version = "0.3.2" +version = "0.4.0" dependencies = [ "flate2", "fs2", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index d8291ef..72fe163 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "offpdf" -version = "0.3.2" +version = "0.4.0" description = "Free, open-source, offline-first desktop PDF utility." authors = ["OffPDF contributors"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 3affb51..8b4395d 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "OffPDF", - "version": "0.3.2", + "version": "0.4.0", "identifier": "app.offpdf.desktop", "build": { "frontendDist": "../dist",