Skip to main content

Changelog

1.15.5 (2026-08-27)

Improvements

  • A filter that fails on one product's value no longer stops the whole export. Whatever the reason — a value of an unexpected type, a division that cannot be done — that single value is now exported unfiltered, the product still ships, and the rest of the feed is unaffected. Each dropped filter is written to var/log/mirasvit/feed.log with the filter's name and the reason, so a filter that is failing on every row can be found instead of quietly producing a wrong feed.
  • A feed configured with an export step that is not a real step now fails immediately with a message naming it, instead of running part-way through generation and stopping with an unrelated error.

Fixed

  • A does not equal filter no longer drops products whose attribute has never been set. A rule such as Meta Title is not "EXCLUDE-ME" kept only products that had some other value in that field and silently left out every product where the field was empty, even though the rule says nothing about requiring a value. Such products are now exported, alongside the ones with a different value. (pm1159())
  • Feeds on a store with several store views no longer export each other's products. The intermediate list of products matching a Filter is cached while a feed generates, and that cache ignored which store view it had been built for: generating the same filter for a second store view wiped and replaced the first one's list, so a feed could pick up products that belong to another store view, and two feeds generating at the same time could corrupt each other's results. Each store view now keeps its own cached list, and clearing one leaves the others intact. (pm934())
  • A template calculation that cannot be carried out on some products no longer kills the entire feed. With price | divided_by: pack_qty in a column, a single product whose pack_qty is empty or not a number aborted generation outright and produced no file at all. Dividing by an empty or zero value now leaves the value as it was, and a modulo by such a value returns 0, so the export finishes.
  • The secure, unsecure and media-URL filters no longer export the literal word Array when applied to a multi-value attribute — and no longer behave differently depending on whether the store runs in developer or production mode. Every value in the attribute now gets the URL rewrite and they are exported as a comma-separated list.

1.15.4 (2026-08-26)

Features

  • The filter preview opens straight away, whatever the size of your catalogPreview Products on a Filter used to load every matching product into memory and walk the whole catalog before it drew a single row, so on a 20,000-product store the first page took 12–19 seconds, and on catalogs of 90,000 and up it built a query several megabytes long and could run out of memory outright. The preview now works through the catalog in chunks and stops the moment the page you asked for is full: the same three rules measured 19.4s, 12.8s and 15.8s now come back in 0.3s, 0.03s and 0.03s. Memory no longer grows with the size of the catalog, only with the size of the page you are looking at.
  • Paging through a preview stays fast to the last page — turning to a deep page used to mean walking past every product before it, so on a rule matching 18,138 products page 1 took 0.4s and page 900 took 15.9s — and because the grid remembers the page you were on, one stray click deep into the pager left you waiting on every later visit too. Each page now remembers where the next one starts, so page 900 costs the same as page 2. A first jump far into the pager is still slow once, and every page up to it is instant afterwards.
  • The exact number of matching products, counted in the background — the count shown next to the grid is now an upper bound to begin with, so the rows appear immediately, and the precise figure is fetched behind the scenes and swapped in when it is ready. While it is being counted the number reads around 20000 (counting…) with a spinner beside it, so a figure that is about to change never looks like a settled one. The exact count is then reused for the rest of your visit — paging around the same rule shows it with no further waiting — and is recalculated only when you change a column filter, the keyword search or the page size, reload the page, or press Preview Products again, which is an explicit ask for a fresh answer. Both new labels are translated into all shipped locales.

Improvements

  • The admin no longer freezes while a preview count is running. PHP holds an exclusive lock on your session for the duration of a request, so a count that takes minutes — a rule built from computed conditions such as Image 2–5, Is Salable or Final Price still does — used to queue every other admin request behind it, including turning the very page you were counting. Measured on the QA host, turning to page 2 during a count went from 201 seconds to 1.2 seconds. The count itself is no faster; it simply happens in the background instead of stopping you from working.

Fixed

  • The filter preview no longer dies on a rule that uses an Image 2–5 or an MSI (Multi-Source Inventory) stock condition. Such a rule produced a server error and left the preview grid stuck on "loading" forever, with no message to explain it. Rules built from these conditions now preview normally.
  • A filter using an Any aggregator together with a condition that cannot be expressed in SQL — quantity, salable status, final price, an image — no longer previews an empty or too-short list. The preview quietly narrowed the candidate set on the SQL condition alone and hid products the real export includes; it now checks every product the same way the export does. (pm263)
  • The preview no longer promises products your feed will not actually contain. For a handful of conditions — is_in_stock, is_in_stock_inventory, image, small_image, thumbnail — the shortcut the preview took asked a slightly different question than the export does, so a stale stock index was enough to make the two disagree (2046 previewed against 2045 exported). Those conditions are now always checked the way the export checks them, and the exported file itself is unchanged.
  • A filter that uses a custom attribute whose code begins with stock (for example stock_level) alongside a stock condition no longer fails with an "Unknown column" database error.
  • Jumping to the last page of a preview no longer reported a nonsense total — "18 records found" for a rule matching 18,138 — and no longer bounced the pager back to page one.
  • Returning to a preview page you had already looked at no longer put the rough upper bound back on screen next to a pager that still showed the exact number of pages.
  • A field value containing the feed's own column delimiter no longer shifts every following column on that row. In a format that uses no quoting — a TSV feed, most commonly — a tab inside a product's HTML description was read as an extra column separator; such characters are now replaced with a space. Quoted formats are unaffected. (pm416())
  • An XML feed whose template contains an empty element — written as g:brand/ or g:brand/g:brand — no longer fails to generate. Pressing Generate on such a feed stopped with the generic "a technical problem occurred" message and produced no file at all, on every feed that carried one. The empty element now reaches quality-control validation as an empty value, so a required-field rule reports it as missing, exactly as intended, and the export completes.
  • The feed edit page no longer writes PHP deprecation notices to the error log. On PHP 8 the Google Merchant Center notice shown on that page was rendered without an internal name, which other extensions that watch block rendering — Adobe Commerce price permissions among them — could not handle; every visit to the page added noise to the log. All feed admin blocks of this kind are now named, so the notices are gone.

1.15.3 (2026-08-25)

Fixed

  • Product feed exports no longer fail with a database timeout when products are being edited at the same time.
  • Large product feeds now generate far faster and no longer stall part-way through.
  • Feeds that filter products by a store-view-specific attribute value now generate correctly and quickly.
  • A feed export that fails to generate now ends with an error instead of appearing to finish successfully.

1.15.2 (2026-08-12)

Features

  • JSONL — a new feed format for data pipelines — pick JSONL as the feed type and every product is exported as one JSON object per line, instead of a CSV row or an XML node. You build it in the same column editor you already use for CSV: each column's header becomes the key, and its value comes from an attribute or a pattern exactly as before. Values are escaped as valid JSON, so a quote or a line break in a description can no longer break the line. A column set to All Attributes emits every attribute the product has, keyed by the attribute's store label. This is the format most warehouses and ingestion tools (BigQuery, Snowflake, marketplace bulk APIs) expect, and unlike a single large JSON file it can be read line by line, so a partner never has to load the whole catalog into memory to process it.
  • Compress the generated file (gzip) — a Compress output (gzip) switch on the feed's General tab, available for CSV, TXT and JSONL feeds. The finished file is packed and published as, for example, products.csv.gz, which for a typical catalog is several times smaller — faster to upload, cheaper to transfer, and accepted directly by most channels and data pipelines. Compression is streamed, so turning it on does not increase the memory a large export needs. Quality-control validation still checks the real published file: the archive is unpacked before the rules run, including on stores that keep media on remote storage such as AWS S3. An export that produced no products yields a valid empty archive rather than an unreadable zero-byte file. Note: enabling this changes the feed's filename and therefore its URL — update anything that fetches the previous address.

Improvements

  • ⚠️ The feeds table gains an is_compressed column, added automatically by setup:upgrade.

1.15.1 (2026-08-11)

Features

  • Real numbers, booleans and nulls in the JSON output of an XML feed — until now every value in the generated .json arrived as a string, a field with one nested element became a single object where two made a list, and an empty value simply disappeared. A partner asking for a price as a number or a stock flag as true/false could not be served by any template. You now say what a value is where you write it, the same way an XML schema does: mark the element xsi:type="xs:decimal", xs:integer or xs:boolean and it is converted, mark it xsi:nil="true" and it comes out as null, mark it xsi:type="array" and it is always a list even when the product has only one of them. Nothing is guessed from the value itself, so an SKU of 0012333 keeps its leading zeros and a text attribute reading "true" stays text. A value that does not match the type you declared is left as a string rather than turned into 0 or false, so a typo in a template cannot silently corrupt a feed. Feeds that declare nothing produce exactly the same JSON as before.
  • JSON tab in the feed preview — with Generate JSON enabled, the preview now shows the JSON alongside the XML, so the output can be checked while the template is being written instead of after a full export. If the JSON cannot be produced, the preview shows why, on the same screen where the template is fixed.

Improvements

  • A template whose output is a series of top-level elements rather than one enclosing element is now converted to JSON as well — previously the .json for such a feed could not be produced at all.
  • Templates that use prefixed tags such as g:id without declaring the prefix on the root — which is what shopping channels expect — no longer produce parser warnings during export.

