Repository navigation
Groovy DevTools v0.4.8
This release includes:
- gls (Groovy Language Server) - Platform-independent JAR
- gvy (IDE extension) - VS Code, Open VSX
Installation
Download and run the JAR:
# Download JAR
curl -LO https://github.com/albertocavalcante/groovy-devtools/releases/download/v0.4.8/gls-0.4.8.jar
# Verify checksum
curl -LO https://github.com/albertocavalcante/groovy-devtools/releases/download/v0.4.8/checksums.txt
sha256sum -c checksums.txt --ignore-missing
# Run the Language Server (requires JDK 17+)
java -jar gls-0.4.8.jarVerify Attestation (Optional)
All release artifacts include SLSA Level 3 provenance attestations:
# Verify JAR attestation (requires gh CLI)
gh attestation verify gls-0.4.8.jar --owner albertocavalcanteRequirements
- Java 17+ (JDK 17, 21, or later)
- Works on all platforms: Linux, macOS, Windows (x64 and ARM64)
Usage
The Groovy Language Server provides IDE features for Groovy development including:
- Code completion
- Syntax highlighting
- Error checking
- Go to definition
- Find references
What's Changed
Full Changelog: v0.0.1...v0.4.8
What's Changed
- chore: add actions lint workflow by @albertocavalcante in #378
- chore: fix shellcheck findings in workflows by @albertocavalcante in #379
- test: cover constructors in document symbols by @albertocavalcante in #380
- test: mark constructors with LSP kind by @albertocavalcante in #382
- chore: move lint configs under tools/lint by @albertocavalcante in #383
- chore(deps): update gradle/actions action to v5 by @renovate[bot] in #386
- chore(deps): update github/codeql-action action to v4 by @renovate[bot] in #385
- fix: prevent zip slip in source jar extraction by @albertocavalcante in #381
- docs: add lint config guide by @albertocavalcante in #388
- test: refine constructor signature detail by @albertocavalcante in #384
- test: tighten document symbol assertions by @albertocavalcante in #377
- chore(deps): update dependency node to v24 by @renovate[bot] in #374
- fix: narrow editors server ignore by @albertocavalcante in #391
- feat: gate GDSL execution behind config flag by @albertocavalcante in #390
- test: wait for readiness before signature help by @albertocavalcante in #389
- refactor: reduce cognitive complexity in DefaultBuildFileWatcher by @albertocavalcante in #392
- fix(deps): update dependency org.openrewrite:rewrite-groovy to v8.70.1 by @albertocavalcante in #394
- feat: migrate to lefthook by @albertocavalcante in #398
- ci: fix ghalint persist-credentials violations by @albertocavalcante in #396
- fix: add version number to release-please PR titles by @albertocavalcante in #399
- feat: add cross-platform smoke tests and simplify JAR naming by @albertocavalcante in #400
- feat: gate release on smoke tests and add SLSA provenance attestation by @albertocavalcante in #403
- test: add stricter assertions to completion E2E tests by @albertocavalcante in #405
- chore(deps): update actions/attest-build-provenance action to v3 by @renovate[bot] in #407
- feat(lsp): add Groovy version resolution by @albertocavalcante in #406
- test: add groovy/status wait to completion tests + formatting test by @albertocavalcante in #408
- fix(deps): update dependency org.openrewrite:rewrite-groovy to v8.70.2 by @renovate[bot] in #402
- feat(lsp): add worker handshake protocol by @albertocavalcante in #409
- test: add references and rename E2E tests by @albertocavalcante in #410
- feat(lsp): select workers by version range by @albertocavalcante in #411
- test: add workspace/symbol E2E test by @albertocavalcante in #412
- docs: add E2E test development workflow by @albertocavalcante in #414
- feat(lsp): add worker router by @albertocavalcante in #416
- test: add code action and folding tests by @albertocavalcante in #417
- feat(lsp): select worker during startup by @albertocavalcante in #419
- docs: refine E2E workflow per review by @albertocavalcante in #418
- feat(lsp): route parsing via worker sessions by @albertocavalcante in #423
- test: add document highlight and type definition tests by @albertocavalcante in #422
- feat(lsp): clear caches on worker switch by @albertocavalcante in #424
- feat(lsp): allow configurable worker descriptors by @albertocavalcante in #428
- test: add signature help and semantic tokens specs by @albertocavalcante in #427
- feat(tests): add enhanced E2E scenarios for references, rename, and completion by @albertocavalcante in #429
- feat(jenkins): deterministic vars ordering by @albertocavalcante in #434
- fix(ci): harden GitHub Actions against ref injection attacks by @albertocavalcante in #435
- feat(jenkins): stabilize metadata ordering by @albertocavalcante in #439
- test: add comprehensive unit tests for AstCache by @albertocavalcante in #437
- feat(lsp): stabilize classpath completions by @albertocavalcante in #438
- refactor: extract duplicated string literals to constants by @albertocavalcante in #436
- refactor: remove useless null checks and elvis operators by @albertocavalcante in #440
- refactor(lsp): simplify LRU cache by @albertocavalcante in #441
- feat(lsp): add classpath indexer by @albertocavalcante in #442
- refactor: remove commented-out debug logging by @albertocavalcante in #443
- refactor: inject coroutine dispatchers for testability by @albertocavalcante in #445
- refactor: encapsulate mutable collection in GroovyTokenIndex by @albertocavalcante in #449
- feat(parser): track AST children by @albertocavalcante in #446
- fix(ci): rebuild shadow jar for verification by @albertocavalcante in #450
- fix(ci): align nightly jar name by @albertocavalcante in #452
- refactor(ci): honor primary OS for PR matrix by @albertocavalcante in #453
- refactor(ci): derive push matrix from primary OS by @albertocavalcante in #457
- refactor(lsp): pass classpath entries by @albertocavalcante in #458
- fix: log CancellationException at DEBUG level in DiagnosticsService by @albertocavalcante in #451
- feat(parser): add AST query parser by @albertocavalcante in #447
- docs(agent): add pr review workflow by @albertocavalcante in #459
- chore: release main by @albertocavalcante in #401
Full Changelog: v0.4.7...v0.4.8