Recent Activities
This page shows what are we working on.
-
head
-
Fixed incorrect pagination when using different col/row gaps 7a387d
-
-
2.30.0
-
Version 2.30.0 94e21a
-
Update composer.json
Added requirement for swissup/module-core 7e41b9 -
Ability to open nested menu dropdowns on touch devices e1c336
-
View transition makes things worse for accordion. Disable for now. cfcf72
-
Do not create `role=tablist` if it's already used by parent div d07866
-
DataPost: Restore lost `params.target` property 3a93e2
-
Do not try to mount components that's already processed
ReCaptcha inside lazily loaded review component af4209 -
Fixed incorrect component aliases created in registry ab0f4f
-
Improve early mouseenter event 05e4f4
-
Prevent opened menu after page navigate if cursor is over menu item fae0b9
-
Prevent opened menu after click on top level link (view-transition) d5e10a
-
View transition should only work with both specrules and viewTransition 02fb76
-
view-transition can work with speculation rules only. Fix prev commit. 8ba488
-
Transition was skipped error: `view-transition` styles must be in css
Style moved to breeze-blank theme a631df -
Don't hide autocomplete when clicking on contents inside search form 8ef029
-
-
1.1.43
-
Version 1.1.43 1ce509
-
test: medium-priority coverage — AbstractDataProvider
Ui/DataProvider/Form/AbstractDataProviderTest:
- collection items returned keyed by ID when no persisted data
- empty collection + no persistor → null result (not error)
- DataPersistor data merged into result on failed-save round-trip
- persistor clear() called exactly once after merge
- persistor clear() NOT called when persistor returns nothing
- getData() result is cached: collection.getItems() called once
even on repeated calls 3d8ef8 -
test: high-priority coverage — Config, FAQPageSchema, Router branches
Helper/ConfigTest:
- getUrlPrefix() sanitisation via getRootPrefix/getFaqPrefix/getFaqsPrefix
- special chars stripped, underscore stripped, spaces stripped
- empty/null/all-disallowed → fallback to default constant
Model/Resolver/DataProvider/FAQPageSchemaTest:
- getSchemaData() structure: @context, @type FAQPage, mainEntity
- items without title or content are skipped
- dateCreated present/absent based on created_at field
- total_count=0 → empty array
- cleanContent(): script/style stripped, br/p/div → space,
whitespace collapsed, HTML entity double-decode,
5000-char truncation boundary
Controller/RouterTest additions:
- valid category path → Forward + faq_category_id param set
- unknown category identifier → 301 Redirect (not null)
- root KB path /knowledge-base → Forward to index/index, no DB calls d9cdc3 -
test: add unit tests for IdentifierValidator and Router
- phpunit.xml.dist for standalone test runs
- bin/test convenience script (follows module-breeze-ai pattern)
- Test/Unit/Model/Validator/IdentifierValidatorTest: 45 cases covering
valid slugs, type/empty/length/char validation, SQL keyword blocking,
and false-positive regression (sleep-disorders, drop-shipping, etc.)
- Test/Unit/Controller/RouterTest: Router+Validator integration tests
verifying SQL injection paths return null with no DB call
- IdentifierValidator: switch from regex word-boundary to slash-segment
matching so dash-compound slugs (sleep-disorders) are allowed while
bare keyword path segments (/sleep, /select) are still blocked 6dd1f6
-
-
1.1.42
-
Version 1.1.42 865342
-
perf: skip categories request on search, memoize GraphQL responses
Skip loadCategories() when search is active — results span all categories
so category IDs filter is unnecessary. Saves one GraphQL round-trip per
search keystroke.
Memoize loadCategories() — result is stable per page load, no need to
re-fetch when user clears search and categories view restores.
Memoize loadFaqs() by cache key: search|categoryIds|page|pageSize — same
query params return same data, so repeated calls (e.g. type/clear/type)
hit cache instead of network.
Fix inline event handler order: set search = e.target.value before calling
loadData() so _doLoadData reads correct search value synchronously.
Result: search input → 1 request (faqs only). Clear search → 0 requests
(both categories and faqs from cache). 3a2b32 -
fix: restore search input reactivity in Breeze compatibility mode
Replace textInput: with value + valueUpdate + explicit event binding.
Root cause: Breeze uses KO-ES5 plugin (ko.track) for reactive properties.
KO textInput binding calls eb() to write back, which requires ko.observable()
or _ko_property_writers. ES5 tracked props have neither, so textInput
could not write back the value.
Additionally, listens: { search: loadData } subscribed via _on() (custom
event bus) because search = '' (falsy) at init time, bypassing ko.getObservable
subscription path in Breeze component-ui.js:on().
Fix: value: updates ES5 setter on blur, valueUpdate: input makes it fire
on every keystroke, event: {input: loadData} explicitly triggers loadData
so debounce fires correctly regardless of listens subscription path. 41a95a
-
-
1.4.6
-
1.4.5
-
Version 1.4.5 fc7f6c
-
Fix: validate file content before saving uploaded attachments
- Add MIME type verification for known extensions (jpg, jpeg, png, gif, txt, pdf, xls, xlsx, xsl, doc, docx, zip)
- Add deep image validation via Magento built-in Image Validator (GD/Imagick) for image types to reject polyglot files
- Add PDF magic bytes check (%PDF-) to reject files that only pretend to be PDFs
- Unknown extensions added by admin fall through to Magento Uploader extension whitelist only
- Inject Magento\MediaStorage\Model\File\Validator\Image and Magento\Framework\File\Mime via constructor 9595ed -
Fix: safe default extensions fallback and code style cleanup in Config helper
- Return ['gif','jpeg','jpg','png','txt','pdf'] when allowed_extension config is empty
- Use array_filter() to strip empty values from exploded extension list
- Remove trailing whitespace in isCaptchaEnabledForHelpdesk() 3a3595
-
-
head
-
fix: replace Zend_Cache constants with strings for Magento 2.4.9 compat 46ae71
-
-
1.0.2
-
head
-
fix: replace Zend_Cache constant with string for Magento 2.4.9 compat 9a8169
-
-
1.17.6
-
Version 1.17.6 edbcbc
-
refactor: update module-logger to ^2.0, remove from module sequence a8cca6
-
Add bin/test script for running unit and integration tests 8ae030
-
Extract Logger into swissup/module-logger, update namespaces and dependencies cc376b
-
fix: improve interaction mode in requirejs override
- fix 'touch' event to 'touchstart' for proper mobile support
- add requestIdleCallback(userInteractionListener) as idle fallback
- add setTimeout fallback (2s) to ensure JS loads without interaction
- fix DOMContentLoaded race condition via readyState check
- extract init() to avoid logic duplication
- remove dead commented code 95e010
-
-
head
-
Prevent news retrieval after each cache flush ac96b7
-