Fixed

  • When the generated XML was broken (a truncated file, unbalanced tags, an empty result), the export finished quietly and left the previous, now stale .json published next to the new .xml. The export now stops with a message naming the tag and the line in your template output that caused it.
  • A value declared as a decimal ships in its shortest form — a price formatted as 9999.00 becomes 9999 — while a genuine fraction such as 34.50 keeps it, and a number too large for the platform's integer range stays text instead of being replaced by a wrong one.
  • ⚠️ Upgrading from an older version could stop with a fatal error when a stored feed validation schema was not parseable on its own; such records are now skipped and the upgrade completes.

1.15.0 (2026-08-10)

Features

  • AI-assisted feed optimization — Your catalog was written for your product pages; shopping channels want something else. That gap is why Merchant Center disapproves items, why variants collapse into one listing, and why products miss the searches they should win. Point an AI profile at a field and the extension fills what is missing:

    • Titles that match how people search — using the full 150 characters Google indexes, not the 70 most stores write to, with colour and size where Google needs them to tell variants apart.
    • Descriptions that work on a shopping surface — thin one-liners rewritten into plain, attribute-rich text, without the promotional language that gets items rejected.
    • The colour, size and material Merchant Center keeps asking for — the fields the built-in Validator flags most often, derived from what your catalog already knows.
    • Google product categories inferred from your own category tree, for the products you never mapped by hand.

    Four ready-made profiles ship with the extension, all editable, and you can write your own for any field. Optimization runs in the background and its results are stored, so your exports stay exactly as fast as they are today. Preview a profile against real products to see the cost before you commit; a profile fills only what is empty unless you say otherwise, and an optional approval gate holds every value until you accept it. Your product data is never overwritten — switch a profile off and the feed emits the original value again.

    Assign a profile to a feed and every reference to that attribute picks up the optimized value with no change to the template, or reference ai:code on a single column. Runs on the AI provider you already configured for Mirasvit Core.

    Google asks that AI-generated text be submitted in structured_title rather than title. The extension has no structured_title field yet, so for a Google feed either map the output there in your template or treat it as a draft you review.

  • Two new console commands, for stores that automate their feed pipeline:

    • mirasvit:feed:ai:optimize — cover a large catalog on demand instead of waiting for the background schedule. Useful before a campaign launch.
    • mirasvit:feed:validate — check the file a feed actually produced: that it is well-formed, and that every column the template declares is really there. Supports --feed=id and --format=json, and exits non-zero on a failure, so it drops straight into a deployment or monitoring script.

Improvements

  • AWS S3 / remote media storage support — Feeds now generate, validate, and display correctly on stores that keep media on a remote backend such as AWS S3. Previously the feed logo was reported as missing, feed generation could fail outright, the public feed URL pointed at a private bucket path that browsers couldn't open, and quality-control validation of the generated file failed. Now logos are detected on the remote, the feed is built locally and only the finished file is stored remotely, the feed URL is a proper browsable media URL, and validation reads the file through the storage backend so it works even on private buckets.
  • The Advanced Product Feeds admin menu no longer lists every feed you have created. On a store with a few dozen feeds the menu grew long enough to push the section links off the screen; the Feeds grid reaches any one of them in a click, with the search and filters the menu cannot offer.
  • Button labels across the extension's admin screens now read in Title Case, and every button that creates something is phrased the same way — Add New Feed, Add New Template, Add New Filter, Add New Profile, Add New Attribute, Add New Category Mapping, Add New Variable. Previously these six differed from one another, and labels such as Clear values or Test connection were cased differently again. Field and column labels are unchanged.

Fixed

  • Nine categories in the shipped Google product taxonomy had corrupted characters (for example Piñatas instead of Piñatas, Sauté Pans instead of Sauté Pans). They appeared mis-spelled in the Category Mapping autocomplete and could not be selected reliably; the taxonomy file now uses the correct encoding.
  • The Feed Templates grid now honours the admin role restriction that guards the page it lives on. The grid's own data and export routes were not covered by that check, so an admin role without access to the feed section could still read or export the list by calling them directly.
  • The Delete button was missing from the Filters form, so a filter could only be deleted from the grid. Its Save button also offered no Save & Close, unlike every other form in the extension — the form now carries the same split Save, both while creating a filter and while editing one.

1.14.10-beta2 (2026-07-31)

Features

  • show the group count on a preview
  • delete a stored value from the results grid
  • generate a batch on demand from the AI results grid
  • working preview, coverage in the grid, and no one-option questions
  • shipped AI profiles follow Google's title guidance and see the whole product
  • results grid, approve gate, real preview, spend surface, Validator hand-off (pm844())
  • category-mapping executor with cross-run phrase cache (pm841())
  • batched text-rewrite and attribute-enrichment executors (pm840())
  • AI optimization run model — orchestrator, drip cron, CLI catch-up (pm839())
  • AI export seam — generation reads stored optimized values (pm842())
  • merge PROP-0218 branch (pm838() engine) into S7
  • merge S7 AI profile library admin (pm843())
  • AI profile library admin (pm843() / PROP-0218 S7)
  • merge AI engine foundation slice (pm838()) into PROP-0218 branch
  • AI engine foundation services for feed optimization (pm838())
  • AI feed optimization data model (S1)

Fixed

  • give the AI profile and filter forms the Save split button they declared
  • satisfy phpstan, and assert what the two AI acceptance tests can actually observe
  • say that assigning a profile to a feed rewrites the feed's own attributes
  • say which ai: tokens a feed can use, and stop hiding half of them
  • drive Save through the form adapter, which is what actually binds
  • a plain Save click works again, and a state is just its badge
  • preview lists every attribute asked about, answered or not
  • preview's Original column covers every attribute the profile fills
  • declare skipped in the run-totals return shape
  • set the prompt placeholder through config, not a settings element
  • recognise Enter by key as well as keyCode
  • give a typed attribute name the option fields the list renders
  • one label per attribute field, and pick a text rewrite's target too
  • say when a profile is generating for a feed that never reads it
  • eight defects the QA pass found in AI optimization
  • bring the unit suite back to green
  • stop offering category mapping the pacing it ignores
  • preview costs what the launch it previews would cost
  • preview an enrichment profile before saving it
  • an ETA that counts the work a launch does for free
  • make the coverage bar's two numbers add up
  • the Tokens column no longer multiplies enrichment spend by its outputs
  • the Original column shows the attribute the row is about
  • stop recording "the product does not say" as a failure
  • an enrichment column no longer emits a different attribute
  • do not treat the filters placeholder as a filter
  • stop the validation report's filters leaking between feeds
  • send a missing profile id back to the library, not to Edit
  • let the results-grid row menu out of the grid wrapper
  • sort the numbered attribute groups naturally
  • refuse a batch size the executor would only clamp
  • make the AI preview endpoint POST-only
  • run the assignment checks on mass enable
  • offer Fix with AI on an XML feed's fields
  • a wrong field count took feed generation down with a 500
  • record a fill-mode skip, or the profile never converges
  • stop the results-grid filters leaking between profiles
  • save the inline override the results grid actually posts
  • point the declared State filter at the filters container
  • give the State filter its options
  • show a value held for approval in the results grid
  • keep a results-grid mass action on the grid, and let select-all mean it
  • gate the AI and template grids at the dataSource, not just the page
  • cast the serializer result so the json filter keeps its string return
  • connection() must not native-type its return, or the resource tests TypeError
  • the AI drip was dead on a stock MySQL, and a retarget generated nothing
  • the split-button option ids collided with the UI form's own save selectors
  • make the rewrite reply-shape a constant so the scanner stops asking for __()
  • satisfy the phpstan and translation-scan gates
  • point ParamsExportCest at the labels this branch renamed
  • the AI templates must escape through $block — $escaper does not exist on 2.3
  • the smaller findings — context leak, GET-triggered bulk delete, escaping, store labels
  • re-optimize has to blank the stored hash, or it queues nothing
  • bound a launch by its wall clock, and stop bisecting failures that are not the reply's
  • one insertOnDuplicate per column set, so a mixed portion cannot lose values
  • one Save control on the profile form, and one place that resolves scope
  • Save and Delete on the AI profile form, and show a launch in progress
  • make the AI screens usable — three groups, real defaults, honest grid
  • sentence-case admin labels across every screen, not just the AI ones
  • admin labels use sentence case, per the field-label convention
  • make the profile chooser actually render, and stop pre-selecting Blank
  • split AI profile creation into choose-then-form, like a new feed
  • place AI Optimization in both menus, and give its screens their stylesheets
  • AI assignment substitution must cover method-backed attributes (pm842())

Documentation

  • one-line notices on Is active and Code, none on Apply to feeds
  • explain Is active, Code and Apply to feeds on the profile form

1.15.0-beta1 (2026-07-31)

