Skip to content

Collapsed eslint catalog + finalized flat-config migration#28826

Merged
9larsons merged 1 commit into
mainfrom
eslint9-10-catalog-collapse
Jun 23, 2026
Merged

Collapsed eslint catalog + finalized flat-config migration#28826
9larsons merged 1 commit into
mainfrom
eslint9-10-catalog-collapse

Conversation

@9larsons

@9larsons 9larsons commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Promoted eslint and @eslint/js (9.39.4) from the eslint9 named catalog into the default catalog in pnpm-workspace.yaml and removed the eslint9 block.
  • Swapped every catalog:eslint9 reference back to plain catalog: across every workspace.
  • Added the root eslint.config.mjs covering scripts/ (replaces scripts/.eslintrc.js); added globals to root devDeps as a peer for it.
  • Removed the dead legacy .eslintrc.cjs files in apps/admin-x-framework, apps/admin-x-design-system, and apps/shade — each was shadowed at runtime by its sibling eslint.config.js.
  • Restored the storybook recommended ruleset in apps/shade's flat config by spreading storybookPlugin.configs['flat/recommended']; the plugin was imported but its rules were never applied, leaving the 82 shade stories without storybook lint coverage. One now-redundant inline eslint-disable react-hooks/rules-of-hooks directive in icon.stories.tsx was dropped (the storybook stories-rules block disables it globally).

Test plan

  • pnpm exec eslint src/ in apps/shade, apps/admin-x-framework, apps/admin-x-design-system — 0 errors
  • CI lint passes across every workspace

@9larsons 9larsons requested a review from EvanHahn as a code owner June 23, 2026 14:39
@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 19b092a5-f4bc-4280-aaf2-8a53c2c0db75

📥 Commits

Reviewing files that changed from the base of the PR and between 1dff46d and 6330fde.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (27)
  • apps/activitypub/package.json
  • apps/admin-toolbar/package.json
  • apps/admin-x-design-system/.eslintrc.cjs
  • apps/admin-x-design-system/package.json
  • apps/admin-x-framework/.eslintrc.cjs
  • apps/admin-x-framework/package.json
  • apps/admin-x-settings/package.json
  • apps/admin/package.json
  • apps/announcement-bar/package.json
  • apps/comments-ui/package.json
  • apps/portal/package.json
  • apps/posts/package.json
  • apps/shade/.eslintrc.cjs
  • apps/shade/eslint.config.js
  • apps/shade/package.json
  • apps/shade/src/components/ui/icon.stories.tsx
  • apps/signup-form/package.json
  • apps/sodo-search/package.json
  • apps/stats/package.json
  • eslint.config.mjs
  • ghost/admin/package.json
  • ghost/core/package.json
  • ghost/i18n/package.json
  • ghost/parse-email-address/package.json
  • package.json
  • pnpm-workspace.yaml
  • scripts/.eslintrc.js
💤 Files with no reviewable changes (5)
  • apps/shade/src/components/ui/icon.stories.tsx
  • apps/shade/.eslintrc.cjs
  • scripts/.eslintrc.js
  • apps/admin-x-design-system/.eslintrc.cjs
  • apps/admin-x-framework/.eslintrc.cjs
✅ Files skipped from review due to trivial changes (11)
  • apps/signup-form/package.json
  • apps/admin-x-design-system/package.json
  • package.json
  • ghost/core/package.json
  • ghost/parse-email-address/package.json
  • apps/sodo-search/package.json
  • apps/portal/package.json
  • ghost/i18n/package.json
  • apps/admin/package.json
  • apps/comments-ui/package.json
  • apps/admin-x-settings/package.json
🚧 Files skipped from review as they are similar to previous changes (11)
  • apps/shade/package.json
  • apps/stats/package.json
  • eslint.config.mjs
  • apps/admin-x-framework/package.json
  • apps/posts/package.json
  • apps/announcement-bar/package.json
  • ghost/admin/package.json
  • apps/admin-toolbar/package.json
  • apps/activitypub/package.json
  • apps/shade/eslint.config.js
  • pnpm-workspace.yaml

Walkthrough

This PR updates workspace ESLint dependency management by bumping the shared @eslint/js and eslint catalog versions from 8.57.1 to 9.39.4, removing the separate eslint9 catalog entry, and switching multiple package manifests from catalog:eslint9 to catalog:. It adds globals to the root devDependencies and introduces a root eslint.config.mjs for files under scripts/**/*.{js,cjs,mjs} with ECMAScript 2022 parsing, script source type, and Node globals. The apps/shade application updates its Storybook ESLint configuration to use flat config style, and the apps/activitypub package version is bumped from 3.1.44 to 3.1.45.

Possibly related PRs

  • TryGhost/Ghost#28802: Migrates legacy per-app .eslintrc.cjs files to flat config format alongside the same workspace ESLint 9 catalog consolidation effort.
  • TryGhost/Ghost#28825: Extends the ESLint catalog consolidation by moving additional ESLint plugins and tooling (eslint-plugin-ghost, eslint-plugin-react, typescript-eslint packages) into catalog-based version resolution.
  • TryGhost/Ghost#28805: Shares the root eslint.config.mjs and globals dependency additions with parallel app-level ESLint 9 flat config migrations.
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately and concisely describes the main objective: consolidating the ESLint catalog and completing the flat-config migration.
Description check ✅ Passed The description comprehensively explains the purpose and scope of the changes, including catalog consolidation, root configuration, legacy removal, and Storybook restoration.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch eslint9-10-catalog-collapse

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nx-cloud

