Recent Activities
This page shows what are we working on.
-
1.3.7
-
1.3.6
-
1.2.3
-
1.2.2
-
1.19.2
-
1.19.1
-
head
-
1.0.2
-
1.0.1
-
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
-
-
1.1.5
-
1.1.4