Changelog

Version 1.8.20

October 1, 2026

  • The AI chat panel in the Content Builder editor completes a request for the first time. Pressing Send — or, since 1.8.14, Plan sections — in the editor’s chat panel never finished: the loader sat there and the built page never reached the screen, even though the build had already been sent to the provider and billed for in full. The panel has behaved this way since it appeared in 1.3.0. Both buttons now complete normally, the result is applied to the page, and the reply appears in the panel. The build dialog on the CMS page form was never affected, which is why this went so long without being caught. If you tried the editor’s chat panel, got nothing back and went back to the page form, it is worth another try.

  • Attaching a design now asks what you want done with it. Attaching a screenshot in the chat panel used to leave you to work out for yourself that there were two ways forward. The panel now asks, and both answers are one click: Build it now, which is exactly the behaviour of the previous release, or Plan it with me first, which brings back the list of sections to approve before the build is paid for. When a build lands, the panel speaks first — how many sections it built, anything it could not place, and where the pictures on the page came from — and then refining by chat continues as before. Neither the question nor the summary costs anything: no extra call to the provider is made for either. Two long-standing annoyances in the same panel are fixed alongside: long notes now wrap instead of being clipped at the edge of the dock, and Send stays reachable on a laptop screen after a five-section plan rather than being pushed out of view.

  • Correction to the 1.8.14 release note: leaving Section-Plan Model empty did not use the model the build runs on. That note said it did. In fact the planning call went to the installation’s default model row, so a plan could be billed to a model nobody had chosen, and the cost sentence shown beside the button was priced against a third reading again. On one measured setup — default row claude-sonnet-5, the editor’s own build model gpt-4o-mini — the sentence said planning would add about $0.0002 and it added $0.0065, roughly thirty times the quoted increment. The field, the call and the sentence now all name the same model row. If you left Section-Plan Model empty on the strength of that note, your planning calls were going somewhere else until this release.

  • Pointing Section-Plan Model at different models in different store views now hides the cost sentence rather than quoting one of them. The panel has no page open when that sentence is written, so it cannot know which store view’s model it would be pricing. An installation that sets this setting once, or never, sees the sentence exactly as before.

Version 1.8.14

September 28, 2026

  • See which sections the builder intends to build — and edit that list — before a build is paid for. The Content Builder chat panel now has a Plan sections button beside Send. Attach a screenshot of the design, press it, and the list of sections comes back first: hero banner, three feature cards, quote strip, newsletter sign-up. Strike a line out and that section is genuinely absent from the page you get — on a four-section mockup, striking out the quote strip produced a three-section page with that band’s copy nowhere in it. Where the design could honestly be read two ways, the plan asks which reading you meant instead of guessing. Planning is optional: building straight away is unchanged, still one click, and the build itself is still a single call over the whole page rather than a section-by-section loop. Planning adds one small call in front of that build — on the same four-section mockup it answered in 4.4 seconds and cost $0.0039 on gpt-4o-mini.

  • The planning call can run on a cheaper model than the build. A new Section-Plan Model setting under Page Builder gives the planning call its own model row; leave it empty and it uses the same model the build runs on, so nothing changes until you set it. The planning call carries none of the component catalogue the build prompt needs, which is why a smaller model usually answers it just as well. The panel also shows what planning first adds to the cost before you choose it — read that as an estimate rather than a quote. It is counted from the size of the text sent, and some models charge for an attached screenshot at a near-fixed rate however short the prompt is, so on those the real difference is bigger than the figure shown: on gpt-4o-mini the measured difference was about 1.7× a plain build where the sentence showed about 1.1×.

Version 1.8.13

