From 8b8499e5ef9d2f6c1e22977e2ef5187466fb5f86 Mon Sep 17 00:00:00 2001 From: Aashil Date: Tue, 22 Sep 2026 14:23:08 +0545 Subject: [PATCH 1/7] Fix missing grunt-cli/gulp-rename and PHP 8 makepot crash grunt-cli and gulp-rename were used by the Gruntfile/gulpfile but never declared as dependencies, so `npm run makepot`/`compress` and `npm run styles` failed outright on a clean install regardless of the grunt/gulp versions installed. Also bumps grunt and grunt-contrib-* packages, fixes compress excluding composer files from the release zip, fixes makepot's PHP 8 create_function() crash, and keeps Uglify output ES5 with license headers preserved. Co-Authored-By: Claude Sonnet 5 --- .npmrc | 1 + Gruntfile.js | 13 +- languages/flash.pot | 1226 +++++++++++++++++++++++++++++++++++++------ package.json | 20 +- 4 files changed, 1087 insertions(+), 173 deletions(-) create mode 100644 .npmrc diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..d373ccb --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +omit=optional diff --git a/Gruntfile.js b/Gruntfile.js index b42096a..9a9176f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -29,7 +29,15 @@ module.exports = function( grunt ){ // Minify all .js files. uglify: { options: { - preserveComments: /(?:^!|@(?:license|preserve|cc_on))/ + // Keep output ES5 for legacy-browser support. + compress: { + arrows: false + }, + // `preserveComments` was removed in grunt-contrib-uglify 2.x+; + // this is the option UglifyJS itself understands. + output: { + comments: /(?:^!|@(?:license|preserve|cc_on))/ + } }, frontend: { files: [{ @@ -91,6 +99,7 @@ module.exports = function( grunt ){ options: { type: 'wp-theme', domainPath: 'languages', + potComments: 'Copyright (C) {year} ThemeGrill\nThis file is distributed under the GNU General Public License, version 3 (GPLv3).', potHeaders: { 'report-msgid-bugs-to': 'themegrill@gmail.com', 'language-team': 'ThemeGrill \n" +"Language-Team: ThemeGrill on %s" msgstr "" +#: inc/template-tags.php:59 inc/template-tags.php:67 #. translators: used between list items, there is a space after the comma -#: inc/template-tags.php:59, inc/template-tags.php:67 msgid ", " msgstr "" +#: inc/template-tags.php:77 template-parts/content-page.php:37 #. translators: %s: Name of current post -#: inc/template-tags.php:77, template-parts/content-page.php:37 msgid "Edit %s" msgstr "" -#: searchform.php:12 -msgctxt "label" -msgid "Search for:" +#: template-parts/content-none.php:14 +msgid "Nothing Found" msgstr "" -#: searchform.php:13 -msgctxt "placeholder" -msgid "Search …" +#: template-parts/content-none.php:21 +msgid "Ready to publish your first post? Get started here." msgstr "" -#: searchform.php:15 -msgctxt "submit button" -msgid "Search" +#: template-parts/content-none.php:25 +msgid "" +"Sorry, but nothing matched your search terms. Please try again with some " +"different keywords." msgstr "" -#: template-parts/content-none.php:14 -msgid "Nothing Found" +#: template-parts/content-none.php:31 +msgid "" +"It seems we can’t find what you’re looking for. Perhaps " +"searching can help." msgstr "" -#: template-parts/content-none.php:31 -msgid "It seems we can’t find what you’re looking for. Perhaps searching can help." +#: template-parts/content-page.php:25 template-parts/content.php:67 +msgid "Pages:" msgstr "" -#: template-parts/content-none.php:25 -msgid "Sorry, but nothing matched your search terms. Please try again with some different keywords." +#. Theme URI of the plugin/theme +msgid "https://themegrill.com/themes/flash" msgstr "" -#: template-parts/content-none.php:21 -msgid "Ready to publish your first post? Get started here." +#. Description of the plugin/theme +msgid "" +"Flash is free responsive multipurpose WordPress theme – truly a versatile " +"theme perfect for any type of website you want. Like never before, it " +"provides multiple pre-built demos which can be imported in seconds using " +"ThemeGrill Demo Importer Plugin. The theme fully integrates with Flash " +"Toolkit and SiteOrigin’s Page Builder Plugin that makes theme more " +"user-friendly and easy. Additionally, theme features multiple blog layouts, " +"WooCommerce support, multiple header styles, multiple color options etc." msgstr "" -#: template-parts/content-page.php:25, template-parts/content.php:67 -msgid "Pages:" +#. Author of the plugin/theme +msgid "ThemeGrill" msgstr "" + +#. Author URI of the plugin/theme +msgid "https://themegrill.com" +msgstr "" + +#. Template Name of the plugin/theme +msgid "Pagebuilder" +msgstr "" + +#: comments.php:33 +#. translators: %s: post title +msgctxt "comments title" +msgid "One Thought on “%s”" +msgstr "" + +#: comments.php:37 +#. translators: 1: number of comments, 2: post title +msgctxt "comments title" +msgid "%1$s Reply to “%2$s”" +msgid_plural "%1$s Thoughts on “%2$s”" +msgstr[0] "" +msgstr[1] "" + +#: searchform.php:12 +msgctxt "label" +msgid "Search for:" +msgstr "" + +#: searchform.php:13 +msgctxt "placeholder" +msgid "Search …" +msgstr "" + +#: searchform.php:15 +msgctxt "submit button" +msgid "Search" +msgstr "" \ No newline at end of file diff --git a/package.json b/package.json index f23b86d..d71dd10 100644 --- a/package.json +++ b/package.json @@ -14,15 +14,15 @@ "browser-sync": "^2.24.4", "eslint": "^4.19.1", "eslint-config-wordpress": "^2.0.0", - "grunt": "^0.4.5", + "grunt": "^1.6.3", "grunt-checktextdomain": "~1.0.0", - "grunt-contrib-compress": "^1.2.0", + "grunt-contrib-compress": "^2.0.0", "grunt-contrib-cssmin": "^0.14.0", - "grunt-contrib-jshint": "~0.11.3", + "grunt-contrib-jshint": "^3.2.0", "grunt-contrib-sass": "^1.0.0", - "grunt-contrib-uglify": "^0.10.1", - "grunt-contrib-watch": "~0.6.1", - "grunt-wp-i18n": "~0.5.3", + "grunt-contrib-uglify": "^5.2.2", + "grunt-contrib-watch": "^1.1.0", + "grunt-wp-i18n": "^1.0.4", "gulp": "^4.0.2", "gulp-autoprefixer": "^5.0.0", "gulp-eslint": "^4.0.2", @@ -30,6 +30,7 @@ "gulp-notify": "^3.2.0", "gulp-phpcs": "^2.2.0", "gulp-plumber": "^1.2.0", + "gulp-rename": "^2.1.0", "gulp-rtlcss": "^1.2.0", "gulp-sass": "^5.1.0", "gulp-stylelint": "^7.0.0", @@ -39,11 +40,11 @@ "gulp-zip": "^4.1.0", "node-bourbon": "^4.2.3", "stylelint": "^9.2.1", - "stylelint-config-wordpress": "^12.0.0" + "stylelint-config-wordpress": "^13.0.0" }, "engines": { - "node": ">=8.9.3", - "npm": ">=5.5.1" + "node": ">=20.0.0", + "npm": ">=9.0.0" }, "scripts": { "styles": "gulp styles", @@ -53,6 +54,7 @@ "build": "npm run styles && npm run uglify && npm run makepot && npm run compress" }, "dependencies": { + "grunt-cli": "^1.4.3", "gulp-line-ending-corrector": "^1.0.3", "sass": "^1.77.0" } From e9d6051ffb2b0652652342b7e93710a25fcd0c94 Mon Sep 17 00:00:00 2001 From: Aashil Date: Tue, 22 Sep 2026 14:23:08 +0545 Subject: [PATCH 2/7] Modernize WPCS tooling and fix a stale/wrong phpcs.xml phpcs.xml's text_domain was set to "cenote" -- a different ThemeGrill theme, clearly copy-pasted in -- and referenced sniffs/properties (WordPress.VIP.RestrictedFunctions, DeprecatedFunctions' minimum_supported_version) removed in modern WPCS, which made phpcs error out entirely rather than just report stale findings. Fixed the text domain, dropped the obsolete rules, excluded the bundled third-party Kirki library from linting, and bumped composer.json to current squizlabs/wpcs/phpcompatibility-wp versions with phpcs/phpcbf scripts. Adds a PR workflow that lints changed PHP files only (added/copied/modified/renamed, not deleted). Co-Authored-By: Claude Sonnet 5 --- .github/workflows/phpcs.yml | 41 +++ composer.json | 12 +- composer.lock | 570 ++++++++++++++++++++++++++++++------ phpcs.xml | 33 +-- 4 files changed, 539 insertions(+), 117 deletions(-) create mode 100644 .github/workflows/phpcs.yml diff --git a/.github/workflows/phpcs.yml b/.github/workflows/phpcs.yml new file mode 100644 index 0000000..7400a93 --- /dev/null +++ b/.github/workflows/phpcs.yml @@ -0,0 +1,41 @@ +name: PHPCS + +on: + pull_request: + paths: + - '**.php' + +jobs: + phpcs: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + tools: composer + + - name: Get changed PHP files + id: changed-files + uses: tj-actions/changed-files@v45 + with: + files: '**.php' + separator: ' ' + + - name: Install Composer dependencies + if: steps.changed-files.outputs.any_changed == 'true' + run: composer install --no-interaction --no-progress + + - name: Run PHPCS on changed files + if: steps.changed-files.outputs.any_changed == 'true' + env: + PHP_FILES: ${{ steps.changed-files.outputs.added_files }} ${{ steps.changed-files.outputs.copied_files }} ${{ steps.changed-files.outputs.modified_files }} ${{ steps.changed-files.outputs.renamed_files }} + run: | + if [ -n "$(echo "$PHP_FILES" | xargs)" ]; then + composer phpcs -- $PHP_FILES + else + echo "No existing PHP files to lint (only deletions in this PR)." + fi diff --git a/composer.json b/composer.json index 0552936..dbf3125 100644 --- a/composer.json +++ b/composer.json @@ -3,10 +3,10 @@ "description": "Free responsive multipurpose WordPress theme from ThemeGrill", "type": "project", "require-dev": { - "squizlabs/php_codesniffer": "3.2", - "wp-coding-standards/wpcs": "0.14.0", - "wimg/php-compatibility": "*", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2" + "squizlabs/php_codesniffer": "^3.9", + "wp-coding-standards/wpcs": "^3.1", + "phpcompatibility/phpcompatibility-wp": "^2.1", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0" }, "license": "MIT", "authors": [ @@ -19,5 +19,9 @@ "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true } + }, + "scripts": { + "phpcs": "phpcs", + "phpcbf": "phpcbf" } } diff --git a/composer.lock b/composer.lock index 733b212..c33ffc5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,39 +4,43 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d6c3a87f97e6d1eb45347782e3fe8b11", - "packages": [ + "content-hash": "69033e3b1d96407d5b621bfbe5e060b8", + "packages": [], + "packages-dev": [ { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", + "version": "v1.2.1", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "963f0c67bffde0eac41b56be71ac0e8ba132f0bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/963f0c67bffde0eac41b56be71ac0e8ba132f0bd", + "reference": "963f0c67bffde0eac41b56be71ac0e8ba132f0bd", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + "composer-plugin-api": "^2.2", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.1.0 || ^4.0" }, "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" + "composer/composer": "^2.2", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev", + "yoast/phpunit-polyfills": "^1.0" }, "type": "composer-plugin", "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, "autoload": { "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -46,17 +50,16 @@ "authors": [ { "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" + "email": "opensource@frenck.dev", + "homepage": "https://frenck.dev", + "role": "Open source developer" }, { "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", "keywords": [ "PHPCodeSniffer", "PHP_CodeSniffer", @@ -76,93 +79,192 @@ "tests" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "security": "https://github.com/PHPCSStandards/composer-installer/security/policy", + "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2022-02-04T12:51:07+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2026-05-06T08:26:05+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.2.0", + "name": "phpcompatibility/php-compatibility", + "version": "9.3.5", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ba816f2e1bacc16278792c78b67c730dfff064a6" + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ba816f2e1bacc16278792c78b67c730dfff064a6", - "reference": "ba816f2e1bacc16278792c78b67c730dfff064a6", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + }, + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0" + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, + "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "LGPL-3.0-or-later" ], "authors": [ { - "name": "Greg Sherwood", + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", "keywords": [ + "compatibility", "phpcs", "standards" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", + "source": "https://github.com/PHPCompatibility/PHPCompatibility" }, - "time": "2017-12-12T21:36:10+00:00" + "time": "2019-12-27T09:44:58+00:00" }, { - "name": "wimg/php-compatibility", - "version": "9.3.5", + "name": "phpcompatibility/phpcompatibility-paragonie", + "version": "1.3.4", "source": { "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git", + "reference": "244d7b04fc4bc2117c15f5abe23eb933b5f02bbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/244d7b04fc4bc2117c15f5abe23eb933b5f02bbf", + "reference": "244d7b04fc4bc2117c15f5abe23eb933b5f02bbf", "shasum": "" }, "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + "phpcompatibility/php-compatibility": "^9.0" }, - "conflict": { - "squizlabs/php_codesniffer": "2.6.2" + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "paragonie/random_compat": "dev-master", + "paragonie/sodium_compat": "dev-master" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "paragonie", + "phpcs", + "polyfill", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/security/policy", + "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie" + }, + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcompatibility", + "type": "thanks_dev" + } + ], + "time": "2025-09-19T17:43:28+00:00" + }, + { + "name": "phpcompatibility/phpcompatibility-wp", + "version": "2.1.8", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git", + "reference": "7c8d18b4d90dac9e86b0869a608fa09158e168fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/7c8d18b4d90dac9e86b0869a608fa09158e168fa", + "reference": "7c8d18b4d90dac9e86b0869a608fa09158e168fa", + "shasum": "" + }, + "require": { + "phpcompatibility/php-compatibility": "^9.0", + "phpcompatibility/phpcompatibility-paragonie": "^1.0", + "squizlabs/php_codesniffer": "^3.3" }, "require-dev": { - "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + "dealerdirect/phpcodesniffer-composer-installer": "^1.0" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.", "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." }, "type": "phpcodesniffer-standard", @@ -173,9 +275,172 @@ "authors": [ { "name": "Wim Godden", - "homepage": "https://github.com/wimg", "role": "lead" }, + { + "name": "Juliette Reinders Folmer", + "role": "lead" + } + ], + "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.", + "homepage": "http://phpcompatibility.com/", + "keywords": [ + "compatibility", + "phpcs", + "standards", + "static analysis", + "wordpress" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues", + "security": "https://github.com/PHPCompatibility/PHPCompatibilityWP/security/policy", + "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP" + }, + "funding": [ + { + "url": "https://github.com/PHPCompatibility", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcompatibility", + "type": "thanks_dev" + } + ], + "time": "2025-10-18T00:05:59+00:00" + }, + { + "name": "phpcsstandards/phpcsextra", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHPCSExtra.git", + "reference": "39467533fdb742446d68c1d10ac33d625ee0311c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/39467533fdb742446d68c1d10ac33d625ee0311c", + "reference": "39467533fdb742446d68c1d10ac33d625ee0311c", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "phpcsstandards/phpcsutils": "^1.2.3", + "squizlabs/php_codesniffer": "^3.13.5 || ^4.0.1" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcsstandards/phpcsdevcs": "^1.2.0", + "phpcsstandards/phpcsdevtools": "^1.2.1", + "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSExtra/graphs/contributors" + } + ], + "description": "A collection of sniffs and standards for use with PHP_CodeSniffer.", + "keywords": [ + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHPCSExtra/issues", + "security": "https://github.com/PHPCSStandards/PHPCSExtra/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSExtra" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2026-07-27T11:13:17+00:00" + }, + { + "name": "phpcsstandards/phpcsutils", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", + "reference": "5f35d9408c54d7b529501f3c688b6eae562aea1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/5f35d9408c54d7b529501f3c688b6eae562aea1f", + "reference": "5f35d9408c54d7b529501f3c688b6eae562aea1f", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.13.5 || ^4.0.1" + }, + "require-dev": { + "ext-filter": "*", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcsstandards/phpcsdevcs": "^1.2.0", + "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0 || ^3.0.0" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" + } + }, + "autoload": { + "classmap": [ + "PHPCSUtils/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ { "name": "Juliette Reinders Folmer", "homepage": "https://github.com/jrfnl", @@ -183,43 +448,162 @@ }, { "name": "Contributors", - "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" } ], - "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", - "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "description": "A suite of utility functions for use with PHP_CodeSniffer", + "homepage": "https://phpcsutils.com/", "keywords": [ - "compatibility", + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", "phpcs", - "standards" + "phpcs3", + "phpcs4", + "standards", + "static analysis", + "tokens", + "utility" ], "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibility" + "docs": "https://phpcsutils.com/", + "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", + "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSUtils" }, - "abandoned": "phpcompatibility/php-compatibility", - "time": "2019-12-27T09:44:58+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2026-07-27T10:28:41+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.13.6", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "4c378e1a528ea066890fc2397cbdd2f94eb2fc91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/4c378e1a528ea066890fc2397cbdd2f94eb2fc91", + "reference": "4c378e1a528ea066890fc2397cbdd2f94eb2fc91", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2026-08-06T00:17:32+00:00" }, { "name": "wp-coding-standards/wpcs", - "version": "0.14.0", + "version": "3.4.1", "source": { "type": "git", "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", - "reference": "8cadf48fa1c70b2381988e0a79e029e011a8f41c" + "reference": "ec2ff942335f33683a5957a85d138753876a05cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/8cadf48fa1c70b2381988e0a79e029e011a8f41c", - "reference": "8cadf48fa1c70b2381988e0a79e029e011a8f41c", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/ec2ff942335f33683a5957a85d138753876a05cf", + "reference": "ec2ff942335f33683a5957a85d138753876a05cf", "shasum": "" }, "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.9.0 || ^3.0.2" + "ext-filter": "*", + "ext-libxml": "*", + "ext-tokenizer": "*", + "ext-xmlreader": "*", + "php": ">=7.2", + "phpcsstandards/phpcsextra": "^1.5.1", + "phpcsstandards/phpcsutils": "^1.2.3", + "squizlabs/php_codesniffer": "^3.13.5" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpcompatibility/php-compatibility": "^10.0.0@dev", + "phpcsstandards/phpcsdevtools": "^1.2.0", + "phpunit/phpunit": "^8.0 || ^9.0" }, "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3" + "ext-iconv": "For improved results", + "ext-mbstring": "For improved results" }, "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", @@ -229,30 +613,36 @@ "authors": [ { "name": "Contributors", - "homepage": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/graphs/contributors" + "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors" } ], "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", "keywords": [ "phpcs", "standards", + "static analysis", "wordpress" ], "support": { - "issues": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues", - "source": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards", - "wiki": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/wiki" + "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues", + "source": "https://github.com/WordPress/WordPress-Coding-Standards", + "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki" }, - "time": "2017-11-01T15:10:46+00:00" + "funding": [ + { + "url": "https://opencollective.com/php_codesniffer", + "type": "custom" + } + ], + "time": "2026-07-27T11:53:23+00:00" } ], - "packages-dev": [], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.3.0" + "platform": {}, + "platform-dev": {}, + "plugin-api-version": "2.6.0" } diff --git a/phpcs.xml b/phpcs.xml index de148b8..9779379 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -26,40 +26,27 @@ */vendor/* */node_modules/* + + */inc/kirki/* + - + - + - - - - - - - - - - - - - - - + + + - - + + From 4008e8876569821adf99615b0c7ea7f036c44707 Mon Sep 17 00:00:00 2001 From: Aashil Date: Tue, 22 Sep 2026 14:33:23 +0545 Subject: [PATCH 3/7] Add PR build ZIP workflow Supersedes the stalled PR #105, which used yarn (this repo has never used yarn -- no yarn.lock exists, npm/package-lock.json is what's actually used) and predates this branch's PHPCS/composer.json setup. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/pr-build-zip.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/pr-build-zip.yml diff --git a/.github/workflows/pr-build-zip.yml b/.github/workflows/pr-build-zip.yml new file mode 100644 index 0000000..c76937a --- /dev/null +++ b/.github/workflows/pr-build-zip.yml @@ -0,0 +1,25 @@ +name: Build Testable ZIP + +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + branches: [master] + workflow_dispatch: + +jobs: + zip: + uses: themegrill/.github/.github/workflows/pr-build-zip.yml@master + with: + node-version: '20.x' + php-version: '7.4' + package-manager: npm + composer-install: true + build-command: npm run build + zip-glob: 'dist/*.zip' + artifacts-bucket: themegrill-pr-artifacts + public-base-url: https://themegrill-pr-artifacts.s3.amazonaws.com + s3-region: us-east-1 + secrets: + BOT_TOKEN: ${{ secrets.BOT_TOKEN }} + ARTIFACTS_KEY: ${{ secrets.ARTIFACTS_KEY }} + ARTIFACTS_SECRET: ${{ secrets.ARTIFACTS_SECRET }} From 8339fa163758ef614f325dcc05564cdc2b72bbc0 Mon Sep 17 00:00:00 2001 From: Aashil Date: Tue, 22 Sep 2026 14:34:43 +0545 Subject: [PATCH 4/7] Trigger initial PR build ZIP run #build-zip From 55c977c03ab33d0f5d0779d181726e890cdbd036 Mon Sep 17 00:00:00 2001 From: Aashil Date: Tue, 22 Sep 2026 14:37:43 +0545 Subject: [PATCH 5/7] Use npm install instead of npm ci in the build-zip workflow package-lock.json isn't committed here (matches accelerate-pro's own .gitignore convention), so npm ci has no lockfile to install from and fails with EUSAGE. #build-zip Co-Authored-By: Claude Sonnet 5 --- .github/workflows/pr-build-zip.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pr-build-zip.yml b/.github/workflows/pr-build-zip.yml index c76937a..7b68dad 100644 --- a/.github/workflows/pr-build-zip.yml +++ b/.github/workflows/pr-build-zip.yml @@ -13,6 +13,9 @@ jobs: node-version: '20.x' php-version: '7.4' package-manager: npm + # package-lock.json isn't committed in this repo (.gitignore), so `npm ci` + # (the default install here) has nothing to install from. + install-command: npm install composer-install: true build-command: npm run build zip-glob: 'dist/*.zip' From 50a78688c1dcf1a1cb5219e5b6e246c398bff73c Mon Sep 17 00:00:00 2001 From: Aashil Date: Tue, 22 Sep 2026 14:41:33 +0545 Subject: [PATCH 6/7] Exclude bundled Kirki library strings from the generated POT makepot only excluded deploy/, so third-party Kirki UI/library strings (font weights, control labels, etc.) were leaking into languages/flash.pot alongside this theme's own translatable strings. Co-Authored-By: Claude Sonnet 5 --- Gruntfile.js | 3 +- languages/flash.pot | 711 +------------------------------------------- 2 files changed, 3 insertions(+), 711 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 9a9176f..67faca9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -109,7 +109,8 @@ module.exports = function( grunt ){ options: { potFilename: 'flash.pot', exclude: [ - 'deploy/.*' // Exclude deploy directory + 'deploy/.*', // Exclude deploy directory + 'inc/kirki/.*' // Exclude bundled third-party Kirki library ] } } diff --git a/languages/flash.pot b/languages/flash.pot index 1c2646f..4f22176 100644 --- a/languages/flash.pot +++ b/languages/flash.pot @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: Flash 1.4.12\n" "Report-Msgid-Bugs-To: themegrill@gmail.com\n" -"POT-Creation-Date: 2026-09-22 08:37:26+00:00\n" +"POT-Creation-Date: 2026-09-22 08:56:27+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -13,39 +13,6 @@ msgstr "" "Language-Team: ThemeGrill Date: Tue, 22 Sep 2026 14:43:03 +0545 Subject: [PATCH 7/7] Align PHPCompatibility testVersion with the theme's declared PHP minimum style.css declares Requires PHP: 5.6, but testVersion was set to 7.4- -- silently raising the theme's real compatibility contract without that being a deliberate product decision. Set to 5.6- to match what's actually declared; bumping the real minimum is a separate call for the team to make, not something to smuggle into tooling setup. Co-Authored-By: Claude Sonnet 5 --- phpcs.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpcs.xml b/phpcs.xml index 9779379..400cda9 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -47,6 +47,6 @@ - +