Skip to content

Automerge all deps except CSS preprocessors#8

Open
ErisDS wants to merge 6 commits intomainfrom
expand-css-preprocessor-list
Open

Automerge all deps except CSS preprocessors#8
ErisDS wants to merge 6 commits intomainfrom
expand-css-preprocessor-list

Conversation

@ErisDS
Copy link
Member

@ErisDS ErisDS commented Feb 24, 2026

Summary

  • enable PR automerge for all dependency update types (major, minor, patch, and peer dependencies)
  • keep CSS/style pipeline packages out of automerge for manual review by adding an explicit CSS preprocessor exclusion rule
  • expand CSS package matching so the grouped CSS preprocessor updates include the broader PostCSS/Sass/Less style pipeline used across repos

Validation

  • npx -p renovate renovate-config-validator quiet.json5

@coderabbitai
Copy link

coderabbitai bot commented Feb 24, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 32ca1f34-18c5-4219-9e6d-ae8d50adbebc

📥 Commits

Reviewing files that changed from the base of the PR and between 6390166 and 81fb092.

📒 Files selected for processing (1)
  • quiet.json5
🚧 Files skipped from review as they are similar to previous changes (1)
  • quiet.json5

Walkthrough

Renovate config updated: a single automerge rule now applies to all update types for dependencies, devDependencies, optionalDependencies, peerDependencies, packageManager, and action with automergeType set to "pr", replacing the prior per-version guard and explicit major override. A second rule ("Do not automerge CSS preprocessors") was added/expanded to exclude many CSS/style tooling packages from automerge. The major-bump exception was revised to use matchPackageNames (including a regex for the tryghost namespace and explicit names like gscan and knex-migrator) and continues to set major: { automerge: false }.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Automerge all deps except CSS preprocessors' directly and concisely summarizes the main changes: enabling automerge for all dependencies while excluding CSS preprocessors.
Description check ✅ Passed The description clearly outlines the changeset objectives including enabling automerge for all dependency types, excluding CSS preprocessors, and expanding CSS package matching.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch expand-css-preprocessor-list

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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

Copy link

@coderabbitai coderabbitai bot left a comment

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 the current code and only fix it if needed.

Inline comments:
In `@quiet.json5`:
- Around line 55-85: The current rule uses both matchPackagePatterns and
matchPackageNames together so Renovate applies AND logic and many CSS tools
(e.g., autoprefixer, cssnano, ember-cli-postcss, gulp-postcss, node-sass,
stylelint, tailwindcss) won't match; update the rule that defines
matchPackagePatterns / matchPackageNames and the similar grouping rule to either
(a) consolidate everything into a single matchPackagePatterns array with regex
entries that cover all listed packages (replacing matchPackageNames), or (b)
split into separate rules so names-only rules use matchPackageNames and
pattern-only rules use matchPackagePatterns, ensuring automerge: false remains
on each rule; keep the same rule identifiers (the blocks containing
matchPackagePatterns, matchPackageNames, and automerge) so Renovate applies the
intended OR semantics.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 71f05eb and 22c2d36.

📒 Files selected for processing (1)
  • quiet.json5

The pending preset update introduced rules that used matchPackagePatterns, which Renovate now auto-migrates and warns about in logs.

This switches those rules to matchPackageNames with equivalent regex/exact matching so behavior stays the same while removing migration noise.
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
quiet.json5 (2)

129-141: ⚠️ Potential issue | 🟠 Major

Grouping rule not expanded to match the new exclusion list, and still uses deprecated matchPackagePatterns.

The PR objective states the CSS package matching should be expanded to cover the broader Sass/Less/PostCSS pipeline. The new exclusion rule (lines 54–83) correctly includes sass, node-sass, less, stylus, stylelint, tailwindcss, etc. — but this grouping rule was not updated to match. As a result, those packages are excluded from automerge (good) but will create separate ungrouped PRs rather than being collected into the "CSS preprocessors" group.

Additionally, matchPackagePatterns is deprecated in current Renovate — Renovate will emit migration warnings. matchPackagePatterns triggers a migration warning in logs, and Renovate internally migrates it to matchPackageNames.