Added

  • AI-assisted feed optimization. A library of named AI profiles that rewrite or enrich selected feed fields — product titles, descriptions, Google category mapping, and structured attributes such as colour, size and material — using the AI provider you already configured for Mirasvit Core. Optimization runs in the background and its results are stored, so feed generation reads ready-made values and never waits on an AI call: your exports stay exactly as fast as before. Assign a profile to your feeds and every reference to the target attribute picks up the optimized value with no change to the feed itself, or reference ai:code on a single column when you want one field optimized and another left alone. Profiles preview on a handful of real products before you enable them, report the tokens they have used and the tokens still needed, and can hold generated values for your approval before any of them reaches a live feed. Where a profile is switched off, or has no value for a product yet, the feed emits the original value exactly as it does today.
  • A Fix with AI action on the feed validation report, which turns a flagged missing or invalid field into a prefilled optimization profile in one step.
  • A console command, mirasvit:feed:ai:optimize, for covering a large catalog on demand instead of waiting for the background schedule — useful before a campaign launch.

Changed

  • Button labels across the extension's admin screens now read in Title Case, and every button that creates something is phrased the same way — Add New Feed, Add New Template, Add New Filter, Add New Profile, Add New Attribute, Add New Category Mapping, Add New Variable. Previously these six differed from one another, and labels such as Clear values or Test connection were cased differently again. Field and column labels are unchanged.
  • Saving an AI profile that no feed uses yet no longer shows a warning about spending tokens without changing feed output. Generating ahead of wiring a feed up is an ordinary step, and the profile screen already states that it covers every store view until a feed narrows it, and shows the tokens spent.

Fixed

  • Nine categories in the shipped Google product taxonomy had corrupted characters (for example Piñatas instead of Piñatas, Sauté Pans instead of Sauté Pans). They appeared mis-spelled in the Category Mapping autocomplete and could not be selected reliably; the taxonomy file now uses the correct encoding.
  • The Delete button was missing from the Filters form, so a filter could only be deleted from the grid. The Save button on the Filters and AI profile forms also offered no Save & Close, unlike every other form in the extension — both forms now carry the same split Save, and it is available while creating a record as well as while editing one.

1.14.9 (2026-07-28)

Fixed

  • The Test Connection button no longer uploads anything to your FTP/SFTP destination. It used to place a deliverer.txt file there — actually a copy of one of the module's own PHP files — which exposed source code and, on stores whose remote folder is watched by a feed consumer (such as OpenAI Ads Manager), was picked up and ingested as a bogus feed. The test now only verifies that the server is reachable, the credentials work, and the destination path exists, leaving the folder untouched. Failed tests also report the reason more clearly, distinguishing a wrong SFTP login from an invalid SFTP path.
  • CSV and tab-delimited feeds no longer lose the last row's empty trailing columns. If the final product in the feed had no value for the last few columns, those columns were trimmed away, so the closing row had fewer columns than the header — and marketplaces that read values by column position misread or rejected that product. Every row now has the full set of columns.
  • Feed generation no longer fails for products with an empty list field. When a template used the first or last filter on something a product had no values for (for example a product with no gallery images), the export aborted with a fatal error; such fields now simply come out empty and the feed generates to the end.

1.14.9-beta1 (2026-07-24)

Improvements

  • AWS S3 / remote media storage support — Feeds now generate, validate, and display correctly on stores that keep media on a remote backend such as AWS S3. Previously the feed logo was reported as missing, feed generation could fail outright, the public feed URL pointed at a private bucket path that browsers couldn't open, and quality-control validation of the generated file failed. Now logos are detected on the remote, the feed is built locally and only the finished file is stored remotely, the feed URL is a proper browsable media URL, and validation reads the file through the storage backend so it works even on private buckets.

Fixed

  • Test Connection for FTP/SFTP no longer leaves any file on your destination folder. The button used to upload the module's own source code as a deliverer.txt file to the remote directory — on stores whose remote folder is watched by a feed consumer, that stray file could be ingested as a bogus feed, and it exposed PHP source. Test Connection now only checks that it can reach, sign in to, and open the configured folder, without writing anything to it.
  • Fixed the Indonesian "Last %1 days" date-range label, which showed a literal %1 instead of the number of days because of a stray space in the translation.

1.14.8 (2026-07-23)

Fixed

  • Testing an FTP/SFTP feed connection no longer leaves a leftover file behind. The Test Connection button used to upload a deliverer.txt file to the destination folder and never remove it; it now writes a temporary file only to confirm write access and deletes it once the test passes, so the target directory stays clean.

1.14.7 (2026-07-21)

Fixed

  • Feeds now generate on stores hosted on network-mounted filesystems (NFS, AWS EFS). On these hosts the exclusive file lock taken during export could fail with a cryptic "An error occurred during '' fileLock execution." error, which aborted every feed generation from both the admin and cron/CLI. The lock now degrades gracefully on such filesystems so feeds generate normally, while a genuine lock conflict on a regular filesystem is still detected as before.

1.14.6 (2026-07-21)

Improvements

  • Redesigned feed edit page — The feed's main tab now opens with a status bar that shows everything at a glance: current status, how many products are in the feed, the feed URL with a one-click copy button, when it was last generated and how long that took, any quality-control issues (as clickable badges that open the validation report), and when it was last validated. The form fields are grouped into clean collapsible sections, active/JSON options are shown as toggles, and the statistics table is easier to read — so you can see a feed's health without hunting through the page.
  • Export problems that used to fail silently are now recorded to var/log/mirasvit/feed.log — for example when tier prices, a category-mapping file, a Google Merchant service-account key, or a click-tracking record can't be read. The feed still generates as before, but you now have a log entry to explain any missing data.

Fixed

  • Opening the New Feed / Custom Feed page no longer crashes with a blank form — creating a feed from scratch failed to render on this version, and now works normally.
  • Feeds with quality-control issues no longer break the edit page. The validation badges triggered a JavaScript error ("validateFeed is not defined") that could stop the page from loading; the badges now open the validation report correctly.
  • Duplicating a feed now starts clean. A copied feed inherited the original's generated file link and "Last Validated" date even though it had never been generated; a duplicate now shows no feed URL and no validation date until you generate it.
  • Restricting an admin role's access to the feed configuration section (Stores → Settings → Configuration → Advanced Product Feeds) now works. The permission for that section was never registered, so the setting had no effect; it is now enforced correctly.
  • ⚠️ This version now requires Mirasvit Core 1.7.15 or newer — run composer update and bin/magento setup:upgrade after upgrading.

1.14.5 (2026-07-09)

Fixed

  • Multiselect attributes with more than one selected option now export their actual labels instead of the literal word "Array". Products whose multiselect attribute (e.g. a "Features" or "Colors" field) had two or more values selected exported the placeholder text "Array" and, under strict mode, could raise a warning; the labels are now joined with commas and exported correctly.

1.14.4 (2026-06-30)

Fixed

  • Feed templates that use an % elsif % branch no longer break feed generation. Exporting a feed whose template reached an % elsif % condition failed with a fatal error and aborted the export; such templates now generate correctly.
  • Adding a new filter rule no longer throws an error. Creating or opening a filter rule before any conditions had been set could fail with a fatal error, blocking you from setting up product filters; empty conditions are now handled correctly.

1.14.3 (2026-06-24)

Fixed

  • Feeds that filter by category in fast mode now generate far faster on large catalogs. The "Category is one of / is not one of" filter no longer forces a full table scan, which could slow cron exports to a crawl (roughly one product every several seconds); it now uses an indexed lookup. The fix also corrects "Category is not one of" results — products that belonged to no category, or that belonged to both a listed and an excluded category, were previously dropped or could leak into the feed, and are now matched correctly.
  • ⚠️ Re-importing an exported feed template no longer corrupts its saved settings — a template's stored configuration now survives an export/import round-trip intact. This fix is delivered through Mirasvit Core; this version now requires module-core 1.7.14 or newer, so run composer update and bin/magento setup:upgrade after upgrading.

1.14.2 (2026-06-16)

Features

  • Google Shopping Promotions feed — A new built-in "Google Shopping Promotions" template lets you publish your active Cart Price Rules (coupons) to Google Merchant Center, so shoppers see offers such as percentage discounts, fixed-amount discounts, free shipping, and free gifts alongside your products. Create a feed from the template, set its Marketplace to Google Merchant Center, and submit it like any other GMC feed.

Improvements

  • When a Google Merchant Center upload fails because your Google Cloud project isn't registered with your Merchant Center account, the feed history now shows a clear, actionable message — telling you exactly where to register (Merchant Center → Settings → Developer registration), to retry in about 5 minutes, and linking to both Google's registration guide and our setup manual — instead of a raw API error.

1.14.1 (2026-06-04)

Fixed

  • Feed export no longer runs out of memory on large catalogs when generated from the command line or cron. Memory now stays flat regardless of catalog size.

1.14.0 (2026-06-03)