nx-cloud Bot commented Jun 23, 2026

Copy link
Copy Markdown

🤖 Nx Cloud AI Fix

Ensure the fix-ci command is configured to always run in your CI pipeline to get automatic fixes in future runs. For more information, please see https://nx.dev/ci/features/self-healing-ci


View your CI Pipeline Execution ↗ for commit 1dff46d

Command Status Duration Result
nx build @tryghost/signup-form ✅ Succeeded <1s View ↗
nx build @tryghost/admin-toolbar ✅ Succeeded <1s View ↗
nx build @tryghost/announcement-bar ✅ Succeeded <1s View ↗
nx build @tryghost/portal ✅ Succeeded <1s View ↗
nx build @tryghost/comments-ui ✅ Succeeded <1s View ↗
nx build @tryghost/sodo-search ✅ Succeeded <1s View ↗
nx build @tryghost/activitypub ✅ Succeeded 1s View ↗
nx run @tryghost/admin-x-settings:test:acceptance ✅ Succeeded 9m 47s View ↗
Additional runs (15) ✅ Succeeded ... View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-06-23 15:31:29 UTC

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@package.json`:
- Line 87: The `globals` dependency in package.json is using an inlined version
string instead of referencing the workspace catalog. Replace the inlined version
"17.6.0" with "catalog:" for the globals entry in package.json. Then add a
corresponding entry for globals in the `catalog:` section of pnpm-workspace.yaml
with the version pinned to "17.6.0" to follow the workspace catalog convention.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 332e5c47-c024-4b9e-947b-8725d1a1aff4

📥 Commits

Reviewing files that changed from the base of the PR and between 01c566a and 2ea0c18.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (22)
  • apps/activitypub/package.json
  • apps/admin-toolbar/package.json
  • apps/admin-x-design-system/package.json
  • apps/admin-x-framework/package.json
  • apps/admin-x-settings/package.json
  • apps/admin/package.json
  • apps/announcement-bar/package.json
  • apps/comments-ui/package.json
  • apps/portal/package.json
  • apps/posts/package.json
  • apps/shade/package.json
  • apps/signup-form/package.json
  • apps/sodo-search/package.json
  • apps/stats/package.json
  • eslint.config.mjs
  • ghost/admin/package.json
  • ghost/core/package.json
  • ghost/i18n/package.json
  • ghost/parse-email-address/package.json
  • package.json
  • pnpm-workspace.yaml
  • scripts/.eslintrc.js
💤 Files with no reviewable changes (1)
  • scripts/.eslintrc.js

Comment thread package.json Outdated
@codecov

codecov Bot commented Jun 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.07%. Comparing base (df26903) to head (6330fde).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #28826      +/-   ##
==========================================
- Coverage   74.10%   74.07%   -0.03%     
==========================================
  Files        1560     1560              
  Lines      134883   134883              
  Branches    16335    16332       -3     
==========================================
- Hits        99952    99912      -40     
- Misses      33921    33991      +70     
+ Partials     1010      980      -30     
Flag Coverage Δ
e2e-tests 76.19% <ø> (-0.04%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@9larsons 9larsons force-pushed the eslint9-10-catalog-collapse branch 2 times, most recently from 0721324 to 1dff46d Compare June 23, 2026 15:10
@9larsons 9larsons changed the title Collapsed eslint catalog + added root config + scripts cleanup Collapsed eslint catalog + finalized flat-config migration Jun 23, 2026
no ref

- promoted eslint and @eslint/js (9.39.4) from the 'eslint9' named catalog into the default catalog in pnpm-workspace.yaml and removed the 'eslint9' block
- swapped every 'catalog:eslint9' reference back to plain 'catalog:' across every workspace
- added the root eslint.config.mjs covering scripts/ (replaces scripts/.eslintrc.js); added 'globals' to root devDeps as a peer for it
- removed the dead legacy .eslintrc.cjs files in apps/admin-x-framework, apps/admin-x-design-system, and apps/shade — each was shadowed at runtime by its sibling eslint.config.js
- restored the storybook recommended ruleset in apps/shade's flat config by spreading storybookPlugin.configs['flat/recommended']; the plugin was imported but its rules were never applied, leaving the 82 shade stories without storybook lint coverage. One now-redundant inline eslint-disable react-hooks/rules-of-hooks directive in icon.stories.tsx was dropped (the storybook stories-rules block disables it globally).
@9larsons 9larsons force-pushed the eslint9-10-catalog-collapse branch from 1dff46d to 6330fde Compare June 23, 2026 15:18
@9larsons 9larsons enabled auto-merge (squash) June 23, 2026 15:22
@9larsons 9larsons merged commit 44d5055 into main Jun 23, 2026
54 checks passed
@9larsons 9larsons deleted the eslint9-10-catalog-collapse branch June 23, 2026 15:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant