You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by jd...@apache.org on 2026/10/14 13:51:00 UTC

(grails-core) branch 9.0.x updated (1edb825aa8 -> 386e881473)

This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a change to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git


    from 1edb825aa8 Merge branch '8.1.x' into 9.0.x
     add ba940ec415 Honour grails.native2ascii in a plugin's build script
     add e1131ca72e Move the Forge build conventions into build-logic
     add 46ff841f4e Make Forge a Grails plugin hosted by a web application and a CLI application
     add 50f0f7975d Let a GSP page write no line for its template logic
     add b686570349 Render Forge's templates with GSP instead of Rocker
     add 6010bed3a4 Keep the Forge API's OpenAPI base document with the web application's configuration
     add 27971429e8 Reduce Forge's documentation script to what Groovydoc needs
     add 651f2cde15 Trim only the logic lines of a GSP page's text
     add 27068cdbbf Leave a GSP page's last line of blanks as it is when trimming logic lines
     add a20c6e6402 Merge branch '8.0.x' into feat/forge-grails-composite
     add 2d11d0d1c5 Keep build-logic on the Maven 3 compatible plexus-xml
     add 0203519866 Merge branch '8.1.x' into feat/forge-grails-composite
     add 9f08b0d9af Build the Forge AWS bundle with the configuration cache
     add acb868664a Poll status before failing the start in the hidden-details spec
     add 1b259afe51 Restore Forge compatibility after the Grails conversion
     add 967cb319c5 Merge branch '8.1.x' into feat/forge-grails-composite
     add 313f9787b7 Keep hosted Forge API details in the deployment runbook
     add 6a14f076e4 Merge branch '8.1.x' into feat/forge-grails-composite
     add f64c002d33 Merge pull request #16551 from apache/feat/forge-grails-composite
     new 696429eab7 Merge branch '8.1.x' into 9.0.x
     new 1c2b6b8cac Copy the streamed renderers before adding the built-in ones
     new 386e881473 Give the Forge CLI test fixtures Groovy 6's call-site module

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .agents/skills/gradle-developer/SKILL.md           |   4 +-
 .github/workflows/forge-deploy-aws.yml             |   4 +-
 .gitignore                                         |   4 +
 AGENTS.md                                          |   2 +-
 RELEASE.md                                         |   4 +-
 THREAT_MODEL.md                                    |   6 +-
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 build-logic/plugins/build.gradle                   |  13 +
 .../grails/buildsrc/GrailsCodeStylePlugin.groovy   |   2 +-
 .../buildsrc/WriteGrailsVersionInfoTask.groovy     |  12 +-
 .../GrailsGroovyExtensionTransformer.groovy        |  26 +-
 .../shadowjar/GrailsShadowLicenseTransform.groovy  |   0
 .../shadowjar/GrailsShadowNoticeTransform.groovy   |   0
 .../internal/tasks/GenerateManpageAsciidoc.java    |   0
 .../internal/tasks/PicocliBuildCompletionTask.java |   0
 .../buildsrc/WriteGrailsVersionInfoTaskSpec.groovy | 122 ++++
 .../GrailsGroovyExtensionTransformerSpec.groovy    | 125 +++++
 gradle.properties                                  |   4 +-
 gradle/rat-root-config.gradle                      |   2 +-
 gradle/wrapper/gradle-wrapper.properties           |   2 +-
 .../web/async/ControllersAsyncGrailsPlugin.groovy  |   6 +-
 .../theWebLayer/gsp/GSPBasics/pageDirectives.adoc  |  40 ++
 .../src/en/guide/upgrading/upgrading81x.adoc       |  22 +
 grails-forge/.gitattributes                        |   5 -
 grails-forge/.gitignore                            |  20 -
 grails-forge/README.md                             |  61 +-
 grails-forge/build.gradle                          |   5 -
 grails-forge/buildSrc/build.gradle                 |  62 ---
 grails-forge/buildSrc/settings.gradle              |  35 --
 .../forge/rocker/plugin/JavaGeneratorRunnable.java | 166 ------
 .../forge/rocker/plugin/RockerConfiguration.java   |  99 ----
 .../grails/forge/rocker/plugin/RockerPlugin.java   |  92 ---
 .../rocker/plugin/RockerSourceSetProperty.java     |  80 ---
 .../org/grails/forge/rocker/plugin/RockerTask.java | 185 -------
 .../forge/rocker/plugin/TemplateDirectorySet.java  | 124 -----
 .../forge/rocker/plugin/WhitespaceProcessor.java   |  52 --
 grails-forge/config/checkstyle/checkstyle.xml      | 227 --------
 grails-forge/config/spotless.license.java          |  18 -
 grails-forge/docs/aws-elastic-beanstalk.md         |  18 +-
 grails-forge/docs/choose-postgresql.png            | Bin 108993 -> 0 bytes
 grails-forge/docs/cloud_sql_create_intance.png     | Bin 100207 -> 0 bytes
 grails-forge/docs/create-database.png              | Bin 150843 -> 0 bytes
 grails-forge/docs/create-two-databases.png         | Bin 175471 -> 0 bytes
 grails-forge/docs/dbinstance-options.png           | Bin 100921 -> 0 bytes
 grails-forge/docs/enable-cloud-sql-admin-api.png   | Bin 151032 -> 0 bytes
 grails-forge/docs/enable-compute-engine-api.png    | Bin 79831 -> 0 bytes
 .../etc/bin/generate-build-artifact-hashes.groovy  |  79 ---
 grails-forge/etc/bin/test-reproducible-builds.sh   |  64 ---
 grails-forge/gradle.properties                     |  33 +-
 grails-forge/gradle/code-style-config.gradle       |  96 ----
 grails-forge/gradle/doc-config.gradle              |  15 +-
 grails-forge/gradle/groovy-version-pin.gradle      |  29 -
 .../gradle/micronaut-openapi-config.gradle         |  53 --
 grails-forge/gradle/test-config.gradle             |  26 +-
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 grails-forge/grails-cli-shadow/build.gradle        |  11 +
 grails-forge/grails-cli/build.gradle               |  16 +-
 .../grails/cli/DelegatingShellApplication.groovy   |   2 +-
 .../grails-forge-analytics-postgres/build.gradle   | 120 ----
 .../analytics/postgres/AnalyticsController.java    |  98 ----
 .../forge/analytics/postgres/Application.java      | 140 -----
 .../analytics/postgres/ApplicationRepository.java  |  53 --
 .../grails/forge/analytics/postgres/Feature.java   |  79 ---
 .../analytics/postgres/FeatureRepository.java      | 121 ----
 .../org/grails/forge/analytics/postgres/Main.java  |  49 --
 .../postgres/gcp/GoogleCloudSqlSetup.java          |  58 --
 .../native-image.properties                        |  24 -
 .../src/main/resources/application-dev.yml         |   9 -
 .../src/main/resources/application.yml             |  14 -
 .../resources/databasemigrations/V1__schema.sql    |  21 -
 .../src/main/resources/logback.xml                 |  15 -
 .../postgres/StoreGeneratedProjectStatsSpec.groovy | 125 -----
 grails-forge/grails-forge-api/build.gradle         |  83 ---
 .../grails/forge/api/ApplicationController.java    | 240 --------
 .../org/grails/forge/api/ApplicationTypeDTO.java   | 129 -----
 .../forge/api/ApplicationTypeOperations.java       |  75 ---
 .../org/grails/forge/api/DevelopmentReloading.java |  50 --
 .../grails/forge/api/DevelopmentReloadingDTO.java  | 103 ----
 .../main/java/org/grails/forge/api/FeatureDTO.java | 153 -----
 .../java/org/grails/forge/api/FeatureService.java  | 104 ----
 .../java/org/grails/forge/api/GormImplDTO.java     | 111 ----
 .../java/org/grails/forge/api/JdkVersionDTO.java   | 110 ----
 .../java/org/grails/forge/api/LanguageDTO.java     | 124 -----
 .../main/java/org/grails/forge/api/LinkDTO.java    |  63 ---
 .../java/org/grails/forge/api/RequestInfo.java     | 139 -----
 .../java/org/grails/forge/api/SelectOptionDTO.java |  62 ---
 .../java/org/grails/forge/api/ServletImplDTO.java  | 100 ----
 .../forge/api/analytics/GenerationListener.java    |  68 ---
 .../forge/api/bind/RequestInfoArgumentBinder.java  |  93 ----
 .../forge/api/create/AbstractCreateController.java | 117 ----
 .../forge/api/create/zip/ZipCreateController.java  | 196 -------
 .../forge/api/create/zip/ZipCreateOperation.java   |  69 ---
 .../org/grails/forge/api/diff/DiffController.java  | 228 --------
 .../org/grails/forge/api/diff/DiffOperations.java  |  92 ---
 .../api/options/ApplicationTypeSelectOptions.java  |  42 --
 .../options/DevelopmentReloadingSelectOptions.java |  42 --
 .../forge/api/options/GormImplSelectOptions.java   |  42 --
 .../forge/api/options/JdkVersionSelectOptions.java |  42 --
 .../forge/api/options/SelectOptionsController.java |  60 --
 .../forge/api/options/SelectOptionsOperations.java |  27 -
 .../api/options/ServletImplSelectOptions.java      |  42 --
 .../forge/api/preview/PreviewController.java       | 120 ----
 .../forge/api/preview/PreviewOperations.java       |  61 --
 .../grails-forge-api/reflect-config.json           |  52 --
 .../grails-forge-api/resource-config.json          |  11 -
 .../src/main/resources/application.yml             |   5 -
 .../src/main/resources/select_options.properties   |   1 -
 .../forge/api/ApplicationControllerSpec.groovy     | 111 ----
 .../grails/forge/api/ApplicationTypeClient.groovy  |  42 --
 .../org/grails/forge/api/CreateClient.groovy       |  57 --
 .../groovy/org/grails/forge/api/DiffClient.groovy  |  56 --
 .../org/grails/forge/api/DiffControllerSpec.groovy |  85 ---
 .../grails/forge/api/FeatureControllerSpec.groovy  | 211 -------
 .../org/grails/forge/api/PreviewClient.groovy      |  42 --
 .../grails/forge/api/PreviewControllerSpec.groovy  |  62 ---
 .../forge/api/ZipCreateControllerSpec.groovy       | 145 -----
 .../src/test/resources/features_es.properties      |   4 -
 .../src/test/resources/logback.xml                 |  17 -
 grails-forge/grails-forge-cli/build.gradle         | 109 ++--
 .../grails-app/conf/application.yml                |  28 +
 .../init/org/grails/forge/cli/Application.groovy   |  84 +++
 .../forge/cli/command/templates/controller.gsp}    |  23 +-
 .../cli/command/templates/controllerSpec.gsp}      |  25 +-
 .../views/forge/cli/command/templates/domain.gsp}  |  25 +-
 .../forge/cli/command/templates/domainSpec.gsp}    |  27 +-
 .../forge/cli/command/templates/interceptor.gsp}   |  25 +-
 .../cli/command/templates/interceptorSpec.gsp}     |  27 +-
 .../views/forge/cli/command/templates/job.gsp}     |  23 +-
 .../views/forge/cli/command/templates/service.gsp} |  27 +-
 .../forge/cli/command/templates/serviceSpec.gsp}   |  25 +-
 .../views/forge/cli/command/templates/taglib.gsp}  |  23 +-
 .../forge/cli/command/templates/taglibSpec.gsp}    |  25 +-
 .../org/grails/forge/cli/CodeGenConfig.groovy      | 189 +++++++
 .../grails/forge/cli/CommonOptionsMixin.groovy}    |  28 +-
 .../groovy/org/grails/forge/cli/ForgeCli.groovy    | 133 +++++
 .../org/grails/forge/cli/ForgeCommand.groovy       |  67 +++
 .../grails/forge/cli/GrailsPicocliFactory.groovy   |  59 ++
 .../org/grails/forge/cli/InteractiveShell.groovy}  | 107 ++--
 .../forge/cli/command/AddPropertyCommand.groovy    | 169 ++++++
 .../grails/forge/cli/command/BaseCommand.groovy    |  88 +++
 .../grails/forge/cli/command/CodeGenCommand.groovy | 118 ++++
 .../forge/cli/command/CreateAppCommand.groovy}     |  45 +-
 .../grails/forge/cli/command/CreateCommand.groovy  | 126 +++++
 .../cli/command/CreateControllerCommand.groovy     |  84 +++
 .../cli/command/CreateDomainClassCommand.groovy    |  84 +++
 .../cli/command/CreateInterceptorCommand.groovy    |  84 +++
 .../forge/cli/command/CreateJobCommand.groovy      |  85 +++
 .../forge/cli/command/CreatePluginCommand.groovy}  |  45 +-
 .../forge/cli/command/CreateRestApiCommand.groovy} |  45 +-
 .../forge/cli/command/CreateServiceCommand.groovy  |  84 +++
 .../forge/cli/command/CreateTagLibCommand.groovy   |  84 +++
 .../cli/command/CreateWebPluginCommand.groovy}     |  45 +-
 .../forge/cli/command/CreateWebappCommand.groovy}  |  45 +-
 .../command/DevelopmentReloadingCandidates.groovy} |  18 +-
 .../command/DevelopmentReloadingConverter.groovy}  |  20 +-
 .../forge/cli/command/GormImplCandidates.groovy}   |  17 +-
 .../forge/cli/command/GormImplConverter.groovy}    |  22 +-
 .../forge/cli/command/LanguageCandidates.groovy}   |  17 +-
 .../forge/cli/command/LanguageConverter.groovy}    |  18 +-
 .../grails/forge/cli/command/ListFeatures.groovy   | 106 ++++
 .../cli/command/ServletImplCandidates.groovy}      |  17 +-
 .../forge/cli/command/ServletImplConverter.groovy} |  20 +-
 .../forge/cli/util/GrailsVersionProvider.groovy}   |  28 +-
 .../java/org/grails/forge/cli/Application.java     | 128 -----
 .../java/org/grails/forge/cli/CodeGenConfig.java   | 180 ------
 .../org/grails/forge/cli/GrailsPicocliFactory.java |  57 --
 .../forge/cli/command/AddPropertyCommand.java      | 181 ------
 .../org/grails/forge/cli/command/BaseCommand.java  |  92 ---
 .../grails/forge/cli/command/CodeGenCommand.java   | 123 -----
 .../grails/forge/cli/command/CreateCommand.java    | 137 -----
 .../forge/cli/command/CreateControllerCommand.java |  88 ---
 .../cli/command/CreateDomainClassCommand.java      |  88 ---
 .../cli/command/CreateInterceptorCommand.java      |  88 ---
 .../grails/forge/cli/command/CreateJobCommand.java |  87 ---
 .../forge/cli/command/CreateServiceCommand.java    |  88 ---
 .../forge/cli/command/CreateTagLibCommand.java     |  88 ---
 .../org/grails/forge/cli/command/ListFeatures.java | 111 ----
 .../grails-forge-cli/native-image.properties       |   2 -
 .../grails-forge-cli/resource-config.json          |   7 -
 .../src/main/resources/simplelogger.properties     |  23 +
 .../org/grails/forge/cli/ApplicationSpec.groovy    | 110 ++++
 .../CodeGenConfigDevelopmentReloadingSpec.groovy   |  24 +-
 .../org/grails/forge/cli/CommandFixture.groovy     |   6 +-
 .../groovy/org/grails/forge/cli/CommandSpec.groovy |   8 +
 .../org/grails/forge/cli/ForgeCliSpec.groovy}      |  41 +-
 .../cli/command/ApplicationCommandSpec.groovy      |  18 +-
 .../forge/cli/command/CodeGenCommandSpec.groovy    |  21 +-
 .../forge/cli/command/CreateAppCommandSpec.groovy  |  34 +-
 .../cli/command/CreateControllerCommandSpec.groovy |   8 -
 .../command/CreateDomainClassCommandSpec.groovy    |   7 -
 .../command/CreateInterceptorCommandSpec.groovy    |   9 -
 .../forge/cli/command/CreateJobCommandSpec.groovy  |   8 -
 .../cli/command/CreateServiceCommandSpec.groovy    |   8 -
 .../cli/command/CreateTagLibCommandSpec.groovy     |  12 -
 .../groovy/org/grails/forge/cli/CliRunner.groovy}  |  25 +-
 grails-forge/grails-forge-core/build.gradle        |  80 +--
 .../asciidoctor/template/asciidocGradle.gsp}       |  17 +-
 .../feature/asciidoctor/template/indexAdoc.gsp}    |   8 +-
 .../views/forge/feature/build/gitignore.gsp}       |   6 +-
 .../feature/build/gradle/templates/buildGradle.gsp | 140 +++++
 .../gradle/templates/buildSrcBuildGradle.gsp}      |  56 +-
 .../build/gradle/templates/dependencies.gsp}       |  34 +-
 .../build/gradle/templates/gradleProperties.gsp}   |  38 +-
 .../gradle/templates/gradleWrapperProperties.gsp}  |  33 +-
 .../build/gradle/templates/settingsGradle.gsp      |  45 +-
 .../grails-app/views/forge/feature/cli.gsp         |  43 ++
 .../plain/templates/plainGithubWorkflow.gsp}       |  27 +-
 .../github/workflows/templates/javaSetup.gsp}      |  24 +-
 .../grails/templates/applicationController.gsp}    |  14 +-
 .../forge/feature/grails/templates/plugin.gsp}     |  41 +-
 .../feature/grails/templates/urlMappings.gsp}      |  29 +-
 .../feature/lang/groovy/templates/application.gsp} |  58 +-
 .../feature/lang/groovy/templates/bootStrap.gsp}   |  37 +-
 .../forge/feature/logging/template/logback.gsp}    |  12 +-
 .../migration/templates/dbMigrationGradle.gsp}     |  11 +-
 .../forge/feature/other/template/maindocs.gsp}     |  23 +-
 .../forge/feature/other/template/markdownLink.gsp} |  11 +-
 .../views/forge/feature/other/template/readme.gsp} |  45 +-
 .../forge/feature/security/template/role.gsp}      |  18 +-
 .../template/securityApplicationGroovy.gsp}        |  31 +-
 .../forge/feature/security/template/user.gsp}      |  26 +-
 .../feature/security/template/userClassic.gsp}     |  28 +-
 .../security/template/userClassicService.gsp}      |  16 +-
 .../feature/security/template/userClassicSpec.gsp} |  14 +-
 .../feature/security/template/userController.gsp}  |  16 +-
 .../forge/feature/security/template/userRole.gsp}  |  20 +-
 .../feature/security/template/userService.gsp}     |  20 +-
 .../forge/feature/security/template/userSpec.gsp}  |  14 +-
 .../feature/spring/template/springResources.gsp}   |   6 +-
 .../feature/test/template/containerGebSpec.gsp}    |  25 +-
 .../forge/feature/test/template/gebConfig.gsp}     |  14 +-
 .../views/forge/feature/test/template/gebSpec.gsp} |  25 +-
 .../forge/feature/view/json/templates/_errors.gsp} |   6 +-
 .../forge/feature/view/json/templates/_object.gsp} |   8 +-
 .../forge/feature/view/json/templates/error.gsp}   |   6 +-
 .../forge/feature/view/json/templates/index.gsp}   |   6 +-
 .../feature/view/json/templates/notFound.gsp}      |   6 +-
 .../feature/view/markup/templates/_errors.gsp}     |   6 +-
 .../feature/view/markup/templates/_object.gsp}     |   8 +-
 .../forge/feature/view/markup/templates/error.gsp} |   6 +-
 .../forge/feature/view/markup/templates/index.gsp} |   6 +-
 .../feature/view/markup/templates/notFound.gsp}    |   6 +-
 .../views/forge/template/api/grailsForgeApi.gsp}   |  37 +-
 .../org/grails/forge/ForgeCoreConfiguration.groovy |  50 ++
 .../org/grails/forge/ForgeGrailsPlugin.groovy      |  49 ++
 .../forge/application/ApplicationType.groovy}      |  44 +-
 .../forge/application/ContextFactory.groovy}       | 131 +++--
 .../forge/application/OperatingSystem.groovy}      |  27 +-
 .../application/PluginAvailableFeatures.groovy}    |  23 +-
 .../org/grails/forge/application/Project.groovy    |  93 ++++
 .../forge/application/ProjectIdentifier.groovy}    |  28 +-
 .../application/RestApiAvailableFeatures.groovy}   |  23 +-
 .../forge/application/WebAvailableFeatures.groovy} |  20 +-
 .../application/WebPluginAvailableFeatures.groovy} |  29 +-
 .../generator/DefaultProjectGenerator.groovy}      | 103 ++--
 .../application/generator/GeneratorContext.groovy  | 397 +++++++++++++
 .../application/generator/ProjectGenerator.groovy} |  30 +-
 .../org/grails/forge/build/BuildPlugin.groovy}     |  28 +-
 .../org/grails/forge/build/BuildProperties.groovy} |  36 +-
 .../org/grails/forge/build/Comment.groovy}         |  15 +-
 .../org/grails/forge/build/Property.groovy}        |  15 +-
 .../forge/build/dependencies/Coordinate.groovy}    |  45 +-
 .../build/dependencies/CoordinateResolver.groovy}  |  10 +-
 .../dependencies/DefaultCoordinateResolver.groovy} |  32 +-
 .../forge/build/dependencies/Dependency.groovy     | 393 +++++++++++++
 .../build/dependencies/DependencyContext.groovy}   |  41 +-
 .../build/dependencies/DependencyCoordinate.groovy | 120 ++++
 .../dependencies/LookupFailedException.groovy}     |  12 +-
 .../grails/forge/build/dependencies/Phase.groovy}  |   8 +-
 .../PomDependencyVersionResolver.groovy            | 150 +++++
 .../grails/forge/build/dependencies/Scope.groovy}  |  97 ++--
 .../grails/forge/build/dependencies/Source.groovy} |   8 +-
 .../build/gradle/DefaultGradleRepository.groovy    | 141 +++++
 .../grails/forge/build/gradle/GradleBuild.groovy   | 162 ++++++
 .../forge/build/gradle/GradleBuildCreator.groovy}  |  58 +-
 .../forge/build/gradle/GradleConfiguration.groovy} | 134 ++---
 .../forge/build/gradle/GradleDependency.groovy     | 123 +++++
 .../grails/forge/build/gradle/GradleDsl.groovy}    |   8 +-
 .../grails/forge/build/gradle/GradlePlugin.groovy  | 256 +++++++++
 .../forge/build/gradle/GradleRepository.groovy}    |  97 ++--
 .../build/gradle/MavenCentralRepository.groovy}    |  25 +-
 .../build/gradle/MavenLocalRepository.groovy}      |  25 +-
 .../build/gradle/VersionRegexRepoFilter.groovy     |  56 ++
 .../grails/forge/build/gradle/VersionType.groovy}  |   8 +-
 .../grails/forge/defaults/HasDefaultBuild.groovy}  |  11 +-
 .../HasDefaultDevelopmentReloading.groovy}         |  12 +-
 .../grails/forge/defaults/IncludesDefaults.groovy} |  10 +-
 .../grails/forge/defaults/LanguageDefaults.groovy} |  32 +-
 .../org/grails/forge/diff/FeatureDiffer.groovy}    | 114 ++--
 .../forge/feature/ApplicationFeature.groovy}       |  14 +-
 .../grails/forge/feature/AvailableFeatures.groovy} |  20 +-
 .../forge/feature/BaseAvailableFeatures.groovy     |  88 +++
 .../org/grails/forge/feature/Category.groovy       |  65 +++
 .../grails/forge/feature/DefaultFeature.groovy}    |  14 +-
 .../org/grails/forge/feature/Feature.groovy}       |  50 +-
 .../org/grails/forge/feature/FeatureContext.groovy | 133 +++++
 .../org/grails/forge/feature/FeaturePhase.groovy}  |  17 +-
 .../grails/forge/feature/FeaturePredicate.groovy}  |  11 +-
 .../grails/forge/feature/FeatureRegistry.groovy    |  94 ++++
 .../org/grails/forge/feature/Features.groovy       | 134 +++++
 .../org/grails/forge/feature/OneOfFeature.groovy}  |  10 +-
 .../grails/forge/feature/ai/GrailsSpringAi.groovy  |  87 +++
 .../forge/feature/ai/SpringAiAnthropic.groovy}     |  35 +-
 .../grails/forge/feature/ai/SpringAiOllama.groovy} |  43 +-
 .../grails/forge/feature/ai/SpringAiOpenAi.groovy} |  35 +-
 .../feature/ai/SpringAiProviderFeature.groovy}     |  53 +-
 .../org/grails/forge/feature/api/OpenApi.groovy    |  87 +++
 .../forge/feature/asciidoctor/Asciidoctor.groovy   |  83 +++
 .../feature/assetPipeline/AssetPipeline.groovy     | 159 ++++++
 .../forge/feature/build/BuildFeature.groovy}       |  18 +-
 .../forge/feature/build/gradle/Dockerfile.groovy   |  85 +++
 .../forge/feature/build/gradle/Gradle.groovy       | 100 ++++
 .../feature/build/gradle/GradleBuildSrc.groovy     |  77 +++
 .../build/gradle/GradleBuildSrcFeature.groovy}     |  22 +-
 .../feature/build/gradle/GradleSettingsFile.groovy |  81 +++
 .../build/gradle/GradleSettingsFileFeature.groovy} |  22 +-
 .../forge/feature/cache/CacheFeature.groovy}       |  18 +-
 .../org/grails/forge/feature/cache/EHCache.groovy  |  67 +++
 .../grails/forge/feature/cache/GrailsCache.groovy  |  76 +++
 .../config/ApplicationConfiguration.groovy}        |  38 +-
 .../feature/config/BootstrapConfiguration.groovy}  |  24 +-
 .../forge/feature/config/Configuration.groovy}     | 157 +++---
 .../feature/config/ConfigurationFeature.groovy}    |  39 +-
 .../grails/forge/feature/config/Properties.groovy} |  47 +-
 .../org/grails/forge/feature/config/Yaml.groovy}   |  54 +-
 .../forge/feature/database/AsyncGorm.groovy}       |  68 +--
 .../DatabaseDriverConfigurationFeature.groovy}     |  57 +-
 .../feature/database/DatabaseDriverFeature.groovy  |  88 +++
 .../forge/feature/database/GormFeature.groovy}     |  26 +-
 .../feature/database/GormOneOfFeature.groovy}      |  12 +-
 .../feature/database/GrailsDataHibernate5.groovy   | 128 +++++
 .../feature/database/GrailsDataHibernate7.groovy   | 124 +++++
 .../database/GrailsDataHibernateValidator.groovy}  |  35 +-
 .../feature/database/GrailsDataMongoDB.groovy}     |  91 ++-
 .../forge/feature/database/GraphqlGorm.groovy}     |  68 +--
 .../org/grails/forge/feature/database/H2.groovy    | 106 ++++
 .../forge/feature/database/JpaFeature.groovy}      |   8 +-
 .../feature/database/MongoDBTestingSupport.groovy  |  78 +++
 .../MongoDBTestingSupportValidator.groovy}         |  28 +-
 .../forge/feature/database/MongoFeature.groovy}    |  30 +-
 .../grails/forge/feature/database/MongoSync.groovy |  87 +++
 .../org/grails/forge/feature/database/MySQL.groovy |  98 ++++
 .../grails/forge/feature/database/Neo4jGorm.groovy |  77 +++
 .../forge/feature/database/PostgreSQL.groovy       |  99 ++++
 .../grails/forge/feature/database/SQLServer.groovy |  98 ++++
 .../forge/feature/database/TestContainers.groovy   | 134 +++++
 .../github/workflows/GitHubWorkflowFeature.groovy} |  33 +-
 .../forge/feature/github/workflows/Secret.groovy}  |  37 +-
 .../plain/PlainGithubWorkflowFeature.groovy        |  59 ++
 .../grails/forge/feature/grails/GrailsBase.groovy  | 117 ++++
 .../feature/grails/GrailsCompileStatic.groovy}     |  38 +-
 .../feature/grails/GrailsDefaultPlugins.groovy     |  91 +++
 .../forge/feature/grails/GrailsGradlePlugin.groovy |  82 +++
 .../forge/feature/grails/GrailsUrlMappings.groovy  |  63 +++
 .../forge/feature/grails/GrailsWebConsole.groovy   |  74 +++
 .../feature/grailsProfiles/GrailsProfiles.groovy   |  79 +++
 .../feature/grailsWrapper/GrailsWrapper.groovy     |  81 +++
 .../forge/feature/lang/LanguageFeature.groovy}     |  22 +-
 .../feature/lang/groovy/GrailsApplication.groovy   |  88 +++
 .../lang/groovy/GrailsApplicationFeature.groovy}   |  10 +-
 .../grails/forge/feature/logging/Logback.groovy}   |  56 +-
 .../forge/feature/logging/LogbackConfig.groovy}    |  56 +-
 .../forge/feature/logging/LoggingFeature.groovy}   |  18 +-
 .../forge/feature/micronaut/GrailsMicronaut.groovy | 103 ++++
 .../micronaut/GrailsMicronautValidator.groovy}     |  29 +-
 .../feature/micronaut/MicronautHttpClient.groovy   | 117 ++++
 .../migration/DatabaseMigrationPlugin.groovy       |  80 +++
 .../feature/migration/MigrationFeature.groovy}     |  18 +-
 .../org/grails/forge/feature/other/AppName.groovy  |  66 +++
 .../grails/forge/feature/other/GrailsQuartz.groovy |  74 +++
 .../feature/other/GrailsStartupProgress.groovy     |  79 +++
 .../forge/feature/other/HibernateValidator.groovy  |  70 +++
 .../org/grails/forge/feature/other/Readme.groovy   |  94 ++++
 .../grails/forge/feature/other/ShadePlugin.groovy  |  77 +++
 .../grails/forge/feature/reloading/Jrebel.groovy   |  74 +++
 .../feature/reloading/ReloadingFeature.groovy}     |  26 +-
 .../feature/reloading/SpringBootDevTools.groovy    |  93 ++++
 .../feature/security/GrailsSpringSecurity.groovy   |  90 +++
 .../feature/security/GrailsSpringSecurityUi.groovy |  97 ++++
 .../security/PrimarySecurityFeature.groovy}        |  10 +-
 .../forge/feature/security/SecurityFeature.groovy  |  87 +++
 .../security/SpringBootStarterSecurity.groovy      |  86 +++
 .../forge/feature/sitemesh3/Sitemesh3.groovy}      |  54 +-
 .../feature/spring/SpringBootAutoconfigure.groovy  |  67 +++
 .../spring/SpringBootEmbeddedServlet.groovy}       |  22 +-
 .../feature/spring/SpringBootJettyFeature.groovy   |  63 +++
 .../feature/spring/SpringBootStarterFeature.groovy |  76 +++
 .../feature/spring/SpringBootTomcatFeature.groovy} |  60 +-
 .../spring/SpringBootUndertowFeature.groovy}       |  54 +-
 .../spring/SpringBootVirtualThreads.groovy}        |  46 +-
 .../forge/feature/spring/SpringResources.groovy    |  65 +++
 .../feature/spring/SpringThreadingFeature.groovy}  |  18 +-
 .../grails/forge/feature/test/GebFeature.groovy}   |  22 +-
 .../forge/feature/test/GebWithLocalBrowsers.groovy | 124 +++++
 .../feature/test/GebWithTestcontainers.groovy      | 106 ++++
 .../forge/feature/test/GormTestingSupport.groovy   |  67 +++
 .../feature/test/GrailsWebTestingSupport.groovy    |  67 +++
 .../org/grails/forge/feature/test/Mockito.groovy   |  77 +++
 .../forge/feature/test/MockitoValidator.groovy}    |  25 +-
 .../org/grails/forge/feature/test/Spock.groovy     |  73 +++
 .../feature/test/ViewsJsonTestingSupport.groovy    |  67 +++
 .../validation/CompositeFeatureValidator.groovy}   |  35 +-
 .../feature/validation/FeatureValidator.groovy}    |  18 +-
 .../validation/OneOfFeatureValidator.groovy}       |  39 +-
 .../org/grails/forge/feature/view/GrailsGsp.groovy | 106 ++++
 .../grails/forge/feature/view/GrailsLayout.groovy} |  34 +-
 .../grails/forge/feature/view/GrailsViews.groovy   |  72 +++
 .../grails/forge/feature/view/GspLayout.groovy}    |  24 +-
 .../grails/forge/feature/view/Scaffolding.groovy   |  88 +++
 .../grails/forge/feature/view/json/ViewJson.groovy |  93 ++++
 .../forge/feature/view/markup/ViewMarkup.groovy    |  77 +++
 .../org/grails/forge/feature/web/GrailsWeb.groovy} |  36 +-
 .../org/grails/forge/io/ConsoleOutput.groovy}      |  37 +-
 .../grails/forge/io/FileSystemOutputHandler.groovy | 144 +++++
 .../org/grails/forge/io/MapOutputHandler.groovy}   |  45 +-
 .../org/grails/forge/io/OutputHandler.groovy}      |  17 +-
 .../org/grails/forge/io/OutputUtils.groovy}        |  43 +-
 .../org/grails/forge/io/ZipOutputHandler.groovy    | 146 +++++
 .../org/grails/forge/options/BuildTool.groovy      |  78 +++
 .../forge/options/DefaultTestViewProvider.groovy}  |  19 +-
 .../forge/options/DevelopmentReloading.groovy}     |  48 +-
 .../org/grails/forge/options/FeatureFilter.groovy} |  59 +-
 .../org/grails/forge/options/GormImpl.groovy}      |  52 +-
 .../org/grails/forge/options/JdkVersion.groovy}    |  29 +-
 .../org/grails/forge/options/Language.groovy       |  99 ++++
 .../groovy/org/grails/forge/options/Options.groovy | 128 +++++
 .../org/grails/forge/options/ServletImpl.groovy}   |  38 +-
 .../org/grails/forge/options/TestFramework.groovy} |  53 +-
 .../grails/forge/options/TestViewProvider.groovy}  |  22 +-
 .../grails/forge/template/BinaryTemplate.groovy}   |  19 +-
 .../grails/forge/template/Config4kTemplate.groovy} |  43 +-
 .../forge/template/DefaultTemplateRenderer.groovy} |  63 ++-
 .../org/grails/forge/template/ForgePages.groovy    | 109 ++++
 .../org/grails/forge/template/GspTemplate.groovy}  |  46 +-
 .../org/grails/forge/template/GspView.groovy       |  69 +++
 .../forge/template/PropertiesTemplate.groovy}      |  65 +--
 .../org/grails/forge/template/RenderResult.groovy} |  69 +--
 .../grails/forge/template/StringTemplate.groovy}   |  28 +-
 .../org/grails/forge/template/Template.groovy}     |  13 +-
 .../grails/forge/template/TemplateModel.groovy}    |   8 +-
 .../grails/forge/template/TemplateRenderer.groovy} |  22 +-
 .../org/grails/forge/template/URLTemplate.groovy}  |  45 +-
 .../org/grails/forge/template/Writable.groovy}     |   9 +-
 .../org/grails/forge/template/YamlTemplate.groovy  |  89 +++
 .../org/grails/forge/util/IOFeatureUtil.groovy}    |  42 +-
 .../org/grails/forge/util/NameUtils.groovy}        | 471 ++++++++--------
 .../org/grails/forge/util/ThrowingSupplier.groovy} |  10 +-
 .../org/grails/forge/util/VersionInfo.groovy       | 188 +++++++
 .../org/grails/forge/util/ZipUtil.groovy}          |  72 ++-
 .../java/org/grails/forge/analytics/Generated.java | 112 ----
 .../grails/forge/analytics/SelectedFeature.java    |  38 --
 .../forge/application/PluginAvailableFeatures.java |  35 --
 .../java/org/grails/forge/application/Project.java |  94 ----
 .../application/RestApiAvailableFeatures.java      |  34 --
 .../forge/application/WebAvailableFeatures.java    |  35 --
 .../application/WebPluginAvailableFeatures.java    |  34 --
 .../application/generator/GeneratorContext.java    | 387 -------------
 .../forge/build/dependencies/Dependency.java       | 393 -------------
 .../build/dependencies/DependencyCoordinate.java   | 121 ----
 .../build/dependencies/LookupFailedException.java  |  26 -
 .../dependencies/PomDependencyVersionResolver.java | 136 -----
 .../build/gradle/DefaultGradleRepository.java      | 142 -----
 .../org/grails/forge/build/gradle/GradleBuild.java | 167 ------
 .../forge/build/gradle/GradleDependency.java       | 125 -----
 .../grails/forge/build/gradle/GradlePlugin.java    | 256 ---------
 .../forge/build/gradle/VersionRegexRepoFilter.java |  22 -
 .../grails/forge/defaults/IncludesDefaults.java    |  23 -
 .../forge/feature/BaseAvailableFeatures.java       |  86 ---
 .../java/org/grails/forge/feature/Category.java    |  61 --
 .../org/grails/forge/feature/FeatureContext.java   | 133 -----
 .../java/org/grails/forge/feature/Features.java    | 137 -----
 .../grails/forge/feature/ai/GrailsSpringAi.java    |  86 ---
 .../java/org/grails/forge/feature/api/OpenApi.java |  87 ---
 .../forge/feature/asciidoctor/Asciidoctor.java     |  82 ---
 .../forge/feature/assetPipeline/AssetPipeline.java | 160 ------
 .../forge/feature/build/gradle/Dockerfile.java     |  85 ---
 .../grails/forge/feature/build/gradle/Gradle.java  | 109 ----
 .../forge/feature/build/gradle/GradleBuildSrc.java |  81 ---
 .../feature/build/gradle/GradleSettingsFile.java   |  80 ---
 .../build/gradle/templates/buildGradle.rocker.raw  | 156 ------
 .../gradle/templates/gradleProperties.rocker.raw   |  33 --
 .../gradle/templates/settingsGradle.rocker.raw     |  35 --
 .../org/grails/forge/feature/cache/EHCache.java    |  67 ---
 .../grails/forge/feature/cache/GrailsCache.java    |  76 ---
 .../java/org/grails/forge/feature/cli.rocker.raw   |  48 --
 .../feature/config/ApplicationConfiguration.java   |  40 --
 .../feature/database/DatabaseDriverFeature.java    |  89 ---
 .../feature/database/GrailsDataHibernate5.java     | 129 -----
 .../feature/database/GrailsDataHibernate7.java     | 125 -----
 .../java/org/grails/forge/feature/database/H2.java | 106 ----
 .../feature/database/MongoDBTestingSupport.java    |  76 ---
 .../grails/forge/feature/database/MongoSync.java   |  85 ---
 .../org/grails/forge/feature/database/MySQL.java   |  96 ----
 .../grails/forge/feature/database/Neo4jGorm.java   |  78 ---
 .../grails/forge/feature/database/PostgreSQL.java  |  97 ----
 .../grails/forge/feature/database/SQLServer.java   |  96 ----
 .../forge/feature/database/TestContainers.java     | 134 -----
 .../plain/PlainGithubWorkflowFeature.java          |  57 --
 .../grails/forge/feature/grails/GrailsBase.java    | 117 ----
 .../forge/feature/grails/GrailsDefaultPlugins.java |  91 ---
 .../forge/feature/grails/GrailsGradlePlugin.java   |  82 ---
 .../forge/feature/grails/GrailsUrlMappings.java    |  63 ---
 .../forge/feature/grails/GrailsWebConsole.java     |  74 ---
 .../feature/grailsProfiles/GrailsProfiles.java     |  80 ---
 .../forge/feature/grailsWrapper/GrailsWrapper.java |  81 ---
 .../feature/lang/groovy/GrailsApplication.java     |  89 ---
 .../forge/feature/micronaut/GrailsMicronaut.java   | 103 ----
 .../feature/micronaut/MicronautHttpClient.java     | 117 ----
 .../feature/migration/DatabaseMigrationPlugin.java |  79 ---
 .../org/grails/forge/feature/other/AppName.java    |  67 ---
 .../grails/forge/feature/other/GrailsQuartz.java   |  72 ---
 .../forge/feature/other/GrailsStartupProgress.java |  78 ---
 .../forge/feature/other/HibernateValidator.java    |  68 ---
 .../org/grails/forge/feature/other/Readme.java     |  99 ----
 .../grails/forge/feature/other/ShadePlugin.java    |  75 ---
 .../forge/feature/other/template/readme.rocker.raw |  41 --
 .../org/grails/forge/feature/reloading/Jrebel.java |  74 ---
 .../feature/reloading/SpringBootDevTools.java      |  94 ----
 .../feature/security/GrailsSpringSecurity.java     |  91 ---
 .../feature/security/GrailsSpringSecurityUi.java   |  98 ----
 .../forge/feature/security/SecurityFeature.java    |  88 ---
 .../security/SpringBootStarterSecurity.java        |  88 ---
 .../feature/spring/SpringBootAutoconfigure.java    |  66 ---
 .../feature/spring/SpringBootJettyFeature.java     |  63 ---
 .../feature/spring/SpringBootStarterFeature.java   |  76 ---
 .../forge/feature/spring/SpringResources.java      |  64 ---
 .../forge/feature/test/GebWithLocalBrowsers.java   | 124 -----
 .../forge/feature/test/GebWithTestcontainers.java  | 106 ----
 .../forge/feature/test/GormTestingSupport.java     |  66 ---
 .../feature/test/GrailsWebTestingSupport.java      |  66 ---
 .../org/grails/forge/feature/test/Mockito.java     |  77 ---
 .../java/org/grails/forge/feature/test/Spock.java  |  73 ---
 .../feature/test/ViewsJsonTestingSupport.java      |  66 ---
 .../org/grails/forge/feature/view/GrailsGsp.java   | 107 ----
 .../org/grails/forge/feature/view/GrailsViews.java |  70 ---
 .../org/grails/forge/feature/view/Scaffolding.java |  88 ---
 .../grails/forge/feature/view/json/ViewJson.java   |  93 ----
 .../forge/feature/view/markup/ViewMarkup.java      |  75 ---
 .../grails/forge/io/FileSystemOutputHandler.java   | 149 -----
 .../java/org/grails/forge/io/ZipOutputHandler.java | 133 -----
 .../java/org/grails/forge/options/BuildTool.java   |  79 ---
 .../org/grails/forge/options/FeatureFilter.java    |  66 ---
 .../forge/options/GormImplTypeConverter.java       |  47 --
 .../java/org/grails/forge/options/Language.java    | 100 ----
 .../java/org/grails/forge/options/Options.java     | 158 ------
 .../org/grails/forge/template/RockerWritable.java  |  39 --
 .../org/grails/forge/template/TemplateModel.java   |  22 -
 .../org/grails/forge/template/YamlTemplate.java    |  93 ----
 .../java/org/grails/forge/util/VersionInfo.java    | 196 -------
 .../grails-forge-core/resource-config.json         |  14 -
 ...rk.boot.autoconfigure.AutoConfiguration.imports |   1 +
 .../org/grails/forge/ApplicationContextSpec.groovy |   8 +-
 .../groovy/org/grails/forge/BuildBuilder.groovy    |  12 +-
 ...tionContextSpec.groovy => ForgeContexts.groovy} |  30 +-
 ...ec.groovy => ForgeCoreConfigurationSpec.groovy} |  18 +-
 .../org/grails/forge/ForgeGrailsPluginSpec.groovy  | 134 +++++
 .../PomDependencyVersionResolverSpec.groovy        |  10 +-
 .../forge/build/gradle/GradleRepositorySpec.groovy |  16 +
 .../grails/forge/build/gradle/GradleSpec.groovy    |   5 +-
 .../forge/feature/BaseAvailableFeaturesSpec.groovy |   6 +-
 .../forge/feature/ai/GrailsSpringAiSpec.groovy     |   8 +-
 .../grails/forge/feature/cache/CacheSpec.groovy    |   4 +-
 .../forge/feature/config/PropertiesSpec.groovy     |   4 +-
 .../grails/forge/feature/config/YamlSpec.groovy    |   4 +-
 .../feature/database/GrailsDataMongoDBSpec.groovy  |   2 +-
 .../forge/feature/database/MongoSyncSpec.groovy    |  16 +
 .../grails/forge/feature/database/MySQLSpec.groovy |   2 +-
 .../forge/feature/database/Neo4JGormSpec.groovy    |   2 +-
 .../forge/feature/database/PostgresSpec.groovy     |   2 +-
 .../forge/feature/database/SQLServerSpec.groovy    |   2 +-
 .../feature/database/TestContainersSpec.groovy     |   6 +-
 .../workflows/PlainGithubWorkflowSpec.groovy       |   4 +-
 .../forge/feature/grails/GrailsBaseSpec.groovy     |   4 +-
 .../feature/grails/GrailsGradlePluginSpec.groovy   |   4 +-
 .../feature/grails/GrailsWebConsoleSpec.groovy     |   4 +-
 .../feature/lang/GrailsApplicationSpec.groovy      |   4 +-
 .../feature/micronaut/GrailsMicronautSpec.groovy   |   4 +-
 .../micronaut/MicronautHttpClientSpec.groovy       |   4 +-
 .../forge/feature/spring/SpringBootSpec.groovy     |   4 +-
 .../spring/SpringBootVirtualThreadsSpec.groovy     |   4 +-
 .../forge/fixture/CommandOutputFixture.groovy      |   4 +-
 .../org/grails/forge/fixture/ContextFixture.groovy |   9 +-
 .../org/grails/forge/options/GormImplSpec.groovy   |   1 +
 ...iderSpec.groovy => TestViewProviderSpec.groovy} |  10 +-
 .../plugintest/ForgePluginTestApplication.groovy}  |  46 +-
 .../org/grails/forge/util/VersionInfoSpec.groovy   |   6 +-
 grails-forge/grails-forge-web-netty/build.gradle   | 156 ------
 .../java/org/grails/forge/netty/Application.java   |  41 --
 .../forge/netty/analytics/AnalyticsClient.java     |  43 --
 .../grails-forge-web-netty/native-image.properties |  18 -
 .../grails-forge-web-netty/resource-config.json    |   8 -
 .../src/main/resources/application-dev.yml         |   5 -
 .../src/main/resources/application.yml             |  37 --
 .../src/main/resources/logback.xml                 |  15 -
 .../aws/.platform/nginx/conf.d/proxy.conf          |   0
 .../aws/Procfile                                   |   0
 .../aws/start.sh                                   |   4 +-
 grails-forge/grails-forge-web/build.gradle         | 124 +++++
 .../grails-app/conf/application.yml                |  45 ++
 .../grails-app/conf/logback.xml}                   |  24 +-
 .../grails-app/conf/openapi-base.yml               |  22 +
 .../org/grails/forge/web/DiffController.groovy     | 142 +++++
 .../forge/web/ForgeApplicationController.groovy    | 146 +++++
 .../org/grails/forge/web/PreviewController.groovy  | 102 ++++
 .../forge/web/SelectOptionsController.groovy       |  52 ++
 .../org/grails/forge/web/UrlMappings.groovy        |  37 ++
 .../grails/forge/web/ZipCreateController.groovy    | 132 +++++
 .../grails-app/i18n/messages.properties            |  19 +
 .../init/org/grails/forge/web/Application.groovy}  |  36 +-
 .../forge/web/ForgeApiIntegrationSpec.groovy       | 615 +++++++++++++++++++++
 .../resources/api-test-messages_fr.properties}     |   9 +-
 .../org/grails/forge/api/ApplicationTypeDTO.groovy | 112 ++++
 .../grails/forge/api/ApplicationTypeList.groovy}   |  30 +-
 .../forge/api/ApplicationTypeOperations.groovy}    |  24 +-
 .../forge/api/DevelopmentReloadingDTO.groovy       |  90 +++
 .../groovy/org/grails/forge/api/FeatureDTO.groovy  | 136 +++++
 .../org/grails/forge/api/FeatureList.groovy}       |  30 +-
 .../org/grails/forge/api/FeatureOperations.groovy} |  22 +-
 .../org/grails/forge/api/FeatureService.groovy     |  81 +++
 .../forge/api/ForgeApplicationService.groovy       | 114 ++++
 .../org/grails/forge/api/ForgeMessages.groovy}     |  19 +-
 .../groovy/org/grails/forge/api/GormImplDTO.groovy |  98 ++++
 .../forge/api/GrailsForgeConfiguration.groovy}     |  78 ++-
 .../org/grails/forge/api/JdkVersionDTO.groovy      |  97 ++++
 .../groovy/org/grails/forge/api/LanguageDTO.groovy | 109 ++++
 .../groovy/org/grails/forge/api/LinkDTO.groovy}    |  40 +-
 .../groovy/org/grails/forge/api/Linkable.groovy}   |  34 +-
 .../org/grails/forge/api/Relationship.groovy}      |  35 +-
 .../groovy/org/grails/forge/api/RequestInfo.groovy |  78 +++
 .../org/grails/forge/api/SelectOptionDTO.groovy}   |  39 +-
 .../org/grails/forge/api/SelectOptionsDTO.groovy}  | 150 +++--
 .../groovy/org/grails/forge/api/Selectable.groovy} |  14 +-
 .../org/grails/forge/api/ServletImplDTO.groovy     |  86 +++
 .../org/grails/forge/api/UserAgentParser.groovy}   |  39 +-
 .../groovy/org/grails/forge/api/VersionDTO.groovy} |  34 +-
 .../forge/api/create/CreateProjectService.groovy   |  88 +++
 .../options/ApplicationTypeSelectOptions.groovy}   |  24 +-
 .../DevelopmentReloadingSelectOptions.groovy}      |  25 +-
 .../api/options/GormImplSelectOptions.groovy}      |  24 +-
 .../api/options/JdkVersionSelectOptions.groovy}    |  24 +-
 .../api/options/LanguageSelectOptions.groovy}      |  24 +-
 .../api/options/SelectOptionsOperations.groovy}    |  11 +-
 .../api/options/ServletImplSelectOptions.groovy}   |  24 +-
 .../grails/forge/api/preview/PreviewDTO.groovy}    |  33 +-
 .../grails/forge/web/ForgeRequestSupport.groovy    | 187 +++++++
 .../grails/forge/web/GroovyObjectJsonMixin.groovy} |  20 +-
 .../forge/web/ForgeRequestSupportSpec.groovy       | 162 ++++++
 .../forge/web/GrailsForgeConfigurationSpec.groovy  |  72 +++
 grails-forge/grailsforgearchitecture.jpeg          | Bin 218395 -> 0 bytes
 grails-forge/infrastructure/README.md              |   2 +-
 grails-forge/infrastructure/environment.yaml       |   9 -
 grails-forge/infrastructure/shared.yaml            |   2 +-
 grails-forge/sam-local.yml                         |  43 --
 grails-forge/settings.gradle                       |   8 +-
 grails-forge/test-core/build.gradle                |  39 +-
 .../forge/cli/command/CreateControllerSpec.groovy  |   6 +-
 .../forge/cli/command/CreateInterceptorSpec.groovy |   6 +-
 .../forge/cli/command/CreateServiceSpec.groovy     |   6 +-
 .../forge/cli/command/CreateTagLibSpec.groovy      |   6 +-
 .../org/grails/forge/utils/CommandSpec.groovy      |  13 +-
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 .../plugin/core/GrailsPluginGradlePlugin.groovy    |  11 +-
 ...GrailsPluginGradlePluginNative2AsciiSpec.groovy |  43 ++
 .../plugin-native2ascii-off/build.gradle           |   8 +
 .../gradle.properties                              |   0
 .../grails-app/conf/application.yml                |   0
 .../plugin-native2ascii-off/settings.gradle        |   1 +
 .../resources/templates/messages_ru.properties     |  19 +
 .../org/grails/gsp/compiler/GroovyPageParser.java  |  18 +-
 .../org/grails/gsp/compiler/LogicLineTrimmer.java  | 234 ++++++++
 .../org/grails/gsp/GspTrimLogicLinesSpec.groovy    | 299 ++++++++++
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 threat-model.yaml                                  |   4 +-
 674 files changed, 19139 insertions(+), 21871 deletions(-)
 rename {grails-forge/buildSrc => build-logic/plugins}/src/main/groovy/org/apache/grails/buildsrc/WriteGrailsVersionInfoTask.groovy (89%)
 rename {grails-forge/buildSrc => build-logic/plugins}/src/main/groovy/org/apache/grails/forge/buildlogic/shadowjar/GrailsGroovyExtensionTransformer.groovy (79%)
 rename {grails-forge/buildSrc => build-logic/plugins}/src/main/groovy/org/apache/grails/forge/buildlogic/shadowjar/GrailsShadowLicenseTransform.groovy (100%)
 rename {grails-forge/buildSrc => build-logic/plugins}/src/main/groovy/org/apache/grails/forge/buildlogic/shadowjar/GrailsShadowNoticeTransform.groovy (100%)
 rename {grails-forge/buildSrc => build-logic/plugins}/src/main/groovy/org/grails/forge/internal/tasks/GenerateManpageAsciidoc.java (100%)
 rename {grails-forge/buildSrc => build-logic/plugins}/src/main/groovy/org/grails/forge/internal/tasks/PicocliBuildCompletionTask.java (100%)
 create mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/WriteGrailsVersionInfoTaskSpec.groovy
 create mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/forge/buildlogic/shadowjar/GrailsGroovyExtensionTransformerSpec.groovy
 delete mode 100644 grails-forge/.gitattributes
 delete mode 100644 grails-forge/.gitignore
 delete mode 100644 grails-forge/buildSrc/build.gradle
 delete mode 100644 grails-forge/buildSrc/settings.gradle
 delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/JavaGeneratorRunnable.java
 delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerConfiguration.java
 delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerPlugin.java
 delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerSourceSetProperty.java
 delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerTask.java
 delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/TemplateDirectorySet.java
 delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/WhitespaceProcessor.java
 delete mode 100644 grails-forge/config/checkstyle/checkstyle.xml
 delete mode 100644 grails-forge/config/spotless.license.java
 delete mode 100644 grails-forge/docs/choose-postgresql.png
 delete mode 100644 grails-forge/docs/cloud_sql_create_intance.png
 delete mode 100644 grails-forge/docs/create-database.png
 delete mode 100644 grails-forge/docs/create-two-databases.png
 delete mode 100644 grails-forge/docs/dbinstance-options.png
 delete mode 100644 grails-forge/docs/enable-cloud-sql-admin-api.png
 delete mode 100644 grails-forge/docs/enable-compute-engine-api.png
 delete mode 100755 grails-forge/etc/bin/generate-build-artifact-hashes.groovy
 delete mode 100755 grails-forge/etc/bin/test-reproducible-builds.sh
 delete mode 100644 grails-forge/gradle/code-style-config.gradle
 delete mode 100644 grails-forge/gradle/groovy-version-pin.gradle
 delete mode 100644 grails-forge/gradle/micronaut-openapi-config.gradle
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/build.gradle
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/AnalyticsController.java
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/Application.java
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/ApplicationRepository.java
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/Feature.java
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/FeatureRepository.java
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/Main.java
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/gcp/GoogleCloudSqlSetup.java
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/META-INF/native-image/io.micronaut.starter/micronaut-starter-analytics-postgres/native-image.properties
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/application-dev.yml
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/application.yml
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/databasemigrations/V1__schema.sql
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/logback.xml
 delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/test/groovy/org/grails/forge/analytics/postgres/StoreGeneratedProjectStatsSpec.groovy
 delete mode 100644 grails-forge/grails-forge-api/build.gradle
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/ApplicationController.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/ApplicationTypeDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/ApplicationTypeOperations.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/DevelopmentReloading.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/DevelopmentReloadingDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/FeatureDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/FeatureService.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/GormImplDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/JdkVersionDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/LanguageDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/LinkDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/RequestInfo.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/SelectOptionDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/ServletImplDTO.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/analytics/GenerationListener.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/bind/RequestInfoArgumentBinder.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/AbstractCreateController.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/zip/ZipCreateController.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/zip/ZipCreateOperation.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/diff/DiffController.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/diff/DiffOperations.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/ApplicationTypeSelectOptions.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/DevelopmentReloadingSelectOptions.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/GormImplSelectOptions.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/JdkVersionSelectOptions.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/SelectOptionsController.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/SelectOptionsOperations.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/ServletImplSelectOptions.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/preview/PreviewController.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/preview/PreviewOperations.java
 delete mode 100644 grails-forge/grails-forge-api/src/main/resources/META-INF/native-image/org.grails.forge.api/grails-forge-api/reflect-config.json
 delete mode 100644 grails-forge/grails-forge-api/src/main/resources/META-INF/native-image/org.grails.forge.api/grails-forge-api/resource-config.json
 delete mode 100644 grails-forge/grails-forge-api/src/main/resources/application.yml
 delete mode 100644 grails-forge/grails-forge-api/src/main/resources/select_options.properties
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/ApplicationControllerSpec.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/ApplicationTypeClient.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/CreateClient.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/DiffClient.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/DiffControllerSpec.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/FeatureControllerSpec.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/PreviewClient.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/PreviewControllerSpec.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/ZipCreateControllerSpec.groovy
 delete mode 100644 grails-forge/grails-forge-api/src/test/resources/features_es.properties
 delete mode 100644 grails-forge/grails-forge-api/src/test/resources/logback.xml
 create mode 100644 grails-forge/grails-forge-cli/grails-app/conf/application.yml
 create mode 100644 grails-forge/grails-forge-cli/grails-app/init/org/grails/forge/cli/Application.groovy
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/controller.rocker.raw => grails-app/views/forge/cli/command/templates/controller.gsp} (72%)
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/controllerSpec.rocker.raw => grails-app/views/forge/cli/command/templates/controllerSpec.gsp} (71%)
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/domain.rocker.raw => grails-app/views/forge/cli/command/templates/domain.gsp} (73%)
 copy grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/domainSpec.rocker.raw => grails-app/views/forge/cli/command/templates/domainSpec.gsp} (69%)
 copy grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/interceptor.rocker.raw => grails-app/views/forge/cli/command/templates/interceptor.gsp} (74%)
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/interceptorSpec.rocker.raw => grails-app/views/forge/cli/command/templates/interceptorSpec.gsp} (67%)
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/job.rocker.raw => grails-app/views/forge/cli/command/templates/job.gsp} (76%)
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/service.rocker.raw => grails-app/views/forge/cli/command/templates/service.gsp} (73%)
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/serviceSpec.rocker.raw => grails-app/views/forge/cli/command/templates/serviceSpec.gsp} (71%)
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/taglib.rocker.raw => grails-app/views/forge/cli/command/templates/taglib.gsp} (73%)
 rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/taglibSpec.rocker.raw => grails-app/views/forge/cli/command/templates/taglibSpec.gsp} (71%)
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/CodeGenConfig.groovy
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/CommonOptionsMixin.java => groovy/org/grails/forge/cli/CommonOptionsMixin.groovy} (64%)
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/ForgeCli.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/ForgeCommand.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/GrailsPicocliFactory.groovy
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/InteractiveShell.java => groovy/org/grails/forge/cli/InteractiveShell.groovy} (60%)
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/AddPropertyCommand.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/BaseCommand.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CodeGenCommand.groovy
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreateAppCommand.java => groovy/org/grails/forge/cli/command/CreateAppCommand.groovy} (52%)
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateCommand.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateControllerCommand.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateDomainClassCommand.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateInterceptorCommand.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateJobCommand.groovy
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreatePluginCommand.java => groovy/org/grails/forge/cli/command/CreatePluginCommand.groovy} (51%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreateRestApiCommand.java => groovy/org/grails/forge/cli/command/CreateRestApiCommand.groovy} (51%)
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateServiceCommand.groovy
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateTagLibCommand.groovy
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreateWebPluginCommand.java => groovy/org/grails/forge/cli/command/CreateWebPluginCommand.groovy} (51%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreateWebappCommand.java => groovy/org/grails/forge/cli/command/CreateWebappCommand.groovy} (52%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/DevelopmentReloadingCandidates.java => groovy/org/grails/forge/cli/command/DevelopmentReloadingCandidates.groovy} (74%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/DevelopmentReloadingConverter.java => groovy/org/grails/forge/cli/command/DevelopmentReloadingConverter.groovy} (70%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/GormImplCandidates.java => groovy/org/grails/forge/cli/command/GormImplCandidates.groovy} (73%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/GormImplConverter.java => groovy/org/grails/forge/cli/command/GormImplConverter.groovy} (63%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/LanguageCandidates.java => groovy/org/grails/forge/cli/command/LanguageCandidates.groovy} (73%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/LanguageConverter.java => groovy/org/grails/forge/cli/command/LanguageConverter.groovy} (69%)
 create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/ListFeatures.groovy
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/ServletImplCandidates.java => groovy/org/grails/forge/cli/command/ServletImplCandidates.groovy} (72%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/ServletImplConverter.java => groovy/org/grails/forge/cli/command/ServletImplConverter.groovy} (67%)
 rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/util/GrailsVersionProvider.java => groovy/org/grails/forge/cli/util/GrailsVersionProvider.groovy} (72%)
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/Application.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/CodeGenConfig.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/GrailsPicocliFactory.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/AddPropertyCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/BaseCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CodeGenCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateControllerCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateDomainClassCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateInterceptorCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateJobCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateServiceCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateTagLibCommand.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/ListFeatures.java
 delete mode 100644 grails-forge/grails-forge-cli/src/main/resources/META-INF/native-image/org.grails.forge.cli/grails-forge-cli/native-image.properties
 delete mode 100644 grails-forge/grails-forge-cli/src/main/resources/META-INF/native-image/org.grails.forge.cli/grails-forge-cli/resource-config.json
 create mode 100644 grails-forge/grails-forge-cli/src/main/resources/simplelogger.properties
 create mode 100644 grails-forge/grails-forge-cli/src/test/groovy/org/grails/forge/cli/ApplicationSpec.groovy
 rename grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/GrailsForgeConfigurationSpec.groovy => grails-forge-cli/src/test/groovy/org/grails/forge/cli/ForgeCliSpec.groovy} (50%)
 rename grails-forge/{grails-forge-core/src/main/java/org/grails/forge/application/ProjectIdentifier.java => grails-forge-cli/src/testFixtures/groovy/org/grails/forge/cli/CliRunner.groovy} (60%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/asciidoctor/template/asciidocGradle.rocker.raw => grails-app/views/forge/feature/asciidoctor/template/asciidocGradle.gsp} (86%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/asciidoctor/template/indexAdoc.rocker.raw => grails-app/views/forge/feature/asciidoctor/template/indexAdoc.gsp} (94%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/build/gitignore.rocker.raw => grails-app/views/forge/feature/build/gitignore.gsp} (95%)
 create mode 100644 grails-forge/grails-forge-core/grails-app/views/forge/feature/build/gradle/templates/buildGradle.gsp
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/build/gradle/templates/buildSrcBuildGradle.rocker.raw => grails-app/views/forge/feature/build/gradle/templates/buildSrcBuildGradle.gsp} (56%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/build/gradle/templates/dependencies.rocker.raw => grails-app/views/forge/feature/build/gradle/templates/dependencies.gsp} (54%)
 rename grails-forge/{grails-forge-cli/src/main/java/org/grails/forge/cli/command/templates/interceptor.rocker.raw => grails-forge-core/grails-app/views/forge/feature/build/gradle/templates/gradleProperties.gsp} (67%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw => grails-app/views/forge/feature/build/gradle/templates/gradleWrapperProperties.gsp} (55%)
 copy grails-doc/src/en/guide/theWebLayer/gsp/GSPBasics/pageDirectives.adoc => grails-forge/grails-forge-core/grails-app/views/forge/feature/build/gradle/templates/settingsGradle.gsp (50%)
 create mode 100644 grails-forge/grails-forge-core/grails-app/views/forge/feature/cli.gsp
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/github/workflows/plain/templates/plainGithubWorkflow.rocker.raw => grails-app/views/forge/feature/github/workflows/plain/templates/plainGithubWorkflow.gsp} (77%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/github/workflows/templates/javaSetup.rocker.raw => grails-app/views/forge/feature/github/workflows/templates/javaSetup.gsp} (66%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/grails/templates/applicationController.rocker.raw => grails-app/views/forge/feature/grails/templates/applicationController.gsp} (85%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/grails/templates/plugin.rocker.raw => grails-app/views/forge/feature/grails/templates/plugin.gsp} (73%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/grails/templates/urlMappings.rocker.raw => grails-app/views/forge/feature/grails/templates/urlMappings.gsp} (73%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/lang/groovy/application.rocker.raw => grails-app/views/forge/feature/lang/groovy/templates/application.gsp} (67%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/lang/groovy/bootStrap.rocker.raw => grails-app/views/forge/feature/lang/groovy/templates/bootStrap.gsp} (78%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/logging/template/logback.rocker.raw => grails-app/views/forge/feature/logging/template/logback.gsp} (89%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/migration/templates/dbMigrationGradle.rocker.raw => grails-app/views/forge/feature/migration/templates/dbMigrationGradle.gsp} (85%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/other/template/maindocs.rocker.raw => grails-app/views/forge/feature/other/template/maindocs.gsp} (66%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/other/template/markdownLink.rocker.raw => grails-app/views/forge/feature/other/template/markdownLink.gsp} (84%)
 rename grails-forge/{grails-forge-cli/src/main/java/org/grails/forge/cli/command/templates/domainSpec.rocker.raw => grails-forge-core/grails-app/views/forge/feature/other/template/readme.gsp} (54%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/role.rocker.raw => grails-app/views/forge/feature/security/template/role.gsp} (78%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/securityApplicationGroovy.rocker.raw => grails-app/views/forge/feature/security/template/securityApplicationGroovy.gsp} (80%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/user.rocker.raw => grails-app/views/forge/feature/security/template/user.gsp} (77%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/userClassic.rocker.raw => grails-app/views/forge/feature/security/template/userClassic.gsp} (74%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/userClassicService.rocker.raw => grails-app/views/forge/feature/security/template/userClassicService.gsp} (79%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/userClassicSpec.rocker.raw => grails-app/views/forge/feature/security/template/userClassicSpec.gsp} (88%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/userController.rocker.raw => grails-app/views/forge/feature/security/template/userController.gsp} (79%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/userRole.rocker.raw => grails-app/views/forge/feature/security/template/userRole.gsp} (91%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/userService.rocker.raw => grails-app/views/forge/feature/security/template/userService.gsp} (83%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/security/template/userSpec.rocker.raw => grails-app/views/forge/feature/security/template/userSpec.gsp} (91%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/spring/template/springResources.rocker.raw => grails-app/views/forge/feature/spring/template/springResources.gsp} (92%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/test/template/containerGebSpec.rocker.raw => grails-app/views/forge/feature/test/template/containerGebSpec.gsp} (79%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/test/template/gebConfig.rocker.raw => grails-app/views/forge/feature/test/template/gebConfig.gsp} (92%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/test/template/gebSpec.rocker.raw => grails-app/views/forge/feature/test/template/gebSpec.gsp} (80%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/json/templates/_errors.rocker.raw => grails-app/views/forge/feature/view/json/templates/_errors.gsp} (96%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/json/templates/_object.rocker.raw => grails-app/views/forge/feature/view/json/templates/_object.gsp} (90%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/json/templates/error.rocker.raw => grails-app/views/forge/feature/view/json/templates/error.gsp} (92%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/json/templates/index.rocker.raw => grails-app/views/forge/feature/view/json/templates/index.gsp} (96%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/json/templates/notFound.rocker.raw => grails-app/views/forge/feature/view/json/templates/notFound.gsp} (92%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/markup/templates/_errors.rocker.raw => grails-app/views/forge/feature/view/markup/templates/_errors.gsp} (96%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/markup/templates/_object.rocker.raw => grails-app/views/forge/feature/view/markup/templates/_object.gsp} (90%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/markup/templates/error.rocker.raw => grails-app/views/forge/feature/view/markup/templates/error.gsp} (92%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/markup/templates/index.rocker.raw => grails-app/views/forge/feature/view/markup/templates/index.gsp} (97%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/view/markup/templates/notFound.rocker.raw => grails-app/views/forge/feature/view/markup/templates/notFound.gsp} (92%)
 rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/template/api/grailsForgeApi.rocker.raw => grails-app/views/forge/template/api/grailsForgeApi.gsp} (72%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/ForgeCoreConfiguration.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/ForgeGrailsPlugin.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/application/ApplicationType.java => groovy/org/grails/forge/application/ApplicationType.groovy} (54%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/application/ContextFactory.java => groovy/org/grails/forge/application/ContextFactory.groovy} (51%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/application/OperatingSystem.java => groovy/org/grails/forge/application/OperatingSystem.groovy} (74%)
 copy grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/MyEventListener.groovy => grails-forge-core/src/main/groovy/org/grails/forge/application/PluginAvailableFeatures.groovy} (64%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/application/Project.groovy
 copy grails-forge/{grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/TotalDTO.java => grails-forge-core/src/main/groovy/org/grails/forge/application/ProjectIdentifier.groovy} (67%)
 copy grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/MyEventListener.groovy => grails-forge-core/src/main/groovy/org/grails/forge/application/RestApiAvailableFeatures.groovy} (64%)
 rename grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/SpanishResourceBundleMessageSource.groovy => grails-forge-core/src/main/groovy/org/grails/forge/application/WebAvailableFeatures.groovy} (65%)
 rename grails-forge/{grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/TotalDTO.java => grails-forge-core/src/main/groovy/org/grails/forge/application/WebPluginAvailableFeatures.groovy} (64%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/application/generator/DefaultProjectGenerator.java => groovy/org/grails/forge/application/generator/DefaultProjectGenerator.groovy} (50%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/application/generator/GeneratorContext.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/application/generator/ProjectGenerator.java => groovy/org/grails/forge/application/generator/ProjectGenerator.groovy} (67%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/BuildPlugin.java => groovy/org/grails/forge/build/BuildPlugin.groovy} (60%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/BuildProperties.java => groovy/org/grails/forge/build/BuildProperties.groovy} (62%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/Comment.java => groovy/org/grails/forge/build/Comment.groovy} (82%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/Property.java => groovy/org/grails/forge/build/Property.groovy} (81%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/dependencies/Coordinate.java => groovy/org/grails/forge/build/dependencies/Coordinate.groovy} (59%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/defaults/HasDefaultDevelopmentReloading.java => groovy/org/grails/forge/build/dependencies/CoordinateResolver.groovy} (82%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/dependencies/DefaultCoordinateResolver.java => groovy/org/grails/forge/build/dependencies/DefaultCoordinateResolver.groovy} (58%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/build/dependencies/Dependency.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/dependencies/DependencyContext.java => groovy/org/grails/forge/build/dependencies/DependencyContext.groovy} (51%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/build/dependencies/DependencyCoordinate.groovy
 copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/GormOneOfFeature.java => groovy/org/grails/forge/build/dependencies/LookupFailedException.groovy} (75%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/dependencies/Phase.java => groovy/org/grails/forge/build/dependencies/Phase.groovy} (90%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/build/dependencies/PomDependencyVersionResolver.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/dependencies/Scope.java => groovy/org/grails/forge/build/dependencies/Scope.groovy} (58%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/dependencies/Source.java => groovy/org/grails/forge/build/dependencies/Source.groovy} (88%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/build/gradle/DefaultGradleRepository.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/build/gradle/GradleBuild.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/gradle/GradleBuildCreator.java => groovy/org/grails/forge/build/gradle/GradleBuildCreator.groovy} (62%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/gradle/GradleConfiguration.java => groovy/org/grails/forge/build/gradle/GradleConfiguration.groovy} (61%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/build/gradle/GradleDependency.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/gradle/GradleDsl.java => groovy/org/grails/forge/build/gradle/GradleDsl.groovy} (88%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/build/gradle/GradlePlugin.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/gradle/GradleRepository.java => groovy/org/grails/forge/build/gradle/GradleRepository.groovy} (68%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/gradle/MavenCentralRepository.java => groovy/org/grails/forge/build/gradle/MavenCentralRepository.groovy} (67%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/gradle/MavenLocalRepository.java => groovy/org/grails/forge/build/gradle/MavenLocalRepository.groovy} (68%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/build/gradle/VersionRegexRepoFilter.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/gradle/VersionType.java => groovy/org/grails/forge/build/gradle/VersionType.groovy} (88%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/Writable.java => groovy/org/grails/forge/defaults/HasDefaultBuild.groovy} (81%)
 copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/JpaFeature.java => groovy/org/grails/forge/defaults/HasDefaultDevelopmentReloading.groovy} (78%)
 copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/defaults/HasDefaultBuild.java => groovy/org/grails/forge/defaults/IncludesDefaults.groovy} (85%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/defaults/LanguageDefaults.java => groovy/org/grails/forge/defaults/LanguageDefaults.groovy} (58%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/diff/FeatureDiffer.java => groovy/org/grails/forge/diff/FeatureDiffer.groovy} (66%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/ApplicationFeature.java => groovy/org/grails/forge/feature/ApplicationFeature.groovy} (74%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/AvailableFeatures.java => groovy/org/grails/forge/feature/AvailableFeatures.groovy} (66%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/BaseAvailableFeatures.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/Category.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/DefaultFeature.java => groovy/org/grails/forge/feature/DefaultFeature.groovy} (86%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/Feature.java => groovy/org/grails/forge/feature/Feature.groovy} (84%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/FeatureContext.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/FeaturePhase.java => groovy/org/grails/forge/feature/FeaturePhase.groovy} (81%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/FeaturePredicate.java => groovy/org/grails/forge/feature/FeaturePredicate.groovy} (80%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/FeatureRegistry.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/Features.groovy
 copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/defaults/HasDefaultBuild.java => groovy/org/grails/forge/feature/OneOfFeature.groovy} (83%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/ai/GrailsSpringAi.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/ai/SpringAiAnthropic.java => groovy/org/grails/forge/feature/ai/SpringAiAnthropic.groovy} (61%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/ai/SpringAiOllama.java => groovy/org/grails/forge/feature/ai/SpringAiOllama.groovy} (52%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/ai/SpringAiOpenAi.java => groovy/org/grails/forge/feature/ai/SpringAiOpenAi.groovy} (59%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/ai/SpringAiProviderFeature.java => groovy/org/grails/forge/feature/ai/SpringAiProviderFeature.groovy} (60%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/api/OpenApi.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/asciidoctor/Asciidoctor.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/assetPipeline/AssetPipeline.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/build/BuildFeature.java => groovy/org/grails/forge/feature/build/BuildFeature.groovy} (73%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/build/gradle/Dockerfile.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/build/gradle/Gradle.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/build/gradle/GradleBuildSrc.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/build/gradle/GradleBuildSrcFeature.java => groovy/org/grails/forge/feature/build/gradle/GradleBuildSrcFeature.groovy} (69%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/build/gradle/GradleSettingsFile.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/build/gradle/GradleSettingsFileFeature.java => groovy/org/grails/forge/feature/build/gradle/GradleSettingsFileFeature.groovy} (69%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/logging/LoggingFeature.java => groovy/org/grails/forge/feature/cache/CacheFeature.groovy} (74%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/cache/EHCache.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/cache/GrailsCache.groovy
 copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/github/workflows/Secret.java => groovy/org/grails/forge/feature/config/ApplicationConfiguration.groovy} (55%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/config/BootstrapConfiguration.java => groovy/org/grails/forge/feature/config/BootstrapConfiguration.groovy} (56%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/config/Configuration.java => groovy/org/grails/forge/feature/config/Configuration.groovy} (50%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/config/ConfigurationFeature.java => groovy/org/grails/forge/feature/config/ConfigurationFeature.groovy} (62%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/config/Properties.java => groovy/org/grails/forge/feature/config/Properties.groovy} (52%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/config/Yaml.java => groovy/org/grails/forge/feature/config/Yaml.groovy} (50%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/AsyncGorm.java => groovy/org/grails/forge/feature/database/AsyncGorm.groovy} (52%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/DatabaseDriverConfigurationFeature.java => groovy/org/grails/forge/feature/database/DatabaseDriverConfigurationFeature.groovy} (57%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/DatabaseDriverFeature.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/GormFeature.java => groovy/org/grails/forge/feature/database/GormFeature.groovy} (67%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/GormOneOfFeature.java => groovy/org/grails/forge/feature/database/GormOneOfFeature.groovy} (74%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/GrailsDataHibernate5.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/GrailsDataHibernate7.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/GrailsDataHibernateValidator.java => groovy/org/grails/forge/feature/database/GrailsDataHibernateValidator.groovy} (51%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/GrailsDataMongoDB.java => groovy/org/grails/forge/feature/database/GrailsDataMongoDB.groovy} (50%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/GraphqlGorm.java => groovy/org/grails/forge/feature/database/GraphqlGorm.groovy} (52%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/H2.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/JpaFeature.java => groovy/org/grails/forge/feature/database/JpaFeature.groovy} (83%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/MongoDBTestingSupport.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/MongoDBTestingSupportValidator.java => groovy/org/grails/forge/feature/database/MongoDBTestingSupportValidator.groovy} (61%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/database/MongoFeature.java => groovy/org/grails/forge/feature/database/MongoFeature.groovy} (67%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/MongoSync.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/MySQL.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/Neo4jGorm.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/PostgreSQL.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/SQLServer.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/database/TestContainers.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/github/workflows/GitHubWorkflowFeature.java => groovy/org/grails/forge/feature/github/workflows/GitHubWorkflowFeature.groovy} (58%)
 copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/github/workflows/Secret.java => groovy/org/grails/forge/feature/github/workflows/Secret.groovy} (60%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/github/workflows/plain/PlainGithubWorkflowFeature.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/grails/GrailsBase.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/grails/GrailsCompileStatic.java => groovy/org/grails/forge/feature/grails/GrailsCompileStatic.groovy} (65%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/grails/GrailsDefaultPlugins.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/grails/GrailsGradlePlugin.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/grails/GrailsUrlMappings.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/grails/GrailsWebConsole.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/grailsProfiles/GrailsProfiles.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/grailsWrapper/GrailsWrapper.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/lang/LanguageFeature.java => groovy/org/grails/forge/feature/lang/LanguageFeature.groovy} (72%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/lang/groovy/GrailsApplication.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/defaults/HasDefaultBuild.java => groovy/org/grails/forge/feature/lang/groovy/GrailsApplicationFeature.groovy} (79%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/logging/Logback.java => groovy/org/grails/forge/feature/logging/Logback.groovy} (57%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/logging/LogbackConfig.java => groovy/org/grails/forge/feature/logging/LogbackConfig.groovy} (62%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/migration/MigrationFeature.java => groovy/org/grails/forge/feature/logging/LoggingFeature.groovy} (73%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/micronaut/GrailsMicronaut.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/micronaut/GrailsMicronautValidator.java => groovy/org/grails/forge/feature/micronaut/GrailsMicronautValidator.groovy} (59%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/micronaut/MicronautHttpClient.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/migration/DatabaseMigrationPlugin.groovy
 copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/cache/CacheFeature.java => groovy/org/grails/forge/feature/migration/MigrationFeature.groovy} (73%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/other/AppName.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/other/GrailsQuartz.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/other/GrailsStartupProgress.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/other/HibernateValidator.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/other/Readme.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/other/ShadePlugin.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/reloading/Jrebel.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/reloading/ReloadingFeature.java => groovy/org/grails/forge/feature/reloading/ReloadingFeature.groovy} (66%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/reloading/SpringBootDevTools.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/security/GrailsSpringSecurity.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/security/GrailsSpringSecurityUi.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/security/PrimarySecurityFeature.java => groovy/org/grails/forge/feature/security/PrimarySecurityFeature.groovy} (84%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/security/SecurityFeature.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/security/SpringBootStarterSecurity.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/sitemesh3/Sitemesh3.java => groovy/org/grails/forge/feature/sitemesh3/Sitemesh3.groovy} (54%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/spring/SpringBootAutoconfigure.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/spring/SpringBootEmbeddedServlet.java => groovy/org/grails/forge/feature/spring/SpringBootEmbeddedServlet.groovy} (70%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/spring/SpringBootJettyFeature.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/spring/SpringBootStarterFeature.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/spring/SpringBootTomcatFeature.java => groovy/org/grails/forge/feature/spring/SpringBootTomcatFeature.groovy} (50%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/spring/SpringBootUndertowFeature.java => groovy/org/grails/forge/feature/spring/SpringBootUndertowFeature.groovy} (52%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/spring/SpringBootVirtualThreads.java => groovy/org/grails/forge/feature/spring/SpringBootVirtualThreads.groovy} (53%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/spring/SpringResources.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/spring/SpringThreadingFeature.java => groovy/org/grails/forge/feature/spring/SpringThreadingFeature.groovy} (73%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/test/GebFeature.java => groovy/org/grails/forge/feature/test/GebFeature.groovy} (71%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/test/GebWithLocalBrowsers.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/test/GebWithTestcontainers.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/test/GormTestingSupport.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/test/GrailsWebTestingSupport.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/test/Mockito.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/test/MockitoValidator.java => groovy/org/grails/forge/feature/test/MockitoValidator.groovy} (59%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/test/Spock.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/test/ViewsJsonTestingSupport.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/validation/CompositeFeatureValidator.java => groovy/org/grails/forge/feature/validation/CompositeFeatureValidator.groovy} (57%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/validation/FeatureValidator.java => groovy/org/grails/forge/feature/validation/FeatureValidator.groovy} (73%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/validation/OneOfFeatureValidator.java => groovy/org/grails/forge/feature/validation/OneOfFeatureValidator.groovy} (61%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/view/GrailsGsp.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/view/GrailsLayout.java => groovy/org/grails/forge/feature/view/GrailsLayout.groovy} (61%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/view/GrailsViews.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/view/GspLayout.java => groovy/org/grails/forge/feature/view/GspLayout.groovy} (72%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/view/Scaffolding.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/view/json/ViewJson.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/view/markup/ViewMarkup.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/web/GrailsWeb.java => groovy/org/grails/forge/feature/web/GrailsWeb.groovy} (57%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/io/ConsoleOutput.java => groovy/org/grails/forge/io/ConsoleOutput.groovy} (67%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/io/FileSystemOutputHandler.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/io/MapOutputHandler.java => groovy/org/grails/forge/io/MapOutputHandler.groovy} (56%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/io/OutputHandler.java => groovy/org/grails/forge/io/OutputHandler.groovy} (78%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/io/OutputUtils.java => groovy/org/grails/forge/io/OutputUtils.groovy} (53%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/io/ZipOutputHandler.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/options/BuildTool.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/DefaultTestRockerModelProvider.java => groovy/org/grails/forge/options/DefaultTestViewProvider.groovy} (71%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/DevelopmentReloading.java => groovy/org/grails/forge/options/DevelopmentReloading.groovy} (57%)
 copy grails-forge/grails-forge-core/src/{test/groovy/org/grails/forge/options/GormImplSpec.groovy => main/groovy/org/grails/forge/options/FeatureFilter.groovy} (52%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/GormImpl.java => groovy/org/grails/forge/options/GormImpl.groovy} (63%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/JdkVersion.java => groovy/org/grails/forge/options/JdkVersion.groovy} (73%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/options/Language.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/options/Options.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/ServletImpl.java => groovy/org/grails/forge/options/ServletImpl.groovy} (61%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/TestFramework.java => groovy/org/grails/forge/options/TestFramework.groovy} (54%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/TestRockerModelProvider.java => groovy/org/grails/forge/options/TestViewProvider.groovy} (66%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/BinaryTemplate.java => groovy/org/grails/forge/template/BinaryTemplate.groovy} (71%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/Config4kTemplate.java => groovy/org/grails/forge/template/Config4kTemplate.groovy} (59%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/DefaultTemplateRenderer.java => groovy/org/grails/forge/template/DefaultTemplateRenderer.groovy} (51%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/template/ForgePages.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/RockerTemplate.java => groovy/org/grails/forge/template/GspTemplate.groovy} (53%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/template/GspView.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/PropertiesTemplate.java => groovy/org/grails/forge/template/PropertiesTemplate.groovy} (50%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/RenderResult.java => groovy/org/grails/forge/template/RenderResult.groovy} (60%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/StringTemplate.java => groovy/org/grails/forge/template/StringTemplate.groovy} (65%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/Template.java => groovy/org/grails/forge/template/Template.groovy} (82%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/OneOfFeature.java => groovy/org/grails/forge/template/TemplateModel.groovy} (87%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/TemplateRenderer.java => groovy/org/grails/forge/template/TemplateRenderer.groovy} (78%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/URLTemplate.java => groovy/org/grails/forge/template/URLTemplate.groovy} (53%)
 copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/dependencies/CoordinateResolver.java => groovy/org/grails/forge/template/Writable.groovy} (83%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/template/YamlTemplate.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/util/IOFeatureUtil.java => groovy/org/grails/forge/util/IOFeatureUtil.groovy} (72%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/util/NameUtils.java => groovy/org/grails/forge/util/NameUtils.groovy} (64%)
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/lang/groovy/GrailsApplicationFeature.java => groovy/org/grails/forge/util/ThrowingSupplier.groovy} (82%)
 create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/util/VersionInfo.groovy
 rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/util/ZipUtil.java => groovy/org/grails/forge/util/ZipUtil.groovy} (59%)
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/analytics/Generated.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/analytics/SelectedFeature.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/application/PluginAvailableFeatures.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/application/Project.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/application/RestApiAvailableFeatures.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/application/WebAvailableFeatures.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/application/WebPluginAvailableFeatures.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/application/generator/GeneratorContext.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/Dependency.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/DependencyCoordinate.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/LookupFailedException.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/PomDependencyVersionResolver.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/DefaultGradleRepository.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/GradleBuild.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/GradleDependency.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/GradlePlugin.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/VersionRegexRepoFilter.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/defaults/IncludesDefaults.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/BaseAvailableFeatures.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/Category.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/FeatureContext.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/Features.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/ai/GrailsSpringAi.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/api/OpenApi.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/asciidoctor/Asciidoctor.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/assetPipeline/AssetPipeline.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/Dockerfile.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/Gradle.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/GradleBuildSrc.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/GradleSettingsFile.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/buildGradle.rocker.raw
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/gradleProperties.rocker.raw
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/build/gradle/templates/settingsGradle.rocker.raw
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/cache/EHCache.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/cache/GrailsCache.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/cli.rocker.raw
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/config/ApplicationConfiguration.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/DatabaseDriverFeature.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/GrailsDataHibernate5.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/GrailsDataHibernate7.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/H2.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/MongoDBTestingSupport.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/MongoSync.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/MySQL.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/Neo4jGorm.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/PostgreSQL.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/SQLServer.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/TestContainers.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/github/workflows/plain/PlainGithubWorkflowFeature.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsBase.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsDefaultPlugins.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsGradlePlugin.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsUrlMappings.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/grails/GrailsWebConsole.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/grailsProfiles/GrailsProfiles.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/grailsWrapper/GrailsWrapper.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/lang/groovy/GrailsApplication.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/micronaut/GrailsMicronaut.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/micronaut/MicronautHttpClient.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/migration/DatabaseMigrationPlugin.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/other/AppName.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/other/GrailsQuartz.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/other/GrailsStartupProgress.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/other/HibernateValidator.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/other/Readme.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/other/ShadePlugin.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/other/template/readme.rocker.raw
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/reloading/Jrebel.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/reloading/SpringBootDevTools.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/GrailsSpringSecurity.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/GrailsSpringSecurityUi.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/SecurityFeature.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/SpringBootStarterSecurity.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/spring/SpringBootAutoconfigure.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/spring/SpringBootJettyFeature.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/spring/SpringBootStarterFeature.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/spring/SpringResources.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/test/GebWithLocalBrowsers.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/test/GebWithTestcontainers.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/test/GormTestingSupport.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/test/GrailsWebTestingSupport.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/test/Mockito.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/test/Spock.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/test/ViewsJsonTestingSupport.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/view/GrailsGsp.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/view/GrailsViews.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/view/Scaffolding.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/view/json/ViewJson.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/view/markup/ViewMarkup.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/io/FileSystemOutputHandler.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/io/ZipOutputHandler.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/options/BuildTool.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/options/FeatureFilter.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/options/GormImplTypeConverter.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/options/Language.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/options/Options.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/template/RockerWritable.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/template/TemplateModel.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/template/YamlTemplate.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/util/VersionInfo.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/resources/META-INF/native-image/org.grails.forge/grails-forge-core/resource-config.json
 create mode 100644 grails-forge/grails-forge-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
 copy grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/{ApplicationContextSpec.groovy => ForgeContexts.groovy} (54%)
 rename grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/{BeanContextSpec.groovy => ForgeCoreConfigurationSpec.groovy} (63%)
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/ForgeGrailsPluginSpec.groovy
 rename grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/options/{TestRockerModelProviderSpec.groovy => TestViewProviderSpec.groovy} (83%)
 rename grails-forge/grails-forge-core/src/{main/java/org/grails/forge/feature/github/workflows/Secret.java => test/groovy/org/grails/forge/plugintest/ForgePluginTestApplication.groovy} (54%)
 delete mode 100644 grails-forge/grails-forge-web-netty/build.gradle
 delete mode 100644 grails-forge/grails-forge-web-netty/src/main/java/org/grails/forge/netty/Application.java
 delete mode 100644 grails-forge/grails-forge-web-netty/src/main/java/org/grails/forge/netty/analytics/AnalyticsClient.java
 delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/META-INF/native-image/org.grails.forge/grails-forge-web-netty/native-image.properties
 delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/META-INF/native-image/org.grails.forge/grails-forge-web-netty/resource-config.json
 delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/application-dev.yml
 delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/application.yml
 delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/logback.xml
 copy grails-forge/{grails-forge-web-netty => grails-forge-web}/aws/.platform/nginx/conf.d/proxy.conf (100%)
 rename grails-forge/{grails-forge-web-netty => grails-forge-web}/aws/Procfile (100%)
 rename grails-forge/{grails-forge-web-netty => grails-forge-web}/aws/start.sh (93%)
 create mode 100644 grails-forge/grails-forge-web/build.gradle
 create mode 100644 grails-forge/grails-forge-web/grails-app/conf/application.yml
 rename grails-forge/{config/checkstyle/checkstyle-suppressions.xml => grails-forge-web/grails-app/conf/logback.xml} (60%)
 create mode 100644 grails-forge/grails-forge-web/grails-app/conf/openapi-base.yml
 create mode 100644 grails-forge/grails-forge-web/grails-app/controllers/org/grails/forge/web/DiffController.groovy
 create mode 100644 grails-forge/grails-forge-web/grails-app/controllers/org/grails/forge/web/ForgeApplicationController.groovy
 create mode 100644 grails-forge/grails-forge-web/grails-app/controllers/org/grails/forge/web/PreviewController.groovy
 create mode 100644 grails-forge/grails-forge-web/grails-app/controllers/org/grails/forge/web/SelectOptionsController.groovy
 create mode 100644 grails-forge/grails-forge-web/grails-app/controllers/org/grails/forge/web/UrlMappings.groovy
 create mode 100644 grails-forge/grails-forge-web/grails-app/controllers/org/grails/forge/web/ZipCreateController.groovy
 create mode 100644 grails-forge/grails-forge-web/grails-app/i18n/messages.properties
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/event/ApplicationGeneratingEvent.java => grails-forge-web/grails-app/init/org/grails/forge/web/Application.groovy} (52%)
 create mode 100644 grails-forge/grails-forge-web/src/integration-test/groovy/org/grails/forge/web/ForgeApiIntegrationSpec.groovy
 rename grails-forge/{grails-forge-web-netty/aws/.platform/nginx/conf.d/proxy.conf => grails-forge-web/src/integration-test/resources/api-test-messages_fr.properties} (79%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/ApplicationTypeDTO.groovy
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/ApplicationTypeList.java => grails-forge-web/src/main/groovy/org/grails/forge/api/ApplicationTypeList.groovy} (64%)
 copy grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/FeatureOperationsSpec.groovy => grails-forge-web/src/main/groovy/org/grails/forge/api/ApplicationTypeOperations.groovy} (61%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/DevelopmentReloadingDTO.groovy
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/FeatureDTO.groovy
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/FeatureList.java => grails-forge-web/src/main/groovy/org/grails/forge/api/FeatureList.groovy} (65%)
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/FeatureOperations.java => grails-forge-web/src/main/groovy/org/grails/forge/api/FeatureOperations.groovy} (83%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/FeatureService.groovy
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/ForgeApplicationService.groovy
 rename grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/MyEventListener.groovy => grails-forge-web/src/main/groovy/org/grails/forge/api/ForgeMessages.groovy} (69%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/GormImplDTO.groovy
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/GrailsForgeConfiguration.java => grails-forge-web/src/main/groovy/org/grails/forge/api/GrailsForgeConfiguration.groovy} (52%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/JdkVersionDTO.groovy
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/LanguageDTO.groovy
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/analytics/AnalyticsOperations.java => grails-forge-web/src/main/groovy/org/grails/forge/api/LinkDTO.groovy} (61%)
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/Linkable.java => grails-forge-web/src/main/groovy/org/grails/forge/api/Linkable.groovy} (64%)
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/Relationship.java => grails-forge-web/src/main/groovy/org/grails/forge/api/Relationship.groovy} (62%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/RequestInfo.groovy
 rename grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/FeatureOperationsSpec.groovy => grails-forge-web/src/main/groovy/org/grails/forge/api/SelectOptionDTO.groovy} (61%)
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/SelectOptionsDTO.java => grails-forge-web/src/main/groovy/org/grails/forge/api/SelectOptionsDTO.groovy} (51%)
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/Selectable.java => grails-forge-web/src/main/groovy/org/grails/forge/api/Selectable.groovy} (85%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/ServletImplDTO.groovy
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/UserAgentParser.java => grails-forge-web/src/main/groovy/org/grails/forge/api/UserAgentParser.groovy} (50%)
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/VersionDTO.java => grails-forge-web/src/main/groovy/org/grails/forge/api/VersionDTO.groovy} (61%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/create/CreateProjectService.groovy
 copy grails-forge/{grails-forge-core/src/main/java/org/grails/forge/feature/cache/CacheFeature.java => grails-forge-web/src/main/groovy/org/grails/forge/api/options/ApplicationTypeSelectOptions.groovy} (60%)
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/options/LanguageSelectOptions.java => grails-forge-web/src/main/groovy/org/grails/forge/api/options/DevelopmentReloadingSelectOptions.groovy} (59%)
 copy grails-forge/{grails-forge-core/src/main/java/org/grails/forge/feature/cache/CacheFeature.java => grails-forge-web/src/main/groovy/org/grails/forge/api/options/GormImplSelectOptions.groovy} (63%)
 copy grails-forge/{grails-forge-core/src/main/java/org/grails/forge/feature/cache/CacheFeature.java => grails-forge-web/src/main/groovy/org/grails/forge/api/options/JdkVersionSelectOptions.groovy} (62%)
 copy grails-forge/{grails-forge-core/src/main/java/org/grails/forge/feature/cache/CacheFeature.java => grails-forge-web/src/main/groovy/org/grails/forge/api/options/LanguageSelectOptions.groovy} (63%)
 rename grails-forge/{grails-forge-core/src/main/java/org/grails/forge/build/dependencies/CoordinateResolver.java => grails-forge-web/src/main/groovy/org/grails/forge/api/options/SelectOptionsOperations.groovy} (75%)
 rename grails-forge/{grails-forge-core/src/main/java/org/grails/forge/feature/cache/CacheFeature.java => grails-forge-web/src/main/groovy/org/grails/forge/api/options/ServletImplSelectOptions.groovy} (62%)
 rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/preview/PreviewDTO.java => grails-forge-web/src/main/groovy/org/grails/forge/api/preview/PreviewDTO.groovy} (59%)
 create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/web/ForgeRequestSupport.groovy
 rename grails-forge/{buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerGradleException.java => grails-forge-web/src/main/groovy/org/grails/forge/web/GroovyObjectJsonMixin.groovy} (66%)
 create mode 100644 grails-forge/grails-forge-web/src/test/groovy/org/grails/forge/web/ForgeRequestSupportSpec.groovy
 create mode 100644 grails-forge/grails-forge-web/src/test/groovy/org/grails/forge/web/GrailsForgeConfigurationSpec.groovy
 delete mode 100644 grails-forge/grailsforgearchitecture.jpeg
 delete mode 100644 grails-forge/sam-local.yml
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/GrailsPluginGradlePluginNative2AsciiSpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-native2ascii-off/build.gradle
 copy grails-gradle/plugins/src/test/resources/test-projects/{auto-apply-bom-disabled => plugin-native2ascii-off}/gradle.properties (100%)
 copy grails-gradle/plugins/src/test/resources/test-projects/{boot-run-pid-web => plugin-native2ascii-off}/grails-app/conf/application.yml (100%)
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-native2ascii-off/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-native2ascii-off/src/main/resources/templates/messages_ru.properties
 create mode 100644 grails-gsp/core/src/main/groovy/org/grails/gsp/compiler/LogicLineTrimmer.java
 create mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/GspTrimLogicLinesSpec.groovy


