From 99745d4c5c59d6730a73b47f46aef5bd2973c2b6 Mon Sep 17 00:00:00 2001 From: Chris Raible Date: Mon, 16 Mar 2026 18:09:39 -0700 Subject: [PATCH 1/3] Fixed Tailwind eslint config path resolution in admin-x-settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same fix as Shade (#26821) — eslint-plugin-tailwindcss resolves config paths relative to CWD, not relative to .eslintrc.cjs. Using __dirname ensures correct resolution when lint-staged runs from repo root. --- apps/admin-x-settings/.eslintrc.cjs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/admin-x-settings/.eslintrc.cjs b/apps/admin-x-settings/.eslintrc.cjs index 3aca02b5771..a1e03b32e50 100644 --- a/apps/admin-x-settings/.eslintrc.cjs +++ b/apps/admin-x-settings/.eslintrc.cjs @@ -1,4 +1,6 @@ /* eslint-env node */ +const tailwindConfig = `${__dirname}/tailwind.config.cjs`; + module.exports = { root: true, extends: [ @@ -137,12 +139,12 @@ module.exports = { 'react/no-array-index-key': 'error', 'react/jsx-key': 'off', - 'tailwindcss/classnames-order': ['error', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-shorthand': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/migration-from-tailwind-2': ['warn', {config: 'tailwind.config.cjs'}], + 'tailwindcss/classnames-order': ['error', {config: tailwindConfig}], + 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: tailwindConfig}], + 'tailwindcss/enforces-shorthand': ['warn', {config: tailwindConfig}], + 'tailwindcss/migration-from-tailwind-2': ['warn', {config: tailwindConfig}], 'tailwindcss/no-arbitrary-value': 'off', 'tailwindcss/no-custom-classname': 'off', - 'tailwindcss/no-contradicting-classname': ['error', {config: 'tailwind.config.cjs'}] + 'tailwindcss/no-contradicting-classname': ['error', {config: tailwindConfig}] } }; From 023d263aa7b2a7e916df1ef68e392b12773a1884 Mon Sep 17 00:00:00 2001 From: Chris Raible Date: Mon, 16 Mar 2026 18:22:04 -0700 Subject: [PATCH 2/3] Fixed Tailwind eslint config path resolution in all remaining apps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same fix as Shade (#26821) and admin-x-settings — eslint-plugin-tailwindcss resolves config paths relative to CWD, not relative to .eslintrc. Using __dirname ensures correct resolution when lint-staged runs from repo root. Affected apps: posts, stats, activitypub, admin-x-design-system, signup-form, comments-ui --- apps/activitypub/.eslintrc.cjs | 12 +++++++----- apps/activitypub/package.json | 2 +- apps/admin-x-design-system/.eslintrc.cjs | 12 +++++++----- apps/comments-ui/.eslintrc.js | 12 +++++++----- apps/posts/.eslintrc.cjs | 12 +++++++----- apps/signup-form/.eslintrc.cjs | 12 +++++++----- apps/stats/.eslintrc.cjs | 12 +++++++----- 7 files changed, 43 insertions(+), 31 deletions(-) diff --git a/apps/activitypub/.eslintrc.cjs b/apps/activitypub/.eslintrc.cjs index eab59b3c4dc..32bd108486a 100644 --- a/apps/activitypub/.eslintrc.cjs +++ b/apps/activitypub/.eslintrc.cjs @@ -1,4 +1,6 @@ /* eslint-env node */ +const tailwindConfig = `${__dirname}/tailwind.config.cjs`; + module.exports = { root: true, extends: [ @@ -51,12 +53,12 @@ module.exports = { 'react/no-array-index-key': 'error', 'react/jsx-key': 'off', - 'tailwindcss/classnames-order': ['error', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-shorthand': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/migration-from-tailwind-2': ['warn', {config: 'tailwind.config.cjs'}], + 'tailwindcss/classnames-order': ['error', {config: tailwindConfig}], + 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: tailwindConfig}], + 'tailwindcss/enforces-shorthand': ['warn', {config: tailwindConfig}], + 'tailwindcss/migration-from-tailwind-2': ['warn', {config: tailwindConfig}], 'tailwindcss/no-arbitrary-value': 'off', 'tailwindcss/no-custom-classname': 'off', - 'tailwindcss/no-contradicting-classname': ['error', {config: 'tailwind.config.cjs'}] + 'tailwindcss/no-contradicting-classname': ['error', {config: tailwindConfig}] } }; diff --git a/apps/activitypub/package.json b/apps/activitypub/package.json index c261786aa2e..8d63235c73f 100644 --- a/apps/activitypub/package.json +++ b/apps/activitypub/package.json @@ -1,6 +1,6 @@ { "name": "@tryghost/activitypub", - "version": "3.1.8", + "version": "3.1.9", "license": "MIT", "repository": { "type": "git", diff --git a/apps/admin-x-design-system/.eslintrc.cjs b/apps/admin-x-design-system/.eslintrc.cjs index 67826212d09..7a091849e4a 100644 --- a/apps/admin-x-design-system/.eslintrc.cjs +++ b/apps/admin-x-design-system/.eslintrc.cjs @@ -1,3 +1,5 @@ +const tailwindConfig = `${__dirname}/tailwind.config.cjs`; + module.exports = { extends: [ 'plugin:ghost/ts', @@ -33,12 +35,12 @@ module.exports = { // Enforce kebab-case (lowercase with hyphens) for all filenames 'ghost/filenames/match-regex': ['error', '^[a-z0-9.-]+$', false], - 'tailwindcss/classnames-order': ['error', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-shorthand': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/migration-from-tailwind-2': ['warn', {config: 'tailwind.config.cjs'}], + 'tailwindcss/classnames-order': ['error', {config: tailwindConfig}], + 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: tailwindConfig}], + 'tailwindcss/enforces-shorthand': ['warn', {config: tailwindConfig}], + 'tailwindcss/migration-from-tailwind-2': ['warn', {config: tailwindConfig}], 'tailwindcss/no-arbitrary-value': 'off', 'tailwindcss/no-custom-classname': 'off', - 'tailwindcss/no-contradicting-classname': ['error', {config: 'tailwind.config.cjs'}] + 'tailwindcss/no-contradicting-classname': ['error', {config: tailwindConfig}] } }; diff --git a/apps/comments-ui/.eslintrc.js b/apps/comments-ui/.eslintrc.js index e47b2364da9..0180217a22e 100644 --- a/apps/comments-ui/.eslintrc.js +++ b/apps/comments-ui/.eslintrc.js @@ -1,4 +1,6 @@ /* eslint-env node */ +const tailwindConfig = `${__dirname}/tailwind.config.cjs`; + module.exports = { root: true, extends: [ @@ -43,13 +45,13 @@ module.exports = { 'react/button-has-type': 'error', 'react/no-array-index-key': 'error', - 'tailwindcss/classnames-order': ['error', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-shorthand': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/migration-from-tailwind-2': ['warn', {config: 'tailwind.config.cjs'}], + 'tailwindcss/classnames-order': ['error', {config: tailwindConfig}], + 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: tailwindConfig}], + 'tailwindcss/enforces-shorthand': ['warn', {config: tailwindConfig}], + 'tailwindcss/migration-from-tailwind-2': ['warn', {config: tailwindConfig}], 'tailwindcss/no-arbitrary-value': 'off', 'tailwindcss/no-custom-classname': 'off', - 'tailwindcss/no-contradicting-classname': ['error', {config: 'tailwind.config.cjs'}], + 'tailwindcss/no-contradicting-classname': ['error', {config: tailwindConfig}], // This rule doesn't work correctly with TypeScript, and TypeScript has its own better version 'no-undef': 'off' diff --git a/apps/posts/.eslintrc.cjs b/apps/posts/.eslintrc.cjs index 24aaf37e594..467cb75515d 100644 --- a/apps/posts/.eslintrc.cjs +++ b/apps/posts/.eslintrc.cjs @@ -1,4 +1,6 @@ /* eslint-env node */ +const tailwindConfig = `${__dirname}/tailwind.config.cjs`; + module.exports = { root: true, extends: [ @@ -48,12 +50,12 @@ module.exports = { 'react/no-array-index-key': 'error', 'react/jsx-key': 'off', - 'tailwindcss/classnames-order': ['error', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-shorthand': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/migration-from-tailwind-2': ['warn', {config: 'tailwind.config.cjs'}], + 'tailwindcss/classnames-order': ['error', {config: tailwindConfig}], + 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: tailwindConfig}], + 'tailwindcss/enforces-shorthand': ['warn', {config: tailwindConfig}], + 'tailwindcss/migration-from-tailwind-2': ['warn', {config: tailwindConfig}], 'tailwindcss/no-arbitrary-value': 'off', 'tailwindcss/no-custom-classname': 'off', - 'tailwindcss/no-contradicting-classname': ['error', {config: 'tailwind.config.cjs'}] + 'tailwindcss/no-contradicting-classname': ['error', {config: tailwindConfig}] } }; diff --git a/apps/signup-form/.eslintrc.cjs b/apps/signup-form/.eslintrc.cjs index c7df1663834..984819b6c6e 100644 --- a/apps/signup-form/.eslintrc.cjs +++ b/apps/signup-form/.eslintrc.cjs @@ -1,4 +1,6 @@ /* eslint-env node */ +const tailwindConfig = `${__dirname}/tailwind.config.cjs`; + module.exports = { root: true, extends: [ @@ -38,12 +40,12 @@ module.exports = { 'react/button-has-type': 'error', 'react/no-array-index-key': 'error', - 'tailwindcss/classnames-order': ['error', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-shorthand': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/migration-from-tailwind-2': ['warn', {config: 'tailwind.config.cjs'}], + 'tailwindcss/classnames-order': ['error', {config: tailwindConfig}], + 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: tailwindConfig}], + 'tailwindcss/enforces-shorthand': ['warn', {config: tailwindConfig}], + 'tailwindcss/migration-from-tailwind-2': ['warn', {config: tailwindConfig}], 'tailwindcss/no-arbitrary-value': 'off', 'tailwindcss/no-custom-classname': 'off', - 'tailwindcss/no-contradicting-classname': ['error', {config: 'tailwind.config.cjs'}] + 'tailwindcss/no-contradicting-classname': ['error', {config: tailwindConfig}] } }; diff --git a/apps/stats/.eslintrc.cjs b/apps/stats/.eslintrc.cjs index e81fd2ad620..dc520b84eea 100644 --- a/apps/stats/.eslintrc.cjs +++ b/apps/stats/.eslintrc.cjs @@ -1,4 +1,6 @@ /* eslint-env node */ +const tailwindConfig = `${__dirname}/tailwind.config.cjs`; + module.exports = { root: true, extends: [ @@ -48,12 +50,12 @@ module.exports = { 'react/no-array-index-key': 'error', 'react/jsx-key': 'off', - 'tailwindcss/classnames-order': ['error', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/enforces-shorthand': ['warn', {config: 'tailwind.config.cjs'}], - 'tailwindcss/migration-from-tailwind-2': ['warn', {config: 'tailwind.config.cjs'}], + 'tailwindcss/classnames-order': ['error', {config: tailwindConfig}], + 'tailwindcss/enforces-negative-arbitrary-values': ['warn', {config: tailwindConfig}], + 'tailwindcss/enforces-shorthand': ['warn', {config: tailwindConfig}], + 'tailwindcss/migration-from-tailwind-2': ['warn', {config: tailwindConfig}], 'tailwindcss/no-arbitrary-value': 'off', 'tailwindcss/no-custom-classname': 'off', - 'tailwindcss/no-contradicting-classname': ['error', {config: 'tailwind.config.cjs'}] + 'tailwindcss/no-contradicting-classname': ['error', {config: tailwindConfig}] } }; From fe2c9a2dddd3670371b46d3eae559b820c430449 Mon Sep 17 00:00:00 2001 From: Chris Raible Date: Mon, 16 Mar 2026 18:32:24 -0700 Subject: [PATCH 3/3] Bumped versions for comments-ui and signup-form --- apps/comments-ui/package.json | 2 +- apps/signup-form/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/comments-ui/package.json b/apps/comments-ui/package.json index a11dcd4b288..e26f48b1374 100644 --- a/apps/comments-ui/package.json +++ b/apps/comments-ui/package.json @@ -1,6 +1,6 @@ { "name": "@tryghost/comments-ui", - "version": "1.3.11", + "version": "1.3.12", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation", diff --git a/apps/signup-form/package.json b/apps/signup-form/package.json index d493613d28f..633f56cfcdd 100644 --- a/apps/signup-form/package.json +++ b/apps/signup-form/package.json @@ -1,6 +1,6 @@ { "name": "@tryghost/signup-form", - "version": "0.3.7", + "version": "0.3.8", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation",