Scheduled Sales, Discounts and Omnibus Price History for WooCommerce — Full changelog

For each release, see the entries below. The latest version is always at the top.
The current release notes also live in readme.txt under "== Changelog ==".

= 1.6.0 =
* New: Omnibus check while you plan: each scheduled sale shows, in the product editor, the prior price it will be measured against, counting your other scheduled sales, and warns you when a sale would not be lower than that price. In simple products and variations
* New: Price history tab: every price change of every product and variation, with the prior price of the current price, a search, and CSV export of one product or all of them
* New: Omnibus settings: when and where to show the prior price note, the number of days counted (30 or more), your own note text, and the strikethrough described below
* New: Strikethrough of the prior price, on by default: when a product was cheaper in the days before a sale, that lower price is the one shown struck through, and a sale that is not lower than it is shown as a plain price, without strikethrough, sale badge or prior price note. You can turn it off in the Settings tab
* New: Products whose price had not changed yet get their current price as a starting point in the price history when you install or update, marked as such
* New: Public functions for themes and plugins that build their own price HTML: ayudawp_msps_get_prior_price(), ayudawp_msps_get_prior_price_note() and ayudawp_msps_strikes_prior_price()
* Improved: Renamed to "Scheduled Sales, Discounts and Omnibus Price History for WooCommerce", so the Omnibus tools are easy to find when searching for them
* Improved: The price history keeps 13 months instead of 35 days, so it covers the same campaign of the previous year
* Improved: Variable products: a price that shows a reduction gets the prior price note of the variation it comes from, and the Omnibus heads-up of the product editor also appears in each variation
* Improved: Tested up to WooCommerce 11.2
* Fix: The prior price counts the price that was already in effect when the 30-day window opened, and the window is measured from the start of the sale instead of from today, so the note no longer changes on its own while a long sale runs
* Fix: The prior price note shows the price with or without tax, the way your store displays prices
* Fix: Exported CSV files (the scheduled sales export, the import template and the Command Palette export) no longer get PHP 8.4 deprecation notices written inside them when error display is on. CSV files are now written and read as standard CSV, so a backslash before a quote is no longer treated as an escape character

= 1.5.1 =
* Improved: Tested up to WooCommerce 11.1

= 1.5.0 =
* New: Renamed to "Scheduled Sales and Discounts for WooCommerce" so it's easier to find when searching for what it actually does
* New: Automatic EU Omnibus Directive prior-price tracking — a rolling 30-day price history per product, a heads-up in the product editor when a scheduled sale would need a lower reference price than the current regular price, and a note next to the price on the frontend when that happens
* Improved: Rewrote the plugin description and FAQ around real use cases and the new Omnibus tracking

= 1.4.1 =
* Improved: Tested up to WordPress 7.1
* Improved: Accessibility — the dash shown when a discount cannot be applied to the current regular price is now announced by screen readers, instead of being available only as a mouse tooltip, and product links that open in a new tab now say so

= 1.4.0 =
* New: Percentage and fixed amount discounts — each scheduled sale can now be a fixed price, a percentage off the regular price, or an amount off, calculated when the sale runs and refreshed on the next check if you edit the regular price
* New: Optional minimum and maximum final price for percentage and amount discounts, so the calculated price never drops below or climbs above the limits you set. The preview tells you when a limit changed the result
* New: Live preview of the final price while you create a scheduled sale, both for simple products and for variations
* Improved: CSV import and export handle the new discount columns (Discount Type, Discount Value, Min Price, Max Price). Files exported with earlier versions keep importing as fixed prices
* Improved: The scheduled sale form now looks and behaves the same in simple products and in variations, which had drifted apart in spacing, field widths and radio buttons
* Improved: Tested up to WooCommerce 11.0

