version: 2

updates:
  # Go server dependencies
  - package-ecosystem: gomod
    directory: /Server
    schedule:
      interval: weekly
      day: monday
    commit-message:
      prefix: "chore(deps):"
    labels:
      - dependencies
      - go
    open-pull-requests-limit: 10
    ignore:
      - dependency-name: "*"
        update-types: ["version-update:semver-major"]

  # Tauri client npm dependencies
  - package-ecosystem: npm
    directory: /Client/tauri-client
    schedule:
      interval: weekly
      day: monday
    commit-message:
      prefix: "chore(deps):"
    labels:
      - dependencies
      - npm
    open-pull-requests-limit: 10
    # These families version-lock their own packages with exact peer pins
    # (e.g. typescript-checker@9.6.0 requires core@9.6.0, not ^9.6.0), so a
    # PR-per-package split guarantees an ERESOLVE failure whenever only some
    # of them are merged. Group each family into a single PR.
    groups:
      stryker:
        patterns:
          - "@stryker-mutator/*"
      vitest:
        patterns:
          - "vitest"
          - "@vitest/*"
    ignore:
      - dependency-name: "*"
        update-types: ["version-update:semver-major"]

  # Tauri Rust/Cargo dependencies
  - package-ecosystem: cargo
    directory: /Client/tauri-client/src-tauri
    schedule:
      interval: weekly
      day: monday
    commit-message:
      prefix: "chore(deps):"
    labels:
      - dependencies
      - rust
    open-pull-requests-limit: 5
    ignore:
      - dependency-name: "*"
        update-types: ["version-update:semver-major"]

  # GitHub Actions
  - package-ecosystem: github-actions
    directory: /
    schedule:
      interval: weekly
      day: monday
    commit-message:
      prefix: "ci(deps):"
    labels:
      - dependencies
      - ci
    open-pull-requests-limit: 5
    ignore:
      - dependency-name: "*"
        update-types: ["version-update:semver-major"]