Features

  • Stop a running feed export — You can now interrupt an export that is already in progress instead of waiting for it to finish. A Stop Export button appears in the generation progress dialog, and there is a new CLI command for the same purpose: bin/magento mirasvit:feed:stop --id=feed_id for one feed or bin/magento mirasvit:feed:stop --all for every running export. The export stops gracefully between steps, records a "stopped by user" entry in the feed's history, and leaves the previously generated feed file intact so the public feed URL keeps working. Works for exports started from the admin, the command line, or cron.
  • Marketplace field for feeds and templates — Feeds and templates now have a Marketplace field (currently None or Google Merchant Center). The Google Merchant API section only appears on feeds set to Google Merchant Center, so the form is cleaner for feeds that don't use it, and the module no longer risks uploading a non-Google feed to Google Merchant Center by accident. Existing feeds are detected automatically on upgrade — any feed whose name contains "google" or that already had Google Merchant upload enabled is set to Google Merchant Center; the bundled Google Shopping templates are pre-set as well. ⚠️ Adds a marketplace column to the mst_feed_feed and mst_feed_template tables — run bin/magento setup:upgrade after upgrading.

Fixed

  • Feed REST API endpoints (GET/POST/PUT on /V1/feed/feeds) no longer fail with HTTP 500. The Google Merchant fields added in 1.13.0 were missing the metadata Magento needs to serialize the response, which broke every feed API call that returned feed data.

1.13.4 (2026-05-27)

Fixed

  • Feed export no longer aborts with SQLSTATE23000 duplicate-key on mst_feed_rule_product when stock / status / visibility changes between AJAX polls. The Filtration step now uses keyset pagination and the admin path holds a per-feed lock.
  • Concurrent admin and CLI generation of the same feed no longer produces a corrupted XML file with interleaved ?xml ? declarations. The admin and CLI export paths now share a single per-feed lock so they are mutually exclusive.
  • Generate dialog spinner no longer hangs for the duration of an export chunk before the wizard renders — the admin PHP session lock is now released up-front and re-released each iteration, so progress polls run in parallel with the export.
  • History tab keyword search now narrows the grid; a missing FULLTEXT index made it return every row regardless of the query. ⚠️ Run bin/magento setup:upgrade after upgrading.
  • History grid with no keyword matches now shows "0 records found" instead of a blank count.
  • Feed and Template grid date range filters no longer reset the year to 2005 after a date is picked.
  • Filtering the Feed grid by ID range or Created At no longer fails with an "ambiguous column" SQL error.
  • Unchecking every filter on a feed and saving now actually clears the filter set instead of preserving the previously-saved one.
  • Centered the generation steps wizard inside the export modal.
  • Removed the non-functional "Reset" button from the filter edit page.

Improvements

  • Shortened the Google Merchant API field notices on the feed edit form to a single descriptive sentence each; operational detail moved to the manual.

1.13.3 (2026-05-27)

Fixed

  • The bundled "Base Product Filter" rule is now shipped as JSON. Fresh installs no longer log "Unable to unserialize data" when opening a feed that uses it.
  • Added a one-time data patch that converts any legacy PHP-serialized feed rule conditions, dynamic attribute conditions, feed and template formats, and category mappings to JSON on setup:upgrade. Stores already on JSON are unaffected.

1.13.2 (2026-05-26)

Fixed

  • Removed unserialize() fallback in Mirasvit\Feed\Service\Serialize. The service is now JSON-only and marked @deprecated in favour of \Magento\Framework\Serialize\Serializer\Json.

1.13.1 (2026-05-22)

Features

  • Submit non-product feeds to Google Merchant Center — In addition to the existing Products feed, you can now submit Supplemental, Local Inventory, Regional Inventory, Promotion, Product Review, and Merchant Review feeds to GMC. Pick the type in the new "Content Type" dropdown on the feed's Google Merchant Center section — pre-filled automatically when you create a feed from a built-in Google template (e.g. Google Shopping → Products, Google Shopping Review → Product Reviews). ⚠️ Run bin/magento setup:upgrade after upgrading. On existing installs, also run the admin Import Templates action to pick up the new pre-fill values for the bundled Google templates.

Improvements

  • ⚠️ The google/shopping-merchant-datasources SDK is now an optional dependency instead of a hard requirement, so the module installs again on PHP 7.4 / Magento 2.3.7. To use Google Merchant Center upload, install the SDK separately with composer require google/shopping-merchant-datasources:^1.2 (PHP 8.1+ required). When the SDK is missing, the Google Merchant Center section in admin shows an install banner with the exact command, and cron generation skips the upload step instead of failing.

Fixed

  • Fixed NOT_FOUND errors immediately after creating a new GMC data source — the module now retries while Google's API replicas catch up.

1.13.0 (2026-05-12)

Features

  • Google Merchant Center direct integration — Submit feeds to Google Merchant Center via the Merchant API v1 without manually uploading files. Configure your Merchant ID and service account key (JSON file upload) once under Stores → Configuration → Mirasvit Feed → Google Merchant Center, then enable GMC on each feed's edit page. Per-feed settings include target countries, content language, feed label, fetch frequency (how often GMC re-fetches on its own schedule), and upload trigger (automatically after each generation, or manually via a Submit button on the feed edit page). ⚠️ Run bin/magento setup:upgrade after upgrading — new columns added to the mst_feed_feed table (gmc_enabled, gmc_feed_label, gmc_target_countries, gmc_language, gmc_data_source_name, gmc_upload_trigger, gmc_fetch_frequency, gmc_uploaded_at).

1.12.3 (2026-05-05)

Features

  • Added built-in ChatGPT feed template (CSV) for OpenAI's Commerce platform, pre-configured with all required fields, and seller/policy fields.

1.12.2 (2026-04-23)

Fixed

  • Fixed blank "Add New Feed" page caused by Prototype.js.
  • Fixed stock_status attribute returning localized values on non-English storefronts — Google Shopping requires "in stock" / "out of stock" in English, so feeds were failing platform validation on stores running in other languages.
  • Fixed a severe performance regression introduced in 1.12.0 where feeds with fast mode filters on product attributes could take significantly longer to generate than expected.
  • Fixed an error when saving a feed whose template had been deleted — the missing template is now skipped and surfaced as an admin notice instead of crashing the save.

1.12.1 (2026-04-13)

Fixed

  • Fixed fatal TypeError after running bin/magento mirasvit:feed:delivery and bin/magento mirasvit:feed:migrate - both commands declared an int return type but fell through without returning on the success path.

1.12.0 (2026-03-30)

Features

  • REST API for feed management — All major feed objects (feeds, templates, filter rules, dynamic attributes, category mappings, and variables) are now accessible via Magento REST API. You can create, update, delete, generate, deliver, and validate feeds programmatically. Feed generation runs asynchronously via a queue — trigger it and poll the queue endpoint for status. ⚠️ New database table mst_feed_generation_queue is created on upgrade.
  • split modifier in template loops — Use | split: "," inside % for % loops to iterate over comma-separated (or any-delimiter-separated) attribute values directly in feed templates, without needing a custom dynamic attribute.
  • Admin interface translated into 40+ languages

Improvements

  • Compatible with Magento 2.4.9 — CLI commands updated to meet the new PHP return type requirements introduced in Magento 2.4.9.

Fixed

  • Fixed feed filter conditions ignoring the store scope for product attributes when fast mode is enabled — products could be incorrectly included or excluded from the feed.
  • Fixed category attributes (e.g. category name, URL) returning values from the default store view instead of the store view configured for the feed.
  • FTP delivery failures now properly throw an error — previously a failed FTP upload could be silently ignored; now it surfaces as an error so you can act on it.

1.11.11 (2026-02-06)

Features

  • Added compatibility with MageWorx Advanced Product Options Suite for accurate min_price/max_price calculation

1.11.10 (2026-01-27)

Fixed

  • Fixed click reporting error when accessing non-existent feeds

1.11.9 (2026-01-23)

Fixed

  • Fixed the display of the generation modal on Hyvä-based storefronts

1.11.8 (2026-01-14)

Fixed

  • Fixed the cleanup cron job incorrectly removing non-feed files from pub/media/feed

1.11.7 (2026-01-02)

Features

  • Added sort and rsort modifiers for sorting array values in feed templates

1.11.6 (2025-12-04)

Fixed

  • Fixed deprecated functionality error on feed pages in Magento Commerce (EE)

1.11.5 (2025-12-03)

Fixed

  • Fixed missing conditions for weight and price attributes in the dynamic attribute form

1.11.4 (2025-11-27)

Fixed

  • Fixed the "Save and Continue Edit" button remaining disabled after saving a feed

1.11.3 (2025-11-21)

Fixed

  • Fixed potential XSS vulnerabilities in admin template output by adding proper escaping

1.11.2 (2025-11-20)

Features

  • Added "Custom Feeds" section next to "Popular Feeds" on the "New Feed" page

Improvements

  • Improved validation rules import with better error handling for missing templates
  • Added "Validation Rules" column on the template listing page
  • Improved "Quality Control" display on the feed edit page and added it to the feed listing
  • The "Save and Continue" button is now disabled until a template is selected, preventing accidental saves
  • The "Validate" button is always visible, showing an error when validation is not available

Fixed

  • Fixed logo duplication where all feeds and templates showed the same logo

1.11.1 (2025-10-08)

Fixed

  • Fixed the clean modifier incorrectly handling boolean values

1.11.0 (2025-09-23)

Features

  • Added ability to create a new feed without selecting a template
  • Added logos, guide links, and descriptions for feeds and feed templates
  • Added ability to duplicate a template

