3.9.0 - 2026-09-19
Fixed
-
starterWriteDefaultScalafmtConffails when the GitHub API rate limit is exceededstarterWriteDefaultScalafmtConfgets 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 with403 Forbiddenand did not write.scalafmt.conf. This happens easily on CI runners because they share IP addresses with other jobs.Now
- If the
GITHUB_TOKENenvironment 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 theGITHUB_TOKENfrom GitHub Actions works. - If getting the latest version still fails, the task logs a warning and writes
.scalafmt.confwith the default scalafmt version instead of failing. - The default scalafmt version is updated from
3.5.4to3.11.5.
e.g.) In GitHub Actions,
- name: Write the default .scalafmt.conf env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: sbt starterWriteDefaultScalafmtConf
DevOopsStarterPlugin.writeDefaultScalafmtConfnow takes the access token as a third parameter (maybeAccessToken: Option[GitHub.GitHubRepoWithAuth.AccessToken]). This only matters if your build code calls it directly. - If the
Changes
-
Rename
GitCommandError.GenericGotCommandResultErrortoGitCommandError.GenericGitCommandResultErrorThe typo in the name is fixed. The factory method is renamed as well.
Before After GitCommandError.GenericGotCommandResultErrorGitCommandError.GenericGitCommandResultErrorGitCommandError.genericGotCommandResultErrorGitCommandError.genericGitCommandResultErrorThis only matters if your build code uses
kevinlee.git.GitCommandErrordirectly. The sbt tasks and settings are not affected.
Internal Housekeeping
- Update sbt, sbt plugins and libraries (#536)
sbt:1.12.13=>1.13.0hedgehog:0.13.1=>0.15.0refined4s:1.18.0=>1.21.0cats-effect:3.7.0=>3.7.1extras:0.53.0=>0.56.0effectie:2.3.0=>2.5.0logger-f:2.11.0=>2.14.0logger-f-sbt-logging:2.11.1=>2.14.0circe:0.14.15=>0.14.16http4s:0.23.34=>0.23.37sbt2-compat:0.1.0=>0.2.0sbt-scalafmt:2.6.1=>2.6.2sbt-scalafix:0.14.7=>0.14.9sbt-ci-release:1.11.2=>1.12.1sbt-docusaur:0.21.0=>0.22.0
- Add tests for
Git.updateHistory(#538) - Replace
PartialFunctionwith a total function in theGitresult handler andProcessResult.toEither - Fix Scala 3 unused pattern variable warnings (E198)
- Set explicit least-privilege
GITHUB_TOKENpermissions in all GitHub Actions workflows, and useGITHUB_TOKENinstead of a personal access token for the release - Use
GITHUB_TOKENinstead of a personal access token in the release workflow examples in the docs - Pass
GITHUB_TOKENto the scripted tests in the build and release workflows so that thestarterWriteDefaultScalafmtConftests send authenticated GitHub API requests
What's Changed
- Update docs by @kevin-lee in #534
- Bump actions/setup-java from 5 to 6 by @dependabot[bot] in #535
- Close #536: Update sbt, sbt plugins and libraries by @kevin-lee in #537
- Close #538: Add hedgehog property tests for
Git.updateHistoryby @kevin-lee in #539 - Fix Scala 3 unused pattern variable warnings by @kevin-lee in #540
- Set explicit least-privilege GITHUB_TOKEN permissions in all GitHub Actions workflows by @kevin-lee in #541
- sbt-devoops v3.9.0 (cancelled) by @kevin-lee in #542
- Fix #543:
starterWriteDefaultScalafmtConffails with 403 Forbidden when the GitHub API rate limit is exceeded, and.scalafmt.confis not written by @kevin-lee in #544 - sbt-devoops v3.9.0 by @kevin-lee in #545
Full Changelog: v3.8.0...v3.9.0