(grails-core) 03/03: Give the Forge CLI test fixtures Groovy 6's call-site module

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 386e881473d26c1ccd58c54120ee98cd065d46eb
Author: James Daugherty <jd...@jdresources.net>
AuthorDate: Wed Oct 14 14:50:50 2026 +0100

    Give the Forge CLI test fixtures Groovy 6's call-site module
    
    The Grails Gradle plugin compiles every Groovy source set of the Forge
    CLI without invokedynamic, and Groovy 6 generates classic call sites
    only with the optional groovy-callsite module on the classpath
    (GROOVY-11158). The application's source sets get it through
    grails-common, but the java-test-fixtures source set sees none of the
    application's implementation dependencies, so compileTestFixturesGroovy
    failed on 9.0.x. The fixtures now declare the module themselves.
---
 grails-forge/grails-forge-cli/build.gradle | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/grails-forge/grails-forge-cli/build.gradle b/grails-forge/grails-forge-cli/build.gradle
index 7e324417c1..90401b1cd2 100644
--- a/grails-forge/grails-forge-cli/build.gradle
+++ b/grails-forge/grails-forge-cli/build.gradle
@@ -110,6 +110,10 @@ dependencies {
     // CliRunner, the fixture the specs run one command bean with
     testFixturesImplementation platform("org.apache.grails:grails-bom:$projectVersion")
     testFixturesImplementation 'org.apache.groovy:groovy'
+    // GROOVY-11158: the Grails plugin compiles every Groovy source set without invokedynamic, which
+    // Groovy 6 supports only with groovy-callsite on the classpath. The application's own source sets
+    // get it through grails-common; the fixtures see none of the application's implementation dependencies.
+    testFixturesImplementation 'org.apache.groovy:groovy-callsite'
     testFixturesImplementation 'org.springframework:spring-context'
     testFixturesImplementation "info.picocli:picocli:$picocliVersion"
 


(grails-core) 01/03: Merge branch '8.1.x' into 9.0.x

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 696429eab7189f53424c1c3eeaa2d9ffa658d221
Merge: 1edb825aa8 f64c002d33
Author: James Daugherty <jd...@jdresources.net>
AuthorDate: Wed Oct 14 14:34:36 2026 +0100

    Merge branch '8.1.x' into 9.0.x

 .agents/skills/gradle-developer/SKILL.md           |   4 +-
 .github/workflows/forge-deploy-aws.yml             |   4 +-
 .gitignore                                         |   4 +
 AGENTS.md                                          |   2 +-
 RELEASE.md                                         |   4 +-
 THREAT_MODEL.md                                    |   6 +-
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 build-logic/plugins/build.gradle                   |  13 +
 .../grails/buildsrc/GrailsCodeStylePlugin.groovy   |   2 +-
 .../buildsrc/WriteGrailsVersionInfoTask.groovy     |  12 +-
 .../GrailsGroovyExtensionTransformer.groovy        |  26 +-
 .../shadowjar/GrailsShadowLicenseTransform.groovy  |   0
 .../shadowjar/GrailsShadowNoticeTransform.groovy   |   0
 .../internal/tasks/GenerateManpageAsciidoc.java    |   0
 .../internal/tasks/PicocliBuildCompletionTask.java |   0
 .../buildsrc/WriteGrailsVersionInfoTaskSpec.groovy | 122 ++++
 .../GrailsGroovyExtensionTransformerSpec.groovy    | 125 +++++
 gradle.properties                                  |   4 +-
 gradle/rat-root-config.gradle                      |   2 +-
 gradle/wrapper/gradle-wrapper.properties           |   2 +-
 .../theWebLayer/gsp/GSPBasics/pageDirectives.adoc  |  40 ++
 .../src/en/guide/upgrading/upgrading81x.adoc       |  22 +
 grails-forge/.gitattributes                        |   5 -
 grails-forge/.gitignore                            |  20 -
 grails-forge/README.md                             |  61 +-
 grails-forge/build.gradle                          |   5 -
 grails-forge/buildSrc/build.gradle                 |  62 ---
 grails-forge/buildSrc/settings.gradle              |  35 --
 .../forge/rocker/plugin/JavaGeneratorRunnable.java | 166 ------
 .../forge/rocker/plugin/RockerConfiguration.java   |  99 ----
 .../grails/forge/rocker/plugin/RockerPlugin.java   |  92 ---
 .../rocker/plugin/RockerSourceSetProperty.java     |  80 ---
 .../org/grails/forge/rocker/plugin/RockerTask.java | 185 -------
 .../forge/rocker/plugin/TemplateDirectorySet.java  | 124 -----
 .../forge/rocker/plugin/WhitespaceProcessor.java   |  52 --
 grails-forge/config/checkstyle/checkstyle.xml      | 227 --------
 grails-forge/config/spotless.license.java          |  18 -
 grails-forge/docs/aws-elastic-beanstalk.md         |  18 +-
 grails-forge/docs/choose-postgresql.png            | Bin 108993 -> 0 bytes
 grails-forge/docs/cloud_sql_create_intance.png     | Bin 100207 -> 0 bytes
 grails-forge/docs/create-database.png              | Bin 150843 -> 0 bytes
 grails-forge/docs/create-two-databases.png         | Bin 175471 -> 0 bytes
 grails-forge/docs/dbinstance-options.png           | Bin 100921 -> 0 bytes
 grails-forge/docs/enable-cloud-sql-admin-api.png   | Bin 151032 -> 0 bytes
 grails-forge/docs/enable-compute-engine-api.png    | Bin 79831 -> 0 bytes
 .../etc/bin/generate-build-artifact-hashes.groovy  |  79 ---
 grails-forge/etc/bin/test-reproducible-builds.sh   |  64 ---
 grails-forge/gradle.properties                     |  33 +-
 grails-forge/gradle/code-style-config.gradle       |  96 ----
 grails-forge/gradle/doc-config.gradle              |  15 +-
 grails-forge/gradle/groovy-version-pin.gradle      |  29 -
 .../gradle/micronaut-openapi-config.gradle         |  53 --
 grails-forge/gradle/test-config.gradle             |  26 +-
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 grails-forge/grails-cli-shadow/build.gradle        |  11 +
 grails-forge/grails-cli/build.gradle               |  16 +-
 .../grails/cli/DelegatingShellApplication.groovy   |   2 +-
 .../grails-forge-analytics-postgres/build.gradle   | 120 ----
 .../analytics/postgres/AnalyticsController.java    |  98 ----
 .../forge/analytics/postgres/Application.java      | 140 -----
 .../analytics/postgres/ApplicationRepository.java  |  53 --
 .../grails/forge/analytics/postgres/Feature.java   |  79 ---
 .../analytics/postgres/FeatureRepository.java      | 121 ----
 .../org/grails/forge/analytics/postgres/Main.java  |  49 --
 .../postgres/gcp/GoogleCloudSqlSetup.java          |  58 --
 .../native-image.properties                        |  24 -
 .../src/main/resources/application-dev.yml         |   9 -
 .../src/main/resources/application.yml             |  14 -
 .../resources/databasemigrations/V1__schema.sql    |  21 -
 .../src/main/resources/logback.xml                 |  15 -
 .../postgres/StoreGeneratedProjectStatsSpec.groovy | 125 -----
 grails-forge/grails-forge-api/build.gradle         |  83 ---
 .../grails/forge/api/ApplicationController.java    | 240 --------
 .../org/grails/forge/api/ApplicationTypeDTO.java   | 129 -----
 .../forge/api/ApplicationTypeOperations.java       |  75 ---
 .../org/grails/forge/api/DevelopmentReloading.java |  50 --
 .../grails/forge/api/DevelopmentReloadingDTO.java  | 103 ----
 .../main/java/org/grails/forge/api/FeatureDTO.java | 153 -----
 .../java/org/grails/forge/api/FeatureService.java  | 104 ----
 .../java/org/grails/forge/api/GormImplDTO.java     | 111 ----
 .../java/org/grails/forge/api/JdkVersionDTO.java   | 110 ----
 .../java/org/grails/forge/api/LanguageDTO.java     | 124 -----
 .../main/java/org/grails/forge/api/LinkDTO.java    |  63 ---
 .../java/org/grails/forge/api/RequestInfo.java     | 139 -----
 .../java/org/grails/forge/api/SelectOptionDTO.java |  62 ---
 .../java/org/grails/forge/api/ServletImplDTO.java  | 100 ----
 .../forge/api/analytics/GenerationListener.java    |  68 ---
 .../forge/api/bind/RequestInfoArgumentBinder.java  |  93 ----
 .../forge/api/create/AbstractCreateController.java | 117 ----
 .../forge/api/create/zip/ZipCreateController.java  | 196 -------
 .../forge/api/create/zip/ZipCreateOperation.java   |  69 ---
 .../org/grails/forge/api/diff/DiffController.java  | 228 --------
 .../org/grails/forge/api/diff/DiffOperations.java  |  92 ---
 .../api/options/ApplicationTypeSelectOptions.java  |  42 --
 .../options/DevelopmentReloadingSelectOptions.java |  42 --
 .../forge/api/options/GormImplSelectOptions.java   |  42 --
 .../forge/api/options/JdkVersionSelectOptions.java |  42 --
 .../forge/api/options/SelectOptionsController.java |  60 --
 .../forge/api/options/SelectOptionsOperations.java |  27 -
 .../api/options/ServletImplSelectOptions.java      |  42 --
 .../forge/api/preview/PreviewController.java       | 120 ----
 .../forge/api/preview/PreviewOperations.java       |  61 --
 .../grails-forge-api/reflect-config.json           |  52 --
 .../grails-forge-api/resource-config.json          |  11 -
 .../src/main/resources/application.yml             |   5 -
 .../src/main/resources/select_options.properties   |   1 -
 .../forge/api/ApplicationControllerSpec.groovy     | 111 ----
 .../grails/forge/api/ApplicationTypeClient.groovy  |  42 --
 .../org/grails/forge/api/CreateClient.groovy       |  57 --
 .../groovy/org/grails/forge/api/DiffClient.groovy  |  56 --
 .../org/grails/forge/api/DiffControllerSpec.groovy |  85 ---
 .../grails/forge/api/FeatureControllerSpec.groovy  | 211 -------
 .../org/grails/forge/api/PreviewClient.groovy      |  42 --
 .../grails/forge/api/PreviewControllerSpec.groovy  |  62 ---
 .../forge/api/ZipCreateControllerSpec.groovy       | 145 -----
 .../src/test/resources/features_es.properties      |   4 -
 .../src/test/resources/logback.xml                 |  17 -
 grails-forge/grails-forge-cli/build.gradle         | 103 ++--
 .../grails-app/conf/application.yml                |  28 +
 .../init/org/grails/forge/cli/Application.groovy   |  84 +++
 .../forge/cli/command/templates/controller.gsp}    |  23 +-
 .../cli/command/templates/controllerSpec.gsp}      |  25 +-
 .../views/forge/cli/command/templates/domain.gsp}  |  25 +-
 .../forge/cli/command/templates/domainSpec.gsp}    |  27 +-
 .../forge/cli/command/templates/interceptor.gsp}   |  25 +-
 .../cli/command/templates/interceptorSpec.gsp}     |  27 +-
 .../views/forge/cli/command/templates/job.gsp}     |  23 +-
 .../views/forge/cli/command/templates/service.gsp} |  27 +-
 .../forge/cli/command/templates/serviceSpec.gsp}   |  25 +-
 .../views/forge/cli/command/templates/taglib.gsp}  |  23 +-
 .../forge/cli/command/templates/taglibSpec.gsp}    |  25 +-
 .../org/grails/forge/cli/CodeGenConfig.groovy      | 189 +++++++
 .../grails/forge/cli/CommonOptionsMixin.groovy}    |  28 +-
 .../groovy/org/grails/forge/cli/ForgeCli.groovy    | 133 +++++
 .../org/grails/forge/cli/ForgeCommand.groovy       |  67 +++
 .../grails/forge/cli/GrailsPicocliFactory.groovy   |  59 ++
 .../org/grails/forge/cli/InteractiveShell.groovy}  | 107 ++--
 .../forge/cli/command/AddPropertyCommand.groovy    | 169 ++++++
 .../grails/forge/cli/command/BaseCommand.groovy    |  88 +++
 .../grails/forge/cli/command/CodeGenCommand.groovy | 118 ++++
 .../forge/cli/command/CreateAppCommand.groovy}     |  45 +-
 .../grails/forge/cli/command/CreateCommand.groovy  | 126 +++++
 .../cli/command/CreateControllerCommand.groovy     |  84 +++
 .../cli/command/CreateDomainClassCommand.groovy    |  84 +++
 .../cli/command/CreateInterceptorCommand.groovy    |  84 +++
 .../forge/cli/command/CreateJobCommand.groovy      |  85 +++
 .../forge/cli/command/CreatePluginCommand.groovy}  |  45 +-
 .../forge/cli/command/CreateRestApiCommand.groovy} |  45 +-
 .../forge/cli/command/CreateServiceCommand.groovy  |  84 +++
 .../forge/cli/command/CreateTagLibCommand.groovy   |  84 +++
 .../cli/command/CreateWebPluginCommand.groovy}     |  45 +-
 .../forge/cli/command/CreateWebappCommand.groovy}  |  45 +-
 .../command/DevelopmentReloadingCandidates.groovy} |  18 +-
 .../command/DevelopmentReloadingConverter.groovy}  |  20 +-
 .../forge/cli/command/GormImplCandidates.groovy}   |  17 +-
 .../forge/cli/command/GormImplConverter.groovy}    |  22 +-
 .../forge/cli/command/LanguageCandidates.groovy}   |  17 +-
 .../forge/cli/command/LanguageConverter.groovy}    |  18 +-
 .../grails/forge/cli/command/ListFeatures.groovy   | 106 ++++
 .../cli/command/ServletImplCandidates.groovy}      |  17 +-
 .../forge/cli/command/ServletImplConverter.groovy} |  20 +-
 .../forge/cli/util/GrailsVersionProvider.groovy}   |  28 +-
 .../java/org/grails/forge/cli/Application.java     | 128 -----
 .../java/org/grails/forge/cli/CodeGenConfig.java   | 180 ------
 .../org/grails/forge/cli/GrailsPicocliFactory.java |  57 --
 .../forge/cli/command/AddPropertyCommand.java      | 181 ------
 .../org/grails/forge/cli/command/BaseCommand.java  |  92 ---
 .../grails/forge/cli/command/CodeGenCommand.java   | 123 -----
 .../grails/forge/cli/command/CreateCommand.java    | 137 -----
 .../forge/cli/command/CreateControllerCommand.java |  88 ---
 .../cli/command/CreateDomainClassCommand.java      |  88 ---
 .../cli/command/CreateInterceptorCommand.java      |  88 ---
 .../grails/forge/cli/command/CreateJobCommand.java |  87 ---
 .../forge/cli/command/CreateServiceCommand.java    |  88 ---
 .../forge/cli/command/CreateTagLibCommand.java     |  88 ---
 .../org/grails/forge/cli/command/ListFeatures.java | 111 ----
 .../grails-forge-cli/native-image.properties       |   2 -
 .../grails-forge-cli/resource-config.json          |   7 -
 .../src/main/resources/simplelogger.properties     |  23 +
 .../org/grails/forge/cli/ApplicationSpec.groovy    | 110 ++++
 .../CodeGenConfigDevelopmentReloadingSpec.groovy   |  24 +-
 .../org/grails/forge/cli/CommandFixture.groovy     |   6 +-
 .../groovy/org/grails/forge/cli/CommandSpec.groovy |   8 +
 .../org/grails/forge/cli/ForgeCliSpec.groovy}      |  41 +-
 .../cli/command/ApplicationCommandSpec.groovy      |  18 +-
 .../forge/cli/command/CodeGenCommandSpec.groovy    |  21 +-
 .../forge/cli/command/CreateAppCommandSpec.groovy  |  34 +-
 .../cli/command/CreateControllerCommandSpec.groovy |   8 -
 .../command/CreateDomainClassCommandSpec.groovy    |   7 -
 .../command/CreateInterceptorCommandSpec.groovy    |   9 -
 .../forge/cli/command/CreateJobCommandSpec.groovy  |   8 -
 .../cli/command/CreateServiceCommandSpec.groovy    |   8 -
 .../cli/command/CreateTagLibCommandSpec.groovy     |  12 -
 .../groovy/org/grails/forge/cli/CliRunner.groovy}  |  25 +-
 grails-forge/grails-forge-core/build.gradle        |  80 +--
 .../asciidoctor/template/asciidocGradle.gsp}       |  17 +-
 .../feature/asciidoctor/template/indexAdoc.gsp}    |   8 +-
 .../views/forge/feature/build/gitignore.gsp}       |   6 +-
 .../feature/build/gradle/templates/buildGradle.gsp | 140 +++++
 .../gradle/templates/buildSrcBuildGradle.gsp}      |  56 +-
 .../build/gradle/templates/dependencies.gsp}       |  34 +-
 .../build/gradle/templates/gradleProperties.gsp}   |  38 +-
 .../gradle/templates/gradleWrapperProperties.gsp}  |  33 +-
 .../build/gradle/templates/settingsGradle.gsp      |  45 +-
 .../grails-app/views/forge/feature/cli.gsp         |  43 ++
 .../plain/templates/plainGithubWorkflow.gsp}       |  27 +-
 .../github/workflows/templates/javaSetup.gsp}      |  24 +-
 .../grails/templates/applicationController.gsp}    |  14 +-
 .../forge/feature/grails/templates/plugin.gsp}     |  41 +-
 .../feature/grails/templates/urlMappings.gsp}      |  29 +-
 .../feature/lang/groovy/templates/application.gsp} |  58 +-
 .../feature/lang/groovy/templates/bootStrap.gsp}   |  37 +-
 .../forge/feature/logging/template/logback.gsp}    |  12 +-
 .../migration/templates/dbMigrationGradle.gsp}     |  11 +-
 .../forge/feature/other/template/maindocs.gsp}     |  23 +-
 .../forge/feature/other/template/markdownLink.gsp} |  11 +-
 .../views/forge/feature/other/template/readme.gsp} |  45 +-
 .../forge/feature/security/template/role.gsp}      |  18 +-
 .../template/securityApplicationGroovy.gsp}        |  31 +-
 .../forge/feature/security/template/user.gsp}      |  26 +-
 .../feature/security/template/userClassic.gsp}     |  28 +-
 .../security/template/userClassicService.gsp}      |  16 +-
 .../feature/security/template/userClassicSpec.gsp} |  14 +-
 .../feature/security/template/userController.gsp}  |  16 +-
 .../forge/feature/security/template/userRole.gsp}  |  20 +-
 .../feature/security/template/userService.gsp}     |  20 +-
 .../forge/feature/security/template/userSpec.gsp}  |  14 +-
 .../feature/spring/template/springResources.gsp}   |   6 +-
 .../feature/test/template/containerGebSpec.gsp}    |  25 +-
 .../forge/feature/test/template/gebConfig.gsp}     |  14 +-
 .../views/forge/feature/test/template/gebSpec.gsp} |  25 +-
 .../forge/feature/view/json/templates/_errors.gsp} |   6 +-
 .../forge/feature/view/json/templates/_object.gsp} |   8 +-
 .../forge/feature/view/json/templates/error.gsp}   |   6 +-
 .../forge/feature/view/json/templates/index.gsp}   |   6 +-
 .../feature/view/json/templates/notFound.gsp}      |   6 +-
 .../feature/view/markup/templates/_errors.gsp}     |   6 +-
 .../feature/view/markup/templates/_object.gsp}     |   8 +-
 .../forge/feature/view/markup/templates/error.gsp} |   6 +-
 .../forge/feature/view/markup/templates/index.gsp} |   6 +-
 .../feature/view/markup/templates/notFound.gsp}    |   6 +-
 .../views/forge/template/api/grailsForgeApi.gsp}   |  37 +-
 .../org/grails/forge/ForgeCoreConfiguration.groovy |  50 ++
 .../org/grails/forge/ForgeGrailsPlugin.groovy      |  49 ++
 .../forge/application/ApplicationType.groovy}      |  44 +-
 .../forge/application/ContextFactory.groovy}       | 131 +++--
 .../forge/application/OperatingSystem.groovy}      |  27 +-
 .../application/PluginAvailableFeatures.groovy}    |  23 +-
 .../org/grails/forge/application/Project.groovy    |  93 ++++
 .../forge/application/ProjectIdentifier.groovy}    |  28 +-
 .../application/RestApiAvailableFeatures.groovy}   |  23 +-
 .../forge/application/WebAvailableFeatures.groovy} |  20 +-
 .../application/WebPluginAvailableFeatures.groovy} |  29 +-
 .../generator/DefaultProjectGenerator.groovy}      | 103 ++--
 .../application/generator/GeneratorContext.groovy  | 397 +++++++++++++
 .../application/generator/ProjectGenerator.groovy} |  30 +-
 .../org/grails/forge/build/BuildPlugin.groovy}     |  28 +-
 .../org/grails/forge/build/BuildProperties.groovy} |  36 +-
 .../org/grails/forge/build/Comment.groovy}         |  15 +-
 .../org/grails/forge/build/Property.groovy}        |  15 +-
 .../forge/build/dependencies/Coordinate.groovy}    |  45 +-
 .../build/dependencies/CoordinateResolver.groovy}  |  10 +-
 .../dependencies/DefaultCoordinateResolver.groovy} |  32 +-
 .../forge/build/dependencies/Dependency.groovy     | 393 +++++++++++++
 .../build/dependencies/DependencyContext.groovy}   |  41 +-
 .../build/dependencies/DependencyCoordinate.groovy | 120 ++++
 .../dependencies/LookupFailedException.groovy}     |  12 +-
 .../grails/forge/build/dependencies/Phase.groovy}  |   8 +-
 .../PomDependencyVersionResolver.groovy            | 150 +++++
 .../grails/forge/build/dependencies/Scope.groovy}  |  97 ++--
 .../grails/forge/build/dependencies/Source.groovy} |   8 +-
 .../build/gradle/DefaultGradleRepository.groovy    | 141 +++++
 .../grails/forge/build/gradle/GradleBuild.groovy   | 162 ++++++
 .../forge/build/gradle/GradleBuildCreator.groovy}  |  58 +-
 .../forge/build/gradle/GradleConfiguration.groovy} | 134 ++---
 .../forge/build/gradle/GradleDependency.groovy     | 123 +++++
 .../grails/forge/build/gradle/GradleDsl.groovy}    |   8 +-
 .../grails/forge/build/gradle/GradlePlugin.groovy  | 256 +++++++++
 .../forge/build/gradle/GradleRepository.groovy}    |  97 ++--
 .../build/gradle/MavenCentralRepository.groovy}    |  25 +-
 .../build/gradle/MavenLocalRepository.groovy}      |  25 +-
 .../build/gradle/VersionRegexRepoFilter.groovy     |  56 ++
 .../grails/forge/build/gradle/VersionType.groovy}  |   8 +-
 .../grails/forge/defaults/HasDefaultBuild.groovy}  |  11 +-
 .../HasDefaultDevelopmentReloading.groovy}         |  12 +-
 .../grails/forge/defaults/IncludesDefaults.groovy} |  10 +-
 .../grails/forge/defaults/LanguageDefaults.groovy} |  32 +-
 .../org/grails/forge/diff/FeatureDiffer.groovy}    | 114 ++--
 .../forge/feature/ApplicationFeature.groovy}       |  14 +-
 .../grails/forge/feature/AvailableFeatures.groovy} |  20 +-
 .../forge/feature/BaseAvailableFeatures.groovy     |  88 +++
 .../org/grails/forge/feature/Category.groovy       |  65 +++
 .../grails/forge/feature/DefaultFeature.groovy}    |  14 +-
 .../org/grails/forge/feature/Feature.groovy}       |  50 +-
 .../org/grails/forge/feature/FeatureContext.groovy | 133 +++++
 .../org/grails/forge/feature/FeaturePhase.groovy}  |  17 +-
 .../grails/forge/feature/FeaturePredicate.groovy}  |  11 +-
 .../grails/forge/feature/FeatureRegistry.groovy    |  94 ++++
 .../org/grails/forge/feature/Features.groovy       | 134 +++++
 .../org/grails/forge/feature/OneOfFeature.groovy}  |  10 +-
 .../grails/forge/feature/ai/GrailsSpringAi.groovy  |  87 +++
 .../forge/feature/ai/SpringAiAnthropic.groovy}     |  35 +-
 .../grails/forge/feature/ai/SpringAiOllama.groovy} |  43 +-
 .../grails/forge/feature/ai/SpringAiOpenAi.groovy} |  35 +-
 .../feature/ai/SpringAiProviderFeature.groovy}     |  53 +-
 .../org/grails/forge/feature/api/OpenApi.groovy    |  87 +++
 .../forge/feature/asciidoctor/Asciidoctor.groovy   |  83 +++
 .../feature/assetPipeline/AssetPipeline.groovy     | 159 ++++++
 .../forge/feature/build/BuildFeature.groovy}       |  18 +-
 .../forge/feature/build/gradle/Dockerfile.groovy   |  85 +++
 .../forge/feature/build/gradle/Gradle.groovy       | 100 ++++
 .../feature/build/gradle/GradleBuildSrc.groovy     |  77 +++
 .../build/gradle/GradleBuildSrcFeature.groovy}     |  22 +-
 .../feature/build/gradle/GradleSettingsFile.groovy |  81 +++
 .../build/gradle/GradleSettingsFileFeature.groovy} |  22 +-
 .../forge/feature/cache/CacheFeature.groovy}       |  18 +-
 .../org/grails/forge/feature/cache/EHCache.groovy  |  67 +++
 .../grails/forge/feature/cache/GrailsCache.groovy  |  76 +++
 .../config/ApplicationConfiguration.groovy}        |  38 +-
 .../feature/config/BootstrapConfiguration.groovy}  |  24 +-
 .../forge/feature/config/Configuration.groovy}     | 157 +++---
 .../feature/config/ConfigurationFeature.groovy}    |  39 +-
 .../grails/forge/feature/config/Properties.groovy} |  47 +-
 .../org/grails/forge/feature/config/Yaml.groovy}   |  54 +-
 .../forge/feature/database/AsyncGorm.groovy}       |  68 +--
 .../DatabaseDriverConfigurationFeature.groovy}     |  57 +-
 .../feature/database/DatabaseDriverFeature.groovy  |  88 +++
 .../forge/feature/database/GormFeature.groovy}     |  26 +-
 .../feature/database/GormOneOfFeature.groovy}      |  12 +-
 .../feature/database/GrailsDataHibernate5.groovy   | 128 +++++
 .../feature/database/GrailsDataHibernate7.groovy   | 124 +++++
 .../database/GrailsDataHibernateValidator.groovy}  |  35 +-
 .../feature/database/GrailsDataMongoDB.groovy}     |  91 ++-
 .../forge/feature/database/GraphqlGorm.groovy}     |  68 +--
 .../org/grails/forge/feature/database/H2.groovy    | 106 ++++
 .../forge/feature/database/JpaFeature.groovy}      |   8 +-
 .../feature/database/MongoDBTestingSupport.groovy  |  78 +++
 .../MongoDBTestingSupportValidator.groovy}         |  28 +-
 .../forge/feature/database/MongoFeature.groovy}    |  30 +-
 .../grails/forge/feature/database/MongoSync.groovy |  87 +++
 .../org/grails/forge/feature/database/MySQL.groovy |  98 ++++
 .../grails/forge/feature/database/Neo4jGorm.groovy |  77 +++
 .../forge/feature/database/PostgreSQL.groovy       |  99 ++++
 .../grails/forge/feature/database/SQLServer.groovy |  98 ++++
 .../forge/feature/database/TestContainers.groovy   | 134 +++++
 .../github/workflows/GitHubWorkflowFeature.groovy} |  33 +-
 .../forge/feature/github/workflows/Secret.groovy}  |  37 +-
 .../plain/PlainGithubWorkflowFeature.groovy        |  59 ++
 .../grails/forge/feature/grails/GrailsBase.groovy  | 117 ++++
 .../feature/grails/GrailsCompileStatic.groovy}     |  38 +-
 .../feature/grails/GrailsDefaultPlugins.groovy     |  91 +++
 .../forge/feature/grails/GrailsGradlePlugin.groovy |  82 +++
 .../forge/feature/grails/GrailsUrlMappings.groovy  |  63 +++
 .../forge/feature/grails/GrailsWebConsole.groovy   |  74 +++
 .../feature/grailsProfiles/GrailsProfiles.groovy   |  79 +++
 .../feature/grailsWrapper/GrailsWrapper.groovy     |  81 +++
 .../forge/feature/lang/LanguageFeature.groovy}     |  22 +-
 .../feature/lang/groovy/GrailsApplication.groovy   |  88 +++
 .../lang/groovy/GrailsApplicationFeature.groovy}   |  10 +-
 .../grails/forge/feature/logging/Logback.groovy}   |  56 +-
 .../forge/feature/logging/LogbackConfig.groovy}    |  56 +-
 .../forge/feature/logging/LoggingFeature.groovy}   |  18 +-
 .../forge/feature/micronaut/GrailsMicronaut.groovy | 103 ++++
 .../micronaut/GrailsMicronautValidator.groovy}     |  29 +-
 .../feature/micronaut/MicronautHttpClient.groovy   | 117 ++++
 .../migration/DatabaseMigrationPlugin.groovy       |  80 +++
 .../feature/migration/MigrationFeature.groovy}     |  18 +-
 .../org/grails/forge/feature/other/AppName.groovy  |  66 +++
 .../grails/forge/feature/other/GrailsQuartz.groovy |  74 +++
 .../feature/other/GrailsStartupProgress.groovy     |  79 +++
 .../forge/feature/other/HibernateValidator.groovy  |  70 +++
 .../org/grails/forge/feature/other/Readme.groovy   |  94 ++++
 .../grails/forge/feature/other/ShadePlugin.groovy  |  77 +++
 .../grails/forge/feature/reloading/Jrebel.groovy   |  74 +++
 .../feature/reloading/ReloadingFeature.groovy}     |  26 +-
 .../feature/reloading/SpringBootDevTools.groovy    |  93 ++++
 .../feature/security/GrailsSpringSecurity.groovy   |  90 +++
 .../feature/security/GrailsSpringSecurityUi.groovy |  97 ++++
 .../security/PrimarySecurityFeature.groovy}        |  10 +-
 .../forge/feature/security/SecurityFeature.groovy  |  87 +++
 .../security/SpringBootStarterSecurity.groovy      |  86 +++
 .../forge/feature/sitemesh3/Sitemesh3.groovy}      |  54 +-
 .../feature/spring/SpringBootAutoconfigure.groovy  |  67 +++
 .../spring/SpringBootEmbeddedServlet.groovy}       |  22 +-
 .../feature/spring/SpringBootJettyFeature.groovy   |  63 +++
 .../feature/spring/SpringBootStarterFeature.groovy |  76 +++
 .../feature/spring/SpringBootTomcatFeature.groovy} |  60 +-
 .../spring/SpringBootUndertowFeature.groovy}       |  54 +-
 .../spring/SpringBootVirtualThreads.groovy}        |  46 +-
 .../forge/feature/spring/SpringResources.groovy    |  65 +++
 .../feature/spring/SpringThreadingFeature.groovy}  |  18 +-
 .../grails/forge/feature/test/GebFeature.groovy}   |  22 +-
 .../forge/feature/test/GebWithLocalBrowsers.groovy | 124 +++++
 .../feature/test/GebWithTestcontainers.groovy      | 106 ++++
 .../forge/feature/test/GormTestingSupport.groovy   |  67 +++
 .../feature/test/GrailsWebTestingSupport.groovy    |  67 +++
 .../org/grails/forge/feature/test/Mockito.groovy   |  77 +++
 .../forge/feature/test/MockitoValidator.groovy}    |  25 +-
 .../org/grails/forge/feature/test/Spock.groovy     |  73 +++
 .../feature/test/ViewsJsonTestingSupport.groovy    |  67 +++
 .../validation/CompositeFeatureValidator.groovy}   |  35 +-
 .../feature/validation/FeatureValidator.groovy}    |  18 +-
 .../validation/OneOfFeatureValidator.groovy}       |  39 +-
 .../org/grails/forge/feature/view/GrailsGsp.groovy | 106 ++++
 .../grails/forge/feature/view/GrailsLayout.groovy} |  34 +-
 .../grails/forge/feature/view/GrailsViews.groovy   |  72 +++
 .../grails/forge/feature/view/GspLayout.groovy}    |  24 +-
 .../grails/forge/feature/view/Scaffolding.groovy   |  88 +++
 .../grails/forge/feature/view/json/ViewJson.groovy |  93 ++++
 .../forge/feature/view/markup/ViewMarkup.groovy    |  77 +++
 .../org/grails/forge/feature/web/GrailsWeb.groovy} |  36 +-
 .../org/grails/forge/io/ConsoleOutput.groovy}      |  37 +-
 .../grails/forge/io/FileSystemOutputHandler.groovy | 144 +++++
 .../org/grails/forge/io/MapOutputHandler.groovy}   |  45 +-
 .../org/grails/forge/io/OutputHandler.groovy}      |  17 +-
 .../org/grails/forge/io/OutputUtils.groovy}        |  43 +-
 .../org/grails/forge/io/ZipOutputHandler.groovy    | 146 +++++
 .../org/grails/forge/options/BuildTool.groovy      |  78 +++
 .../forge/options/DefaultTestViewProvider.groovy}  |  19 +-
 .../forge/options/DevelopmentReloading.groovy}     |  48 +-
 .../org/grails/forge/options/FeatureFilter.groovy} |  59 +-
 .../org/grails/forge/options/GormImpl.groovy}      |  52 +-
 .../org/grails/forge/options/JdkVersion.groovy}    |  29 +-
 .../org/grails/forge/options/Language.groovy       |  99 ++++
 .../groovy/org/grails/forge/options/Options.groovy | 128 +++++
 .../org/grails/forge/options/ServletImpl.groovy}   |  38 +-
 .../org/grails/forge/options/TestFramework.groovy} |  53 +-
 .../grails/forge/options/TestViewProvider.groovy}  |  22 +-
 .../grails/forge/template/BinaryTemplate.groovy}   |  19 +-
 .../grails/forge/template/Config4kTemplate.groovy} |  43 +-
 .../forge/template/DefaultTemplateRenderer.groovy} |  63 ++-
 .../org/grails/forge/template/ForgePages.groovy    | 109 ++++
 .../org/grails/forge/template/GspTemplate.groovy}  |  46 +-
 .../org/grails/forge/template/GspView.groovy       |  69 +++
 .../forge/template/PropertiesTemplate.groovy}      |  65 +--
 .../org/grails/forge/template/RenderResult.groovy} |  69 +--
 .../grails/forge/template/StringTemplate.groovy}   |  28 +-
 .../org/grails/forge/template/Template.groovy}     |  13 +-
 .../grails/forge/template/TemplateModel.groovy}    |   8 +-
 .../grails/forge/template/TemplateRenderer.groovy} |  22 +-
 .../org/grails/forge/template/URLTemplate.groovy}  |  45 +-
 .../org/grails/forge/template/Writable.groovy}     |   9 +-
 .../org/grails/forge/template/YamlTemplate.groovy  |  89 +++
 .../org/grails/forge/util/IOFeatureUtil.groovy}    |  42 +-
 .../org/grails/forge/util/NameUtils.groovy}        | 471 ++++++++--------
 .../org/grails/forge/util/ThrowingSupplier.groovy} |  10 +-
 .../org/grails/forge/util/VersionInfo.groovy       | 188 +++++++
 .../org/grails/forge/util/ZipUtil.groovy}          |  72 ++-
 .../java/org/grails/forge/analytics/Generated.java | 112 ----
 .../grails/forge/analytics/SelectedFeature.java    |  38 --
 .../forge/application/PluginAvailableFeatures.java |  35 --
 .../java/org/grails/forge/application/Project.java |  94 ----
 .../application/RestApiAvailableFeatures.java      |  34 --
 .../forge/application/WebAvailableFeatures.java    |  35 --
 .../application/WebPluginAvailableFeatures.java    |  34 --
 .../application/generator/GeneratorContext.java    | 387 -------------
 .../forge/build/dependencies/Dependency.java       | 393 -------------
 .../build/dependencies/DependencyCoordinate.java   | 121 ----
 .../build/dependencies/LookupFailedException.java  |  26 -
 .../dependencies/PomDependencyVersionResolver.java | 136 -----
 .../build/gradle/DefaultGradleRepository.java      | 142 -----
 .../org/grails/forge/build/gradle/GradleBuild.java | 167 ------
 .../forge/build/gradle/GradleDependency.java       | 125 -----
 .../grails/forge/build/gradle/GradlePlugin.java    | 256 ---------
 .../forge/build/gradle/VersionRegexRepoFilter.java |  22 -
 .../grails/forge/defaults/IncludesDefaults.java    |  23 -
 .../forge/feature/BaseAvailableFeatures.java       |  86 ---
 .../java/org/grails/forge/feature/Category.java    |  61 --
 .../org/grails/forge/feature/FeatureContext.java   | 133 -----
 .../java/org/grails/forge/feature/Features.java    | 137 -----
 .../grails/forge/feature/ai/GrailsSpringAi.java    |  86 ---
 .../java/org/grails/forge/feature/api/OpenApi.java |  87 ---
 .../forge/feature/asciidoctor/Asciidoctor.java     |  82 ---
 .../forge/feature/assetPipeline/AssetPipeline.java | 160 ------
 .../forge/feature/build/gradle/Dockerfile.java     |  85 ---
 .../grails/forge/feature/build/gradle/Gradle.java  | 109 ----
 .../forge/feature/build/gradle/GradleBuildSrc.java |  81 ---
 .../feature/build/gradle/GradleSettingsFile.java   |  80 ---
 .../build/gradle/templates/buildGradle.rocker.raw  | 156 ------
 .../gradle/templates/gradleProperties.rocker.raw   |  33 --
 .../gradle/templates/settingsGradle.rocker.raw     |  35 --
 .../org/grails/forge/feature/cache/EHCache.java    |  67 ---
 .../grails/forge/feature/cache/GrailsCache.java    |  76 ---
 .../java/org/grails/forge/feature/cli.rocker.raw   |  48 --
 .../feature/config/ApplicationConfiguration.java   |  40 --
 .../feature/database/DatabaseDriverFeature.java    |  89 ---
 .../feature/database/GrailsDataHibernate5.java     | 129 -----
 .../feature/database/GrailsDataHibernate7.java     | 125 -----
 .../java/org/grails/forge/feature/database/H2.java | 106 ----
 .../feature/database/MongoDBTestingSupport.java    |  76 ---
 .../grails/forge/feature/database/MongoSync.java   |  85 ---
 .../org/grails/forge/feature/database/MySQL.java   |  96 ----
 .../grails/forge/feature/database/Neo4jGorm.java   |  78 ---
 .../grails/forge/feature/database/PostgreSQL.java  |  97 ----
 .../grails/forge/feature/database/SQLServer.java   |  96 ----
 .../forge/feature/database/TestContainers.java     | 134 -----
 .../plain/PlainGithubWorkflowFeature.java          |  57 --
 .../grails/forge/feature/grails/GrailsBase.java    | 117 ----
 .../forge/feature/grails/GrailsDefaultPlugins.java |  91 ---
 .../forge/feature/grails/GrailsGradlePlugin.java   |  82 ---
 .../forge/feature/grails/GrailsUrlMappings.java    |  63 ---
 .../forge/feature/grails/GrailsWebConsole.java     |  74 ---
 .../feature/grailsProfiles/GrailsProfiles.java     |  80 ---
 .../forge/feature/grailsWrapper/GrailsWrapper.java |  81 ---
 .../feature/lang/groovy/GrailsApplication.java     |  89 ---
 .../forge/feature/micronaut/GrailsMicronaut.java   | 103 ----
 .../feature/micronaut/MicronautHttpClient.java     | 117 ----
 .../feature/migration/DatabaseMigrationPlugin.java |  79 ---
 .../org/grails/forge/feature/other/AppName.java    |  67 ---
 .../grails/forge/feature/other/GrailsQuartz.java   |  72 ---
 .../forge/feature/other/GrailsStartupProgress.java |  78 ---
 .../forge/feature/other/HibernateValidator.java    |  68 ---
 .../org/grails/forge/feature/other/Readme.java     |  99 ----
 .../grails/forge/feature/other/ShadePlugin.java    |  75 ---
 .../forge/feature/other/template/readme.rocker.raw |  41 --
 .../org/grails/forge/feature/reloading/Jrebel.java |  74 ---
 .../feature/reloading/SpringBootDevTools.java      |  94 ----
 .../feature/security/GrailsSpringSecurity.java     |  91 ---
 .../feature/security/GrailsSpringSecurityUi.java   |  98 ----
 .../forge/feature/security/SecurityFeature.java    |  88 ---
 .../security/SpringBootStarterSecurity.java        |  88 ---
 .../feature/spring/SpringBootAutoconfigure.java    |  66 ---
 .../feature/spring/SpringBootJettyFeature.java     |  63 ---
 .../feature/spring/SpringBootStarterFeature.java   |  76 ---
 .../forge/feature/spring/SpringResources.java      |  64 ---
 .../forge/feature/test/GebWithLocalBrowsers.java   | 124 -----
 .../forge/feature/test/GebWithTestcontainers.java  | 106 ----
 .../forge/feature/test/GormTestingSupport.java     |  66 ---
 .../feature/test/GrailsWebTestingSupport.java      |  66 ---
 .../org/grails/forge/feature/test/Mockito.java     |  77 ---
 .../java/org/grails/forge/feature/test/Spock.java  |  73 ---
 .../feature/test/ViewsJsonTestingSupport.java      |  66 ---
 .../org/grails/forge/feature/view/GrailsGsp.java   | 107 ----
 .../org/grails/forge/feature/view/GrailsViews.java |  70 ---
 .../org/grails/forge/feature/view/Scaffolding.java |  88 ---
 .../grails/forge/feature/view/json/ViewJson.java   |  93 ----
 .../forge/feature/view/markup/ViewMarkup.java      |  75 ---
 .../grails/forge/io/FileSystemOutputHandler.java   | 149 -----
 .../java/org/grails/forge/io/ZipOutputHandler.java | 133 -----
 .../java/org/grails/forge/options/BuildTool.java   |  79 ---
 .../org/grails/forge/options/FeatureFilter.java    |  66 ---
 .../forge/options/GormImplTypeConverter.java       |  47 --
 .../java/org/grails/forge/options/Language.java    | 100 ----
 .../java/org/grails/forge/options/Options.java     | 158 ------
 .../org/grails/forge/template/RockerWritable.java  |  39 --
 .../org/grails/forge/template/TemplateModel.java   |  22 -
 .../org/grails/forge/template/YamlTemplate.java    |  93 ----
 .../java/org/grails/forge/util/VersionInfo.java    | 196 -------
 .../grails-forge-core/resource-config.json         |  14 -
 ...rk.boot.autoconfigure.AutoConfiguration.imports |   1 +
 .../org/grails/forge/ApplicationContextSpec.groovy |   8 +-
 .../groovy/org/grails/forge/BuildBuilder.groovy    |  12 +-
 ...tionContextSpec.groovy => ForgeContexts.groovy} |  30 +-
 ...ec.groovy => ForgeCoreConfigurationSpec.groovy} |  18 +-
 .../org/grails/forge/ForgeGrailsPluginSpec.groovy  | 134 +++++
 .../PomDependencyVersionResolverSpec.groovy        |  10 +-
 .../forge/build/gradle/GradleRepositorySpec.groovy |  16 +
 .../grails/forge/build/gradle/GradleSpec.groovy    |   5 +-
 .../forge/feature/BaseAvailableFeaturesSpec.groovy |   6 +-
 .../forge/feature/ai/GrailsSpringAiSpec.groovy     |   8 +-
 .../grails/forge/feature/cache/CacheSpec.groovy    |   4 +-
 .../forge/feature/config/PropertiesSpec.groovy     |   4 +-
 .../grails/forge/feature/config/YamlSpec.groovy    |   4 +-
 .../feature/database/GrailsDataMongoDBSpec.groovy  |   2 +-
 .../forge/feature/database/MongoSyncSpec.groovy    |  16 +
 .../grails/forge/feature/database/MySQLSpec.groovy |   2 +-
 .../forge/feature/database/Neo4JGormSpec.groovy    |   2 +-
 .../forge/feature/database/PostgresSpec.groovy     |   2 +-
 .../forge/feature/database/SQLServerSpec.groovy    |   2 +-
 .../feature/database/TestContainersSpec.groovy     |   6 +-
 .../workflows/PlainGithubWorkflowSpec.groovy       |   4 +-
 .../forge/feature/grails/GrailsBaseSpec.groovy     |   4 +-
 .../feature/grails/GrailsGradlePluginSpec.groovy   |   4 +-
 .../feature/grails/GrailsWebConsoleSpec.groovy     |   4 +-
 .../feature/lang/GrailsApplicationSpec.groovy      |   4 +-
 .../feature/micronaut/GrailsMicronautSpec.groovy   |   4 +-
 .../micronaut/MicronautHttpClientSpec.groovy       |   4 +-
 .../forge/feature/spring/SpringBootSpec.groovy     |   4 +-
 .../spring/SpringBootVirtualThreadsSpec.groovy     |   4 +-
 .../forge/fixture/CommandOutputFixture.groovy      |   4 +-
 .../org/grails/forge/fixture/ContextFixture.groovy |   9 +-
 .../org/grails/forge/options/GormImplSpec.groovy   |   1 +
 ...iderSpec.groovy => TestViewProviderSpec.groovy} |  10 +-
 .../plugintest/ForgePluginTestApplication.groovy}  |  46 +-
 .../org/grails/forge/util/VersionInfoSpec.groovy   |   6 +-
 grails-forge/grails-forge-web-netty/build.gradle   | 156 ------
 .../java/org/grails/forge/netty/Application.java   |  41 --
 .../forge/netty/analytics/AnalyticsClient.java     |  43 --
 .../grails-forge-web-netty/native-image.properties |  18 -
 .../grails-forge-web-netty/resource-config.json    |   8 -
 .../src/main/resources/application-dev.yml         |   5 -
 .../src/main/resources/application.yml             |  37 --
 .../src/main/resources/logback.xml                 |  15 -
 .../aws/.platform/nginx/conf.d/proxy.conf          |   0
 .../aws/Procfile                                   |   0
 .../aws/start.sh                                   |   4 +-
 grails-forge/grails-forge-web/build.gradle         | 124 +++++
 .../grails-app/conf/application.yml                |  45 ++
 .../grails-app/conf/logback.xml}                   |  24 +-
 .../grails-app/conf/openapi-base.yml               |  22 +
 .../org/grails/forge/web/DiffController.groovy     | 142 +++++
 .../forge/web/ForgeApplicationController.groovy    | 146 +++++
 .../org/grails/forge/web/PreviewController.groovy  | 102 ++++
 .../forge/web/SelectOptionsController.groovy       |  52 ++
 .../org/grails/forge/web/UrlMappings.groovy        |  37 ++
 .../grails/forge/web/ZipCreateController.groovy    | 132 +++++
 .../grails-app/i18n/messages.properties            |  19 +
 .../init/org/grails/forge/web/Application.groovy}  |  36 +-
 .../forge/web/ForgeApiIntegrationSpec.groovy       | 615 +++++++++++++++++++++
 .../resources/api-test-messages_fr.properties}     |   9 +-
 .../org/grails/forge/api/ApplicationTypeDTO.groovy | 112 ++++
 .../grails/forge/api/ApplicationTypeList.groovy}   |  30 +-
 .../forge/api/ApplicationTypeOperations.groovy}    |  24 +-
 .../forge/api/DevelopmentReloadingDTO.groovy       |  90 +++
 .../groovy/org/grails/forge/api/FeatureDTO.groovy  | 136 +++++
 .../org/grails/forge/api/FeatureList.groovy}       |  30 +-
 .../org/grails/forge/api/FeatureOperations.groovy} |  22 +-
 .../org/grails/forge/api/FeatureService.groovy     |  81 +++
 .../forge/api/ForgeApplicationService.groovy       | 114 ++++
 .../org/grails/forge/api/ForgeMessages.groovy}     |  19 +-
 .../groovy/org/grails/forge/api/GormImplDTO.groovy |  98 ++++
 .../forge/api/GrailsForgeConfiguration.groovy}     |  78 ++-
 .../org/grails/forge/api/JdkVersionDTO.groovy      |  97 ++++
 .../groovy/org/grails/forge/api/LanguageDTO.groovy | 109 ++++
 .../groovy/org/grails/forge/api/LinkDTO.groovy}    |  40 +-
 .../groovy/org/grails/forge/api/Linkable.groovy}   |  34 +-
 .../org/grails/forge/api/Relationship.groovy}      |  35 +-
 .../groovy/org/grails/forge/api/RequestInfo.groovy |  78 +++
 .../org/grails/forge/api/SelectOptionDTO.groovy}   |  39 +-
 .../org/grails/forge/api/SelectOptionsDTO.groovy}  | 150 +++--
 .../groovy/org/grails/forge/api/Selectable.groovy} |  14 +-
 .../org/grails/forge/api/ServletImplDTO.groovy     |  86 +++
 .../org/grails/forge/api/UserAgentParser.groovy}   |  39 +-
 .../groovy/org/grails/forge/api/VersionDTO.groovy} |  34 +-
 .../forge/api/create/CreateProjectService.groovy   |  88 +++
 .../options/ApplicationTypeSelectOptions.groovy}   |  24 +-
 .../DevelopmentReloadingSelectOptions.groovy}      |  25 +-
 .../api/options/GormImplSelectOptions.groovy}      |  24 +-
 .../api/options/JdkVersionSelectOptions.groovy}    |  24 +-
 .../api/options/LanguageSelectOptions.groovy}      |  24 +-
 .../api/options/SelectOptionsOperations.groovy}    |  11 +-
 .../api/options/ServletImplSelectOptions.groovy}   |  24 +-
 .../grails/forge/api/preview/PreviewDTO.groovy}    |  33 +-
 .../grails/forge/web/ForgeRequestSupport.groovy    | 187 +++++++
 .../grails/forge/web/GroovyObjectJsonMixin.groovy} |  20 +-
 .../forge/web/ForgeRequestSupportSpec.groovy       | 162 ++++++
 .../forge/web/GrailsForgeConfigurationSpec.groovy  |  72 +++
 grails-forge/grailsforgearchitecture.jpeg          | Bin 218395 -> 0 bytes
 grails-forge/infrastructure/README.md              |   2 +-
 grails-forge/infrastructure/environment.yaml       |   9 -
 grails-forge/infrastructure/shared.yaml            |   2 +-
 grails-forge/sam-local.yml                         |  43 --
 grails-forge/settings.gradle                       |   8 +-
 grails-forge/test-core/build.gradle                |  39 +-
 .../forge/cli/command/CreateControllerSpec.groovy  |   6 +-
 .../forge/cli/command/CreateInterceptorSpec.groovy |   6 +-
 .../forge/cli/command/CreateServiceSpec.groovy     |   6 +-
 .../forge/cli/command/CreateTagLibSpec.groovy      |   6 +-
 .../org/grails/forge/utils/CommandSpec.groovy      |  13 +-
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 .../plugin/core/GrailsPluginGradlePlugin.groovy    |  11 +-
 ...GrailsPluginGradlePluginNative2AsciiSpec.groovy |  43 ++
 .../plugin-native2ascii-off/build.gradle           |   8 +
 .../plugin-native2ascii-off/gradle.properties      |   1 +
 .../grails-app/conf/application.yml                |   0
 .../plugin-native2ascii-off/settings.gradle        |   1 +
 .../resources/templates/messages_ru.properties     |  19 +
 .../org/grails/gsp/compiler/GroovyPageParser.java  |  18 +-
 .../org/grails/gsp/compiler/LogicLineTrimmer.java  | 234 ++++++++
 .../org/grails/gsp/GspTrimLogicLinesSpec.groovy    | 299 ++++++++++
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 .../gradle/wrapper/gradle-wrapper.properties       |   2 +-
 threat-model.yaml                                  |   4 +-
 673 files changed, 19131 insertions(+), 21868 deletions(-)