Improvements

  • Redesigned feed creation page with tile-based template selector
  • Only user-defined templates can now be modified; built-in templates are read-only
  • ⚠️ Removed outdated templates (catch, ladenzeile, myshopping, opensky, pricesearcher, prisguiden, real_de, shopalike). Feeds using these templates should be updated before upgrading
  • ⚠️ Added new columns to mst_feed_feed and mst_feed_template tables for logo and metadata storage

1.10.4 (2025-09-19)

Improvements

  • Updated "Quantity" filter logic for bundle products — quantity is now calculated as the minimum stock of required child items instead of the sum

1.10.3 (2025-09-02)

Improvements

  • Optimized loading of feed statistics

Fixed

  • Fixed error in the dynamic attribute form

1.10.2 (2025-08-20)

Features

  • Added the ability to define the feed data extract level for the JSON copy of an XML feed

Improvements

  • Validation service updated to handle bulk feed validation

Fixed

  • Fixed the issue with saving empty Validation Rules

1.10.1 (2025-08-19)

Fixed

  • Fixed the Content Settings tab breaking in CSV feeds after changing column order

1.10.0 (2025-08-19)

Features

  • Added Feed Validator — validates that prepared feeds follow the target platform's ruleset and flags errors before delivery

Fixed

  • Fixed feeds not being generated by cron at midnight (00:00)

1.9.2 (2025-08-15)

Fixed

  • Fixed feed generation history not displaying times in the store's local timezone

1.9.1 (2025-08-12)

Fixed

  • Fixed an issue where reordering columns in CSV feeds could cause unexpected modifier merging, preventing the Content Settings tab from rendering

1.9.0 (2025-08-06)

Features

  • Added SFTP key pair authentication as an alternative to password-based connections

1.8.1 (2025-07-28)

Fixed

  • Fixed the clean filter incorrectly removing valid UTF-8 characters (e.g., ä, ö, å)

1.8.0 (2025-07-07)

Features

  • Added ability to retrieve minimum and maximum prices for products with custom options using min_price and max_price attributes

Improvements

  • Improved admin accessibility to meet WCAG 2.2 AA standards

1.7.13 (2025-06-26)

Fixed

  • Fixed the "Quantity" filter condition not including bundle products (now treated like configurable products)
  • Fixed error on the dynamic category edit page when remote storage is enabled

1.7.12 (2025-06-10)

Improvements

  • Improved category selection logic — when multiple categories exist at the same depth, the one appearing first in the navigation tree is chosen

Fixed

  • Fixed an exception when retrieving the quantity of certain bundle products
  • Fixed text and textarea attributes not displaying available operators in the dynamic attribute form

1.7.11 (2025-05-22)

Fixed

  • Fixed configurable attribute values displaying internal IDs instead of labels in the configurable attributes loop
  • Fixed some categories not appearing in the tree on the dynamic categories page

1.7.10 (2025-05-14)

Fixed

  • Fixed compilation error on Magento Cloud

1.7.9 (2025-05-07)

Fixed

  • Fixed feeds being delivered with the default filename (mst_feed_id) instead of the saved custom name
  • Fixed products appearing in the feed preview even when filters returned no results

1.7.8 (2025-04-28)

Fixed

  • Fixed false "Please generate the feed before delivery" error when the feed was already generated

1.7.7 (2025-04-15)

Fixed

  • Fixed error on the dynamic attribute creation page

1.7.6 (2025-04-10)

Features

  • Added support for liquid variables in the "Filename" field (e.g., use store-specific filenames)

Improvements

  • Improved dynamic attribute performance

Fixed

  • Fixed compatibility with Magento 2.4.8

1.7.5 (2025-03-31)

Improvements

  • Added recurring setup script to automatically import new templates during upgrades

1.7.4 (2025-03-18)

Fixed

  • Fixed the issue with exporting templates

1.7.3 (2025-03-13)

Fixed

  • Fixed mass actions not working when a filter is applied on the Templates page

1.7.2 (2025-03-04)

Fixed

  • Fixed duplicate products appearing in the feed

1.7.1 (2025-02-28)

Features

  • Added ability to save a custom category path in category mapping

Improvements

  • Category retrieval now sorts by category ID for consistent results

1.7.0 (2025-02-25)

Features

  • Added ability to apply filters when previewing a feed, so you can verify filter results before generation

1.6.4 (2025-02-21)

Fixed

  • Fixed product.stock_status returning incorrect values when Backorders are enabled
  • Fixed array-to-string conversion error when creating a filter with a multiselect attribute

1.6.3 (2025-02-17)

Features

  • Added 40 new feed templates for additional platforms

1.6.2 (2025-01-30)

Features

  • Added ability to include "Minimum Qty Allowed in Shopping Cart" and "Qty Increments" values in feeds

Improvements

  • Feed preview now applies the same custom validation used during generation
  • ⚠️ Migrated from Zend Framework to Laminas. Ensure your environment supports Laminas before upgrading

1.6.1 (2025-01-22)

Features

  • Added over 50 new feed templates
  • Added ability to loop through tier prices: % for tier_price in product.tier_prices % with access to price, quantity, price_type, customer_group, and website_id

Fixed

  • Fixed incorrect "Delivered At" value in the feed_delivery_success notification email

1.6.0 (2025-01-09)

Features

  • Added "Warning" status indicator when feed generation gets stuck
  • Added access to category mapping values in the category loop using category.mapping:1

Improvements

  • Updated all built-in feed templates

Fixed

  • Fixed SFTP delivery failing when no path is specified
  • Fixed the resize modifier failing when no input value is provided
  • Fixed filter condition combination set to "False" not working correctly

1.5.6 (2024-12-13)

Features

  • Added "Google Shopping Local Inventory Feed" template
  • Added ability to loop through product source items: % for source in product.source_items % with access to source.quantity

Fixed

  • Fixed incorrect category retrieval on multi-website setups
  • Fixed CSV feed preview error when a column value is an object

1.5.5 (2024-12-03)

Improvements

  • Optimized special price date retrieval — significantly faster feed generation when multiple catalog price rules are active

1.5.4 (2024-11-27)

Features

  • Added feed templates for Hotline, Prom, Rozetka, Ceneo, eBay, Instagram, Pinterest, and TikTok

Improvements

  • Updated Awin, Facebook Dynamic Ads, Google Shopping, and Pagineprezzi templates

Fixed

  • Fixed error during template import when template data is invalid
  • Fixed deprecated dynamic property warning in TemplateSource
  • Fixed template import failure when referenced template no longer exists

1.5.3 (2024-11-08)

Features

  • Added ability to retrieve parent configurable attributes and their values: % for attribute in product.configurable_attributes % with access to attribute.code, attribute.value, and attribute.label

Improvements

  • FTP port number is now automatically extracted from the "Host Name" field, so you no longer need to configure it separately

1.5.2 (2024-10-28)

Fixed

  • Fixed error when applying modifiers to integer attribute values

1.5.1 (2024-10-24)

Features

  • Added ability to enable/disable SSL for FTP/FTPS connections in FTP Settings
  • Added trim and ltrim modifiers for removing whitespace from attribute values

Improvements

  • Special price dates now pulled from catalog price rules when the rule applies to not-logged-in customers

Fixed

  • Fixed category tree only allowing one category to be selected in Filter Conditions
  • Fixed the % else % tag only working once per XML feed template

1.5.0 (2024-09-27)

Features

  • Added ability to convert XML feed output to JSON format

1.4.12 (2024-09-10)

Fixed

  • Fixed feed generation via CLI on AWS environments

1.4.11 (2024-08-23)

Fixed

  • Fixed special_from_date and special_to_date attributes displaying expired dates
  • Fixed special price dates for configurable products when a catalog price rule is applied

1.4.10 (2024-08-09)

Fixed

  • Fixed error in dynamic attributes output

1.4.9 (2024-07-24)

Fixed

  • Fixed template import on AWS S3 storage
  • Fixed inclTax and exclTax modifiers failing with non-numeric values

1.4.8 (2024-07-11)

Improvements

  • Feed temporary files now use the feed filename instead of numeric ID for easier identification
  • Updated special price date logic to correctly determine active date ranges
  • Improved AWS S3 compatibility — uploads now use relative paths
  • Added Content Security Policy (CSP) compliance

Fixed

  • Fixed modifier arguments being incorrectly parsed when values contain the pipe (|) character

1.4.7 (2024-06-27)

Fixed

  • Fixed inline script Content Security Policy (CSP) errors
  • Fixed url_with_options modifier displaying attribute IDs instead of attribute codes
  • Fixed product grid on filter page (Mageplaza ProductGrid compatibility)

1.4.6 (2024-06-17)

Improvements

  • Attempting to edit a feed without a valid ID now redirects to the feed creation page
  • Parent product lookup now correctly returns the actual parent product type

Fixed

  • Fixed file locking failures on shared NFS disk volumes
  • Fixed product URLs incorrectly including the admin path

1.4.5 (2024-05-29)

Improvements

  • Category selection now returns the deepest category that belongs to the feed's store root category

Fixed

  • Fixed CSV feeds rendering multiple rows as a single line
  • Fixed product URLs incorrectly including the admin path
  • Fixed extra spaces in the "Gallery Image Collection" output

1.4.4 (2024-04-26)

