{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:recommended", ":dependencyDashboard", ":semanticCommits", ":separatePatchReleases" ], "timezone": "America/New_York", "schedule": ["before 9am every weekday"], "prConcurrentLimit": 5, "branchConcurrentLimit": 10, "prHourlyLimit": 2, "configMigration": false, "dependencyDashboardApproval": false, "abandonmentThreshold": "1 year", "enabledManagers": [ "docker-compose", "dockerfile", "github-actions", "npm", "pep621" ], "packageRules": [ { "description": "Automerge non-major updates for high-confidence packages", "matchUpdateTypes": ["minor", "patch", "pin", "digest"], "matchPackageNames": [ "/^@types//", "/^eslint/", "/^prettier/", "/^ruff/", "/^pytest/" ], "automerge": true, "automergeType": "branch" }, { "description": "Group Python dev tools updates", "matchManagers": ["pep621"], "matchCategories": ["python"], "matchPackageNames": [ "ruff", "pyright", "pydoclint", "pytest", "pytest-asyncio", "pytest-cov", "pytest-mock", "pre-commit", "pyyaml", "yamllint", "toml-sort", "language-formatters-pre-commit-hooks", "xdoctest", "poethepoet" ], "groupName": "Python dev tools", "schedule": ["before 9am on monday"] }, { "description": "Group Frontend dev tools updates", "matchManagers": ["npm"], "matchDepTypes": ["devDependencies"], "matchPackageNames": [ "/^@typescript-eslint//", "/^eslint/", "/^prettier/", "/^vite/", "/^vitest/", "/^playwright/" ], "groupName": "Frontend dev tools", "schedule": ["before 9am on monday"] }, { "description": "Group Docker base image updates", "matchManagers": ["dockerfile"], "matchPackageNames": ["ubuntu", "node", "python"], "groupName": "Docker base images", "schedule": ["before 9am on monday"], "automerge": false, "reviewersFromCodeOwners": true }, { "description": "Security updates - high priority", "matchPackageNames": ["/.*/"], "vulnerabilityAlerts": { "enabled": true }, "prPriority": 10, "automerge": false, "labels": ["security"], "reviewersFromCodeOwners": true }, { "description": "Major updates - require manual review", "matchUpdateTypes": ["major"], "dependencyDashboardApproval": true, "automerge": false, "labels": ["major-update"], "prPriority": 5, "reviewersFromCodeOwners": true }, { "description": "Skip automatic updates for project Python runtime constraint", "matchManagers": ["pep621"], "matchPackageNames": ["python"], "enabled": false } ], "osvVulnerabilityAlerts": false, "vulnerabilityAlerts": { "enabled": true, "schedule": ["at any time"] }, "labels": ["dependencies"], "commitMessagePrefix": "chore:", "commitMessageTopic": "{{depName}}", "commitMessageExtra": "to {{newVersion}}", "commitMessageSuffix": "", "prBodyTemplate": "This PR contains the following updates:\n\n| Package | Change | Age | Adoption | Passing | Confidence |\n|---|---|---|---|---|---|\n{{#each upgrades}}\n|{{depName}}|{{#if displayFrom}}`{{{displayFrom}}}` -> `{{{displayTo}}}`{{else}}`{{{newVersion}}}`{{/if}}|[![age](https://badges.renovateapi.com/packages/{{datasource}}/{{depName}}/{{newVersion}}/age-slim)](https://docs.renovatebot.com/merge-confidence/)|[![adoption](https://badges.renovateapi.com/packages/{{datasource}}/{{depName}}/{{newVersion}}/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)|[![passing](https://badges.renovateapi.com/packages/{{datasource}}/{{depName}}/{{newVersion}}/compatibility-slim/{{currentVersion}})](https://docs.renovatebot.com/merge-confidence/)|[![confidence](https://badges.renovateapi.com/packages/{{datasource}}/{{depName}}/{{newVersion}}/confidence-slim/{{currentVersion}})](https://docs.renovatebot.com/merge-confidence/)|\n{{/each}}\n\n---\n\n### Release Notes\n\n{{#each upgrades}}\n{{#if hasReleaseNotes}}\n
\n{{depName}}\n\n{{#each releases}}\n#### {{title}}\n\n{{#if body}}\n{{body}}\n{{/if}}\n{{/each}}\n\n
\n{{/if}}\n{{/each}}\n\n### Configuration\n\n📅 **Schedule**: {{schedule}}\n\n🚦 **Automerge**: {{#if isAutomerge}}Enabled{{else}}Disabled{{/if}}\n\n♻ **Rebasing**: {{#if isRebasing}}Rebasing{{else}}Not rebasing{{/if}}\n\n👥 **Reviewers**: {{#if reviewers}}{{reviewers}}{{else}}None{{/if}}\n\n---\n\n*This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).*" }