Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
99b3b75
feedback: Server-Timing -> Server Timing where possible
jdaugherty Feb 17, 2026
38097a6
feedback: servertiming -> serverTiming for config key
jdaugherty Feb 17, 2026
85f93a2
feedback: Remove unnecessary Application class in plugin
jdaugherty Feb 17, 2026
9ab3579
Revert "feedback: Remove unnecessary Application class in plugin"
jdaugherty Feb 17, 2026
ee15067
feedback: simplify plugin configuration
jdaugherty Feb 17, 2026
6cf6dde
feedback: move log configuration to test configuration only
jdaugherty Feb 17, 2026
d0d3055
feedback: switch to CompileStatic when GrailsCompileStatic is not needed
jdaugherty Feb 17, 2026
1d283e5
feedback: rename plugin class
jdaugherty Feb 17, 2026
2a00b3b
feedback - 7.0.7 -> 7.x
jdaugherty Feb 17, 2026
0e1b0b6
feedback: rename title
jdaugherty Feb 17, 2026
9fde912
feedback: lazy log messages
jdaugherty Feb 17, 2026
39effda
feedback: use def for local variables where type is inferred
jdaugherty Feb 17, 2026
3a49e8c
feedback: prefer extensions.configure() instead of extensionName { }
jdaugherty Feb 17, 2026
ad3d84e
feedback: use dependsOn() instead of setter
jdaugherty Feb 17, 2026
e1af184
feedback: removing explicit types & it where possible
jdaugherty Feb 17, 2026
6454deb
feedback: fix display on windows due to unicode usage
jdaugherty Feb 17, 2026
471894a
feedback: add auto configuration instead of using the grails plugin d…
jdaugherty Feb 17, 2026
0ec228b
feedback: use ubuntu-24.04 instead of ubuntu-latest
jdaugherty Feb 17, 2026
146a21a
feedback: use plugin configuration instead of helper
jdaugherty Feb 18, 2026
c0eb2d0
revert feedback: remove autoconfiguration & properties until https://…
jdaugherty Feb 18, 2026
575372c
feedback: handle distribution between release & ci the same
jdaugherty Feb 18, 2026
6b4fe33
feedback: use gradle properties for versions
jdaugherty Feb 18, 2026
9eb0171
feedback: getWriter() and getOutputstream() need to function similarly
jdaugherty Feb 18, 2026
90237a8
feedback: fix gradle wrapper updates
jdaugherty Feb 18, 2026
1d639a8
feedback move HEADER_NAME to ResponseWrapper
jdaugherty Feb 22, 2026
5d1498b
feedback: error on start if already started
jdaugherty Feb 22, 2026
bcf7fbe
feedback: fix javadoc formatting
jdaugherty Feb 22, 2026
46db640
refactor: use auto-configuration and config properties
matrei Feb 23, 2026
8e0110f
docs: use camelCase for config values in docs
matrei Feb 23, 2026
cb13c15
chore: add config metadata
matrei Feb 23, 2026
7eded3f
Merge pull request #8 from grails-plugins/more-feedback
jdaugherty Feb 23, 2026
2d05edf
build: refactoring and renaming
matrei Feb 23, 2026
42f134c
chore: whitespace
matrei Feb 23, 2026
00c2812
build: rename app-debug to app-run
matrei Feb 24, 2026
843c749
build: refactor code coverage
matrei Feb 24, 2026
eca597f
build: extract code coverage from testing
matrei Feb 24, 2026
64a9bf2
ci: update workflows
matrei Feb 24, 2026
358cd06
build: fix code coverage aggregation
matrei Feb 24, 2026
fd5e95f
ci: setup conditional build scans
matrei Feb 24, 2026
9bfc3f1
ci: clean up post-release
matrei Feb 24, 2026
acffb26
docs: update readme and other md files
matrei Feb 24, 2026
d087969
build: add `org.junit.jupiter:junit-jupiter-api` for Gradle 9
matrei Feb 24, 2026
0787a27
fix: remove redundant plugin Application class
matrei Feb 24, 2026
5154fe7
docs: update titles in readme
matrei Feb 24, 2026
18b0565
build: update code coverage aggregation
matrei Feb 24, 2026
6dafe31
build: update code coverage aggregation
matrei Feb 24, 2026
597bbbe
build: try and generalize publishing
matrei Feb 24, 2026
fc3f243
chore: add matrei as developer
matrei Feb 24, 2026
fbabf0f
Merge pull request #9 from grails-plugins/more-feedback
jdaugherty Feb 24, 2026
362a6f3
Merge branch 'main' into feedback
matrei Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ body:
id: actual
attributes:
label: Actual Behavior
description: What actually happened? Include the Server-Timing header value if relevant.
description: What actually happened? Include the `Server-Timing` header value if relevant.
validations:
required: true

