8.8 KiB
8.8 KiB
Changelog
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.4.4 — LocalToolBox organization migration
Changed
- Moved canonical repository, Toolbox schema, corresponding-source, and package-registry URLs from the personal
zemionnamespace to thelotoboLocalToolBox organization. - Upgraded the Toolbox contract, React shell, and validation testkit to
0.2.3from the organization-owned registry. - Bumped the app/package version to
0.4.4.
0.4.3 — Aligned Toolbox content width
Changed
- Expanded the PDF workspace's maximum content width from
900pxto90remso it aligns with the shared Toolbox shell bar and central catalogue. - Bumped the app/package version to
0.4.3.
0.4.2 — Corrected Toolbox header orientation
Changed
- Upgraded the Toolbox contract, React shell, and validation testkit to
0.2.2. - Moved the Toolbox icon and
add·ideas Toolboxlabel to the fixed far-left block, kept the app title and one tagline centered, and moved the fixed control cluster to the far right in the reverse order: Help, the PDF-specific Gitea source link, Apps, and Personalize. - Bumped the app/package version to
0.4.2.
0.4.1 — Stable Toolbox header layout
Changed
- Upgraded the Toolbox contract, React shell, and validation testkit to
0.2.1. - Adopted the stable shared top bar: the fixed left cluster contains Personalize, Apps, the PDF-specific Gitea source link, and Help; the app title and one tagline remain centered; and the fixed far-right block contains the Toolbox icon and
add·ideas Toolboxlabel.
0.4.0 — Shared Toolbox header and themes
Added
- Added the standard Toolbox header controls for in-app help, the app-specific Gitea source link, appearance personalization, and application switching.
- Added explicit light, dark, and system-following themes for the PDF workspace, saved-workspace list, merge queue, dialogs, status messages, and controls.
Changed
- Upgraded the Toolbox contract, React shell, and validation testkit to
0.2.0. - The header now uses the manifest's repository metadata for the source link instead of carrying a release-specific source action.
- Replaced application color literals with semantic PDF workspace variables while intentionally keeping rendered PDF pages on a white paper surface.
- Scoped application button and card styles to the shell's main content so they cannot override shared header controls.
- Bumped the app/package version to
0.4.0.
0.3.4 — PDF.js compatibility and Toolbox integration
Added
- Added a generated Toolbox App Contract manifest and shared Toolbox Shell integration with standalone fallback.
- Added deterministic, checksummed release ZIP packaging for artifact-based toolbox assembly.
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.toHexcompatibility shim before PDF.js worker code runs. - Added the same
toHexcompatibility shim in the main app bundle for browsers that do not provide it natively. - Made Vite asset URLs relative so the app can be hosted at arbitrary nested paths.
- Corrected the documented licence identifier to
AGPL-3.0-only. - Bumped the app/package version to
0.3.4.
0.3.2 — Multi-file merge queue release
Added
- Added a multi-file merge queue for selecting, loading, reviewing, reordering, removing, and merging several incoming PDFs.
- Added queue merge modes for replacing the current document, appending after the current workspace, or inserting at a chosen one-based page position.
- Added merge queue helper tests for queue ordering, readiness checks, insert-position clamping, and merged filename generation.
- Added PDF merge service tests for queue-only and base-plus-incoming merge results.
Changed
- Changed the file picker to accept multiple PDFs. A single file with no active workspace still opens directly; otherwise selected files are added to the merge queue.
- Replaced the old single-file merge card with a queue-based merge panel.
- Merging now creates a new unsaved workspace from the materialized merge result, preserving the current workspace state before append/insert merges.
- Bumped the app/package version to
0.3.2.
0.3.1 — Split ZIP export release
Added
- Added browser-side ZIP packaging for split results via
src/pdf/pdfZipService.ts. - Added a “Download all as ZIP” link next to the individual single-page split downloads.
- Added tests for split-result ZIP creation, ZIP entry name sanitization/deduplication, ZIP filename generation, and empty-result handling.
Changed
- Extended generated-output handling so split downloads can include both individual page files and one ZIP archive, with object URL cleanup handled by
usePdfGeneratedOutputs. - Bumped the app/package version to
0.3.1.
0.3.0 — Selection workspace and maintenance release
Added
- Added “Open selection as workspace” to create a new unsaved active workspace from the selected pages in current visual order.
- Added selection-workspace helper tests for visual-order selection and derived naming.
- Added TypeScript type-check, ESLint, Prettier, and aggregate
checkscripts. - Added ESLint flat config with TypeScript, React Hooks, React Refresh, browser, and Node config support.
- Added Prettier configuration and ignore file.
- Added Vite client type declarations for worker URL imports.
- Added Vitest-based test scripts for one-off and watch-mode test runs.
- Added pure tests for workspace command cloning, snapshot command stability, and serializable command record round-tripping.
- Added hook-level tests for workspace load/replace behavior, command execution, undo, redo, history, redo clearing, dirty-state updates, and content-change callbacks.
Changed
- Bumped the app/package version to
0.3.0. - Switched to
@vitejs/plugin-react. - Marked the package as an ES module package to remove the Vite CJS Node API deprecation warning during local tooling runs.
- Ran Prettier across the project after adding the formatting configuration.
- Split the former monolithic
ReorderPanelinto focused page-workspace components:PageGrid,PageCard,PageSelectionToolbar,DropIndicator, andCopyPagesDialog. - Kept drag/drop move, Ctrl/⌘ copy-drag, selection, rotation, deletion, preview opening, and copy-by-position behavior wired through the existing
ReorderPanelAPI. - Extracted generated PDF download URL creation and cleanup for split, extract, and export results into
src/hooks/usePdfGeneratedOutputs.ts. - Updated
ActionsPanelto render prepared download objects instead of creating object URLs during render. - Extracted workspace page, selection, dirty-state, message, undo/redo history, command creation, command execution, and reset/load helpers from
App.tsxintosrc/workspace/useWorkspaceState.ts. - Extracted thumbnail state, caching, invalidation, progressive rendering, rotation-aware rendering, copied-page thumbnail reuse, and thumbnail error reporting into
src/pdf/usePdfThumbnails.ts. - Kept PDF loading, IndexedDB persistence, dialogs, preview, merge, export, and split orchestration in
App.tsxfor now.
Fixed
- Renamed Prettier config files to
.prettierrc.jsonand.prettierignoreso Prettier picks them up automatically. - Fixed existing
tsc --noEmitfailures for Vite worker URL imports andUint8Array/BlobPartPDF byte handling. - Removed a duplicate copy-dialog validation error assignment in
ReorderPanel. - Rotated thumbnails from loaded/saved workspaces are now regenerated from the actual current page rotation instead of relying only on rotation changes after load.
- Copied/duplicated pages now receive thumbnails through the shared thumbnail hook/cache path instead of ad-hoc copy handling in
App.tsx.
0.2.0 — Browser-only PDF workspace baseline
Added
- Browser-only PDF loading and processing.
- Visual page workspace with thumbnails, page preview, reordering, selection, rotation, deletion, duplication, extraction, split, merge, and export.
- Named local workspaces persisted in IndexedDB, including the PDF binary and workspace state.
- Undo/redo command history with labels, timestamps, payload snapshots, and visible redo entries.
- Reset and delete-workspace confirmation dialogs.
- In-app Help/Tutorial dialog and keyboard shortcut overview.
- Administrator-focused README for static self-hosting.
Notes
This release is the baseline for the next refactoring phase. The goal of the upcoming internal changes is to preserve behavior while extracting workspace state, thumbnail handling, generated object URLs, UI subcomponents, tests, and linting into clearer modules.