1. Home
  2. What's New
  3. Full Page Cache Warmer for Magento 2
Full Page Cache Warmer for Magento 2

Full Page Cache Warmer for Magento 2 external-link

mirasvit/module-cache-warmer · mirasvit/module-report mirasvit/module-report-api
18 features 42 improvements 115 fixes New to it? See what it does
Which version are you on? See what changed since
Stores > Configuration > Mirasvit Extensions > Developer
1.11.4 2025 1.10.1 2024
Since 1.11.4: 18 new versions over 11 months

Overview

Nov 10, 2026
1.12.5
Improvements
  • ⚠️ Page Sources sync now requests only your store's own pages. URLs in a page source file that are not on the host (and port) of one of your store base URLs, or that do not use http/https, are skipped, so the store's HTTP auth password and the warmer's customer login cookie are never sent to another site or an internal service. If your sitemap uses a different host than the configured base URL (for example www. vs. no www., or a proxy domain), those URLs are no longer synced: the skipped host is written once to the Magento log, and bin/magento mirasvit:cache-warmer:sync-source prints every skipped URL, so you can see why
  • The Maximum job run time field (custom performance level) now accepts only whole numbers from 10 to 3600 seconds, and the field note says so. The default is now 100 seconds, matching the note (it was 90)
Fixes
  • Fixed a Maximum job run time of 0, 1, a negative number or a non-number (saved by an older version or set with config:set) silently stopping cache status checks, ending warm jobs after the first batch and showing a negative warming speed. Empty, zero, negative or non-numeric values now fall back to 100 seconds, and values below 10 are raised to 10
  • Fixed the storefront debug toolbar being served to visitors outside the debug IP allowlist. The allowlist was only checked in the browser, so anyone could request the toolbar directly and collect the signed Clean Cache link for any page, letting them purge warmed pages. The toolbar is now refused on the server for IPs that are not allowed
  • Fixed warm rule names in the storefront debug toolbar being shown as raw HTML. A rule name containing markup or script now displays as plain text, along with the page id line
  • Fixed the Cache Flushes grid running script from the URL of the request that triggered a flush. A crafted link that flushed the cache could run code in the session of every admin who later opened the grid; the request URL is now shown as plain text
  • Fixed the Pages › Curl preview and the logged curl command of a failed warm request showing the store's HTTP auth password and the warmer's signed customer cookie. Both are now masked in the admin and in the log; the CLI still prints the full command
  • Fixed the "Failed to write tag file" error on Magento 2.4.9 with the filesystem cache when the hole-punched CMS price block was added to a layout. The block no longer loads Magento's price layout, which it never used. Storefront pages were not affected
Nov 10, 2026
mirasvit/module-report 1.4.82
Fixes
  • Security fixes
  • For a role allowed only selected reports, a report's column picker now offers columns of related data as totals, averages and counts only
  • On the Advanced Dashboard, Customize and Share are hidden from a role without the Create and edit widgets permission (Advanced Dashboard 1.4.16)
Nov 4, 2026
1.12.4
Fixes
  • Fixed admin users with limited roles being able to load and export the Page Cache Efficiency report data without permission to view Cache Warmer reports. The report's grid data and CSV/XML export are now served only to roles allowed to open the report, and only from the report's own table. Requires Mirasvit Reports 1.4.79 or later, which composer update installs automatically
Nov 4, 2026
mirasvit/module-report 1.4.81
Improvements
  • The extension validator (bin/magento mirasvit:validate and the admin validation page) now tells you when MySQL cannot apply daylight saving to report times, and names the command your hosting provider runs to load the MySQL time zone tables
