Latest Releases
These releases come straight from our repositories. Latest releases may not be published yet.
swissup / shopify-relax
2.17.0 Sepbreezefront / module-breeze-ai
1.8.7 Sepswissup / module-firecheckout-integrations
1.4.11 Sepbreezefront / module-breeze-content-builder
1.2.3 Sepswissup / module-ajaxlayerednavigation
1.6.10 Sepswissup / firecheckout
1.36.0 Sep-
1.36.0
Report (rev.1)
Package was generated and uploaded to GitHub on with the following dependencies:
swissup/module-address-autocomplete:1.8.4
swissup/module-address-field-manager:1.6.21
swissup/module-address-validation:1.0.4
swissup/module-bot-protection:1.0.2
swissup/module-checkout-cart:1.5.10
swissup/module-checkout-consumer-rights:1.1.0
swissup/module-checkout-fields:1.6.17
swissup/module-checkout-registration:1.2.3
swissup/module-checkout-success:2.0.12
swissup/module-customer-field-manager:1.2.11
swissup/module-delivery-date:1.9.0
swissup/module-firecheckout:1.36.0
swissup/module-geoip:1.6.2
swissup/module-orderattachment:1.5.3
swissup/module-subscribe-at-checkout:1.3.6
swissup/module-taxvat:1.4.9
swissup/module-checkout:1.5.4
swissup/module-core:1.13.1
swissup/module-field-manager:1.3.7
swissup/module-firecheckout-integrations:1.4.10
Changelog (autogenerated)
swissup/module-address-autocomplete — 1.8.4 (was 1.8.3)
-
Version 1.8.4 d5c54d
-
Fixed proper city detection for some addresses
```
Not Working: Via Spinazzola, 24, Rovolon, PD, Italia
Working: Via Spinazzola, 24, Roma
```
https://developers.google.com/maps/documentation/places/web-service/legacy/supported_types:
```
The (cities) type collection instructs the Places service to return results that match locality or administrative_area_level_3.
``` 7578e9
swissup/module-checkout-consumer-rights — 1.1.0 (was 1.0.0)
-
Version 1.1.0 02da05
-
Allow to withdraw order from customer account page 58b399
-
Better naming for emails templates 009a6e
-
Feature: send notification email to customer 816777
-
Add order Grid items variable 3f1522
-
Order items block expects DB order_id b64f33
-
Fixed not working custom template 6f1f41
-
Version 1.0.2 0c6a57
-
Add translation to 'Read your legal guarantee rights' phrase af71dd
-
Version 1.0.1 61551f
-
Added missing Breeze integration e2467d
swissup/module-checkout-fields — 1.6.17 (was 1.6.16)
-
Version 1.6.17 61f0d4
-
Fixed double-escape in email template c41827
-
Mage-OS 3.5.0 compatibility: moved block used in email from Adminhtml f636e5
swissup/module-checkout-success — 2.0.12 (was 2.0.11)
swissup/module-delivery-date — 1.9.0 (was 1.8.1)
swissup/module-firecheckout — 1.36.0 (was 1.35.0)
-
Version 1.36.0 c6b511
-
Fix readonly env: deploy jsbuild during static content deployment f29be0
-
Fix "Maximum call stack size exceeded" in jsbuild
mage/requirejs/static.js patches the global require.load and parks the
previous function on require._load. That patch is not idempotent, and its
modules are reachable two ways on a FireCheckout page: as the plain
<script> we inject after require.js, and via the bundles entry below.
requirejs keeps `defined` per context, so with a second context on the
page (e.g. "$" next to "_") the jsbuild factory runs twice: require._load
then holds the first wrapper, whose own fallback is itself, and
require.load recurses forever. Symptoms are the RangeError plus
"Load timeout for modules: mage/requirejs/text".
Pin require._load to the real loader before static.js can install the
wrapper, so any number of jsbuild evaluations stay harmless.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> bed9ef -
Replace curl-powered deployment with Asset\Publisher
This commit should improve speed of jsbuild in development mode a13472 -
Replace curl-powered deployment with Asset\Publisher
This commit should improve speed of jsbuild in development mode 46c4d4
swissup/module-core — 1.13.1 (was 1.12.27)
-
Version 1.13.1 5b7b24
-
Fixed invisible update instructions when Mollie Payments is installed 72aab6
-
Version 1.13.0 f34c7b
-
Fill the links after ajax refresh b6a316
-
Show loading state on the "Check for Updates" button 1ab16e
-
Use optimized repo to fetch latest releases 1aa8fb
-
Check theme source files in Virtual Theme Check (#19)
Making a virtual theme physical while its source files are unavailable is
what breaks the storefront with "Required parameter 'theme_dir' was not
passed", so the check now reports the state of the files and the fixer
refuses to touch the themes it cannot read.
- Virtual Theme Check gets Path and Status columns
- Status names the files Magento can't read. Unreadable file is never
reported as a removed one - a failed stat cannot tell them apart
- Fix All opens up the permissions of unreadable source files and skips
the themes that are still unreadable, listing them in the response
- Readability check extracted into Swissup\Core\Model\Theme\SourceFiles,
shared by the block and the controller
- Config table styles shared between Modules and Virtual Theme Check
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 88915a -
Check theme source files in Virtual Theme Check (#19)
Making a virtual theme physical while its source files are unavailable is
what breaks the storefront with "Required parameter 'theme_dir' was not
passed", so the check now reports the state of the files and the fixer
refuses to touch the themes it cannot read.
- Virtual Theme Check gets Path and Status columns
- Status names the files Magento can't read. Unreadable file is never
reported as a removed one - a failed stat cannot tell them apart
- Fix All opens up the permissions of unreadable source files and skips
the themes that are still unreadable, listing them in the response
- Readability check extracted into Swissup\Core\Model\Theme\SourceFiles,
shared by the block and the controller
- Config table styles shared between Modules and Virtual Theme Check
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 6e39e2 -
Mark core section with badge when outdated modules found 9a3764
-
Outdated modules badge and Modules config group (#25) 7df026
-
MCS fix 3b9121
-
Update instructions 0e686f
-
Read links info from marketplace meta 21e95b
-
Keep the last check time when a refresh fails
Removing the stored time was what made the next load re-check the feed.
An unreachable feed left no time at all: the config page had nothing to
display, and every page load kept re-checking until one request made it
through.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 3437f9 -
Post the modules refresh to an action of its own
The refresh drops the version check throttle and re-reads the remote
source, and a get carries no form key validation - Magento checks it for
post requests only, and the url secret key is optional. Reading the list
stays a get, so the two live in separate actions now.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 4a95c9 -
Keep the module links out of the response
The links cell is rendered by the server and never touched by js.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 7556db -
Send only the module metadata the browser renders
The merged Loader record carries the local filesystem path and the
download, license and purchase-code fields of the remote feed. None of
them is rendered by the config page, so keep them on the server.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 2bd425 -
Too much red 2e307e
-
Use the same `outdated` class name everywhere
The version span was already renamed, while the row and the js still said
`_outdated` - a row that stopped being outdated kept its red version pill.
Since the row now wears the very same class, the pill rule had to be
scoped to the version cell, or the whole row would turn red.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> c21086 -
Report the check time with the modules, and keep outdated rows first
Two things the clients were guessing at:
The `Check for Updates` handler stamped the label with the current time,
but the request may have re-used the stored packages after a failed feed
request - `just now` was not always true. And an automatic load did check
the remote source, yet nothing updated the label at all. The endpoint now
returns `['items' => ..., 'last_check' => ...]`, and the label follows the
time the server reports for every load.
The table was re-rendered cell by cell, so a module that became outdated
kept its old position while the counter above it grew. Mark the rows and
move the outdated ones back to the top - both groups stay sorted by name.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 70f271 -
Keep the last check time once the check is due
The timestamp was stored with a one hour lifetime and the throttle was
`is the entry still there?`. Handy, but it also meant the config page
could no longer tell how old the data was as soon as the check was due -
exactly when that is worth showing next to `Check for Updates`.
Store it without a lifetime and compare the age instead. Same hour
boundary, and the label now reads `Last checked 2 h ago` instead of
disappearing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 9e4c2a -
Don't update the modules on refresh. Wait for isVersionCheckRequired 129e66
-
Hovered color for outdated badge 0a0016
-
Show outdated modules count in config and add Modules group
The admin had no hint that installed Swissup modules have updates
available - one had to open Module Manager to find out.
Add a counter badge to the Swissup tab of the config navigation, and a
Modules group in Swissup > Core listing every installed module with its
installed and latest version, outdated ones first.
Neither of them may slow down the config page, so both render from the
data stored in var/swissup/core (Loader::setOfflineMode()), and the
versions, the counters and the badge itself are then refreshed by a
single ajax request shared by all the consumers. `Check for Updates`
re-runs that request with refresh=1, which drops the version check
throttle and re-reads the remote source.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> bf1ad6 -
Move core config to the top as it will display outdated modules 115f37
-
Added ability to immidiately re-check remote source for updates `-r` 357d33
-
Keep the remote packages data in files instead of the cache (#24) cbeecc
-
Trim the comments down to what is not in the code
The two lock docblocks carried the same paragraph, and save() explained
the reasoning that belongs in the commit that introduced it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 09d6b9 -
Serialize the writes with a lock taken before the entry is opened
openFile() truncates whatever it opens, so a lock taken afterwards keeps
the writes apart but not the truncations. Two saves could interleave into
one file: the second one truncates, the first one writes a whole entry,
and the second one then overwrites its beginning - leaving the head of
one entry on the tail of another. The length line does not catch that
when both entries encode to the same size, as fixed width values like a
version hash always do.
Take the lock before opening, on a file of its own - the entry cannot be
opened before the lock is held, and the file lock() uses is likely held
by the caller already, which flock would deadlock against.
Failing to open a lock file is no longer reported as a lock held by
somebody else. A lock left behind by another user cannot be opened at
all, and reporting that as contention kept the caller away from the
entry for good - silently serving a list that could never be refreshed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 73cf28 -
Don't download the list that another process has just stored
The version is fetched before the download lock is taken, so a process
that was still asking for it when the lock was released would go on to
download the very list the lock holder had just stored. Look at the
storage once more before downloading.
Also correct what the save() lock claims to do: it serializes the
writes, but the truncation happens in openFile(), outside of it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> d557a0 -
Reject an entry whose expiration time is not a number
A corrupt header such as `expires:invalid` was cast to zero, which reads
as "never expires" - so an entry that should have gone stale could be
served indefinitely instead of being treated as missing. Validate the
field the same way the length line is validated.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 12db16 -
Keep the remote packages data in files instead of the cache
The packages list was kept in the Magento cache, so every cache flush
threw it away and the next admin request had to download it again. It is
now stored under var/swissup/core, where it outlives the flush.
FileStorage writes the expiration time and the data length ahead of the
contents, so an entry knows itself when it goes stale, and a reader can
tell a half-written entry from a complete one - openFile() truncates the
file before the write lock is taken, so a reader can catch the entry
mid-save. An incomplete entry is reported as missing and refetched,
rather than served as if it were whole.
Remote revalidates against the version hash from packages.json, at most
once an hour, and only downloads the full list when that hash moves. The
download itself is guarded by a non-blocking lock, so several admins
hitting the page at once produce one request instead of one each - the
others serve the stored copy, or wait for the download when there is
nothing stored yet. fetch() now reports connection errors and 4xx/5xx
responses by returning an empty body, letting the caller fall back to
the stored data instead of decoding a failure page.
The admin notification feed keeps its last-update timestamp in the same
storage, replacing its own copy of the file handling.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 617dbd -
Small fixes f7eef6
-
Single source of truth for is_outdated, is_installed 37ad01
-
Fixed `Undefined array key "type"` warning b2a9c1
-
Don't show non installed modules when asking for outdated bf5fb1
swissup/module-firecheckout-integrations — 1.4.10 (was 1.4.8)
-
swissup / module-firecheckout
1.36.0 Sepswissup / delivery-date
1.9.0 Sep-
1.9.0
Report (rev.1)
Package was generated and uploaded to GitHub on with the following dependencies:
swissup/module-delivery-date:1.9.0
swissup/module-checkout:1.5.4
swissup/module-core:1.13.1
Changelog (autogenerated)
swissup/module-delivery-date — 1.9.0 (was 1.7.11)
-
Version 1.9.0 1ed62b
-
Delivery date on PaypalExpress checkout review page #17 d2f2eb
-
Version 1.8.1 7f2f72
-
Fixed missing holiday when offset is empty string 90c827
-
Remove private repo from readme, because users add it too 5caa73
-
Version 1.8.0 47e33b
-
Improve naming 413c70
-
Added option that allows to exclude weekends and holidays from offset
Closes #18 850b50 -
Remove old mixin (Magento < 2.2.2) 21dca6
-
Version 1.7.12 8a52a1
-
Fixed unescaped output, closes #16 d6c289
swissup/module-checkout — 1.5.4 (was 1.5.2)
-
Version 1.5.4 e06d43
-
checkout-consumer-rights icon 027810
-
Version 1.5.3 d22b9f
-
Breeze: update integration 880a83
-
Breeze: exclude requirejs-config files 019ad4
-
Revert "Icon for security module"
This reverts commit 088ee1bf78be5f00695d2a469937f090d865688f. c1f27c -
Icon for security module 088ee1
swissup/module-core — 1.13.1 (was 1.12.22)
-
Version 1.13.1 5b7b24
-
Fixed invisible update instructions when Mollie Payments is installed 72aab6
-
Version 1.13.0 f34c7b
-
Fill the links after ajax refresh b6a316
-
Show loading state on the "Check for Updates" button 1ab16e
-
Use optimized repo to fetch latest releases 1aa8fb
-
Check theme source files in Virtual Theme Check (#19)
Making a virtual theme physical while its source files are unavailable is
what breaks the storefront with "Required parameter 'theme_dir' was not
passed", so the check now reports the state of the files and the fixer
refuses to touch the themes it cannot read.
- Virtual Theme Check gets Path and Status columns
- Status names the files Magento can't read. Unreadable file is never
reported as a removed one - a failed stat cannot tell them apart
- Fix All opens up the permissions of unreadable source files and skips
the themes that are still unreadable, listing them in the response
- Readability check extracted into Swissup\Core\Model\Theme\SourceFiles,
shared by the block and the controller
- Config table styles shared between Modules and Virtual Theme Check
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 88915a -
Check theme source files in Virtual Theme Check (#19)
Making a virtual theme physical while its source files are unavailable is
what breaks the storefront with "Required parameter 'theme_dir' was not
passed", so the check now reports the state of the files and the fixer
refuses to touch the themes it cannot read.
- Virtual Theme Check gets Path and Status columns
- Status names the files Magento can't read. Unreadable file is never
reported as a removed one - a failed stat cannot tell them apart
- Fix All opens up the permissions of unreadable source files and skips
the themes that are still unreadable, listing them in the response
- Readability check extracted into Swissup\Core\Model\Theme\SourceFiles,
shared by the block and the controller
- Config table styles shared between Modules and Virtual Theme Check
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 6e39e2 -
Mark core section with badge when outdated modules found 9a3764
-
Outdated modules badge and Modules config group (#25) 7df026
-
MCS fix 3b9121
-
Update instructions 0e686f
-
Read links info from marketplace meta 21e95b
-
Keep the last check time when a refresh fails
Removing the stored time was what made the next load re-check the feed.
An unreachable feed left no time at all: the config page had nothing to
display, and every page load kept re-checking until one request made it
through.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 3437f9 -
Post the modules refresh to an action of its own
The refresh drops the version check throttle and re-reads the remote
source, and a get carries no form key validation - Magento checks it for
post requests only, and the url secret key is optional. Reading the list
stays a get, so the two live in separate actions now.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 4a95c9 -
Keep the module links out of the response
The links cell is rendered by the server and never touched by js.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 7556db -
Send only the module metadata the browser renders
The merged Loader record carries the local filesystem path and the
download, license and purchase-code fields of the remote feed. None of
them is rendered by the config page, so keep them on the server.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 2bd425 -
Too much red 2e307e
-
Use the same `outdated` class name everywhere
The version span was already renamed, while the row and the js still said
`_outdated` - a row that stopped being outdated kept its red version pill.
Since the row now wears the very same class, the pill rule had to be
scoped to the version cell, or the whole row would turn red.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> c21086 -
Report the check time with the modules, and keep outdated rows first
Two things the clients were guessing at:
The `Check for Updates` handler stamped the label with the current time,
but the request may have re-used the stored packages after a failed feed
request - `just now` was not always true. And an automatic load did check
the remote source, yet nothing updated the label at all. The endpoint now
returns `['items' => ..., 'last_check' => ...]`, and the label follows the
time the server reports for every load.
The table was re-rendered cell by cell, so a module that became outdated
kept its old position while the counter above it grew. Mark the rows and
move the outdated ones back to the top - both groups stay sorted by name.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 70f271 -
Keep the last check time once the check is due
The timestamp was stored with a one hour lifetime and the throttle was
`is the entry still there?`. Handy, but it also meant the config page
could no longer tell how old the data was as soon as the check was due -
exactly when that is worth showing next to `Check for Updates`.
Store it without a lifetime and compare the age instead. Same hour
boundary, and the label now reads `Last checked 2 h ago` instead of
disappearing.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 9e4c2a -
Don't update the modules on refresh. Wait for isVersionCheckRequired 129e66
-
Hovered color for outdated badge 0a0016
-
Show outdated modules count in config and add Modules group
The admin had no hint that installed Swissup modules have updates
available - one had to open Module Manager to find out.
Add a counter badge to the Swissup tab of the config navigation, and a
Modules group in Swissup > Core listing every installed module with its
installed and latest version, outdated ones first.
Neither of them may slow down the config page, so both render from the
data stored in var/swissup/core (Loader::setOfflineMode()), and the
versions, the counters and the badge itself are then refreshed by a
single ajax request shared by all the consumers. `Check for Updates`
re-runs that request with refresh=1, which drops the version check
throttle and re-reads the remote source.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> bf1ad6 -
Move core config to the top as it will display outdated modules 115f37
-
Added ability to immidiately re-check remote source for updates `-r` 357d33
-
Keep the remote packages data in files instead of the cache (#24) cbeecc
-
Trim the comments down to what is not in the code
The two lock docblocks carried the same paragraph, and save() explained
the reasoning that belongs in the commit that introduced it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 09d6b9 -
Serialize the writes with a lock taken before the entry is opened
openFile() truncates whatever it opens, so a lock taken afterwards keeps
the writes apart but not the truncations. Two saves could interleave into
one file: the second one truncates, the first one writes a whole entry,
and the second one then overwrites its beginning - leaving the head of
one entry on the tail of another. The length line does not catch that
when both entries encode to the same size, as fixed width values like a
version hash always do.
Take the lock before opening, on a file of its own - the entry cannot be
opened before the lock is held, and the file lock() uses is likely held
by the caller already, which flock would deadlock against.
Failing to open a lock file is no longer reported as a lock held by
somebody else. A lock left behind by another user cannot be opened at
all, and reporting that as contention kept the caller away from the
entry for good - silently serving a list that could never be refreshed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 73cf28 -
Don't download the list that another process has just stored
The version is fetched before the download lock is taken, so a process
that was still asking for it when the lock was released would go on to
download the very list the lock holder had just stored. Look at the
storage once more before downloading.
Also correct what the save() lock claims to do: it serializes the
writes, but the truncation happens in openFile(), outside of it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> d557a0 -
Reject an entry whose expiration time is not a number
A corrupt header such as `expires:invalid` was cast to zero, which reads
as "never expires" - so an entry that should have gone stale could be
served indefinitely instead of being treated as missing. Validate the
field the same way the length line is validated.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 12db16 -
Keep the remote packages data in files instead of the cache
The packages list was kept in the Magento cache, so every cache flush
threw it away and the next admin request had to download it again. It is
now stored under var/swissup/core, where it outlives the flush.
FileStorage writes the expiration time and the data length ahead of the
contents, so an entry knows itself when it goes stale, and a reader can
tell a half-written entry from a complete one - openFile() truncates the
file before the write lock is taken, so a reader can catch the entry
mid-save. An incomplete entry is reported as missing and refetched,
rather than served as if it were whole.
Remote revalidates against the version hash from packages.json, at most
once an hour, and only downloads the full list when that hash moves. The
download itself is guarded by a non-blocking lock, so several admins
hitting the page at once produce one request instead of one each - the
others serve the stored copy, or wait for the download when there is
nothing stored yet. fetch() now reports connection errors and 4xx/5xx
responses by returning an empty body, letting the caller fall back to
the stored data instead of decoding a failure page.
The admin notification feed keeps its last-update timestamp in the same
storage, replacing its own copy of the file handling.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> 617dbd -
Small fixes f7eef6
-
Single source of truth for is_outdated, is_installed 37ad01
-
Fixed `Undefined array key "type"` warning b2a9c1
-
Don't show non installed modules when asking for outdated bf5fb1
-
Version 1.12.27 ac70c7
-
Magento 2.4.9 fix (CLI execute command) d224be
-
Prevent news retrieval after each cache flush ac96b7
-
Version 1.12.26 74dff6
-
Improve the libxml fix to include `data-post` and `data-config` attrs 3fee5e
-
Version 1.12.25 2186f6
-
Fixed broken markup when using newer libxml version (2.15.1) (#23) 61ceab
-
Use same quotes c33f29
-
Update Plugin/FixHtmlMarkup.php
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> e056e2 -
Fixed broken markup when using newer libxml version (2.15.1) 7ff0db
-
Version 1.12.24 4ac8cb
-
Fixed unescaped output, closes #22 67c9f1
-
Version 1.12.23 13d1c7
-
Fixed integrity constraint violation: Duplicate entry for key primary b9d95d
-