Highlights
OpenTofu Support (#199)
TerraVision now works with OpenTofu as a drop-in alternative to Terraform. Use the new --engine flag to select the infrastructure binary:
# Autodetect (default): prefers terraform, falls back to tofu
terravision draw --source ./infra
# Force OpenTofu
terravision draw --source ./infra --engine tofu
# Or set via environment variable
export TERRAVISION_ENGINE=tofuAvailable on draw, visualise, and graphdata commands. Both engines must be v1.x.
Customisable Font & Icon Sizes (#192, #198)
New CLI options give you control over diagram rendering:
--fontsize <pt>— set label font size (default 12)--iconsize <px>— set icon size in pixels (default 128)--use-resource-names— display Terraform resource names instead of service labels
Auto-Grouping of Duplicate Resources
When multiple resources of the same type appear in a diagram (e.g. several S3 buckets or Lambda functions), they are now automatically grouped into visual clusters for a cleaner layout.
Bug Fixes
- Cyclic variable detection (#196):
handle_metadata_varsnow detects and breaks cyclic variable references instead of entering infinite recursion - Private registry support (#193, #197): Fixed private module registry downloads using Terraform's service discovery protocol
- Module output maps (#195): Fixed
TypeErrorwhen a module output value is a dict/map rather than a string - Terragrunt version — handle Terragrunt reporting its version as
"latest" - IAM Role attachments — improved handling of IAM role attachment relationships
Other Improvements
- Draw.io export: refined icon sizing and cluster whitespace for cleaner output
- Nix: added missing runtime dependency to
flake.nix(#194) - Engine-aware messages: all CLI status and error messages now reflect the active engine name (terraform/tofu)
- Python 3.14 compatibility fixes for test suite
Full changelog: v0.39.0...v0.42.0