September 28, 2026

  • The page builder’s settings can now be set per website and per store view, and a build genuinely honours them. Everything under Page Builder and Page Builder: Generated Images — whether images are cut out of the reference screenshot and how many, which widgets the builder may place, whether pictures are generated at all, which image model draws them, its quality, the per-page limits on generated pictures and icons, the negotiated price per image and the timeout per image — used to be one value for the whole installation. Each of them now carries website and store view scope. Nothing changes for a merchant who sets nothing: a build reads the same installation-wide values it always did. Where a value is set per store, a build of a page that lives in exactly one store view reads that store’s values — so one store view can cap a page at two generated pictures while another allows seven, or draw with a different image model at its own negotiated rate. That holds on every route into a build: the admin build dialog, queued bulk builds, the command line and the MCP server. The estimate shown before a build and the figures written to the usage log are read from the same store, so the two cannot disagree. One boundary worth knowing: a page assigned to several store views, or to All Store Views, has no single store to resolve and reads the installation-wide values on purpose — quietly picking one of the assigned stores and spending that store’s image budget would be a surprise rather than a fix. Keep Unused Images For (days) also stays installation-wide, because the nightly cleanup sweeps every store in one pass.

Version 1.8.12

September 25, 2026

  • The MCP Server settings can now be set per website and per store view. Enabled and GraphQL Endpoint Override were previously a single value for the whole installation; both now carry website and store view scope, so one store can run the MCP server against its own GraphQL endpoint while another keeps it switched off. A value set that way is genuinely honoured at request time — a call made to a store’s own REST URL reads that store’s setting rather than the installation-wide one. Everything else in the Breeze AI configuration section stays installation-wide on purpose: those settings are read by background jobs and cleanup tasks that run across every store at once, so a per-store value would look like it applied and never be used.

Version 1.8.11

September 24, 2026

  • A billed call that failed is no longer invisible in the usage log. If a Claude reply ran out of its answer limit or came back unusable, the request had already been paid for in full — one measured case cost $0.028 for 844 tokens of output — but nothing showed up in the usage log to account for it, so total spend looked lower than it really was. Such a call is now logged and priced exactly like a successful one, so the log matches what you were actually charged.
  • Choose where a build’s images come from, per build, without touching store configuration. Both the page builder modal and the Content Builder chat panel now offer an Images choice — store default, extract from the source, use placeholders, or generate — that applies to that one build only; your store’s own settings are left untouched. Picking Generate with no image model configured tells you so the moment you choose it, before the build runs and before anything is billed.

Version 1.8.10

September 23, 2026

  • Builds on a current Claude model work again. Every build sent to claude-sonnet-5 — the Claude model used unless you pick another — and likewise to claude-opus-5 and claude-fable-5, ended with “The AI returned a page layout that is not valid JSON”, and the call was billed in full before it did: 844 tokens of a finished page document generated, paid for and thrown away on the last one measured. These models answer with their reasoning first and the page after it, and only the opening part of the answer was ever read. The whole answer is now read. Builds on the older 4.x Claude models were never affected. If you gave up on Claude builds because of this, they are worth another try.
  • Claude builds are given four times the room to answer. The output limit a model starts with rose from 4096 to 16384 tokens. A build from a screenshot was reaching the old limit every single time and being cut off part-way through the page; the same build now finishes, at 8196 tokens. A limit is a ceiling and not a charge — you pay for what the model writes — so the extra room costs nothing on a build that does not need it. The builds it unblocks do take longer: that screenshot build went from around 47 seconds to around 88. If your store holds requests to a shorter deadline, the Timeout field on the model is where to give it more.
  • Repeat builds on OpenAI now cost what the usage log says they cost. OpenAI has been discounting the unchanged part of a build prompt by itself, with nothing on our side aware of it — measured at 96.3% of the prompt served from its cache on a second identical build — so the log was over-stating every repeat build by about a third. Nothing has become cheaper here; the figures have become true.
  • Repeat builds on Claude are genuinely cheaper. Claude caches only when it is asked to, and this release asks. On a second build 7753 tokens of the prompt — 99.3% of the input — came back from the cache. Filling the cache carries a one-off premium of about 25% on the first build’s input and each later build reads it back at about 90% less, so the pair has paid for itself by the second build. A single build run on its own is slightly more expensive than it was. What is cached is the component catalogue, the widget list and the build rules; your page and your brief are the parts that change and sit outside it. Building from a screenshot follows the same rule — refining the same screenshot reads from the cache, uploading a different one fills it again and pays the premium again.
  • Gemini gets none of this. Its caching is automatic and not something a request can ask for, and two identical calls reported nothing served from cache, so there is no saving to claim on it in this release.
  • A Claude reply with no usable text in it now names the actual cause. Whether the model spent its entire output limit before writing an answer or declined the request outright, the message says so, instead of reporting an unreadable reply and sending you off to rewrite a brief that was never the problem.

