- Rate limit call to API license/plugin update server, and make them more likely to happen appropriately
- Add auto updates setting so users can opt-in to auto updates (if CRON is on, which it is by default)
- Testing with WC 7.8
- Tweak - More checks for errors during (AJAX) test stamping and live stamping - mostly checking for SetaPDF-Stamper installation
- Tweak - Declare WooCommerce HPOS compatibility
- Fix - Can't access value of exception $e when no exception thrown line 60 classes/woostamper-pdf-test.php
- Fix - Settings inheritance (product variation -> product -> global) in classes/woostamper-pdf-file-handler.php
- Tweak - Change Test/Delete "buttons" on settings page to actual buttons with nonce sent in data attribute
- In case test.pdf is not in wp-content/uploads/woostamper directory on test request, attempt to restore it there
- Use an Artifact Text Stamp child class to lend accessibility to stamped PDF documents
- Don't set SetaPDF $page variable before running $callback, to avoid wrong page size on first pass
- Enqueue admin scripts, which are now unminified to make debugging easier
- Allow for *per-pdf-product* manipulation of security handler to unencrypt *encrypted* PDFs before stamping if owner password provided
- No longer try to store temporary PDFs using get_temp_dir() - use WP uploads directory always for more reliability
- Repair WooStamper logging settings page delete function
- More careful type casting of settings values for PHP 8+ (int cannot be multiplied by string)
- Testing with WP 6.1 and WC 7.1
- Testing with WP 6 and WC 6.6
- Feature - use callback in SetaPDF Stamper addStamp for watermarking on pages of varying size
- Feature - 'woostamper_filter_shortcodes' filter hook added for adjusting shortcode output
- Initial testing with PHP 8
- Fix - SOMDN Free Downloads integration broken on get_temporary_file_folder call
- Testing with WC 5.7
- Fix - wrong method called upon clicking "delete all customer-generated PDFs"
- Fix - _woostamper_encryption $_POST value not saved in per-product settings
- Fix - use isset() not empty() in case of 0 values when saving settings
- Fix - variables for font size and pdf permissions wrong in woostamper-pdf-stamp.php after previous edits
- Fix - clean up bitwise calculation of file permissions in woostamper-pdf-stamp.php
- Tweak - update to current usage of "woocommerce-data-tip" in per-product WooStamper settings
- Tweak - add 'woostamper_setapdf_stamper_stamp_text' filter (handy for marking stamp as Artifact Stamp, for example)
- Testing with WC 5.1
- Delete only PDFs when deleting accrued test watermarked files
- Logging global $woostamper_logs not defined if logging not on
- Fix - use isset() instead of empty() to check for password in per-product settings, to avoid passwording when not desired
- Tweak - move woostamper_filter_font filter hook inside font name switch
- Fix - don't throw E_WARNING on include_once of SetaPDF library files; also, try looking for SetaPDF_Stamper class first in classes/woostamper-pdf-compatibility.php
- Feature - always retain original file name through watermarking process and delivery
- Feature - recycling to re-serve watermarked files if they already exist on server, saving CPU
- Feature - cron to delete saved files after 1 week (filterable duration for now)
- Feature - more granular control of file protections with owner passwording and choice of encryption type (128 bit to allow higher file protections).
- Feature - settings page UX designed to indicate passwording/protections require encryption, and which protections are offered with different encryption levels.
- Feature - beta version checks (opt in at Settings -> WooStamper license)
- Fix - variation global settings unobscured
- Do away with "_e.pdf" file ending when file is encrypted. Should be delivered with title as expected by admin
- $pages_to_stamp not valid range when end page = "last", create separate method to determine which pages to stamp
- separate method to determine file permissions
- update stamp position settings names and set defaults
- "Unlock with User Password" only works with 128-bit encryption
- Update last modified date to reflect correct UTC offset
- Setting name consistency, unused names removed
- Initial release