Skip to content

Releases: slackhq/foundry

0.22.4

15 Nov 19:40
Compare
Choose a tag to compare
  • [gradle] Improve Detekt configuration to better ignore generated source files.
  • [gradle] Add skippy support to validateModuleTopography. Now there are globalCiValidateModuleTopography and ciValidateModuleTopography tasks.
  • [gradle] Use mustRunAfter for depending on source gen tasks + add back sqldelight's schema task as a source-generating task.
  • [gradle] Improve compose matching text to include .setContent {.
  • [gradle] Support custom configurations and overrides of ModuleTopography features via JSON file specified by the foundry.topography.features.config property.
  • Update kaml to 0.65.0.
  • Build against develocity plugin 3.18.2.
  • Build against Roborazzi plugin 1.32.2.

What's Changed

Full Changelog: 0.22.3...0.22.4

0.22.3

13 Nov 19:22
Compare
Choose a tag to compare
  • [gradle] Only make LocTask depend on source-generating tasks if MODULE_SCORE_INCLUDE_GENERATED is true.

Full Changelog: 0.22.2...0.22.3

0.22.2

13 Nov 19:22
Compare
Choose a tag to compare
  • [gradle] Fix dependencies on source-generating tasks in module stats and topography.

Full Changelog: 0.22.1...0.22.2

0.22.1

12 Nov 20:39
Compare
Choose a tag to compare
  • [gradle] Fix FoundryProperties hierarchical init.

Full Changelog: 0.22.0...0.22.1

0.22.0

12 Nov 17:51
Compare
Choose a tag to compare
  • [gradle] Introduce new moduleTopography task. This is a general task that attempts to validate project configurations by looking for features that are enabled but unused. Currently covers a few core features like kapt, ksp, moshi code gen, dagger/anvil, and viewbinding. Outputs are printed and written to a JSON file. Add --validate-all to make the tasks fail on validation issues.
  • [gradle] Cache global FoundryProperties instance for subproject use.
  • [gradle] Add composeRuntimeOnly() DSL feature.
  • [cli] Check for non-existent paths before traversing in Path.walkEachFile().
  • [gradle] Don't depend on build sources in mod score if MODULE_SCORE_INCLUDE_GENERATED is false
  • [gradle] Source module topography in mod score stats collecting
  • [gradle] Build against Gradle 8.11.
  • [gradle] Do not track state in RakeDependencies task.
  • Update to KotlinPoet 2.0.0.
  • Update to xmlutil 0.90.3.
  • Update to kaml 0.62.2.
  • Update to Mordant 3.0.1.
  • Build against gradle-dependency-sorter 0.12.
  • Build against KSP 2.0.21-1.0.27.
  • Build against DAGP 2.4.2.
  • Build against Compose Multiplatform 1.7.0.

What's Changed

Full Changelog: 0.21.0...0.22.0

0.21.0

25 Oct 19:24
Compare
Choose a tag to compare
  • New: Extract better-gradle-properties artifact, which is our hierarchical Gradle properties solution that better handles properties in Gradle. This is what powers FoundryProperties but is now extracted to be more portable.
    • This checks in the following order of priority
      • project-local local.properties
      • project-local gradle.properties
      • root-project local.properties
      • root-project/global gradle.properties
  • New: Extract version-number artifact. This contains a Kotlin, non-deprecated VersionNumber API. This is useful given that Gradle's is both deprecated and not available in standard JVM projects.
  • New: Support Robolectric 4.14.
  • Changed: Remove defunct foundry.git.hooksPath and foundry.git.ignoreRevsFile properties.
  • Changed: Rename SgpArtifact to FoundryArtifact.
  • Misc doc fixes + reorganize docsite around new repo structure.
  • Update xmlutil to 0.90.2.
  • Build against Spotless 7.0.0.BETA4.
  • Build against KSP 2.0.21-1.0.26.
  • Build against DAGP 2.2.0.
  • Build against nullaway-gradle 2.1.0.
  • Build against errorprone-gradle 4.1.0.
  • Build against Compose multiplatform 1.7.0.
  • Build against Dokka 2.0.0-Beta.

What's Changed

Full Changelog: 0.20.1...0.21.0

0.20.2

14 Oct 16:23
Compare
Choose a tag to compare
  • Fix: Fall back to old property name for kotlin JVM args if the new one isn't found.
  • Enhancement: Don't try to apply kotlin JVM args if there are none.

Full Changelog: 0.20.1...0.20.2

0.20.1

14 Oct 16:12
Compare
Choose a tag to compare

Don't use this release! We goofed on something.

Full Changelog: 0.20.0...0.20.1

0.20.0

11 Oct 17:59
Compare
Choose a tag to compare

Project Restructuring

We've restructured this project! Since its early days as a simple Gradle convention plugin it's expanded into IntelliJ plugins, CLIs, CI tooling, and more. To better capture this, we've renamed the project to Foundry, restructured its artifacts into a more cohesive setup, moved kotlin-cli-util into this repo, and will likely split out some more artifacts down the line.

Migration Guide

  • Any gradle properties prefixed with slack. or sgp. have now moved to foundry.. slack.gradle. prefix have also removed the gradle. (i.e. slack.gradle.foo would now be foundry.foo).

    • SlackProperties has been renamed to FoundryProperties.
    • Some properties have been further refined to be more specific.
    • There is a helper script you can use to automatically rename all properties in foundry-migration/.
      • Download mapping.txt
      • Download property_migration.sh
      • Run ./property_migration.sh mapping.txt <path to target project>.
        • Note this only covers *.kts and *.properties files. This does not cover args passed via CLI or envs.
  • Package names have all aligned to foundry.*. In most cases it should be simple enough to replace import com.slack.* with import foundry.*.

  • Gradle coordinates group have moved to the com.slack.foundry group name.

    Old Artifact ID New Artifact ID
    sgp gradle-plugin
    sgp-agp-handler-api agp-handler-api
    sgp-common foundry-common
    sgp-tracing tracing
    skippy skippy
  • The former kotlin-cli-util APIs have moved to the com.slack.foundry:cli artifact.

  • Platform-specific plugins now live under the platforms/ directory.

  • All other tools now live under the tools/ directory.

  • Most top-level Slack-prefixed APIs are now prefixed with Foundry.

  • The primary gradle entry points are now foundry {}, but the previous slack {} entry points are left with deprecation ReplaceWith options.

  • Gradle plugin IDs have migrated to com.slack.foundry.* names.

    Old New
    com.slack.gradle.root com.slack.foundry.root
    com.slack.gradle.base com.slack.foundry.base
    com.slack.gradle.apk-versioning com.slack.foundry.apk-versioning
  • Introduce new required foundry.android.defaultNamespacePrefix property for android projects. This is necessary for projects that don't define an android.namespace explicitly.

Misc

  • New: Make JDK configuration docs and error messages configurable via FoundryProperties.
  • Fix: Gracefully handle undefined kapt language versions when computing progressive.
  • Fix: Track deleted build files when computing parent projects in Skippy.
  • Update Clikt to 5.0.1.
  • Update oshi-core to 6.6.5.
  • Build against DAGP 2.x.
  • Build against gradle-error-prone 4.0.1.
  • Build against gradle-nullaway 2.0.0.
  • Build against Gradle versions plugin 0.51.0.
  • Build against Develocity plugin 3.18.1.

What's Changed

Full Changelog: 0.19.6...0.20.0

0.19.6

25 Sep 20:41
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.19.5...0.19.6