Fixes
  • Security fixes
  • Typing a character such as ( in the Add Column search box no longer breaks the report builder
Nov 4, 2026
mirasvit/module-report-api 1.0.100
Fixes
  • Security fixes
  • Report Builder no longer offers SUM, COUNT, AVG, MIN or MAX variants of a column that already aggregates (such as unique orders), which MySQL rejected when such a column was added to a report
Nov 2, 2026
1.12.3
Fixes
  • On Varnish and other external caches, logged-in customer pages are now warmed, so signed-in visitors no longer get a slow, uncached first page.
  • Fixed admin-store pages getting into the warmer. A visitor browsing with a store=admin cookie created page rows for the admin store (store id 0), which were then collected, queued and warmed, filling the cache with entries no customer sees. Such pages are no longer collected or warmed, a page that is already listed can no longer be switched over to the admin store, and the cleanup cron removes the ones already in the Pages table. Older pages saved without a store are kept and warmed as before
  • Fixed the Store condition of warm rules matching admin-store pages. A page for the admin store passed every rule's Store condition, whatever stores the rule was limited to; it is now checked against the selected stores like any other page. Older pages saved without a store still match any Store condition
Nov 2, 2026
mirasvit/module-report-api 1.0.99
Fixes
  • Fixed report hours and dates being one hour off for orders placed on the other side of a daylight-saving change: an order from summer showed an hour early or late in Sales by Hour after the clocks changed, and an order placed in the last hour before midnight could be counted on the wrong day. Reports now use the time zone offset of each order's own date. This needs the MySQL time zone tables; where they are not loaded, reports keep using the current offset as before and the module writes a note to var/log/mirasvit/reports.log explaining how to load them.
  • Fixed reports running an hour behind in half-hour time zones west of UTC, such as Newfoundland (UTC-03:30), on servers without the MySQL time zone tables.
Oct 27, 2026
mirasvit/module-report 1.4.80
Fixes
  • Fixed the Geo chart in Sales by Geo-data loading Google Maps with an API key built into the extension's JavaScript, which security scans report as an exposed key. The extension no longer ships a key. The chart works without one; a store can optionally set its own key in Stores → Configuration → Mirasvit Extensions → Advanced Reports → General settings (Mirasvit Reports 1.8.16 or later) to hide the Google Maps warning in the browser console.
Oct 26, 2026
mirasvit/module-report 1.4.79
Improvements
  • Compatible with Mirasvit Core 2.0. The module can now be installed alongside Core 2.0.x as well as Core 1.7.15 and later, so the modules built on Reports (Customer Segments, Product Feed, Follow Up Email) are no longer held back from upgrading Core.
  • ⚠️ Reports now declare which admin permission protects them through the new getAclResource() method on Mirasvit\Report\Model\AbstractReport. Reports that don't declare one, including custom reports, keep working as before until their module is updated to declare it.
Fixes
  • Fixed admin users with limited roles being able to load, export, and save the grid state of reports they had no permission to view. A report's grid data, CSV/XML export, and saved column/filter state are now served only to roles that are allowed to open that report's page, and the data comes only from that report's own tables. Requests that don't name a known report now require full admin access.
  • Fixed a report that fails to set itself up showing a generic server error instead of a readable message. The report grid now displays the error message in place of the data.
Oct 26, 2026
mirasvit/module-report-api 1.0.98
Improvements
  • Works with Mirasvit Core 2.0 — the module can now be installed alongside the new Core 2.0.x packages as well as Core 1.7.15 and later.
  • Reports with dropdown-type columns (such as status or payment method) render a little faster: the list of possible values is now prepared once per column instead of once for every row.
  • ⚠️ The unused isFilterOnly() method was removed from Mirasvit\ReportApi\Api\Config\ColumnInterface and its Column implementation. It could only throw an error, and no Mirasvit module calls it; custom code that implements or calls it must drop that method.
Fixes
  • Fixed report filters for columns whose list of values is grouped under headings. The heading itself showed up in the filter list as a choice you could tick, even though it matches nothing in the report. The headings are now left out and only the actual values under them are listed and selectable. Options without a usable value are also skipped.
Oct 22, 2026
1.12.2
Improvements
  • Collapsible storefront debug toolbar — on a phone the toolbar used to cover almost half the screen, and with the keyboard open none of the store was visible. Tap the toolbar header (or use the chevron button in its corner from the keyboard) to fold it down to a slim "Page HIT" / "Page MISS" bar, and tap again to expand it. Your choice is remembered from page to page; until you choose, the toolbar starts collapsed on screens narrower than 768px and expanded on larger ones. Works on Luma and Hyvä alike, and the Collapse/Expand labels are translated into every shipped language
Oct 8, 2026
1.12.1
Fixes
  • Fixed the admin Pages grid taking 10–30 seconds to load on LiteMage stores. The grid re-checked each row against the live cache, and on LiteMage every uncached row meant a full storefront page render. On LiteMage the grid now shows the stored status, which the cron keeps up to date. On the built-in cache and Varnish, where the check is cheap, the grid still shows the live status
  • Fixed pages that match an exclusion rule still being warmed if they were in the Pages table before the cleanup cron removed them. Excluded pages are now skipped on every warm path: cron, the admin Warm action and the CLI. Also fixed pages with no page type being left out of warming when Ignored page types is empty
  • Fixed logged-in customers sometimes being served the guest version of a cached page, with prices or the add-to-cart button missing. The statistics beacon response could delete the customer's vary cookie when it arrived after the page response. The fix now works on every Magento version, including releases older than 2.4.7 (such as 2.4.4), where the earlier fix in 1.12.1-beta2 had no effect
  • Fixed the average warming speed in the admin showing negative or wrong values when cron jobs were read out of start order
Sep 29, 2026
1.12.0
Features
  • Hyvä support now ships with the extension — the separate mirasvit/module-cache-warmer-hyva package is no longer needed. The storefront debug toolbar, the cache test page and the statistics beacon now work on Luma and Hyvä alike. Both themes share one set of templates, scripts and styles, so there is no Tailwind rebuild to run after upgrading
  • Server cache TTL setting — a new Server cache TTL (seconds) field under Performance settings tells the extension how long your page cache really keeps pages when that lifetime is set outside Magento (a hosting Varnish plugin, LiteMage, NitroPack or a CDN edge rule). Until now the dashboard showed Magento's "TTL for public content" (for example "24 hours" against a real 180-day Varnish lifetime), and the warmer re-queued every page older than that figure even though the external cache was still serving it. The new value drives both the dashboard and the re-warm schedule. Leave it empty to keep using Magento's TTL, which a standard Varnish setup follows. On external caches the dashboard now labels Magento's figure as a Magento setting the cache may override
Improvements
  • The Hyvä package is removed on upgrade — if mirasvit/module-cache-warmer-hyva is installed on your store, composer update takes it off by itself; no separate step is needed
  • The debug toolbar's Clean Cache link now works from the keyboard as well as with the mouse
  • Stores with overlapping warm rules no longer send duplicate requests. When several rules match a page but produce the same request (the stock setup, where All Pages overlaps every other rule), the page is requested once. The number of requests sent at the same time also stays within the Concurrent requests setting
  • Logging can no longer break warming or cache flushing. A request URL or page response with invalid characters used to be able to abort a warm job, or stop a Full Page Cache flush from running. Response snippets in the log are no longer cut in the middle of a character
  • A corrupted stored value in a job, trace, warm rule, page or cache statistics record now reads as empty instead of causing an error on the dashboard or in a grid
  • ⚠️ Upgrading runs data updates. Job filters, job traces and warm-rule headers and vary data that are still stored in the old PHP-serialized format are converted to JSON, in batches, so large stores do not run out of memory. The URL hash back-fill that earlier upgrades skipped on stores first installed at 1.0.14 or 1.0.15 is run again. Run bin/magento setup:upgrade as usual after updating
  • ⚠️ The storefront files web/js/toolbar.js, web/js/track.js, web/css/source/_module.less, web/css/source/module/_toolbar.less and web/css/source/module/_test.less were removed. The toolbar and test page now carry their own styles and scripts. If your theme overrides any of these files, move those customisations into theme overrides of the templates
Fixes
  • Fixed the debug toolbar's title bar being blank on Hyvä storefronts — its HIT / MISS colour was missing, so the title was printed white on white
  • Fixed the toolbar and statistics cookies on Hyvä storefronts being saved once per URL folder instead of once for the whole store
  • On Hyvä storefronts the debug toolbar's labels are now translatable, and the values it shows are escaped, as on Luma
  • Fixed warmed pages staying Pending on multi-store setups that pick the store with MAGE_RUN_CODE / MAGE_RUN_TYPE. The warmer saved and checked its cache entries under a different key than Magento uses for the page, so they never matched
  • Fixed pages that match several overlapping warm rules being warmed only for the highest-priority rule. Other versions of the page, such as desktop when a mobile rule had priority, never got cached. Each rule that sends different headers now gets its own request. A failure on a secondary rule's request is logged against that rule and counts toward the job's error limit, but it no longer removes a page that warms fine under its main rule
  • Fixed warming doing nothing on Magento 2.4.7 and newer when Run as web server user is enabled. The cron task failed with Class "Zend_Http_Client" not found, which also stopped the rest of the cron run. Also fixed the warm endpoint answering with a server error after a warm run that had succeeded
  • Fixed a single page with unreadable vary data making every warm job, from cron or the CLI, run forever. Such rows are now logged and skipped
  • Fixed sitemap sources losing URLs. A sitemap index that lists only one sitemap (which is what Magento writes for smaller catalogues) stopped the whole sync with an error. A sitemap with an unescaped & in a URL (such as ?a=1&b=2) lost every URL in the file. The log now also names the sitemap that could not be read
  • Fixed a fatal error when rendering a price inside a CMS block with hole punching enabled
  • Fixed hole punching failing with "Incorrect theme identification key" (a server error for the page) on stores that never had a theme set in their design configuration
  • Fixed a page condition that refers to an unknown attribute stopping the warm cron partway through, or serving a visitor a page whose only content was the attribute name. The condition now passes, and the attribute is logged
  • Fixed the Trace grid's third-party column staying empty. It now names the extension (Vendor\Module) that triggered a cache flush
  • Fixed an unreachable store being reported as HTTP status 0 with an empty response. It is now recorded as an error, with the reason the connection failed
  • Fixed the crawler dropping the port from links on stores served on a non-default port, which sent it off to a different address
  • Fixed the server-load checks. The fallback methods could not find their system commands, the load average was misread on Linux, and the CPU core count was misread on macOS/BSD
  • Fixed cookies with base64 values being cut short when collected from pages
  • Fixed the Job run threshold under the Custom intensity level not being read as a number
  • Fixed re-running the upgrade scripts creating a second "Default source", which split collected pages between two sources
  • Fixed errors in the Pages grid, the --status command, the cookie check and the warm-rule refresh on older page rows with no creation date
  • Fixed admin actions on a job, page or warm rule that no longer exists showing an error page instead of a message. Fixed Pages grid mass actions failing when nothing was selected
  • Fixed the Pages grid Delete action always reporting "0 page(s) was removed"
  • Fixed the default page source still accepting a new name and type in the admin, although the extension relies on both staying as they are
  • Fixed empty customer groups on a page source being treated as one group with an empty id during sync
  • Fixed "Undefined array key REMOTE_ADDR" warnings in the log when the debug toolbar check ran from cron or bin/magento
  • Fixed malformed block markers in page responses filling exception.log with CRITICAL entries (up to six per page)
  • Fixed a PHP 8.5 error in the debug toolbar when the page address or user agent was missing from its request
  • Fixed the "Last Syncronization At" typo in the Sources grid column label
Sep 29, 2026
mirasvit/module-report 1.4.78
Features
  • Shared report title links back to the admin — on a public shared report page, the report name is now a link to the same report in the admin, so a reader who has admin access can jump straight to the live report instead of searching for it. The link carries no secret key, so it works for any admin who opens it. When the report can't be identified, the title stays plain text.
Improvements
  • ⚠️ With Add Secret Key to URLs on, the new title link opens the report only with Mirasvit Reports 1.8.14 or later; with an older version it opens the Dashboard. Update the two together.
Fixes
  • Fixed a failing report showing the raw database error and the full generated SQL query to the admin user (for example, on a collation mismatch). The report now shows a short "Wrong configuration. Please change report building conditions." message and writes the full error to the Magento log. Developer mode still shows the raw error. Expected messages such as "Report not found" appear unchanged.
Sep 29, 2026
mirasvit/module-report-api 1.0.97
Features
  • Numeric report columns can now use the Max and Min aggregators. A numeric column pulled from a related table with several rows per report row (for example, order items under an order) can show its largest or smallest value instead of an arbitrary row. Requires mirasvit/module-report 1.4.77 or later, which Composer updates together with this release.
Improvements
  • Reports load faster. When the first page already holds every row of the report, the report query is no longer run a second time just to count the rows.
  • A custom report column defined with an expression but no source field now fails with a clear message naming the column, instead of a generic "field does not exist" error.
Fixes
  • Fixed graphs and grouped reports coming out in a jumbled order on MySQL. When a report or dashboard graph was grouped by a dimension and no sort order was chosen, rows came back in whatever order the database returned them, so the daily revenue graph in Grand Total Summary plotted its dates out of sequence. MariaDB happened to return them in order, so the problem only showed up on MySQL. Such reports are now sorted by their grouping columns in ascending order by default. A sort order you set yourself is still used exactly as before.
Sep 23, 2026
mirasvit/module-report 1.4.77
Features
  • Added Max and Min aggregators for numeric report columns. A numeric column pulled from a related table with several rows per report row (for example, order items under an order) can now show its largest or smallest value instead of an arbitrary row. The options appear once Report API is updated to the matching release.
Sep 18, 2026
mirasvit/module-report 1.4.76
Improvements
  • ⚠️ Date handling no longer depends on Mirasvit Core's own date model and uses standard PHP dates instead, as part of the move to Core 2.0. Report Builder, Dashboard, and Reports must be updated together with this release — Composer now refuses older versions of them. The Mirasvit\Core\Service\CspService helper used by this module's templates has moved to Mirasvit\Report\Service\CspService; update any custom template overrides that reference it.
Fixes
  • Fixed dashboards and reports failing to load with a date error. The date range presets were being handed to the date picker in a format it could not read, so every widget query went out with an invalid date and the whole page errored out. Presets, custom date picks, and widgets now load correctly.
  • Fixed saved custom date ranges falling back to an empty window. A hand-picked "from – to" range stored on a dashboard, a shared link, or a scheduled report was ignored everywhere the report is rendered on the server — shared links, scheduled emails, the REST API, and the mobile app all came back with no rows. The saved range is now applied as chosen.
  • Fixed Magento version checks picking the wrong behaviour on stores installed from source, where Magento does not report a real version number. This affected scheduled report emails with attachments, which used a legacy sending path meant for much older Magento releases.
Sep 18, 2026
mirasvit/module-report-api 1.0.96
Improvements
  • Reports grouped by hour, day, week, month or quarter now use standard PHP date handling to fill in periods that have no data, instead of a date helper from Mirasvit Core — this keeps such reports working with the new, split Core packages. An unexpected value in a date-range filter is now skipped instead of breaking the report.
Fixes
  • A column taken from a related table could show data from the wrong record — When a column had to reach its data through a chain of table relationships, the report always took the shortest chain, even when that chain ran through a shared parent record and therefore matched many rows. For example, an "Order #" column on an RMA report could show an arbitrary order of that customer instead of the order the RMA was created for. Chains that lead to exactly one matching record are now preferred over shorter chains that fan out, so a related column shows the record it actually belongs to. Any column that resolved before still resolves.
Sep 16, 2026
mirasvit/module-report 1.4.75
Fixes
  • Scheduled email reports created before an earlier update no longer arrive with their content blocks missing.
  • Fixed a report that would not open when its id was 0.
Sep 7, 2026
1.11.16
Features
  • Automatic detection of a cache flush made outside Magento — until now, emptying the Full Page Cache from outside PHP (a redis-cli FLUSHDB, a deploy that clears the Redis instance, a Varnish restart) left every page marked as cached forever: the grid kept reporting "Found in FPC" while the cache held nothing, and those pages were never warmed again. One store had 141,390 of 150,427 pages still reported as cached more than a day after its Redis was flushed. The extension now checks once a minute whether the cache still holds what it put there, and returns the emptied pages to the warming queue by itself. The check runs over HTTP, so it works on every cache backend — built-in Redis or file cache, Varnish, LiteMage and NitroPack alike. Because a wrong verdict would re-warm an entire store, it only acts on a confirmed flush: a cache that was never storing pages, an entry that simply expired, or a store that was unreachable all leave page statuses untouched, and pages warmed after the flush are left alone. Every decision it makes is written to the log, whether or not Debug information is enabled
  • Reset the warming status of pages on demand — a new Reset status action in the Pages grid, and a new bin/magento mirasvit:cache-warmer --reset-status command, mark pages as pending so the warmer picks them up again. Use it after clearing the cache yourself, as a deploy step, or to recover a store whose statuses have gone stale without waiting for the automatic check. It changes only what the extension believes about a page — unlike Clean, nothing is removed from the cache — and it is fast enough for very large catalogues (a 635-page store was reset in a single pass)
Improvements
  • Storefront pages render with fewer database queries when Debug information is enabled — the extension used to re-read the same page and warm-rule rows up to four times per request (15 queries against its own tables on a typical product page, now 6). Page output is unchanged
  • ⚠️ On stores that leave Magento's Full Page Cache lifetime at 0 (common when LiteMage or LiteSpeed manages expiry itself), the cache-status check does something again. Version 1.11.15 stopped it entirely to end a crawl that re-requested every cached page on every run, which left those stores with no reconciliation at all: a page that lost its cache entry early kept its "Found in FPC" status indefinitely. It now checks one bounded batch per warm rule per run, least-recently-checked pages first, so consecutive runs cover the whole set and the runaway cannot come back. bin/magento mirasvit:cache-warmer --status reconciles on those stores again too, which means it now walks every page instead of returning immediately: worth knowing if you have that command in a deploy step, because on an external cache every page is one request to your site
  • ⚠️ Upgrading runs a database update: an index is added to the Cache Warmer pages table (which speeds up cache-status checks on large stores), and any rows the page collector had recorded for the extension's own internal heartbeat URL are removed. Run bin/magento setup:upgrade as usual after updating
  • ⚠️ A new hidden configuration path, cache_warmer/extended/session_cookie_ttl, controls how long a warmer session cookie stays valid. It defaults to 3600 seconds and cannot be set below 60; there is no need to change it unless you want a tighter bound
  • ⚠️ The Cache Warmer config model no longer takes a request object in its constructor. If you have a custom class that extends it or builds it by hand, drop that argument — everything wired through Magento's dependency injection updates itself
  • ⚠️ Three unused classes were deleted: Model\Config\Source\WarmStrategy, Model\Config\Source\WarmPageTypeOrder and Model\Page\Generator. Nothing in the extension or its companion modules referenced them, and no published interface changed
Fixes
  • Fixed the cache status check re-verifying the same pages over and over on any store with a Full Page Cache lifetime configured — the check kept re-requesting pages that were still well inside their lifetime until it ran out of time, on every warming job, which at the default schedule means every two minutes. On a three-page test store this produced 148,741 verifications in a single run. On every cache backend except Magento's built-in one each verification is an outbound HTTP request to your own site, so the visible symptom was a hosting bill rather than a broken storefront: one store reported its AWS traffic tripling (~2.08M requests / 871 GB over two months) and dropping 72% the day the extension was switched off. Pages are now verified at most once per status run, dead URLs that answer 301/302/404 are dropped instead of being re-marked as cached, and a page that answers with a server error is no longer recorded as freshly cached
  • Fixed pages found by crawling never being re-checked, so they kept a stale "Found in FPC" status long after their cache entry was gone — pages that had not yet been matched to a warm rule were skipped by the status check entirely (a regression introduced in 1.11.14)
  • Fixed pages with no stored status never being warmed at all — on stores upgraded from an older version, such pages were invisible to the warmer permanently
  • Fixed a security issue that allowed anyone who had seen a warmer cookie value — from a browser, an access log, or the admin Show curl request view — to forge one and be served pages as a logged-in customer of any customer group. Warmer session cookies are now signed with a per-installation secret that is never sent to the browser, and any cookie that fails the check is rejected. Cookies also carry a signed expiry now, so a captured one can no longer be replayed indefinitely; rejections are recorded in the log so a store that has quietly fallen back to guest rendering can be spotted
  • Fixed a security issue that let an anonymous visitor empty your Full Page Cache — the "Clean Cache" storefront URL accepted any page id, so walking the ids purged the entire warmed set. The link is now signed by the extension and unsigned requests are refused
  • Fixed a warm rule's HTTP header or cookie line being silently discarded when its value was 0 (for example Header:0) — the line was dropped without any message
  • Fixed an error when running bin/magento mirasvit:cache-warmer --status on a store with pages that had never been warmed yet — pages imported from a page source have no cache id until their first warming pass, and asking the cache about them raised a fatal error on Magento 2.4.9 and a deprecation notice on earlier versions
  • Fixed the storefront debug toolbar being visible to anyone who added ?debug=warmer to a page URL — the toolbar exposed cache status and the list of non-cacheable blocks to any anonymous visitor, even when Debug information was switched off in the module settings (the default) and no matter which IP addresses were allowed. The toolbar now shows up only when you enable it in the admin
  • Fixed cookie values containing an = sign being cut short, and pages with an empty cookie value producing a PHP warning in the log
Aug 26, 2026
mirasvit/module-report 1.4.74
Improvements
  • Report builder table and column labels now display in your store's admin language.
Fixes
  • Single-value dashboard figures are no longer cut off at the top.
Aug 25, 2026
mirasvit/module-report-api 1.0.95
Improvements
  • A Store filter that still points at a website you have since deleted no longer breaks the report — it simply matches no rows.
Fixes
  • A "Website: …" choice in the Store filter lost its checkmark after reload — On the dashboard and in reports, picking a whole website in the Store filter worked for the current view, but once the page was reloaded the entry showed up unchecked and could be added a second time. The website choice now stays selected and keeps filtering by every store view it covers.
  • Restored the full release history in this file — the 1.0.94 release accidentally wiped every earlier entry.
Aug 12, 2026
1.11.15
Fixes
  • Compatibility with PHP 8.5 — Reflection access in the debug plugin is now guarded by PHP version, so PHP 8.5 no longer reports a deprecation.
  • Fixed bin/magento cache:flush and admin "Flush Cache Storage" being silently blocked by "Forbid cache flushing" on Magento 2.4.9 — Magento 2.4.9 changed TagScope::clean() to rewrite a full flush into a matching-tag mode before it reaches the Cache Warmer decorator, causing the allow-check to never fire. The check now recognises both the pre-2.4.9 CLEANING_MODE_ALL shape and the 2.4.9 tag-scoped shape as a legitimate full flush, restoring the documented behaviour where CLI and admin full flushes bypass the restriction
  • Fixed the cache status check running endlessly and re-crawling every cached page until the cron time limit on stores where Magento's Full Page Cache lifetime (TTL) is left at 0 — common when LiteMage/LiteSpeed manages the cache TTL itself. With no TTL there is nothing to expire, so both the cron status update and the mirasvit:cache-warmer --status CLI command now skip the crawl instead of re-requesting every cached page
  • Fixed LiteMage cache-status verification incorrectly reporting warmed pages as pending, and creating a new LiteMage cache object on every check — LiteMage treated the warmer's status cookie as a distinct cache variant, so each probe was a miss. For LiteMage, the status is now verified via the X-LiteSpeed-Cache response header instead of the status cookie, so probes hit the existing cache
  • Fixed a race condition that allowed two warming runs to start concurrently — the run lock now uses an atomic connection-scoped lock instead of a read-then-write on core_config_data
Aug 4, 2026
mirasvit/module-report 1.4.73
Fixes
  • Fixed the Previous Quarter date range ending a day out.
  • Large grouped reports now export to CSV and XML faster.
Aug 4, 2026
mirasvit/module-report-api 1.0.94
Fixes
  • Large grouped reports now export to CSV and XML faster.
Jun 26, 2026
mirasvit/module-report 1.4.72
Fixes
  • Fixed scheduled report emails with a file attachment crashing on Magento 2.4.8 and newer when a third-party SMTP or email extension was active. The email cron failed and the report never went out — attachments now send correctly alongside the report's text and HTML content.
Jun 23, 2026
mirasvit/module-report-api 1.0.93
Fixes
  • Incorrect or missing grand totals in reports grouped by two or more dimensions — When a report was grouped by more than one dimension, the totals row could either hide a valid total (for example, a revenue column grouped by Customer and Order Status showed no grand total) or display an inflated, double-counted total (for example, a base-table column shown under a dimension such as SKU or Category that produces multiple rows per order). The totals row now shows the correct grand total whenever it can be trusted, and is left blank only for dimensions that genuinely multiply the underlying rows, so an over-counted figure is never displayed.
Jun 19, 2026
mirasvit/module-report 1.4.71
Fixes
  • Fixed the percentage change (e.g. "-6.9%") being cut off on small or narrow single-value dashboard widgets. The sparkline was sitting too low and clipping the value below it — the spacing is now corrected so the figure shows in full.
Jun 18, 2026
mirasvit/module-report 1.4.70
Features
  • Duplicate dashboard widgets — copy any dashboard widget with one click from its toolbar. The copy keeps all of the original's settings, gets a "(copy)" title, and drops in just below the source so you can tweak it without rebuilding from scratch.
Improvements
  • Goal tracking now supports "lower is better" metrics. For widgets measuring things you want to keep down — refunds, discounts, costs — you can set a baseline (the worst case or previous period) and the gauge fills as the value drops toward zero, instead of treating a higher number as better progress.
Jun 17, 2026
mirasvit/module-report 1.4.69
Fixes
  • Fixed emailed Report Builder reports returning no data when the report used a date dimension together with a date primary filter. The scheduled email applied its date range to the wrong column, so the report came through empty — it now filters on the report's own date column and shows the expected results.
Jun 15, 2026
mirasvit/module-report 1.4.68
Fixes
  • Fixed the "This Quarter" and "Previous Quarter" date ranges covering the wrong period. The last month of each quarter (March, June, September, December) was pushed into the following quarter — and in December it spilled into the next year — so reports using these presets showed incorrect data. Each quarter now spans the correct three months.
  • Fixed fiscal-year report presets ("Fiscal Year to Date" and "Previous Fiscal Year") failing when no fiscal year start date is configured. They now fall back to January 1 instead of erroring.
Jun 9, 2026
mirasvit/module-report 1.4.67
Features
  • Goal tracking on single-value widgets — set a target for any single-value dashboard widget and watch progress fill in automatically. Pick a fixed target value or have it track your selected comparison period, and choose how it's shown: a ring gauge, a half gauge, or a progress bar. The arc is color-coded by how close you are to the goal, with a clear "% of goal" label.
  • Chart type selector — dashboard chart widgets can now be displayed as a line, area, bar, or stacked bar chart. Previously every chart was a line chart.
  • Widget icons — add an icon next to a widget's title from a curated set (orders, revenue, customers, products, shipping, refunds, and more) to make dashboards easier to scan at a glance.
Jun 4, 2026
1.11.14
Fixes
  • Fixed incorrect page type detection for pages using Mirasvit SEO Filter with static filters (On Sale, In Stock, New Products, Rating) or category subcategory filters — these pages are now correctly identified as filtered navigation pages and warmed accordingly
  • Fixed a PHP deprecation warning logged when the Cache Warmer debug toolbar received a request without the nonCacheableBlocks parameter
May 28, 2026
mirasvit/module-report-api 1.0.92
Fixes
  • Reports and dashboard widgets failing with a server error on PHP 8.4 and newer — When a report or dashboard widget grouped rows by a column that was empty for some of those rows, the request returned an HTTP 500 error on PHP 8.4+ (for example, a dashboard orders widget grouped by order number when some orders had no number yet). Such rows are now grouped together under an empty value and the report loads correctly.
  • Slow Report Builder admin first-open on a cold cache (heavy schema-serialization writes) — When the Report Builder admin was opened with a cold cache, TableService was serializing the accumulated DB-schema map under one monolithic cache id on every table describe, producing O(K²) cache write traffic that grew noticeably on installs with many tables. The cache layout has been changed to shard one entry per (method, table) key, so each describe writes only its own slice (O(K)). Cache tag/pool is unchanged — cache:clean and cache:flush continue to drop both old and new layouts together.
May 27, 2026
1.11.13
Fixes
  • Warning messages were written to the log on every warmed page when any hole-punch or warming configuration field was left empty — empty values are now handled correctly before deserialization
May 25, 2026
1.11.12
Fixes
  • Fixed PHP Object Injection vulnerability in session cookie deserialization
May 18, 2026
1.11.11
Fixes
  • Fixed fatal error during cache warming on stores running PHP 8.5 — curl_close() was removed in PHP 8.5 and is now only called on PHP 7.x where it is required
May 4, 2026
1.11.10
Improvements
  • Localized the extension into 15 core locales (Arabic, Czech, German, Spanish, French, Italian, Japanese, Dutch, Polish, Brazilian Portuguese, European Portuguese, Swedish, Turkish, Ukrainian, Simplified Chinese)
Apr 23, 2026
mirasvit/module-report-api 1.0.91
Fixes
  • Restored PHP 7.3 compatibility
Apr 22, 2026
mirasvit/module-report 1.4.66
Fixes
  • Fixed custom reports being rejected as invalid identifiers when added to email notifications — the block identifier and time range validation no longer fails on valid custom report selections
Apr 21, 2026
mirasvit/module-report 1.4.65
Improvements
  • Added i18n support for 15 core locales (ar_SA, cs_CZ, de_DE, es_ES, fr_FR, it_IT, ja_JP, nl_NL, pl_PL, pt_BR, pt_PT, sv_SE, tr_TR, uk_UA, zh_Hans_CN)
Apr 20, 2026
mirasvit/module-report-api 1.0.90
Fixes
  • Fixed additional filters on aggregated date columns (such as minimum or maximum date) behaving incorrectly — "days ago" numeric filters are now applied only to raw date columns, not to aggregated values
  • Fixed totals row returning an empty result when a filtered report matches no rows — numeric columns now show 0 and other columns show an empty value
  • Fixed error in comparison mode when the report has no dimension columns
Apr 17, 2026
mirasvit/module-report 1.4.64
Fixes
  • Fixed the export console command failing with a date parsing error when run with a custom date interval
Apr 10, 2026
1.11.9
Fixes
  • Fixed warming cron crashing when a job's error status could not be saved due to a temporary database issue — the cron now logs the save failure and continues processing remaining jobs
Apr 9, 2026
1.11.8
Improvements
  • Stale warming jobs are now marked with a "timeout" status instead of being silently closed, making it easier to spot jobs that didn't finish in time
  • Job errors are now logged with details for easier troubleshooting
Fixes
  • Fixed warming locks never being released if a job crashed, which blocked all future warming runs until the store cache was manually cleared — locks now automatically expire after a safe timeout
  • Fixed a single failing warming job stopping all remaining jobs in the queue — each job is now handled independently, and warming stops only after 3 consecutive failures
  • Fixed an inverted lock condition that could allow concurrent warming runs or prevent legitimate runs from starting
Mar 26, 2026
1.11.7
Improvements
  • Improved detection of TTL-expired pages during cache status updates — pages re-cached by organic traffic now have their cached_at timestamp refreshed, preventing repeated unnecessary checks
Mar 26, 2026
mirasvit/module-report 1.4.63
Improvements
  • Reduced the possibility of date filter errors for REST API calls
Mar 26, 2026
mirasvit/module-report-api 1.0.89
Fixes
  • Fixed the issue with applying filters that have multiple values (REST API)
Mar 24, 2026
1.11.6
Features
  • Retry failed warming requests — new configuration option to control whether failed warming requests are retried (previously always retried, now opt-in)
Improvements
  • TTL-aware cache status updates — pages whose cache has expired based on TTL are now prioritized during status checks
  • ⚠️ New database index on (main_rule_id, status, cached_at) for improved query performance
  • Compatibility with Magento 2.4.9
Mar 20, 2026
mirasvit/module-report-api 1.0.88
Fixes
  • Fixed dashboard single-value widgets with comparison disappearing due to incorrect filter group assignment
Mar 18, 2026
mirasvit/module-report-api 1.0.87
Fixes
  • Fixed REST API requests producing incorrect results when filters had invalid or unexpected group values
Mar 11, 2026
mirasvit/module-report 1.4.62
Improvements
  • Date filter on mobile now has full functionality — the entire date picker UI is responsive, with calendar, date inputs, and controls stacking vertically on small screens
Fixes
  • Fixed date filter not responding to taps on iPhones due to focus handling issue in Safari
Mar 4, 2026
mirasvit/module-report 1.4.61
Improvements
  • Email notification blocks are now validated on save — invalid report identifiers or time ranges return clear error messages instead of silently saving broken configurations
Mar 3, 2026
mirasvit/module-report-api 1.0.86
Fixes
  • Fixed unnecessary table joins being added when a non-default sort order is applied to a report
Feb 27, 2026
mirasvit/module-report 1.4.60
Fixes
  • Fixed REST API partial updates for email notifications — boolean fields (is_active, is_attach_enabled) are no longer reset when not included in the request payload
Feb 26, 2026
mirasvit/module-report 1.4.59
Features
  • REST API for email notifications — full CRUD endpoints to list, create, update, delete, and trigger email notifications programmatically (/V1/report/email*)
  • Download dropdown on shared reports — when report sharing is enabled, a Download button offers CSV, XML, JSON, and HTML export formats
Feb 26, 2026
mirasvit/module-report-api 1.0.85
Features
  • REST API support — reports can now be queried via Magento REST API with typed filter and sort order parameters
  • ⚠️ RequestFilterInterface and RequestSortOrderInterface replaced by new FilterInterface and SortOrderInterface under Api\Processor
  • ⚠️ RequestInterface setters removed; ResponseInterface::toArray() and ResponseItemInterface::toArray() removed
  • ⚠️ Requires mirasvit/module-report >= 1.4.59
Feb 11, 2026
1.11.5
Fixes
  • Fixed "Trying to access array offset on null" error in cache fill rate calculation when no pages exist
Jan 8, 2026
mirasvit/module-report 1.4.58
Improvements
  • Configurable sort order for dashboard boards — set a numeric sort order on each board to control display position
Dec 22, 2025
mirasvit/module-report-api 1.0.84
Fixes
  • Fixed incorrect filtering of reports using CTE/temporary tables when both aggregated and non-aggregated filter fields are present
Dec 22, 2025
mirasvit/module-report-api 1.0.83
Fixes
  • Fixed incorrect aggregation results (sums, counts, averages) in reports that use CTE or temporary tables
Dec 17, 2025
1.11.4
Fixes
  • Fixed pages being collected and processed incorrectly when a custom base link URL (with custom store route) is configured in multistore setups
Loading...