Early Access Program

IntelliJ IDEA 2024.3 EAP 3: Inline AI Prompts with Context Awareness, Improved Terraform and OpenTofu Support, and More

IntelliJ IDEA 2024.3 EAP 3 has been released, and it’s packed with new features for you to try out! This build brings inline AI prompts with context awareness, extended support for Terraform, including the new OpenTofu project, notable updates for Kubernetes and Docker Compose, and improvements to remote development environments.

You can download this version from our website, update directly from within the IDE, use the free Toolbox App, or install it via snap packages for Ubuntu.

Download IntelliJ IDEA 2024.3 EAP 3

Read on to explore the latest updates and learn how they can streamline your projects and improve your development experience.

AI Assistant

Inline prompts with context awareness

IntelliJ IDEA 2024.3 EAP 3 includes a range of improvements for the earlier introduced inline AI prompts.

Inline AI prompts are now smarter thanks to context awareness: AI Assistant now automatically includes files and symbols related to the context sent to the language model for code generation.

We also improved the visibility of changes applied; IntelliJ IDEA now leaves a purple mark in the gutter next to lines changed by AI Assistant, so you can easily see what has been updated.

If you don’t like the initial suggestion, you can generate a new one by pressing Tab. You can also adjust the initial prompt by clicking on the purple block in the gutter or simply pressing Ctrl+/ (Windows/Linux) or ⌘/ (macOS).

The new inline AI prompt works for Java, Kotlin, Groovy, JavaScript, TypeScript, Python, JSON, and YAML file formats and is available for all AI Assistant subscribers.

Frameworks and technologies

Terraform and OpenTofu: Infrastructure as code

OpenTofu support

We are introducing support for OpenTofu, an open-source, community-driven alternative to HashiCorp’s Terraform, along with support for .tofu files when OpenTofu is selected. This update includes autocompletion for encryption methods, key providers, and inspections for unknown references, making infrastructure-as-code development more efficient and secure.

Notably, the new encryption block feature enhances security in infrastructure management. Sensitive data, such as access keys stored in state and plan files, can now be encrypted using methods like AES-GCM. OpenTofu also supports key management services, including AWS KMS, providing robust protection for your workflows.

Additionally, we’ve added support for modules initialized with OpenTofu, expanding the capabilities of this tool within the IDE.

Terraform usage indicators

IntelliJ IDEA 2024.3 EAP 3 introduces Terraform usage indicators, with quick navigation capabilities, that allow you to see where specific variables, resources, and modules are used. These indicators show the number of usages and their exact locations, enabling you to jump directly to them with a single click. This feature eliminates the need to manually search through files, making it especially useful for navigating large Terraform projects.

Terraform usage indicators can help you find unused variables and make the code cleaner.

Support for terraform fmt

You can now use terraform fmt to format files when invoking the Reformat File action. This allows you to format .tf, .tfvars, and .tftest.hcl files using Terraform’s native formatting tool instead of the plugin’s built-in formatter. This ensures your code is formatted according to Terraform’s standards. To enable this option, go to Settings | Editor | Code Style | Terraform | Other | Terraform fmt in the IDE settings.

Kubernetes

Cluster-level Kubernetes log streaming and analysis with pattern matching

IntelliJ IDEA now supports accessing cluster-wide logs with streaming and pattern matching which is essential for developers and DevOps/SRE teams. It provides a centralized view of all events across pods, nodes, and services, helping you quickly identify issues without manually checking each log. Real-time streaming enables immediate diagnostics, while pattern matching automates the detection of key events or errors, such as out-of-memory issues or unusual network activity. This approach is crucial for security, performance monitoring, and proactive issue detection in complex microservice architectures.

To try this feature, add a Kubernetes cluster in the Services window and deploy an application to it. Then, select the Open Cluster Logs Tab in the cluster’s context menu. A source selection window will appear, allowing you to enable log streaming from various sources. After making your selection, click Add log sources from Cluster.

You will be taken to the log interface in the editor.

There, you can view real-time logs from all selected Kubernetes cluster resources. You can also choose a historical period for viewing and filter logs based on patterns that the IDE identifies from them. Additionally, you can use search queries and regular expressions to filter the results. You can change the set of log sources for analysis at any time, and there is an option to download the necessary logs.

Network Policy UI

Support for Network Policies has been added to the Kubernetes UI. 

Network Policies in Kubernetes are used to manage network traffic between pods in a cluster. They allow you to define which pods can send or receive traffic from other pods, services, or external sources. The primary purposes of Network Policies are to control and restrict network traffic, manage pod isolation, ensure security, and regulate external access.

Docker Compose

New Docker Compose build attributes

We’ve added support for new Docker Compose attributes that give you better control over builds, resource management, service orchestration, and networking within Docker Compose, making development more efficient and flexible.

Here are some of the added options:

  • cache_to: Enables you to speed up image builds by specifying external cache locations.
  • no_cache: Allows you to disable the cache for specific builds, ensuring fresh builds when needed.
  • platforms: Defines the target platform for services, making multi-architecture support (e.g. ARM vs. x86).
  • depends_on.required: Ensures that dependent services must start before the current service, adding more control over service dependencies.
  • depends_on.restart: Controls how service restarts are handled in dependency chains, providing more flexible orchestration.
  • deploy.placement.preferences: Allows you to specify placement strategies, such as by prioritizing certain nodes for deploying services, enhancing control over where services are hosted.
  • deploy.resources.pids: Adds the ability to limit the number of PIDs (process IDs) for a service, helping you manage resource usage and prevent overloads.
  • build.additional_contexts: Facilitates building images from multiple contexts, making it easier to work with complex builds that pull resources from various locations.
  • build.privileged: Grants privileged access to containers during the build process, allowing for advanced scenarios that require elevated permissions.
  • build.ulimits: Defines ulimit settings during the build, providing finer control over system resource limits.
  • cgroups: Enables the configuration of cgroups (control groups), which manage resource allocation for containers, improving performance and resource management.
  • extra_hosts: Allows you to add custom host-to-IP mappings in the container’s /etc/hosts file, improving network configuration and DNS resolution.
  • healthcheck.start_interval: Adds control over the initial interval before a health check is run, improving the reliability of service health checks.
  • networks.mac_address: Assigns a custom MAC address to a container, providing greater control over network configurations.

Remote development environments 

Improved compatibility for Dev Container templates

We’ve made significant improvements to the compatibility of Dev Container templates which were not originally designed to operate in remote environments. Previously, Dev Container templates often included configurations that assumed local execution, leading to issues when running containers on remote Docker instances. With these updates, IntelliJ IDEA now handles such scenarios more gracefully, ensuring that templates not optimized for remote use still function correctly without unnecessary errors or conflicts.

Better support for projects in WSL 

We continue to improve the reliability of projects that are hosted in the Windows Subsystem for Linux (WSL) and opened by developers from Windows in the IDE. In particular, support for symlinks has been added, and interaction with WSL has been switched to Hyper-V sockets, which has improved the performance of IDE interaction with WSL. We are continuing to work on significant platform changes to improve performance with remote environments, including WSL.

These are the key updates for this week. For the complete list of the changes, refer to the release notes.

We encourage you to explore the new features and share your feedback with us, as it plays a crucial role in improving IntelliJ IDEA. Feel free to leave your thoughts in the comments below or get in touch with us on X. If you encounter any issues, please report them through our issue tracker.

Happy developing!

image description