Version 1.8.9

September 22, 2026

  • Follow-up messages in the Content Builder AI chat panel are now cheaper and faster. Every message used to resend every page the panel had built earlier in that conversation, so a long chat grew heavier with each turn, cost more per message and eventually risked being refused as too large. The provider is now sent only the page as it stands on screen, with the earlier ones replaced by a one-line note of what they were. The chat still remembers what was said, so “make the hero shorter” works exactly as before.
  • Fixed: a chat that began with a screenshot and no typed message failed on every message after the first. The first request worked, the second and all that followed came back as a generic error, and the only way out was to reload the page builder and start the conversation over. Such conversations now continue normally. If you gave up on the chat panel because of this, it is worth another try — start with a screenshot and keep typing.

Version 1.8.8

September 21, 2026

  • If you pressed AI Generate on a Map component’s Title field in 1.8.6 or 1.8.7, rotate your Google Maps API key. Generating text into one field also sent that component’s other text fields to your configured AI provider as context, so the new text would fit what the component already said. The Map component’s Google API Key is stored in a field of that kind, so pressing Generate on a Map’s Title sent the key to the provider inside the request — with nothing on screen to say so. Only the Map component holds a credential in such a field, and only the 1.8.6 and 1.8.7 releases behaved this way; 1.8.8 sends genuine copy and nothing else. If that was you, treat the key as exposed and issue a replacement in the Google Cloud console.
  • The AI Generate button now appears only on fields that hold copy. In 1.8.6 it was offered on every single-line text field in the property panel, which in Content Builder also covers CSS Class, Min Height, Max Width, Latitude, Longitude, SKUs and the Google API Key — fields where a written sentence is not a useful value. It now appears on Title, Heading, Headline, Subtext, Text, Button Text, Caption and Alt Text, plus every rich-text field. Buttons you saw on the other rows in 1.8.6 are deliberately gone — that is this fix, not a regression.
  • A correction to the 1.8.6 note below, which said each text, textarea and rich-text field would carry a button: Content Builder declares no textarea fields at all, and “every text field” turned out to include the plumbing fields listed above rather than only the ones you would want written for you.

Version 1.8.7

September 18, 2026

  • The AI Generate button on Content Builder fields needs Content Builder 1.2.3 or newer, and the package now says so. On an older Content Builder the buttons simply never appear — the field rows it draws do not announce themselves, so there is nothing for Breeze AI to attach to, and nothing warned you about it. Upgrade Content Builder to 1.2.3 if the buttons are missing after installing 1.8.6 or later.

Version 1.8.6

September 18, 2026

  • Every text field in the Content Builder property panel now has its own AI Generate button. Writing a single headline, a subheadline or a button label meant either describing the whole page to the chat panel or typing it yourself; each text, textarea and rich-text field now carries a button that writes just that one value. The request knows which component the field belongs to and what the component’s other text already says, so a subheadline is written to follow the headline above it rather than in isolation.
  • The generated text replaces the field’s contents directly — there is no preview step, and an unwanted result is undone with Ctrl+Z like any other edit. A provider that answers with nothing leaves the field as it was.
  • The button is shown only where it can actually work: Breeze AI enabled, at least one AI model enabled, and the admin user holding the generate permission. It needs a CMS page open in the editor and says so plainly if there is not one.
  • On upgrade: this release adds a new class and new admin assets, so an install running in production mode needs bin/magento setup:di:compile and bin/magento setup:static-content:deploy before the buttons appear.

Version 1.8.5

