Latest Releases
These releases come straight from our repositories. Latest releases may not be published yet.
swissup / argento-hyva
1.3.6 Julswissup / argento-breeze
3.1.0 Jul-
3.1.0
Report (rev.1)
Package was generated and uploaded to GitHub on with the following dependencies:
swissup/module-ajaxpro:1.7.36
swissup/module-ajaxsearch:1.14.10
swissup/module-amp:1.6.0
swissup/module-askit:1.14.24
swissup/module-attributepages:1.8.6
swissup/module-breeze-ai:1.0.7
swissup/module-breeze-content-builder-migration:1.0.1
swissup/module-breeze-layout-builder:1.0.0
swissup/module-chat-gpt-assistant:1.1.4
swissup/module-compare:1.2.8
swissup/module-easy-slide:1.8.18
swissup/module-easybanner:1.9.24
swissup/module-easycatalogimg:1.5.14
swissup/module-easytabs:1.13.4
swissup/module-fblike:1.3.9
swissup/module-featured-attributes:1.1.9
swissup/module-gdpr:1.9.1
swissup/module-gdpr-askit:1.1.3
swissup/module-gdpr-reviewreminder:1.0.0
swissup/module-gdpr-testimonials:1.1.1
swissup/module-highlight:1.11.9
swissup/module-hover-gallery:1.3.15
swissup/module-hreflang:1.6.12
swissup/module-hreflang-import-export:1.0.1
swissup/module-navigationpro:1.18.0
swissup/module-pagespeed:1.18.0
swissup/module-pro-labels:1.10.0
swissup/module-pro-labels-configurable-product:1.0.9
swissup/module-quantity-switcher:1.2.2
swissup/module-reviewreminder:1.1.19
swissup/module-rich-snippets:1.8.4
swissup/module-seo-canonical:1.11.10
swissup/module-seo-core:1.3.10
swissup/module-seo-cross-links:1.1.26
swissup/module-seo-html-sitemap:1.1.23
swissup/module-seo-images:1.3.21
swissup/module-seo-pager:1.4.0
swissup/module-seo-templates:1.7.12
swissup/module-seo-urls:1.5.55
swissup/module-seo-xml-sitemap:1.2.0
swissup/module-sold-together:1.11.4
swissup/module-sold-together-email:1.0.0
swissup/module-sold-together-import-export:1.0.2
swissup/module-testimonials:1.4.0
swissup/module-theme-editor-argentobreeze-business:1.0.2
swissup/module-theme-editor-argentobreeze-chic:1.0.3
swissup/module-theme-editor-argentobreeze-force:1.1.1
swissup/module-theme-editor-argentobreeze-stripes:1.1.2
swissup/theme-frontend-argentobreeze-blank:3.1.0
swissup/theme-frontend-argentobreeze-business:3.0.1
swissup/theme-frontend-argentobreeze-chic:3.0.0
swissup/theme-frontend-argentobreeze-force:3.0.0
swissup/theme-frontend-argentobreeze-stripes:3.1.0
swissup/module-core:1.12.27
swissup/module-suggestpage:1.2.14
swissup/module-breeze-content-builder:1.0.6
swissup/module-image-optimizer:1.0.12
swissup/module-theme-editor:1.12.0
Changelog (autogenerated)
swissup/module-ajaxpro — 1.7.36 (was 1.7.34)
-
Version 1.7.36 82272a
-
test: config options and type-source coverage
Covers the options x settings surface at the logic level:
- Helper\Config: master switch (every feature off when
ajaxpro/main/enabled is 0), the override-minicart handle whitelist
(allowed only for minicart / shopping-cart handles, matching the
system.xml depends), standalone flags that ignore the master switch,
and type casts.
- Source\Handle / Source\Type: lock the popup handle and cart type
enumerations referenced by name across system.xml, layout and config.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 8f91cf -
test: popup gating matrix across component flavors and popup types
Runs the gating scenarios (popup after add-to-cart, silence on stale
re-fetch, redirect flow) for every combination of component flavor
(luma uiComponent / breeze view) and cartHandle popup type (minicart,
shopping cart, suggest page), plus the simple-popup messages gate and
closeTimeout config variations (disabled, countdown with continue
button, reset on user activity).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> ef33d0 -
test: integration coverage of the popup gating chain
Covers section update -> _subscribe -> ModalManager.checkAndShow end
to end: popup after add-to-cart post, popup after redirect-based add
to cart, silence on stale section re-fetch (the bsxl scenario), no
reopen after the popup was shown. This chain is the only protection
on both stacks since disposableCustomerData was dropped (#54).
Refs #54
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 4f7514 -
refactor: drop disposableCustomerData, unify luma and breeze strategy
Luma applied the disposableCustomerData extender to ajaxpro sections
(wiping them from storage and section_data_ids cookie after use) while
Breeze had it commented out — the divergence made stale-section bugs
Breeze-only and the behavior hard to reason about.
Since 048361e the popup opens only within 30s after a real add-to-cart
post (is-ajaxpro-request marker), so a stale re-fetch on page load can
not trigger it on either stack. Ajaxpro sections now persist like any
other customer-data section on both frontends.
Verified on luma storefront: popup on add to cart, section persists,
stale section re-fetch on navigation stays silent.
Closes #54
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> b0a6dd -
refactor: replace PostHelper preference with a before plugin
The preference on Magento\Framework\Data\Helper\PostHelper replaced
the core class entirely and conflicted silently with other modules
customizing the same helper. A before plugin composes instead.
before (not after/around): the decision "caller did not pass uenc
explicitly" is only visible in the original arguments, and no result
re-serialization is needed. Semantics are identical to the old
override: inside an ajax request reuse the real page uenc from the
request parameters.
Old helper class kept as @deprecated for code extending it.
Closes #55
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 4f0ca4 -
chore: strict_types in all php files, drop dead code
- declare(strict_types=1) in every php file (project standard);
verified with php -l, unit tests and storefront smoke run
- remove commented-out debug/dead blocks (md5 debug, unused methods,
disabled section actions)
- drop stale deprecated setup_version from module.xml (no Setup/ dir)
Refs #53
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> a46452 -
test: cover event handling hygiene fixes (issue #52)
Refs #52
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> bf5db7 -
fix: event handling hygiene in frontend js
- Namespace click handlers (.off('click.ajaxpro')) in floating cart
and minicart override: bare .off() also removed handlers attached
by other modules.
- Cap modal-manager register() polling at 10s and register anyway:
on pages with permanent ajax activity $.active never reaches 0 and
the interval lived forever.
- Dispose customer-data subscriptions on destroy (ajaxpro.js,
compare.js) to avoid duplicate handlers after component re-init.
- Fix dead fallback typo: form.prop('prop') -> form.prop('action').
Closes #52
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 635251 -
test: cover modal auto-close timer (issue #51)
Refs #51
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> e53aaf -
fix: modal auto-close timer throws instead of closing the modal
setTimeout received this.closeModal unbound, so the closeTimeout
feature fired with `this` pointing at window and threw a TypeError.
Same defect in luma and breeze variants.
Closes #51
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> d4fe2b -
test: cover ajax notice message suppression (issue #49)
Adds phpunit setup (mirrors module-breeze-theme-editor) and wires
bin/test unit.
Refs #49
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 67257d -
test: cover section reload once-guard (issue #50)
Refs #50
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> ceb693 -
fix: infinite section reload loop on website/store mismatch
Minicart and floating cart views reloaded cart sections whenever the
cart section website_id/storeId diverged from window.checkout. When
the quote really belongs to another website/store (same-domain
multi-store), reloading can never fix the mismatch, and since the
Breeze view re-creates on every contentUpdated, the check re-fired
after each reload — an endless cart/ajaxpro-cart request stream.
Reload at most once per page load and guard undefined website_id in
the floating cart (undefined !== websiteId used to trigger it too).
Closes #50
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 84dcbd -
fix: notice messages silently dropped on every ajax request
isMessageToIgnore() compared strpos() result with 1 instead of false,
so it returned true for nearly any message and addNoticeMessage()
discarded all ajax notices — not only the two "choose options"
messages it was meant to suppress.
Closes #49
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 79940e -
Version 1.7.35 148d35
-
test: add jest suite for is-ajaxpro-request
Setup mirrors module-breeze-theme-editor: jsdom, AMD transform,
Magento_Customer mocks. Run with bin/test [jest].
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> e6ff4c -
fix: popup opening on page load when ajaxpro sections expire
Any GET customer/section/load with ajaxpro-product in sections was
treated as an add-to-cart request. Expired ajaxpro sections (logged-in
customer, out-of-sync section_data_ids cookie) are re-fetched on every
page load, so the cart popup opened on plain category navigation.
Trust the section load only within 30s after a real ajaxpro POST.
Marker lives in sessionStorage: survives redirect-based add to cart,
per-tab, cleared once the popup is shown.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 048361
swissup/module-askit — 1.14.24 (was 1.14.23)
-
Version 1.14.24 3b54b7
-
test: drop addMethods() for PHPUnit 12 compatibility
PHPUnit 12 removed MockBuilder::addMethods(). CaptchaTest used it to
mock getControllerAction() on the Observer mock, but that is a magic
DataObject getter, not a declared method.
Replace the two mocks with a real Observer created with the data set
(`new Observer(['controller_action' => $controller])`) so the magic
getter returns the controller. Tests pass on both PHPUnit 9.6 (current
CI) and PHPUnit 12.5.
Refs swissup/module-askit#67
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 8412ad -
Fixed php 8.4 error: Cannot unset property $totalCount because it might have hooks in a subclass a679be
-
Use the frontend URL builder directly in blocks (BCB preview fix) 82af94
swissup/module-attributepages — 1.8.6 (was 1.8.5)
-
Added ability to move description to bottom:
```
<referenceBlock name="attributepage.attribute.view">
<arguments>
<argument name="is_description_at_bottom" xsi:type="boolean">true</argument>
</arguments>
</referenceBlock>
``` f46297
swissup/module-breeze-ai — 1.0.7 (was )
-
Version 1.0.7 61c0a2
-
fix(bulk): save category values in target store scope, not current store d01e4d
-
test(bulk): integration repro for category translate store scope bug 6ad2e6
-
feat(mcp): config flag to disable MCP endpoint
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> e3deb3 -
fix(bulk): use excludeMode() to detect cross-page Select All
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> c13907 -
test(mcp): unit and integration tests for MCP endpoint
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 862703 -
docs(plan): add MCP server plan
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> a2adce -
feat(mcp): MCP server endpoint with generate, translate, list_prompts and graphql tools
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 5befa0 -
Version 1.0.5 3cbcd3
-
feat(bulk): add SKU column with filter to the product grid
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 56d536 -
Version 1.0.4 d832eb
-
fix(translate): emulate target store when saving custom option titles
ProductCustomOptionRepository::save() re-fetches the product by SKU without a
store, so the option store_id is derived from Product::getStoreId(), which falls
back to the current store. In the bulk queue consumer that is the default store,
so translated option/value titles were written to the wrong store and the target
store kept showing defaults. Emulate the target store around the save so titles
persist on the intended store view.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 5b9941 -
fix(bulk): show the "* Store-scoped custom attribute" note only when a * field exists
Excluding url_key left installs with no dynamic attributes showing an orphaned
legend. Render the note only when at least one translate field is dynamic.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> e1e3cf -
fix(bulk): add Select All for translate fields and real space between checkbox and label
Magento's admin__control-checkbox hides the native input and draws the box via a
label pseudo-element, so the flex gap added no visible spacing. Switch the
translate field checkboxes to native inputs (visible, flex gap = real space) and
add a "Select All" checkbox that toggles every field in the panel.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> efd64b -
Version 1.0.3 ae74dd
-
fix(translate): support All Store Views target and exclude url_key from auto-translate
- Bulk translate to "All Store Views" (target_store_id=0) previously threw in the
Translate skill (it requires a specific store) and would have written media/option
titles to the default store. BulkConsumer now expands target 0 to every store view
except the source, for products and categories alike.
- url_key is excluded from dynamic attribute discovery: it is saved raw via
updateAttributes() with no sanitization or URL-rewrite regeneration, so an AI
translation would break product URLs.
- translateCategories now also skips empty source values, matching products.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 48d09b -
feat(translate): translate customizable option titles and value titles in bulk
Adds OptionTranslator (mirrors MediaTranslator): translates custom option titles
and their value titles per store view via ProductRepository, which persists
store-scoped title rows without touching default-store values. New bulk-translate
pseudo-field "custom_options" routed from BulkConsumer. Closes #36.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 8a5a0b -
docs(tests): add bulk-translate scenarios for dynamic attributes, image labels and video
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 70bf34 -
test: replace willReturnMap with willReturnCallback for PHPUnit 9 compatibility
Reproduced the CI failure with PHPUnit 9.6: willReturnMap matched getById()
differently than PHPUnit 10 (it pads invocation args with the method's declared
defaults before matching, so the 3-arg map entries never matched the 4-param
getById signature), returning null and fataling before any test output — which
the CI reports as "Internal server error". willReturnCallback is version-stable.
Also give ProductAttributeProvider entity-type test a real assertion.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 6113db -
fix(media): replace nullsafe operator with explicit null checks
The CI PHPUnit step bundles an older php-parser that fails on the nullsafe
operator (?->), the only PHP 8.0+ syntax unique to this module's new code,
crashing the runner before any test output. Use explicit null checks instead.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 28e0e0 -
test(media): drop Magento gallery-interface mocks for CI compatibility
The CI unit runner (PHPUnit 9, no generated/ code) chokes when mocking the
media gallery entry interface because its extension-attribute methods type-hint
generated-only classes. MediaTranslator only duck-types entry methods, so use
anonymous-class entries and the concrete Product mock instead. Also inline the
video-type check to drop the gallery interface import from production.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 9d660b -
test(media): use anonymous class for gallery extension stub
Avoids both the "interface must be in its own file" coding-standard error and
any reference to the generated extension interface. getExtensionAttributes() is
untyped, so an anonymous class exposing getVideoContent() suffices.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> e9d8d6 -
test(media): stub generated extension interface so unit tests run without code generation
The CI unit step runs on a fresh checkout with no generated/ code; mocking
ProductAttributeMediaGalleryEntryExtensionInterface directly autoloaded a
generated-only class and crashed the runner. getExtensionAttributes() is
untyped, so a local stub interface is sufficient.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 9102d5 -
feat(translate): translate image labels, gallery labels and video metadata in bulk
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 7df1e3 -
feat(translate): show frontend label with * suffix for dynamic attributes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 60291a -
feat(translate): dynamic product attributes via InputFieldProviderInterface
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> fbb8b1 -
fix(filter): skip nested arrays in attribute value implode
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 145340 -
Version 1.0.1 1eb344
-
fix(model): fix delete button using deleteConfirm like prompt delete button
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 7c11e6 -
fix(grid): remove unused checkbox columns from model and prompt grids
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> c06c48 -
fix(menu): use Swissup_Core parent, works without BreezeThemeEditor, fixes #32
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 818adc -
fix(model): add dataType select to status and is_default columns in grid
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 70aa86 -
fix(prompt): add dataType select to status column in grid
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1670cd -
fix(prompt): unset empty entity_id on create to prevent UPDATE instead of INSERT
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> c905b5 -
fix(prompt): convert empty model_id to null, prevent FK violation on save
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 93e9f8 -
fix(prompt): convert field_ids array to string before save
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> df6e3b -
Revert "refactor(admin): simplify dataScope extraction via getPostValue('data')"
This reverts commit 5a9f43dd56d6122354d7ede8c83076c55a8bbdbf. 0d71ff -
refactor(admin): simplify dataScope extraction via getPostValue('data') 5a9f43
-
fix(admin): extract form data from UI component dataScope, fixes #29 #30 5ffaf1
-
fix(bulk): use selected() not allSelected() to detect exclude mode, fixes #31 3d9147
-
docs: add test scenarios 1cc9f5
-
fix(translate): source from global scope, entity-aware save message
Fixes #25 #26 #27 405576 -
fix(prompts): add patch for installs that missed category-name prompt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 38430e -
fix(dataprovider): use empty() to avoid undefined key warning on extra_config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> e31e45 -
refactor(block): extract BulkAction logic into ViewData service, fix unit tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 88c8a5 -
fix(prompts): add missing category-name default prompt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5c2aca -
test(e2e): add agent pipeline integration test for discovery + GraphQL search
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 6a55e9 -
feat(discovery): add /.well-known/ai-plugin.json endpoint and tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1b8ebe -
feat(discovery): serve /llms.txt via custom router for AI agent discoverability
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 6d85aa -
feat(setup): add UpdateDefaultPromptsV2 patch to refresh default prompts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> ee3cec -
test(bulk): update translate tests to match productAction/target-store fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> e9155b -
test(skill): add free-form chat and prompt_id-required unit tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> cda711 -
fix(chat): allow free-form messages without prompt_id (#21)
When no stored prompt is selected in the AI Assistant chat, send
history directly to the AI instead of throwing prompt_id required.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 6ab498 -
feat(model): add max_tokens field to AI model config (#15)
Exposed in Advanced section of the model form. Stored in extra_config
JSON. All three providers (OpenAI, Claude, Gemini) now honour the limit.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 31f482 -
Revert "fix(menu): move Breeze AI to its own group under Swissup root (#19)"
This reverts commit a23caeca651929cb57260de907d29821ef84bc38. 1084de -
fix(menu): move Breeze AI to its own group under Swissup root (#19)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> a23cae -
fix(bulk): save translated attributes to target store view (#17)
Products: use ProductAction::updateAttributes with explicit targetStoreId.
Categories: load in target store context before saving.
Loading from sourceStoreId and changing storeId on the same object
before save does not reliably scope EAV writes to the target store.
Closes https://github.com/swissup/module-breeze-ai/issues/17
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5e30c4 -
fix(bulk): handle Select All — pass all_selected flag, resolve IDs server-side
Closes #18 15c1e7 -
fix(bulk): activate Run button on Select All using totalSelected observable
Closes #16 add847 -
fix(bulk): hide grid sticky-header in wizard, move Run button into step body
Closes #13 fe080e -
fix(translate): use store view value as source, fall back to global if empty
Closes #12 4f5649 -
fix(generate): use store view locale when generating content fa5bae
-
chore(e2e): ignore package-lock.json 1321c8
-
test(e2e): add category entity flow and grid visibility tests ed3cb9
-
chore(e2e): add .gitignore, exclude node_modules and auth 23acde
-
fix(bulk): move grid outside form, use uiRegistry for selection; add e2e tests 6721bb
-
feat(ui): replace spin with wave pulse animation on loading 140c55
-
fix(bulk): add space between checkbox and label in translate fields 097220
-
fix(bulk): move wizard CSS to LESS, fix fieldset borders dad671
-
feat(bulk): step-by-step wizard UI, add block tests, fix coding standard
Close #5 d543a2 -
feat(cms): add AI buttons support for CMS page SEO fields
Close #2 1e90f0 -
feat(ui): preview generated content before applying
Close #9 433b71 -
feat(ui): show locale code next to store view name in translate form
Close #10
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> d2f617 -
fix(di): add category name field to InputFieldPool
Close #7
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 8d3f87 -
fix(translate): preserve HTML tags and links during translation
Close #6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 6a3868 -
fix(ui): remove circle from Breeze icon, unify icon across Generate and Translate buttons 0ddc29
-
feat(ui): replace ChatGPT icon with Breeze logo, rename buttons to AI Generate/Translate/Chat 44523d
-
fix(filter): handle array value from multiselect getFrontend()->getValue() 9f5ef6
-
fix(filter): use is_visible + input type instead of is_visible_on_front
getIsVisibleOnFront() = 0 for all catalog attributes (name, sku, price
etc) so {{attribute code="*"}} always returned empty string.
New logic: is_visible=1 AND frontend_input NOT IN excluded types
(date, media_image, image, gallery, hidden). Includes text, textarea,
select, multiselect, boolean, price, weight.
Add FilterTest cases for langCodeDirective and attributeDirective. 205910 -
fix(popup): use Magento action-primary button, reduce textarea rows to 4 93c018
-
fix(prompts): add product-name prompt, fix product-meta-keyword typo 4eda0f
-
revert: remove FixPromptFieldIds data patch
No releases yet — fix directly in InstallDefaultPrompts instead. 122ef2 -
fix(prompts): fix product-meta-keyword typo in InstallDefaultPrompts cfb7b6
-
fix(prompts): fix product-meta-keyword typo, add product-name prompt
- prompt #5 field_ids: product-meta-keyword → product-meta-keywords
- add new 'Generate Product Name' prompt for product-name field 6eda92 -
test,docs: update tests and docs for Phase 5 bulk refactoring
- Remove 4 old consumer tests
- Add BulkConsumerTest, GenerateServiceTest
- Update GenerateTest, TranslateTest, SkillGenerateTest
- Update DEVELOPMENT.md, SESSION.md with Phase 5 status
- Add phase-5.md and refactoring-skill-prompt.md plans f000f3 -
feat(css): add BulkAction page styles cc5c33
-
refactor(bulk): remove old per-entity bulk controllers, blocks, consumers
Replaced by universal BulkAction page (Phase 5). Deleted:
- 4 controllers (product/category × generate/translate)
- 9 block classes
- 4 MQ consumers
- 4 layouts, 3 templates
- product_listing.xml mass-actions (swissup_breezeai_generate/translate) b3f6db -
feat(view): add BulkAction layout and edit.phtml template
Single-page form: entity radio, skill radio, store selects,
generate fields (checkbox+prompt), translate fields (checkboxes),
UI grid, sticky Run button. Inline JS handles entity/skill switching
and grid checkbox collection. 8232d2 -
feat(ui): add BulkDataProviders and bulk UI component grids
Product and category grids for the BulkAction page with ID/name
columns, filters, pagination, and mass-select support. d25290 -
feat(bulk): add BulkConsumer, BulkAction controllers, and Edit block
BulkConsumer replaces 4 old consumers — routes by skill/entity_type.
BulkAction/Edit: GET form page.
BulkAction/Save: validates POST, schedules MQ jobs via BulkScheduleTrait. be4b73 -
refactor(acl,menu): consolidate bulk ACL resources and menu item
4 separate ACL resources (bulk_product_generate, bulk_product_translate,
bulk_category_generate, bulk_category_translate) → single bulk_action.
Menu: 'Generate Content for Categories' → 'AI Bulk Action'. 78e03f -
feat(di): register product name field in InputFieldPool d0d391
-
refactor(mq): replace 4 topics/consumers with single swissup.breezeai.bulk
4 separate queues (product-generate, product-translate, category-generate,
category-translate) → one universal queue handled by BulkConsumer. becb6c -
feat(skill): add getSupportedAttributes() to SkillInterface
BulkAction UI needs per-skill attribute lists. Generate uses
InputFieldPool; Translate switches from hardcoded const to
InputFieldPool so both stay in sync with di.xml registrations.
Also moves translateForAllStores + saveAttributeForStore out of
Translate skill into GenerateService (single responsibility). b04e25 -
fix(generate): convert history arrays to MessageInterface objects
JSON deserialization produces plain arrays; OpenAi::chat() closure
requires MessageInterface. Convert in GenerateService before passing
to skill.
Closes #4 60f191 -
fix(openai): handle TypeError from openai-php/client v0.10 string response
v0.10 Response::data() returns array|string; string body passed to
CreateResponse::from(array) causes TypeError. Catch \TypeError with
a clear message. Bump constraint to ^0.10 || ^0.19 to allow upgrade. dda01d -
fix(menu): move Breeze AI below Content Builder b9b95e
-
fix(menu): reduce submenu indent to 28px e01066
-
fix(menu): apply muted color to Breeze AI group title only e4a344
-
feat(menu): add muted color for Breeze AI submenu items 7e2474
-
fix(menu): increase specificity for Breeze AI submenu indent 3d93d8
-
feat(menu): add indent for Breeze AI submenu items 154112
-
fix(menu): shorten menu item titles within Breeze AI group 253b57
-
feat(menu): group Breeze AI items under dedicated submenu 8764fc
-
fix(model): replace parent::_beforeSave() call to fix PHPStan error 1737c7
-
fix(model): remove invalid return type from _beforeSave b96839
-
refactor(consumers+controllers): extract AbstractConsumer and BulkScheduleTrait to eliminate duplication 6093cd
-
fix(cs): fix self-closing path tags and unescaped output d1089b
-
fix(js): skip service fields when attaching AI buttons 708dbb
-
test(integration): add admin HTTP integration tests for generate endpoint
- AbstractAdminApiTest: cURL-based login (form_key, admin cookie, secret key)
- GenerateTest: 7 cases covering generate, translate, validation, no-auth
- bin/test integration: runs via phpfpm container with CURL_CONNECT_TO routing
- AI tests skipped unless TEST_AI_ENABLED=1
Key findings: Magento requires form_key in POST params even with
CsrfAwareActionInterface; admin cookie value = PHP session ID in Redis. 4f1b6f -
docs: add session summary d2d983
-
fix(block): remove typed $_template to fix PHP 8.3 fatal error
Parent Magento\Backend\Block\Widget\Form declares $_template without
a type; redefining it with 'string' type causes a fatal error in PHP 8.3. ede0fa -
refactor(blocks): extract AbstractGenerateAttributes base class
Product and Category generate-tab blocks shared ~100 lines of identical
renderFieldRow/getFieldPromptsHtml/TabInterface code. Extract into
AbstractGenerateAttributes; concrete classes now only define field list
and fieldId prefix. 71ed4a -
docs: move DEVELOPMENT.md to docs/, add integration tests plan 42fb8d
-
refactor(translate): remove store selector, use current scope
Single product translate no longer shows a store picker modal:
- scope=0 (All Store Views): translates & saves to DB for every
non-default store view automatically, shows success alert
- scope=X (specific store): translates and writes result directly
into the form field; admin saves manually
Also fix FormDataProviderTest missing RequestInterface arg. 98ec57 -
fix(prompts): replace invalid directives with correct attribute syntax
{{product_name}} / {{category_name}} are not recognized directives —
filter silently drops them, leaving AI with no product context.
Replace with {{attribute code="name"}}, add {{categories}},
{{attribute code="*"}}, {{langCode}} context matching legacy module.
Also adds Testing Checklist to DEVELOPMENT.md. 10e739 -
fix: cast websiteId to int in bulk product generate save 23ab31
-
fix(model-form): save new record and restore model on edit
- Save.php: unset entity_id/form_key before addData to prevent empty
entity_id string blocking INSERT (Magento treated it as UPDATE id=0)
- FormDataProvider: inject RequestInterface; add getMeta() that passes
savedModel config to JS so edit form shows the correct model option
- model-select.js: read savedModel config on first onProviderChange call
(via imports) to restore the persisted value instead of resetting to
the first option of the newly-loaded provider list 76cf4b -
fix: throw LocalizedException when translate field is empty ffc9e1
-
feat: add menu item for bulk category AI generate fbe18d
-
fix: add TabInterface to Category Content Attributes block 327067
-
feat(phase-4): bulk category AI content generation
- CategoryConsumer: generate+save per category via Generate skill
- Controllers: Edit (render page) + Save (dispatch async bulk)
- Block/Attributes: field/prompt selector for category fields
- Block/Edit: flat category list + store view selector
- Template: checkbox list with Select All, store view dropdown
- Queue: add swissup.breezeai.category.attribute.update topic
- ACL: add bulk_category_generate resource
- Tests: CategoryConsumerTest (11 tests) 09198b -
test: add CategoryTranslateConsumer unit tests e45eaa
-
docs: mark phase-3 done, update phase-4 status
refactor(assistant): wrap buttons in .ai-field-actions container 889ea1 -
refactor: extract translate attributes HTML to shared phtml template, base abstract block 171d07
-
fix: translate button use action-default style + ai-field-actions wrapper, align with generate button d5e9e1
-
feat(phase-3): category bulk translate — controllers, consumer, queue topic, layout, ACL a68cc7
-
feat(phase-3): manual translate UI — inject translate button per field, modal with store selector, apply result to store scope 89596b
-
refactor: extract PromptRepositoryInterface, ModelConfigRepositoryInterface; add setters to ModelConfigInterface; use interfaces in DI 087226
-
refactor: add @api markers, public const, ResultInterface return types to interfaces and controllers fbf28d
-
feat: dynamic model list based on selected provider in model form 4c0d39
-
feat: add Translate skill and bulk product translation (Phase 3) b28da1
-
docs: add bulk product content generation guide to README 4d321f
-
fix: correct product-meta-keyword field_id in default prompts (remove extra 's') 046ea4
-
refactor: render field rows without attribute inputs in bulk form dc7e9f
-
fix: use settings syntax for mass action URL, fix incompatible method signature 1a4321
-
fix: remove incompatible return type from _getAdditionalElementHtml 3004ee
-
test: add extra params and edge case tests for Claude and Gemini providers cccaad
-
chore: ignore .playwright-mcp directory 9551d8
-
feat(phase-2): add Claude and Gemini providers 3f1e47
-
test: add ConsumerTest for bulk product AI generation 5ad94f
-
feat(step-11): bulk product AI content generation via MessageQueue 701783
-
docs: mark step-10, step-12 as done in plan 33d605
-
test: add ModelConfig, ModelConfigRepository, FormDataProvider tests
- ModelConfigTest: getModel custom resolve, encrypt/decrypt api_key,
isEnabled, isDefault, getBaseUrl, getOrganization, getExtra JSON
- ModelConfigRepositoryTest: getById happy/not-found, getDefault with
is_default flag, fallback to first enabled, throws when none exist
- FormDataProviderTest: api_key mask, empty key, id indexing, cache 3ea4df -
feat(step-10): AI Model & Prompt CRUD admin UI
- Model/Prompt controllers (Index, NewAction, Edit, Save, Delete)
- UI listing + form components for both entities
- Form buttons (Back, Delete, Save) for both entities
- DataProviders: listing + form (api_key masked as ****** in form)
- Save controller encrypts api_key via Encryptor; mask ignored on save
- switcherConfig hides custom_model field unless model=custom
- Advanced fieldset (collapsible) for base_url, organization
- Source classes: FieldId, ModelOptions, OpenAiModel (+gpt-4o-mini)
- Menu items under Swissup > Breeze (sortOrder 120/130) 889e2c -
docs: update plan — step-09 done, phase-1 progress 87003f
-
feat(step-09): frontend JS assistant + styles
- assistant.js: MutationObserver inject AI button per field
- auto-select prompt if one, dropdown if multiple
- REST POST to /rest/default/V1/breezeai/generate with X-Requested-With
- TinyMCE + plain textarea support on apply
- _module.less: button + prompt select styles
- Fix apiUrl in Js block to use rest/default/V1 prefix a21c82 -
feat(step-08): admin JS block + layout for product/category edit
- Js block renders JSON config (apiUrl, entityType, entityId, fields+prompts)
- js.phtml initializes Swissup_BreezeAi/js/assistant component
- Layout: catalog_product_edit + catalog_category_edit inject block before.body.end 952053 -
feat(step-08): REST API endpoint POST /V1/breezeai/generate
- GenerateInterface — typed contract with MessageInterface[] history
- GenerateService — load entity by type, dispatch to SkillPool
- webapi.xml — route secured by Swissup_BreezeAi::manage ACL
- acl.xml — add manage resource under assistant
- PromptRepository::getListByFieldId() — filter prompts by field ID
- Tests: GenerateServiceTest, PromptRepositoryTest b555db -
feat(step-07): InputFieldPool via DI — replaces Observer/Event approach
- InputFieldInterface with ENTITY_PRODUCT/CATEGORY constants
- InputField DTO, all config via constructor promoted properties
- InputFieldPool: getAll(), getByEntityType(), getById()
- 9 built-in fields as virtualType in di.xml (product + category)
- Third-party modules extend via di.xml array merge (unique key = add, same key = override) 5b5d59 -
refactor(step-06b): code revision — dead deps, field constants, MessageInterface
- Remove unused constructor in Helper/Config
- Add field constants to ModelConfigInterface, use in ModelConfig/Repository/Collection
- Remove dead deps: CatalogHelper (Product filter), StoreManagerInterface (Category filter)
- Remove dead code: STATUS_DISABLED x2, addProviderFilter()
- Add isEnabled() gate-check in AiRequest::send()
- Add MessageInterface + Message DTO
- SkillInterface::execute() — typed history as separate param MessageInterface[]
- OpenAi::chat() uses getRole()/getContent() instead of array access
- Generate skill builds Message objects, adapts to new execute() signature
- Update AiRequestTest, GenerateTest (new signature + history merge test) cae984 -
feat(step-06): add Filter layer, Generate skill, SkillPool, PromptRepository
- Model/Filter/Filter.php: base template filter with attribute/langCode directives
- Model/Filter/Product.php: adds categories directive (breadcrumb paths)
- Model/Filter/Category.php: adds subcats directive
- Model/Skill/Generate.php: resolves prompt, filters content, calls AiRequest
- Model/SkillPool.php: registry pattern, mirrors ProviderPool
- Model/PromptRepository.php: getById/save/delete
- Prompt::getContent() explicit method (needed for mocks)
- di.xml: register Generate skill in SkillPool
- config.xml: remove provider defaults (moved to DB)
- 34/34 unit tests passing 9525b7 -
feat(step-05): ModelConfig entity+repository, Prompt entity, DB schema, refactor provider interface to use ModelConfigInterface 97f515
-
test: add unit tests for Config, ProviderPool, AiRequest, OpenAi provider 7bd0ad
-
docs: add development plan and per-step task files 424bb2
-
feat(step-04): OpenAI provider, ProviderPool, AiRequest, DI registration b719ec
-
feat(step-03): admin config, menu, ACL, Helper/Config, model sources 8e2498
-
feat(step-02): ProviderInterface and SkillInterface b720d9
-
feat(step-01): module skeleton, composer deps, routes cb7145
swissup/module-easy-slide — 1.8.18 (was 1.8.17)
swissup/module-easytabs — 1.13.4 (was 1.13.2)
-
Version 1.13.4 e8278c
-
Update Category render attribute cccdb6
-
Version 1.13.3 6138b2
-
Add Category render attribute eede1d
swissup/module-gdpr — 1.9.1 (was 1.8.5)
-
Version 1.9.1 5e0c58
-
PHP 8.5 fix ea894d
-
Add files via upload 5cabb8
-
Version 1.9.0 30de7e
-
Blocked Cookies => Unregistered Cookies cc499a
-
Show count of blocked cookies in the button label 0a3907
-
Ability to register selected blocked cookie 1d5955
-
Cleanup corresponding blocked cookies when saving the cookie 0fa019
-
Redirect back to the page where the client pressed "Allow selection" 3a28cd
-
Add notice about * in cookie names 423049
-
Cleanup blocked cookies using cron. Keep up to 100 latest records 4eca60
-
PHP 8.5 fix ca663e
swissup/module-pagespeed — 1.18.0 (was 1.17.8)
-
Version 1.18.0 75bd79
-
test: add attribute metadata for PHPUnit 12 discovery
PHPUnit 12 dropped doc-comment metadata: @dataProvider providers were
not applied and @test snake_case methods were not discovered. Add
#[DataProvider]/#[Test] attributes while keeping the annotations so
the suite still runs on PHPUnit 9.6 (CI) and 10.5 (local), which
ignore unknown attribute classes.
Also accept the unused third data-set argument in testGetFilename —
PHPUnit 12 warns when a provider passes more arguments than the test
method accepts.
Verified: PHPUnit 12.5.31 exit 0 (631 tests), PHPUnit 10.5.47 OK.
Refs #92 5b20fe -
feat!: remove Expire Header feature
BREAKING CHANGE: Body\Expire optimizer, `pagespeed/expire/*` config
and its admin section are removed.
The feature set `Cache-Control: public, max-age=31536000` on document
HTML for guest pages. Browsers and hosting-side proxies (invisible to
the Varnish config check) cache such pages beyond any server-side
flush, so merchants could not push content/price updates to returning
visitors for up to a year. No PageSpeed/CWV benefit to offset that.
Orphaned core_config_data rows are harmless.
Closes #91 f659e6 -
chore: ignore phpunit cache and playwright artifacts be8bda
-
test: drop APIs removed in PHPUnit 12 from Test/Unit
- replace getMockBuilder('stdClass')->addMethods() with createMock()
of real classes (Store, Minify_HTML, HeaderInterface)
- validate optimizers before logger init in Pipeline so expected
InvalidArgumentException surfaces even without logger classes
- register module-logger, module-image, mrclay/minify in tests
bootstrap autoloader (absent from standalone test autoload)
Refs #92 5393a1 -
fix(preload): prevent double download of scripts already in DOM
DeferJs: remove addPreloadLinks() entirely — every external <script src>
stayed live in the DOM while also getting a <link rel=prefetch> hint,
causing the browser to fetch the file twice (confirmed: CookiePal,
Elfsight, requirejs-config-breeze on mobile).
- Remove Preload dependency, preload property, addPreloadLinks() method
and all 4 call-sites from DeferJs
- Remove script src collection in prepareElement()
AddLinkPreload: add defensive liveScriptSrcs guard — skip any script
href that already exists as a <script src> tag in the DOM, regardless
of how it ended up in the Preload singleton.
Tests: remove preloaderMock from DeferJsTest + DeferJsRegressionTest;
add testScriptsAlreadyInDomAreNotPrefetched and
testScriptsNotInDomCanGetPrefetchHint to AddLinkPreloadTest.
Fixes #95 4b539f -
fix(preload): per-type rel/fetchpriority; honor isEnabled config
- Replace global priority counter with per-type counters
- ALWAYS_PRELOAD_TYPES: font/style/image always rel=preload; scripts=prefetch
- FETCHPRIORITY_LIMIT_BY_TYPE: null=unlimited (fonts), 2 styles, 1 image (LCP), 0 scripts
- Fix isEnabled() hardcoded true -> config->isLinkPreloadEnabled()
- Use array_key_exists to correctly handle null sentinel vs missing key (null??0 bug)
- Add tests: image=preload, scripts=prefetch, per-type fetchpriority limits, isEnabled toggle
Fixes #93 #94 84b155 -
feat: add dedicated cache type to isolate optimizer entries from block_html
- Add Model/Cache/Type.php: new Magento cache type (swissup_pagespeed)
- Add etc/cache.xml: register type with label/description
- Update CacheManager: use Type::TYPE_IDENTIFIER instead of block_html,
add Type::CACHE_TAG to entry tags for proper TagScope scoping
Fixes Redis Default Cache pollution where 1.2M+ SWISSUP_PAGESPEED entries
were mixed into the block_html cache type. Optimizer cache is now
independently manageable in Stores > Cache Management. 9a552e
swissup/module-pro-labels — 1.10.0 (was 1.9.1)
-
Version 1.10.0 79b19f
-
Restore deprecate getProductLabels method for compatibility with older versions (close #47). 85974e
-
Refactor models (#46)
* Refactor Data, LabelsProvider, ManualLabelsProcessor, and SystemLabelsProcessor to use ProductLabels helper and improve type hinting
* Refactor Catalog helper to improve type hinting and streamline constructor properties
* Refactor AbstractLabel and ProductLabels helpers to improve type hinting and streamline method signatures
* Refactor LabelInterface and Label model to improve type hinting and streamline method signatures
* Address Copilot suggestions. 072cea -
Address Copilot suggestions. 5a19dd
-
Refactor LabelInterface and Label model to improve type hinting and streamline method signatures f5a2e2
-
Refactor AbstractLabel and ProductLabels helpers to improve type hinting and streamline method signatures fac13c
-
Refactor Catalog helper to improve type hinting and streamline constructor properties bd402b
-
Refactor Data, LabelsProvider, ManualLabelsProcessor, and SystemLabelsProcessor to use ProductLabels helper and improve type hinting 26bb79
-
Refactor renderLabels method to use require for prolabels module 067179
-
Feature/active period (#45)
* Add from_timestamp and to_timestamp fields to Label model and interface
* Add isActive function and filterLabels method to manage label visibility based on timestamps
* Implement AMP helper integration and enhance label fetching logic.
Fetch only active labels when AMP storefront is enabled.
* Address Copilot suggestions. c7e128 -
Address Copilot suggestions. d937b5
-
Implement AMP helper integration and enhance label fetching logic.
Fetch only active labels when AMP storefront is enabled. 2f1652 -
Add isActive function and filterLabels method to manage label visibility based on timestamps bc3140
-
Add from_timestamp and to_timestamp fields to Label model and interface bec56c
-
Version 1.9.2 54e250
-
Fixed ParseError error with template minification enabled d87fce
swissup/module-rich-snippets — 1.8.4 (was 1.8.2)
-
Version 1.8.4 3c45a4
-
Add regex validation to modifier modal and alert on invalid patterns d3f200
-
Fix issue with not saving of reordered modifiers. 7f18af
-
Add regex modifier for PCRE find-and-replace functionality (#43) d10bd9
-
Add strip_pagebuilder modifier to remove Page Builder markup (#43) 7a6f70
swissup/module-seo-canonical — 1.11.10 (was 1.11.9)
-
Version 1.11.10 c94f86
-
Refactor type hints and return types in Config, Data, and UrlMaker classes af4b62
-
Fallback to current store when product is not assigned to forced store (close #2) 71c8ec
swissup/module-seo-pager — 1.4.0 (was 1.3.5)
-
Version 1.4.0 0b9adc
-
Refactor Renderer class: streamline constructor properties and extract request variable logic into a separate method 5831e2
-
Enchance allowlist filter sets configuration for strategy. Update canonical URL. Close #6 07b704
-
Refactor Data helper: improve type hints and use constants for configuration paths c0f932
-
Add allowlist filter sets configuration for strategy (#6) 38c8b2
swissup/module-seo-templates — 1.7.12 (was 1.7.10)
-
Version 1.7.12 4f7a81
-
PHP 8.5 fix 014b8a
-
Version 1.7.11 485c39
-
Add index to swissup_seotemplates_data for improved query performance (close #22) 5c24d9
-
Introduce FilterValueResolver service to make module compatible with Smile Elasticsuite (close #21) d54a51
swissup/module-seo-urls — 1.5.55 (was 1.5.54)
swissup/module-seo-xml-sitemap — 1.2.0 (was 1.1.16)
-
Version 1.2.0 c26fd8
-
Refactor Category plugin for improved type safety and code clarity. Drop Magento2.1.x support. 1c398c
-
Feature/product min lastmod (#6)
* Refactor Category plugin for improved type safety and code clarity. Drop Magento2.1.x support.
* Add product options configuration and date handling in admin settings
* Add forced minimal lastmod date handling for products in sitemap
* Refactor Category plugin to use Helper for image include policy retrieval
* Add strict types and improve type safety in Data helper methods
* Refactor XML configuration for sitemap settings by modularizing into separate files for categories, pages, other links, and advanced settings.
* Address Copilot comments 1fc7bc -
Address Copilot comments f7bf57
-
Refactor XML configuration for sitemap settings by modularizing into separate files for categories, pages, other links, and advanced settings. 55e24f
-
Add strict types and improve type safety in Data helper methods 782f41
-
Refactor Category plugin to use Helper for image include policy retrieval 386e7d
-
Add forced minimal lastmod date handling for products in sitemap e69cb2
-
Add product options configuration and date handling in admin settings 372385
-
Refactor Category plugin for improved type safety and code clarity. Drop Magento2.1.x support. d7935f
swissup/theme-frontend-argentobreeze-blank — 3.1.0 (was 3.0.0)
swissup/theme-frontend-argentobreeze-business — 3.0.1 (was 3.0.0)
-
Hide toolbar limiter on all pages, not only on the pages with pagination
Closes #15 f98fea
swissup/theme-frontend-argentobreeze-stripes — 3.1.0 (was 3.0.0)
-
Version 3.1.0 cf02ec
-
Enabled mobile slider layout for banners 03acd2
-
Use 4:5 mobile images 1bc409
-
Switch to slider mobile layout for Benefits block 1f5466
-
Enabled hover-zoom for 5 banners e5e6b1
-
Added separate mobile slider and slide styles improvements cf2cd1
-
Updated homepage BCB content 7d11cd
-
Updated highlight style for BCB c8becc
-
Updated homepage BCB content 6219af
-
Added EasySlide styles and smaller images 3b4ec3
-
BCB Homepage: added banners, highlight blocks, and brands 9c4383
-
BCB Homepage: added benefits and slider 29b8df
-
Added footer colors to Theme Editor a99a23
swissup/module-breeze-content-builder — 1.0.6 (was 1.0.2)
-
Version 1.0.6 7b6bda
-
Added Mobile Layout (stack/slider) config for Columns and Grid components 453502
-
Banner component: added Hover Zoom property 56e6e9
-
Version 1.0.5 e3b376
-
Added Breeze scrollReveal settings for Banner component 93e172
-
Remove drafts when running installer 62b92e
-
Added Collage layout for Banner component (BreezeStripes compatibility) 10fca2
-
Added 2 Columns (25/75) layout for Columns component (BreezeStripes) 30ed38
-
Added Column Divider prop for the Columns component 0ac3e9
-
Allow using html in Text component inline svg (BreezeStripes fix) 14baf5
-
Version 1.0.4 dab817
-
Fixed missing css class in Featured Product component a87e23
-
Pass current page_id for widgets like AskIt, closes #29 7b5bae
-
Fixed installer to use next content version instead of hard-coded v1 853c63
-
Version 1.0.3 308f5e
-
History fix for header/footer da7091
-
Added methods to expand sections 8e346f
-
Do not show Label field for Header and Footer items cc4f6a
-
WIP: implementing Header and Footer management #7 6bc911
swissup/module-theme-editor — 1.12.0 (was 1.11.7)
No commits found
-