- drop the separate validate job (the zip is validated after packaging); same in release
- shared scripts/ci/assert-built-assets.sh (BusyBox-safe), now also used by release
- actions/cache for npm, shopware-cli and composer
- phpunit: shopware-cli image instead of a 4.5 min apt install; MariaDB 10.11
(11.4 broke Shopware's migrations: Duplicate column 'sorter_key')
- protect-main.sh: drop the removed validate context
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Replaces the curl/tar install and setup-node steps; the image ships the
CLI plus its PHP/Node toolchain.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
setup-php hangs on the runner even with runner=self-hosted; the CLI download
returned a non-gzip body once under concurrent load.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- validate job needs no PHP (the package job already validates without it)
- phpunit: runner=self-hosted so setup-php does not hang under act; replace the
unhealthy service healthcheck with a TCP wait loop
- .config/shopware-extension.yml: set compatibility_date
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- plugin-checks workflow: shopware-cli validate, package + built-JS assertion, phpunit
- release: validate, package from the merge commit, validate the zip, create the release
via the Gitea API, publish the same zip to the Composer registry
- scripts/protect-main.sh sets required status checks via tea api
- bump to 0.1.0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- Wires the backend from/to filter into the UI via sw-filter-panel with
a hand-built date-filter config (no DAL entity needed — sw-filter-panel's
only external dependency, filterService, persists through the generic
user_config entity, not one for the filtered resource).
- Makes the datetime and sizeBytes columns sortable (ascending/descending)
using the same Mixin.getByName('listing') core list pages use, which
also persists sort state in the URL query string.
- Replaces the ad hoc `new Date(value).toLocaleString()` with
Shopware.Utils.format.date, matching the existing fileSize formatting
and respecting the admin's locale/timezone.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The installed PHPUnit (12.x, ahead of this plugin's ^10.0 dev
constraint) no longer parses the @dataProvider PHPDoc annotation,
so both tests silently ran their data-provider method with zero
arguments and failed with ArgumentCountError.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The admin date filter can send a naive local date string for "from" but
a UTC Z-suffixed instant for "to" (sw-date-filter widens it client-side
via Date#toISOString()). Comparing those directly against dump
timestamps (parsed in PHP's default timezone) shifted the effective
cutoff by the timezone offset. Re-express both bounds in the app's
default timezone before applying the day boundary.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>