September 17, 2026

  • Icons in your reference design are now picked up by the build. A screenshot showing a row of feature cards with a small glyph on each came back with the glyphs missing and nothing in the build note to explain it: the model treated a small icon as decoration and never reported where it was. It is now told that every icon the design shows is expected, and that size is never a reason to skip one. A page built from a design with icons comes back with them in place. An icon cut from a small screenshot can land slightly off-centre — send a reference at least 1600 px wide for the cleanest result.

Version 1.8.4

September 17, 2026

  • A small icon in your reference design is now used instead of being thrown away. When a build found an icon in the screenshot but the screenshot held too few pixels for it, the icon was refused and the card came out with nothing on it — and the build note claimed your theme had supplied its own icon instead, which never happened. The crop is now kept and placed, soft if the reference was small, and the note tells you which images came in under size and what resolution would fix it. Send a reference at least 1600 px wide and they come in sharp.
  • Every build now says where its pictures came from. A build that worked said nothing at all about its images, so there was no way to tell a page whose photos were taken from your design from one where they were drawn, skipped, or left as placeholders. The build note now opens with that count, and each section says which of its images were cut from the reference.

Version 1.8.3

September 15, 2026

  • A page built from a screenshot now keeps the design’s own words. The build used to write its own headlines and section titles, so a reproduction came back saying something the design never said. The wording in your reference is now the wording on the page; a brief that asks for new copy still overrides it, as before.
  • Buttons that lead nowhere are no longer added. A build would invent a call to action — Shop the offer, Explore new arrivals — with nothing behind it, and the band it sat on became one large dead link. A label with no real destination is now dropped, and the build note says why. A link to a section of the same page still counts as a destination and is kept.
  • Banners keep your theme’s colours. Every banner an AI build produced landed on a near-black band with white text, whatever your theme looks like, because a colour the model deliberately left for the theme to decide was being filled in with the editor’s own default. Colours the build does not choose are now left unset, and your theme decides them. Adding a banner by hand in the editor is unchanged — it still comes with a usable look out of the box.
  • The Image Generation Model list now accounts for the models it does not offer. A credential that cannot draw pictures used to be absent from the list with no explanation anywhere. Each one is now named beneath the field with the reason — its provider draws no images, it reads as a text credential, or the row is switched off — and links to its own edit form. When nothing at all can be selected, the field says so and why, instead of showing an empty dropdown.
  • On upgrade: this release adds a new class and changes a constructor, so an install running in production mode needs bin/magento setup:di:compile before the new explanation appears under the field.

Version 1.8.2

September 15, 2026

  • A build reply the AI provider mangles no longer costs you the whole page. A malformed answer ended the build with “The AI returned a page layout that is not valid JSON: Syntax error” and nothing was kept, even when the provider had written most of the page correctly before going wrong. The readable part is now salvaged and built, and the build note says what could not be read.
  • A reply cut short at the model’s output limit is now named as one. Previously it arrived with the same wording as a badly written reply, though the two want opposite answers from you — a larger output limit in one case, a retry in the other.
  • A build that is going to be refused no longer draws pictures first. If nothing usable survives the salvage, the build stops before any image is generated, so a failed page cannot bill you for artwork it will never show.
  • The provider’s reply is now recorded in the log when it cannot be read, so a report of this can be answered from the evidence rather than from a reproduction.

Version 1.8.1

September 14, 2026

  • A run that recorded no work is no longer invisible in AI Jobs. The grid used to list a build only once it had written at least one operation, so a build that failed before that point left no row at all — nothing to inspect, and nothing to clear away. Such a run is now listed, with its status shown as Not Recorded.
  • Those runs offer Remove instead of Cancel. There is nothing still running to cancel, so the grid no longer offers it; Remove asks for confirmation and then deletes the leftover row. It is withheld from any run that did record work — those are still cancelled the usual way.
  • Bulk operations that Magento schedules in the background on its own — saving a store-scoped attribute, for instance — are kept out of AI Jobs rather than listed among your builds.

Version 1.8.0

