From 1cfb09a9c96600e8312474d9326ae4d80fe4b639 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Wed, 15 Jul 2026 22:29:11 -0500 Subject: [PATCH 1/9] Add Zed settings for Intelephense PHP language server. Disable PHPactor in favor of Intelephense with WordPress stubs and paths tuned for this plugin repo. Co-authored-by: Cursor --- .zed/settings.json | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .zed/settings.json diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000..acfc86b --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,34 @@ +{ + "languages": { + "PHP": { + "language_servers": ["intelephense", "!phpactor", "..."] + } + }, + "lsp": { + "intelephense": { + "settings": { + "environment": { + "phpVersion": "7.4.0" + }, + "stubs": [ + "wordpress", + "wordpress-globals", + "Core", + "standard", + "date", + "json", + "mbstring" + ], + "files": { + "maxSize": 5000000, + "exclude": [ + "**/.git/**", + "**/node_modules/**", + "**/vendor/**", + "**/build/**" + ] + } + } + } + } +} From 588ccbac722d0b2ae4ce06f4cdc0f3efa547f437 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Wed, 15 Jul 2026 22:32:27 -0500 Subject: [PATCH 2/9] Configure Zed to use Prettier and ESLint instead of Biome. Add eslint.config.cjs so the editor ESLint server uses the same wp-scripts rules as npm run lint:js. Co-authored-by: Cursor --- .zed/settings.json | 54 ++++++++++++++++++++++++++++++++++++++++++++++ eslint.config.cjs | 1 + 2 files changed, 55 insertions(+) create mode 100644 eslint.config.cjs diff --git a/.zed/settings.json b/.zed/settings.json index acfc86b..1edbade 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -2,6 +2,55 @@ "languages": { "PHP": { "language_servers": ["intelephense", "!phpactor", "..."] + }, + "JavaScript": { + "language_servers": ["eslint", "!biome", "..."], + "format_on_save": "on", + "formatter": [ + { "code_action": "source.fixAll.eslint" }, + { + "external": { + "command": "node_modules/.bin/prettier", + "arguments": ["--stdin-filepath", "{buffer_path}"] + } + } + ] + }, + "TypeScript": { + "language_servers": ["eslint", "!biome", "..."], + "format_on_save": "on", + "formatter": [ + { "code_action": "source.fixAll.eslint" }, + { + "external": { + "command": "node_modules/.bin/prettier", + "arguments": ["--stdin-filepath", "{buffer_path}"] + } + } + ] + }, + "TSX": { + "language_servers": ["eslint", "!biome", "..."], + "format_on_save": "on", + "formatter": [ + { "code_action": "source.fixAll.eslint" }, + { + "external": { + "command": "node_modules/.bin/prettier", + "arguments": ["--stdin-filepath", "{buffer_path}"] + } + } + ] + }, + "JSON": { + "language_servers": ["!biome", "..."], + "format_on_save": "on", + "formatter": { + "external": { + "command": "node_modules/.bin/prettier", + "arguments": ["--stdin-filepath", "{buffer_path}"] + } + } } }, "lsp": { @@ -29,6 +78,11 @@ ] } } + }, + "eslint": { + "settings": { + "workingDirectory": { "mode": "auto" } + } } } } diff --git a/eslint.config.cjs b/eslint.config.cjs new file mode 100644 index 0000000..c1b7018 --- /dev/null +++ b/eslint.config.cjs @@ -0,0 +1 @@ +module.exports = require( '@wordpress/scripts/config/eslint.config.cjs' ); From d995ee0de1cb37e47ea59a0750edc2d608461c95 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Wed, 15 Jul 2026 22:33:39 -0500 Subject: [PATCH 3/9] Add Stylelint validation for CSS and SCSS in Zed settings. Match VS Code behavior: lint css/scss via stylelint-lsp and apply fixes on save. Co-authored-by: Cursor --- .zed/settings.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.zed/settings.json b/.zed/settings.json index 1edbade..77202ec 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -51,6 +51,20 @@ "arguments": ["--stdin-filepath", "{buffer_path}"] } } + }, + "CSS": { + "language_servers": ["stylelint-lsp", "..."], + "format_on_save": "on", + "code_actions_on_format": { + "source.fixAll.stylelint": true + } + }, + "SCSS": { + "language_servers": ["stylelint-lsp", "..."], + "format_on_save": "on", + "code_actions_on_format": { + "source.fixAll.stylelint": true + } } }, "lsp": { @@ -83,6 +97,13 @@ "settings": { "workingDirectory": { "mode": "auto" } } + }, + "stylelint-lsp": { + "settings": { + "stylelint": { + "validate": ["css", "scss"] + } + } } } } From 757cbbc3b5003016cab4da81ab24b39f3073178f Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Wed, 15 Jul 2026 22:35:08 -0500 Subject: [PATCH 4/9] Disable Biome entirely in Zed for this project. Block it at the project root, require a biome.json to start, and override global Biome formatter settings. Co-authored-by: Cursor --- .zed/settings.json | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/.zed/settings.json b/.zed/settings.json index 77202ec..2b0d315 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -1,11 +1,16 @@ { + "language_servers": ["!biome"], "languages": { "PHP": { "language_servers": ["intelephense", "!phpactor", "..."] }, "JavaScript": { - "language_servers": ["eslint", "!biome", "..."], + "language_servers": ["eslint", "!biome"], "format_on_save": "on", + "code_actions_on_format": { + "source.fixAll.biome": false, + "source.organizeImports.biome": false + }, "formatter": [ { "code_action": "source.fixAll.eslint" }, { @@ -17,8 +22,12 @@ ] }, "TypeScript": { - "language_servers": ["eslint", "!biome", "..."], + "language_servers": ["eslint", "!biome"], "format_on_save": "on", + "code_actions_on_format": { + "source.fixAll.biome": false, + "source.organizeImports.biome": false + }, "formatter": [ { "code_action": "source.fixAll.eslint" }, { @@ -30,8 +39,12 @@ ] }, "TSX": { - "language_servers": ["eslint", "!biome", "..."], + "language_servers": ["eslint", "!biome"], "format_on_save": "on", + "code_actions_on_format": { + "source.fixAll.biome": false, + "source.organizeImports.biome": false + }, "formatter": [ { "code_action": "source.fixAll.eslint" }, { @@ -43,8 +56,12 @@ ] }, "JSON": { - "language_servers": ["!biome", "..."], + "language_servers": ["!biome"], "format_on_save": "on", + "code_actions_on_format": { + "source.fixAll.biome": false, + "source.organizeImports.biome": false + }, "formatter": { "external": { "command": "node_modules/.bin/prettier", @@ -53,14 +70,14 @@ } }, "CSS": { - "language_servers": ["stylelint-lsp", "..."], + "language_servers": ["stylelint-lsp", "!biome"], "format_on_save": "on", "code_actions_on_format": { "source.fixAll.stylelint": true } }, "SCSS": { - "language_servers": ["stylelint-lsp", "..."], + "language_servers": ["stylelint-lsp", "!biome"], "format_on_save": "on", "code_actions_on_format": { "source.fixAll.stylelint": true @@ -68,6 +85,11 @@ } }, "lsp": { + "biome": { + "settings": { + "require_config_file": true + } + }, "intelephense": { "settings": { "environment": { From 95468f29be0b4fc21478a0c5b7820e83ce8eafd7 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Wed, 15 Jul 2026 22:37:02 -0500 Subject: [PATCH 5/9] Use Zed's built-in Prettier integration in project settings. Replace external node_modules/.bin/prettier with native formatter and require_config to match VS Code. Co-authored-by: Cursor --- .zed/settings.json | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/.zed/settings.json b/.zed/settings.json index 2b0d315..f5e0cba 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -1,5 +1,8 @@ { "language_servers": ["!biome"], + "prettier": { + "require_config": true + }, "languages": { "PHP": { "language_servers": ["intelephense", "!phpactor", "..."] @@ -13,12 +16,7 @@ }, "formatter": [ { "code_action": "source.fixAll.eslint" }, - { - "external": { - "command": "node_modules/.bin/prettier", - "arguments": ["--stdin-filepath", "{buffer_path}"] - } - } + "prettier" ] }, "TypeScript": { @@ -30,12 +28,7 @@ }, "formatter": [ { "code_action": "source.fixAll.eslint" }, - { - "external": { - "command": "node_modules/.bin/prettier", - "arguments": ["--stdin-filepath", "{buffer_path}"] - } - } + "prettier" ] }, "TSX": { @@ -47,12 +40,7 @@ }, "formatter": [ { "code_action": "source.fixAll.eslint" }, - { - "external": { - "command": "node_modules/.bin/prettier", - "arguments": ["--stdin-filepath", "{buffer_path}"] - } - } + "prettier" ] }, "JSON": { @@ -62,12 +50,7 @@ "source.fixAll.biome": false, "source.organizeImports.biome": false }, - "formatter": { - "external": { - "command": "node_modules/.bin/prettier", - "arguments": ["--stdin-filepath", "{buffer_path}"] - } - } + "formatter": "prettier" }, "CSS": { "language_servers": ["stylelint-lsp", "!biome"], From b5787c369a1708be868dcb0a88a16bb1720f3268 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Wed, 15 Jul 2026 22:41:55 -0500 Subject: [PATCH 6/9] fix: use mise action for setup --- .github/workflows/lint.yml | 18 ++++++------------ mise.toml | 4 ++++ 2 files changed, 10 insertions(+), 12 deletions(-) create mode 100644 mise.toml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 8a20e6c..3f68428 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,20 +23,14 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 - - name: Setup Node.js - uses: actions/setup-node@v4 + - name: Setup tools + uses: jdx/mise-action@v4 + env: + MISE_PHP_VERSION: ${{ matrix.php }} with: - node-version-file: .nvmrc - cache: npm - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - tools: composer:v2 - coverage: none + cache_key: "{{default}}-php-${{ matrix.php }}" - name: Install Composer dependencies run: composer install --prefer-dist --no-progress diff --git a/mise.toml b/mise.toml new file mode 100644 index 0000000..c159b9f --- /dev/null +++ b/mise.toml @@ -0,0 +1,4 @@ +[tools] +node = "20.20.2" +php = "8.4" +composer = "2" From fffdd42ba8443139b8d3eda33717d1d945eca34a Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Wed, 15 Jul 2026 22:49:16 -0500 Subject: [PATCH 7/9] fix: use composer github directory --- mise.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mise.toml b/mise.toml index c159b9f..f9ec0f6 100644 --- a/mise.toml +++ b/mise.toml @@ -1,4 +1,4 @@ [tools] node = "20.20.2" php = "8.4" -composer = "2" +"github:composer/composer" = "2" From 13f0f65ce370ba8a6fb9252d03c276c675dbbc8c Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Wed, 15 Jul 2026 22:55:47 -0500 Subject: [PATCH 8/9] revert: workflow due to php support --- .github/workflows/lint.yml | 16 +++++++++++----- mise.toml | 8 +++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3f68428..bdf8ca8 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -25,12 +25,18 @@ jobs: - name: Checkout uses: actions/checkout@v7 - - name: Setup tools - uses: jdx/mise-action@v4 - env: - MISE_PHP_VERSION: ${{ matrix.php }} + - name: Setup Node.js + uses: actions/setup-node@v7 with: - cache_key: "{{default}}-php-${{ matrix.php }}" + node-version-file: .nvmrc + cache: npm + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: composer:v2 + coverage: none - name: Install Composer dependencies run: composer install --prefer-dist --no-progress diff --git a/mise.toml b/mise.toml index f9ec0f6..bcfdf8c 100644 --- a/mise.toml +++ b/mise.toml @@ -1,4 +1,10 @@ +[plugins] +php = "https://github.com/verzly/mise-php#latest" + [tools] node = "20.20.2" php = "8.4" -"github:composer/composer" = "2" + +[env] +# Prebuilt static binaries (Composer is bundled per PHP version by verzly/mise-php). +_.php = { prebuilt_static = true } From 6c0cf0f9362e9917574baf7d54d7fddf07ee3723 Mon Sep 17 00:00:00 2001 From: Jacob Wolf Date: Thu, 16 Jul 2026 09:21:21 -0500 Subject: [PATCH 9/9] fix: exclude zed settings, eslint and mise config from bundle --- composer.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/composer.json b/composer.json index 5ab7231..73657f1 100644 --- a/composer.json +++ b/composer.json @@ -74,6 +74,7 @@ ".github", "/.github/**", ".vscode", + ".zed", "/dist", "/dist/**", "build-dev", @@ -90,6 +91,8 @@ ".prettierignore", ".editorconfig", ".prettierrc.js", + ".eslint.config.js", + "mise.toml", ".nvmrc", ".wp-env.json", ".wp-env.override.json",