Recent Activities
This page shows what are we working on.
-
head
-
3.0.0
-
Fixed version constraint ac9d2d
-
3.0.0 660bdd
-
Remove unused code a4ac19
-
Fixed not working brand colors 06f973
-
Update theme editor:
- Reuse existing css props when possible
- search => minisearch to match element name
- Remove mobile settings to simplify editor b0e44b -
Theme Editor 3e00dd
-
WIP e1d587
-
WIP: Theme Editor 25fd50
-
Update according to breeze-theme prop names c50294
-
-
head
-
feat(highlight): add per-field icon to highlight elements affected by a CSS var
Each settings field with a CSS variable now gets a small icon; clicking it
marks the live-preview elements that variable actually affects (scanned
from the theme's real compiled CSS via a new css-var-usage-index utility,
since most fields write to a :root-scoped var with no declared selector).
Replaces the earlier global toolbar toggle + hover model, which required
arming highlight mode then hovering fields one at a time.
Behavior: 1 matched element marks it and scrolls it into view if
off-screen; 2-5 mark all with no scroll (ambiguous target); more than 5
show a count message instead of marking, to avoid clutter on broad vars. b31c7b
-
-
1.0.10
-
Version 1.0.10
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 27b827 -
fix(phpcs): move test stub classes to their own files
Magento2 coding standard requires one class per file (PSR-1). The
AuthSessionStub, BackendSessionStub and ThemeStub classes added
alongside their test cases in 4478961 tripped the sniff. Move each
into a Stub/ subdirectory next to the test that uses it, matching the
existing Test/Unit/Model/Provider/Stub/ArrayObjectStub.php convention.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> a14e73 -
test(unit): migrate removed PHPUnit 10-12 APIs, keep 9.6 compatible
PHPUnit 12 run had 156 errors; the suite now passes 833/833 on
PHPUnit 9.6, 10.5 and 12 from a single codebase.
- Replace addMethods() (removed in v12, 27 calls / 24 files):
* GraphQL context mocks use Magento\GraphQl\Model\Query\ContextInterface,
which declares getUserId()/getUserType() and extends the base
resolver ContextInterface
* ThemeResolverTest: stdClass mock replaced with a ThemeStub class
* Auth/Backend session mocks: magic __call methods (getUser, setData,
unsetData) declared on abstract stubs extending the real session
- Drop MockBuilder calls removed in v12 (disableArgumentCloning,
disallowMockingUnknownTypes, disableAutoReturnValueGeneration)
- Add #[DataProvider]/#[Test] attributes next to the doc-comment
annotations: v12 reads only attributes, the CI's 9.6.5 phar reads
only annotations; 10/11 dedupe, so nothing runs twice
- Make resolverClassProvider() and its helpers static (hard error in v12)
- Replace isType('string') (removed in v13) with callback('is_string')
Closes #24
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 447896 -
fix(status): treat cached empty status map as a cache miss
If the status map was loaded while breeze_theme_editor_status was
empty (mid-deploy, reimported dump), the serialized empty array was
cached for 24h and every request kept failing with
'Status "DRAFT" not found' even after the rows appeared. Skip caching
an empty map and ignore a cached empty value so recovery only needs
the table rows, not a cache flush.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> ac77a2
-
-
head
-
1.0.4
-
1.5.55
-
head
-
Sync products widget styles with product list. Closes #13 241874
-
-
3.1.2
-
head
-
fix(preload): default missing as attribute to style on existing links
In-place update (1.18.1) stopped writing the "as" attribute that the
old re-create path always set. rel="preload" without a valid "as"
triggers browser warnings and may double-fetch the resource.
- add regression test for the missing-as default
- rename testProcessRemovesDuplicatePreloadLinks to match the
keep-in-place semantics; drop stale comments
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 47d617 -
fix(preload): keep existing preload links in place to preserve CSS order
AddLinkPreload removed every existing rel="preload" link and re-inserted
it right after <title>, above the critical <style>. Deferred stylesheets
(converted by DeferCss, with onload flipping them back to
rel="stylesheet") ended up before critical CSS in the DOM, inverting the
cascade: critical CSS overrode the full theme CSS after load.
- Existing preload links keep their DOM position; per-type rel,
fetchpriority (within limits) and crossorigin are updated in place
- Only new preloader assets are inserted after <title>; href dedupe
against existing links and the live-script prefetch guard are kept
- Replace applyPreloadChanges() with updatePreloadLinkInPlace() +
insertPreloadLinks()
Tests: add regression tests for link position relative to critical
<style>; suite OK (644 tests, 1944 assertions).
Fixes #97
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> 07ef75 -
fix: replace deprecated SplObjectStorage::contains() for PHP 8.5
PHP 8.5 deprecates SplObjectStorage::contains(); with an error handler
that escalates deprecations (e.g. Ignition) this kills page rendering
inside the optimizer pipeline. Use offsetExists() — identical
semantics, available since PHP 5.3.
Fixes #96
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> cee3e2
-
-
1.18.0
-
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
-
-
2.31.2
-
2.31.1
-
3.1.2
-
3.1.1
-
3.1.1
-
3.1.0