From 5f017d3b221e906540846e44fbf42e416c125916 Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Tue, 7 Jul 2026 18:43:05 +0200 Subject: [PATCH] Bump version to 0.3.4 --- CHANGELOG.md | 9 +++++++++ README.md | 14 +++++++++----- package-lock.json | 4 ++-- package.json | 2 +- src/version.ts | 2 +- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bb9862..7353106 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ All notable changes to `pdf-tools` are documented here. The project follows a pragmatic versioning scheme while the app is still below `1.0.0`: minor versions mark coherent user-facing milestones; patch versions mark fixes and small improvements. +## 0.3.4 — PDF.js browser compatibility fix + +### Changed + +- Centralized PDF.js setup in a shared module so thumbnail rendering and page preview use the same legacy PDF.js build and worker configuration. +- Added a local PDF.js worker wrapper that installs a `Uint8Array.prototype.toHex` compatibility shim before PDF.js worker code runs. +- Added the same `toHex` compatibility shim in the main app bundle for browsers that do not provide it natively. +- Bumped the app/package version to `0.3.4`. + ## 0.3.2 — Multi-file merge queue release ### Added diff --git a/README.md b/README.md index b5258cc..059ad8b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Current hosted version: -Current release: **v0.3.1 — Split ZIP export release**. See [`CHANGELOG.md`](CHANGELOG.md) for release notes and milestone history. +Current release branch: **v0.3.4 — PDF.js `toHex` browser compatibility fix**. See [`CHANGELOG.md`](CHANGELOG.md) for milestone history. The app is a static React/Vite single-page application. There is no backend service, no server-side queue, and no server-side document storage. When hosted correctly, the server only delivers HTML, JavaScript, CSS, and static assets; PDF processing happens in the user's browser. @@ -40,6 +40,7 @@ This makes the project especially useful for self-hosted environments, public-se - **Thumbnail cache by page and rotation**: Rotated thumbnails are cached and only changed thumbnails need to be regenerated. - **Stable page references**: Duplicated pages and reordered pages are tracked as workspace page references rather than only by original page number. - **Merge choices**: Loading another PDF can replace the current document, append pages, or insert pages at a chosen position. +- **PDF.js compatibility setup**: PDF.js is configured through one shared module and a local worker wrapper so the app can polyfill `Uint8Array.prototype.toHex` before PDF.js runs in older browsers. - **In-app help**: The app includes a Help/Tutorial dialog with keyboard shortcuts and workflow explanations. ## Current features @@ -219,7 +220,7 @@ The app expects modern browser APIs, including: - Canvas; - modern JavaScript modules. -Use current versions of Chromium, Firefox, Safari, or Edge. +The app includes a small `Uint8Array.prototype.toHex` compatibility shim for PDF.js fingerprint handling in browsers that do not provide that typed-array helper natively. Use current versions of Chromium, Firefox, Safari, or Edge where possible. ## Versioning and release baseline @@ -228,10 +229,10 @@ The application version shown in the header is defined in `src/version.ts`. The The current development baseline is: ```text -v0.3.1 — Split ZIP export release +v0.3.4 — PDF.js toHex browser compatibility fix ``` -This release preserves the browser-only workspace baseline and adds split-result ZIP downloads on top of the selection-workspace feature. Workspace state, thumbnail handling, generated download URLs, page-grid components, tests, type-checking, linting, and formatting are separated enough to support additional feature work without turning `App.tsx` back into a monolith. +This branch preserves the browser-only workspace baseline, includes the multi-file merge queue from the `0.3.2` milestone, bumps the displayed app/package version to `0.3.4`, and adds a shared PDF.js setup with a `toHex` compatibility shim for older browsers. Workspace state, thumbnail handling, generated download URLs, page-grid components, tests, type-checking, linting, and formatting are separated enough to support additional feature work without turning `App.tsx` back into a monolith. ## Project structure @@ -248,6 +249,9 @@ src/ ReorderPanel.tsx Page grid, selection, drag/drop, copy/delete/rotate WorkspacePanel.tsx Workspace save/load/reset and undo/redo history pdf/ + pdfJs.ts Shared pdf.js setup and worker configuration + pdfjsWorker.ts Local pdf.js worker wrapper with compatibility shim + uint8ArrayToHexPolyfill.ts Compatibility shim for PDF.js fingerprint handling pdfService.ts pdf-lib operations: load, merge, split, export pdfThumbnailService.ts pdf.js thumbnail rendering pdfZipService.ts Browser-side ZIP packaging for split results @@ -291,7 +295,7 @@ src/ ### Milestone 3: Better merge and mobile handling -- [ ] Add a full multi-file merge queue. +- [x] Add a full multi-file merge queue. - [ ] Support drag-and-drop of PDFs into the page grid at the hovered position. - [ ] Add custom long-press drag on mobile. - [ ] Consolidate frequently used actions into a toolbar. diff --git a/package-lock.json b/package-lock.json index e71fe7d..0879784 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "pdf-tools", - "version": "0.3.2", + "version": "0.3.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pdf-tools", - "version": "0.3.2", + "version": "0.3.4", "dependencies": { "fflate": "^0.8.3", "pdf-lib": "^1.17.1", diff --git a/package.json b/package.json index a877917..ad61cd6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pdf-tools", - "version": "0.3.2", + "version": "0.3.4", "private": true, "type": "module", "scripts": { diff --git a/src/version.ts b/src/version.ts index 61b737a..0416fa1 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const APP_VERSION = '0.3.2'; +export const APP_VERSION = '0.3.4';