You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/10/15 13:11:44 UTC
(grails-core) branch refactor/java-to-groovy-grails-converters updated (0ceee1c453 -> efd6ea9743)
This is an automated email from the ASF dual-hosted git repository.
borinquenkid pushed a change to branch refactor/java-to-groovy-grails-converters
in repository https://gitbox.apache.org/repos/asf/grails-core.git
from 0ceee1c453 Merge refactor/java-to-groovy-grails-web-common into refactor/java-to-groovy-grails-converters
add c303782388 feat: add app-level indy A/B benches to the performance workflow
add b8561d4662 refactor: replace the app-bench PowerShell runner with a Gradle task
add c17dc649c3 fix: address app-bench review feedback on stats, fixtures, and CI
add 40a862613f Merge branch '9.0.x' into feat/app-bench-ci
add bb53ead213 Merge branch '9.0.x' into feat/app-bench-ci
add 097a63b12e Merge branch '9.0.x' into feat/app-bench-ci
add 73c234f26e Keep StartupProgressSpec off ports held on the loopback address
add 144f6bbacd Merge branch '8.1.x' into 9.0.x
add bfa709384d Hibernate 7: name nested composite foreign key columns in the referenced key's order (#16539)
add c424313499 Hibernate 7: unique groups on enum and collection properties (#16533)
add 57582ce032 Use the Grails Develocity access key for the remote build cache
add 4b9a585205 Merge pull request #16613 from clayburn/ci/develocity-cache-access-key
add 92cb18fd46 Cache the Gradle User Home through setup-gradle instead of actions/cache
add 5a6bf2a9ad Merge pull request #16618 from apache/ci/gradle-enhanced-cache
add 7f2c45a767 Merge branch '8.0.x' into 8.1.x
add 72bfff21fc Merge branch '8.1.x' into 9.0.x
add 36d314efca Give StartupProgressSpec requests the time a slow CI runner needs
add bf9c215ace Merge branch '8.1.x' into 9.0.x
add a8535abace Add Groovy 6 groovy.concurrent async and events modules, deprecate GPars
add 2f777c7799 Remove author tags from files touched by the groovy.concurrent migration
add 8dc51e090e Merge pull request #16620 from jdaugherty/feat/groovy6-replace-gpars
add 8237828397 Build with Gradle 9.8.1
add 093d11297e Merge pull request #16623 from jdaugherty/deps/gradle-9.8.1
add e57bd1359a fix: preserve configuration snapshots when merging profile metadata
add 0aa7bf735f fix: support YAML profile expressions and multiple active profiles
add d6fd8ac1ee fix: handle blank YAML selectors and clarify Groovy profile semantics
add a643247dd2 fix: evaluate sequence-valued YAML profile selectors
add b92b61d8df fix: remove selected YAML profile selectors before Boot evaluates them
add 3ec69de7a2 Merge pull request #16547 from jdaugherty/fix/15840-config-merge-7.0.x
add c965fc4baa Build with Gradle 8.14.6
add dd59549883 Merge pull request #16622 from jdaugherty/deps/gradle-8.14.6
add 84f222b74d Merge branch '7.0.x' into 7.1.x
add 93bc170840 Merge branch '7.1.x' into 7.2.x
add b281fe6abf Merge branch '7.2.x' into 8.0.x
add 9fc21da6b2 Merge branch '8.0.x' into 8.1.x
add a3f835597a Merge branch '8.1.x' into 9.0.x
add 5822aa762b Merge remote-tracking branch 'upstream/9.0.x' into feat/app-bench-ci
add 37d722d079 Address review on the app indy benches
add 59ec5e6f34 Fold the app bench wiring into functional-test-config.gradle
add c647f93aae Align the app-bench setup-gradle step with the other benchmark jobs
add 780f9c72ff Give the app CPU ruler its own warm-up
add eb0d8572fd Raise the CI app bench profile to 2,000 warm-up and 2,000 samples
add 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
add e63c8a2540 Merge pull request #16169 from apache/feat/app-bench-ci
add 47b836c628 fix(hibernate7): bind each collection of an embedded entity with its own second pass
add fcee01ddfe test(hibernate7): cover the collection second passes of an embedded entity
add c2bc931199 test(hibernate7): fold the embedded hasMany spec into EmbeddedEntityCollectionKindsSpec
add 8b7b316af9 Merge pull request #16617 from apache/fix/hibernate7-embedded-hasmany-collection-8.0.x
add b13072430f Use the Grails Develocity access key for the remote build cache
add 0868ee4187 Cache the Gradle User Home through setup-gradle instead of actions/cache
add 33de4d48f0 Write the Gradle User Home cache from one core build job per OS
add 9ac5e38869 Merge pull request #16645 from jdaugherty/ci/gradle-cache-single-writer
add 947726325a Merge branch '7.0.x' into 7.1.x
add 47d4cef9fc Merge branch '7.1.x' into 7.2.x
add 77b8a0029f Merge branch '7.2.x' into 8.0.x
add 05c2d94df8 Merge branch '8.0.x' into 8.1.x
add 94fee3996c Merge branch '8.1.x' into 9.0.x
add d277b7f7e1 Write the Gradle cache only from the default branch's major and later
add ce6f680bce Decide Gradle cache writes in one shared action, and document the policy
add 45c8b99786 Merge branch '7.0.x' into 7.1.x
add 2adc3210d1 Merge branch '7.1.x' into 7.2.x
add de5a0802c5 Merge branch '7.2.x' into 8.0.x
add 1435057571 Save the mongod download only from the default branch
add 041f607fa5 Merge branch '8.0.x' into 8.1.x
add d989ce9032 Merge branch '8.1.x' into 9.0.x
add d750df3f2f Bring the local action along in the Groovy build's sparse checkout
add 0265f3dbee Merge branch '7.0.x' into 7.1.x
add cd63206df8 Merge branch '7.1.x' into 7.2.x
add a2c44f376f Merge branch '7.2.x' into 8.0.x
add 4876810dbb Bring the local action along in the Groovy canary's sparse checkout
add 4ec228da5f Merge branch '8.0.x' into 8.1.x
add c948a638d9 Merge branch '8.1.x' into 9.0.x
add ad785d574d Merge origin/9.0.x into refactor/java-to-groovy-build-tooling
add 2835e5c405 Merge sync9/refactor/java-to-groovy-build-tooling into refactor/java-to-groovy-core-leaves
add 9fc5eeecc4 Merge sync9/refactor/java-to-groovy-core-leaves into refactor/java-to-groovy-grails-bootstrap
add bb87840c62 Merge sync9/refactor/java-to-groovy-grails-bootstrap into refactor/java-to-groovy-grails-databinding-core
add 22524cdfbf Merge sync9/refactor/java-to-groovy-grails-databinding-core into refactor/java-to-groovy-grails-datastore-core
add a5d81b0e71 Merge sync9/refactor/java-to-groovy-grails-datastore-core into refactor/java-to-groovy-grails-spring
add 17ba83d2dd Merge sync9/refactor/java-to-groovy-grails-spring into refactor/java-to-groovy-grails-shell-cli
add 46c2ba3019 Merge branch 'sync9/refactor/java-to-groovy-grails-shell-cli' into sync9/refactor/java-to-groovy-grails-core
add d5a731725d Merge sync9/refactor/java-to-groovy-grails-core into refactor/java-to-groovy-datamapping-validation
add 8e4c3f9c44 Merge sync9/refactor/java-to-groovy-datamapping-validation into refactor/java-to-groovy-grails-datamapping-core
add cdfcacf08c Merge sync9/refactor/java-to-groovy-grails-datamapping-core into refactor/java-to-groovy-grails-encoder
add ba58d92b79 Merge sync9/refactor/java-to-groovy-grails-encoder into refactor/java-to-groovy-runtime-small
add cd7aba5e71 Merge sync9/refactor/java-to-groovy-runtime-small into refactor/java-to-groovy-datamapping-satellites
add 333269a806 Merge sync9/refactor/java-to-groovy-datamapping-satellites into refactor/java-to-groovy-grails-data-mongodb
add 77263facbd Merge sync9/refactor/java-to-groovy-grails-data-mongodb into refactor/java-to-groovy-grails-data-neo4j
add f37ba3088b Merge sync9/refactor/java-to-groovy-grails-data-neo4j into refactor/java-to-groovy-grails-taglib
add 1be2dbadd8 Merge branch 'sync9/refactor/java-to-groovy-grails-taglib' into sync9/refactor/java-to-groovy-grails-gsp-core
add a0eaf66ee7 Merge sync9/refactor/java-to-groovy-grails-gsp-core into refactor/java-to-groovy-grails-web-common
add efd6ea9743 Merge sync9/refactor/java-to-groovy-grails-web-common into refactor/java-to-groovy-grails-converters
No new revisions were added by this update.
Summary of changes:
.agents/skills/README.md | 1 +
.agents/skills/gradle-developer/SKILL.md | 31 +-
.agents/skills/grails-ai-developer | 1 +
.github/actions/gradle-cache-policy/action.yml | 57 ++
.github/dependency-graph/external-references.yml | 3 +
.../groovy-snapshot-canary-build.init.gradle | 3 +-
.github/workflows/benchmark.yml | 60 +-
.github/workflows/build-health.yml | 24 +-
.github/workflows/codeanalysis.yml | 16 +-
.github/workflows/codestyle.yml | 24 +-
.github/workflows/coverage.yml | 16 +-
.github/workflows/end-to-end.yml | 20 +-
.github/workflows/forge-deploy-aws.yml | 11 +-
.github/workflows/gradle.yml | 461 +++++----------
.github/workflows/groovy-snapshot-canary.yml | 51 +-
.github/workflows/rat.yml | 8 +-
.github/workflows/release-publish-docs.yml | 8 +-
.github/workflows/release.yml | 16 +-
.github/workflows/sitemesh2.yml | 16 +-
.github/workflows/validate-actions.yml | 8 +-
.github/workflows/vulnerability-scan.yml | 14 +-
.gitignore | 4 +
.sdkmanrc | 2 +-
AGENTS.md | 23 +-
RELEASE.md | 4 +-
THREAT_MODEL.md | 6 +-
build-logic/gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
.../gradle/wrapper/gradle-wrapper.properties | 4 +-
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-logic/settings.gradle | 4 +-
build.gradle | 13 +-
dependencies.gradle | 25 +
end-to-end/README.md | 2 +-
end-to-end/agent-skills-plain-build/build.gradle | 1 +
end-to-end/agent-skills/build.gradle | 1 +
.../grails/e2e/skills/AgentSkillsSpec.groovy | 1 +
end-to-end/gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
.../gradle/wrapper/gradle-wrapper.properties | 2 +-
end-to-end/legacy-g7-command-plugin/.sdkmanrc | 4 +-
.../gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
.../gradle/wrapper/gradle-wrapper.properties | 2 +-
.../legacy-g7-command-plugin/settings.gradle | 4 +-
end-to-end/settings.gradle | 4 +-
gradle.properties | 6 +-
gradle/docs-dependencies.gradle | 6 +
gradle/functional-test-config.gradle | 27 +
gradle/publish-root-config.gradle | 4 +
gradle/rat-root-config.gradle | 2 +-
gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
gradle/wrapper/gradle-wrapper.properties | 4 +-
grails-async/README.adoc | 2 +-
.../grails/async/factory/gpars/GparsPromise.groovy | 4 +-
.../async/factory/gpars/GparsPromiseFactory.groovy | 14 +-
.../async/factory/gpars/LoggingPoolFactory.groovy | 3 +-
.../groovy/grails/async/GparsPromiseSpec.groovy | 11 +-
.../{plugin => groovy-concurrent}/build.gradle | 22 +-
.../async/factory/groovy/AwaitablePromise.groovy | 160 ++++++
.../factory/groovy/AwaitablePromiseFactory.groovy | 186 +++++++
.../META-INF/services/grails.async.PromiseFactory | 1 +
.../groovy/AwaitablePromiseFactorySpec.groovy | 473 ++++++++++++++++
grails-async/plugin/build.gradle | 6 +
.../grails/async/web/StreamItemRenderer.groovy | 41 ++
.../web/async/ControllersAsyncGrailsPlugin.groovy | 53 +-
.../web/async/mvc/DefaultStreamItemRenderer.groovy | 46 +-
.../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 +++++
.../groovy/org/grails/config/NavigableMap.groovy | 49 --
.../groovy/grails/config/NavigableMapSpec.groovy | 21 +
.../grails/config/SpringProfileExcludeSpec.groovy | 173 ------
...railsConcurrentLinkedMapCacheManagerSpec.groovy | 97 ++++
...ailsConcurrentLinkedMapCacheManagerTests.groovy | 101 ----
.../GrailsConcurrentMapCacheManagerSpec.groovy | 97 ++++
.../GrailsConcurrentMapCacheManagerTests.groovy | 101 ----
.../config/yaml/YamlPropertySourceLoader.groovy | 63 ++-
.../grails/boot/GrailsAppYamlProfileSpec.groovy | 100 ++++
.../config/PropertySourcesConfigReloadSpec.groovy | 220 ++++++++
.../config/YamlPropertySourceLoaderSpec.groovy | 23 +
.../org/grails/config/YamlSpringProfileSpec.groovy | 463 ++++++++++++++++
.../GroovyConfigPropertySourceLoaderSpec.groovy | 50 ++
.../cfg/domainbinding/binder/CollectionBinder.java | 6 +-
.../CompositeIdentifierToManyToOneBinder.java | 95 +++-
.../cfg/domainbinding/binder/EnumTypeBinder.java | 20 +
.../domainbinding/binder/GrailsDomainBinder.java | 1 +
.../domainbinding/binder/GrailsPropertyBinder.java | 5 +-
.../hibernate/GrailsHibernatePersistentEntity.java | 59 +-
.../hibernate/HibernateToManyProperty.java | 15 +
.../secondpass/BidirectionalOneToManyLinker.java | 11 +-
.../secondpass/CompositeForeignKeySecondPass.java | 67 +++
.../domainbinding/secondpass/ListSecondPass.java | 13 +
.../domainbinding/secondpass/MapSecondPass.java | 13 +
.../domainbinding/secondpass/SetSecondPass.java | 13 +
.../cfg/domainbinding/util/CreateKeyForProps.java | 8 +
.../util/PropertyFromValueCreator.java | 18 +-
.../orm/hibernate/query/HqlQueryContext.java | 97 +++-
.../tests/EmbeddedEntityCollectionKindsSpec.groovy | 111 ++++
.../tests/UniqueGroupEnumAndCollectionSpec.groovy | 302 ++++++++++
.../hibernate/HibernateGormStaticApiSpec.groovy | 71 +++
.../cfg/domainbinding/CollectionBinderSpec.groovy | 70 ++-
...CompositeIdentifierToManyToOneBinderSpec.groovy | 86 ++-
.../cfg/domainbinding/CreateKeyForPropsSpec.groovy | 77 +++
.../cfg/domainbinding/EnumTypeBinderSpec.groovy | 20 +
.../domainbinding/GrailsPropertyBinderSpec.groovy | 1 +
.../PropertyFromValueCreatorSpec.groovy | 32 ++
.../CompositeForeignKeyColumnTypesSpec.groovy | 422 ++++++++++++++
...CompositeForeignKeyRegistrationOrderSpec.groovy | 225 ++++++++
.../domainbinding/binder/ForeignKeyPairs.groovy | 55 ++
...verseHasManyCompositeIdentifierOrderSpec.groovy | 109 ++++
.../BidirectionalOneToManyLinkerSpec.groovy | 4 +
.../secondpass/CollectionKeyBinderSpec.groovy | 2 +-
.../secondpass/ListSecondPassBinderSpec.groovy | 2 +-
.../secondpass/MapSecondPassBinderSpec.groovy | 2 +-
.../orm/hibernate/query/HqlQueryContextSpec.groovy | 94 ++++
grails-data-neo4j/core/build.gradle | 1 -
.../test/groovy/grails/gorm/tests/MiscSpec.groovy | 8 +-
grails-doc/build.gradle | 14 +-
grails-doc/src/en/guide/async.adoc | 3 +-
grails-doc/src/en/guide/async/asyncPromises.adoc | 12 +-
grails-doc/src/en/guide/async/asyncStreaming.adoc | 110 ++++
grails-doc/src/en/guide/async/events.adoc | 10 +-
.../src/en/guide/async/events/asyncConfigure.adoc | 4 +-
.../guide/async/rxjava/asyncServerSentEvents.adoc | 2 +
.../src/en/guide/commandLine/creatingProject.adoc | 2 +-
.../src/en/guide/commandLine/interactiveMode.adoc | 10 +-
grails-doc/src/en/guide/conf/config.adoc | 31 ++
.../src/en/guide/gettingStarted/agentSkills.adoc | 3 +
grails-doc/src/en/guide/introduction.adoc | 2 +-
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 | 11 +
.../src/en/guide/upgrading/upgrading81x.adoc | 53 ++
.../src/en/guide/upgrading/upgrading90x.adoc | 48 ++
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 +
.../events/bus/spring/EventBusFactoryBean.groovy | 15 +-
.../grails/events/TaskExecuterEventBusSpec.groovy | 40 ++
.../org/grails/events/gpars/ActorEventBus.groovy | 14 +-
.../grails/events/gpars/ActorEventBusSpec.groovy | 6 +
.../groovy-concurrent}/build.gradle | 23 +-
.../org/grails/events/groovy/ActorEventBus.groovy | 103 ++++
.../META-INF/services/grails.events.bus.EventBus | 1 +
.../grails/events/groovy/ActorEventBusSpec.groovy | 215 +++++++
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 +-
grails-forge/gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
.../gradle/wrapper/gradle-wrapper.properties | 4 +-
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} | 25 +-
grails-forge/grails-forge-core/build.gradle | 80 +--
.../asciidoctor/template/asciidocGradle.gsp} | 17 +-
.../feature/asciidoctor/template/indexAdoc.gsp} | 8 +-
.../views/forge/feature/build/gitignore.gsp} | 6 +-
.../feature/build/gradle/templates/buildGradle.gsp | 140 +++++
.../gradle/templates/buildSrcBuildGradle.gsp} | 56 +-
.../build/gradle/templates/dependencies.gsp} | 34 +-
.../build/gradle/templates/gradleProperties.gsp} | 38 +-
.../gradle/templates/gradleWrapperProperties.gsp} | 35 +-
.../build/gradle/templates/settingsGradle.gsp} | 43 +-
.../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} | 38 +-
.../forge/feature/security/template/role.gsp} | 18 +-
.../template/securityApplicationGroovy.gsp} | 31 +-
.../forge/feature/security/template/user.gsp} | 26 +-
.../feature/security/template/userClassic.gsp} | 28 +-
.../security/template/userClassicService.gsp} | 16 +-
.../feature/security/template/userClassicSpec.gsp} | 14 +-
.../feature/security/template/userController.gsp} | 16 +-
.../forge/feature/security/template/userRole.gsp} | 20 +-
.../feature/security/template/userService.gsp} | 20 +-
.../forge/feature/security/template/userSpec.gsp} | 14 +-
.../feature/spring/template/springResources.gsp} | 6 +-
.../feature/test/template/containerGebSpec.gsp} | 25 +-
.../forge/feature/test/template/gebConfig.gsp} | 14 +-
.../views/forge/feature/test/template/gebSpec.gsp} | 25 +-
.../forge/feature/view/json/templates/_errors.gsp} | 6 +-
.../forge/feature/view/json/templates/_object.gsp} | 8 +-
.../forge/feature/view/json/templates/error.gsp} | 6 +-
.../forge/feature/view/json/templates/index.gsp} | 6 +-
.../feature/view/json/templates/notFound.gsp} | 6 +-
.../feature/view/markup/templates/_errors.gsp} | 6 +-
.../feature/view/markup/templates/_object.gsp} | 8 +-
.../forge/feature/view/markup/templates/error.gsp} | 6 +-
.../forge/feature/view/markup/templates/index.gsp} | 6 +-
.../feature/view/markup/templates/notFound.gsp} | 6 +-
.../views/forge/template/api/grailsForgeApi.gsp} | 37 +-
.../org/grails/forge/ForgeCoreConfiguration.groovy | 50 ++
.../org/grails/forge/ForgeGrailsPlugin.groovy | 49 ++
.../forge/application/ApplicationType.groovy} | 44 +-
.../forge/application/ContextFactory.groovy} | 131 +++--
.../forge/application/OperatingSystem.groovy} | 27 +-
.../application/PluginAvailableFeatures.groovy} | 23 +-
.../org/grails/forge/application/Project.groovy | 93 ++++
.../forge/application/ProjectIdentifier.groovy} | 28 +-
.../application/RestApiAvailableFeatures.groovy} | 23 +-
.../forge/application/WebAvailableFeatures.groovy} | 20 +-
.../application/WebPluginAvailableFeatures.groovy} | 29 +-
.../generator/DefaultProjectGenerator.groovy} | 103 ++--
.../application/generator/GeneratorContext.groovy | 397 +++++++++++++
.../application/generator/ProjectGenerator.groovy} | 30 +-
.../org/grails/forge/build/BuildPlugin.groovy} | 28 +-
.../org/grails/forge/build/BuildProperties.groovy} | 36 +-
.../org/grails/forge/build/Comment.groovy} | 15 +-
.../org/grails/forge/build/Property.groovy} | 15 +-
.../forge/build/dependencies/Coordinate.groovy} | 45 +-
.../build/dependencies/CoordinateResolver.groovy} | 10 +-
.../dependencies/DefaultCoordinateResolver.groovy} | 32 +-
.../forge/build/dependencies/Dependency.groovy | 393 +++++++++++++
.../build/dependencies/DependencyContext.groovy} | 41 +-
.../build/dependencies/DependencyCoordinate.groovy | 120 ++++
.../dependencies/LookupFailedException.groovy} | 12 +-
.../grails/forge/build/dependencies/Phase.groovy} | 8 +-
.../PomDependencyVersionResolver.groovy | 150 +++++
.../grails/forge/build/dependencies/Scope.groovy} | 97 ++--
.../grails/forge/build/dependencies/Source.groovy} | 8 +-
.../build/gradle/DefaultGradleRepository.groovy | 141 +++++
.../grails/forge/build/gradle/GradleBuild.groovy | 162 ++++++
.../forge/build/gradle/GradleBuildCreator.groovy} | 58 +-
.../forge/build/gradle/GradleConfiguration.groovy} | 134 ++---
.../forge/build/gradle/GradleDependency.groovy | 123 +++++
.../grails/forge/build/gradle/GradleDsl.groovy} | 8 +-
.../grails/forge/build/gradle/GradlePlugin.groovy | 256 +++++++++
.../forge/build/gradle/GradleRepository.groovy} | 97 ++--
.../build/gradle/MavenCentralRepository.groovy} | 25 +-
.../build/gradle/MavenLocalRepository.groovy} | 25 +-
.../build/gradle/VersionRegexRepoFilter.groovy | 56 ++
.../grails/forge/build/gradle/VersionType.groovy} | 8 +-
.../grails/forge/defaults/HasDefaultBuild.groovy} | 11 +-
.../HasDefaultDevelopmentReloading.groovy} | 12 +-
.../grails/forge/defaults/IncludesDefaults.groovy} | 10 +-
.../grails/forge/defaults/LanguageDefaults.groovy} | 32 +-
.../org/grails/forge/diff/FeatureDiffer.groovy} | 114 ++--
.../forge/feature/ApplicationFeature.groovy} | 14 +-
.../grails/forge/feature/AvailableFeatures.groovy} | 20 +-
.../forge/feature/BaseAvailableFeatures.groovy | 88 +++
.../org/grails/forge/feature/Category.groovy | 65 +++
.../grails/forge/feature/DefaultFeature.groovy} | 14 +-
.../org/grails/forge/feature/Feature.groovy} | 50 +-
.../org/grails/forge/feature/FeatureContext.groovy | 133 +++++
.../org/grails/forge/feature/FeaturePhase.groovy} | 17 +-
.../grails/forge/feature/FeaturePredicate.groovy} | 11 +-
.../grails/forge/feature/FeatureRegistry.groovy | 94 ++++
.../org/grails/forge/feature/Features.groovy | 134 +++++
.../org/grails/forge/feature/OneOfFeature.groovy} | 10 +-
.../grails/forge/feature/ai/GrailsSpringAi.groovy | 87 +++
.../forge/feature/ai/SpringAiAnthropic.groovy | 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 | 16 +-
.../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} | 19 +-
.../groovy/org/grails/forge/api/GormImplDTO.groovy | 98 ++++
.../forge/api/GrailsForgeConfiguration.groovy} | 78 ++-
.../org/grails/forge/api/JdkVersionDTO.groovy | 97 ++++
.../groovy/org/grails/forge/api/LanguageDTO.groovy | 109 ++++
.../groovy/org/grails/forge/api/LinkDTO.groovy} | 40 +-
.../groovy/org/grails/forge/api/Linkable.groovy} | 34 +-
.../org/grails/forge/api/Relationship.groovy} | 35 +-
.../groovy/org/grails/forge/api/RequestInfo.groovy | 78 +++
.../org/grails/forge/api/SelectOptionDTO.groovy} | 39 +-
.../org/grails/forge/api/SelectOptionsDTO.groovy} | 150 +++--
.../groovy/org/grails/forge/api/Selectable.groovy} | 14 +-
.../org/grails/forge/api/ServletImplDTO.groovy | 86 +++
.../org/grails/forge/api/UserAgentParser.groovy} | 39 +-
.../groovy/org/grails/forge/api/VersionDTO.groovy} | 34 +-
.../forge/api/create/CreateProjectService.groovy | 88 +++
.../options/ApplicationTypeSelectOptions.groovy} | 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} | 14 +-
.../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 | 12 +-
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 +
grails-gradle/gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
.../gradle/wrapper/gradle-wrapper.properties | 4 +-
.../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 +
grails-gradle/settings.gradle | 4 +-
.../grails/gsp/compiler/GroovyPageParser.groovy | 17 +-
.../org/grails/gsp/compiler/LogicLineTrimmer.java | 234 ++++++++
.../org/grails/gsp/GspTrimLogicLinesSpec.groovy | 299 ++++++++++
.../skeleton/gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
.../gradle/wrapper/gradle-wrapper.properties | 4 +-
.../skeleton/gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
.../gradle/wrapper/gradle-wrapper.properties | 4 +-
.../gradle/wrapper/gradle-wrapper.jar | Bin 47623 -> 48749 bytes
.../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 +
.../skills/grails-8-upgrade/SKILL.md | 2 +-
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/startup/StartupProgressSpec.groovy | 40 +-
grails-test-examples/{latency => ai}/build.gradle | 18 +-
.../ai/grails-app/conf/application.yml | 39 +-
.../{latency => ai}/grails-app/conf/logback.xml | 0
.../controllers/aiapp/ChatController.groovy | 28 +-
.../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 +-
grails-test-examples/app1/build.gradle | 1 +
.../AppBenchInterceptorDemoSpec.groovy | 40 +-
grails-test-examples/benchmarks/README.adoc | 35 ++
grails-test-examples/benchmarks/build.gradle | 25 +
.../grails/benchmarks/report/AppIndyBench.groovy | 340 ++++++++++++
.../benchmarks/report/AppIndyBenchSpec.groovy | 279 ++++++++++
.../externalconfig/ExternalConfigSpec.groovy | 31 ++
grails-test-examples/gsp-layout/build.gradle | 2 +
.../layout/AppBenchDemoRenderTextSpec.groovy | 41 +-
grails-test-examples/latency/build.gradle | 1 +
.../groovy/latencyapp/AppBenchFastPingSpec.groovy | 41 +-
.../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 ++++++
grails-testing-support-http-client/build.gradle | 4 +
.../http/client/bench/AppHttpBenchSpec.groovy | 211 +++++++
.../testing/http/client/bench/AppHttpBench.groovy | 352 ++++++++++++
settings.gradle | 16 +-
threat-model.yaml | 4 +-
903 files changed, 32355 insertions(+), 23118 deletions(-)
create mode 120000 .agents/skills/grails-ai-developer
create mode 100644 .github/actions/gradle-cache-policy/action.yml
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
copy grails-async/{plugin => groovy-concurrent}/build.gradle (62%)
create mode 100644 grails-async/groovy-concurrent/src/main/groovy/org/grails/async/factory/groovy/AwaitablePromise.groovy
create mode 100644 grails-async/groovy-concurrent/src/main/groovy/org/grails/async/factory/groovy/AwaitablePromiseFactory.groovy
create mode 100644 grails-async/groovy-concurrent/src/main/resources/META-INF/services/grails.async.PromiseFactory
create mode 100644 grails-async/groovy-concurrent/src/test/groovy/org/grails/async/factory/groovy/AwaitablePromiseFactorySpec.groovy
create mode 100644 grails-async/plugin/src/main/groovy/grails/async/web/StreamItemRenderer.groovy
copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/github/workflows/GitHubWorkflowFeature.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
delete mode 100644 grails-bootstrap/src/test/groovy/grails/config/SpringProfileExcludeSpec.groovy
create mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/GrailsConcurrentLinkedMapCacheManagerSpec.groovy
delete mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/GrailsConcurrentLinkedMapCacheManagerTests.groovy
create mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/GrailsConcurrentMapCacheManagerSpec.groovy
delete mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/GrailsConcurrentMapCacheManagerTests.groovy
create mode 100644 grails-core/src/test/groovy/grails/boot/GrailsAppYamlProfileSpec.groovy
create mode 100644 grails-core/src/test/groovy/org/grails/config/PropertySourcesConfigReloadSpec.groovy
create mode 100644 grails-core/src/test/groovy/org/grails/config/YamlSpringProfileSpec.groovy
create mode 100644 grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CompositeForeignKeySecondPass.java
create mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/EmbeddedEntityCollectionKindsSpec.groovy
create mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/UniqueGroupEnumAndCollectionSpec.groovy
create mode 100644 grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeForeignKeyColumnTypesSpec.groovy
create mode 100644 grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeForeignKeyRegistrationOrderSpec.groovy
create mode 100644 grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ForeignKeyPairs.groovy
create mode 100644 grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/InverseHasManyCompositeIdentifierOrderSpec.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/upgrading/upgrading90x.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
copy {grails-async/plugin => grails-events/groovy-concurrent}/build.gradle (62%)
create mode 100644 grails-events/groovy-concurrent/src/main/groovy/org/grails/events/groovy/ActorEventBus.groovy
create mode 100644 grails-events/groovy-concurrent/src/main/resources/META-INF/services/grails.events.bus.EventBus
create mode 100644 grails-events/groovy-concurrent/src/test/groovy/org/grails/events/groovy/ActorEventBusSpec.groovy
delete mode 100644 grails-forge/.gitattributes
delete mode 100644 grails-forge/.gitignore
delete mode 100644 grails-forge/buildSrc/build.gradle
delete mode 100644 grails-forge/buildSrc/settings.gradle
delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/JavaGeneratorRunnable.java
delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerConfiguration.java
delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerPlugin.java
delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerSourceSetProperty.java
delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/RockerTask.java
delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/TemplateDirectorySet.java
delete mode 100644 grails-forge/buildSrc/src/main/java/org/grails/forge/rocker/plugin/WhitespaceProcessor.java
delete mode 100644 grails-forge/config/checkstyle/checkstyle.xml
delete mode 100644 grails-forge/config/spotless.license.java
delete mode 100644 grails-forge/docs/choose-postgresql.png
delete mode 100644 grails-forge/docs/cloud_sql_create_intance.png
delete mode 100644 grails-forge/docs/create-database.png
delete mode 100644 grails-forge/docs/create-two-databases.png
delete mode 100644 grails-forge/docs/dbinstance-options.png
delete mode 100644 grails-forge/docs/enable-cloud-sql-admin-api.png
delete mode 100644 grails-forge/docs/enable-compute-engine-api.png
delete mode 100755 grails-forge/etc/bin/generate-build-artifact-hashes.groovy
delete mode 100755 grails-forge/etc/bin/test-reproducible-builds.sh
delete mode 100644 grails-forge/gradle/code-style-config.gradle
delete mode 100644 grails-forge/gradle/groovy-version-pin.gradle
delete mode 100644 grails-forge/gradle/micronaut-openapi-config.gradle
delete mode 100644 grails-forge/grails-forge-analytics-postgres/build.gradle
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/AnalyticsController.java
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/Application.java
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/ApplicationRepository.java
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/Feature.java
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/FeatureRepository.java
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/Main.java
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/gcp/GoogleCloudSqlSetup.java
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/META-INF/native-image/io.micronaut.starter/micronaut-starter-analytics-postgres/native-image.properties
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/application-dev.yml
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/application.yml
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/databasemigrations/V1__schema.sql
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/main/resources/logback.xml
delete mode 100644 grails-forge/grails-forge-analytics-postgres/src/test/groovy/org/grails/forge/analytics/postgres/StoreGeneratedProjectStatsSpec.groovy
delete mode 100644 grails-forge/grails-forge-api/build.gradle
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/ApplicationController.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/ApplicationTypeDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/ApplicationTypeOperations.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/DevelopmentReloading.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/DevelopmentReloadingDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/FeatureDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/FeatureService.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/GormImplDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/JdkVersionDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/LanguageDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/LinkDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/RequestInfo.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/SelectOptionDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/ServletImplDTO.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/analytics/GenerationListener.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/bind/RequestInfoArgumentBinder.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/AbstractCreateController.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/zip/ZipCreateController.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/zip/ZipCreateOperation.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/diff/DiffController.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/diff/DiffOperations.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/ApplicationTypeSelectOptions.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/DevelopmentReloadingSelectOptions.java
delete mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/options/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
copy 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%)
copy 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%)
rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/domainSpec.rocker.raw => grails-app/views/forge/cli/command/templates/domainSpec.gsp} (69%)
copy grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/interceptor.rocker.raw => grails-app/views/forge/cli/command/templates/interceptor.gsp} (74%)
rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/interceptorSpec.rocker.raw => grails-app/views/forge/cli/command/templates/interceptorSpec.gsp} (67%)
rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/job.rocker.raw => grails-app/views/forge/cli/command/templates/job.gsp} (76%)
rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/service.rocker.raw => grails-app/views/forge/cli/command/templates/service.gsp} (73%)
rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/serviceSpec.rocker.raw => grails-app/views/forge/cli/command/templates/serviceSpec.gsp} (71%)
rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/taglib.rocker.raw => grails-app/views/forge/cli/command/templates/taglib.gsp} (73%)
rename grails-forge/grails-forge-cli/{src/main/java/org/grails/forge/cli/command/templates/taglibSpec.rocker.raw => grails-app/views/forge/cli/command/templates/taglibSpec.gsp} (71%)
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/CodeGenConfig.groovy
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/CommonOptionsMixin.java => groovy/org/grails/forge/cli/CommonOptionsMixin.groovy} (64%)
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/ForgeCli.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/ForgeCommand.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/GrailsPicocliFactory.groovy
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/InteractiveShell.java => groovy/org/grails/forge/cli/InteractiveShell.groovy} (60%)
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/AddPropertyCommand.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/BaseCommand.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CodeGenCommand.groovy
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreateAppCommand.java => groovy/org/grails/forge/cli/command/CreateAppCommand.groovy} (52%)
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateCommand.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateControllerCommand.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateDomainClassCommand.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateInterceptorCommand.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateJobCommand.groovy
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreatePluginCommand.java => groovy/org/grails/forge/cli/command/CreatePluginCommand.groovy} (51%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreateRestApiCommand.java => groovy/org/grails/forge/cli/command/CreateRestApiCommand.groovy} (51%)
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateServiceCommand.groovy
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/CreateTagLibCommand.groovy
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreateWebPluginCommand.java => groovy/org/grails/forge/cli/command/CreateWebPluginCommand.groovy} (51%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/CreateWebappCommand.java => groovy/org/grails/forge/cli/command/CreateWebappCommand.groovy} (52%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/DevelopmentReloadingCandidates.java => groovy/org/grails/forge/cli/command/DevelopmentReloadingCandidates.groovy} (74%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/DevelopmentReloadingConverter.java => groovy/org/grails/forge/cli/command/DevelopmentReloadingConverter.groovy} (70%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/GormImplCandidates.java => groovy/org/grails/forge/cli/command/GormImplCandidates.groovy} (73%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/GormImplConverter.java => groovy/org/grails/forge/cli/command/GormImplConverter.groovy} (63%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/LanguageCandidates.java => groovy/org/grails/forge/cli/command/LanguageCandidates.groovy} (73%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/LanguageConverter.java => groovy/org/grails/forge/cli/command/LanguageConverter.groovy} (69%)
create mode 100644 grails-forge/grails-forge-cli/src/main/groovy/org/grails/forge/cli/command/ListFeatures.groovy
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/ServletImplCandidates.java => groovy/org/grails/forge/cli/command/ServletImplCandidates.groovy} (72%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/command/ServletImplConverter.java => groovy/org/grails/forge/cli/command/ServletImplConverter.groovy} (67%)
rename grails-forge/grails-forge-cli/src/main/{java/org/grails/forge/cli/util/GrailsVersionProvider.java => groovy/org/grails/forge/cli/util/GrailsVersionProvider.groovy} (72%)
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/Application.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/CodeGenConfig.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/GrailsPicocliFactory.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/AddPropertyCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/BaseCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CodeGenCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateControllerCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateDomainClassCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateInterceptorCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateJobCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateServiceCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/CreateTagLibCommand.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/java/org/grails/forge/cli/command/ListFeatures.java
delete mode 100644 grails-forge/grails-forge-cli/src/main/resources/META-INF/native-image/org.grails.forge.cli/grails-forge-cli/native-image.properties
delete mode 100644 grails-forge/grails-forge-cli/src/main/resources/META-INF/native-image/org.grails.forge.cli/grails-forge-cli/resource-config.json
create mode 100644 grails-forge/grails-forge-cli/src/main/resources/simplelogger.properties
create mode 100644 grails-forge/grails-forge-cli/src/test/groovy/org/grails/forge/cli/ApplicationSpec.groovy
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%)
rename grails-forge/{grails-forge-core/src/main/java/org/grails/forge/application/ProjectIdentifier.java => grails-forge-cli/src/testFixtures/groovy/org/grails/forge/cli/CliRunner.groovy} (60%)
rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/asciidoctor/template/asciidocGradle.rocker.raw => grails-app/views/forge/feature/asciidoctor/template/asciidocGradle.gsp} (86%)
rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/asciidoctor/template/indexAdoc.rocker.raw => grails-app/views/forge/feature/asciidoctor/template/indexAdoc.gsp} (94%)
rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/build/gitignore.rocker.raw => grails-app/views/forge/feature/build/gitignore.gsp} (95%)
create mode 100644 grails-forge/grails-forge-core/grails-app/views/forge/feature/build/gradle/templates/buildGradle.gsp
rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/build/gradle/templates/buildSrcBuildGradle.rocker.raw => grails-app/views/forge/feature/build/gradle/templates/buildSrcBuildGradle.gsp} (56%)
rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/build/gradle/templates/dependencies.rocker.raw => grails-app/views/forge/feature/build/gradle/templates/dependencies.gsp} (54%)
rename grails-forge/{grails-forge-cli/src/main/java/org/grails/forge/cli/command/templates/interceptor.rocker.raw => grails-forge-core/grails-app/views/forge/feature/build/gradle/templates/gradleProperties.gsp} (67%)
rename grails-forge/grails-forge-core/{src/main/java/org/grails/forge/feature/build/gradle/templates/gradleWrapperProperties.rocker.raw => grails-app/views/forge/feature/build/gradle/templates/gradleWrapperProperties.gsp} (54%)
rename grails-forge/{grails-forge-cli/src/main/java/org/grails/forge/cli/command/templates/controllerSpec.rocker.raw => 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/controller.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/MyEventListener.groovy => grails-forge-core/src/main/groovy/org/grails/forge/application/PluginAvailableFeatures.groovy} (64%)
create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/application/Project.groovy
copy grails-forge/{grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/TotalDTO.java => grails-forge-core/src/main/groovy/org/grails/forge/application/ProjectIdentifier.groovy} (67%)
copy grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/MyEventListener.groovy => grails-forge-core/src/main/groovy/org/grails/forge/application/RestApiAvailableFeatures.groovy} (64%)
rename grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/SpanishResourceBundleMessageSource.groovy => grails-forge-core/src/main/groovy/org/grails/forge/application/WebAvailableFeatures.groovy} (65%)
rename grails-forge/{grails-forge-analytics-postgres/src/main/java/org/grails/forge/analytics/postgres/TotalDTO.java => grails-forge-core/src/main/groovy/org/grails/forge/application/WebPluginAvailableFeatures.groovy} (64%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/application/generator/DefaultProjectGenerator.java => groovy/org/grails/forge/application/generator/DefaultProjectGenerator.groovy} (50%)
create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/application/generator/GeneratorContext.groovy
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/application/generator/ProjectGenerator.java => groovy/org/grails/forge/application/generator/ProjectGenerator.groovy} (67%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/BuildPlugin.java => groovy/org/grails/forge/build/BuildPlugin.groovy} (60%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/build/BuildProperties.java => groovy/org/grails/forge/build/BuildProperties.groovy} (62%)
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
copy 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/cache/CacheFeature.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/migration/MigrationFeature.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
copy grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/ServletImpl.java => groovy/org/grails/forge/options/ServletImpl.groovy} (61%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/TestFramework.java => groovy/org/grails/forge/options/TestFramework.groovy} (54%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/options/TestRockerModelProvider.java => groovy/org/grails/forge/options/TestViewProvider.groovy} (66%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/BinaryTemplate.java => groovy/org/grails/forge/template/BinaryTemplate.groovy} (71%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/Config4kTemplate.java => groovy/org/grails/forge/template/Config4kTemplate.groovy} (59%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/DefaultTemplateRenderer.java => groovy/org/grails/forge/template/DefaultTemplateRenderer.groovy} (51%)
create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/template/ForgePages.groovy
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/RockerTemplate.java => groovy/org/grails/forge/template/GspTemplate.groovy} (53%)
create mode 100644 grails-forge/grails-forge-core/src/main/groovy/org/grails/forge/template/GspView.groovy
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/PropertiesTemplate.java => groovy/org/grails/forge/template/PropertiesTemplate.groovy} (50%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/RenderResult.java => groovy/org/grails/forge/template/RenderResult.groovy} (60%)
rename grails-forge/grails-forge-core/src/main/{java/org/grails/forge/template/StringTemplate.java => groovy/org/grails/forge/template/StringTemplate.groovy} (65%)
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
copy grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/options/{TestRockerModelProviderSpec.groovy => TestViewProviderSpec.groovy} (83%)
rename grails-forge/grails-forge-core/src/{main/java/org/grails/forge/feature/github/workflows/Secret.java => test/groovy/org/grails/forge/plugintest/ForgePluginTestApplication.groovy} (54%)
delete mode 100644 grails-forge/grails-forge-web-netty/build.gradle
delete mode 100644 grails-forge/grails-forge-web-netty/src/main/java/org/grails/forge/netty/Application.java
delete mode 100644 grails-forge/grails-forge-web-netty/src/main/java/org/grails/forge/netty/analytics/AnalyticsClient.java
delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/META-INF/native-image/org.grails.forge/grails-forge-web-netty/native-image.properties
delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/META-INF/native-image/org.grails.forge/grails-forge-web-netty/resource-config.json
delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/application-dev.yml
delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/application.yml
delete mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/logback.xml
copy grails-forge/{grails-forge-web-netty => grails-forge-web}/aws/.platform/nginx/conf.d/proxy.conf (100%)
rename grails-forge/{grails-forge-web-netty => grails-forge-web}/aws/Procfile (100%)
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%)
copy grails-shell-cli/src/test/resources/gradle-sample/gradle/wrapper/gradle-wrapper.properties => grails-forge/grails-forge-web/grails-app/conf/openapi-base.yml (75%)
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/options/ServletImpl.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/MyEventListener.groovy => grails-forge-web/src/main/groovy/org/grails/forge/api/ForgeMessages.groovy} (69%)
create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/GormImplDTO.groovy
rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/GrailsForgeConfiguration.java => grails-forge-web/src/main/groovy/org/grails/forge/api/GrailsForgeConfiguration.groovy} (52%)
create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/JdkVersionDTO.groovy
create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/LanguageDTO.groovy
rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/analytics/AnalyticsOperations.java => grails-forge-web/src/main/groovy/org/grails/forge/api/LinkDTO.groovy} (61%)
rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/Linkable.java => grails-forge-web/src/main/groovy/org/grails/forge/api/Linkable.groovy} (64%)
rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/Relationship.java => grails-forge-web/src/main/groovy/org/grails/forge/api/Relationship.groovy} (62%)
create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/RequestInfo.groovy
rename grails-forge/{grails-forge-api/src/test/groovy/org/grails/forge/api/FeatureOperationsSpec.groovy => grails-forge-web/src/main/groovy/org/grails/forge/api/SelectOptionDTO.groovy} (61%)
rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/SelectOptionsDTO.java => grails-forge-web/src/main/groovy/org/grails/forge/api/SelectOptionsDTO.groovy} (51%)
rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/Selectable.java => grails-forge-web/src/main/groovy/org/grails/forge/api/Selectable.groovy} (85%)
create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/ServletImplDTO.groovy
rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/UserAgentParser.java => grails-forge-web/src/main/groovy/org/grails/forge/api/UserAgentParser.groovy} (50%)
rename grails-forge/{grails-forge-api/src/main/java/org/grails/forge/api/VersionDTO.java => grails-forge-web/src/main/groovy/org/grails/forge/api/VersionDTO.groovy} (61%)
create mode 100644 grails-forge/grails-forge-web/src/main/groovy/org/grails/forge/api/create/CreateProjectService.groovy
copy grails-forge/{grails-forge-core/src/main/java/org/grails/forge/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-core/src/main/java/org/grails/forge/feature/database/JpaFeature.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
copy grails-test-examples/{latency => ai}/build.gradle (71%)
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/build/Comment.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-forge/grails-forge-core/src/test/groovy/org/grails/forge/options/TestRockerModelProviderSpec.groovy => grails-test-examples/app1/src/integration-test/groovy/functionaltests/AppBenchInterceptorDemoSpec.groovy (51%)
create mode 100644 grails-test-examples/benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/AppIndyBench.groovy
create mode 100644 grails-test-examples/benchmarks/src/reportTest/groovy/org/apache/grails/benchmarks/report/AppIndyBenchSpec.groovy
copy grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/options/TestRockerModelProviderSpec.groovy => grails-test-examples/gsp-layout/src/integration-test/groovy/org/example/grails/layout/AppBenchDemoRenderTextSpec.groovy (51%)
rename grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/options/TestRockerModelProviderSpec.groovy => grails-test-examples/latency/src/integration-test/groovy/latencyapp/AppBenchFastPingSpec.groovy (53%)
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
create mode 100644 grails-testing-support-http-client/src/test/groovy/org/apache/grails/testing/http/client/bench/AppHttpBenchSpec.groovy
create mode 100644 grails-testing-support-http-client/src/testFixtures/groovy/org/apache/grails/testing/http/client/bench/AppHttpBench.groovy