ENHANCEMENTS:
- Introduce go-to-variable from
tfvars
files (#727) - Automatically refresh semantic tokens for more reliable highlighting (#630)
- Enhance semantic highlighting of block labels (#802)
- Enable completion, hover, go-to-definition/reference etc. for Terraform Registry modules (#808)
- Report dependent semantic highlighting modifiers as
defaultLibrary
(instead ofmodification
) (#817) - Semantically highlight type declarations in variable
type
(#827)
BUG FIXES:
- Address race conditions typically surfaced as "out of range" errors, lack of completion/hover/etc. data or data associated with wrong position within the document (#782)
- Fix broken validate on save (#799)
- Fix encoding of unknown semantic token types (#815)
- Fix missing references for some blocks in a separate config file (#829)
INTERNAL:
- Simplify module source detection in favour of faster CI/compilation times (#783)
- Store documents in a memdb-backed table (#771)
- Refactor job scheduler to use memdb for jobs (#782)
- build(deps): bump github.com/creachadair/jrpc2 from 0.35.2 to 0.37.0 (#774, #795, #809)
BUG FIXES:
- fix: avoid sending empty diagnostics (#756)
- fix: avoid code lens updates when disabled (#757)
- fix: Catch OS agnostic interrupt signal (#755)
- fix: Return correct target selection range for definition/declaration (#759)
- telemetry: Only send requests if data has changed (#758)
INTERNAL:
- Switch to hc-install from tfinstall (#737)
BUG FIXES:
- Reduce parallelism for background operations to flatten CPU spikes triggered by workspaces with many modules on machines w/ >2 CPUs (which would previously had higher parallelism) (#752)
INTERNAL:
- build(deps): bump github.com/creachadair/jrpc2 from 0.32.0 to 0.35.2 (#748)
- build(deps): bump github.com/spf13/afero from 1.6.0 to 1.8.0 (#747, #754)
- build(deps): bump github.com/mitchellh/mapstructure from 1.4.2 to 1.4.3 (#732)
- build(deps): bump github.com/hashicorp/hcl/v2 from 2.10.1 to 2.11.1 (#731)
ENHANCEMENTS:
- Introduce
module.providers
command (#712) - Diagnostics for all known modules/files are now published automatically (as opposed to just open files) (#714)
- Introduce go-to-variable from module input name (#700)
NOTES:
INTERNAL:
- build(deps): bump github.com/creachadair/jrpc2 from 0.30.1 to 0.32.0 (#713, #728)
- Avoid duplicate state entries (by avoiding symlink evaluation) (#699)
BREAKING CHANGES:
source.formatAll.terraform-ls
is renamed tosource.formatAll.terraform
to follow other similar existing actions in the wild (#680)
ENHANCEMENTS:
- Implement opt-in telemetry (documented in
docs/telemetry.md
) (#681) - Provide workspace-wide symbols for variables in
*.tfvars
(#658) - Go-to-definition now highlights just the definition of a block/attribute instead of the whole attribute/block (#689)
- Add configuration option allowing to exclude directories from being indexed upon initialization (#696)
- Parse
*.tfvars.json
for workspace-wide symbols and diagnostics (#697)
BUG FIXES:
- The server announces just a single formatting code action, other actions
source
,source.fixAll
andsource.formatAll
are removed which helps avoid running the same action multiple times and better follows conventions (#680) - Requesting
Only: []
code actions is now no-op (#680) - Fix indexing of references in dependent modules (#698)
- Fix workspace folder removal/addition at runtime (#707)
INTERNAL:
ENHANCEMENTS:
- Introduce
module.calls
command (#632) - Introduce experimental completion of required fields. You can opt in via
prefillRequiredFields
option (#657) - Ignore
.terragrunt-cache
when indexing initialized modules (#666) - Parse
*.tf.json
for references and symbols (#672)
INTERNAL:
- build(deps): bump github.com/creachadair/jrpc2 from 0.25.1 to 0.28.0 (#649, #650, #662, #668, #676, #677)
- build(deps): bump github.com/hashicorp/terraform-exec from 0.14.0 to 0.15.0 (#664)
ENHANCEMENTS:
- Support standalone (not autoloaded)
*.tfvars
files (#621)
BUG FIXES:
- fix: Limit label completion items to 100 (same as limit for completion items in other contexts) (#628)
- Recognize references in module block inputs (#623)
INTERNAL:
- build(deps): bump github.com/mitchellh/mapstructure from 1.4.1 to 1.4.2 (#641)
- build(deps): bump github.com/fsnotify/fsnotify from 1.4.9 to 1.5.1 (#629)
- build(deps): bump github.com/creachadair/jrpc2 from 0.20.0 to 0.25.0 (#631, #636, #638, #640, #642)
DEPRECATIONS:
-tf-exec
(CLI flag) is deprecated in favour of LSP config optionterraformExecPath
.-tf-exec
flag will raise warnings in future releases and will be eventually removed. (#588)-tf-log-file
(CLI flag) is deprecated in favour of LSP config optionterraformLogFilePath
.-tf-log-file
flag will raise warnings in future releases and will be eventually removed. (#619)tf-exec-timeout
(CLI flag) is deprecated in favour of LSP config optionterraformExecTimeout
.tf-exec-timeout
flag will raise warnings in future releases and will be eventually removed. (#619)
BUG FIXES:
- fix: allow multiple variable validation blocks (#610)
- fix: avoid crash on missing block label (#612)
- fix: avoid crash when
validate
command returns internal error instead of diagnostics (#588)
ENHANCEMENTS:
- Always validate URI schema (#602)
- Introduce
terraformExecPath
as option withininitializationOptions
(#588) - Introduce
terraformLogFilePath
as option withininitializationOptions
(#619) - Introduce
terraformExecTimeout
as option withininitializationOptions
(#619) - Introduce format on save code action (#625)
INTERNAL:
- Update LSP structs to gopls'
0.7.0
(#608) - build(deps): bump github.com/creachadair/jrpc2 from 0.19.1 to 0.20.0 (#614)
- build(deps): bump github.com/zclconf/go-cty from 1.9.0 to 1.9.1 (#624)
BUG FIXES:
- fix: recognize references in common nested expressions (#596)
- textDocument/publishDiagnostics: Publish any source-less warnings or errors (#601)
- fix: avoid publishing stale 'validate' diagnostics (#603)
- fix: avoid crash on highlighting unknown tuple element (#605)
- fix: recognize list(object) and set(object) attributes as blocks (#607)
INTERNAL:
- build(deps): bump github.com/creachadair/jrpc2 from 0.19.0 to 0.19.1 (#606)
FEATURES:
- Implement reference count code lens (#584)
ENHANCEMENTS:
- Add support for module input completion/hover/highlighting (#551)
- Add support for module output reference completion/hover/highlighting (#593)
BUG FIXES:
- fix: recognize references in lists and other complex types (#594)
INTERNAL:
- build(deps): bump github.com/hashicorp/hcl/v2 from 2.10.0 to 2.10.1 (#589)
BUG FIXES:
- Fix 'go to references' for resources & data sources (#587)
INTERNAL:
- build(deps): bump github.com/creachadair/jrpc2 from 0.17.0 to 0.18.0 (#550)
FEATURES:
- Go to attribute/block from reference (#569)
- Go to references from an attribute or a block (#572, #580)
ENHANCEMENTS:
BUG FIXES:
- fix: avoid crash on empty file formatting (#578)
BUG FIXES:
- fix: avoid circular references to list/map/object attributes (which caused high CPU usage on copy) (#575)
ENHANCEMENTS:
- Provide (less verbose) step-based completion (#566)
BUG FIXES:
- Mock out code lens support to avoid errors (#561)
ENHANCEMENTS:
- Support for references to variables and locals (#553)
- tfvars: Infer variable types from default values where not explicitly specified (#554)
BUG FIXES:
- Prevent var names from being completed in label (#555)
FEATURES:
- Add support for
tfvars
(variable files) (#540)
ENHANCEMENTS:
- Add support for state backends (#544)
- Add support for provisioners (#542)
- Support for type declarations (variable
type
) (#490) - Support variable
default
(#543)
BUG FIXES:
- Reduce CPU usage via custom Copy methods instead reflection (#513)
ENHANCEMENTS:
- Add support for traversals/references (#485)
- Add new
module.callers
(LSP) command & document all available commands (#508)
ENHANCEMENTS:
- Increase request concurrency & make it configurable via
-req-concurrency
flag ofserve
command (#489)
BUG FIXES:
- Fix request cancellation (#314)
ENHANCEMENTS:
- Support templated paths for
-cpuprofile
&-memprofile
flags ofserve
(#501)
BUG FIXES:
- Avoid presenting stale diagnostics after document changes (#488)
BUG FIXES:
- Prevent crash for legacy provider lookups where configuration is missing
terraform
>required_providers
block orsource
arguments for providers and Terraform 0.13+ is used (#481)
SECURITY:
This release is signed with a new GPG key (ID 72D7468F
), unlike all previous releases which were signed with (now revoked) key (ID 348FFC4C
). Old releases were temporarily re-signed with the new key, but that key will be removed in coming weeks or months.
Read more about the related security event HCSEC-2021-12.
Users of the Terraform VS Code extension will need to upgrade to 2.10.1
before auto-upgrading to this LS version.
ENHANCEMENTS:
- Allow effective utilization of multiple schema sources (local or preloaded) via cache (#454)
- "No schema found ..." warning removed, as schema is far more likely to be available now (#454)
- "Alternative root modules found ..." warning removed (#454)
- Further improve support for Terraform 0.15 (#425)
BUG FIXES:
- Fix panic caused by partially unknown map keys in configuration (#447)
FEATURES:
- Add workspace-wide symbol navigation (#427)
ENHANCEMENTS:
- textDocument/documentSymbol: Support nested symbols (#420)
- Add Go version, OS and architecture to
version
command (#407) - Add initial support for expressions (#411)
- Reflect 0.15 schema changes (#436)
BUILD:
- Provide Linux packages (#421)
FEATURES:
- Add links to documentation (Ctrl+click in supported clients + hover) (#402)
ENHANCEMENTS:
- Improve messaging when Terraform is not found (#401)
BUG FIXES:
- watcher: Refresh versions when plugin lockfile changes (#403)
BUILD:
- Provide darwin/arm64 (Apple Silicon) build (#350)
FEATURES:
- watcher: Detect
terraform init
from scratch (#385)
ENHANCEMENTS:
BUG FIXES:
- Fix miscalculated semantic tokens (#390)
BUG FIXES:
FEATURES:
- Implement
textDocument/semanticTokens
(semantic highlighting) (#331) - Implement experimental validate on save feature (#340)
ENHANCEMENTS:
- Report progress for validate command (#336)
- Report deprecated completion items as such (#337)
- Preloaded schemas now include partner providers in addition to official ones (#341)
NOTES:
- Only official (legacy) providers will be completed in
provider
block completion. Partner providers currently require corresponding entry inrequired_providers
block, read #370 to understand why and how we plan to address this inconvenient behaviour. - Preloaded schemas are now being generated at release time (as opposed to being committed to the repo). Therefore availability of these schemas is dependent on particular release process tracked in this repository. This may interest anyone who does not use the official builds from
releases.hashicorp.com
and has its own build process. Plaingo get
still compiles and runs server correctly, however it won't automatically generate and embed the schemas. (#341)
INTERNAL:
ENHANCEMENTS:
- Ask for init if current folder is empty root module (#257)
- Display provider versions in completion/hover detail (#329)
- Expose
terraform.validate
as command for language clients (#323) - Expose
terraform.init
as command for language clients (#325) - Add human readable name to
rootmodules
command API (#332) - Expose server version via LSP (#318)
BUG FIXES:
- Avoid crashing when no hover data is available for a position (#320)
INTERNAL:
- Replace
sourcegraph/go-lsp
with gopls'internal/lsp/protocol
(#311)
FEATURES:
ENHANCEMENTS:
- Add support for upcoming Terraform v0.14 (#289)
- completion: Prompt picking type of provider/data/resource automatically (#300)
- completion/hover: Preload official providers to improve UX for uninitialized modules (#302)
BUG FIXES:
- textDocument/completion: Fix wrong range computation near EOF (#298)
- Avoid ignoring schema for uninitialized module (#301)
- fix synchronization issues affecting any clients which support partial updates (#304)
- Avoid panic by initing universal schema early (#307)
INTERNAL:
- Bump jrpc2 (JSON-RPC library) to latest version (#309)
FEATURES:
- Support for
workspace/executeCommand
with newrootmodules
inspection command (#274) - Provide version-aware schema for completion of "core" blocks (#287)
locals
,module
,output
,variable
andterraform
- enrichment of
data
,provider
andresource
schemas by meta-arguments, such ascount
orfor_each
ENHANCEMENTS:
- Limited completion is available as soon as the server starts and is progressively enhanced as more (core or provider) schema is discovered (#281)
- Symbols are available as soon as the server starts (#281)
BUG FIXES:
- Prevent command collisions for clients such as VS Code with
commandPrefix
init option (#279)
INTERNAL:
- Internal decoder decoupled into
hashicorp/hcl-lang
(#281) - Schema handling decoupled into
hashicorp/terraform-schema
(#281)
FEATURES:
- HCL diagnostics support (#269)
BUG FIXES:
- fix: prevent crash when listing symbols in invalid config (#273)
INTERNAL:
- Replace most of
internal/terraform/exec
withhashicorp/terraform-exec
(#271)
FEATURES:
- Document Symbol support (#265)
BUG FIXES:
FEATURES:
- New command:
inspect-module
to help debugging root module discovery issues (#231)
ENHANCEMENTS:
- Support 0.13 provider identities (#255)
- settings: Support relative paths to root modules (#246)
- settings: Expand
~
in root module paths (#247) - settings: Add support for
excludeModulePaths
(#251) - handlers/initialize: Skip invalid root module paths (#248)
- Cap parallel root module loading (to reduce CPU usage) (#256)
INTERNAL:
- internal/filesystem: Integrate spf13/afero (#249)
- deps: Bump creachadair/jrpc2 to latest (0.10.0) (#253)
BUG FIXES:
- terraform/schema: Make schema storage version-aware (0.13 compatible) (#243)
INTERNAL:
- Improve root module discovery error handling (#244)
BUG FIXES:
- fix: Append EOF instead of newline (prevent CPU spike) (#239)
BUG FIXES:
- fix: Prevent parsing invalid tokens which would cause CPU spike (#236)
INTERNAL:
- rootmodule: log errors after loading is finished (#229)
BUG FIXES:
- Fixes bug which broke schema obtaining due to
-no-color
at unsupported position (#227)
ENHANCEMENTS:
- Introduce CPU & memory profiling (#223)
- Pass
-no-color
to terraform (#208) - settings: Make root modules configurable (#198)
BUG FIXES:
- terraform/rootmodule: Make walker async by default (#196)
- refactor: asynchronous loading of root module parts (#219)
- Enable formatting for older Terraform versions (<0.12) (#219)
- Gate formatting capability on v0.7.7+ (#220)
BUG FIXES:
- Make volume comparison case-insensitive on Windows (#199)
FEATURES:
- Walk hierarchy to add root modules (#176)
ENHANCEMENTS:
- terraform: Introduce experimental support for 0.13 version (#149)
- Treat schema availability as not essential (#171)
- Make formatting work regardless of initialization state (#178)
BUG FIXES:
- fix detection of single file during initialization (#172)
BUG FIXES:
- fix: os.Environ() returns KEY=val, not just keys (fix of a bug that was introduced in 0.3.1) (#143)
BUG FIXES:
- terraform/exec: Pass through all environment variables (#139)
FEATURES:
- textDocument/complete: Complete first level keywords (#104)
- Add ability to specify path to Terraform binary (#109)
- Make Terraform exec timeout configurable (#134)
ENHANCEMENTS:
- Improve UX of completion items (#115)
- Add support for autocomplete based on a prefix (#119)
- textDocument/complete: Use isIncomplete for >100 items (#132)
- textDocument/complete: Pass TextEdit instead of static text (#133)
INTERNAL:
- refactoring(parser): Pass around tokens instead of blocks (#125)
- langserver: Make requests sequential (#120)
- Support partial updates (#103)
- Support simplified building (#98)
BUG FIXES:
- context: Refactor and fix duplicate key (#86)
INTERNAL:
FEATURES:
BUG FIXES:
- Fix URI parsing for Windows paths (#73)
- terraform/exec: Make server work under non-admin users on Windows (#78)
INTERNAL:
Initial release
FEATURES:
- Basic text synchronization with client (
didOpen
,didClose
,didChange
) - Basic block body completion support for attributes and nested blocks
- Support for standard stdio transport
- Support for TCP transport (useful for debugging, or reducing the number of LS instances running)