🐛 Proposed fix: align grouping rule with the exclusion list and migrate deprecated keys
-        // Group CSS preprocessors together
-        {
-            "description": "Group CSS preprocessors",
-            "matchPackagePatterns": [
-                "^postcss",
-                "^css"
-            ],
-            "matchPackageNames": [
-                "autoprefixer",
-                "ember-cli-postcss"
-            ],
-            "groupName": "CSS preprocessors"
-        },
+        // Group CSS preprocessors together
+        {
+            "description": "Group CSS preprocessors",
+            "matchPackageNames": [
+                "/^postcss/",
+                "/^css/",
+                "/^sass/",
+                "/^less/",
+                "/^styl/",
+                "autoprefixer",
+                "ember-cli-postcss",
+                "gulp-postcss",
+                "node-sass",
+                "tailwindcss"
+            ],
+            "groupName": "CSS preprocessors"
+        },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@quiet.json5` around lines 129 - 141, Update the "CSS preprocessors" grouping
rule so it matches the same packages the new exclusion list covers and remove
the deprecated matchPackagePatterns key: replace the deprecated
matchPackagePatterns usage in the group with a comprehensive matchPackageNames
array that includes "postcss", "autoprefixer", "ember-cli-postcss" plus the
other pipeline packages from the exclusion list such as "sass", "node-sass",
"less", "stylus", "stylelint", and "tailwindcss" (so the groupName "CSS
preprocessors" collects those PRs instead of leaving them ungrouped); ensure the
rule uses matchPackageNames (not matchPackagePatterns) and keeps the existing
groupName "CSS preprocessors".

119-128: ⚠️ Potential issue | 🟠 Major

Pre-existing bug: matchPackageNames + matchPackagePrefixes AND logic makes this rule unmatchable.

In Renovate, multiple matchers in the same rule are combined with AND logic. This rule requires packages to match both matchPackageNames: ["@tryghost/koenig-lexical"] and matchPackagePrefixes: ["@tryghost/kg-"] simultaneously. Since @tryghost/koenig-lexical doesn't have the @tryghost/kg- prefix, no package can satisfy both conditions—the Koenig group never fires.

Split into two rules with shared groupName, or consolidate using a glob pattern in matchPackageNames:

Proposed fix
-        {
-            "matchPackageNames": [
-                "@tryghost/koenig-lexical"
-            ],
-            "matchPackagePrefixes": [
-                "@tryghost/kg-"
-            ],
-            "groupName": "Koenig packages",
-            // Don't wait for the release age to pass for trusted packages
-            "minimumReleaseAge": "0 days"
-        },
+        {
+            "matchPackageNames": [
+                "@tryghost/koenig-lexical",
+                "@tryghost/kg-**"
+            ],
+            "groupName": "Koenig packages",
+            // Don't wait for the release age to pass for trusted packages
+            "minimumReleaseAge": "0 days"
+        },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@quiet.json5` around lines 119 - 128, The rule currently uses
matchPackageNames alongside matchPackagePrefixes which are ANDed by Renovate,
making the rule unmatchable because "@tryghost/koenig-lexical" does not start
with the "@tryghost/kg-" prefix; update the configuration so packages can match:
either split this into two rules that share the same groupName ("Koenig
packages")—one using matchPackageNames: ["@tryghost/koenig-lexical"] and another
using matchPackagePrefixes: ["@tryghost/kg-"]—or replace both with a single
matchPackageNames entry that uses a glob (e.g., include "@tryghost/kg-*" and
"@tryghost/koenig-lexical") and keep minimumReleaseAge as "0 days".
🧹 Nitpick comments (1)
quiet.json5 (1)

54-83: CSS exclusion rule correctly resolves the prior AND-logic issue.

Using a single matchPackageNames array gives OR semantics across all entries — the fix is correct. Several explicit package names are redundant because they're already covered by the prefix regex patterns (e.g., postcss, postcss-cli, postcss-import, etc. all match /^postcss/; cssnano matches /^css/; sass, sass-embedded match /^sass/; less and stylus/stylelint match their prefix patterns). The only entries that truly need to be listed explicitly are autoprefixer, ember-cli-postcss, gulp-postcss, node-sass, and tailwindcss.

♻️ Suggested trimmed list (optional)
         "matchPackageNames": [
             "/^postcss/",
             "/^css/",
             "/^sass/",
             "/^less/",
             "/^styl/",
             "autoprefixer",
-            "cssnano",
-            "postcss",
-            "postcss-cli",
-            "postcss-import",
-            "postcss-custom-media",
-            "postcss-custom-properties",
-            "postcss-color-mod-function",
-            "postcss-easy-import",
             "ember-cli-postcss",
             "gulp-postcss",
-            "sass",
             "node-sass",
-            "sass-embedded",
-            "less",
-            "stylus",
-            "stylelint",
             "tailwindcss"
         ],
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@quiet.json5` around lines 54 - 83, The matchPackageNames array currently
contains redundant explicit package names alongside prefix regexes which is
unnecessary; update the rule object (the block containing "description": "Do not
automerge CSS preprocessors", "matchPackageNames", and "automerge": false) to
remove redundant entries so that the prefix regexes (/^postcss/, /^css/,
/^sass/, /^less/, /^styl/) cover packages already listed, keeping only the
explicit exceptions that don’t match those regexes (e.g., "autoprefixer",
"ember-cli-postcss", "gulp-postcss", "node-sass", "tailwindcss") to produce a
minimal, equivalent matchPackageNames array while leaving "automerge": false
unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@quiet.json5`:
- Around line 129-141: Update the "CSS preprocessors" grouping rule so it
matches the same packages the new exclusion list covers and remove the
deprecated matchPackagePatterns key: replace the deprecated matchPackagePatterns
usage in the group with a comprehensive matchPackageNames array that includes
"postcss", "autoprefixer", "ember-cli-postcss" plus the other pipeline packages
from the exclusion list such as "sass", "node-sass", "less", "stylus",
"stylelint", and "tailwindcss" (so the groupName "CSS preprocessors" collects
those PRs instead of leaving them ungrouped); ensure the rule uses
matchPackageNames (not matchPackagePatterns) and keeps the existing groupName
"CSS preprocessors".
- Around line 119-128: The rule currently uses matchPackageNames alongside
matchPackagePrefixes which are ANDed by Renovate, making the rule unmatchable
because "@tryghost/koenig-lexical" does not start with the "@tryghost/kg-"
prefix; update the configuration so packages can match: either split this into
two rules that share the same groupName ("Koenig packages")—one using
matchPackageNames: ["@tryghost/koenig-lexical"] and another using
matchPackagePrefixes: ["@tryghost/kg-"]—or replace both with a single
matchPackageNames entry that uses a glob (e.g., include "@tryghost/kg-*" and
"@tryghost/koenig-lexical") and keep minimumReleaseAge as "0 days".

---

Nitpick comments:
In `@quiet.json5`:
- Around line 54-83: The matchPackageNames array currently contains redundant
explicit package names alongside prefix regexes which is unnecessary; update the
rule object (the block containing "description": "Do not automerge CSS
preprocessors", "matchPackageNames", and "automerge": false) to remove redundant
entries so that the prefix regexes (/^postcss/, /^css/, /^sass/, /^less/,
/^styl/) cover packages already listed, keeping only the explicit exceptions
that don’t match those regexes (e.g., "autoprefixer", "ember-cli-postcss",
"gulp-postcss", "node-sass", "tailwindcss") to produce a minimal, equivalent
matchPackageNames array while leaving "automerge": false unchanged.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between db77348 and 6390166.

📒 Files selected for processing (1)
  • quiet.json5

@jloh
Copy link
Member

jloh commented Feb 26, 2026

@ErisDS this will result in all updates merging as PRs instead of merging into the branch as they do currently, is that what we want? Thats going to create a loooot more noise.

Without these, pnpm/npm/yarn version updates (packageManager) and
GitHub Actions updates (action) were excluded from automerge and
required manual merging despite passing CI.
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.

2 participants