September 11, 2026

  • Generated images are now on out of the box. A store with no image credential is not broken by this: the build falls back to taking pictures out of your design exactly as before, and the build note says so instead of failing.
  • The image credential is now a Breeze AI model, kept in the same grid as your text models rather than in a single configuration field. Your existing Image API Key is moved into a model row for you during the upgrade, and the old settings are left untouched. Disabling or deleting that row is how you tell a build to stop using the key.
  • The build cost estimate now states what it is based on — the provider, the quality tier it will be billed at, and both per-page limits — so the figure on the build button can be checked against the invoice rather than taken on faith.
  • Setting Maximum Generated Pictures Per Page and Maximum Generated Icons Per Page both to zero is now treated as switching generation off: no build notes, no log lines about a key that was never going to be reached.
  • On upgrade: image generation switches itself on for every store. If you do not want it, turn off Generate Images (Stores > Configuration > Breeze AI > Page Builder: Generated Images) or set both per-page limits to zero after updating.

Version 1.7.3

September 11, 2026

  • A hero whose photograph runs the full width of a band is now placed behind the row as its background, instead of being cropped to a rectangle that clipped the design’s own headline. Whether a band counts as full-bleed is decided from the band’s own pixels rather than from its outline, so a hero sitting inside a card is still cropped to the card.
  • Icons and band backgrounds are now drawn rather than cut out. The crop taken from your design becomes the reference handed to the image model, so a 32-pixel icon lifted from a phone-width screenshot no longer arrives blurred. Photographs are still taken from the design itself, which is exact and costs nothing.
  • That drawing needs Generate Images (Stores > Configuration > Breeze AI > Page Builder: Generated Images), which is off by default and has its own API key. Two separate limits govern what one build may spend: Maximum Generated Pictures Per Page and Maximum Generated Icons Per Page, so icons can no longer use up a hero’s budget.
  • AI Jobs grid: a run whose operations were never given a status used to show an empty Status. It now reads Unknown, and the Stoppable column says how much of it a Cancel would still close.

Version 1.7.2

September 9, 2026

  • The MCP endpoint now negotiates protocol revision 2025-06-18 and still accepts 2025-03-26, and it checks the Mcp-Protocol-Version header instead of ignoring it. A client asking for a revision we do not serve is refused in a reply it can still read, rather than being answered as though the version matched.
  • Fixed Cancel leaving part of a stuck run behind: an operation the queue could still deliver was skipped, so the run came back to life after the merchant had stopped it. Cancel now closes every operation the queue can act on.

Version 1.7.1

September 8, 2026

  • Enabled = No now switches the module off in the admin as well. It used to stop only the AI buttons and the chat panel from being added to the product, category and CMS forms — Swissup > Breeze AI stayed in the menu, and the bulk wizard could still be opened and run. The menu entry is now hidden while the module is off, and its pages refuse to open and send you to the setting with a message saying why.
  • A bulk run already waiting in the queue when the module is switched off no longer goes on writing generated text over the catalogue. Each of its operations now ends with a message naming the reason, so the run finishes instead of hanging in progress — it does not resume by itself, so schedule it again once the module is back on.
  • AI Run History stays open while the module is off, restoring included: a run that overwrote something can still be undone after switching Breeze AI off, which is usually the very reason it was switched off. Its menu entry is hidden with the rest, so reach it from the link in the message on the closed pages or from a bookmark; the Value Backup setting still applies, and with that off a restore refuses as before.
  • The removal instructions no longer ask you to strip the Swissup_BreezeAi::* permissions from admin roles to hide the module — the setting does that now. Removing the permissions is still how to hide Breeze AI from one role while leaving it available to others.
  • Upgrade caution: the MCP endpoint at /rest/V1/breezeai/mcp now answers 404 whenever Enabled is No, where before it served requests on its own switch alone. If you use MCP against an installation with Breeze AI otherwise switched off, set Enabled to Yes — the MCP switch now only narrows what that one already allows.

Version 1.7.0

