{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:recommended",
  ],
  "schedule": ["before 9am on saturday"],
  "rangeStrategy": "bump",
  "dependencyDashboard": false,
  "labels": ["dependencies", "renovate"],
  "packageRules": [
    {
      matchDepTypes: ['peerDependencies'],
      enabled: false,
    },
    // Root package.json
    {
      matchFileNames: ['package.json'],
      matchUpdateTypes: ['minor', 'patch'],
      groupName: 'root non-major dependencies',
    },
    {
      matchFileNames: ['package.json'],
      matchUpdateTypes: ['major'],
      groupName: 'root major dependencies',
    },
    // Browser extension
    {
      matchFileNames: ['browser/package.json'],
      matchUpdateTypes: ['minor', 'patch'],
      groupName: 'browser non-major dependencies',
    },
    {
      matchFileNames: ['browser/package.json'],
      matchUpdateTypes: ['major'],
      groupName: 'browser major dependencies',
    },
    // Website packages (client & server)
    {
      matchFileNames: ['website/**/package.json'],
      matchUpdateTypes: ['minor', 'patch'],
      groupName: 'website non-major dependencies',
    },
    {
      matchFileNames: ['website/**/package.json'],
      matchUpdateTypes: ['major'],
      groupName: 'website major dependencies',
    },
    // Scripts packages
    {
      matchFileNames: ['scripts/**/package.json'],
      matchUpdateTypes: ['minor', 'patch'],
      groupName: 'scripts non-major dependencies',
    },
    {
      matchFileNames: ['scripts/**/package.json'],
      matchUpdateTypes: ['major'],
      groupName: 'scripts major dependencies',
    },
    // GitHub Actions
    {
      // Actions are SHA-pinned via pinact, so `pin` and `digest`
      // updates need to be grouped alongside `minor` / `patch`.
      matchManagers: ['github-actions'],
      matchUpdateTypes: ['minor', 'patch', 'pin', 'digest'],
      groupName: 'github-actions non-major dependencies',
    },
    {
      matchManagers: ['github-actions'],
      matchUpdateTypes: ['major'],
      groupName: 'github-actions major dependencies',
    },
    // Dockerfiles
    {
      matchManagers: ['dockerfile'],
      matchUpdateTypes: ['minor', 'patch'],
      groupName: 'dockerfile non-major dependencies',
    },
    {
      matchManagers: ['dockerfile'],
      matchUpdateTypes: ['major'],
      groupName: 'dockerfile major dependencies',
    },
    // Nix flake
    {
      matchManagers: ['nix'],
      matchUpdateTypes: ['minor', 'patch'],
      groupName: 'nix non-major dependencies',
    },
    {
      matchManagers: ['nix'],
      matchUpdateTypes: ['major'],
      groupName: 'nix major dependencies',
    },
  ],
  "ignoreDeps": [
    "node",
    "isbinaryfile", // v6+ requires Node.js >= 24
    "iconv-lite", // v0.7.1 has broken ESM types: https://github.com/pillarjs/iconv-lite/issues/363
  ],
  "minimumReleaseAge": "7 days"
}