(grails-core) 02/03: Copy the streamed renderers before adding the built-in ones

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 1c2b6b8cac6183b7bf2587dd93e2d41597200d54
Author: James Daugherty <jd...@jdresources.net>
AuthorDate: Wed Oct 14 14:48:37 2026 +0100

    Copy the streamed renderers before adding the built-in ones
    
    The streaming beans build their renderer list with toList() and then add
    the two built-in renderers to it. Groovy 5 resolves that toList() to its
    own extension method, which returns a mutable list. Groovy 6 statically
    compiles it to the JDK's Stream.toList(), whose list is unmodifiable, so
    creating publisherActionResultTransformer threw
    UnsupportedOperationException and every web application failed to start
    with streaming enabled, which is the default. The list is now copied
    before it is extended. ControllersAsyncGrailsPluginSpec failed four
    features on 9.0.x without this and passes with it.
---
 .../grails/plugins/web/async/ControllersAsyncGrailsPlugin.groovy    | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/ControllersAsyncGrailsPlugin.groovy b/grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/ControllersAsyncGrailsPlugin.groovy
index bd28c46cfd..9fca563548 100644
--- a/grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/ControllersAsyncGrailsPlugin.groovy
+++ b/grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/ControllersAsyncGrailsPlugin.groovy
@@ -144,9 +144,11 @@ class ControllersAsyncGrailsPlugin extends Plugin {
                 if (jackson) {
                     builtIn << context.bean(JACKSON_RENDERER, StreamItemRenderer)
                 }
-                List<StreamItemRenderer> renderers = context.beanProvider(StreamItemRenderer).orderedStream()
+                // a copy, because the built-in renderers are added to it: Groovy 6 compiles toList() to the
+                // JDK's Stream.toList(), whose list is unmodifiable, where Groovy 5 used its own mutable one
+                List<StreamItemRenderer> renderers = new ArrayList<>(context.beanProvider(StreamItemRenderer).orderedStream()
                         .filter { StreamItemRenderer renderer -> builtIn.every { StreamItemRenderer own -> renderer !== own } }
-                        .toList()
+                        .toList())
                 renderers.addAll(builtIn)
                 new PublisherActionResultTransformer(renderers, timeout)
             }