Features

  • Added "Strip style tag" modifier to remove inline style tags from attribute values

Fixed

  • Fixed feed preview not working in CSV feeds due to jQuery conflict

1.4.3 (2024-04-18)

Improvements

  • Reports tracking script is now only loaded when the reports feature is enabled in configuration

Fixed

  • Fixed incorrect feed URL generation

1.4.2 (2024-03-21)

Features

  • Added ability to include the "Manage Stock" attribute in feeds

Improvements

  • Feed delivery now verifies that the feed has been generated before attempting to deliver

Fixed

  • Fixed custom static attributes not saving correctly
  • Fixed feed generation on Magento PWA setups

1.4.1 (2024-03-04)

Fixed

  • Fixed empty first line appearing in CSV/TXT feeds when the header is excluded
  • Fixed incorrect stock status for bundle products
  • Fixed feed email notifications not being sent
  • Fixed compatibility with PHP 7.1

1.4.0 (2024-02-21)

Features

  • Added support for managing feeds in remote storage (e.g., AWS S3)

Improvements

  • Optimized the "Content Settings" tab loading when the store has over 1000 product attributes
  • Category retrieval now only returns categories from the selected store

Fixed

  • Fixed CSV and TXT feeds where modifier arguments were stored incorrectly (a migration patch is included)
  • Fixed incorrect lowest category selection for products

1.3.19 (2024-01-26)

Improvements

  • Reports feature now uses plain JavaScript for compatibility with the Hyvä theme

Fixed

  • Fixed incorrect product URLs in review feeds
  • Fixed product filter not being applied to review feeds
  • Fixed "Filters" display on the feed edit page
  • Fixed cron export error when schedule date is null
  • Fixed the append filter returning null instead of a string

1.3.18 (2024-01-18)

Improvements

  • FTP/FTPS delivery now creates a secure SSL connection by default

Fixed

  • Fixed the parent product lookup in Magento B2B environments

1.3.17 (2024-01-05)

Improvements

  • Added validation to prevent circular parent-child product references

Fixed

  • Fixed the category.parent_category.id pattern returning incorrect values

1.3.16 (2023-12-22)

Fixed

  • Fixed getFinalPrice returning a boolean instead of a numeric value in certain cases
  • Fixed the mirasvit:feed:export CLI command failing when the --step parameter is used

1.3.15 (2023-12-08)

Improvements

  • ⚠️ Changed format_serialized column type from text to longtext in mst_feed_feed and mst_feed_template tables to support larger feed configurations

1.3.14 (2023-11-23)

Features

  • Added ability to access all parent products in an XML feed template

Fixed

  • Fixed stock_status and is_in_stock attributes returning incorrect values when MSI (Multi Source Inventory) is enabled
  • Fixed store codes being incorrectly appended to feed URLs

1.3.13 (2023-11-16)

Fixed

  • Fixed adding and removing rows, modifiers, and validators in the field mapping table
  • Fixed the mirasvit:feed:cron CLI command failing with an error
  • Fixed feed preview loading from the wrong tab when accessed from "FTP Settings"

1.3.12 (2023-11-09)

Improvements

  • Dynamic attributes that reference themselves are now excluded from processing to prevent infinite loops

Fixed

  • Fixed the category_ids attribute not working in CSV and TXT feeds

1.3.11 (2023-10-13)

Fixed

  • Fixed error in Facebook feed preview
  • Fixed incorrect return type of the convert modifier

1.3.10 (2023-10-06)

Fixed

  • Fixed store resolver plugin returning incorrect type
  • Fixed the "Format date" modifier producing unexpected output

1.3.9 (2023-10-04)

Features

  • Added ability to filter feeds by MSI (Multi Source Inventory) stock availability

Improvements

  • Improved request validation for saving dynamic variables

1.3.8 (2023-09-25)

Features

  • Added "excludes" filter for the % if % tag in feed content settings
  • Added ability to store dynamic variables in the var/mst_feed folder

Fixed

  • Fixed compatibility with CustomGento DefaultStoreCodeRemover module
  • Fixed feed filters failing when Magento_Inventory module is disabled
  • Fixed error when a category attribute is null during feed generation
  • Fixed the "contains" filter for the % if % tag not matching correctly

1.3.7 (2023-09-12)

Fixed

  • Fixed type error in the children-in-stock calculation

1.3.6 (2023-09-08)

Fixed

  • Fixed the truncatewords filter not working correctly

1.3.5 (2023-09-04)

Fixed

  • Fixed incorrect feed URL generation
  • Fixed tracking parameter types for feed reports

1.3.4 (2023-08-23)

Fixed

  • Fixed number filter not working correctly (regression from 1.3.0)

1.3.3 (2023-08-22)

Fixed

  • Fixed string filter not working correctly (regression from 1.3.0)

1.3.2 (2023-08-18)

Fixed

  • Fixed incorrect data type handling in multiple filters (regression from 1.3.0)

1.3.1 (2023-08-15)

Fixed

  • Fixed feed generation errors on PHP 8 (regression from 1.3.0)

1.3.0 (2023-08-14)

Improvements

  • ⚠️ Complete admin interface rewrite — switched from custom form blocks to Magento UI Components for feeds, templates, dynamic attributes, categories, variables, and import/export pages
  • ⚠️ Removed legacy Block/Adminhtml form classes and service/repository interfaces. Any customizations extending these classes will need to be updated
  • ⚠️ Renamed source model and observer classes (e.g., ArchiveArchiveSource, DeliveryFailFeedDeliveryFailObserver). Update DI preferences if you have custom overrides
  • Improved PHP 8.1 compatibility by removing deprecated dynamic properties
  • Improved code quality with strict typing throughout models, controllers, and resolvers

1.2.11 (2023-04-25)

Fixed

  • Fixed modifier input values not being captured in XML feed templates
  • Fixed missing liquid modifiers on PHP 8.1
  • Fixed error on Filter edit page when loading product columns component
  • Fixed missing block names in layouts causing rendering issues
  • Fixed "Column 'entity_id' is ambiguous" error on filter preview
  • Fixed styling issues with buttons and progress bar

1.2.10 (2023-03-15)

Improvements

  • Added support for Magento 2.4.6
  • Improved search filter in templates and feeds grid

Fixed

  • Fixed PHP 8.2 compatibility issues

1.2.9 (2022-12-15)

Fixed

  • Fixed filter preview showing incorrect stock status

1.2.8 (2022-09-20)

Fixed

  • Fixed not all feeds being displayed on the main feeds list
  • Fixed feed generation with email notifications enabled causing errors
  • Fixed JavaScript cookie handling on Magento 2.4.5 that could block the checkout page

1.2.7 (2022-09-14)

Features

  • Added feed statistics display on the feed edit page
  • Added product preview on the filter page

1.2.6 (2022-09-08)

Features

  • Added feed statistics columns to the feeds grid

Improvements

  • Updated admin grid layouts

Fixed

  • Fixed ETA calculation errors during feed generation

1.2.5 (2022-08-18)

Fixed

  • Fixed product data not being displayed for some products in review feeds

1.2.4 (2022-08-09)

Fixed

  • Fixed incorrect return value from CLI console commands

1.2.3 (2022-07-05)

Fixed

  • Fixed feed generation progress bar losing focus during generation

1.2.2 (2022-06-20)

Improvements

  • Removed db_schema_whitelist.json (no longer needed after declarative schema migration)

1.2.1 (2022-05-23)

Improvements

  • Updated module dependency versions

1.2.0 (2022-05-13)

Improvements

  • ⚠️ Migrated to Magento declarative database schema. All legacy Install/Upgrade schema scripts have been removed and replaced with db_schema.xml and a SetupData data patch

1.1.38 (2022-04-05)

Fixed

  • Fixed liquid patterns not being processed correctly in feed templates

1.1.37 (2022-03-23)

Improvements

  • Added PHP 8.1 compatibility — fixed deprecated dynamic properties, type errors in filters, and price/product resolver issues

1.1.36 (2021-12-23)

Fixed

  • Fixed Category Mapping autocomplete search not returning results

1.1.35 (2021-11-09)

Improvements

  • Added demo site restrictions for dynamic variable PHP code execution

1.1.34 (2021-09-28)

Features

  • Added eCommerce Network feed template

Improvements

  • Updated Google autocomplete categories in Category Mappings

1.1.33 (2021-05-07)

Fixed

  • Fixed "IS NOT" filter condition not matching correctly

1.1.32 (2021-05-07)

Features

  • Added ability to use additional images in filter rule conditions

Improvements

  • Implemented LockManager interface for more reliable file locking during generation

Fixed

  • Fixed duplicate feed generation when multiple cron processes run simultaneously

1.1.31 (2021-04-12)

Fixed

  • Fixed "Amount of Children in stock" filter producing incorrect results during cron generation
  • Fixed Category Mapping autocomplete not appearing

1.1.30 (2021-01-28)

Features

  • Added Trovaprezzi feed template

Improvements

  • Added option to enable or disable fast filtering mode in the feed "Additional" tab

1.1.29 (2020-12-30)

Fixed

  • Fixed "IS" filter condition producing incorrect output
  • Fixed character encoding issues in feed preview
  • Fixed inability to set an empty field value in filter conditions