= 1.3.0 =
* New: Exact-time scheduling — each scheduled sale now has a start and end time (hour and minute), not just a date, for precise flash sales
* New: Configurable check frequency — choose how often sales are checked for activation (every 5, 10, 15, 30 minutes, or hourly) from the Settings tab
* Improved: Scheduled times now display in your site's timezone using your configured time format, across the product editor, overview and dashboard
* Fix: Sales now activate and deactivate at your store's correct local time (previously activation could be offset by the site timezone)
* Fix: Security — AJAX actions now verify per-product edit permissions, CSV export neutralizes spreadsheet formula injection, and notification dismissal requires a valid nonce and capability
* Fix: Reject zero or negative sale prices and strictly validate submitted dates and times

= 1.2.3 =
* Improved plugin description, real-world use case examples and discoverability tags in readme

= 1.2.2 =
* Tested up to WooCommerce 10.7

= 1.2.1 =
* Updated promotional banner with new plugin recommendations

= 1.2.0 =
* New: Command Palette integration - export offers and open overview with Cmd+K / Ctrl+K from any admin screen
* Improved: Overview is now the default tab when entering the settings page
* Improved: "General" tab renamed to "Settings" for clarity
* Improved: Two plugin action links on the Plugins screen (Overview and Settings)
* Improved: Activation notice now mentions Command Palette shortcuts
* Improved: Contextual tips in Overview and Import/Export tabs about available keyboard shortcuts
* Fixed: Removed duplicate "Export all to CSV" button from the Overview tab (available in Import/Export tab)

= 1.1.4 =
* Fix: Fixed promotional banner button alignment on WordPress 7.0 due to core CSS specificity changes
* Tested up to WooCommerce 10.6.x
* Tested up to WordPress 7.0

= 1.1.3 =
* Improved: New plugin suggestion added.

= 1.1.2 =
* Fixed: Price increases (prices higher than regular price) now work correctly
* Fixed: Import current sale notice now appears for sales without dates (permanent sale prices)
* WooCommerce ignores sale_price > regular_price, so price increases now modify regular_price instead
* Original regular price is preserved and restored when scheduled price increase ends
* Added logging for regular price preservation and restoration events
* Improved log filter with new action types for price increase tracking

= 1.1.1 =
* Fixed: Log filter now works correctly matching translated action labels
* Fixed: Log filter "All actions" option now properly restores full log content
* Fixed: Log filter allows switching between different filters without losing data
* Added: Missing log actions to filter (Expired Sale Deleted, Original Sale Preserved, Original Sale Restored)
* Improved: Log filter moved above log viewer for better usability

= 1.1.0 =
* Improved compatibility with third-party product add-on plugins (Extra Product Options, Product Add-Ons, etc.)
* Refactored price calculation to use WooCommerce native price storage instead of real-time filters
* Scheduled sales are now applied immediately when saved (no need to wait for next cron run)
* Deleting an active scheduled sale now recalculates prices immediately
* Fixed: Native WooCommerce sales are now preserved when adding scheduled sales and restored when all scheduled sales are removed
* Fixed: Import current sale option now shows correctly for products with existing WooCommerce sales
* Fixed: Adding a scheduled sale no longer overwrites unimported WooCommerce sales
* Fixed: Deleting all scheduled sales now restores the original WooCommerce sale if one existed
* Fixed: "Sale not found" error when deleting multiple sales in sequence without page reload
* Fixed: Automatic deletion of expired sales now works correctly based on settings
* Improved: Better feedback messages when adding/deleting sales that affect native WooCommerce sales
* Improved: Visual indicator showing when an original WooCommerce sale has been preserved
* New dynamic promotional banner with AyudaWP plugin recommendations on settings page

= 1.0.0 =
* Initial release
* Schedule multiple sale prices per product
* Support for simple and variable products
* Configurable overlap priority (global and per product/variation)
* CSV import/export functionality
* Activity log with configurable retention
* Automatic deletion of expired sales
* Admin notifications for sale activation
* Notifications before sales expire
* Overlap warnings when creating schedules
* Import existing WooCommerce sales
* Clean orphaned schedules tool
* HPOS compatibility
* Hourly cron check for sale activation/deactivation
* Dashboard widget with quick sales overview