Expand Down
4 changes: 2 additions & 2 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ using [GitHub's private vulnerability reporting](https://github.com/grails-plugi

## Security Considerations

This plugin injects `Server-Timing` headers that expose server-side timing information. By default, the plugin is *
This plugin injects `Server-Timing` header that expose server-side timing information. By default, the plugin is *
*disabled in production** to mitigate the risk
of [timing attacks](https://w3c.github.io/server-timing/#security-considerations).

If you enable the plugin in production, be aware that:

- Timing data may help attackers infer information about server-side operations (e.g., whether a database lookup found a
record)
- Cross-origin access to `Server-Timing` data requires the `Timing-Allow-Origin` header, which this plugin does **not**
- Cross-origin access to Server Timing data requires the `Timing-Allow-Origin` header, which this plugin does **not**
set automatically

See the [W3C Server Timing Security Considerations](https://w3c.github.io/server-timing/#security-considerations) for
Expand Down
13 changes: 3 additions & 10 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
version: 2
updates:
# Gradle dependencies (root + all subprojects)
# Gradle dependencies and wrapper
- package-ecosystem: "gradle"
directory: "/"
schedule:
Expand All @@ -13,15 +13,8 @@ updates:
gradle-dependencies:
patterns:
- "*"

# Gradle wrapper
- package-ecosystem: "gradle"
directory: "/gradle/wrapper"
schedule:
interval: "weekly"
day: "monday"
labels:
- "deps"
exclude-patterns:
- "gradle"
ignore:
- dependency-name: "gradle"
versions: [ ">= 9" ]
Expand Down
26 changes: 19 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ on:
- 'main'
pull_request:
workflow_dispatch:
env:
JAVA_DISTRIBUTION: 'liberica'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
Expand All @@ -28,12 +30,18 @@ jobs:
- name: "☕️ Setup JDK"
uses: actions/setup-java@v5
with:
distribution: liberica
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.SDKMANRC_java }}
- name: 'Ensure Common Build Date' # to ensure a reproducible build
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >> "$GITHUB_ENV"
- name: "Export gradle.properties properties"
uses: apache/grails-github-actions/export-gradle-properties@asf
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v5
with:
build-scan-publish: ${{ env.ciBuildScanPublish }}
build-scan-terms-of-use-url: ${{ env.ciBuildScanTermsOfUseUrl }}
build-scan-terms-of-use-agree: ${{ env.ciBuildScanTermsOfUseAgree }}
- name: "🔨 Build project without tests"
if: ${{ contains(github.event.head_commit.message, '[skip tests]') }}
run: >
Expand All @@ -51,9 +59,10 @@ jobs:
--rerun-tasks
-PskipCodeStyle
publish:
# only run the publish task on this repo instead of forks
# only run the publishing task on this repo (not on forks)
if: github.repository_owner == 'grails-plugins' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
needs: [ build ]
needs: build
name: "Publish Snapshot"
runs-on: ubuntu-24.04
steps:
- name: "Output Agent IP" # in the event your agent has network issues, you can use this to debug
Expand All @@ -70,28 +79,31 @@ jobs:
- name: "☕️ Setup JDK"
uses: actions/setup-java@v5
with:
distribution: liberica
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.SDKMANRC_java }}
- name: 'Ensure Common Build Date' # to ensure a reproducible build
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >> "$GITHUB_ENV"
- name: "Export gradle.properties properties"
uses: apache/grails-github-actions/export-gradle-properties@asf
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v5
with:
build-scan-publish: ${{ env.ciBuildScanPublish }}
build-scan-terms-of-use-url: ${{ env.ciBuildScanTermsOfUseUrl }}
build-scan-terms-of-use-agree: ${{ env.ciBuildScanTermsOfUseAgree }}
- name: "📤 Publish Gradle Snapshot Artifacts"
env:
GRAILS_PUBLISH_RELEASE: 'false'
MAVEN_PUBLISH_URL: 'https://central.sonatype.com/repository/maven-snapshots/'
MAVEN_PUBLISH_USERNAME: ${{ secrets.NEXUS_PUBLISH_USERNAME }}
MAVEN_PUBLISH_PASSWORD: ${{ secrets.NEXUS_PUBLISH_PASSWORD }}
working-directory: './plugin'
run: >
../gradlew publish
--no-build-cache
--rerun-tasks
- name: "📜 Generate Documentation"
if: success()
run: ./gradlew docs
- name: "🚀 Publish to Github Pages"
if: success()
uses: apache/grails-github-actions/deploy-github-pages@asf
env:
GRADLE_PUBLISH_RELEASE: 'false'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: "Coverage"
name: "Code Coverage"
on:
push:
branches:
Expand Down Expand Up @@ -28,20 +28,26 @@ jobs:
with:
distribution: liberica
java-version: ${{ env.SDKMANRC_java }}
- name: "Export gradle.properties properties"
uses: apache/grails-github-actions/export-gradle-properties@asf
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v5
with:
build-scan-publish: ${{ env.ciBuildScanPublish }}
build-scan-terms-of-use-url: ${{ env.ciBuildScanTermsOfUseUrl }}
build-scan-terms-of-use-agree: ${{ env.ciBuildScanTermsOfUseAgree }}
- name: "🔨 Build and run tests"
run: >
./gradlew build
--continue
--stacktrace
-PskipCodeStyle
- name: "📊 Post coverage summary"
- name: "📊 Post code coverage summary"
if: always()
run: |
REPORT="coverage/build/reports/jacoco/jacocoAggregatedReport/jacocoAggregatedReport.xml"
REPORT="code-coverage/build/reports/jacoco/jacocoAggregatedReport/jacocoAggregatedReport.xml"
if [ ! -f "$REPORT" ]; then
echo "::warning::Coverage report not found at $REPORT"
echo "::warning::Code Coverage report not found at $REPORT"
exit 0
fi

Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/code-style.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,14 @@ jobs:
with:
distribution: liberica
java-version: ${{ env.SDKMANRC_java }}
- name: "Export gradle.properties properties"
uses: apache/grails-github-actions/export-gradle-properties@asf
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v5
with:
build-scan-publish: ${{ env.ciBuildScanPublish }}
build-scan-terms-of-use-url: ${{ env.ciBuildScanTermsOfUseUrl }}
build-scan-terms-of-use-agree: ${{ env.ciBuildScanTermsOfUseAgree }}
- name: "🎨 Run code style checks"
run: >
./gradlew codeStyle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-notes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
permissions:
contents: write # write permission is required to create a github release
pull-requests: write # write permission is required for auto-labeler
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- name: "📝 Update Release Draft"
uses: release-drafter/release-drafter@v6
Expand Down
52 changes: 25 additions & 27 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ on:
types: [ published ]
permissions: { }
env:
# to prevent throttling of the github api, include the github token in an environment variable since the build will check for it
# To prevent throttling of the GitHub api,
# include the GitHub token in an environment variable
# since the build will check for it
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GRAILS_PUBLISH_RELEASE: 'true'
JAVA_DISTRIBUTION: 'liberica'
Expand All @@ -19,7 +21,7 @@ jobs:
name: "Stage Jar Files"
permissions:
packages: read # pre-release workflow
contents: write # to create release
contents: write # to create a release
issues: write # to modify milestones
runs-on: ubuntu-24.04
steps:
Expand Down Expand Up @@ -53,8 +55,14 @@ jobs:
with:
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.SDKMANRC_java }}
- name: "Export gradle.properties properties"
uses: apache/grails-github-actions/export-gradle-properties@asf
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v5
with:
build-scan-publish: ${{ env.ciBuildScanPublish }}
build-scan-terms-of-use-url: ${{ env.ciBuildScanTermsOfUseUrl }}
build-scan-terms-of-use-agree: ${{ env.ciBuildScanTermsOfUseAgree }}
- name: "⚙️ Run pre-release"
uses: apache/grails-github-actions/pre-release@asf
env:
Expand All @@ -71,7 +79,6 @@ jobs:
./gradlew
-Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg
publishMavenPublicationToSonatypeRepository
publishPluginMavenPublicationToSonatypeRepository
closeSonatypeStagingRepository
- name: "Generate Build Date file"
run: echo "$SOURCE_DATE_EPOCH" >> build/BUILD_DATE.txt
Expand All @@ -85,7 +92,7 @@ jobs:
name: "Make Release Files Available"
environment: release # this step will be delayed until approved
needs: [ publish ]
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
Expand All @@ -108,8 +115,14 @@ jobs:
with:
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.SDKMANRC_java }}
- name: "Export gradle.properties properties"
uses: apache/grails-github-actions/export-gradle-properties@asf
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v5
with:
build-scan-publish: ${{ env.ciBuildScanPublish }}
build-scan-terms-of-use-url: ${{ env.ciBuildScanTermsOfUseUrl }}
build-scan-terms-of-use-agree: ${{ env.ciBuildScanTermsOfUseAgree }}
- name: "📤 Release staging repository"
env:
NEXUS_PUBLISH_USERNAME: ${{ secrets.MAVEN_USERNAME }}
Expand All @@ -124,7 +137,7 @@ jobs:
environment: docs # this step will be delayed until approved
name: "Publish Documentation"
needs: [ publish, release ]
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
permissions:
contents: write # required to publish documentation to github pages branches
steps:
Expand All @@ -147,8 +160,14 @@ jobs:
with:
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.SDKMANRC_java }}
- name: "Export gradle.properties properties"
uses: apache/grails-github-actions/export-gradle-properties@asf
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v5
with:
build-scan-publish: ${{ env.ciBuildScanPublish }}
build-scan-terms-of-use-url: ${{ env.ciBuildScanTermsOfUseUrl }}
build-scan-terms-of-use-agree: ${{ env.ciBuildScanTermsOfUseAgree }}
- name: "🔨 Build Documentation"
run: ./gradlew docs
- name: "🚀 Publish to Github Pages"
Expand All @@ -162,32 +181,11 @@ jobs:
name: "To Next Version"
environment: close # this step will be delayed until approved
needs: [ publish, docs, release ]
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
permissions:
contents: write # required for gradle.properties revert
issues: write # required for milestone closing
pull-requests: write # to create the PR that will increment the version
steps:
- name: "📝 Establish release version"
run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
- name: "📥 Checkout repository"
uses: actions/checkout@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
ref: ${{ env.TAG }}
- name: "Export .sdkmanrc properties"
uses: apache/grails-github-actions/export-gradle-properties@asf
with:
file: ".sdkmanrc"
prefix: "SDKMANRC_"
- name: "Determine Java Version"
run: echo "SDKMANRC_java=${{ env.SDKMANRC_java }}" | sed 's/-.*//' >> $GITHUB_ENV
- name: "☕️ Setup JDK"
uses: actions/setup-java@v5
with:
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.SDKMANRC_java }}
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v5
- name: "⚙️ Run post-release"
uses: apache/grails-github-actions/post-release@asf
Loading
Loading