1.1.28 (2020-12-03)

Features

  • Added option to disable Facebook metadata tracking in the "Additional" tab

1.1.27 (2020-11-18)

Improvements

  • Significantly faster feed generation when using Category Mappings
  • Added Multi Source Inventory stock filter conditions

1.1.26 (2020-11-13)

Fixed

  • Fixed incorrect class reference in the Zend Reflection library installation notification

1.1.25 (2020-11-09)

Improvements

  • Added PHP 7.4 compatibility
  • Added clear error message when the Zend Reflection library is not installed

Fixed

  • Fixed incorrect delete confirmation message on the filters page

1.1.24 (2020-10-21)

Features

  • Added "Item Group ID" attribute for product feeds

Fixed

  • Fixed invalid ID attribute in feed output

1.1.23 (2020-09-28)

Fixed

  • Fixed incorrect product filtering by categories

1.1.22 (2020-09-11)

Features

  • Added Facebook metadata to feed pages for improved social sharing and pixel tracking

1.1.21 (2020-09-10)

Fixed

  • Fixed incorrect product count when applying filters

1.1.20 (2020-09-08)

Improvements

  • Redesigned filter interface with improved applying logic

1.1.19 (2020-09-05)

Fixed

  • Fixed modal overlay not appearing behind the generation progress dialog

1.1.18 (2020-07-29)

Improvements

  • Added support for Magento 2.4

1.1.17 (2020-07-03)

Fixed

  • Fixed filter conditions not working for non-default product attributes

1.1.16 (2020-06-12)

Features

  • Added ability to export salable quantities from Multi Source Inventory stocks

Fixed

  • Fixed filter conditions not being applied correctly

1.1.15 (2020-05-15)

Fixed

  • Fixed "Product Type" attribute values being exported as IDs instead of labels in CSV and TXT feeds
  • Fixed product collection sorting interfering with feed generation order

1.1.14 (2020-05-12)

Fixed

  • Fixed errors during the filtration step

1.1.13 (2020-04-29)

Improvements

  • Improved product filtration performance

1.1.12 (2020-04-14)

Fixed

  • Fixed inactive special prices being included in feed output

1.1.11 (2020-03-23)

Fixed

  • Fixed incorrect select options for the "Manage Stock" rule condition

1.1.10 (2020-03-04)

Fixed

  • Fixed cron enable/disable toggle not reflecting the current cron status
  • Fixed price format output

1.1.9 (2020-02-19)

Fixed

  • Fixed error when creating a new category mapping

1.1.8 (2020-02-04)

Features

  • Added cron schedule information to the "Scheduled Task" feed tab

1.1.7 (2019-12-27)

Features

  • Added "Product URL with custom options" attribute for including option-specific URLs in feeds

1.1.6 (2019-12-18)

Features

  • Added Multi Source Inventory filter conditions: "Manage Stock" and "Qty"

Fixed

  • Fixed incorrect select options for the "Manage Stock" filter condition

1.1.5 (2019-11-22)

Fixed

  • Fixed route conflict by renaming "feed" to "mst_feed"
  • Fixed "Undefined offset" error on Magento Commerce (EE)
  • Fixed "chmod not permitted" error during feed file operations

1.1.3 (2019-10-29)

Fixed

  • Fixed installation issues on Magento 2.2.x

1.1.2 (2019-10-25)

Fixed

  • Fixed "Undefined offset 0" error on Magento Commerce (EE)

1.1.1 (2019-10-25)

Fixed

  • Fixed Magento Marketplace validation test failures

1.1.0 (2019-10-11)

Features

  • Added "Created At" and "Updated At" filter conditions for time-based product filtering

1.0.110 (2019-09-17)

Fixed

  • Fixed AM/PM format display in the cron schedule list
  • Fixed mass export action for templates in the grid

1.0.109 (2019-08-22)

Improvements

  • Updated built-in feed templates
  • Added warning notification when feed filename is missing before generation

1.0.108 (2019-08-12)

Features

  • Added 10 new feed templates

1.0.107 (2019-08-08)

Improvements

  • Code standards refactoring

1.0.106 (2019-06-05)

Features

  • Added "Amazon Seller Central" feed template
  • Added ability to duplicate Dynamic Attributes from the grid action column

1.0.105 (2019-05-28)

Features

  • Added ability to export Multi Source Inventory sources (Magento 2.3+)

1.0.104 (2019-05-22)

Fixed

  • Fixed order tracking in Feed Reports
  • Fixed incorrect "Reviews Count" attribute export

1.0.103 (2019-04-10)

Fixed

  • Fixed "Status (Parent Product)" filter condition not working correctly
  • Fixed "for tag was never closed" error on the feed preview page

1.0.102 (2019-03-28)

Features

  • Added "HTML Entity Decode" modifier

1.0.101 (2019-03-19)

Fixed

  • Fixed filtering by multi-select attributes

1.0.100 (2019-02-22)

Fixed

  • Fixed incorrect store view selection when generating feeds via cron

1.0.99 (2019-02-07)

Features

  • Added "Gallery image collection" attribute for exporting all product images

Fixed

  • Fixed incorrect enclosure characters in CSV and TXT feed exports

1.0.98 (2019-02-04)

Fixed

  • Fixed column length limitation for dynamic category values

1.0.97 (2019-01-10)

Fixed

  • Fixed cron feed generation failing after New Year date rollover

1.0.96 (2019-01-09)

Fixed

  • Fixed "Is in Stock" attribute returning incorrect values

1.0.95 (2018-12-28)

Features

  • Added ability to filter products without a category
  • Added new text modifiers

1.0.94 (2018-12-20)

Fixed

  • Fixed "Append" modifier producing incorrect results when applied to numeric values
  • Fixed Dynamic Attribute returning empty output instead of zero values

1.0.93 (2018-12-14)

Features

  • Added "Final Price with Tax" product attribute

Improvements

  • Updated "Google Shopping Review" template

Fixed

  • Fixed error when creating a new feed using the Empty Template

1.0.92 (2018-12-11)

Features

  • Added new text modifiers

Fixed

  • Fixed math modifiers (Addition, Subtraction, Multiplication, Division) producing incorrect results

1.0.91 (2018-11-30)

Improvements

  • Added Magento 2.3 support

1.0.90 (2018-11-29)

Fixed

  • Fixed data serialization issue on Magento versions below 2.3

1.0.89 (2018-11-28)

Improvements

  • Added Magento 2.3 compatibility

1.0.88 (2018-11-23)

Fixed

  • Fixed small image pattern not exporting the full image path

1.0.87 (2018-11-20)

Features

  • Added "Product ID" filter condition
  • Added "Qty of children in stock" attribute for export

1.0.86 (2018-11-19)

Fixed

  • Fixed category level calculation error

1.0.85 (2018-11-15)

Features

  • Added new templates: "Facebook Dynamic Ads", "Domodi", "Marktplaats"

Improvements

  • Updated "Google Shopping Review" template to comply with new XML Schema requirements
  • Updated existing templates

1.0.84 (2018-11-09)

Features

  • Added "Stock Status" product attribute

Fixed

  • Fixed categories being exported in incorrect position order

1.0.83 (2018-10-25)

Fixed

  • Fixed incorrect timezone in the time pattern export
  • Fixed empty feed being generated when filter conditions are applied

1.0.82 (2018-10-02)

Fixed

  • Fixed possible product sorting issue during generation

1.0.81 (2018-09-11)

Improvements

  • Optimized feed generation performance by streamlining product attribute resolution

1.0.80 (2018-09-06)

Improvements

  • Added memory usage and iteration time display to the CLI export command

1.0.79 (2018-09-05)

Improvements

  • Created separate option group for Category Mappings in the admin menu

Fixed

  • Fixed feed notification emails not being sent
  • Fixed out-of-stock products being excluded from feeds even when filters allow them
  • Fixed truncate filter failing with multibyte (non-Latin) strings
  • Fixed server error during feed generation

1.0.77 (2018-08-09)

Improvements

  • Improved "Is Salable" filter — now checks parent product salable status when filtering children

Fixed

  • Fixed incorrect category path export by levels

1.0.76 (2018-07-24)

Fixed

  • Fixed incorrect Review Summary Rating export
  • Fixed SQL errors during Magento installation

1.0.74 (2018-07-23)

Fixed

  • Fixed eval function error when using Dynamic Variables

1.0.73 (2018-07-17)

Fixed

  • Fixed notification email compatibility with Magento 2.1.x

1.0.72 (2018-07-16)

Fixed

  • Fixed feed delivery and export via CLI commands
  • Fixed notification emails not being sent

1.0.71 (2018-07-10)

Fixed

  • Fixed reports pie chart not displaying by setting the default column

1.0.70 (2018-06-28)

Features

  • Added "Final Price" filter condition

Improvements

  • Improved "Is Salable" filter condition

Fixed

  • Fixed image and image size filter conditions not processing correctly
  • Fixed incorrect or missing enclosures in TXT and CSV feeds

1.0.69 (2018-06-04)

Fixed

  • Fixed feed scheduled generation running at incorrect times

1.0.68 (2018-03-19)

