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:59:47 UTC
(grails-core) branch feat/app-bench-ci updated (a3b5aa39df -> 27581b32f7)
This is an automated email from the ASF dual-hosted git repository.
jdaugherty pushed a change to branch feat/app-bench-ci
in repository https://gitbox.apache.org/repos/asf/grails-core.git
from a3b5aa39df Warm the CI app benches past their JIT drift
add b18c864d16 Integrate Spring AI through a grails-spring-ai plugin and stream Publishers from actions
add f77d9182d9 Address the review of the Spring AI integration
add ea0698edeb Address the second review of the Spring AI integration
add 6089445541 Merge pull request #16599 from jdaugherty/feat/grails-ai
add a6cc5e3c2a Geb: manage Selenium 4.49.0 so the Chrome container image has an arm64 variant
add 7ed196e0b5 Merge pull request #16626 from jdaugherty/fix/geb-default-chromium-image
add 7008f7f309 Hibernate 7: keep HQL queries with a subquery intact
add f0f8729b27 fix(hibernate7): do not read select inside a longer word as the select of an HQL query
add 85d7c8621c Merge pull request #16597 from gustavoharff/fix/hibernate7-hql-subquery-select
add b214607a5b Replace ehcache's jaxb-runtime version range with the BOM-managed version
add 974357f6ca Keep the dependency metadata cache on pull request runs
add fc0ac6266f Report every validation failure at once and warn about what resolution skipped
add 200ab342fa Log the resolution warnings from the task so a configuration cache hit shows them
add a6d05ed1f3 Merge pull request #16644 from jdaugherty/fix/ehcache-jaxb-dynamic-version
add f9af0924cc Merge branch '8.0.x' into 8.1.x
add 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
add 696429eab7 Merge branch '8.1.x' into 9.0.x
add 1c2b6b8cac Copy the streamed renderers before adding the built-in ones
add 386e881473 Give the Forge CLI test fixtures Groovy 6's call-site module
add 27581b32f7 Merge remote-tracking branch 'upstream/9.0.x' into feat/app-bench-ci
No new revisions were added by this update.
Summary of changes:
.agents/skills/README.md | 1 +
.agents/skills/gradle-developer/SKILL.md | 9 +-
.agents/skills/grails-ai-developer | 1 +
.github/dependency-graph/external-references.yml | 1 +
.github/workflows/forge-deploy-aws.yml | 4 +-
.gitignore | 4 +
AGENTS.md | 5 +-
RELEASE.md | 4 +-
THREAT_MODEL.md | 6 +-
.../gradle/wrapper/gradle-wrapper.properties | 2 +-
build-logic/plugins/build.gradle | 13 +
.../grails/buildsrc/BomDependencyGraph.groovy | 187 +++++++
.../grails/buildsrc/GrailsCodeStylePlugin.groovy | 2 +-
.../GrailsDependencyValidatorPlugin.groovy | 103 ++--
.../org/apache/grails/buildsrc/SbomPlugin.groovy | 4 +
.../buildsrc/ValidateDependencyVersionsTask.groovy | 89 ++-
.../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
.../grails/buildsrc/BomDependencyGraphSpec.groovy | 41 +-
.../ValidateDependencyVersionsTaskSpec.groovy | 178 +++++-
.../buildsrc/WriteGrailsVersionInfoTaskSpec.groovy | 122 ++++
.../GrailsGroovyExtensionTransformerSpec.groovy | 125 +++++
build.gradle | 13 +-
dependencies.gradle | 25 +
end-to-end/agent-skills-plain-build/build.gradle | 1 +
end-to-end/agent-skills/build.gradle | 1 +
.../grails/e2e/skills/AgentSkillsSpec.groovy | 1 +
gradle.properties | 4 +-
gradle/docs-dependencies.gradle | 6 +
gradle/publish-root-config.gradle | 2 +
gradle/rat-root-config.gradle | 2 +-
gradle/wrapper/gradle-wrapper.properties | 2 +-
grails-async/plugin/build.gradle | 6 +
.../grails/async/web/StreamItemRenderer.groovy | 41 ++
.../web/async/ControllersAsyncGrailsPlugin.groovy | 53 +-
.../web/async/mvc/DefaultStreamItemRenderer.groovy | 52 +-
.../web/async/mvc/JacksonStreamItemRenderer.groovy | 67 +++
.../mvc/PublisherActionResultTransformer.groovy | 177 ++++++
.../web/async/mvc/ServerSentEventFormatter.groovy | 126 +++++
.../web/async/mvc/ServerSentEventSubscriber.groovy | 209 +++++++
.../web/async/mvc/SingleValueSubscriber.groovy | 86 +++
.../additional-spring-configuration-metadata.json | 21 +
.../async/ControllersAsyncGrailsPluginSpec.groovy | 94 ++++
.../PublisherActionResultTransformerSpec.groovy | 388 +++++++++++++
.../async/mvc/ServerSentEventFormatterSpec.groovy | 133 +++++
.../orm/hibernate/query/HqlQueryContext.java | 97 +++-
.../hibernate/HibernateGormStaticApiSpec.groovy | 71 +++
.../orm/hibernate/query/HqlQueryContextSpec.groovy | 94 ++++
grails-doc/build.gradle | 14 +-
grails-doc/src/en/guide/async/asyncStreaming.adoc | 110 ++++
.../guide/async/rxjava/asyncServerSentEvents.adoc | 2 +
.../src/en/guide/commandLine/creatingProject.adoc | 2 +-
.../src/en/guide/commandLine/interactiveMode.adoc | 10 +-
.../src/en/guide/gettingStarted/agentSkills.adoc | 3 +
grails-doc/src/en/guide/introduction/whatsNew.adoc | 14 +
.../src/en/guide/testing/functionalTesting.adoc | 40 +-
.../theWebLayer/gsp/GSPBasics/pageDirectives.adoc | 40 ++
grails-doc/src/en/guide/toc.yml | 10 +
.../src/en/guide/upgrading/upgrading81x.adoc | 53 ++
grails-doc/src/en/guide/usingAi.adoc | 32 ++
grails-doc/src/en/guide/usingAi/aiChatClient.adoc | 87 +++
.../src/en/guide/usingAi/aiConfiguration.adoc | 74 +++
.../src/en/guide/usingAi/aiInstallation.adoc | 43 ++
grails-doc/src/en/guide/usingAi/aiProviders.adoc | 213 +++++++
grails-doc/src/en/guide/usingAi/aiStreaming.adoc | 64 +++
grails-doc/src/en/guide/usingAi/aiTesting.adoc | 77 +++
.../src/en/ref/Command Line/create-plugin.adoc | 2 +-
.../src/en/ref/Command Line/create-restapi.adoc | 2 +-
.../src/en/ref/Command Line/create-web-plugin.adoc | 2 +-
grails-doc/src/en/ref/Command Line/help.adoc | 4 +-
.../src/en/ref/Command Line/list-features.adoc | 6 +
grails-forge/.gitattributes | 5 -
grails-forge/.gitignore | 20 -
grails-forge/README.md | 61 +-
grails-forge/build.gradle | 18 +-
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/JdkVersionSelectOptions.java | 42 --
.../forge/api/options/LanguageSelectOptions.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} | 21 +-
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} | 20 +-
.../org/grails/forge/application/Project.groovy | 93 ++++
.../forge/application/ProjectIdentifier.groovy} | 26 +-
.../application/RestApiAvailableFeatures.groovy} | 20 +-
.../forge/application/WebAvailableFeatures.groovy} | 23 +-
.../application/WebPluginAvailableFeatures.groovy} | 20 +-
.../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 | 62 +++
.../grails/forge/feature/ai/SpringAiOllama.groovy | 68 +++
.../grails/forge/feature/ai/SpringAiOpenAi.groovy | 62 +++
.../feature/ai/SpringAiProviderFeature.groovy | 90 +++
.../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 | 60 --
.../org/grails/forge/feature/FeatureContext.java | 133 -----
.../java/org/grails/forge/feature/Features.java | 137 -----
.../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 | 147 +++++
.../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} | 44 +-
.../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} | 16 +-
.../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} | 25 +-
.../DevelopmentReloadingSelectOptions.groovy} | 25 +-
.../api/options/GormImplSelectOptions.groovy} | 25 +-
.../api/options/JdkVersionSelectOptions.groovy} | 25 +-
.../api/options/LanguageSelectOptions.groovy} | 25 +-
.../api/options/SelectOptionsOperations.groovy} | 14 +-
.../api/options/ServletImplSelectOptions.groovy} | 25 +-
.../grails/forge/api/preview/PreviewDTO.groovy} | 33 +-
.../grails/forge/web/ForgeRequestSupport.groovy | 187 +++++++
.../grails/forge/web/GroovyObjectJsonMixin.groovy} | 30 +-
.../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 +-
grails-geb/README.md | 18 +
.../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 +-
grails-skills/ai/build.gradle | 34 ++
.../ai/skills/grails-ai-developer/SKILL.md | 270 +++++++++
.../developer/skills/grails-developer/SKILL.md | 3 +
grails-spring-ai/build.gradle | 96 ++++
.../grails-app/conf/plugin.yml | 36 +-
.../apache/grails/ai/SpringAiGrailsPlugin.groovy | 57 ++
.../ai/async/ChatResponseStreamItemRenderer.groovy | 68 +++
...rk.boot.autoconfigure.AutoConfiguration.imports | 1 +
.../grails/ai/SpringAiAutoConfigurationSpec.groovy | 74 +++
.../grails/ai/SpringAiPluginDefaultsSpec.groovy | 57 ++
.../grails/ai/SpringAiPromptLoggingSpec.groovy | 89 +++
.../ChatResponseStreamItemRendererSpec.groovy | 75 +++
grails-spring-security/acl/plugin/build.gradle | 8 +-
grails-spring-security/plugin/build.gradle | 159 +++---
grails-test-examples/ai/build.gradle | 54 ++
.../ai/grails-app/conf/application.yml | 39 +-
.../{latency => ai}/grails-app/conf/logback.xml | 0
.../controllers/aiapp/ChatController.groovy | 23 +-
.../controllers/aiapp/StreamController.groovy | 71 +++
.../controllers/aiapp/UrlMappings.groovy | 12 +-
.../ai/grails-app/init/aiapp/Application.groovy | 16 +-
.../grails-app/services/aiapp/AnswerService.groovy | 42 +-
.../groovy/aiapp/AiDefaultsSpec.groovy | 80 +++
.../groovy/aiapp/ChatFunctionalSpec.groovy | 79 +++
.../groovy/aiapp/OwnChatModelFunctionalSpec.groovy | 60 ++
.../groovy/aiapp/OwnModelApplication.groovy | 56 ++
.../groovy/aiapp/StreamingFunctionalSpec.groovy | 84 +++
.../src/test/groovy/aiapp/AnswerServiceSpec.groovy | 35 +-
.../build.gradle | 42 +-
.../groovy/grails/testing/ai/AiUnitTest.groovy | 112 ++++
.../ai/AiStubEnvironmentPostProcessor.groovy | 115 ++++
.../grails/testing/ai/AiStubProperties.groovy | 49 ++
.../apache/grails/testing/ai/AiTestBeans.groovy | 96 ++++
.../testing/ai/AiTestingAutoConfiguration.groovy | 70 +++
.../AiTestingVectorStoreAutoConfiguration.groovy | 67 +++
.../testing/ai/ResettableSimpleVectorStore.groovy | 34 +-
.../grails/testing/ai/ScriptedChatModel.groovy | 165 ++++++
.../testing/ai/SimpleVectorStoreBeans.groovy | 59 ++
.../grails/testing/ai/StubEmbeddingModel.groovy | 129 +++++
.../testing/ai/spock/AiSetupInterceptor.groovy | 55 ++
.../testing/ai/spock/AiSetupSpecInterceptor.groovy | 46 ++
.../ai/spock/AiTestingSupportExtension.groovy | 47 ++
.../additional-spring-configuration-metadata.json | 21 +
...ockframework.runtime.extension.IGlobalExtension | 1 +
.../src/main/resources/META-INF/spring.factories | 13 +-
...rk.boot.autoconfigure.AutoConfiguration.imports | 2 +
.../testing/ai/AiUnitTestConfiguredSpec.groovy | 85 +++
.../testing/ai/AiUnitTestOwnBeansSpec.groovy | 97 ++++
.../groovy/grails/testing/ai/AiUnitTestSpec.groovy | 113 ++++
.../groovy/grails/testing/ai/AnswerService.groovy | 18 +-
.../ai/AiStubEnvironmentPostProcessorSpec.groovy | 162 ++++++
.../ai/AiTestingAutoConfigurationSpec.groovy | 222 ++++++++
.../grails/testing/ai/ScriptedChatModelSpec.groovy | 216 ++++++++
.../testing/ai/StubEmbeddingModelSpec.groovy | 154 ++++++
settings.gradle | 8 +
threat-model.yaml | 4 +-
781 files changed, 26211 insertions(+), 22092 deletions(-)
create mode 120000 .agents/skills/grails-ai-developer
create mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/BomDependencyGraph.groovy
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%)
copy grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/options/GormImplSpec.groovy => build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/BomDependencyGraphSpec.groovy (51%)
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
create mode 100644 grails-async/plugin/src/main/groovy/grails/async/web/StreamItemRenderer.groovy
copy grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/Relationship.java => grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/mvc/DefaultStreamItemRenderer.groovy (51%)
create mode 100644 grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/mvc/JacksonStreamItemRenderer.groovy
create mode 100644 grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/mvc/PublisherActionResultTransformer.groovy
create mode 100644 grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/mvc/ServerSentEventFormatter.groovy
create mode 100644 grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/mvc/ServerSentEventSubscriber.groovy
create mode 100644 grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/mvc/SingleValueSubscriber.groovy
create mode 100644 grails-async/plugin/src/main/resources/META-INF/additional-spring-configuration-metadata.json
create mode 100644 grails-async/plugin/src/test/groovy/org/grails/plugins/web/async/mvc/PublisherActionResultTransformerSpec.groovy
create mode 100644 grails-async/plugin/src/test/groovy/org/grails/plugins/web/async/mvc/ServerSentEventFormatterSpec.groovy
create mode 100644 grails-doc/src/en/guide/async/asyncStreaming.adoc
create mode 100644 grails-doc/src/en/guide/upgrading/upgrading81x.adoc
create mode 100644 grails-doc/src/en/guide/usingAi.adoc
create mode 100644 grails-doc/src/en/guide/usingAi/aiChatClient.adoc
create mode 100644 grails-doc/src/en/guide/usingAi/aiConfiguration.adoc
create mode 100644 grails-doc/src/en/guide/usingAi/aiInstallation.adoc
create mode 100644 grails-doc/src/en/guide/usingAi/aiProviders.adoc
create mode 100644 grails-doc/src/en/guide/usingAi/aiStreaming.adoc
create mode 100644 grails-doc/src/en/guide/usingAi/aiTesting.adoc
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/JdkVersionSelectOptions.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/LanguageSelectOptions.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%)
rename 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%)
copy 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
copy 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%)
copy grails-forge/{buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerGradleException.java => grails-forge-cli/src/testFixtures/groovy/org/grails/forge/cli/CliRunner.groovy} (61%)
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/job.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%)
copy 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/SpanishResourceBundleMessageSource.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
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/application/ProjectIdentifier.java => groovy/org/grails/forge/application/ProjectIdentifier.groovy} (67%)
copy grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/SpanishResourceBundleMessageSource.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/MyEventListener.groovy => grails-forge-core/src/main/groovy/org/grails/forge/application/WebAvailableFeatures.groovy} (65%)
copy grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/SpanishResourceBundleMessageSource.groovy => 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%)
copy 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%)
copy 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
create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/ai/SpringAiAnthropic.groovy
create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/ai/SpringAiOllama.groovy
create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/ai/SpringAiOpenAi.groovy
create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/feature/ai/SpringAiProviderFeature.groovy
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
copy 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/spring/SpringThreadingFeature.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
rename 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/logging/LoggingFeature.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%)
copy 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%)
copy 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%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/feature/lang/groovy/GrailsApplicationFeature.java => groovy/org/grails/forge/template/Writable.groovy} (82%)
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%)
copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/dependencies/CoordinateResolver.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/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
create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/ai/GrailsSpringAiSpec.groovy
rename grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/options/{TestRockerModelProviderSpec.groovy => TestViewProviderSpec.groovy} (83%)
copy 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%)
copy 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-core/src/main/java/org/grails/forge/feature/github/workflows/Secret.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
copy 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/SpanishResourceBundleMessageSource.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
rename grails-forge/{grails-forge-core/src/main/java/org/grails/forge/build/Comment.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/GormImplSelectOptions.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/build/BuildFeature.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/build/BuildFeature.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/build/BuildFeature.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/feature/FeaturePredicate.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/build/BuildFeature.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/{grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/TotalDTO.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
create mode 100644 grails-skills/ai/build.gradle
create mode 100644 grails-skills/ai/skills/grails-ai-developer/SKILL.md
create mode 100644 grails-spring-ai/build.gradle
copy grails-forge/grails-forge-web-netty/aws/start.sh => grails-spring-ai/grails-app/conf/plugin.yml (51%)
create mode 100644 grails-spring-ai/src/main/groovy/org/apache/grails/ai/SpringAiGrailsPlugin.groovy
create mode 100644 grails-spring-ai/src/main/groovy/org/apache/grails/ai/async/ChatResponseStreamItemRenderer.groovy
create mode 100644 grails-spring-ai/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 grails-spring-ai/src/test/groovy/org/apache/grails/ai/SpringAiAutoConfigurationSpec.groovy
create mode 100644 grails-spring-ai/src/test/groovy/org/apache/grails/ai/SpringAiPluginDefaultsSpec.groovy
create mode 100644 grails-spring-ai/src/test/groovy/org/apache/grails/ai/SpringAiPromptLoggingSpec.groovy
create mode 100644 grails-spring-ai/src/test/groovy/org/apache/grails/ai/async/ChatResponseStreamItemRendererSpec.groovy
create mode 100644 grails-test-examples/ai/build.gradle
rename grails-forge/grails-forge-web-netty/aws/start.sh => grails-test-examples/ai/grails-app/conf/application.yml (57%)
copy grails-test-examples/{latency => ai}/grails-app/conf/logback.xml (100%)
rename grails-forge/grails-forge-core/src/main/java/org/grails/forge/template/BinaryTemplate.java => grails-test-examples/ai/grails-app/controllers/aiapp/ChatController.groovy (69%)
create mode 100644 grails-test-examples/ai/grails-app/controllers/aiapp/StreamController.groovy
rename grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/dependencies/CoordinateResolver.java => grails-test-examples/ai/grails-app/controllers/aiapp/UrlMappings.groovy (83%)
rename grails-forge/grails-forge-core/src/main/java/org/grails/forge/template/Template.java => grails-test-examples/ai/grails-app/init/aiapp/Application.groovy (75%)
rename grails-forge/grails-forge-core/src/main/java/org/grails/forge/application/OperatingSystem.java => grails-test-examples/ai/grails-app/services/aiapp/AnswerService.groovy (51%)
create mode 100644 grails-test-examples/ai/src/integration-test/groovy/aiapp/AiDefaultsSpec.groovy
create mode 100644 grails-test-examples/ai/src/integration-test/groovy/aiapp/ChatFunctionalSpec.groovy
create mode 100644 grails-test-examples/ai/src/integration-test/groovy/aiapp/OwnChatModelFunctionalSpec.groovy
create mode 100644 grails-test-examples/ai/src/integration-test/groovy/aiapp/OwnModelApplication.groovy
create mode 100644 grails-test-examples/ai/src/integration-test/groovy/aiapp/StreamingFunctionalSpec.groovy
rename grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/GrailsForgeConfigurationSpec.groovy => grails-test-examples/ai/src/test/groovy/aiapp/AnswerServiceSpec.groovy (55%)
copy {grails-async/plugin => grails-testing-support-ai}/build.gradle (51%)
create mode 100644 grails-testing-support-ai/src/main/groovy/grails/testing/ai/AiUnitTest.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/AiStubEnvironmentPostProcessor.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/AiStubProperties.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/AiTestBeans.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/AiTestingAutoConfiguration.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/AiTestingVectorStoreAutoConfiguration.groovy
rename grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/event/ApplicationGeneratingEvent.java => grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/ResettableSimpleVectorStore.groovy (55%)
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/ScriptedChatModel.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/SimpleVectorStoreBeans.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/StubEmbeddingModel.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/spock/AiSetupInterceptor.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/spock/AiSetupSpecInterceptor.groovy
create mode 100644 grails-testing-support-ai/src/main/groovy/org/apache/grails/testing/ai/spock/AiTestingSupportExtension.groovy
create mode 100644 grails-testing-support-ai/src/main/resources/META-INF/additional-spring-configuration-metadata.json
create mode 100644 grails-testing-support-ai/src/main/resources/META-INF/services/org.spockframework.runtime.extension.IGlobalExtension
rename grails-forge/grails-forge-web-netty/aws/.platform/nginx/conf.d/proxy.conf => grails-testing-support-ai/src/main/resources/META-INF/spring.factories (67%)
create mode 100644 grails-testing-support-ai/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 grails-testing-support-ai/src/test/groovy/grails/testing/ai/AiUnitTestConfiguredSpec.groovy
create mode 100644 grails-testing-support-ai/src/test/groovy/grails/testing/ai/AiUnitTestOwnBeansSpec.groovy
create mode 100644 grails-testing-support-ai/src/test/groovy/grails/testing/ai/AiUnitTestSpec.groovy
rename grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerGradleException.java => grails-testing-support-ai/src/test/groovy/grails/testing/ai/AnswerService.groovy (71%)
create mode 100644 grails-testing-support-ai/src/test/groovy/org/apache/grails/testing/ai/AiStubEnvironmentPostProcessorSpec.groovy
create mode 100644 grails-testing-support-ai/src/test/groovy/org/apache/grails/testing/ai/AiTestingAutoConfigurationSpec.groovy
create mode 100644 grails-testing-support-ai/src/test/groovy/org/apache/grails/testing/ai/ScriptedChatModelSpec.groovy
create mode 100644 grails-testing-support-ai/src/test/groovy/org/apache/grails/testing/ai/StubEmbeddingModelSpec.groovy