September 7, 2026

  • Added Cancel to the AI Jobs grid, per row and as a mass action, plus bin/magento breezeai:bulk:cancel. A run that is stuck or was queued by mistake can now be stopped: everything the queue could still run is rejected, so the run leaves “In Progress” at once. An operation already running cannot be interrupted mid-request — it finishes and reports its own outcome — but the queue behind it stops.
  • A queue consumer killed by the hosting (timeout -s 9, an out-of-memory kill, a deploy) runs no error handler, so the operation it was working on used to stay open and its run read as in progress with nothing behind it. Cron now finalises such operations every ten minutes — see Stores > Configuration > Breeze AI: Declare an Operation Interrupted After (minutes), 120 by default. bin/magento breezeai:bulk:sweep does the same on demand.
  • Added a timeout to every text call to OpenAI, Claude and Gemini, which previously had none at all: a provider that stopped answering held the bulk queue until the process was killed from outside. The default is under Stores > Configuration > Breeze AI, and each model can set its own under Swissup > Breeze AI > AI Models, which is the better place to tune it.
  • An operation now always ends with a status, whatever went wrong inside it. A TypeError or a similar fatal used to pass the error handling by, leaving the operation open and its run hanging forever.
  • Upgrade note: runs scheduled by an earlier version recorded an operation only once it finished, so a run interrupted under 1.6.x has no operation rows for the cancel or the sweep to act on. Both apply to runs scheduled from 1.7.0 on.

Version 1.6.1

September 4, 2026

  • Fixed rows getting a background image nobody asked for — a crop of the whole band, the design’s own headline included, sitting behind the real content. A background is now filled only where the design has one.
  • Fixed pictures further down a page coming back as placeholders. The image budget was spent top to bottom, so icons and unwanted backgrounds used it up before the photographs; the biggest pictures are now taken first, and a rejected crop hands its slot to the next candidate.
  • A build that had to fill a band with a text block now names the widget that could have covered it, so it is clear what to tick under Widgets The Builder May Place.
  • Fixed the Content Builder chat panel missing when the editor is opened from the admin menu instead of a CMS page’s Open in Content Builder button. Build refusals and failures are now written to the log.

Version 1.6.0

September 2, 2026

  • Added generated images for the case where the reference is a wireframe and the picture is only a grey box. Extracting images from a real design still comes first and is always tried before this.
  • Generation is off by default and needs its own API key — one picture costs more than the whole page’s text. Capped at three images per page, and only ever a section’s main image, never icons. See Stores > Configuration > Breeze AI > Page Builder: Generated Images.

Version 1.5.1

September 2, 2026

  • Fixed generated pages failing outright when widgets were enabled in 1.5.0: the AI named a widget by its PHP class, whose backslashes cannot survive the build’s reply, so one widget broke the whole page. Widgets are now named by their widget code — anyone who enabled widgets in 1.5.0 should update.

Version 1.5.0

September 1, 2026

  • A page built from a screenshot now takes its images from that screenshot, instead of every image coming back as a dummyimage.com box. A wireframe’s grey box keeps the placeholder, and the build reports which images still need a hand.
  • Image extraction is on by default, capped at 8 images per page, with unused crops removed after 30 days — see Stores > Configuration > Breeze AI > Page Builder. Requires GD with WebP support; without it a build behaves as before.
  • Added the ability for the AI to place Magento widgets on a generated page. Widgets are chosen per installation under Widgets The Builder May Place, and nothing changes until at least one is ticked.
  • Widgets whose value has to be picked by hand — a CMS block, a banner, catalogue conditions — are not offered. A wrongly named widget or parameter is repaired and reported, not shipped broken.
  • Added a complete removal path: module:uninstall Swissup_BreezeAi --remove-data now takes the module’s tables, its configuration and the images it extracted. Leave off --remove-data to keep images that generated pages point at — see docs/UNINSTALL.md.
  • Fixed AI action buttons squeezing the field they sit beside, introduced in 1.3.0. Affects store-scoped Text Field and Text Area attributes.

Version 1.4.0

