Skip to main content

8.67.0 release (2025-11-20)

Total recipe count: 5005

info

This changelog only shows what recipes have been added, removed, or changed. OpenRewrite may do releases that do not include these types of changes. To see these changes, please go to the releases page.

Corresponding CLI version

  • Stable CLI version v3.51.2
  • Staging CLI version: v3.51.3

New Artifacts

  • rewrite-angular
  • rewrite-javascript
  • rewrite-react

New Recipes

The BOM character (U+FEFF) is generally unnecessary in UTF-8 files and can cause issues with some tools.

Removed Recipes

  • ai.timefold.solver.migration.fork.TimefoldChangeDependencies: Migrate all Maven and Gradle groupIds and artifactIds from OptaPlanner to Timefold.
  • ai.timefold.solver.migration.v8.AsConstraintRecipe: Use penalize().asConstraint() and reward().asConstraint() instead of the deprecated penalize() and reward() methods.
  • ai.timefold.solver.migration.v8.ConstraintRefRecipe: Use getConstraintRef() instead of getConstraintId() et al.
  • ai.timefold.solver.migration.v8.NullableRecipe: Removes references to null vars and replace them with unassigned values.
  • ai.timefold.solver.migration.v8.RemoveConstraintPackageRecipe: Remove the use of constraint package from asConstraint(package, name).
  • ai.timefold.solver.migration.v8.ScoreGettersRecipe: Use score() instead of getScore() on Score implementations.
  • ai.timefold.solver.migration.v8.ScoreManagerMethodsRecipe: Use explain() and update() instead of explainScore(), updateScore() and getSummary().
  • ai.timefold.solver.migration.v8.SingleConstraintAssertionMethodsRecipe: Use penalizesBy/rewardsWith(String, int) instead of penalizesBy/rewardsWith(int, String) on SingleConstraintAssertion tests.
  • ai.timefold.solver.migration.v8.SolutionManagerRecommendAssignmentRecipe: Use recommendAssignment() instead of recommendFit().
  • ai.timefold.solver.migration.v8.SolverManagerBuilderRecipe: Use solveBuilder() instead of deprecated solve methods on SolveManager.
  • com.google.guava.InlineGuavaMethods: Automatically generated recipes to inline method calls based on @InlineMe annotations discovered in the type table.
  • io.moderne.java.spring.boot4.SpringBootProperties_4_0: Migrate properties found in application.properties and application.yml.
  • org.apache.logging.log4j.InlineLog4jApiMethods: Automatically generated recipes to inline method calls based on @InlineMe annotations discovered in the type table.
  • org.openrewrite.java.spring.boot3.ReplaceMockBeanAndSpyBean: Replaces @MockBean and @SpyBean annotations with @MockitoBean and @MockitoSpyBean.
  • org.openrewrite.java.springdoc.ApiInfoBuilderToInfo: Migrate SpringFox's ApiInfoBuilder to Swagger's Info.
  • org.openrewrite.java.springdoc.SecurityContextToSecurityScheme: Replace ApiKey, AuthorizationScope, and SecurityScheme elements with Swagger's equivalents.

Changed Recipes

  • org.openrewrite.gradle.search.FindDependency was changed:
    • Old Options:
      • artifactId: { type: String, required: true }
      • configuration: { type: String, required: false }
      • groupId: { type: String, required: true }
    • New Options:
      • artifactId: { type: String, required: true }
      • configuration: { type: String, required: false }
      • groupId: { type: String, required: true }
      • version: { type: String, required: false }
      • versionPattern: { type: String, required: false }
  • org.openrewrite.csharp.dependencies.DependencyVulnerabilityCheck was changed:
    • Old Options:
      • addMarkers: { type: Boolean, required: false }
    • New Options:
      • addMarkers: { type: Boolean, required: false }
      • cvePattern: { type: String, required: false }
  • org.openrewrite.java.dependencies.DependencyVulnerabilityCheck was changed:
    • Old Options:
      • maximumUpgradeDelta: { type: UpgradeDelta, required: false }
      • minimumSeverity: { type: String, required: false }
      • overrideTransitive: { type: Boolean, required: false }
      • scope: { type: String, required: false }
    • New Options:
      • cvePattern: { type: String, required: false }
      • maximumUpgradeDelta: { type: UpgradeDelta, required: false }
      • minimumSeverity: { type: String, required: false }
      • overrideTransitive: { type: Boolean, required: false }
      • scope: { type: String, required: false }