4.6 KiB
4.6 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.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.