{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    ":dependencyDashboard",
    ":semanticCommitTypeAll(chore)",
    ":ignoreModulesAndTests",
    "group:recommended",
    "replacements:all",
    "workarounds:all"
  ],
  "commitMessageTopic": "{{depName}}",
  "osvVulnerabilityAlerts": true,
  "labels": [
    "dependencies"
  ],
  "git-submodules": {
    "enabled": true
  },
  "bundler": {
    "enabled": true
  },
  "packageRules": [
    {
      "description": "Automerge non-major updates for stable versions",
      "matchUpdateTypes": [
        "minor",
        "patch",
        "pin",
        "digest"
      ],
      "matchCurrentVersion": "!/^0/",
      "automerge": true
    },
    {
      "description": "Automerge patch updates for unstable (0.x) versions",
      "matchUpdateTypes": [
        "patch",
        "pin",
        "digest"
      ],
      "matchCurrentVersion": "/^0/",
      "automerge": true
    },
    {
      "description": "Automerge pins and digests regardless of version",
      "matchUpdateTypes": [
        "pin",
        "digest"
      ],
      "automerge": true
    },
    {
      "description": "Meshtastic Protobufs changelog link",
      "matchPackageNames": [
        "https://github.com/meshtastic/protobufs.git"
      ],
      "changelogUrl": "https://github.com/meshtastic/protobufs/compare/{{currentDigest}}...{{newDigest}}",
      "automerge": true
    },
    {
      "description": "Group CMP and the androidx.compose artifacts that track it so Renovate bumps them together (see PR #5180)",
      "groupName": "compose-multiplatform",
      "matchPackageNames": [
        "/^org\\.jetbrains\\.compose/",
        "androidx.compose.runtime:runtime-tracing",
        "androidx.compose.ui:ui-test-manifest",
        "androidx.compose.material:material"
      ]
    },
    {
      "description": "Restrict sensitive infrastructure to manual minor updates",
      "matchUpdateTypes": [
        "minor"
      ],
      "matchPackageNames": [
        "/^org\\.jetbrains\\.kotlin/",
        "/^org\\.jetbrains\\.kotlinx/",
        "/^org\\.jetbrains\\.compose/",
        "/^com\\.google\\.dagger/",
        "/^androidx\\.hilt/",
        "/^com\\.google\\.protobuf/",
        "/^androidx\\.lifecycle/",
        "/^androidx\\.navigation/",
        "/^androidx\\.datastore/",
        "/^androidx\\.compose\\.material3\\.adaptive/",
        "/^androidx\\.compose\\.material3:material3-adaptive-navigation-suite$/"
      ],
      "automerge": false
    },
    {
      "description": "Disable automerge for major updates (safety net)",
      "matchUpdateTypes": [
        "major"
      ],
      "automerge": false
    },
    {
      "description": "Coordinate the Kotlin-compiler-locked toolchain in one human-reviewed PR. Kotlin, KSP, Mokkery, and the Koin compiler plugin are version-locked to the Kotlin compiler and break when bumped out of lockstep (e.g. Mokkery 3.4.0 and kable 0.43.1 both required Kotlin 2.4.0 — PRs #5750/#5740). Supersedes the built-in group:kotlinMonorepo/group:kspMonorepo for these packages so they land together; automerge stays off so compiler bumps always get a human review plus a green CI build. The `[.:]` after kotlin intentionally excludes org.jetbrains.kotlinx (coroutines/serialization runtime), which is not compiler-locked.",
      "groupName": "kotlin-toolchain",
      "matchManagers": [
        "gradle"
      ],
      "matchPackageNames": [
        "/^org\\.jetbrains\\.kotlin[.:]/",
        "/^com\\.google\\.devtools\\.ksp/",
        "/^dev\\.mokkery/",
        "/^io\\.insert-koin\\.compiler\\.plugin/"
      ],
      "automerge": false
    }
  ]
}
