[PR #11] [MERGED] chore(config): add prNotPendingHours + suppressNotifications; full options audit #2

Closed
opened 2026-06-08 09:05:01 +00:00 by ryangr0 · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/webgrip/renovate-config/pull/11
Author: @Ryangr0
Created: 6/3/2026
Status: Merged
Merged: 6/3/2026
Merged by: @Ryangr0

Base: mainHead: feat/options-audit-v1.4.3


📝 Commits (1)

  • 679ae93 chore(config): add prNotPendingHours and suppressNotifications

📊 Changes

1 file changed (+5 additions, -1 deletions)

View changed files

📝 default.json (+5 -1)

📄 Description

What changed

Two additions to default.json:

Option New value Default Reason
prNotPendingHours 2 25 Reduces the fallback timeout from 25 h → 2 h. With prCreation: "not-pending", if CI status checks are still pending after this many hours, Renovate creates the PR anyway. 25 h is unreasonably long for most repos.
suppressNotifications ["prIgnoreNotification"] [] When a PR is closed manually, Renovate adds a dashboard comment saying it won't recreate it. Since we already have recreateWhen: "always", those messages are misleading noise — suppress them.

Note on recreateClosed

The previous session concluded we needed recreateClosed: true. This option no longer exists in Renovate. It was replaced by recreateWhen, and we already have recreateWhen: "always" in the config. That is the correct modern setting.


Complete options audit — everything NOT in default.json

This is every option available in the Renovate JSON schema that isn't already configured. Manager-specific options (gradle, maven, terraform, etc.) are omitted since they're only relevant per-repo.

🔥 High-impact options worth considering

Option Default Description
enabledManagers all Allowlist specific package managers. Useful for repos that should only handle e.g. github-actions + dockerfile.
ignoreDeps [] Blacklist specific dependency names globally.
ignorePaths [] Skip files matching these patterns.
includePaths [] Only process files matching these patterns (allowlist version of ignorePaths).
postUpdateOptions [] Post-update actions: npmDedupe, yarnDedupeFewer, gomodTidy, gomodUpdateImportPaths, etc.
postUpgradeTasks Shell commands to run after branch update. Useful for code-gen or lockfile steps Renovate doesn't know about.
separateMultipleMinor false Like separateMajorMinor but for minor streams. Creates separate PRs per 1.x, 2.x, etc.
abandonmentThreshold null Flag packages with no releases within this duration as abandoned (e.g. "2 years"). Works with the abandonments:recommended preset you already extend.
maxMajorIncrement null Cap how many major versions Renovate can jump in a single PR.

🏷️ PR / branch appearance

Option Default Description
draftPR false Create all PRs as drafts. Good for human-review-only flows.
prHeader null Text to prepend to every PR body.
prFooter "This PR was generated by Renovate bot." Text appended to every PR body. Can be set to "" to remove the footer.
prTitle auto Override the PR title template.
prTitleStrict false Disallow special characters in PR titles.
branchNameStrict false Remove special chars from branch names (keeps only a-z, 0-9, -).
branchPrefix "renovate/" Prefix for all branch names. Change to avoid clutter, e.g. "deps/".
additionalBranchPrefix "" Extra prefix inserted after branchPrefix.
commitBody null Append a body to every commit message, e.g. "[skip ci]".
commitBodyTable false Append a table of all updates to the commit body.
commitHourlyLimit 0 Limit commits per hour (stricter than prHourlyLimit — also covers rebases).
rebaseLabel "rebase" GitHub label that triggers a manual rebase.
keepUpdatedLabel null Label that tells Renovate to always rebase this PR to stay up to date.
stopUpdatingLabel "stop-updating" Label that tells Renovate to stop updating a specific PR.
pruneStaleBranches true (Already default-true) Prune branches with no matching PR. Make explicit if you want to be sure.
pruneBranchAfterAutomerge false Delete the branch after a successful automerge.
hashedBranchLength null Hash branch names that exceed this length. Useful for repo hosts with short branch name limits.

📊 Dashboard customisation

Option Default Description
dependencyDashboardHeader default text Text rendered above the dashboard sections.
dependencyDashboardFooter default text Text rendered below the dashboard sections.
dependencyDashboardLabels [] Labels to apply to the dashboard issue.
dependencyDashboardCategory null Categorise packages in the dashboard.
dependencyDashboardReportAbandonment true Whether to report abandoned packages in the dashboard.
customizeDashboard {} Override dashboard section headers (e.g. rename "Pending Approval").
configWarningReuseIssue false Reopen the existing config-warning issue instead of creating a new one.

🔔 Notifications

Option Default Description
suppressNotifications [] Suppress notification types: artifactErrors, branchAutomergeFailure, configErrorIssue, dependencyLookupWarnings, lockFileErrors, missingCredentialsError, onboardingClose, prEditedNotification, prIgnoreNotification. Adding this PR.
statusCheckNames auto Rename or add custom status check names on Renovate branches.

🤖 Automerge fine-tuning

Option Default Description
automergeType "pr" How automerge works: "pr" (merge via GitHub), "pr-comment" (trigger via comment), "branch" (merge directly without PR).
automergeStrategy "auto" Merge strategy: "auto", "fast-forward", "merge-commit", "rebase", "squash".
automergeSchedule inherits schedule Override schedule specifically for automerge (e.g. merge only during business hours).
automergeComment "automergeComment" Comment text that triggers pr-comment automerge type.
assignAutomerge false Also request review before automerging.
platformAutomerge false Already set.

👥 People / reviews

Option Default Description
reviewers [] Explicit reviewers (GitHub usernames). Used instead of/alongside reviewersFromCodeOwners.
additionalReviewers [] Reviewers added in addition to auto-discovered ones.
reviewersSampleSize null Pick N random reviewers from the pool.
assignees [] Explicit assignees.
assigneesSampleSize null Pick N random assignees.
ignoreReviewers [] Never request review from these users (e.g. bots).
expandCodeOwnersGroups false Expand CODEOWNERS team entries to individual members.
filterUnavailableUsers false Skip users who are marked as unavailable on the platform.

🏗️ Update control

Option Default Description
minimumReleaseAgeBehaviour "timestamp-required" When minimumReleaseAge is set: "timestamp-required" (skip if no timestamp), "timestamp-optional" (allow if no timestamp).
internalChecksAsSuccess false Count passing minimumReleaseAge checks as a "success" status, so prCreation: "not-pending" fires sooner.
updatePinnedDependencies true Whether to update exact pinned versions (e.g. ==1.2.3).
updateInternalDeps false Update internal monorepo cross-package dependencies.
followTag null Follow a specific dist-tag (e.g. "latest", "stable", "lts").
extractVersion null Regex with a version capture group to extract versions from non-standard strings.
versioning auto Override versioning scheme for a package (e.g. "semver", "docker", "regex").
versionCompatibility null Handle composite version strings like node:18-alpine (splits version from compatibility suffix).
constraintsFiltering "none" "strict" — filter releases to only those compatible with detected language constraints.
constraints {} Pin specific tool versions Renovate uses (e.g. { "node": "18", "python": "3.11" }).
registryAliases {} Alias private registry URLs (e.g. { "my-reg": "https://registry.example.com" }).
ignoreDeprecated false Skip deprecated package versions.
ignoreScripts false Don't run npm install lifecycle scripts during update.
ignoreTests false Ignore test-only dependencies (e.g. devDependencies for some managers).
skipInstalls null Skip lock file installation entirely (faster but no lock file updates).
skipArtifactsUpdate false Skip artifact (lock file / checksum) updates.

🔧 Advanced / Custom

Option Default Description
customManagers [] Define custom regex managers for files Renovate doesn't natively support. Very powerful.
customDatasources {} Define custom datasources (e.g. query an internal API for available versions).
logLevelRemap [] Remap internal Renovate log levels (useful for debugging).
bumpVersion null Bump the version field in package.json, Chart.yaml, etc. when deps are updated.
bumpVersions [] ⚗️ Experimental — bump arbitrary version strings in arbitrary files when a dep is updated.
groupName null Group multiple dependency updates into a single PR.
groupSlug auto Branch slug for grouped updates.
groupSingleUpdates false Apply group config even when there's only one update.
minimumGroupSize 2 Don't group unless at least N updates match.
excludeCommitPaths [] Files to exclude from commits (e.g. to prevent lock file commits).
mode "normal" Operation mode: "normal", "silent" (no PRs/issues), "autodiscover".
useBaseBranchConfig "none" Merge config from the target base branch: "none", "merge". Useful for multi-branch repos.
baseBranchPatterns ["$default"] Which branches Renovate should update. Add ["main", "/^release\\/.*/"] for release branches.
hostRules [] Configure registry auth, rate limits, timeouts. Required for private registries.
encrypted {} Store encrypted credentials in the repo config.
gitAuthor null Override the git author for commits.
gitIgnoredAuthors [] Don't rebase branches committed to by these authors.
forkProcessing "auto" How to handle forks: "auto", "enabled", "disabled".
platformCommit false Use the platform's commit API instead of local git (Gitea/Forgejo).
printConfig false Log the resolved config to stdout (debugging).
toolSettings {} Pass settings to Renovate's internal tools (e.g. pip-compile args).

📦 Update type shorthand objects

These let you configure behaviour for a specific update type without writing packageRules. You already use packageRules for this, which is more flexible — these are alternatives.

Option Description
major Config applied to all major updates (e.g. { "major": { "automerge": false } })
minor Config applied to all minor updates
patch Config applied to all patch updates
pin Config applied to all pin updates
digest Config applied to all digest updates
replacement Config applied to all replacement updates
rollback Config applied to all rollback updates

Generated from the Renovate JSON schema v37+ on 2026-06-03. Manager-specific configs (gradle, terraform, npm, docker-compose, etc.) are omitted — they're valid but only relevant when you need to override manager defaults per-repo.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/webgrip/renovate-config/pull/11 **Author:** [@Ryangr0](https://github.com/Ryangr0) **Created:** 6/3/2026 **Status:** ✅ Merged **Merged:** 6/3/2026 **Merged by:** [@Ryangr0](https://github.com/Ryangr0) **Base:** `main` ← **Head:** `feat/options-audit-v1.4.3` --- ### 📝 Commits (1) - [`679ae93`](https://github.com/webgrip/renovate-config/commit/679ae93bc088d8b5a0288d0e8d0f590c9e46652e) chore(config): add prNotPendingHours and suppressNotifications ### 📊 Changes **1 file changed** (+5 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `default.json` (+5 -1) </details> ### 📄 Description ## What changed Two additions to `default.json`: | Option | New value | Default | Reason | |---|---|---|---| | `prNotPendingHours` | `2` | `25` | Reduces the fallback timeout from 25 h → 2 h. With `prCreation: "not-pending"`, if CI status checks are still pending after this many hours, Renovate creates the PR anyway. 25 h is unreasonably long for most repos. | | `suppressNotifications` | `["prIgnoreNotification"]` | `[]` | When a PR is closed manually, Renovate adds a dashboard comment saying it won't recreate it. Since we already have `recreateWhen: "always"`, those messages are misleading noise — suppress them. | ### Note on `recreateClosed` The previous session concluded we needed `recreateClosed: true`. **This option no longer exists** in Renovate. It was replaced by `recreateWhen`, and we already have `recreateWhen: "always"` in the config. That is the correct modern setting. --- ## Complete options audit — everything NOT in `default.json` This is every option available in the [Renovate JSON schema](https://docs.renovatebot.com/renovate-schema.json) that isn't already configured. Manager-specific options (gradle, maven, terraform, etc.) are omitted since they're only relevant per-repo. ### 🔥 High-impact options worth considering | Option | Default | Description | |---|---|---| | `enabledManagers` | all | Allowlist specific package managers. Useful for repos that should only handle e.g. `github-actions` + `dockerfile`. | | `ignoreDeps` | `[]` | Blacklist specific dependency names globally. | | `ignorePaths` | `[]` | Skip files matching these patterns. | | `includePaths` | `[]` | Only process files matching these patterns (allowlist version of `ignorePaths`). | | `postUpdateOptions` | `[]` | Post-update actions: `npmDedupe`, `yarnDedupeFewer`, `gomodTidy`, `gomodUpdateImportPaths`, etc. | | `postUpgradeTasks` | — | Shell commands to run after branch update. Useful for code-gen or lockfile steps Renovate doesn't know about. | | `separateMultipleMinor` | `false` | Like `separateMajorMinor` but for minor streams. Creates separate PRs per `1.x`, `2.x`, etc. | | `abandonmentThreshold` | `null` | Flag packages with no releases within this duration as abandoned (e.g. `"2 years"`). Works with the `abandonments:recommended` preset you already extend. | | `maxMajorIncrement` | `null` | Cap how many major versions Renovate can jump in a single PR. | ### 🏷️ PR / branch appearance | Option | Default | Description | |---|---|---| | `draftPR` | `false` | Create all PRs as drafts. Good for human-review-only flows. | | `prHeader` | `null` | Text to prepend to every PR body. | | `prFooter` | `"This PR was generated by Renovate bot."` | Text appended to every PR body. Can be set to `""` to remove the footer. | | `prTitle` | auto | Override the PR title template. | | `prTitleStrict` | `false` | Disallow special characters in PR titles. | | `branchNameStrict` | `false` | Remove special chars from branch names (keeps only `a-z`, `0-9`, `-`). | | `branchPrefix` | `"renovate/"` | Prefix for all branch names. Change to avoid clutter, e.g. `"deps/"`. | | `additionalBranchPrefix` | `""` | Extra prefix inserted after `branchPrefix`. | | `commitBody` | `null` | Append a body to every commit message, e.g. `"[skip ci]"`. | | `commitBodyTable` | `false` | Append a table of all updates to the commit body. | | `commitHourlyLimit` | `0` | Limit commits per hour (stricter than `prHourlyLimit` — also covers rebases). | | `rebaseLabel` | `"rebase"` | GitHub label that triggers a manual rebase. | | `keepUpdatedLabel` | `null` | Label that tells Renovate to always rebase this PR to stay up to date. | | `stopUpdatingLabel` | `"stop-updating"` | Label that tells Renovate to stop updating a specific PR. | | `pruneStaleBranches` | `true` | (Already default-true) Prune branches with no matching PR. Make explicit if you want to be sure. | | `pruneBranchAfterAutomerge` | `false` | Delete the branch after a successful automerge. | | `hashedBranchLength` | `null` | Hash branch names that exceed this length. Useful for repo hosts with short branch name limits. | ### 📊 Dashboard customisation | Option | Default | Description | |---|---|---| | `dependencyDashboardHeader` | default text | Text rendered above the dashboard sections. | | `dependencyDashboardFooter` | default text | Text rendered below the dashboard sections. | | `dependencyDashboardLabels` | `[]` | Labels to apply to the dashboard issue. | | `dependencyDashboardCategory` | `null` | Categorise packages in the dashboard. | | `dependencyDashboardReportAbandonment` | `true` | Whether to report abandoned packages in the dashboard. | | `customizeDashboard` | `{}` | Override dashboard section headers (e.g. rename "Pending Approval"). | | `configWarningReuseIssue` | `false` | Reopen the existing config-warning issue instead of creating a new one. | ### 🔔 Notifications | Option | Default | Description | |---|---|---| | `suppressNotifications` | `[]` | Suppress notification types: `artifactErrors`, `branchAutomergeFailure`, `configErrorIssue`, `dependencyLookupWarnings`, `lockFileErrors`, `missingCredentialsError`, `onboardingClose`, `prEditedNotification`, `prIgnoreNotification`. **Adding this PR.** | | `statusCheckNames` | auto | Rename or add custom status check names on Renovate branches. | ### 🤖 Automerge fine-tuning | Option | Default | Description | |---|---|---| | `automergeType` | `"pr"` | How automerge works: `"pr"` (merge via GitHub), `"pr-comment"` (trigger via comment), `"branch"` (merge directly without PR). | | `automergeStrategy` | `"auto"` | Merge strategy: `"auto"`, `"fast-forward"`, `"merge-commit"`, `"rebase"`, `"squash"`. | | `automergeSchedule` | inherits `schedule` | Override schedule specifically for automerge (e.g. merge only during business hours). | | `automergeComment` | `"automergeComment"` | Comment text that triggers `pr-comment` automerge type. | | `assignAutomerge` | `false` | Also request review before automerging. | | `platformAutomerge` | `false` | ✅ Already set. | ### 👥 People / reviews | Option | Default | Description | |---|---|---| | `reviewers` | `[]` | Explicit reviewers (GitHub usernames). Used instead of/alongside `reviewersFromCodeOwners`. | | `additionalReviewers` | `[]` | Reviewers added *in addition* to auto-discovered ones. | | `reviewersSampleSize` | `null` | Pick N random reviewers from the pool. | | `assignees` | `[]` | Explicit assignees. | | `assigneesSampleSize` | `null` | Pick N random assignees. | | `ignoreReviewers` | `[]` | Never request review from these users (e.g. bots). | | `expandCodeOwnersGroups` | `false` | Expand CODEOWNERS team entries to individual members. | | `filterUnavailableUsers` | `false` | Skip users who are marked as unavailable on the platform. | ### 🏗️ Update control | Option | Default | Description | |---|---|---| | `minimumReleaseAgeBehaviour` | `"timestamp-required"` | When `minimumReleaseAge` is set: `"timestamp-required"` (skip if no timestamp), `"timestamp-optional"` (allow if no timestamp). | | `internalChecksAsSuccess` | `false` | Count passing `minimumReleaseAge` checks as a "success" status, so `prCreation: "not-pending"` fires sooner. | | `updatePinnedDependencies` | `true` | Whether to update exact pinned versions (e.g. `==1.2.3`). | | `updateInternalDeps` | `false` | Update internal monorepo cross-package dependencies. | | `followTag` | `null` | Follow a specific dist-tag (e.g. `"latest"`, `"stable"`, `"lts"`). | | `extractVersion` | `null` | Regex with a `version` capture group to extract versions from non-standard strings. | | `versioning` | auto | Override versioning scheme for a package (e.g. `"semver"`, `"docker"`, `"regex"`). | | `versionCompatibility` | `null` | Handle composite version strings like `node:18-alpine` (splits version from compatibility suffix). | | `constraintsFiltering` | `"none"` | `"strict"` — filter releases to only those compatible with detected language constraints. | | `constraints` | `{}` | Pin specific tool versions Renovate uses (e.g. `{ "node": "18", "python": "3.11" }`). | | `registryAliases` | `{}` | Alias private registry URLs (e.g. `{ "my-reg": "https://registry.example.com" }`). | | `ignoreDeprecated` | `false` | Skip deprecated package versions. | | `ignoreScripts` | `false` | Don't run `npm install` lifecycle scripts during update. | | `ignoreTests` | `false` | Ignore test-only dependencies (e.g. `devDependencies` for some managers). | | `skipInstalls` | `null` | Skip lock file installation entirely (faster but no lock file updates). | | `skipArtifactsUpdate` | `false` | Skip artifact (lock file / checksum) updates. | ### 🔧 Advanced / Custom | Option | Default | Description | |---|---|---| | `customManagers` | `[]` | Define custom regex managers for files Renovate doesn't natively support. Very powerful. | | `customDatasources` | `{}` | Define custom datasources (e.g. query an internal API for available versions). | | `logLevelRemap` | `[]` | Remap internal Renovate log levels (useful for debugging). | | `bumpVersion` | `null` | Bump the `version` field in `package.json`, `Chart.yaml`, etc. when deps are updated. | | `bumpVersions` | `[]` | ⚗️ **Experimental** — bump arbitrary version strings in arbitrary files when a dep is updated. | | `groupName` | `null` | Group multiple dependency updates into a single PR. | | `groupSlug` | auto | Branch slug for grouped updates. | | `groupSingleUpdates` | `false` | Apply group config even when there's only one update. | | `minimumGroupSize` | `2` | Don't group unless at least N updates match. | | `excludeCommitPaths` | `[]` | Files to exclude from commits (e.g. to prevent lock file commits). | | `mode` | `"normal"` | Operation mode: `"normal"`, `"silent"` (no PRs/issues), `"autodiscover"`. | | `useBaseBranchConfig` | `"none"` | Merge config from the target base branch: `"none"`, `"merge"`. Useful for multi-branch repos. | | `baseBranchPatterns` | `["$default"]` | Which branches Renovate should update. Add `["main", "/^release\\/.*/"]` for release branches. | | `hostRules` | `[]` | Configure registry auth, rate limits, timeouts. Required for private registries. | | `encrypted` | `{}` | Store encrypted credentials in the repo config. | | `gitAuthor` | `null` | Override the git author for commits. | | `gitIgnoredAuthors` | `[]` | Don't rebase branches committed to by these authors. | | `forkProcessing` | `"auto"` | How to handle forks: `"auto"`, `"enabled"`, `"disabled"`. | | `platformCommit` | `false` | Use the platform's commit API instead of local git (Gitea/Forgejo). | | `printConfig` | `false` | Log the resolved config to stdout (debugging). | | `toolSettings` | `{}` | Pass settings to Renovate's internal tools (e.g. `pip-compile` args). | ### 📦 Update type shorthand objects These let you configure behaviour for a specific update type without writing `packageRules`. You already use `packageRules` for this, which is more flexible — these are alternatives. | Option | Description | |---|---| | `major` | Config applied to all major updates (e.g. `{ "major": { "automerge": false } }`) | | `minor` | Config applied to all minor updates | | `patch` | Config applied to all patch updates | | `pin` | Config applied to all pin updates | | `digest` | Config applied to all digest updates | | `replacement` | Config applied to all replacement updates | | `rollback` | Config applied to all rollback updates | --- > Generated from the Renovate JSON schema v37+ on 2026-06-03. Manager-specific configs (gradle, terraform, npm, docker-compose, etc.) are omitted — they're valid but only relevant when you need to override manager defaults per-repo. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
ryangr0 2026-06-08 09:05:01 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
webgrip/renovate-config#2
No description provided.