Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
301 commits
Select commit Hold shift + click to select a range
30e0cb4
Merge pull request #4260 from graphql-java/introspection-benchmark-mu…
andimarek Feb 23, 2026
51d7d7b
Bump EnricoMi/publish-unit-test-result-action from 2.22.0 to 2.23.0
dependabot[bot] Feb 23, 2026
b516feb
Bump net.bytebuddy:byte-buddy from 1.18.1 to 1.18.5
dependabot[bot] Feb 23, 2026
2b0ef6f
Merge pull request #4265 from graphql-java/dependabot/gradle/net.byte…
dondonz Feb 23, 2026
8a8702c
Bump com.fasterxml.jackson.core:jackson-databind from 2.21.0 to 2.21.1
dependabot[bot] Feb 23, 2026
5425e8b
Merge branch 'master' into dependabot/github_actions/EnricoMi/publish…
dondonz Feb 23, 2026
bdd53e6
Merge pull request #4266 from graphql-java/dependabot/gradle/com.fast…
dondonz Feb 24, 2026
18a8df4
Bump me.bechberger:ap-loader-all from 4.0-10 to 4.3-12
dependabot[bot] Feb 24, 2026
a292423
Merge branch 'master' into add-agentic-ci
dondonz Feb 24, 2026
93c9abc
Configure ci-doctor for this repo's workflows and master branch
dondonz Feb 24, 2026
50c9d59
Add workflow_dispatch trigger for trial mode testing
dondonz Feb 24, 2026
80c0106
Remove workflow_dispatch trigger
dondonz Feb 24, 2026
45b723b
Trigger ci-doctor on all branches, not just master
dondonz Feb 24, 2026
adbea79
Simplify ci-doctor to focus on build output only
dondonz Feb 24, 2026
7bb6455
Add lock file
dondonz Feb 24, 2026
9116159
Merge pull request #4264 from graphql-java/dependabot/gradle/me.bechb…
dondonz Feb 25, 2026
c69f718
Bump com.google.errorprone:error_prone_core from 2.44.0 to 2.47.0
dependabot[bot] Feb 25, 2026
2f70efd
Merge branch 'master' into dependabot/github_actions/EnricoMi/publish…
dondonz Feb 25, 2026
baa9734
Add CLAUDE.md with project conventions and build instructions
claude Feb 26, 2026
bbdceea
Add JSpecify annotations to execution instrumentation classes
dondonz Feb 26, 2026
2385ec3
Merge branch 'master' into fix/defer-dataloader-dispatch-field-count
timward60 Feb 26, 2026
61e6320
Add missing nullable annotation
dondonz Feb 27, 2026
1e867c2
Merge pull request #4244 from graphql-java/dependabot/gradle/com.goog…
dondonz Feb 27, 2026
dbe17e4
Fix missing @Nullable on chainedCtx return type and BiFunction type p…
dondonz Feb 28, 2026
f18ec2a
Merge branch 'master' into jspecify-execution-instrumentation-classes
dondonz Feb 28, 2026
15696d4
Fix missing @Nullable on chainedCtx return type
dondonz Feb 28, 2026
d34a37b
Merge branch 'master' into dependabot/github_actions/EnricoMi/publish…
dondonz Feb 28, 2026
739403f
Merge pull request #4262 from graphql-java/dependabot/github_actions/…
dondonz Feb 28, 2026
674e6fb
Small typo fixed
zkozina Feb 28, 2026
71835ab
Add sampler test with removed reference and union reference that remains
dondonz Mar 1, 2026
24696d9
Add the case where the non-union member is deleted
dondonz Mar 1, 2026
95b06a1
Re-add GraphQLSchema.Builder.clearDirectives()
Mar 2, 2026
bae794f
Merge pull request #4276 from rstata/is-4259
andimarek Mar 2, 2026
a0449b5
Change artifact upload path for GitHub Pages
andimarek Mar 2, 2026
1be6ac5
Add performance-results-page subproject to generate benchmark dashboard
andimarek Mar 2, 2026
54597be
Generate index.html inside subproject build dir and update Pages work…
andimarek Mar 2, 2026
5cb39d7
Enhance dashboard with date range filter, class selector, and per-ser…
andimarek Mar 2, 2026
32c996c
Merge pull request #4277 from graphql-java/performance-results-page
andimarek Mar 2, 2026
d15e505
Bump actions/upload-pages-artifact from 3 to 4
dependabot[bot] Mar 2, 2026
d37c600
Fix findPubliclyAccessibleMethod to search interfaces for accessible …
claude Mar 2, 2026
293b21b
Add failing test for overlapping fields null type regression (072165b)
claude Mar 3, 2026
e27544a
Fix null type handling regression in requireSameOutputTypeShape
claude Mar 3, 2026
107b60a
Fix jar file naming when branch name contains slashes
claude Mar 4, 2026
5b63591
Merge pull request #4290 from graphql-java/claude/fix-jar-branch-nami…
andimarek Mar 4, 2026
5025d04
Fix failing test: use both-null scenario to correctly test null type …
claude Mar 4, 2026
b125184
Fix null type handling to skip comparison for unresolvable types
claude Mar 4, 2026
868f788
Merge latest master into feature branch
claude Mar 4, 2026
4f129d9
Add test cases mirroring JMH overlapping fields benchmarks
claude Mar 4, 2026
67dc320
Add JaCoCo test coverage reporting to build
claude Mar 4, 2026
e6f1336
Add JaCoCo coverage report as PR comment
claude Mar 4, 2026
fa6c75a
Increase test heap to 1g to fix OOM with large schema tests
claude Mar 4, 2026
5273839
Merge pull request #4291 from graphql-java/claude/investigate-graphql…
andimarek Mar 4, 2026
1d456b3
Bump com.google.errorprone:error_prone_core from 2.47.0 to 2.48.0
dependabot[bot] Mar 4, 2026
4288c71
Bump net.bytebuddy:byte-buddy from 1.18.5 to 1.18.7
dependabot[bot] Mar 4, 2026
7cd0482
Bump io.projectreactor:reactor-core from 3.8.0 to 3.8.3
dependabot[bot] Mar 4, 2026
90b8d6c
Replace Madrapps/jacoco-report with per-package coverage table
claude Mar 4, 2026
62c5cd0
Replace test overview action with per-Java-version custom summary
claude Mar 4, 2026
eb3e934
Unify test results and coverage into single PR comment
andimarek Mar 4, 2026
c4660c7
Add per-class coverage deltas to PR comment
andimarek Mar 4, 2026
c48c88c
Merge branch 'master' into check-in-union-example
andimarek Mar 4, 2026
85ef835
Merge branch 'master' into smallTypoFixed
andimarek Mar 4, 2026
3924d86
Merge pull request #4273 from zkozina/smallTypoFixed
andimarek Mar 4, 2026
2432bc6
Merge branch 'master' into claude/add-test-coverage-options-B7lED
andimarek Mar 4, 2026
6ab7c4f
Merge branch 'master' into dependabot/gradle/net.bytebuddy-byte-buddy…
bbakerman Mar 4, 2026
c8a9d18
Merge pull request #4275 from graphql-java/check-in-union-example
dondonz Mar 4, 2026
75d0a95
Add green/red color indicators to test and coverage deltas
andimarek Mar 5, 2026
5a5783c
Show changed class coverage table without collapsing
andimarek Mar 5, 2026
7bf3735
Shorten class names in coverage table to abbreviated packages
andimarek Mar 5, 2026
cc22c5e
Show only deltas in per-class coverage table for compact rows
andimarek Mar 5, 2026
b4e086c
Make per-class coverage table more compact
andimarek Mar 5, 2026
96ff2f6
Restore emoji in per-class deltas, break long class names with <br>
andimarek Mar 5, 2026
b2a6a70
Fix TestNG TCK tests to actually run under all Java versions
andimarek Mar 5, 2026
997ce34
Fail PR if code coverage drops vs master baseline
andimarek Mar 5, 2026
e87b0d3
Stabilize TCK tests by using dedicated executors
andimarek Mar 5, 2026
471b676
Merge pull request #4292 from graphql-java/claude/add-test-coverage-o…
andimarek Mar 5, 2026
64d6a53
Bump org.jetbrains.kotlin.jvm from 2.3.0 to 2.3.10
dependabot[bot] Mar 5, 2026
ff9c80d
Merge branch 'master' into claude/fix-graphql-java-4278-v6Z3y
andimarek Mar 5, 2026
a3eac73
Add tests for recursive interface method resolution
andimarek Mar 5, 2026
431a3dc
Fix spec303 flaky failure in ordered publisher TCK tests
andimarek Mar 5, 2026
b10f7d8
Add unified allBuildAndTestSuccessful check to CI workflows
claude Mar 5, 2026
e533fec
Merge pull request #4293 from graphql-java/fix/ordered-tck-spec303-flaky
andimarek Mar 5, 2026
bb7b3f6
Update test baseline [skip ci]
github-actions[bot] Mar 5, 2026
0b8d2ae
Merge pull request #4294 from graphql-java/claude/add-unified-build-c…
andimarek Mar 5, 2026
044d048
Update test baseline [skip ci]
github-actions[bot] Mar 5, 2026
3805adf
Merge branch 'master' into claude/fix-graphql-java-4278-v6Z3y
andimarek Mar 6, 2026
e964cf8
Merge branch 'master' into dependabot/gradle/net.bytebuddy-byte-buddy…
andimarek Mar 6, 2026
cdc892a
Fix race condition in CompletionStageSubscriber.onComplete()
andimarek Mar 6, 2026
9f65d67
This adds support for QueryAppliedDirective on operations and documents
bbakerman Mar 6, 2026
7f0bcae
Add jcstress stress tests and CI integration
andimarek Mar 6, 2026
9132b0b
Fix jcstress CI: create build dir before tee
andimarek Mar 6, 2026
4936a15
Fix flaky optional_spec111 TCK multicast test
andimarek Mar 6, 2026
1e316ed
Verify exact set of TestNG TCK skipped tests after each run
andimarek Mar 6, 2026
069d64a
Fix coverage gate to check per-class regressions, not just overall
andimarek Mar 6, 2026
ac6274f
Fix coverage gate false positives and add missing tests
andimarek Mar 6, 2026
460d365
Rename test-summary check to Test Report & Per-Class Coverage Gate
andimarek Mar 6, 2026
1405d45
Exclude identity equals/hashCode from JaCoCo coverage via bytecode an…
andimarek Mar 6, 2026
099b330
Bump Java toolchain from 21 to 25 to match CI
andimarek Mar 6, 2026
ec31e0b
Merge pull request #4296 from graphql-java/fix/completion-stage-subsc…
andimarek Mar 6, 2026
c897548
Merge branch 'master' into extract-out-operation-directives
andimarek Mar 6, 2026
82c70ad
Bump net.ltgt.errorprone from 5.0.0 to 5.1.0
dependabot[bot] Mar 6, 2026
bd5d21b
Use ADMIN_PAT for baseline update push to bypass branch protection
andimarek Mar 6, 2026
bcf3964
Update test baseline [skip ci]
github-actions[bot] Mar 6, 2026
0f689b0
Merge branch 'master' into extract-out-operation-directives
andimarek Mar 6, 2026
00aa746
Split PR test report into separate workflow_run-triggered workflow
andimarek Mar 6, 2026
483f0d3
Fix PR report: look up PR number via API when payload is empty
andimarek Mar 6, 2026
4521178
Remove unused EnricoMi/publish-unit-test-result-action from master wo…
andimarek Mar 6, 2026
05dedc7
Fix PR report: use owner login instead of full_name for head param
andimarek Mar 6, 2026
d35ac50
Update static.yml to JDK 25 Corretto and latest action versions
andimarek Mar 6, 2026
c3776dc
Remove dead package.json from workflows directory
andimarek Mar 6, 2026
beab3ac
Tighten workflow permissions to minimal required set
andimarek Mar 6, 2026
1740162
This adds support for QueryAppliedDirective on operations and documen…
bbakerman Mar 6, 2026
1951ed6
This adds support for QueryAppliedDirective on operations and documen…
bbakerman Mar 6, 2026
ac78d35
Update test baseline [skip ci]
github-actions[bot] Mar 6, 2026
2e7c4fc
This adds support for QueryAppliedDirective on operations and documen…
bbakerman Mar 6, 2026
8f049fe
This adds support for QueryAppliedDirective on operations and documen…
bbakerman Mar 6, 2026
50f05ba
Merge branch 'master' into claude/fix-graphql-java-4278-v6Z3y
andimarek Mar 7, 2026
b50c705
Merge branch 'master' into dependabot/gradle/org.jetbrains.kotlin.jvm…
andimarek Mar 7, 2026
c1e6e43
Merge branch 'master' into dependabot/gradle/com.google.errorprone-er…
andimarek Mar 7, 2026
6e06988
Merge branch 'master' into dependabot/gradle/net.ltgt.errorprone-5.1.0
andimarek Mar 7, 2026
67133cb
Merge branch 'master' into fix/defer-dataloader-dispatch-field-count
andimarek Mar 7, 2026
17e7ccd
This adds support for QueryAppliedDirective on operations and documen…
bbakerman Mar 7, 2026
6addcdd
Merge branch 'master' into dependabot/gradle/net.bytebuddy-byte-buddy…
andimarek Mar 7, 2026
c5797f7
Add Dependabot auto-merge workflow for patch and minor updates
claude Mar 7, 2026
28bdadf
Use immutable user ID instead of actor name for Dependabot check
claude Mar 7, 2026
4061ce6
Merge branch 'master' into add-agentic-ci
dondonz Mar 7, 2026
41422bf
Merge branch 'master' into dependabot/gradle/io.projectreactor-reacto…
dondonz Mar 7, 2026
a2434af
Merge branch 'master' into dependabot/github_actions/actions/upload-p…
dondonz Mar 7, 2026
87c9a4a
Auto-merge all Dependabot PRs regardless of semver update type
claude Mar 7, 2026
30fc7e2
Condense CLAUDE.md to reduce context window usage
claude Mar 7, 2026
d248dba
Align dependabot auto-merge workflow with official GitHub docs example
claude Mar 7, 2026
3d150b8
Use pull_request_target to avoid showing on non-Dependabot PRs
claude Mar 7, 2026
d5f0197
Include @NonNull alongside @Nullable in JSpecify rule
claude Mar 7, 2026
b7a0440
Update JSpecify rule: @NullMarked on all public API classes
claude Mar 7, 2026
fdd9568
This adds support for QueryAppliedDirective on operations and documen…
bbakerman Mar 7, 2026
d223632
Fix flaky DataLoaderPerformanceTest with deterministic synchronization
andimarek Mar 7, 2026
8093b45
Extract shared JaCoCo XML parser and fix self-closing tag bug
andimarek Mar 7, 2026
f679e89
Merge pull request #4300 from graphql-java/fix/extract-jacoco-parser
andimarek Mar 7, 2026
0cebb7b
Update test baseline [skip ci]
github-actions[bot] Mar 7, 2026
d3fbf2d
Merge pull request #4298 from graphql-java/claude/dependabot-auto-mer…
dondonz Mar 7, 2026
48a5d08
Merge pull request #4286 from graphql-java/dependabot/gradle/net.byte…
dondonz Mar 7, 2026
222ee3c
Merge pull request #4285 from graphql-java/dependabot/gradle/net.ltgt…
dondonz Mar 7, 2026
ac6412f
Merge pull request #4283 from graphql-java/dependabot/gradle/io.proje…
dondonz Mar 7, 2026
13c65c9
Merge pull request #4282 from graphql-java/dependabot/gradle/org.jetb…
dondonz Mar 7, 2026
2d1e22a
Merge pull request #4281 from graphql-java/dependabot/github_actions/…
dondonz Mar 7, 2026
ef5b6f8
Merge pull request #4258 from graphql-java/add-agentic-ci
dondonz Mar 7, 2026
20e1dc6
Update test baseline [skip ci]
github-actions[bot] Mar 7, 2026
13de46b
Merge branch 'master' into fix/flaky-dataloader-performance-test
andimarek Mar 7, 2026
9da09ed
Merge branch 'master' into extract-out-operation-directives
andimarek Mar 7, 2026
a21610f
Merge pull request #4284 from graphql-java/dependabot/gradle/com.goog…
dondonz Mar 7, 2026
692f30d
Update test baseline [skip ci]
github-actions[bot] Mar 7, 2026
79196b3
Trigger Dependabot auto-merge on push instead of PR event
claude Mar 7, 2026
b4972e3
Merge pull request #4304 from graphql-java/claude/dependabot-auto-mer…
dondonz Mar 7, 2026
869f7b4
Merge pull request #4272 from graphql-java/jspecify-execution-instrum…
dondonz Mar 7, 2026
ce0be71
Add @NullUnmarked rule for Builder classes in public API
claude Mar 7, 2026
7e4df6d
Update agents file
dondonz Mar 7, 2026
15b06cd
Ignore scheduled tasks
dondonz Mar 7, 2026
135848b
Merge branch 'claude/create-claude-md-M7lji' of https://github.com/gr…
dondonz Mar 7, 2026
b47540c
Merge remote-tracking branch 'origin/master' into extract-out-operati…
bbakerman Mar 8, 2026
d608ad5
Add targeted unit tests for ExhaustedDataLoaderDispatchStrategy
claude Mar 8, 2026
f4e0f1b
Make OperationDefinition.operation non-null, default to QUERY
dondonz Mar 8, 2026
5e00d10
Merge pull request #4306 from graphql-java/claude/analyze-coverage-dr…
andimarek Mar 8, 2026
f152d70
Update test baseline [skip ci]
github-actions[bot] Mar 8, 2026
7c8c436
Merge branch 'master' into fix/flaky-dataloader-performance-test
andimarek Mar 8, 2026
bd3914d
Merge pull request #4299 from graphql-java/fix/flaky-dataloader-perfo…
andimarek Mar 8, 2026
d96a3f4
Update test baseline [skip ci]
github-actions[bot] Mar 8, 2026
48d75c0
Merge branch 'master' into claude/fix-graphql-java-4278-v6Z3y
andimarek Mar 8, 2026
14e580b
Add unit tests for PerLevelDataLoaderDispatchStrategy coverage gaps
andimarek Mar 8, 2026
e6bc2fa
Replace reflection with @VisibleForTesting package-private access
andimarek Mar 8, 2026
1bf69f1
Rewrite tests as Spock specification
andimarek Mar 8, 2026
761df31
Merge pull request #4308 from graphql-java/test/per-level-dispatch-st…
andimarek Mar 8, 2026
7b92be4
Merge branch 'master' into extract-out-operation-directives
bbakerman Mar 8, 2026
7dac6ab
Update test baseline [skip ci]
github-actions[bot] Mar 8, 2026
601195a
This adds support for QueryAppliedDirective on operations and documen…
bbakerman Mar 8, 2026
93b53e4
Merge remote-tracking branch 'origin/extract-out-operation-directives…
bbakerman Mar 8, 2026
ec01d15
Merge branch 'master' into claude/fix-graphql-java-4278-v6Z3y
andimarek Mar 9, 2026
bdf5163
Merge branch 'master' into extract-out-operation-directives
bbakerman Mar 9, 2026
e718c23
Add tests for findMethodOnPublicInterfaces coverage gaps
andimarek Mar 9, 2026
426a2cc
Merge pull request #4287 from graphql-java/claude/fix-graphql-java-42…
andimarek Mar 9, 2026
121e207
Update test baseline [skip ci]
github-actions[bot] Mar 9, 2026
1babf52
Merge pull request #4270 from timward60/fix/defer-dataloader-dispatch…
andimarek Mar 9, 2026
9d0a03e
Update test baseline [skip ci]
github-actions[bot] Mar 9, 2026
a5deb1f
Bump github/gh-aw from 0.49.0 to 0.56.2
dependabot[bot] Mar 9, 2026
0163d97
Bump actions/github-script from 7 to 8
dependabot[bot] Mar 9, 2026
59e1133
Bump actions/download-artifact from 4 to 8
dependabot[bot] Mar 9, 2026
974c925
Bump actions/upload-artifact from 4 to 7 (#4315)
dependabot[bot] Mar 9, 2026
05a7e57
Bump org.ow2.asm:asm from 9.7.1 to 9.9.1 (#4318)
dependabot[bot] Mar 9, 2026
2c207e6
Bump org.junit.jupiter:junit-jupiter from 5.14.1 to 5.14.3 (#4321)
dependabot[bot] Mar 9, 2026
84ce54b
Require missed count increase for coverage regression detection
claude Mar 9, 2026
a8b5362
Add method-level detail sections for coverage decrease reporting
claude Mar 9, 2026
f89d5e7
Only show methods with actual coverage changes when baseline data exists
claude Mar 9, 2026
5e83c1b
Align PR comment detail sections with hybrid regression check
claude Mar 9, 2026
42f3d87
Update test baseline [skip ci]
github-actions[bot] Mar 9, 2026
0752dc1
Merge branch 'master' into extract-out-operation-directives
andimarek Mar 9, 2026
cf536bd
Fix ShallowTypeRefCollector: scan applied directives on args in all c…
Mar 3, 2026
4817db5
Update test baseline [skip ci]
github-actions[bot] Mar 9, 2026
a12be23
Extract shared isRegression() to deduplicate hybrid coverage check
andimarek Mar 9, 2026
1cca8ee
Hide non-regression coverage drops from PR report
andimarek Mar 9, 2026
878478b
Merge branch 'master' into extract-out-operation-directives
andimarek Mar 9, 2026
50e4694
Update test baseline [skip ci]
github-actions[bot] Mar 9, 2026
47d3101
Merge branch 'master' into extract-out-operation-directives
bbakerman Mar 9, 2026
a1be996
Merge pull request #4323 from graphql-java/dependabot/github_actions/…
dondonz Mar 10, 2026
e10006a
Merge pull request #4322 from graphql-java/dependabot/github_actions/…
dondonz Mar 10, 2026
30797cf
Merge pull request #4319 from graphql-java/dependabot/github_actions/…
dondonz Mar 10, 2026
8fff72e
Merge pull request #4305 from graphql-java/claude/create-claude-md-M7lji
dondonz Mar 10, 2026
1d5bb11
Update test baseline [skip ci]
github-actions[bot] Mar 10, 2026
4f8eb7c
Add deterministic CAS retry tests for ExhaustedDataLoaderDispatchStra…
Mar 10, 2026
a3ff5aa
Add TYPE target to @VisibleForTesting and annotate CallStack
Mar 10, 2026
e2e2aaa
Update test baseline [skip ci]
github-actions[bot] Mar 10, 2026
80632d2
Default test task to Java 25 only, require explicit tasks for other JVMs
andimarek Mar 10, 2026
e0094c4
Update AGENTS.md to reflect simplified test execution
andimarek Mar 10, 2026
0e1a405
Add CLAUDE.md pointing to AGENTS.md
andimarek Mar 10, 2026
04a7236
Keep -x test -x testng on check entries to avoid JaCoCo failure
andimarek Mar 11, 2026
addabba
Change Dependabot schedule from weekly to monthly
claude Mar 10, 2026
c83583f
Bump gradle-wrapper from 9.3.1 to 9.4.0 (#4333)
dependabot[bot] Mar 11, 2026
11c06fd
Bump github/gh-aw from 0.56.2 to 0.57.2 (#4334)
dependabot[bot] Mar 11, 2026
002843b
Bump org.junit.platform:junit-platform-launcher from 1.14.1 to 1.14.3…
dependabot[bot] Mar 11, 2026
370e872
Bump io.projectreactor:reactor-core from 3.8.3 to 3.8.4 (#4336)
dependabot[bot] Mar 11, 2026
3463b79
Bump com.gradleup.shadow from 9.3.1 to 9.3.2 (#4337)
dependabot[bot] Mar 11, 2026
d28b00b
Remove coverage gate checks from the CI doctor because it's spammy
dondonz Mar 14, 2026
cfae17e
Merge pull request #4340 from graphql-java/fix/ci-doctor-ignore-cover…
dondonz Mar 14, 2026
6d6a262
Merge pull request #4297 from graphql-java/extract-out-operation-dire…
bbakerman Mar 16, 2026
11b4e57
Update test baseline [skip ci]
github-actions[bot] Mar 16, 2026
e53ab1a
Never package bytecode-modified class files in published JARs
andimarek Mar 18, 2026
58aaa22
Add dangerous Unicode character detection to pre-commit hook and CI
andimarek Mar 18, 2026
53c0c82
Merge pull request #4257 from graphql-java/add-jspecify-redo
dondonz Mar 21, 2026
00d1c16
Update test baseline [skip ci]
github-actions[bot] Mar 21, 2026
0c7b9c3
Merge branch 'master' into copilot/add-jspecify-annotations-to-classes
dondonz Mar 21, 2026
2612804
Merge branch 'master' into copilot/add-jspecify-annotations
dondonz Mar 21, 2026
4665320
Remove already-annotated classes from JSpecify exemption list
dondonz Mar 21, 2026
21261ed
Remove already-annotated classes from JSpecify exemption list
dondonz Mar 21, 2026
c03b201
Disable no-op issue reporting for CI Failure Doctor
dondonz Mar 21, 2026
87ab05e
Merge pull request #4216 from graphql-java/copilot/add-jspecify-annot…
dondonz Mar 22, 2026
60a3e88
Update test baseline [skip ci]
github-actions[bot] Mar 22, 2026
ee007b0
Merge pull request #4346 from graphql-java/dondonz/github-agentic-wor…
dondonz Mar 22, 2026
9d851ec
Merge remote-tracking branch 'origin/master' into copilot/add-jspecif…
dondonz Mar 22, 2026
e3d076b
Merge pull request #4217 from graphql-java/copilot/add-jspecify-annot…
dondonz Mar 22, 2026
e636a77
Update test baseline [skip ci]
github-actions[bot] Mar 22, 2026
e4c287c
Add query depth and field count limits to Validator
andimarek Jan 28, 2026
0a270ed
Refactor GoodFaithIntrospection to use validation instead of ENO
andimarek Feb 13, 2026
9a3b446
Fix NullAway errors and adapt to master's naming conventions after re…
andimarek Mar 22, 2026
abd886b
Fix benchmark test to use unlimited QueryComplexityLimits
andimarek Mar 22, 2026
b23c591
Add tests for tooBigOperation good faith introspection path
andimarek Mar 22, 2026
02fcf27
Detect introspection queries dynamically during validation
andimarek Mar 22, 2026
308359e
Fix IntelliJ warnings in new code
andimarek Mar 23, 2026
cef0b41
Remove redundant null check on queryType
andimarek Mar 23, 2026
b8423f1
Use Introspection constants instead of string literals
andimarek Mar 23, 2026
b18910d
Fix undefined sanitizedBranchName in dev version string
andimarek Mar 23, 2026
0e77994
Add test for good faith disabled with custom validation predicate
andimarek Mar 23, 2026
1bb2f60
Update test baseline [skip ci]
github-actions[bot] Mar 23, 2026
113afa8
Merge origin/master into query-complexity-limits
andimarek Mar 29, 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
59 changes: 0 additions & 59 deletions .claude/commands/jspecify-annotate.md

This file was deleted.

1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.github/workflows/*.lock.yml linguist-generated=true merge=ours
44 changes: 43 additions & 1 deletion .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
#!/bin/bash

# Pre-commit hook to enforce Windows compatibility and file size limits
# Pre-commit hook to enforce Windows compatibility, file size limits,
# and dangerous Unicode character detection.
#
# 1. Windows filenames: prevents characters that are reserved on Windows (< > : " | ? * \)
# so the repo can be cloned on Windows systems.
# 2. File size: rejects files larger than 10 MB. Many enterprise users mirror graphql-java
# into internal repositories that enforce file size limits.
# 3. Dangerous Unicode: detects invisible/control characters that can be used for
# "Trojan Source" (BiDi override), homoglyph, or glassworm-style attacks.

# ANSI color codes for better output readability
RED='\033[0;31m'
Expand Down Expand Up @@ -75,6 +78,45 @@ if [ -n "$LARGE_FILES" ]; then
ERRORS_FOUND=1
fi

# Check 3: Dangerous Unicode characters (Trojan Source / glassworm attacks)
# Detects: C0/C1 control chars (except TAB, LF, CR), zero-width characters,
# BiDi override/embedding/isolate chars.
# Uses perl for macOS compatibility (grep -P is not available on macOS).
echo " Checking for dangerous Unicode characters..."

UNICODE_FILES=""
if [ -n "$STAGED_FILES" ]; then
while IFS= read -r file; do
if [ ! -f "$file" ]; then
continue
fi
# Skip binary files
if file --mime-type "$file" 2>/dev/null | grep -qv 'text/'; then
continue
fi
MATCHES=$(perl -CSD -ne '
if (/[\x{0000}-\x{0008}\x{000B}\x{000C}\x{000E}-\x{001F}\x{007F}-\x{009F}\x{200B}-\x{200D}\x{FEFF}\x{202A}-\x{202E}\x{2066}-\x{2069}]/) {
print " line $.: $_";
}
' "$file" 2>/dev/null || true)
if [ -n "$MATCHES" ]; then
UNICODE_FILES="${UNICODE_FILES} - ${file}\n${MATCHES}\n"
fi
done <<< "$STAGED_FILES"
fi

if [ -n "$UNICODE_FILES" ]; then
echo -e "${RED}Error: The following files contain dangerous Unicode characters:${NC}"
echo -e "$UNICODE_FILES"
echo -e "${YELLOW}These characters are invisible or alter text rendering and can be used for${NC}"
echo -e "${YELLOW}Trojan Source or glassworm-style attacks. Detected character categories:${NC}"
echo -e "${YELLOW} - C0/C1 control characters (U+0000-001F, U+007F-009F, except TAB/LF/CR)${NC}"
echo -e "${YELLOW} - Zero-width characters (U+200B-200D, U+FEFF)${NC}"
echo -e "${YELLOW} - BiDi override/isolate (U+202A-202E, U+2066-2069)${NC}"
echo -e "${YELLOW}Please remove these characters from the affected files.${NC}"
ERRORS_FOUND=1
fi

# Exit with error if any checks failed
if [ "$ERRORS_FOUND" -eq 1 ]; then
echo -e "${RED}Pre-commit checks failed. Please fix the issues above and try again.${NC}"
Expand Down
14 changes: 14 additions & 0 deletions .github/aw/actions-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"entries": {
"actions/github-script@v8": {
"repo": "actions/github-script",
"version": "v8",
"sha": "ed597411d8f924073f98dfc5c65a23a2325f34cd"
},
"github/gh-aw/actions/setup@v0.49.0": {
"repo": "github/gh-aw/actions/setup",
"version": "v0.49.0",
"sha": "0eb518a648ba8178f4f42559a4c250d3e513acd1"
}
}
}
4 changes: 2 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ updates:
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "weekly"
interval: "monthly"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
interval: "monthly"
103 changes: 103 additions & 0 deletions .github/scripts/parse-jacoco.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
// Shared JaCoCo XML parser used by CI workflows.
// Extracts overall and per-class coverage counters from a JaCoCo XML report.

const fs = require('fs');

const zeroCov = { covered: 0, missed: 0 };

function parseJacocoXml(jacocoFile) {
const result = { overall: {}, classes: {} };

if (!fs.existsSync(jacocoFile)) {
return null;
}

const xml = fs.readFileSync(jacocoFile, 'utf8');

// Overall counters (outside <package> tags)
const stripped = xml.replace(/<package[\s\S]*?<\/package>/g, '');
const re = /<counter type="(\w+)" missed="(\d+)" covered="(\d+)"\/>/g;
let m;
while ((m = re.exec(stripped)) !== null) {
const entry = { covered: parseInt(m[3]), missed: parseInt(m[2]) };
if (m[1] === 'LINE') result.overall.line = entry;
else if (m[1] === 'BRANCH') result.overall.branch = entry;
else if (m[1] === 'METHOD') result.overall.method = entry;
}

// Per-class counters from <package>/<class> elements.
// The negative lookbehind (?<!\/) prevents matching self-closing <class .../> tags
// (interfaces, annotations) which have no body and would otherwise steal the next
// class's counters.
const pkgRe = /<package\s+name="([^"]+)">([\s\S]*?)<\/package>/g;
let pkgMatch;
while ((pkgMatch = pkgRe.exec(xml)) !== null) {
const pkgBody = pkgMatch[2];
const classRe = /<class\s+name="([^"]+)"[^>]*(?<!\/)>([\s\S]*?)<\/class>/g;
let classMatch;
while ((classMatch = classRe.exec(pkgBody)) !== null) {
const className = classMatch[1].replace(/\//g, '.');
const classBody = classMatch[2];
const counters = { line: { ...zeroCov }, branch: { ...zeroCov }, method: { ...zeroCov } };
const cntRe = /<counter type="(\w+)" missed="(\d+)" covered="(\d+)"\/>/g;
let cntMatch;
while ((cntMatch = cntRe.exec(classBody)) !== null) {
const entry = { covered: parseInt(cntMatch[3]), missed: parseInt(cntMatch[2]) };
if (cntMatch[1] === 'LINE') counters.line = entry;
else if (cntMatch[1] === 'BRANCH') counters.branch = entry;
else if (cntMatch[1] === 'METHOD') counters.method = entry;
}
// Extract per-method counters within this class.
// JaCoCo XML contains <method name="..." desc="..." line="..."> elements
// each with their own <counter> children.
const methods = [];
const methodRe = /<method\s+name="([^"]+)"\s+desc="([^"]+)"(?:\s+line="(\d+)")?[^>]*>([\s\S]*?)<\/method>/g;
let methodMatch;
while ((methodMatch = methodRe.exec(classBody)) !== null) {
const mCounters = { line: { ...zeroCov }, branch: { ...zeroCov }, method: { ...zeroCov } };
const mCntRe = /<counter type="(\w+)" missed="(\d+)" covered="(\d+)"\/>/g;
let mCntMatch;
while ((mCntMatch = mCntRe.exec(methodMatch[4])) !== null) {
const entry = { covered: parseInt(mCntMatch[3]), missed: parseInt(mCntMatch[2]) };
if (mCntMatch[1] === 'LINE') mCounters.line = entry;
else if (mCntMatch[1] === 'BRANCH') mCounters.branch = entry;
else if (mCntMatch[1] === 'METHOD') mCounters.method = entry;
}
const totalLines = mCounters.line.covered + mCounters.line.missed;
if (totalLines > 0) {
methods.push({
name: methodMatch[1],
desc: methodMatch[2],
line: methodMatch[3] ? parseInt(methodMatch[3]) : null,
counters: mCounters,
});
}
}

// Skip classes with 0 total lines (empty interfaces, annotations)
if (counters.line.covered + counters.line.missed > 0) {
result.classes[className] = counters;
if (methods.length > 0) {
result.classes[className].methods = methods;
}
}
}
}

return result;
}

function pct(covered, missed) {
const total = covered + missed;
return total === 0 ? 0 : (covered / total * 100);
}

// A coverage metric is a "real regression" when BOTH the percentage drops
// beyond the tolerance AND the absolute number of missed items increases.
// This avoids false positives when well-covered code is extracted/moved out
// of a class (which lowers the percentage without actually losing coverage).
function isRegression(currPct, basePct, currMissed, baseMissed, tolerance = 0.05) {
return currPct < basePct - tolerance && currMissed > baseMissed;
}

module.exports = { parseJacocoXml, pct, zeroCov, isRegression };
Loading