August 28, 2026

  • Added AI Run History to the Breeze AI menu: every run that replaced something is listed with who started it, the model it used, and what it touched.
  • Values an AI run overwrote can now be put back — one field, one product, the rows ticked in the grid, or the whole run. A restore is queued like the run and can itself be undone.
  • Restoring is a separate permission from starting a run: grant Restore Overwritten Values to the roles that should hold it. Runs made before 1.3.0 cannot be restored.
  • Added a usage log in var/log/breezeai_usage.log — one line per request with the model, tokens in and out, duration, cost in US dollars, and the bulk run it belonged to.
  • Prices are built in for the OpenAI, Claude and Gemini models the module lists. For a custom model, a proxy or a negotiated rate, set Input / Output Price per 1M Tokens on the model row; a model with no known price is logged without a cost.
  • Fixed the OpenAI error message advising a client version that cannot be installed on PHP 8.1.
  • Requires PHP 8.1 or later. Earlier versions claimed to support PHP 7.4 and 8.0, but the OpenAI client has never worked below 8.1, so no working installation is affected.

Version 1.3.0

August 26, 2026

  • Added an AI chat panel to the Breeze Content Builder editor: ask for a change and it is applied to the page on screen. Nothing is stored until the page is saved. Requires Breeze Content Builder 1.1.0 or later.
  • Added a backup of every value the AI overwrites — enabled by default, keeping 5 versions of each field for 90 days, under Stores > Configuration > Breeze AI > Backup. Restoring from the admin arrived in 1.4.0.
  • Added a report of what the validator repaired in a generated page, shown on the CMS page form instead of in the system log only.
  • Fixed a reference screenshot producing fewer sections than the design shows.
  • Fixed generated pages losing content to the validator: list values are kept, a single keyed entry is no longer flattened away, and a generated FAQ keeps every question paired with its answer.
  • Fixed authoring placeholder text leaking into generated copy.
  • Fixed the catalog prompt presenting “spacing” as a component property that does not exist.
  • Fixed the Gemini model list offering models Google no longer serves. A retired model is reported as retired, and the API key is removed from provider error messages.
  • Fixed AI action buttons overlapping the field value on the product and category forms, hiding long values.
  • Adds two new tables — run bin/magento setup:upgrade after updating.

Version 1.2.0

August 18, 2026

  • Added Build from screenshot to the CMS page form, in the Content Builder fieldset. Attach a screenshot of a design, optionally add a text brief, pick the model, and the page’s Content Builder draft is written from the components the store actually has installed — the sections are reproduced top to bottom, the reference’s own copy is not transcribed, and its brand colours are ignored so the store’s theme decides how the page looks. Nothing is published until it is published by hand.
  • The model has to accept images. A text-only model is refused inside Magento with a message naming it, instead of failing as a provider error. Image support is set per model by the Image Input field on the model row.
  • The screenshot travels inside the form field, so a large one needs nginx client_max_body_size and PHP post_max_size raised — Magento’s own nginx.conf.sample leaves the nginx limit at 1M. When the limit is hit, the message names both directives instead of failing silently.
  • build_page is now listed among the tools the MCP server exposes.

Version 1.1.2

August 17, 2026

  • Fixed a bulk run processing far more entities than were selected. Filtering a grid down and ticking the remaining rows was indistinguishable from pressing Select All, and a select-all run then ignored the grid’s filters entirely — one client selected a single product and the wizard queued all 714. The wizard now posts the selection the same way Magento’s own mass actions do, so a run covers exactly what the grid was showing.

Version 1.1.1

August 14, 2026

  • Added image support to the AI models: a request can now carry images, encoded for whichever provider it is routed to. JPEG, PNG, GIF and WebP are accepted, up to 5 MB each and 10 per request. Whether a model reads images at all is decided by the new Image Input field on the model row, so an image sent to a text-only model is refused with a clear message rather than a provider error.
  • Fixed a temperature of 0 being dropped and treated as “not set”.
  • Fixed the model form offering values that did not match the options the module actually supports.

Version 1.1.0