Fixed

  • Fixed "Stock Availability" filter condition not working correctly

1.0.67 (2018-03-12)

Fixed

  • Fixed incorrect product filtering by category IDs
  • Fixed reports not visible in developer mode

1.0.66 (2018-02-26)

Fixed

  • Fixed report display (regression from 1.0.65)

1.0.65 (2018-02-23)

Improvements

  • Updated compatibility with latest Mirasvit Reports module

Fixed

  • Fixed store categories not showing on the Category Mapping page

1.0.64 (2018-02-15)

Features

  • Added filter condition to export products by number of in-stock children

1.0.63 (2018-02-02)

Fixed

  • Fixed file locking failures on Windows

1.0.62 (2017-12-15)

Fixed

  • Fixed YAML parsing library compatibility issue

1.0.61 (2017-12-07)

Fixed

  • Fixed deleting dynamic variables via mass action in the grid

1.0.60 (2017-11-22)

Features

  • Added feed generation report showing generation progress and statistics
  • Display number of generated items in the feed

1.0.59 (2017-11-17)

Fixed

  • Fixed prices being exported incorrectly when generated by cron

1.0.58 (2017-10-12)

Fixed

  • Fixed error when an array value is passed to a string function

1.0.57 (2017-10-12)

Fixed

  • Fixed incorrect parent product values in feeds on Magento Commerce (EE)
  • Fixed error when an array value is passed to a string function

1.0.56 (2017-09-28)

Improvements

  • Added Magento 2.2 compatibility

1.0.55 (2017-06-27)

Features

  • Added modifier to remove all non-UTF-8 characters
  • Added ability to limit gallery image collection size

Fixed

  • Fixed dynamic attribute conditions failing when admin user has custom permissions
  • Fixed "Duplicate entry" error during the filtration step

1.0.54 (2017-06-13)

Fixed

  • Fixed image resolver not returning correct image URLs

1.0.53 (2017-05-05)

Features

  • Added ability to use product attributes in the Google Analytics tab

Fixed

  • Fixed Google Shopping templates using product.price instead of product.finalPrice
  • Fixed "Area code is already set" error during CLI feed generation

1.0.52 (2017-03-30)

Improvements

  • Improved click logging mechanism for better reliability

Fixed

  • Fixed import/export configuration issues

1.0.51 (2017-03-24)

Features

  • Added import/export functionality for feed configurations

1.0.50 (2017-03-21)

Fixed

  • Fixed possible issue with product filtration

1.0.49 (2017-02-27)

Fixed

  • Fixed feed patterns preview not rendering correctly

1.0.48 (2017-02-27)

Fixed

  • Fixed dynamic attributes not working correctly

1.0.47 (2017-02-20)

Features

  • Added ability to export swatch attribute values

1.0.46 (2017-02-14)

Improvements

  • Added dedicated cron group for feed generation to prevent conflicts with other cron jobs

Fixed

  • Fixed Plain filter not processing correctly

1.0.45 (2017-02-01)

Fixed

  • Fixed special character pipe (|) breaking filter values

1.0.44 (2017-01-20)

Improvements

  • Configurable product attributes now fall back to child product values when the parent returns empty

1.0.43 (2017-01-19)

Fixed

  • Fixed thumbnail images not displaying correctly in feeds

1.0.42 (2017-01-11)

Fixed

  • Fixed JSON encoding issue in feed output

1.0.41 (2017-01-10)

Features

  • Added ability to export all attributes at once using the CSV header XALL
  • Added json filter for gallery output: product.gallery | json

1.0.40 (2017-01-09)

Fixed

  • Fixed tax rate preview displaying incorrect values

1.0.39 (2017-01-06)

Improvements

  • Added lock mechanism to prevent parallel feed generation via CLI

1.0.38 (2017-01-06)

Fixed

  • Fixed category mapping edit page not loading

1.0.37 (2017-01-06)

Fixed

  • Fixed category mapping not saving correctly

1.0.36 (2017-01-03)

Fixed

  • Fixed nested category mapping not resolving correctly

1.0.35 (2017-01-03)

Features

  • Added ability to place category taxonomy files in pub/media/feed/mapping

Fixed

  • Added missing symfony/yaml dependency

1.0.33 (2016-12-21)

Fixed

  • Fixed category filter excluding simple products that are not visible individually in the catalog

1.0.32 (2016-12-15)

Improvements

  • Improved performance of the CSV feed edit page

1.0.31 (2016-12-14)

Fixed

  • Fixed current date calculation in feed output

1.0.30 (2016-12-09)

Improvements

  • Added Magento 2.2 compatibility

1.0.29 (2016-12-06)

Fixed

  • Fixed dynamic attribute pattern output

1.0.28 (2016-12-05)

Fixed

  • Fixed parent selector in dynamic attributes

1.0.27 (2016-11-11)

Fixed

  • Fixed filtering by Yes/No attributes

1.0.26 (2016-11-04)

Fixed

  • Fixed Status filter not working correctly

1.0.25 (2016-11-02)

Fixed

  • Fixed cron schedule configuration
  • Fixed SFTP feed delivery

1.0.24 (2016-10-21)

Fixed

  • Fixed compilation error

1.0.23 (2016-10-20)

Fixed

  • Fixed error when deleting dynamic attributes
  • Fixed filter by stock quantity not working

1.0.21 (2016-10-12)

Improvements

  • Standardized font-awesome assets across Mirasvit extensions

1.0.20 (2016-10-12)

Fixed

  • Fixed dynamic attributes not working correctly

1.0.19 (2016-10-07)

Fixed

  • Fixed incorrect image URLs in feeds
  • Fixed wrong product URL in multi-store configurations
  • Fixed product category selection to respect the current store

1.0.18 (2016-09-06)

Improvements

  • Category export now uses the deepest category level related to the product

Fixed

  • Fixed category mapping not resolving correctly

1.0.17 (2016-09-05)

Fixed

  • Fixed possible issue with the feed generation process

1.0.16 (2016-08-23)

Fixed

  • Fixed delivery button not working

1.0.15 (2016-08-23)

Fixed

  • Fixed possible issue with product filtration

1.0.14 (2016-07-18)

Fixed

  • Fixed reports not displaying correctly

1.0.13 (2016-06-24)

Improvements

  • Added Magento 2.1 compatibility

Fixed

  • Fixed validation of dynamic attribute rules

1.0.12 (2016-06-17)

Fixed

  • Fixed dynamic attribute values not being saved correctly

1.0.11 (2016-05-25)

Fixed

  • Fixed empty attribute value when attribute contains numeric data

1.0.10 (2016-05-25)

Features

  • Added autocomplete for category mapping
  • Added ability to use dynamic variables in % for % loops

Fixed

  • Fixed dynamic attribute conditions for multi-select attributes

1.0.9 (2016-04-11)

Fixed

  • Fixed admin menu navigation
  • Added ACL permissions for dynamic variables

1.0.8 (2016-04-07)

Features

  • Added Dynamic Variables — define custom PHP-based variables for use in feed templates
  • Added offset attribute for % for % loops

Fixed

  • Fixed root category appearing in category collection
  • Fixed the capture tag not working correctly

1.0.7 (2016-04-01)

Fixed

  • Fixed cross-browser AJAX request compatibility

1.0.6 (2016-04-01)

Features

  • Added capture tag for storing template output in variables
  • Added Dynamic Attributes — create computed product attributes using conditions
  • Added feed click/impression Reports
  • Added ability to export Related, Cross-Sell, and Up-Sell products

Improvements

  • Added ability to define specific product IDs for feed preview

Fixed

  • Fixed feed generation not including all products for feeds with over 100K products

1.0.5 (2016-03-14)

Features

  • Added mediaSecure and mediaUnsecure URL filters
  • Added product.tax_rate attribute for exporting tax rates
  • Added ability to export Related, Cross-Sell, and Up-Sell products

Improvements

  • Added cache-busting for export progress requests
  • Updated "Save" button behavior for Templates, Filters, and Category Mapping
  • Export all images with direct links (without CDN)
  • Feed history now auto-cleans records older than 3 days via cron

Fixed

  • Updated "Google Shopping" template
  • Fixed cron job scheduling issues

1.0.4 (2016-02-17)

Features

  • Added inclTax and exclTax filters for price attributes

Improvements

  • Improved cron-based feed generation with integration tests
  • Improved feed history for CLI and manual export

Fixed

  • Fixed broken link to Category Mapping in the admin menu
  • Fixed gallery images not working in % for % loops
  • Fixed price rounding when applying inclTax/exclTax filters
  • Fixed character trimming in % for % loops
  • Fixed liquid filters being removed when changing XML expressions
  • Fixed MySQL error on feed preview with empty catalog
  • Fixed incorrect tax calculation

1.0.3 (2016-02-08)

Features

  • Added secure and unsecure URL filters
  • Added prices including tax

1.0.2 (2016-02-07)

Features

  • Added date filter for formatting dates
  • Added product.associatedProducts for accessing associated products

Improvements

  • Improved XML syntax highlighting
  • Split product resolver by product type for better performance

Fixed

  • Fixed select/multiselect attribute values not being resolved to labels
  • Fixed incorrect loop length in liquid cycles