- Updated main.ts to include 'PDF to CBZ' in the tools list.
- Added new types for CBZ options and comic metadata in pdf-to-cbz-type.ts.
- Implemented comic-info utility functions for generating ComicInfo.xml and metadata OPF files.
- Created pdf-to-cbz.html page with UI for PDF to CBZ conversion, including options for image format, quality, and metadata.
- Updated vite.config.ts to route to the new PDF to CBZ page.
- Updated README.md to include new dependencies: wasm-vips, pixelmatch, diff, and microdiff.
- Added wasm-vips to package.json and package-lock.json for advanced TIFF encoding.
- Enhanced localization files with new options for DPI, compression, color mode, and multi-page TIFF saving.
- Implemented UI changes in pdf-to-tiff.html to allow users to select DPI, compression type, color mode, and multi-page options.
- Refactored pdf-to-tiff-page.ts to utilize wasm-vips for TIFF encoding, replacing previous UTIF implementation.
- Introduced TiffOptions interface in pdf-to-tiff-type.ts for better type management.
- Updated Vite configuration to exclude wasm-vips from dependency optimization.
- Introduced a new tool for adding page labels to PDF documents, allowing users to apply Roman numerals, prefixes, and custom numbering ranges.
- Created a new HTML page for the tool with a user-friendly interface for file upload and label rule configuration.
- Implemented logic for handling file uploads, processing PDF files, and applying page labels based on user-defined rules.
- Added necessary types and utility functions for managing page label styles and normalization of start values.
- Updated main application configuration to include the new tool in the navigation.
- Added tests for page label utilities to ensure correct functionality.
- Implemented bates-numbering-page.ts for handling Bates numbering logic.
- Created a new HTML page for Bates numbering functionality.
- Added style presets and file handling for multiple PDF uploads.
- Integrated user interface elements for file selection, style customization, and preview.
- Enhanced main.ts to support collapsible categories and compact mode for tool grid.
- Updated types for Bates numbering in bates-numbering-type.ts.
- Registered the new tool in tools.html and updated routing in vite.config.ts.
- Add WASM settings page for configuring external AGPL modules
- Implement dynamic loading for PyMuPDF, Ghostscript, and CoherentPDF
- Add Cloudflare Worker proxy for serving WASM files with CORS
- Update all affected tool pages to check WASM availability
- Add showWasmRequiredDialog for missing module configuration
Documentation:
- Update README, licensing.html, and docs to clarify AGPL components
are not bundled and must be configured separately
- Add WASM-PROXY.md deployment guide with recommended source URLs
- Rename "CPDF" to "CoherentPDF" for consistency
- Add `generate-i18n-pages.mjs` script to pre-render localized HTML files at build time
- Add `generate-sitemap.mjs` script to generate language-aware sitemap.xml
- Create `navbar-simple.html` and `footer-simple.html` partials for simple mode
- Update all 80+ tool pages with language routing support
- Expand supported languages to 12: en, de, es, fr, it, pt, tr, vi, id, zh, zh-TW
- Update i18n.ts with new language names and support configuration
- Implement languageRouterPlugin in vite.config.ts for dev server routing
- Update nginx.conf for production static file serving from language directories
- Update TRANSLATION.md with new architecture documentation and language addition guide
- Fix relative paths in 404.html for static deployment compatibility
- Update package.json with new build scripts and dependencies
- Improves SEO through static pre-rendering and proper sitemap generation
## Simple Mode Enhancements
- Add `simple-index.html` as dedicated homepage for Simple Mode
- Hide marketing sections (FAQ, How It Works, Related Tools) on tool pages
- Add simplified navbar and footer for tool pages in Simple Mode
- Configure vite preview server to handle language-prefixed URLs
## Language Routing
- Add middleware to rewrite language-prefixed URLs (e.g., /de/merge-pdf.html)
- Support all languages: en, de, es, fr, id, it, pt, tr, vi, zh, zh-TW
- Create .htaccess with internal rewrites for Apache/Hostinger hosting
## Translation Updates
- Add missing translations for digitalSignPdf, validateSignaturePdf,
emailToPdf, fontToOutline, deskewPdf to es, pt, tr, zh-TW
- Add Digital Signature and Validate Signature to homepage translation keys
- Fix language regex patterns to include all supported languages
- Fix typo in encrypt-pdf.html
- Replace duplicated navbar markup across all HTML pages with {{> navbar }} partial
- Replace duplicated footer markup across all HTML pages with {{> footer }} partial
- Add TypeScript type definitions for vite-plugin-handlebars integration
- Update vite.config.ts to support handlebars partial compilation
- Update tsconfig.json to include handlebars type definitions
- Update nginx.conf for proper static file serving with partials
- Update translation files for de, pt, tr, vi, and zh-TW locales
- Reduce code duplication and improve maintainability across 13+ HTML pages
- Ensure consistent navbar and footer behavior across the entire application
- Extract navbar component from index.html into src/partials/navbar.html
- Extract footer component from index.html into src/partials/footer.html
- Add update-partials.js script to automate partial injection into page templates
- Update all 80+ page templates to use injected navbar and footer partials
- Update vite.config.ts to support partial file processing
- Update package.json and package-lock.json with build script changes
- Sync all translation files (de, en, fr, id, it, pt, tr, vi, zh, zh-TW) with latest keys
- Improves maintainability by centralizing navbar and footer updates across all pages
New Features:
- Add Deskew PDF tool for straightening scanned/skewed PDF pages
- Add Font to Outline tool for converting text to vector paths
- Add translations for new tools in all supported locales (de, en, id, it, tr, vi, zh)
Improvements:
- Migrate GitHub issue templates from markdown to YAML forms
- Separate templates for bug reports, feature requests, and questions
- Add config.yml for issue template chooser
- Update sitemap.xml with new tool pages
- Update ghostscript loader and helper utilities
- Add CID inline image support via base64 data URI replacement
- Implement clickable link extraction from HTML anchors using regex
- Embed email attachments into PDF using pymupdf embfile_add
- Reduce font sizes for more compact PDF output (18px subject, 12px body)
- Format date with timezone (UTC+HH:MM) while preserving original time
- Clean email address formatting (Name (email) instead of <brackets>)
- Add UI options: page size selector, CC/BCC toggle, attachments toggle
- Refactor tool page headers to prevent flash of unstyled content (FOUC):
- Move long SEO titles to visually hidden `<h1>` tags for search engines.
- Use `<h2>` for visible tool titles with text matching i18n keys.
- Sync default HTML subtitles with [tools.json]
- Add new tool to apply cryptographic signatures to PDFs using X.509 certificates
- Support PKCS#12 (.pfx, .p12) and PEM certificate formats
- Create PKCS#7 detached signatures compatible with all major PDF viewers
- Optional visible signature with customizable position, image, and text overlay
- Add translations for English, German, Vietnamese, and Chinese
- Centralize CDN versions/URLs in cdn-version.ts
- Switch LibreOffice to @bentopdf/libreoffice-wasm package
- Fix service worker fallback to support all WASM packages
- Remove dead code and silence production logs
- Update language regex pattern to include Vietnamese (vi) locale
- Modify pagesRewritePlugin to recognize and route Vietnamese URLs
- Enable proper URL rewriting for /vi/* paths alongside existing en, de, zh routes
- Ensures Vietnamese language pages are correctly served through development server
- Update README with comprehensive subdirectory hosting instructions and BASE_URL configuration guide
- Convert absolute asset paths to relative paths in index.html for proper subdirectory deployment
- Update all worker script imports to use relative paths instead of absolute paths
- Fix favicon and image references to work correctly when hosted in nested directories
- Normalize whitespace and formatting across worker files for consistency
- Update vite.config.ts to properly handle BASE_URL configuration for subdirectory deployments
- Ensure all tool pages and logic files maintain compatibility with subdirectory hosting
- Enable BentoPDF to be deployed at any URL path (e.g., example.com/tools/bentopdf/) without breaking asset loading