Recent Activities

This page shows what are we working on.

swissup / knowledge-base

4 hours ago success

breezefront / module-breeze-theme-editor

4 hours ago success
  • 1.0.13
    • Version 1.0.13 99f37c

    • Merge pull request #29 from breezefront/feature/color-background-gradient

      feat: COLOR_BACKGROUND field type with gradient support c2fd43

    • style: drop closing slash on void input tags (Magento Coding Standard)

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> a84957

    • feat: add COLOR_BACKGROUND field type with gradient support

      Implements the COLOR_BACKGROUND field type (issue #22) — a color field that
      accepts either a solid color or a CSS gradient, analogous to Shopify's
      `color_background` setting. Enables gradient backgrounds for elements exposed
      as CSS variables (e.g. footer `--footer-bg`).

      Backend:
      - CssValueFormatter: formatColorBackground() passes gradients through with
      comment-escaping, delegates solid values to the color pipeline; getComment
      handles the new type.
      - ValidationService: accepts gradient / palette-ref / solid-hex values.
      - SectionFormatter + CssVariableBuilder: treat color_background like color for
      format resolution and palette-var emission; gradients pass through untouched.
      - schema.graphqls: COLOR_BACKGROUND enum value.

      Frontend (Alpine/Tailwind theme editor, adminhtml):
      - gradient-utils: pure parse/serialize/detect + stop manipulation
      (paren-aware split so var()/rgb() stops survive), plus presets.
      - color-background renderer: gradient swatch vs solid, reuses the color
      renderer for solid; own compiled-template slot.
      - color-background handler: two-tab popup (Solid Pickr + palette / Gradient
      editor), preset swatches, draggable stops, position input, linear/radial,
      angle slider, per-stop Pickr; commits raw CSS gradient.
      - _gradient-picker.less styles; registered in field-renderer / field-handlers.

      Tests: PHPUnit (formatter/validation/section/cssvar) + Jest
      (gradient-utils, renderer, handler) — all green.

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> b5a3ef

  • 1.0.12
    • Merge pull request #28 from breezefront/fix/framework-version-requirement

      fix: correct magento/framework version constraint bfd0fb

    • fix: correct magento/framework version constraint

      magento/framework and magento/module-graph-ql use their own package
      versioning (100.x-103.x), not the Magento product version (2.4.x). The
      `^2.4` constraint matched no published version, so composer failed to
      resolve on any recent release.

      Magento 2.4.4-2.4.9 ship magento/framework 103.0.x and
      magento/module-graph-ql 100.4.x, so use `^103.0` and `^100.4`.

      Fixes #27

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> e8b697

swissup / module-knowledge-base

4 hours ago success
  • 1.1.46
    • Version 1.1.46 b9a4bf

    • Merge pull request #20 from swissup/fix/breeze-scope-virtual-node-grid

      Fix knowledge base grid not rendering on Breeze < 2.31.3 8fdf7f

    • Fix knowledge base grid not rendering on Breeze < 2.31.3

      The homepage listing renders its child ui components (categoriesList,
      paging, sizes) through a `scope:` binding placed on virtual (comment)
      nodes:

      <!-- ko scope: categoriesList -->...<!-- /ko -->

      Breeze versions before 2.31.3 apply that binding without checking the
      node type. `applyComponents()` calls `$(el).component(index)` on the
      comment node, cash's `.data()` runs against an element with no data
      store and throws:

      TypeError: Unable to process binding "scope: ...categoriesList"
      Cannot read properties of undefined
      (reading 'component:knowledge-base-listing_categories_list')

      The parent component (search bar) still renders because its scope
      binding sits on a real <div>; every child grid crashes, so categories,
      paging and page-size controls never appear. Breeze 2.31.3 later guarded
      the virtual node (swissup/breeze e35ed274), but stores on older Breeze
      stay broken.

      Wrap the three child scope bindings in real <div> elements so the grid
      renders regardless of the installed Breeze version. This mirrors the
      stock Magento_Ui pattern (scope is always bound to a real element) and
      is a no-op on patched Breeze.

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> 10a3bf

    • Make data providers static for PHPUnit 12 compatibility

      PHPUnit 12 invokes @dataProvider methods statically; non-static
      providers now get 0 args and throw ArgumentCountError. None of the
      six providers touched here use $this, so making them static is a
      behavior-neutral change compatible with both PHPUnit 10.5 (current)
      and 12/13.

      Verified: full module suite (118 tests, 184 assertions) green under
      PHPUnit 10.5.47.

      Closes #18

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> ab7b6b

    • Add JS unit tests for listing cache and paging sizes

      Cover the two frontend regressions fixed in ead4b7d and c08e84c:
      - loadCategories()/loadFaqs() memoization keyed by page and size
      - getPageSizes() always keeps the active page size selectable

      Components are AMD modules, so tests load them through a minimal
      define() shim with mocked dependencies (Jest, no Magento runtime
      needed). Wired into CI as a separate js-unit job.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 5207d3

    • Keep active page size in sizes options to avoid extra reload

      getPageSizes() filters options by totalRecords, so the initial
      pageSize (9) was missing from the list on small datasets. Knockout's
      value binding then reset the select to the first option (3), which
      triggered a second pair of GraphQL requests on every page load.

      Always include the currently active page size in the options.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> c08e84

    • Fix categories pagination ignoring page changes

      The categories memoization cache added in 3a2b32a keyed nothing, so
      the first response (whatever pageSize was active at init) was served
      for every subsequent currentPage/pageSize change. Key the cache by
      currentPage and pageSize, same as the FAQs cache.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> ead4b7

  • 1.1.45
    • Version 1.1.45 c9ecc6

    • ci: generate factory stubs via temp file instead of eval

      Magento coding standard forbids eval(). Write the stub class to a
      temporary file and require it — same behavior, phpcs-clean.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> c943a5

    • ci: allow magento composer plugins and stub factories in unit tests

      - composer blocked magento/composer-dependency-version-audit-plugin via
      allow-plugins config; allow magento/* plugins in the CI environment
      - outside of a Magento installation the generated *Factory classes do
      not exist, so tests mocking them failed; register an autoloader in
      the standalone bootstrap that evals minimal factory stubs on demand

      Verified in a container replicating the CI environment:
      118/118 tests pass.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 5c9e28

    • ci: install Magento packages from Mage-OS mirror

      composer install failed in CI because magento/* packages require
      repo.magento.com authentication. Use the public Mage-OS mirror
      instead.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 0dc99f

    • Fix doubled separator line between FAQ items on knowledge base pages

      FAQ items draw their own bottom border now, while the template still
      renders a .content-border-bottom divider after each item, which is
      also styled on knowledge base pages. Hide the redundant divider
      inside the FAQ list.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> cbbd62

    • Make embedded FAQ listing themeable via CSS custom properties

      - Expose border, spacing, colors and typography of FAQ items as
      --kb-faq-* custom properties with previous values as fallbacks
      - Show FAQ answer (.faq-content-html) by default, overridable via
      --kb-faq-answer__display
      - Remove dead .sliceFAQ / .panel-content rules — no template renders
      these classes

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 52178d

    • Fix FAQ listing styles not applied when widget is embedded on non-KB pages

      The .faq-common block was nested inside the .knowledge_base-index-index
      body-class selector, so none of its styles applied when the Listing
      widget was inserted on catalog category or CMS pages. Moved it to a
      standalone .swissup-knowledge-base-container scope.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> d6e5fc

    • ci: add GitHub Actions workflow for unit tests on PHP 8.1/8.2/8.3

      - .github/workflows/tests.yml: runs phpunit on push and pull_request
      against PHP 8.1, 8.2, 8.3 matrix (mirrors module-logger pattern)
      - tests/bootstrap.php: falls back to vendor/autoload.php when Magento
      dev bootstrap is absent (standalone CI environment)
      - phpunit.xml.dist: switch bootstrap path to tests/bootstrap.php
      - composer.json: add require-dev (phpunit ^10.5, magento/framework,
      magento/module-store, magento/module-ui) and autoload-dev PSR-4 map f98260

breezefront / module-breeze

8 hours ago success
  • head
    • Improve cache key for js block f390bf

    • Update third-party JS libraries

      - underscore 1.13.6 -> 1.13.8
      - knockout 3.5.1 -> 3.5.3
      - js.cookie 3.0.1 -> 3.0.8
      - dayjs 1.11.7 -> 1.11.21
      - panzoom 4.5.1 -> 4.6.2
      - swiped-events 1.1.7 -> 1.2.0
      - tabbable 6.1.1 -> 6.5.0
      - focus-trap 7.3.1 -> 8.2.2
      - scrollyfills 1.0.3 -> 1.0.4
      - lite-yt-embed: 0.3.4 1d4f5d

    • Use view transition when prefers-reduced-motion is not set to `reduce` c4ed65

    • Remove useless comment 80489b

    • Fixed empty pages in Instagram Browser when view transition is enabled
      Closes https://github.com/breezefront/theme-frontend-breeze-evolution/issues/23 1c3432

    • fix(scroll-reveal): guard optional BreezeThemeEditor lookup with module-enabled check

      class_exists(BreezeThemeEditor::class) only reflects composer autoload
      availability, not whether Swissup_BreezeThemeEditor is actually
      enabled. When it's disabled, di.xml preferences aren't loaded, so
      ObjectManager::get(BreezeThemeEditor::class) fatals trying to
      instantiate the bare ValueRepositoryInterface it depends on
      (fixes #100).

      Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> e52077

  • 2.31.3
    • Version 2.31.3 dc91f2

    • Merge pull request #99 from breezefront/fix/scope-binding-on-virtual-elements

      Fix scope binding crash on virtual elements b5ca92

    • Use existing isVirtualElement() helper instead of nodeType check

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 47929a

    • Fix scope binding crash on virtual elements

      Commit af420909 added an already-mounted check to applyComponents()
      that calls $(el).component(). When the scope binding is used on a
      virtual element (<!-- ko scope: ... -->), el is a comment node and
      cash's data() fails reading node.dataset, breaking the whole render
      (e.g. Swissup_KnowledgeBase listing page).

      Only run the check for element nodes; components are never mounted
      on comment nodes anyway.

      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> e35ed2

swissup / hyva-easytabs

9 hours ago success

breezefront / theme-frontend-breeze-enterprise-eir

22 hours ago success
  • head
    • layout and styles for category view, product toolbar, shop by button 08fd27

    • Add layered navigation styles and update imports 944ff1

    • Keep working on prodcut listing and category page. 411088

    • Keep working on product listing toolbar. ebcfac

    • Working on product listing and toolbar look. 1ab39d

    • Add Cooper* font 132906

    • Add listing item styles and variables e725b5

    • Product lisnting in progress - grey bg and border radius. 4e7c35

    • Add new variable files for colors, typography, header, footer, icons, navigation, popover, minisearch, and gradient ba122c

    • Refactor footer and newsletter styles for improved consistency and responsiveness d831e4

    • Footer top newsletter - some updates. 452ca5

    • Add footer top content block and styles for newsletter integration (WIP) 128131

    • Footer bottom. 8d58ea

    • Add footer content block and styles for enhanced footer layout 4d6b1b

    • Header. Hide menu on medium screens. Update search look on monile. e0146d

    • Installer. Add navigation slideout menu a89fd5

    • Add EasySlide functionality for header panel with custom slides and styles e55b0b

    • Add minisearch layout and styles to enhance search functionality 5c5aec

    • Update config.xml and LESS files for theme adjustments and styling improvements of search field 09f88d

    • Add Lexend font and related styles to the theme 0100e8

    • Create config.xml a78b04

    • Create installer.xml 073f18

    • Create view.xml baa3b6

    • Create theme.xml 440a18

    • Create registration.php 119b4f

    • Create README.md 2a5862

    • Create composer.json 16ec29

swissup / navigationpro

1 day ago success

swissup / module-navigationpro

1 day ago success

breezefront / module-breeze-ai

1 day ago success
  • 1.0.11
    • Merge pull request #41 from breezefront/fix/translate-source-language-prompt

      fix(translate): translate from source language + module-logger dev logging (1.0.11) e7a8f5

    • Version 1.0.11

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> dca39c

    • fix(translate): translate from the selected source language, not just to target

      Bulk translation only told the model the TARGET language ("Translate to German"),
      never the source. Weak models (e.g. gpt-4o-mini) then left many words in the
      source language when translating Danish→German — option titles and values on the
      target store came out as a Danish/German mix, while English→German looked clean.

      - Pass the Source Store View through to the Translate skill (source_store_id) so
      the prompt is "translate from <source> to <target>".
      - Strengthen the prompt: instruct the model to translate EVERY word and leave
      nothing in the source language, while preserving numbers/SKUs/HTML.
      - Applies to EAV attributes, custom option titles/values, and media labels.

      Optional query/response logging now goes through swissup/module-logger
      (require-dev), gated by the BREEZEAI_TRANSLATE_DEBUG constant — a no-op unless
      that module is installed and the constant is set.

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> 520ff4

    • test(translate): drop error-silencing @ on mkdir in media scope test

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> 78d334

  • 1.0.10
    • Version 1.0.10

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> 300ae5

    • test(translate): integration guard for media translation vs option scope

      Reproduces the bug where translating media gallery labels corrupts the custom
      option titles of other store views. Creates a product with a media image plus a
      drop-down custom option carrying source-store title overrides, runs
      MediaTranslator for the gallery label, and asserts the option titles are
      unchanged in every store. Fails on the full-save implementation, passes with the
      direct target-store media write.

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> 5236d5

    • fix(translate): write media labels to target store without full product save

      MediaTranslator persisted translated media gallery labels / video metadata with
      a full ProductRepository::save() of the product loaded at the target store. That
      full save re-processes the product's custom options through Magento core, and
      saving a product loaded at a non-default store propagates its option/value titles
      into other store views — silently overwriting the SOURCE store's custom option
      titles. Symptom: after a bulk translation that includes media fields (image /
      gallery labels, video), the source (e.g. Danish) store view shows English custom
      options, while the target store is translated correctly.

      Write the translated label / video metadata directly into the target store's
      rows of catalog_product_entity_media_gallery_value and
      catalog_product_entity_media_gallery_value_video (update-or-insert, inheriting
      position/disabled and provider/url/metadata from the default-store row). No
      ProductRepository::save(), so custom options and other stores are untouched —
      the media counterpart of the 1.0.9 OptionTranslator fix.

      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> 6f808f

breezefront / theme-frontend-breeze-enterprise-apollo

1 day ago success
  • head
    • Improve recent products widget styles in sidebar 3d94fb

    • Revert "Move testimonials below category description"

      This reverts commit 046f5bb650b031b250b05a0009b5ec2edc27a619. 66ab0d

    • Move testimonials below category description 046f5b

    • Use `apollo-` prefix for custom quote icon 7f3938

    • Prevent zoom om mobile devices when focusing quantity field 0de256

    • Limit upsell and related products to 6 items on the product page 94dd46

    • Added BLB installation: Testimonials widget on category pages 60339b

    • Testimonials and BCB slider styles bb8fa5

    • Fixed qty overlap with actions in minicart on small screens, see #16 96cd74

    • Enabled mobile slider layout for columns and grid 77cb58

    • Created separate mobile slider 8880b4

    • Sync products widget styles with product list. Closes #13 241874

  • 3.1.2