August 10, 2026

  • Added landing page building to the AI Bulk Action wizard, so a Content Builder page can be composed from the admin without using the chat.
  • Added a model and a free-text brief per bulk run, and pinned both to it. Previously a run used whatever the configuration said at the moment each operation was picked up, with no way to steer the model or to say what kind of writing was wanted. The brief reaches the model as framing, ahead of the content, rather than being mixed into the product text.
  • Fixed GPT-5 and o-series models failing every call on the OpenAI provider. Requests carried the GPT-4 parameter set, which those models reject outright — they did not produce worse output, they returned an error every time.
  • Fixed the three providers disagreeing about a caller’s own system message: Claude and Gemini read it, dropped it and sent their own instruction anyway, so the same prompt meant different things depending on which model it was assigned to.
  • Fixed CMS page translations being written into a category, and category translation not naming the source language.
  • Fixed the bulk wizard offering tasks it could not run — a task whose field panel is empty, or a task the queue cannot perform on the chosen entity type, are no longer offered.
  • Fixed a generated page draft being filed under the wrong admin user.

Version 1.0.13

August 5, 2026

  • Fixed the MCP graphql tool accepting mutations. The tool is documented as read-only catalog access, but the query was forwarded to the storefront GraphQL endpoint verbatim and without an auth header, so it ran in guest scope — where Magento accepts createEmptyCart, addProductsToCart, setGuestEmail and the rest of the guest cart surface. The tool now reads the operation type from the definition position of the document and rejects anything but query and fragment definitions, so mutations and subscriptions never leave the server. Any agent that relied on writing through this tool must use POST /V1/breezeai/* or the storefront endpoint directly.

Version 1.0.12

August 5, 2026

  • Added a build_page skill that composes a Breeze Content Builder page from a text brief, using only the components the store actually has installed. Reachable through POST /V1/breezeai/generate (skill=build_page, entityType=cms_page), the MCP server, and the CLI. It returns the document together with a list of warnings and saves nothing — the caller decides whether to store the draft through the Content Builder’s own save endpoint. The Content Builder is not a requirement: with no components installed the catalog is empty and the skill says so.
  • Model output is validated against the same component catalog the prompt was built from, and repaired instead of rejected: unknown components and props are dropped, select values outside their option list snap to the default, numbers are clamped to min/max, missing props are filled from defaults, and containers are padded or truncated to their real slot count. Every repair is reported in warnings, so it is clear why a page differs from the brief.

Version 1.0.11

July 30, 2026

  • Improved bulk translation quality: the AI is now told both the source and target language (“translate from X to Y”) and instructed to translate every word, so translating between two non-English languages (e.g. Danish → German) no longer leaves words in the source language.

Version 1.0.10

July 28, 2026

  • Fixed bulk translation of media gallery labels overwriting the source store view’s custom option titles. Media labels and video metadata are now written directly to the selected Target Store View without a full product save.

Version 1.0.9

July 23, 2026

  • Fixed bulk translation of product custom option titles leaking into the default store scope instead of being saved strictly into the selected Target Store View.

Version 1.0.7

July 17, 2026

  • Added MCP server endpoint POST /rest/V1/breezeai/mcp (JSON-RPC 2.0) with generate, translate, list_prompts, and graphql tools. Can be disabled in configuration.
  • Fixed bulk category translation saving values into the current store scope instead of the selected Target Store View.
  • Fixed cross-page “Select All X Records” detection in bulk grids.

Version 1.0.5

July 8, 2026

  • Added SKU column with filter to the bulk actions product grid.

Version 1.0.4

June 26, 2026

  • Fixed customizable option titles being translated into the wrong store view.
  • Added Select All checkbox for the translate fields list.
  • Fixed the “* Store-scoped custom attribute” note showing when no such fields exist.

Version 1.0.3

June 25, 2026

  • Added bulk translation of customizable option titles and value titles.
  • Added bulk translation of image labels, gallery labels, and video metadata.
  • Added All Store Views target support; url_key excluded from auto-translation.

Version 1.0.2

June 23, 2026

  • Initial release: AI content generation and translation for products and categories, bulk actions, prompts and model configuration. OpenAI, Claude, and Gemini providers.
Edit this Page