Dependency updates

zipx splits dependency automation in two:

Scala Steward (opt-in)

zipxScalaSteward := true

Then zipxWorkflowGenerate also writes .github/workflows/zipx-scala-steward.yml: weekly cron (Sunday 00:00 UTC) plus workflow_dispatch, using the SHA-pinned scala-steward-org/scala-steward-action and the default GitHub Actions token (no APP_* secrets).

Required repo/org setting: Allow GitHub Actions to create and approve pull requests.

zipx dogfoods this (zipxScalaSteward := true in the root build).

An alternative with no workflow is installing the public Scala Steward GitHub App on the org/repo. zipx’s opt-in is the self-hosted Action path so pins and schedule stay in the build.

ScalaStewardWorkflow.render(ActionPins.Defaults, "ubuntu-latest")
# Generated by zipx — do not edit. Run 'sbt zipxWorkflowGenerate' to regenerate.
name: Scala Steward
"on":
  schedule:
    - cron: "0 0 * * 0"
  workflow_dispatch: null
permissions:
  contents: write
  pull-requests: write
jobs:
  scala-steward:
    name: Scala Steward
    runs-on: ubuntu-latest
    steps:
      - name: Scala Steward
        uses: scala-steward-org/scala-steward-action@ff09222640622d474d0d9f93c04aefedd125b187 # v2.92.0

Typed cron

Schedules use a typed [[zipx.workflow.Cron]] AST (not raw strings):

Cron.weekly(DayOfWeek.Sunday)           // 0 0 * * 0
Cron.weekly(DayOfWeek.Monday, hour = 6) // 0 6 * * 1
Cron.daily(hour = 3, minute = 15)       // 15 3 * * *
Cron.hourly(minute = 45)                // 45 * * * *
Cron.raw("0 */6 * * *")                 // escape hatch

Cron / DayOfWeek are re-exported from the plugin autoImport.

List(
  s"weekly: ${Cron.weekly(DayOfWeek.Monday, hour = 6, minute = 30).render}",
  s"daily:  ${Cron.daily(hour = 3).render}",
  s"raw:    ${Cron.raw("0 */6 * * *").render}",
).mkString("\n")
weekly: 30 6 * * 1
daily:  0 3 * * *
raw:    0 */6 * * *