Skip to content

v3.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Sep 11:52
· 1 commit to main since this release
v3.9.0

3.9.0 - 2026-09-19

Fixed

  • starterWriteDefaultScalafmtConf fails when the GitHub API rate limit is exceeded

    starterWriteDefaultScalafmtConf gets the latest scalafmt version from the tags of the scalafmt GitHub repository. It always sent unauthenticated requests, which are limited to 60 requests per hour per IP address. When the limit was exceeded, the task failed with 403 Forbidden and did not write .scalafmt.conf. This happens easily on CI runners because they share IP addresses with other jobs.

    Now

    • If the GITHUB_TOKEN environment variable is set, it is used to send authenticated requests, which have a much higher rate limit. Reading the tags of a public repository needs no extra permissions, so the GITHUB_TOKEN from GitHub Actions works.
    • If getting the latest version still fails, the task logs a warning and writes .scalafmt.conf with the default scalafmt version instead of failing.
    • The default scalafmt version is updated from 3.5.4 to 3.11.5.

    e.g.) In GitHub Actions,

      - name: Write the default .scalafmt.conf
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: sbt starterWriteDefaultScalafmtConf

    DevOopsStarterPlugin.writeDefaultScalafmtConf now takes the access token as a third parameter (maybeAccessToken: Option[GitHub.GitHubRepoWithAuth.AccessToken]). This only matters if your build code calls it directly.

Changes

  • Rename GitCommandError.GenericGotCommandResultError to GitCommandError.GenericGitCommandResultError

    The typo in the name is fixed. The factory method is renamed as well.

    Before After
    GitCommandError.GenericGotCommandResultError GitCommandError.GenericGitCommandResultError
    GitCommandError.genericGotCommandResultError GitCommandError.genericGitCommandResultError

    This only matters if your build code uses kevinlee.git.GitCommandError directly. The sbt tasks and settings are not affected.

Internal Housekeeping

  • Update sbt, sbt plugins and libraries (#536)
    • sbt: 1.12.13 => 1.13.0
    • hedgehog: 0.13.1 => 0.15.0
    • refined4s: 1.18.0 => 1.21.0
    • cats-effect: 3.7.0 => 3.7.1
    • extras: 0.53.0 => 0.56.0
    • effectie: 2.3.0 => 2.5.0
    • logger-f: 2.11.0 => 2.14.0
    • logger-f-sbt-logging: 2.11.1 => 2.14.0
    • circe: 0.14.15 => 0.14.16
    • http4s: 0.23.34 => 0.23.37
    • sbt2-compat: 0.1.0 => 0.2.0
    • sbt-scalafmt: 2.6.1 => 2.6.2
    • sbt-scalafix: 0.14.7 => 0.14.9
    • sbt-ci-release: 1.11.2 => 1.12.1
    • sbt-docusaur: 0.21.0 => 0.22.0
  • Add tests for Git.updateHistory (#538)
  • Replace PartialFunction with a total function in the Git result handler and ProcessResult.toEither
  • Fix Scala 3 unused pattern variable warnings (E198)
  • Set explicit least-privilege GITHUB_TOKEN permissions in all GitHub Actions workflows, and use GITHUB_TOKEN instead of a personal access token for the release
  • Use GITHUB_TOKEN instead of a personal access token in the release workflow examples in the docs
  • Pass GITHUB_TOKEN to the scripted tests in the build and release workflows so that the starterWriteDefaultScalafmtConf tests send authenticated GitHub API requests

What's Changed

Full Changelog: v3.8.0...v3.9.0